From 0431d53967499c063e91b57040b16832da38a0bd Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期五, 23 十月 2020 17:34:07 +0800
Subject: [PATCH] 应用中心添加自动刷新
---
src/components/serfDiagram/index.vue | 146 +++++++++++++++++++++++++++++-------------------
1 files changed, 89 insertions(+), 57 deletions(-)
diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue
index f8ad4fd..b07b2bb 100644
--- a/src/components/serfDiagram/index.vue
+++ b/src/components/serfDiagram/index.vue
@@ -1,5 +1,7 @@
<template lang='pug'>
.net
+ .arrow_box(:style="toolTipStyle")
+ p {{toolTipAddr}}
d3-network(
ref='net'
:startX="startX"
@@ -10,14 +12,14 @@
@drag-start='dragStart'
@node-click='nodeClick'
@node-hover='nodeHover'
- @node-out='nodeOut'
+ @node-out='nodeOut'
)
</template>
<script>
import D3Network from "./vue-d3-network";
import RoleIcon from "./icons.js";
-
+
export default {
name: "SerfDiagram",
components: {
@@ -28,9 +30,10 @@
members: Array,
sizeX: Number,
sizeY: Number,
- startX: Number
+ startX: Number,
+ isShowHover: Boolean
},
- data() {
+ data () {
return {
nodeSize: 20,
fontSize: 20,
@@ -38,12 +41,13 @@
toolTipStyle: {
display: "none",
height: "30px",
- width: "120px"
+ width: "186px",
+ borderColor: "#ccc"
}
};
},
computed: {
- nodes() {
+ nodes () {
let n = new Array();
this.members.forEach((v, i) => {
n.push({
@@ -51,21 +55,20 @@
name: v.nodeName,
svgSym: RoleIcon[v.role],
_color:
- this.agent === v.nodeName
- ? "red"
- : v.role === "master"
- ? "orange"
- : ""
+ v.role === "master"
+ ? "orange"
+ : ""
+
});
});
-
+
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:
@@ -85,7 +88,7 @@
// is me? skip
continue;
}
-
+
if (!dup["d" + target + i]) {
arr.push({ sid: i, tid: target });
dup["d" + i + target] = 1;
@@ -93,10 +96,10 @@
}
}
}
-
+
return arr;
},
- options() {
+ options () {
return {
force: 3000,
nodeSize: this.nodeSize,
@@ -115,71 +118,91 @@
};
}
},
- 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;
- this.toolTipStyle.display = "block";
- this.toolTipStyle.top = node.y - 10 + "px";
- this.toolTipStyle.left = node.x + width / 2 - 30 + "px";
-
- this.toolTipNode = this.members[node.id].nodeName;
- this.toolTipAddr = this.members[node.id].Address;
+ //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})`;
+ }
+
},
- 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]) {
@@ -197,8 +220,9 @@
.net {
height: 100%;
margin: 0;
+ position: relative;
}
-
+
.node {
/* stroke: rgba(18, 120, 98, 0.7); */
stroke: rgba(76, 78, 78, 0.7);
@@ -208,88 +232,96 @@
/* 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;
/* border: 1px solid #127862; */
- border: 1px solid rgba(76, 78, 78, 0.7);
+ border: 1px solid #ccc;
font-size: 11px;
padding-left: 5px;
}
-
+
.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: " ";
+ 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