From 28483549baee23b4ca11e4ddbc9f93244d5fbb7c Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 07 九月 2023 14:14:41 +0800
Subject: [PATCH] 2023-09-07

---
 src/menu/tablenodes/index.jsx |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/src/menu/tablenodes/index.jsx b/src/menu/tablenodes/index.jsx
index 26fb797..fcbfdd9 100644
--- a/src/menu/tablenodes/index.jsx
+++ b/src/menu/tablenodes/index.jsx
@@ -109,6 +109,221 @@
     return {tbs, ptbs}
   }
 
+  getFuncAndInterface = (config) => {
+    let ptbs = []
+
+    let filterBtn = (cell, tbs) => {
+      if (cell.intertype === 'inner') {
+        tbs.push({
+          label: cell.innerFunc + ' (' + cell.label + ')',
+          color: 'orange',
+          id: Utils.getuuid(),
+          direction: 'left'
+        })
+      } else if (cell.intertype === 'outer' || cell.intertype === 'custom') {
+        if (cell.innerFunc) {
+          tbs.push({
+            label: cell.innerFunc + ' (' + cell.label + ')',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (cell.outerFunc) {
+          tbs.push({
+            label: cell.outerFunc + ' (' + cell.label + ')',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (cell.interface && cell.sysInterface !== 'true') {
+          tbs.push({
+            label: cell.interface + ' (' + cell.label + ')',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (cell.proInterface) {
+          tbs.push({
+            label: cell.proInterface + ' (' + cell.label + ')',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (cell.callbackFunc) {
+          tbs.push({
+            label: cell.callbackFunc + ' (' + cell.label + ')',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+      }
+    }
+
+    let filterSetting = (item, tbs) => {
+      if (!item.setting) return
+      if (item.setting.interType === 'inner') {
+        tbs.push({
+          label: item.setting.innerFunc + ' (鏁版嵁婧�)',
+          color: 'orange',
+          id: Utils.getuuid(),
+          direction: 'left'
+        })
+      } else if (item.setting.interType === 'outer') {
+        if (item.setting.outerFunc) {
+          tbs.push({
+            label: item.setting.outerFunc + ' (鏁版嵁婧�)',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (item.setting.interface && item.setting.sysInterface !== 'true') {
+          tbs.push({
+            label: item.setting.interface + ' (鏁版嵁婧�)',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+        if (item.setting.proInterface) {
+          tbs.push({
+            label: item.setting.proInterface + ' (鏁版嵁婧�)',
+            color: 'orange',
+            id: Utils.getuuid(),
+            direction: 'left'
+          })
+        }
+      }
+    }
+
+    let traversal = (components, extra) => {
+      components.forEach(item => {
+        if (item.type === 'tabs') {
+          item.subtabs.forEach(tab => {
+            traversal(tab.components, extra)
+          })
+        } else if (item.type === 'group') {
+          traversal(item.components, extra)
+        } else {
+          let tbs = []
+
+          filterSetting(item, tbs)
+
+          if (item.action) {
+            item.action.forEach(cell => {
+              if (cell.OpenType === 'popview') {
+                if (cell.config.components) {
+                  traversal(cell.config.components, `-${cell.label}(寮圭獥)`)
+                }
+              } else {
+                filterBtn(cell, tbs)
+              }
+            })
+          }
+
+          if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
+            item.subcards.forEach(card => {
+              card.elements && card.elements.forEach(cell => {
+                if (cell.eleType !== 'button') return
+                
+                if (cell.OpenType === 'popview') {
+                  if (cell.config.components) {
+                    traversal(cell.config.components, `-${cell.label}(寮圭獥)`)
+                  }
+                } else {
+                  filterBtn(cell, tbs)
+                }
+              })
+              card.backElements && card.backElements.forEach(cell => {
+                if (cell.eleType !== 'button') return
+                
+                if (cell.OpenType === 'popview') {
+                  if (cell.config.components) {
+                    traversal(cell.config.components, `-${cell.label}(寮圭獥)`)
+                  }
+                } else {
+                  filterBtn(cell, tbs)
+                }
+              })
+            })
+          } else if (item.type === 'balcony') {
+            item.elements && item.elements.forEach(cell => {
+              if (cell.eleType !== 'button') return
+              
+              if (cell.OpenType === 'popview') {
+                if (cell.config.components) {
+                  traversal(cell.config.components, `-${cell.label}(寮圭獥)`)
+                }
+              } else {
+                filterBtn(cell, tbs)
+              }
+            })
+          } else if (item.type === 'table') {
+            let loopCol = (cols) => {
+              cols.forEach(col => {
+                if (col.type === 'colspan') {
+                  loopCol(col.subcols)
+                } else if (col.type === 'custom') {
+                  col.elements.forEach(cell => {
+                    if (cell.eleType !== 'button') return
+                    
+                    if (cell.OpenType === 'popview') {
+                      if (cell.config.components) {
+                        traversal(cell.config.components, `-${cell.label}(寮圭獥)`)
+                      }
+                    } else {
+                      filterBtn(cell, tbs)
+                    }
+                  })
+                }
+              })
+            }
+            loopCol(item.cols)
+          } else if (item.type === 'form') {
+            item.subcards.forEach(group => {
+              filterBtn(group.subButton, tbs)
+            })
+          }
+          
+          if (tbs.length) {
+            ptbs.push({
+              label: item.name + extra,
+              id: Utils.getuuid(),
+              direction: 'left',
+              color: 'orange',
+              children: tbs
+            })
+          }
+        }
+      })
+    }
+
+    if (config.interfaces) {
+      config.interfaces.forEach(item => {
+        let tbs = []
+        filterSetting(item, tbs)
+        if (tbs.length) {
+          ptbs.push({
+            label: item.name,
+            id: Utils.getuuid(),
+            direction: 'left',
+            color: 'orange',
+            children: tbs
+          })
+        }
+      })
+    }
+
+    traversal(config.components, '')
+
+    return ptbs
+  }
+
   trigger = () => {
     const { config } = this.props
 
@@ -172,6 +387,12 @@
           })
         }
 
+        let funcs = this.getFuncAndInterface(config)
+
+        if (funcs.length) {
+          data.children.push(...funcs)
+        }
+
         if (result.tb_list) {
           result.tb_list.sort((a, b) => a.tbname > b.tbname ? 1 : -1)
           let length = result.tb_list.length

--
Gitblit v1.8.0