From d451e7b7570a523bf0f397fa376be8d929f2492b Mon Sep 17 00:00:00 2001 From: hanbaoshan <hanbaoshan@aiotlink.com> Date: 星期六, 17 十月 2020 13:42:53 +0800 Subject: [PATCH] 集群节点移入效果更新 --- src/components/serfDiagram/index.vue | 96 ++++++++++++++++++++++++++---------------------- 1 files changed, 52 insertions(+), 44 deletions(-) diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue index 9358571..4f69b58 100644 --- a/src/components/serfDiagram/index.vue +++ b/src/components/serfDiagram/index.vue @@ -19,7 +19,7 @@ <script> import D3Network from "./vue-d3-network"; import RoleIcon from "./icons.js"; - + export default { name: "SerfDiagram", components: { @@ -32,7 +32,7 @@ sizeY: Number, startX: Number }, - data() { + data () { return { nodeSize: 20, fontSize: 20, @@ -45,7 +45,7 @@ }; }, computed: { - nodes() { + nodes () { let n = new Array(); this.members.forEach((v, i) => { n.push({ @@ -60,14 +60,14 @@ : "" }); }); - + return n; }, - links() { + links () { let arr = new Array(); let dup = new Array(); // Deduplicate to ensure that two nodes have only one line const count = this.members.length; - + switch (count) { case 0: case 1: @@ -87,7 +87,7 @@ // is me? skip continue; } - + if (!dup["d" + target + i]) { arr.push({ sid: i, tid: target }); dup["d" + i + target] = 1; @@ -95,10 +95,10 @@ } } } - + return arr; }, - options() { + options () { return { force: 3000, nodeSize: this.nodeSize, @@ -117,71 +117,71 @@ }; } }, - created() { + created () { this.reset(); }, methods: { - nodeHover(event, node) { + nodeHover (event, node) { console.log(node); node._opacity = 1; node._size = 28; - let width = document.body.clientWidth; + //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"; - + this.toolTipStyle.top = node.y - 60 + "px"; + this.toolTipStyle.left = node.x + "px"; + this.toolTipNode = this.members[node.id].nodeName; this.toolTipAddr = this.members[node.id].Address; }, - nodeOut(event, node) { + nodeOut (event, node) { node._opacity = node.opacity; node._size = node.size; this.toolTipStyle.display = "none"; }, - dragStart(event) { + dragStart (event) { if (event) { this.movement = event.timeStamp; } }, - nodeClick(event, node) { + 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(event, node) debugger if (event.timeStamp - this.movement < 200) { this.$emit("selected-node", event, this.members[node.id]); } }, - reset() { + reset () { this.nodeSelected = {}; this.linksSelected = {}; (this.toolTipNode = ""), (this.toolTipAddr = ""), (this.movement = 0); }, - unSelectNode(nodeId) { + unSelectNode (nodeId) { if (this.nodeSelected[nodeId]) { delete this.nodeSelected[nodeId]; } this.selectNodesLinks(); }, - unSelectLink(linkId) { + unSelectLink (linkId) { if (this.linksSelected[linkId]) { delete this.linksSelected[linkId]; } }, - selectNode(node) { + selectNode (node) { this.nodeSelected[node.id] = node; }, - selectLink(link) { + selectLink (link) { this.$set(this.linksSelected, link.id, link); }, - selectNodesLinks() { + selectNodesLinks () { for (let link of this.links) { // node is nodeSelected if (this.nodeSelected[link.sid] || this.nodeSelected[link.tid]) { @@ -200,7 +200,7 @@ height: 100%; margin: 0; } - + .node { /* stroke: rgba(18, 120, 98, 0.7); */ stroke: rgba(76, 78, 78, 0.7); @@ -210,51 +210,51 @@ /* fill: #dcfaf3; */ fill: #e3e4e4; } - + .node.selected { stroke: #caa455; } - + .node.pinned { stroke: rgba(190, 56, 93, 0.6); } - + .link { stroke: rgba(18, 120, 98, 0.3); } - + .link, .node { stroke-linecap: round; } - + .link:hover, .node:hover { stroke: #df8108; stroke-width: 1px; cursor: pointer; } - + .link.selected { stroke: rgba(202, 164, 85, 0.6); } - + .curve { fill: none; } - + .link-label, .node-label { /* fill: #127862; */ fill: rgba(76, 78, 78, 0.7); } - + .link-label { -webkit-transform: translateY(-0.5em); transform: translateY(-0.5em); text-anchor: middle; } - + .arrow_box { position: absolute; background: #fff; @@ -263,7 +263,7 @@ font-size: 11px; padding-left: 5px; } - + .arrow_box p { height: 30px; line-height: 30px; @@ -272,26 +272,34 @@ } .arrow_box:after, .arrow_box:before { - right: 100%; - top: 50%; + right: 50%; + top: 100%; border: solid transparent; - content: " "; + content: ' '; height: 0; width: 0; position: absolute; pointer-events: none; } - + .arrow_box:after { border-color: rgba(136, 183, 213, 0); 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: 5px; margin-top: -5px; } .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; + transform: translateY(6px) rotateZ(-90deg); } </style> \ No newline at end of file -- Gitblit v1.8.0