| | |
| | | members: Array, |
| | | sizeX: Number, |
| | | sizeY: Number, |
| | | startX: Number |
| | | startX: Number, |
| | | isShowHover: Boolean |
| | | }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | nodeSize: 20, |
| | | fontSize: 20, |
| | |
| | | toolTipStyle: { |
| | | display: "none", |
| | | height: "30px", |
| | | width: "150px" |
| | | width: "186px", |
| | | borderColor: "#ccc" |
| | | } |
| | | }; |
| | | }, |
| | | computed: { |
| | | nodes () { |
| | | nodes() { |
| | | let n = new Array(); |
| | | this.members.forEach((v, i) => { |
| | | n.push({ |
| | | id: i, |
| | | name: v.nodeName, |
| | | svgSym: RoleIcon[v.role], |
| | | _color: |
| | | v.role === "master" |
| | | ? "orange" |
| | | : "" |
| | | _color: |
| | | 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; |
| | |
| | | |
| | | return arr; |
| | | }, |
| | | options () { |
| | | options() { |
| | | return { |
| | | force: 3000, |
| | | nodeSize: this.nodeSize, |
| | |
| | | }; |
| | | } |
| | | }, |
| | | 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 - 60 + "px"; |
| | | this.toolTipStyle.left = node.x + "px"; |
| | | console.log(this.members[node.id]) |
| | | this.toolTipNode = this.members[node.id].nodeName; |
| | | this.toolTipAddr = this.members[node.id].Address; |
| | | 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) { |
| | | // 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) |
| | | debugger |
| | | nodeClick(event, node) { |
| | | 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]) { |
| | |
| | | .net { |
| | | height: 100%; |
| | | margin: 0; |
| | | position: relative; |
| | | } |
| | | |
| | | .node { |
| | |
| | | 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; |
| | | } |
| | |
| | | right: 50%; |
| | | top: 100%; |
| | | border: solid transparent; |
| | | content: ' '; |
| | | content: " "; |
| | | height: 0; |
| | | width: 0; |
| | | position: absolute; |