最近有个内部项目需要使用组织结构图(organization chart), 寻找了一些开源的项目及其类库,发现竟然没有现成的JS类库可以使用,找到一些简单的JS实现,不过界面及其操作及其简单,不过功夫不负有心人,经过几天国内国外的搜索,找到了一个非常好的解决方案,这里分享给大家。

Javascript InfoVis tools

这个开源的javascript类库可以生成非常炫酷的结构和图形,我选择了其中的一种spacetree类型做为我的组织结构图基础,这种图形可以支持一下特性:

  • 支持向上下左右四个方向展开图表
  • 支持子节点扩展
  • 支持图表拖放
  • 支持图表缩放

整个类库异常强大,非常合适复杂的图形功能需求,如下:

    //Create a new instancevar st = new $jit.ST({'injectInto': 'orgchart',//set duration for the animationduration: 800,//set animation transition typetransition: $jit.Trans.Quart.easeInOut,levelDistance: 50,levelsToShow: 1,Node: {height: 45,width: 120,type: 'nodeline',color:'#23A4FF',lineWidth: 2,align:"center",overridable: false},Edge: {type: 'bezier',lineWidth: 2,color:'#23A4FF',overridable: true},//Retrieve the json data from database and create json objects for org chartrequest: function(nodeId, level, onComplete) {//Generate sample dataif(nodeId!='peter wang'&&nodeId!='William chen'){var data= [{fullname:'peter wang',title:'engineer'},{fullname:'William chen',title:'senior engineer'}];var objs = [];for(var i=0;i<data.length;i++) {var tmp = data[i];var obj = {"id":data[i].fullname, "name": "<div class='orgchartnode'>" + data[i].fullname+"</div>("+data[i].title + ")"};objs.push(obj);}var nodeobjs={};nodeobjs.id =  nodeId;nodeobjs.children =  objs;onComplete.onComplete(nodeId, nodeobjs);  }else{var nodeobjs={};onComplete.onComplete(nodeId, nodeobjs);  }},

以上代码创建一个实例,注意request部分,这段代码用来取出点击节点后需要显示的字节点,在实际应用中,我们把数据库中取出的数据生成json对象后注入这里生成子节点。

 //Change chart direction$("#top").click(function(){$("#orgchartori").fadeOut();st.switchPosition($("#top").attr("id"), "animate", {onComplete: function(){$("#orgchartori").fadeIn();}}); });$("#bottom").click(function(){$("#orgchartori").fadeOut();st.switchPosition($("#bottom").attr("id"), "animate", {onComplete: function(){$("#orgchartori").fadeIn();}}); });$("#right").click(function(){$("#orgchartori").fadeOut();st.switchPosition($("#left").attr("id"), "animate", {onComplete: function(){$("#orgchartori").fadeIn();}}); });$("#left").click(function(){$("#orgchartori").fadeOut();st.switchPosition($("#right").attr("id"), "animate", {onComplete: function(){$("#orgchartori").fadeIn();}}); });

以上代码用来控制组织结构图图形展示方向,效果请参考演示。

在线演示 在线调试

拖放及其缩放特效演示请查看如下应用案例。

应用案例:http://www.triplifes.com

相关资料:http://thejit.org/

文章来源:使用Javascript来实现的超炫组织结构图(Organization Chart)

使用Javascript来实现的超炫组织结构图(Organization Chart)相关推荐

  1. html5+css3满天星星音乐背景动画特效(超炫酷)

    css3满天星星音乐背景动画特效 css3属性绘制唯美的满天星星和audio MP3音乐结合背景动画特效. 作品介绍 1.网页作品简介方面 :css3属性绘制唯美的满天星星和audio MP3音乐结合 ...

  2. HTML+CSS+JavaScript 实现登录注册页面(超炫酷)

    1.临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? 网页要求的总数量太多? 2.没有合适的模板?等等一系列问题.你想要解决的问题,在这篇博文中基本都能 ...

  3. 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节

    ❉ 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或 ...

  4. Planetary.js:帮助你构建超炫的互动球体效果

    Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...

  5. ScrollMagic – 酷毙了!超炫的页面滚动交互效果

    ScrollMagic 是一款 jQuery 插件,它让你可以像使用进度条一样使用滚动条.如果你想在特定的滚动位置开始一个动画,并且让动画同步滚动条的动作,或者把元素粘在一个特定的滚动位置,那么这款插 ...

  6. html炫酷在线,小伙伴们都会惊呆的10个超炫的HTML5+CSS3效果作品

    在CodePen(CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果)上看到许多非常炫的html+css3效果示例.这些炫酷的技术真是让我 ...

  7. 超炫jQuery测试答题功能

    推荐一款超炫jQuery测试答题功能插件 实例代码 <body><div class="container" id="main">< ...

  8. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...

  9. Cool!15个超炫的 CSS3 文本特效【上篇】

    每一个网页设计师都希望创建出让用户能够赏识的网站.当然,这是不可能满足每个人的口味的.幸运的是,我们有最强大的工具和资源.实际上,我们非常多的网站模板,框架,内容管理系统,先进的工具和其他的资源可以使 ...

最新文章

  1. SpringMVC中的拦截器
  2. 1276: 求和游戏
  3. Python自定义类的成员并不一直是所有对象共享的
  4. Pandas 排序之后索引问题
  5. python配置文件注释_python操作配置文件yaml
  6. django创建模板报错:TemplateDoesNotExist at
  7. SolidWorks自定义装配体模板的方法
  8. DRS是啥你都不知道?不是吧,不是吧
  9. 一个英文字母,一个中文各占多少字节
  10. python新疆自驾旅游推荐系统毕业设计源码111042
  11. 红蜘蛛,极域,伽卡他卡,传奇电子教室的破解(源代码)
  12. 2022.11.28 英语背诵
  13. qq邮箱下载附件时文件名显示为乱码怎么办。
  14. 采用SpringBoot发送简单、抄送、密送、带附件邮件
  15. 机械键盘之黑轴、青轴、茶轴、红轴、白轴的区别
  16. 通过matlab将二维图片序列进行三维立体重建(包含仿真录像)
  17. 当上CEO,迎娶白富美,走向人生巅峰,只有这背水一战!
  18. Spark项目实战:飞机延误预测项目
  19. C++程序设计语言——一个桌面计算器示例
  20. 【抽奖软件】C++,duilib实现完整抽奖软件系统(有源码)

热门文章

  1. centos6配置日志外发_CentOS6下记录后台操作日志的两种方式
  2. mysql 5.1 innodb trx_mysql 优化innodb_flush_log_at_trx_commit的案例介绍
  3. elementui 下拉框回显_element-ui 中el-select表单不回显和校验不通过的问题
  4. 算法之组合数学及其算法篇(二) ----- 鸽巢原理
  5. 单片机烧录软件编写_单片机技术系列之一:单片机概述
  6. Mysql安装 定期弹出黑框作用及关闭
  7. 信息系统项目管理师-项目成熟度模型、量化项目管理核心知识点思维脑图
  8. Vue实现仿音乐播放器2-新建Vue项目vuemusicplayer
  9. Atom 编辑器实时预览 HTML 页面
  10. 软考-信息系统项目管理师-项目合同管理