JavaScript?TWaver使用中間點(diǎn)畫折線的方法
前言
TWaver的圖形組件庫中提供了拓?fù)浣M件、地圖組件、設(shè)備圖組件,以及表格、樹圖、屬性表、圖表等豐富的通用圖形界面組件,為電信運(yùn)營(yíng)支撐系統(tǒng)(OSS)的開發(fā)提供“一站式”的組件產(chǎn)品和解決方案,是快速設(shè)計(jì)、開發(fā)和部署OSS的利器。
問題描述:
使用官方的ShapeLink畫折線會(huì)不符合我的需求,比如連線中間的name標(biāo)簽不居中,以及沒辦法繪制多條,由同一節(jié)點(diǎn)出發(fā)的連線。
原始寫法
var link = new twaver.ShapeLink(nodeA, nodeB);
link.setName('shapeLink');
box.add(nodeA);
box.add(nodeB);
box.add(link);
link.addPoint({x:150,y:250});
link.addPoint({x:300,y:250});
link.addPoint({x:500,y:450});
link.setStyle('shapelink.type','lineto');這里我們需要告訴它點(diǎn)的新坐標(biāo),然后將其添加進(jìn)去就可以了,以這種方式形成自動(dòng)形成折線,操作起來比較簡(jiǎn)單方便,
效果如圖:

從這里面也可以看出問題,name顯示的位置是連線的中間處,從官方給的參數(shù)來說,并沒有辦法設(shè)置它在哪條上居中顯示。如果用于發(fā)某些結(jié)構(gòu)圖的話,連線的中間處的位置并不合適。
我的方案
可能是我的需求的原因,有些東西需要居中顯示,導(dǎo)致不得已采用中間點(diǎn)的方式繪制。
主要實(shí)現(xiàn)功能:
- 從A到Z可能有多條連線,只是業(yè)務(wù)不同
- name必須居中顯示在橫線的中間位置
- 多條連線時(shí)允許雙擊折疊
偽代碼如下:
// 臨時(shí)點(diǎn)tempNode
let tempNode = new Node();
tempNode.setSize(2, 2);
tempNode.setStyle('body.type', 'vector');
tempNode.setStyle('vector.shape', 'circle');
tempNode.setStyle('vector.fill.color', this.lineColor);
tempNode.setStyle('vector.outline.color', this.lineColor);
tempNode.setStyle('vector.outline.width', 1);
// 起點(diǎn)start-->tempNode
let link1 = new Link(start, tempNode);
link1.setFromNode(start);
link1.setToNode(tempNode);
// tempNode --> 終點(diǎn)
let link2 = new Link(tempNode, end);
link2.setFromNode(tempNode);
link2.setToNode(end);
// 如果有多條tempNode --> 終點(diǎn)
let link3 = new Link(tempNode, end);
link3.setFromNode(tempNode);
link3.setToNode(end);最終效果圖:

關(guān)于折疊的問題,只要link.bundle.id屬性設(shè)置一樣的ID就可以進(jìn)行雙擊折疊和關(guān)閉,然后通過link.bundle.expanded屬性,來控制默認(rèn)是展開還是折疊狀態(tài)。
到此這篇關(guān)于JavaScript TWaver使用中間點(diǎn)畫折線的方法的文章就介紹到這了,更多相關(guān)JS TWaver畫折線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法
這篇文章主要介紹了JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法,較為詳細(xì)的分析了二分查找法的原理與javascript實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-04-04
Javascript ParentNode和ChildNode接口原理解析
這篇文章主要介紹了Javascript ParentNode和ChildNode接口原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
原生js實(shí)現(xiàn)移動(dòng)端瀑布流式代碼示例
這篇文章主要為大家分享了原生js實(shí)現(xiàn)移動(dòng)端瀑布流式代碼示例,對(duì)瀑布流布局感興趣的小伙伴們可以參考一下2015-12-12
使用BootStrap建立響應(yīng)式網(wǎng)頁——通欄輪播圖(carousel)
這篇文章主要介紹了使用BootStrap建立響應(yīng)式網(wǎng)頁通欄輪播圖(carousel)的相關(guān)資料,需要的朋友可以參考下2016-12-12
微信小程序?qū)崿F(xiàn)動(dòng)態(tài)改變view標(biāo)簽寬度和高度的方法【附demo源碼下載】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)動(dòng)態(tài)改變view標(biāo)簽寬度和高度的方法,涉及微信小程序事件響應(yīng)及使用setData針對(duì)data數(shù)據(jù)動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
使用GruntJS鏈接與壓縮多個(gè)JavaScript文件過程詳解
怎么把多個(gè)JS文件搞成一個(gè)啊,GruntJS – JavaScript多文件編譯,風(fēng)格檢查,鏈接與壓縮神器,使用過程如下,有需要的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
JavaScript代碼異常監(jiān)控實(shí)現(xiàn)過程詳解
這篇文章主要介紹了JavaScript代碼異常監(jiān)控實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02

