zoukankan      html  css  js  c++  java
  • 使用JavaScript InfoVis Toolkit展现组织结构图

    JavaScript InfoVis Toolkit是一个js开发的图表控件库(以下简称JIT)。不知道为何被gfw了。看不到官网可以到此地址看demo

    http://flashcanvas.net/examples/thejit.org/demos/

    JIT提供了几种特别的图表形式,是一般js或flash图表控件所没有的,比如:

    image image image

    image image

    个人觉得那些花里胡哨的其实用处也不大,但是组织结构在某些时候还是很需要的。我恰巧遇到一个需要展现组织结构的功能,在网上找了很长时间

    google也有一个组织结构的,不过功能稍逊,http://code.google.com/intl/zh-CN/apis/chart/interactive/docs/gallery/orgchart.html

    image

    JIT space tree 采用json数据源,可选择子节点在根节点的上下左右4种形式。

    默认提供了几种连线 line arrow 等,但默认没有 折线形式。不过JIT提供了对node和edge的扩展。可以扩展节点和连线

    image

    node事实上是div,可以通过css来控制样式,可以通过jquery来控制里面的内容

    image

      1: $jit.ST.Plot.EdgeTypes.implement({
    
      2:     'line1': {
    
      3:         'render': function (node, canvas) {
    
      4:             var w = $("#"+node.id).width();
    
      5:             var h = $("#" + node.id).height();
    
      6:             //从from node到 to node
    
      7:             var from = node.nodeFrom;
    
      8:             var to = node.nodeTo;
    
      9:                             
    
     10:             var fx = from.pos.x;
    
     11:             var fy = from.pos.y + h / 2;
    
     12: 
    
     13:             var tx = to.pos.x;
    
     14:             var ty = to.pos.y - h / 2;
    
     15: 
    
     16:             var hdis = ty - fy;
    
     17:             //起始节点的竖线
    
     18:             var s1sx = fx;
    
     19:             var s1sy = fy;
    
     20:             var s1ex = fx;
    
     21:             var s1ey = s1sy + hdis / 2;
    
     22:             //目的节点竖线
    
     23:             var s2ex = tx;
    
     24:             var s2ey = ty;
    
     25:             var s2sx = tx;
    
     26:             var s2sy = s2ey - hdis / 2;
    
     27:             //横线
    
     28:             var hsx = s1ex;
    
     29:             var hsy = s1ey;
    
     30:             var hex = s2sx;
    
     31:             var hey = s2sy;
    
     32: 
    
     33:             this.edgeHelper.line.render({ x: s1sx, y: s1sy }, { x: s1ex, y: s1ey }, canvas);
    
     34:             this.edgeHelper.line.render({ x: hsx, y: hsy }, { x: hex, y: hey }, canvas);
    
     35:             this.edgeHelper.line.render({ x: s2sx, y: s2sy }, { x: s2ex, y: s2ey }, canvas);
    
     36:         }
    
     37:     }
    
     38: });

    line1是名字,随便起。

    在之后调用中

    Edge: {
        type: 'line1',
        overridable: true
    }
    

    type名称和扩展的名称一样即可

     以上只是top形式,其他形式对坐标的计算不同

    附上从官网下的 js包和api文档

    jit-2.0.1  api文档 折线扩展

  • 相关阅读:
    CSS强制换行
    Android 软件开发的盈利模式
    比较Collection 和Collections的区别
    Jsp 中taglib标签的妙用
    常用搜索引擎大全
    Jsp 中登陆界面的实现方法
    Jsp 中JavaScript 和 Java代码的异步执行特点
    Jsp struts 标准配置测试版
    div demo
    多线程模拟银行业务调度系统
  • 原文地址:https://www.cnblogs.com/czcz1024/p/2270409.html
Copyright © 2011-2022 走看看