Echarts多任务可视化之再优化

1.上次进程可视化由svg实现,本次改用echarts框架实现。
Js文件:loadxmldoc.js(用于加载xml文档)
echarts.js(用来实现有向图绘制)
2.思路:
Echarts是定义数据对象数组data和连接对象数组links,数据对象数组即每个节点为一个对象,每个对象有属性位置x、y,名字name等属性;连接对象数组即每条连线为一个对象,内有属性source原点及target目标点等。
上次由于未发现设置连线速度的方法,我采用了三个对象数组。其中两个数据对象数组,一个为实际进程节点,位置固定;另一个为移动节点,x、y根据进程的运行不断变化,颜色透明。进程运行时,连接对象数组的目标为移动节点,运行完毕时目标改为实际进程节点,以此达到连线的不断移动。
本次采用echarts内的pie圆环类型,动态改变数据来充当进度条
3.效果如下
Echarts多任务可视化之再优化
Echarts多任务可视化之再优化
Echarts多任务可视化之再优化
Echarts多任务可视化之再优化
4.代码如下
<html>
<head>
<meta charset="utf8"></meta>
<script src="echarts.js"></script>
<script type="text/javascript" src="loadxmldoc.js"></script>
<script src="http://lib.sinaapp.com/js/jquery/1.10.2/jquery-1.10.2.min.js"></script&gt;
</head>
<body>
<div id="DrawBoard" style="width:1200px;height:1200px;"></div>
</body>
<script>
var myChart = echarts.init(document.getElementById("DrawBoard"));
xmlDoc=loadXMLDoc("custom.xml");
var process_num=xmlDoc.getElementsByTagName("processes")[0].childNodes;
var links = [];
var v=[];
var route=[];
var series=[];
var data2=[];
var data=new Array();
var process=new Array();
var move=new Array();
var r=100,t=900;

    for(var i=0;i<process_num.length;i++){var  name=xmlDoc.getElementsByTagName("name")[i].childNodes[0].nodeValue;process[name]=new Object();process[name].name=name;var strfrom=String(xmlDoc.getElementsByTagName("from")[i].childNodes[0].nodeValue);process[name].from=strfrom.split(" ");var strto=String(xmlDoc.getElementsByTagName("to")[i].childNodes[0].nodeValue);process[name].to=strto.split(" ");process[name].finish=String(xmlDoc.getElementsByTagName("isfinish")[i].childNodes[0].nodeValue);process[name].execT=String(xmlDoc.getElementsByTagName("execT")[i].childNodes[0].nodeValue);process[name].x=String(xmlDoc.getElementsByTagName("startx")[i].childNodes[0].nodeValue);process[name].y=String(xmlDoc.getElementsByTagName("starty")[i].childNodes[0].nodeValue);process[name].flag=String(xmlDoc.getElementsByTagName("flag")[i].childNodes[0].nodeValue);v[name]=new Object();v[name].x=process[name].x;v[name].y=process[name].y;v[name].name=name;v[name].flag=process[name].flag;data.push(v[name]);if(name=='Father'){continue;}var center=[];center.push(r);center.push(t);r+=200;data2[name]=[ {value:0, name:name+'  未执行'},{value:100, name:''}];series.push({name:name,type:'pie',radius: ['5%', '10%'],//zlevel: 999,avoidLabelOverlap: true,hoverAnimation:false,center:center,size: '15',label: {normal: {show: true,color:'red',size:'20',position: 'center'},},labelLine: {normal: {show: true}},data:data2[name]});}series.push( {type: 'graph',layout: 'none',symbolSize: 50,roam: true,label: {normal: {show: true}},edgeSymbol: ['circle', 'arrow'],edgeSymbolSize: [4, 10],edgeLabel: {normal: {textStyle: {fontSize: 20}}},data:data,links:links,lineStyle: {normal: {opacity: 0.9,width: 2,curveness: 0}}});option = {title: {text: '进程可视化'},tooltip: {},animationDurationUpdate: 0,animationEasingUpdate: 'quinticInOut',series :series}

for(i in process){
for(j in process[i].to){
if(process[i].name==process[i].to[j]){
break;
}
move[process[i].name+","+process[i].to[j]]={'flag':process[process[i].to[j]].flag,'startx':process[i].x,'symbolSize': 50,'name':process[i].name+","+process[i].to[j],'x':0,'y':0,'label':{show:false},'total':parseFloat(process[process[i].to[j]].x-process[i].x),'speedx':parseFloat(process[process[i].to[j]].x-process[i].x)/process[process[i].to[j]].execT,'speedy':parseFloat(process[process[i].to[j]].y-process[i].y)/process[process[i].to[j]].execT,'itemStyle': {opacity: 0.0}};
route[process[i].name+","+process[i].to[j]]={'source':process[i].name ,'target':process[i].to[j]};
links.push(route[process[i].name+","+process[i].to[j]]);
}

}

setInterval(function(){
for(i in move){
var temp=move[i].name.split(",");
var ff=1;
for(j in move){
var temp2=move[j].name.split(",");
if(temp[1]==temp2[1]&&process[temp2[0]].finish!=1&&process[temp2[0]].flag!=1){
ff=0;
break;
}
}
if(ff==1&&process[temp[1]].finish!=1){
//alert(temp[1]+" "+move[i].speedx+" "+move[i].x);
move[i].x=parseFloat(move[i].x)+parseFloat(move[i].speedx);
//move[i].y=parseFloat(move[i].y)+parseFloat(move[i].speedy);
data2[temp[1]][0].value=move[i].x;
data2[temp[1]][0].name=temp[1]+' 执行中';
data2[temp[1]][1].value=move[i].total-move[i].x;
}
if(move[i].x>move[i].total){
//route[i].target=process[temp[1]].name;
data2[temp[1]][0].name=temp[1]+' 完毕';
process[temp[1]].finish=1;
}
}
myChart.setOption(option);
},1000);

</script>
</html>

转载于:https://blog.51cto.com/13958494/2286012

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用XML实现通用WEB报表打印 卢彦

利用XML实现通用WEB报表打印(1) 卢彦 摘要开发B/S结构的应用程序最头疼的问题可能就是报表打印了&#xff0c;由于只能采用浏览器来作为用户界面进行交互&#xff0c;所以不能精确控制客户端的打印机。而很多B/S结构的应用程序常常需要完成非常复杂的报表打印任务。而靠IE自带的…

cascade rcnn论文总结

1.bouding box regression总结&#xff1a; rcnn使用l2-loss 首先明确l2-loss的计算规则&#xff1a; L∗(f∗(P)−G∗)2&#xff0c;∗代表x,y,w,h 整个loss : LLxLyLwLh 也就是说&#xff0c;按照l2-loss的公式分别计算x,y,w,h的loss&#xff0c;然后把4个loss相加就得到总的…

母版页可以动态切换吗?

通过设置“MasterPageFile”属性可以做到&#xff0c;然而这个属性只能在“Page_PreInit”事件之中或之前设置。在Page_PreInit事件或之前&#xff0c;当前页面包含的对象还没有被生成&#xff0c;不能访问&#xff0c;所以&#xff0c;如果想根据当前页面上某个控件的值动态切…

iView 实战系列教程(21课时)_2.iView 实战教程之导航、路由、鉴权篇

在c盘创建一个iview-router的项目、然后使用默认的配置跳过添加vue-router的插件编译我们的文件。编译好之后&#xff0c;我们启动App默认的页面就打开了。默认两个路由一个是about界面一个是home我们使用编辑器打开代码&#xff0c;用我们的iview的menu组件替换掉这两个路由在…

计算机专业单元测试卷答案,银保监会考试题库:计算机类模拟试题练习(六)答案...

2020银保监会招聘考试即将开始。根据往年经验&#xff0c;银保监会招聘考试科目包括行测、申论和专业科目共三科&#xff0c;专业科目是考试提分的关键&#xff0c;那么如何才能提升专业科目的做题速度并快速提分呢&#xff1f;别担心&#xff0c;中公金融人小编根据历年的考试…

Ubuntu安装Nginx

在Ubuntu下安装Nginx有以下方法&#xff0c;但是如果想要安装最新版本的就必须下载源码包编译安装。 一、基于APT源安装 sudo apt-get install nginx 安装好的文件位置&#xff1a; /usr/sbin/nginx&#xff1a;主程序 /etc/nginx&#xff1a;存放配置文件 /usr/share/nginx&am…

HTML标题h,HTML H标题标签

可以将HTML标题或HTML h标签定义为要在网页上显示的标题或副标题。当你将文本放在标题标签……… h1>内时, 它在浏览器中以粗体显示, 并且文本的大小取决于标题的数量。从到标签定义了六个不同的HTML标题, 从最高级别h1(主标题)到最低级别h6(最重要的标题)。h1是最大的标题标…

Android 多线程之几个基本问题

Android中的进程和线程 Android中的一个应用程序一般就对应着一个进程&#xff0c;多进程的情况可以参考Android 多进程通信之几个基本问题 Android中更常见的是多线程的情况&#xff0c;一个应用程序中一般都有包括UI线程等多个线程。Android中规定网络访问必须在子线程中进行…

Web下的整体测试

随着Internet的日益普及&#xff0c;现在基于B/S结构的大型应用越来越多&#xff0c;可如何对这些应用进行测试成为日益迫切的问题。有许多测试人员来信问我B/S的测试如何做&#xff0c;由于工作较繁忙&#xff0c;对大家提出的问题也是头痛医头脚痛医脚&#xff0c;没有对WEB的…

一步一步SharePoint 2007之五:向网站中添加一个子网站

一步一步SharePoint 2007之五&#xff1a;向网站中添加一个子网站摘要感受完看到成果的激动&#xff0c;感受完邻家女孩的漂亮、可爱和端庄&#xff0c;不要停止&#xff0c;来&#xff0c;让我们一起来动手打造心目中的完美女神吧&#xff01;本篇文章将介绍如何向一个网站中添…

微型计算机系统分为哪几个层次,计算机系统分为哪4层?

满意答案al053192014.06.23采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;7516人第一层&#xff1a;物理层(PhysicalLayer)&#xff0c;规定通信设备的机械的、电气的、功能的和过程的特性&#xff0c;用以建立、维护和拆除物理链路连接。具体地讲&#xff0c…

ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程&#xff0c;简单编程 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计。本章节我们将介绍 ASP.NET Core 中的一些新的概念和它们是如何帮助我们开发现代化的 Web 应用程序 尽管 ASP.NET Core 是跨平台的&a…

ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core Windows 环境配置 - ASP.NET Core 基础教程 - 简单教程&#xff0c;简单编程 ASP.NET Core Windows 环境配置 ASP.NET Core 是对 ASP.NET 有重大意义的一次重新设计。本章节我们将介绍 ASP.NET Core 中的一些新的概念和它们是如何帮助我们开发现代化的 Web 应…

go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)

2019独角兽企业重金招聘Python工程师标准>>> 问题背景 在windows 中编译 go 的pipe时由于pipe依赖sqlite&#xff0c;需要通过cgo进行编译。出现如下异常 gcc.exe fatal error no input files compilation terminated 问题分析 由于 windows中缺少c 的编译环境 解决…

安装mysql-connector-python-8.0.11-py3.6遇到问题

1.提示“This application requires Visual Studio 2015 Redistributable” 下载vc_redist.x86安装即可。 下载链接&#xff1a;https://download.microsoft.com/download/6/D/F/6DF3FF94-F7F9-4F0B-838C-A328D1A7D0EE/vc_redist.x86.exe https://download.microsoft.com/downl…

画闭合的多边形 - HTML5 Canvas 作图

10、function DrawPolygon(Canvas,P)功能&#xff1a;画闭合的多边形参数&#xff1a;P是一个包含各个顶点坐标的数组实例&#xff1a;<html><script type"text/javascript" src"bigengineer.js"></script><body><canvas id&qu…

计算机网络硬件的作用是什么,网络技术在计算机软硬件的作用

网络技术在计算机软硬件的作用电子信息工程是一种建立在计算机系统软件技术和计算机网络技术上的工程,在现代国防、科研和通讯等领域发挥着巨大的作用。下面是小编搜集整理的相关内容的论文&#xff0c;欢迎大家阅读参考。摘要&#xff1a;随着我国经济的飞速发展&#xff0c;科…

VS历程简单记录

当时一开始装VS2015&#xff0c;是用了很长时间了。装了之后是可以用的&#xff0c;打了不少代码的。 后来很长一段时间没用它了&#xff0c;时隔良久&#xff0c;双击快捷方式竟然打开不了&#xff0c;让我“重装”。 其实也不用重装&#xff0c;本机用的Win10&#xff0c;去控…

智能文件名排序

默认排序问题 windows排序 Windows的资源管理中&#xff0c;提供了文件名的智能排序功能&#xff0c;可以识别出文件名中数字&#xff08;数字位数不相同&#xff09;&#xff0c;然后比较数字大小进行排序&#xff0c;如下图&#xff1a; 代码默认排序 但在C#中的列表排序中则…

VS2005 Web Application Project启用WSE(Ver 3.0)的方法

使用过WSE的朋友都知道&#xff0c;若要启用Server端Projects的WSE功能&#xff0c;需要选中如下所示的两个单选框:Enable this project for Web Services Enhancements和Enable Microsoft Web Services Enhancement Soap Protocol Factory.但是在WSE3.0中对于Web Application …