From d5144e7cb7ccf2795e02098b850e282eb2a6e74f Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期三, 14 十月 2020 10:27:07 +0800
Subject: [PATCH] 集群节点展示测试

---
 src/pages/settings/components/ClusterManagement.vue |   23 ++++---
 src/components/serfDiagram/vue-d3-network/index.vue |    1 
 src/components/serfDiagram/index.vue                |  123 +++++++++++++++++++++++++++++++++++++++--
 3 files changed, 130 insertions(+), 17 deletions(-)

diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue
index d974951..544fb8a 100644
--- a/src/components/serfDiagram/index.vue
+++ b/src/components/serfDiagram/index.vue
@@ -2,6 +2,7 @@
   .net
     d3-network(
        ref='net'
+       v-if="nodes.length"
       :net-nodes="nodes"
       :net-links="links"
       :options="options"
@@ -11,6 +12,36 @@
       @node-hover='nodeHover'
       @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>
@@ -24,7 +55,8 @@
   },
   props: {
     agent: String,
-    members: Array
+    members: Array,
+    searchNodes: Array,
   },
   data() {
     return {
@@ -39,9 +71,72 @@
     };
   },
   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.members.forEach((v, i) => {
+      this.searchNodes.forEach((v, i) => {
         n.push({
           id: i,
           name: v.nodeName,
@@ -54,7 +149,7 @@
                 : ""
         });
       });
-
+      console.log(n)
       return n;
     },
     links() {
@@ -110,6 +205,11 @@
   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);
@@ -120,8 +220,8 @@
       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;
+      //this.toolTipNode = this.members[node.id].nodeName;
+      //this.toolTipAddr = this.members[node.id].Address;
     },
     nodeOut(event, node) {
       node._opacity = node.opacity;
@@ -144,7 +244,8 @@
       // this.selectNodesLinks()
       // this.$set(this.nodes, node.index, node)
       console.log(event,node)
-      debugger
+      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]);
       }
@@ -284,4 +385,14 @@
   border-width: 6px;
   margin-top: -6px;
 }
+.clouds{
+  height: 100%;
+  margin:0;
+  background:rgba(149, 221, 255, 0.322);
+}
+.inner{
+  height:300px;
+  margin: 50px auto;
+  background:rgb(201 233 249);
+}
 </style>
diff --git a/src/components/serfDiagram/vue-d3-network/index.vue b/src/components/serfDiagram/vue-d3-network/index.vue
index 6b7ff4e..5ef31b5 100644
--- a/src/components/serfDiagram/vue-d3-network/index.vue
+++ b/src/components/serfDiagram/vue-d3-network/index.vue
@@ -398,6 +398,7 @@
     },
     // -- Render helpers
     nodeClick(event, node) {
+      console.log(node)
       this.$emit("node-click", event, node);
     },
     nodeHover(event, node) {
diff --git a/src/pages/settings/components/ClusterManagement.vue b/src/pages/settings/components/ClusterManagement.vue
index 9a04946..8ab8f83 100644
--- a/src/pages/settings/components/ClusterManagement.vue
+++ b/src/pages/settings/components/ClusterManagement.vue
@@ -104,6 +104,7 @@
         <serfDiagram
           ref="diagram"
           :members="members"
+          :searchNodes="nodes"
           :agent="agentName"
           v-loading="loading"
           @selected-node="joinNode"
@@ -272,12 +273,12 @@
       loading: false,
       searchDis: false,
       agentName: "",
-      members: []
+      members: [],
+      nodes: [],
     };
   },
   mounted() {
     this.findCluster();
-    this.getVrrpInfo();
     this.getEsClusterNodes();
   },
   methods: {
@@ -290,7 +291,6 @@
     submitForm(formName) {
       this.$refs[formName].validate(valid => {
         if (valid) {
-          debugger
           //alert("submit!");
           let json = {
             clusterId: this.clusterid,
@@ -409,6 +409,7 @@
         this.stopSearch();
       }, 10 * 1000);
     },
+    //鎼滅储闆嗙兢
     async getSearchNodes() {
       let res = await getSearchNodes();
       if (res && res.success) {
@@ -428,7 +429,8 @@
             return element.node_id === i.node_id;
           });
           if (found === undefined) {
-            this.members.push(i);
+            //this.members.push(i);
+            this.nodes.push(i);
           }
         });
       }
@@ -477,6 +479,8 @@
             debugger
             let obj = {};
             obj.device_type = i.device_type;
+            obj.workType = i.device_type.substr(2,2);
+            obj.hardwareType = i.device_type.substr(4,2);
             obj.cluster_id = i.cluster_id;
             obj.clusterName = res.data.clusterName;
             obj.create_time = i.create_time;
@@ -489,6 +493,7 @@
             return obj;
           });
           this.members = this.members.concat(list);
+          console.log(this.members)
         } else {
           this.isHasColony = false;
           // this.activeName = '1'
@@ -550,6 +555,7 @@
 
     },
     joinNode(event, node) {
+      debugger
       this.currentCluster.cluster_id = node.cluster_id;
       if (this.activeName === "3") {
         this.manageForm.clustername = node.clusterName;
@@ -695,14 +701,9 @@
       this.ruleForm.virtualIp = ip;
       console.log(this.ruleForm.virtualIp)
     }
-  
 
-    
   },
-  mounted () {
-    this.findCluster();
-    
-  },
+
   created () { }
 
 };
@@ -777,6 +778,6 @@
   line-height: 30px;
 }
 .nodes-svg{
-  background-color: aquamarine;
+  background-color: rgba(127, 255, 212, 0.459);
 }
 </style>

--
Gitblit v1.8.0