高分求教高手,如何用js生成网络拓扑图

JavaScript059

高分求教高手,如何用js生成网络拓扑图,第1张

各个应用系统、服务器信息及系统直接的调用都录入到数据库中.

前端拓扑图、或系统调用关系图的展示UI可以通过一些选项从数据库中捞出数据,然后在UI上动态绘制出关系图来.

如HTML5 Canvas或基于HTML5 Canvas的JTopo、SVG都可以很好的绘制出这种图来。

直接上图上代码:

 可用于绘制拓扑结构图.

Ext.define('EB.view.content.SingleView', {

    extend : 'Ext.panel.Panel',

    alias : 'widget.singleview',

    layout : 'fit',

    title : 'single view',

    initComponent : function() {

        this.callParent(arguments)

    },

    onRender : function() {

        var me = this

        me.doc = Ext.getDoc()

        me.callParent(arguments)

        me.drawMap()

    },

    drawMap : function() {

        var width = 960, height = 500

        var target = d3.select("#" + this.id+"-body")

        var svg = target.append("svg").attr("width", width).attr("height",

                height)

        var force = d3.layout.force().gravity(.05).distance(100).charge(-100)

                .size([width, height])

                // get from: 

                // example: force-directed images and labels

        d3.json("graph.json", function(json) {

            force.nodes(json.nodes).links(json.links).start()

            var link = svg.selectAll(".link").data(json.links).enter()

                    .append("line").attr("class", "link")

            var node = svg.selectAll(".node").data(json.nodes).enter()

                    .append("g").attr("class", "node").call(force.drag)

            node.append("image").attr("xlink:href",

                    "

).attr("x", -8).attr("y",

                    -8).attr("width", 16).attr("height", 16)

            node.append("text").attr("dx", 12).attr("dy", ".35em").text(

                    function(d) {

                        return d.name

                    })

            force.on("tick", function() {

                        link.attr("x1", function(d) {

                                    return d.source.x

                                }).attr("y1", function(d) {

                                    return d.source.y

                                }).attr("x2", function(d) {

                                    return d.target.x

                                }).attr("y2", function(d) {

                                    return d.target.y

                                })

                        node.attr("transform", function(d) {

                                    return "translate(" + d.x + "," + d.y + ")"

                                })

                    })

        })

    }

})

1.各个应用系统、服务器信息及系统直接的调用都录入到数据库中

2.前端拓扑图、或系统调用关系图的展示UI可以通过一些选项从数据库中捞出数据,然后在UI上动态绘制出关系图来

3.如HTML5 Canvas或基于HTML5 Canvas的JTopo、SVG都可以很好的绘制出这种图来。