From 876a5e6657d67df66bb525d02dd6d147ba81cae5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 05 一月 2023 09:53:37 +0800
Subject: [PATCH] 2023-01-05

---
 src/tabviews/zshare/tablenodes/index.jsx |   61 ++++++++++++++++++++----------
 1 files changed, 41 insertions(+), 20 deletions(-)

diff --git a/src/tabviews/zshare/tablenodes/index.jsx b/src/tabviews/zshare/tablenodes/index.jsx
index 8a728df..df97bc4 100644
--- a/src/tabviews/zshare/tablenodes/index.jsx
+++ b/src/tabviews/zshare/tablenodes/index.jsx
@@ -155,11 +155,8 @@
         let { tbs, ptbs } = this.getTbs(config)
 
         ptbs = Array.from(new Set(ptbs))
+        ptbs = ptbs.filter(tb => tb.length > 1 && tb !== 'dbo')
         ptbs.sort()
-        if (ptbs.length && sessionStorage.getItem('mk_tb_names')) {
-          let names = sessionStorage.getItem('mk_tb_names')
-          ptbs = ptbs.filter(tb => names.indexOf(',' + tb.toLowerCase() + ',') > -1)
-        }
 
         if (ptbs.length) {
           ptbs.forEach((item, i) => {
@@ -184,6 +181,7 @@
 
         if (result.tb_list) {
           result.tb_list.sort((a, b) => a.tbname > b.tbname ? 1 : -1)
+          let length = result.tb_list.length
           result.tb_list.forEach((item, i) => {
             let cell = {
               label: item.tbname,
@@ -191,6 +189,8 @@
               id: 'table' + i,
               direction: 'right',
               color: '#1890ff',
+              collapsed: false,
+              collable: true,
               children: []
             }
 
@@ -209,10 +209,17 @@
                     id: item.tbname + 'menu' + i,
                     direction: 'right',
                     color: '#1890ff',
+                    type: 'dice-mind-map-leaf',
                     param: _param
                   })
                 }
               })
+            }
+
+            if (cell.children.length > 5 && length > 1) {
+              cell.collapsed = true
+            } else if (cell.children.length === 0) {
+              cell.collable = false
             }
 
             data.children.push(cell)
@@ -261,12 +268,12 @@
           const stroke = cfg.style.stroke || '#096dd9';
     
           return `
-          <group>
-            <rect draggable="true" style={{width: ${width}, height: 30, stroke: ${stroke}, radius: 4}} keyshape>
-              <text style={{ fontSize: 14, marginLeft: 6, marginTop: 6 }}>${cfg.label}</text>
-            </rect>
-          </group>
-        `;
+            <group>
+              <rect draggable="true" style={{width: ${width}, height: 30, stroke: ${stroke}, radius: 4}} keyshape>
+                <text style={{ fontSize: 14, marginLeft: 6, marginTop: 6 }}>${cfg.label}</text>
+              </rect>
+            </group>
+          `;
         },
         getAnchorPoints() {
           return [
@@ -285,13 +292,13 @@
           const color = cfg.color;
     
           return `
-          <group>
-            <rect draggable="true" style={{width: ${width}, height: 26, fill: 'transparent' }}>
-              <text style={{ fontSize: 12, fill: ${cfg.fontcolor ? cfg.fontcolor : 'black'}, marginLeft: 12, marginTop: 6 }}>${cfg.label}</text>
-            </rect>
-            <rect style={{ fill: ${color}, width: ${width}, height: 2, x: 0, y: 32 }} />
-          </group>
-        `;
+            <group>
+              <rect draggable="true" style={{width: ${width}, cursor: ${cfg.collable ? 'pointer' : 'default'}, height: 26, fill: 'transparent' }}>
+                <text style={{ fontSize: 12, fill: ${cfg.fontcolor ? cfg.fontcolor : 'black'}, cursor: ${cfg.collable ? 'pointer' : 'default'}, marginLeft: 12, marginTop: 6 }}>${cfg.label} ${cfg.collable ? '+' : ''}</text>
+              </rect>
+              <rect style={{ fill: ${color}, width: ${width}, cursor: ${cfg.collable ? 'pointer' : 'default'}, height: 2, x: 0, y: 32 }} />
+            </group>
+          `;
         },
         getAnchorPoints() {
           return [
@@ -302,6 +309,7 @@
       },
       'single-node',
     );
+
     G6.registerBehavior('scroll-canvas', {
       getEvents: function getEvents() {
         return {
@@ -358,9 +366,10 @@
           data.color = color;
         }
     
-        if (d.children) {
+        if (d.children && !d.collapsed) {
           data.children = d.children.map((child) => changeData(child, level + 1, data.color));
         }
+        
         return data;
       };
       return changeData(data);
@@ -399,9 +408,20 @@
           lineWidth: 2,
         },
       },
-      minZoom: 0.5,
+      minZoom: 0.3,
       modes: {
-        default: ['drag-canvas', 'zoom-canvas'],
+        default: [
+          {
+            type: 'collapse-expand',
+            trigger: 'click',
+            shouldBegin: (e, self) => {
+              if (e.item && e.item.getModel().collable) return true;
+              return false;
+            },
+          },
+          'drag-canvas',
+          'zoom-canvas'
+        ],
       },
     });
     
@@ -441,6 +461,7 @@
           </div>
           <div className="footer">
             <Button key="cancel" onClick={() => { this.setState({ visible: false })}}>鍏抽棴</Button>
+            <span className="tip">娉細鐐瑰嚮琛ㄥ悕鍙睍寮�/鏀惰捣鑿滃崟</span>
           </div>
         </Modal>
       </div>

--
Gitblit v1.8.0