使用Javascript来实现的超炫组织结构图(Organization Chart)
最近有个内部项目需要使用组织结构图(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)相关推荐
- html5+css3满天星星音乐背景动画特效(超炫酷)
css3满天星星音乐背景动画特效 css3属性绘制唯美的满天星星和audio MP3音乐结合背景动画特效. 作品介绍 1.网页作品简介方面 :css3属性绘制唯美的满天星星和audio MP3音乐结合 ...
- HTML+CSS+JavaScript 实现登录注册页面(超炫酷)
1.临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? 网页要求的总数量太多? 2.没有合适的模板?等等一系列问题.你想要解决的问题,在这篇博文中基本都能 ...
- 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节
❉ 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或 ...
- Planetary.js:帮助你构建超炫的互动球体效果
Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...
- ScrollMagic – 酷毙了!超炫的页面滚动交互效果
ScrollMagic 是一款 jQuery 插件,它让你可以像使用进度条一样使用滚动条.如果你想在特定的滚动位置开始一个动画,并且让动画同步滚动条的动作,或者把元素粘在一个特定的滚动位置,那么这款插 ...
- html炫酷在线,小伙伴们都会惊呆的10个超炫的HTML5+CSS3效果作品
在CodePen(CodePen 是一个在线的 HTML.CSS 和 JavaScript 代码编辑器,能够编写代码并即时预览效果)上看到许多非常炫的html+css3效果示例.这些炫酷的技术真是让我 ...
- 超炫jQuery测试答题功能
推荐一款超炫jQuery测试答题功能插件 实例代码 <body><div class="container" id="main">< ...
- 为网格布局图片打造的超炫 CSS 加载动画
今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...
- Cool!15个超炫的 CSS3 文本特效【上篇】
每一个网页设计师都希望创建出让用户能够赏识的网站.当然,这是不可能满足每个人的口味的.幸运的是,我们有最强大的工具和资源.实际上,我们非常多的网站模板,框架,内容管理系统,先进的工具和其他的资源可以使 ...
最新文章
- SpringMVC中的拦截器
- 1276: 求和游戏
- Python自定义类的成员并不一直是所有对象共享的
- Pandas 排序之后索引问题
- python配置文件注释_python操作配置文件yaml
- django创建模板报错:TemplateDoesNotExist at
- SolidWorks自定义装配体模板的方法
- DRS是啥你都不知道?不是吧,不是吧
- 一个英文字母,一个中文各占多少字节
- python新疆自驾旅游推荐系统毕业设计源码111042
- 红蜘蛛,极域,伽卡他卡,传奇电子教室的破解(源代码)
- 2022.11.28 英语背诵
- qq邮箱下载附件时文件名显示为乱码怎么办。
- 采用SpringBoot发送简单、抄送、密送、带附件邮件
- 机械键盘之黑轴、青轴、茶轴、红轴、白轴的区别
- 通过matlab将二维图片序列进行三维立体重建(包含仿真录像)
- 当上CEO,迎娶白富美,走向人生巅峰,只有这背水一战!
- Spark项目实战:飞机延误预测项目
- C++程序设计语言——一个桌面计算器示例
- 【抽奖软件】C++,duilib实现完整抽奖软件系统(有源码)
热门文章
- centos6配置日志外发_CentOS6下记录后台操作日志的两种方式
- mysql 5.1 innodb trx_mysql 优化innodb_flush_log_at_trx_commit的案例介绍
- elementui 下拉框回显_element-ui 中el-select表单不回显和校验不通过的问题
- 算法之组合数学及其算法篇(二) ----- 鸽巢原理
- 单片机烧录软件编写_单片机技术系列之一:单片机概述
- Mysql安装 定期弹出黑框作用及关闭
- 信息系统项目管理师-项目成熟度模型、量化项目管理核心知识点思维脑图
- Vue实现仿音乐播放器2-新建Vue项目vuemusicplayer
- Atom 编辑器实时预览 HTML 页面
- 软考-信息系统项目管理师-项目合同管理