From 4a800a8fc83c6bd1f86a8e847b079a51a7532c09 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 20 七月 2022 15:05:58 +0800 Subject: [PATCH] 修复国标配置的bug --- src/components/serfDiagram/index.vue | 212 ++++++++++++++++------------------------------------ 1 files changed, 65 insertions(+), 147 deletions(-) diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue index 544fb8a..945e15d 100644 --- a/src/components/serfDiagram/index.vue +++ b/src/components/serfDiagram/index.vue @@ -1,8 +1,10 @@ <template lang='pug'> .net + .arrow_box(:style="toolTipStyle") + p {{toolTipAddr}} d3-network( ref='net' - v-if="nodes.length" + :startX="startX" :net-nodes="nodes" :net-links="links" :options="options" @@ -10,40 +12,10 @@ @drag-start='dragStart' @node-click='nodeClick' @node-hover='nodeHover' - @node-out='nodeOut' + @node-out='nodeOut' ) - .clouds(v-if="members.length") - //- d3-network( - //- ref='net' - //- v-if="outerNodes.length" - //- :net-nodes="outerNodes" - //- :net-links="links" - //- :options="options" - //- :selection="{nodes: nodeSelected, links: linksSelected}" - //- @drag-start='dragStart' - //- @node-click='nodeClick' - //- @node-hover='nodeHover' - //- @node-out='nodeOut' - //- ) - .inner - d3-network( - ref='net' - v-if="innerNodes.length" - :net-nodes="innerNodes" - :net-links="links" - :options="options" - :selection="{nodes: nodeSelected, links: linksSelected}" - @drag-start='dragStart' - @node-click='nodeClick' - @node-hover='nodeHover' - @node-out='nodeOut' - ) - - - - </template> - + <script> import D3Network from "./vue-d3-network"; import RoleIcon from "./icons.js"; @@ -56,7 +28,10 @@ props: { agent: String, members: Array, - searchNodes: Array, + sizeX: Number, + sizeY: Number, + startX: Number, + isShowHover: Boolean }, data() { return { @@ -66,90 +41,27 @@ toolTipStyle: { display: "none", height: "30px", - width: "120px" + width: "186px", + borderColor: "#ccc" } }; }, computed: { - //鍒嗙被鑺傜偣 - //1.浜戝唴鑺傜偣(瀵瑰簲X86) - innerNodes(){ - // return this.members.map(item=>{ - // if(item.hardwareType == '01'||item.hardwareType == '02'){ - // return { - // id:item.id, - // name:item.nodeName, - // svgSym: RoleIcon[item.role], - // _color: - // this.agent === v.nodeName - // ? "red" - // : v.role === "master" - // ? "orange" - // : "" - // } - // } - // }) - let arr = []; - this.members.forEach(item=>{ - if(item.hardwareType == '01'||item.hardwareType == '02'){ - arr.push({ - id:item.id, - cluster_id:item.cluster_id, - name:item.nodeName, - svgSym: RoleIcon[item.role], - _color: - this.agent === item.nodeName - ? "red" - : item.role === "master" - ? "orange" - : "" - }); - } - }); - console.log(this.members); - console.log(arr) - return arr; - }, - //2.杈硅妭鐐�(鐜板搴攂it) - outerNodes(){ - let arr = []; - this.members.forEach(item=>{ - debugger - if(item.hardwareType == '03'){ - arr.push({ - id:item.id, - cluster_id:item.cluster_id, - name:item.nodeName, - svgSym: RoleIcon[item.role], - _color: - this.agent === item.nodeName - ? "red" - : item.role === "master" - ? "orange" - : "" - }); - } - }); - console.log(this.members); - console.log(arr) - return arr; - }, nodes() { let n = new Array(); - this.searchNodes.forEach((v, i) => { + this.members.forEach((v, i) => { n.push({ id: i, name: v.nodeName, svgSym: RoleIcon[v.role], _color: - this.agent === v.nodeName - ? "red" - : v.role === "master" - ? "orange" - : "" + v.role === "master" + ? "orange" + : "" + }); }); - console.log(n) + return n; }, links() { @@ -195,9 +107,13 @@ nodeLabels: true, canvas: this.canvas, linkWidth: 0, + // size: { + // w: 745, + // h: 426 + // } size: { - w: 745, - h: 426 + w: this.sizeX || 445, + h: this.sizeY || 426 } }; } @@ -205,23 +121,38 @@ created() { this.reset(); }, - mounted(){ - console.log(this.members) - console.log('innerNodes',this.innerNodes); - console.log('outerNodes',this.outerNodes) - }, methods: { nodeHover(event, node) { console.log(node); node._opacity = 1; node._size = 28; - let width = document.body.clientWidth; - this.toolTipStyle.display = "block"; - this.toolTipStyle.top = node.y - 10 + "px"; - this.toolTipStyle.left = node.x + width / 2 - 30 + "px"; + //let width = document.body.clientWidth; + if (this.isShowHover) { + this.toolTipStyle.display = "block"; + this.toolTipStyle.top = node.y - 60 + "px"; + this.toolTipStyle.left = node.x + "px"; + console.log(this.members[node.id]); + let workName = ''; + switch (this.members[node.id].workType) { + case '01': + workName = '鍒嗘瀽' + break; + case '02': + workName = '瀛樺偍' + break; + case '03': + workName = '鍒嗘瀽+瀛樺偍' + break; + case '04': + workName = '搴旂敤' + break; + default: + return; + } + this.toolTipNode = this.members[node.id].nodeName; + this.toolTipAddr = `${this.members[node.id].Address}(${workName})`; + } - //this.toolTipNode = this.members[node.id].nodeName; - //this.toolTipAddr = this.members[node.id].Address; }, nodeOut(event, node) { node._opacity = node.opacity; @@ -234,18 +165,6 @@ } }, nodeClick(event, node) { - // if (this.nodeSelected[node.id]) { - // this.unSelectNode(node.id) - // // is not nodeSelected - // } else { - // this.selectNode(node) - - // } - // this.selectNodesLinks() - // this.$set(this.nodes, node.index, node) - console.log(event,node) - console.log(this.members) - console.log(this.members[node.id]) if (event.timeStamp - this.movement < 200) { this.$emit("selected-node", event, this.members[node.id]); } @@ -285,11 +204,12 @@ } }; </script> - + <style> .net { height: 100%; margin: 0; + position: relative; } .node { @@ -350,7 +270,7 @@ position: absolute; background: #fff; /* border: 1px solid #127862; */ - border: 1px solid rgba(76, 78, 78, 0.7); + border: 1px solid #ccc; font-size: 11px; padding-left: 5px; } @@ -358,13 +278,13 @@ .arrow_box p { height: 30px; line-height: 30px; - width: 100px; + width: 100%; overflow: hidden; } .arrow_box:after, .arrow_box:before { - right: 100%; - top: 50%; + right: 50%; + top: 100%; border: solid transparent; content: " "; height: 0; @@ -378,21 +298,19 @@ border-right-color: #fff; border-width: 5px; margin-top: -5px; + transform: translateY(6px) rotateZ(-90deg); } .arrow_box:before { border-color: rgba(194, 225, 245, 0); border-right-color: #323333; - border-width: 6px; - margin-top: -6px; + border-width: 5px; + margin-top: -5px; } -.clouds{ - height: 100%; - margin:0; - background:rgba(149, 221, 255, 0.322); +.arrow_box:before { + border-color: rgba(194, 225, 245, 0); + border-right-color: #323333; + border-width: 5px; + margin-top: -5px; + transform: translateY(6px) rotateZ(-90deg); } -.inner{ - height:300px; - margin: 50px auto; - background:rgb(201 233 249); -} -</style> +</style> \ No newline at end of file -- Gitblit v1.8.0