Web Topology 如何扩展

节点与连接线的数据结构及其实现
本文详细介绍了节点数据结构和连接线数据结构的组成及其对应的JSON表示形式,并阐述了如何通过JavaScript进行初始化与操作。实现了节点与连接线的动态加载与交互功能,包括节点的双击事件处理与连接线的颜色变化。

1、节点数据结构:

 1 {nodes:
 2  [{
 3   'id':'n0',
 4   'label':'节点0',
 5   'icon':'cisco.gif',
 6   'x':'60',
 7   'y':'0',
 8   'droppable':false
 9  }]
10 }

 

2、连接线数据结构:

1 {lines:
2  [{
3   'isflag':'1',
4   'aendId':'n3',
5   'zendId':'n0'
6  }]
7 }

3、注意点:

1)、nodes中的id与lines中的aendId或zendId对应。
2)、lines中的aendId为子节点ID,zendId为父节点ID

4、实现:

initNodeData()
 初始化节点数据,使用后台json数据拼装返回符合的字符串
initLineData()
 初始化连接数据,使用后台json数据拼装返回符合的字符串

 1 <script type="text/javascript">
 2       window.addEvent('domready', init);
 3       function init() {
 4    var s = new Date();
 5  var popup = new Topo.NodeMenu('popmenu');
 6    var linePop = new Topo.LineMenu('popmenuLine');
 7           Topo.init('topo2');
 8           var data = initNodeData();
 9           data.nodes.each(function(node){
10               var topoNode = new Topo.Node(node,{'onDblClick':dblClick});
11        popup.attachElement(topoNode);
12           });
13           data = initLineData();
14           data.lines.each(function(line){
15               var topoLine = new Topo.Line(line);
16          linePop.attachElement(topoLine);
17           });
18           Topo.complete();
19    alert(new Date().getTime()-s.getTime());
20       };
21       function dblClick(event,node) {
22           alert(node.getId());
23       };
24     </script>

5、封装:

TopoLine.js

if(line.isflag==1){
   this.setColor('red');
   }else{
     this.setColor('rgb(0,255,0)');
         }
         this.draw();
     },

initLineData()方法中添加isflag属性:

 

1 {lines:[{'isflag':'1','aendId':'n"+a1+"','zendId':'n"+a2+"'}]}

效果如图:isflag==1是红色,否则为绿色

 

 

 

转载于:https://www.cnblogs.com/LuckyMiao/archive/2012/06/07/2540597.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值