隨筆-124  評論-194  文章-0  trackbacks-0
          EXTJS和D3都很強大,不解釋了,把D3繪的圖直接放到一個EXT的TAB里,直接上圖上代碼:


          代碼中的D3例子來自:
          https://github.com/mbostock/d3/wiki/Force-Layout
          可用于繪制拓撲結構圖.
          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: https://github.com/mbostock/d3/wiki/Force-Layout
                          
          // 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",
                              "https://github.com/favicon.ico").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 + ")";
                                          });
                              });
                  });
              }

          });
          posted on 2012-09-27 07:38 我愛佳娃 閱讀(4483) 評論(0)  編輯  收藏 所屬分類: javascript
          主站蜘蛛池模板: 眉山市| 东乌| 色达县| 墨玉县| 安阳县| 两当县| 肇东市| 武胜县| 石家庄市| 芜湖市| 嘉禾县| 青川县| 陆良县| 阿勒泰市| 永靖县| 黄山市| 阳泉市| 高尔夫| 高台县| 尖扎县| 酒泉市| 沈丘县| 睢宁县| 清水县| 衡东县| 宝坻区| 邛崃市| 潞城市| 桂林市| 龙井市| 湟源县| 河曲县| 邛崃市| 黔西| 武冈市| 万宁市| 治多县| 西宁市| 河西区| 宁城县| 西青区|