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.pswp.cn/news/277217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

約 定

十天&#xff0c; 不能見面 &#xff0c;不能打電話或發短信 .這是我和她的約定.十天&#xff0c;要讓一個深愛著她的男人去尊照這樣的約定去做&#xff0c;實在是難以接受。雖然心里有一萬個不愿意&#xff0c;但我知道 &#xff0c;我心里早以做出了選擇.選擇了我愛的&#x…

NIKE LEBRON 13 PERFORMANCE REVIEW

LeBron James signed a lifetime deal with Nike, cementing his already stable position as Nike’s current top endorser. That means it’s no surprise that Nike would use a person in such a position to help lead new innovative technology. But at times, Nike is…

我的專業我的夢作文計算機,我的創新我的夢作文

新時代&#xff0c;新變化。現在二十一世紀&#xff0c;人們都過上了幸福的生活&#xff0c;發明出來的日常用品&#xff0c;電子產品等等&#xff0c;都是根據人們創新的精神建造出來的。現在我們通過了學習&#xff0c;也漸漸體會到了創新的重要性。就像是在動畫片中&#xf…

Ubuntu掛載新硬盤

1、加掛硬盤 Shell代碼 復制代碼sudo hdparm -I /dev/sdb 硬盤硬件安裝后&#xff0c;此命令測試linux系統是否能找到掛載的未分區硬盤 2、創建分區 Shell代碼 復制代碼sudo fdisk /dev/sdb sda是第一塊SCSI硬盤&#xff0c;sdb第二塊&#xff0c;以此類推...物理分區使用a、b…

利用XML實現通用WEB報表打印 盧彥

利用XML實現通用WEB報表打印(1) 盧彥 摘要開發B/S結構的應用程序最頭疼的問題可能就是報表打印了&#xff0c;由于只能采用瀏覽器來作為用戶界面進行交互&#xff0c;所以不能精確控制客戶端的打印機。而很多B/S結構的應用程序常常需要完成非常復雜的報表打印任務。而靠IE自帶的…

增加新分類daily——“每天學了啥?”

如題轉載于:https://www.cnblogs.com/sig3/p/3926538.html

現代計算機密碼學階段主要有兩個方向,密碼學技術讀書筆記

關于密碼學技術讀書筆記一.密碼學的介紹密碼學(在西歐語文中&#xff0c;源于希臘語krypts“隱藏的”&#xff0c;和grphein“書寫”)是研究如何隱密地傳遞信息的學科。在現代特別指對信息以及其傳輸的數學性研究&#xff0c;常被認為是數學和計算機科學的分支&#xff0c;和信…

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相加就得到總的…

淺談優化SQLServer數據庫服務器內存配置的策略

引文 http://demo.nbarticle.com/view/2004/8/9/view_1827.htm 農業銀行總行1998年以來正式推廣了新版網絡版綜合業務統計信息系統&#xff0c;該系統是基于WindowsNT4.0平臺&#xff0c;采用客戶&#xff0f;服務器模式&#xff0c;以Microsoft SQL Server為基礎建立起來的大…

知道第一章計算機基礎知識作業答案,大學計算機基礎作業答案

大學計算機基礎作業答案第一章 現代社會與計算機1. 什么事信息&#xff0c;其主要特征是什么&#xff1f;答&#xff1a;信息是可傳遞和共享的&#xff0c;可消除人們認知上的不確定因素&#xff0c;對人們的決策具有現實或潛在價值的知識。特征&#xff1a;普遍性、依附性、共…

Netflix推薦系統(Part two)-系統架構

Netflix在2013年公布了自己推薦系統的架構&#xff0c;本文主要總結和翻譯自System Architectures for Personalization and Recommendation&#xff0c;但這并不是一篇完整的翻譯文章。 Overview 首先&#xff0c;我們在下圖中提供推薦系統的整體系統圖。 該體系結構的主要組件…

母版頁可以動態切換嗎?

通過設置“MasterPageFile”屬性可以做到&#xff0c;然而這個屬性只能在“Page_PreInit”事件之中或之前設置。在Page_PreInit事件或之前&#xff0c;當前頁面包含的對象還沒有被生成&#xff0c;不能訪問&#xff0c;所以&#xff0c;如果想根據當前頁面上某個控件的值動態切…

httpclient 多附件上傳

多附件上傳實例&#xff1a; /*** 多附件上傳* param host* param uri* param attachment 附件* param param body參數* return*/public String upload(String host, String uri, Map<String,String> attachment, Map<String, String> param) {logger.info("…

加拿大大學 計算機專業排名2015,加拿大大學計算機專業排名top15

加拿大大學計算機專業排名。加拿大開設計算機專業的很多高校還提供帶薪實習機會&#xff0c;吸引了眾多國際學子前往留學。在加拿大計算機專業優秀的大學很多。同時&#xff0c;加拿大計算機專業排名在世界上也非常的靠前&#xff0c;在加拿大有很多大學值得廣大計算機熱愛者選…

如何讀懂并寫出裝逼的函數式代碼

今天在微博上看到了 有人分享了下面的這段函數式代碼&#xff0c;我把代碼貼到下面&#xff0c;不過我對原來的代碼略有改動&#xff0c;對于函數式的版本&#xff0c;咋一看&#xff0c;的確令人非常費解&#xff0c;仔細看一下&#xff0c;你可能就暈掉了&#xff0c;似乎完全…

如何打通高薪的黃金通道 成為職場金領

身在職場的你&#xff0c;是否想過有朝一日能獲得百萬年薪&#xff1f;最近&#xff0c;央視二套絕對挑戰特別節目巔峰營銷的熱播&#xff0c;引發各方人士對東風日產百萬年薪招兵營銷總監的關注。身價百萬的營銷總監人人想當&#xff0c;如何才能成為這樣的職場金領&#xff0…

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…

9.28PMP每日一題

控制質量過程的輸出是&#xff1a;A、變更請求B、批準的變更請求C、工作績效數據D、事業環境因素 答案將于明天和新題一起發布&#xff01;9.27試題答案&#xff1a;C轉載于:https://blog.51cto.com/13554215/2287292