`

HTML5流程图之复杂关系网

阅读更多

关系网图的呈现方式多种多样,今天我们给大家分享的是和弦式的关系网图,先来看看效果:



例子中我们展示的是各部门员工之间的复杂关系图。在公司内部,不仅部门内部员工之间发生着关系往来,部门和部门之间的员工也在发生这各种往来关系。如果你还是用原先的那种表格来呈现,显然很难直观看出各种关系,用图形化的拓扑呈现就会显得一目了然。好了,我们就来分析一下这张图如何用twaver实现它。
首先我们要定义部门的网元,twaver矢量减少了我们很多定制UI的繁琐,我们直接用矢量来描述这个小圆点部分,注意小圆点的颜色需要区分鼠标滑过时的效果,这里我们定义了是否需要高亮的属性:highlighted,代码如下:

twaver.Util.registerImage('circle_node', {		
	w: 200,
	h: 200,
	lineWidth:1,
	lineColor: 'black',	
	v: [{
		shape: 'circle',		
		r: 6,
		fill: function(data, view){
			if(data.getClient('highlighted')){
				return highlightedNodeColor;
			}else{				
				return normalNodeColor;
			}
		}
	}]
});



第一步,小圆点描述好了,接下来就需要为圆点加上文字的显示,文字如果按照默认的显示方式显然不太好,因为我们是要让文字进行旋转,而文字所处的位置需要根据角度来计算对其方式和偏移值,当然文字也需要鼠标滑过的效果:

{
	shape: 'text',
	text: '<%=getClient("text")%>',
	textAlign: function(data, view){
		var angle=data.getClient('angle'	)+ball.angle;
		angle=angle%360;
		if(angle<0){
			angle=angle+360;
		}
		if(angle>90 && angle<270){
			return 'right';
		}
		return 'left';
	},
	textBaseline: 'middle',
	font: '12px "Microsoft Yahei"',
	fill: function(data, view){
		if(data.getClient('highlighted')){
			return highlightedNodeColor;
		}else{				
			return 'black';
		}
	},
	x: function(data, view){
		var angle=data.getClient('angle'	)+ball.angle;
		angle=angle%360;
		if(angle<0){
			angle=angle+360;
		}
		if(angle>90 && angle<270){
			return -10
		}
		return 10;
	},			
}



好了,第三步需要让整个节点能旋转起来,因此我们还需要为node加上旋转的矢量描述:

rotate: function(data, view){
	var angle=data.getClient('angle')+ball.angle;
	angle=angle%360;
	if(angle<0){
		angle=angle+360;
	}
	if(angle>90 && angle<270){
		angle+=180;
	}
	return angle;
}



至此部门的节点就定制好了,是不是感觉复杂了一下,没关系,如果想要这样的功能,直接使用我们封装好的这个就可以了。
接着我们还需要来定制连线,上图中连线走向的那种方式在twaver产品中已经是很常见了,这里我们就不多描述了。
OK,准备好节点和连线的矢量描述之后就可以来填充数据了,创建好公司的所有部门以及员工之间的关系后,我们还需要给部门设置上旋转的度数:

for(var i=0;i<size;i++){
	var angle=Math.PI*2/size*i;
	var x=ball.cx+ball.width*Math.cos(angle);
	var y=ball.cy+ball.height*Math.sin(angle);
	var id='n'+i;
	var degree=parseInt(angle/Math.PI*180);
	var node=createNode(box, id, x, y, '部门'+i, degree);
}



这样我们上面的那张图的功能就差不多了。也许有人会觉得怎么都是呈现的是部门,如何才能看到部门下哪些员工和另外的部门有关系呢。是的,到此我们还只完成了一半,还有更精彩的内容呈现给大家。
双击部门后,可以展开这个部门,并显示部门下所有的员工。



是不是很帅,注意这里是有动画效果的,双击某个部门,这个部门会转到顶部,然后展开这个部门。这个用twaver新增的动画功能很容易来实现,这里就不多说了。下面录制了一个视频供大家欣赏。这样我们就能更清楚的知道这个部门下的员工和哪个部门下的员工有业务往来关系了。下图是一个gif图片,下载有点慢,请耐心等待。

 

 

或者直接点击看视频:

http://player.youku.com/embed/XOTM2MzE1ODE2

 

 

分享到:
评论

相关推荐

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...

    基于Neo4j的《水浒传》人物关系可视化及问答系统python源码+说明文档+PPT+示例图片.zip

    5. templates模块是HTML页面模块,包括欢迎界面、搜索人物关系页面、人物关系全貌页面人物关系问答页面。 6. static模块存放css和js,是页面样式和效果文件。 7. app.py是整个系统的主入口。 #### 四.总体功能设计 ...

    html_diagrams

    在科学和技术课本中,各种类型的图用于说明抽象概念:流程图,图形,地图等。创建此类图的程序种类繁多,包括通用矢量编辑器和用于创建图的专用工具。具体类型。 但是,通常它们都具有一个明显的缺点-使用鼠标手动...

    (全)传智播客PHP就业班视频完整课程

    10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7...

    Delphi5开发人员指南

    1.2.3 编程语言的功能及其复杂性 4 1.2.4 数据库结构的灵活性和可扩展性 5 1.2.5 框架对设计和使用模式的扩充 5 1.3 历史回顾 5 1.3.1 Delphi 1 5 1.3.2 Delphi 2 6 1.3.3 Delphi 3 6 1.3.4 Delphi 4 7 1.3.5 Delphi...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7...

    史上最全传智播客PHP就业班视频课,8月份视频

    10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    10-11 3 供求信息网5 10-11 4 供求信息网6 10-15 1 zendframe手动部署 自动部署 10-15 2 zendframe架构讲解 10-15 3 view layout布局 10-15 4 view helper视图助手 10-15 5 遗留问题解决 10-15 6 zf重新部署 10-15 7...

    PROJECT 2007宝典 5/9

     6.3.9 关系图   6.3.10 PERT分析视图   6.3.11 资源分配   6.3.12 资源窗体   6.3.13 资源图表   6.3.14 资源名称窗体   6.3.15 资源工作表   6.3.16 资源使用状况   6.3.17 总成视图  ...

    超易客户管理软件 V2.53

    帐务的错综复杂体现在系统内部,你的操作依然那么简单,省时又省心。 全能的报表查询;所有的报表和基本资料均可导入导出EXCEL中进行分析加工,以满足用户的更高的要求。 2.单据自定义设置输入数据: 超易客户关系...

    boris-spider是一款使用Python语言编写的爬虫框架.zip

    于多年的爬虫业务中不断磨合而诞生,相比于scrapy,该框架更易上手,且又满足复杂的需求,支持分布式及批次采集。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并...

    Java2核心技术.part5

    9.6复杂的布局管理 9.6.1箱式布局 9.6.2网格组布局 9.6.3弹簧布局 9.6.4不使用布局管理器 9.6.5定制布局管理器 9 6.6遍历顺序 9.7对话框 9.7.1选项对话框 9.7.2创建对话框 9.7.3数据...

    Thinking in Java简体中文(全)

    13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19.3 显示框架 13.19.4 工具提示 13.19.5 边框 13.19.6 按钮 13.19.7 按钮组 13.19.8 图标 13.19...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    PROJECT 2007宝典 9/9

     6.3.9 关系图   6.3.10 PERT分析视图   6.3.11 资源分配   6.3.12 资源窗体   6.3.13 资源图表   6.3.14 资源名称窗体   6.3.15 资源工作表   6.3.16 资源使用状况   6.3.17 总成视图  ...

    PROJECT 2007宝典 7/9

     6.3.9 关系图   6.3.10 PERT分析视图   6.3.11 资源分配   6.3.12 资源窗体   6.3.13 资源图表   6.3.14 资源名称窗体   6.3.15 资源工作表   6.3.16 资源使用状况   6.3.17 总成视图  ...

    PROJECT 2007宝典 1/10

     6.3.9 关系图   6.3.10 PERT分析视图   6.3.11 资源分配   6.3.12 资源窗体   6.3.13 资源图表   6.3.14 资源名称窗体   6.3.15 资源工作表   6.3.16 资源使用状况   6.3.17 总成视图  ...

    PROJECT 2007宝典 8/9

     6.3.9 关系图   6.3.10 PERT分析视图   6.3.11 资源分配   6.3.12 资源窗体   6.3.13 资源图表   6.3.14 资源名称窗体   6.3.15 资源工作表   6.3.16 资源使用状况   6.3.17 总成视图  ...

Global site tag (gtag.js) - Google Analytics