From b69b5f6329ca5f87932436b7a6c1ddfc3377e10f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 16 五月 2024 10:56:41 +0800
Subject: [PATCH] 2024-05-16

---
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx |  423 ++++++++++++++--------------------------------------
 1 files changed, 115 insertions(+), 308 deletions(-)

diff --git a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
index 369255d..ae2dfce 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -3,7 +3,7 @@
 import { is, fromJS } from 'immutable'
 import { Chart } from '@antv/g2'
 import DataSet from '@antv/data-set'
-import { Spin, Empty, notification, Modal } from 'antd'
+import { Spin, Empty } from 'antd'
 import { DownloadOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
@@ -99,6 +99,11 @@
     _config.plot.height = Utils.getHeight(_config.plot.height)
     _config.style.height = 'auto'
     _config.style.minHeight = _config.plot.height + 30
+
+    if (_config.plot.correction) {
+      delete _config.plot.correction // 鏁版嵁淇锛堝凡寮冪敤锛�
+      _config.plot.barSize = 35
+    }
 
     if (!_config.plot.legend || _config.plot.legend === 'hidden') {
       _config.plot.legend = false
@@ -251,15 +256,35 @@
       style: { fill: _config.plot.color }
     }}
     let yc = {label: { style: { fill: _config.plot.color } }}
+
     if (_config.plot.grid === 'hidden') {
       yc.grid = null
     }
-    if (_config.plot.y_line === 'show') {
+    if (_config.plot.tick === 'hidden') {
+      xc.tickLine = null
+    }
+    if (_config.plot.x_line === 'hidden') {
+      xc.line = null
+    }
+    if (_config.plot.y_line === 'hidden') {
+      yc.line = null
+    } else {
       yc.line = {style: { stroke: '#D1D2CE' }}
     }
+    if (_config.plot.x_label === 'hidden') {
+      xc.label = null
+    }
+    if (_config.plot.y_label === 'hidden') {
+      yc.label = null
+    }
+
     if (_config.plot.lineColor) {
-      xc.tickLine = {style: { stroke: _config.plot.lineColor }}
-      xc.line = { style: { stroke: _config.plot.lineColor } }
+      if (xc.tickLine !== null) {
+        xc.tickLine = {style: { stroke: _config.plot.lineColor }}
+      }
+      if (xc.line !== null) {
+        xc.line = { style: { stroke: _config.plot.lineColor } }
+      }
       if (yc.grid !== null) {
         yc.grid = { line: { style: { stroke: _config.plot.lineColor } }}
       }
@@ -523,8 +548,8 @@
 
     if (config.uuid !== menuId) return
 
-    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    if (['mainline', 'maingrid', 'popclose'].includes(position) && config.setting.supModule) {
+      MKEmitter.emit('reloadData', config.setting.supModule, position === 'maingrid' ? '' : BID)
     } else {
       this.loadData()
     }
@@ -637,37 +662,15 @@
           this.timer && this.timer.stop()
         }
       }
-      if (result.message) {
-        if (result.ErrCode === 'Y') {
-          Modal.success({
-            title: result.message
-          })
-        } else if (result.ErrCode === 'S') {
-          notification.success({
-            top: 92,
-            message: result.message,
-            duration: 2
-          })
-        }
-      }
+      
+      UtilsDM.querySuccess(result)
     } else {
       this.setState({
         loading: false
       })
       this.timer && this.timer.stop()
       
-      if (!result.message) return
-      if (result.ErrCode === 'N') {
-        Modal.error({
-          title: result.message,
-        })
-      } else if (result.ErrCode !== '-2') {
-        notification.error({
-          top: 92,
-          message: result.message,
-          duration: 10
-        })
-      }
+      UtilsDM.queryFail(result)
     }
   }
 
@@ -684,149 +687,43 @@
     }, 100)
   }
 
-  /**
-   * @description 鍥捐〃鏁版嵁棰勫鐞�
-   * 1銆侀�氳繃鏄剧ず鍒楄繘琛屾暟鎹被鍨嬭浆鎹�
-   * 2銆侀噸澶嶆暟鎹細鍙栧钩鍧囧�笺�佺疮璁°�佸幓閲�
-   * 3銆佹煴鐘跺浘鏁版嵁琛ラ綈
-   */
   getdata = () => {
     const { plot, vFields, config } = this.state
 
     if (this.data.length === 0) {
       this.setState({empty: true})
       return []
+    } else {
+      this.setState({empty: false})
     }
 
-    let _data = []
-    let _cdata = fromJS(this.data).toJS()
+    return fromJS(this.data).toJS().map(item => {
+      // dodge is not support linear attribute, please use category attribute! 鏃堕棿鏍煎紡
+      if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
+        item[plot.Xaxis] = ' ' + item[plot.Xaxis]
+      } else {
+        item[plot.Xaxis] = '' + item[plot.Xaxis]
+      }
 
-    if (plot.repeat === 'average') {
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.Xaxis] && item[plot.Xaxis] !== 0) return
-
-        vFields.forEach(col => {
-          if (typeof(item[col.field]) !== 'number') {
-            item[col.field] = parseFloat(item[col.field])
-            if (isNaN(item[col.field])) {
-              item[col.field] = 0
-            }
+      vFields.forEach(col => {
+        if (typeof(item[col.field]) !== 'number') {
+          item[col.field] = parseFloat(item[col.field])
+          if (isNaN(item[col.field])) {
+            item[col.field] = 0
           }
-          if (col.show === 'percent') {
-            item[col.field] = item[col.field] * 100
-          }
-        })
-
-        // dodge is not support linear attribute, please use category attribute! 鏃堕棿鏍煎紡
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
-        } else {
-          item[plot.Xaxis] = '' + item[plot.Xaxis]
+        }
+        if (col.show === 'percent') {
+          item[col.field] = item[col.field] * 100
         }
 
-        if (!_mdata.has(item[plot.Xaxis])) {
-          item.$count = 1
-          _mdata.set(item[plot.Xaxis], item)
-        } else {
-          let _item = _mdata.get(item[plot.Xaxis])
-          _item.$count++
-          vFields.forEach(col => {
-            _item[col.field] += item[col.field]
-          })
-          _mdata.set(item[plot.Xaxis], _item)
-        }
+        item[col.field] = item[col.field].toFixed(col.decimal)
+        item[col.field] = +item[col.field]
       })
 
-      _data = [..._mdata.values()]
-      _data = _data.map(item => {
-        vFields.forEach(col => {
-          item[col.field] = item[col.field] / item.$count
-          item[col.field] = item[col.field].toFixed(col.decimal)
-          item[col.field] = +item[col.field]
-        })
-        item.$$uuid = item[config.setting.primaryKey] || ''
-        return item
-      })
-    } else if (plot.repeat === 'cumsum') {
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.Xaxis] && item[plot.Xaxis] !== 0) return
+      item.$$uuid = item[config.setting.primaryKey] || ''
 
-        vFields.forEach(col => {
-          if (typeof(item[col.field]) !== 'number') {
-            item[col.field] = parseFloat(item[col.field])
-            if (isNaN(item[col.field])) {
-              item[col.field] = 0
-            }
-          }
-          if (col.show === 'percent') {
-            item[col.field] = item[col.field] * 100
-          }
-        })
-
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
-        } else {
-          item[plot.Xaxis] = '' + item[plot.Xaxis]
-        }
-
-        if (!_mdata.has(item[plot.Xaxis])) {
-          _mdata.set(item[plot.Xaxis], item)
-        } else {
-          let _item = _mdata.get(item[plot.Xaxis])
-          vFields.forEach(col => {
-            _item[col.field] += item[col.field]
-          })
-          _mdata.set(item[plot.Xaxis], _item)
-        }
-      })
-
-      _data = [..._mdata.values()]
-      _data = _data.map(item => {
-        vFields.forEach(col => {
-          item[col.field] = item[col.field].toFixed(col.decimal)
-          item[col.field] = +item[col.field]
-        })
-        item.$$uuid = item[config.setting.primaryKey] || ''
-        return item
-      })
-    } else { // plot.repeat === 'unrepeat'
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.Xaxis] && item[plot.Xaxis] !== 0) return
-
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
-        } else {
-          item[plot.Xaxis] = '' + item[plot.Xaxis]
-        }
-
-        if (!_mdata.has(item[plot.Xaxis])) {
-          vFields.forEach(col => {
-            if (typeof(item[col.field]) !== 'number') {
-              item[col.field] = parseFloat(item[col.field])
-              if (isNaN(item[col.field])) {
-                item[col.field] = 0
-              }
-            }
-            if (col.show === 'percent') {
-              item[col.field] = item[col.field] * 100
-            }
-            item[col.field] = item[col.field].toFixed(col.decimal)
-            item[col.field] = +item[col.field]
-          })
-          
-          item.$$uuid = item[config.setting.primaryKey] || ''
-          _mdata.set(item[plot.Xaxis], item)
-        }
-      })
-
-      _data = [..._mdata.values()]
-    }
-
-    this.setState({empty: _data.length === 0})
-    return _data
+      return item
+    })
   }
 
   /**
@@ -835,132 +732,36 @@
   getStaticMsg = () => {
     const { plot, vstFields } = this.state
 
-    let percent = false
-    let decimal = vstFields ? vstFields.decimal : 0
-
-    if (plot.show === 'percent') {
-      percent = true
-    }
-
     if (this.data.length === 0) {
       this.setState({empty: true})
       return []
+    } else {
+      this.setState({empty: false})
     }
 
-    let _data = []
-    let _cdata = fromJS(this.data).toJS()
+    let decimal = vstFields ? vstFields.decimal : 0
 
-    if (plot.repeat === 'average') {
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.InfoType] || !item[plot.Xaxis]) return
+    return fromJS(this.data).toJS().map(item => {
+      if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
+        item[plot.Xaxis] = ' ' + item[plot.Xaxis]
+      }
 
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
+      if (typeof(item[plot.InfoValue]) !== 'number') {
+        item[plot.InfoValue] = parseFloat(item[plot.InfoValue])
+        if (isNaN(item[plot.InfoValue])) {
+          item[plot.InfoValue] = 0
         }
+      }
 
-        item.$uuid = item[plot.InfoType] + item[plot.Xaxis]
-        if (typeof(item[plot.InfoValue]) !== 'number') {
-          item[plot.InfoValue] = parseFloat(item[plot.InfoValue])
-          if (isNaN(item[plot.InfoValue])) {
-            item[plot.InfoValue] = 0
-          }
-        }
-        if (percent) {
-          item[plot.InfoValue] = item[plot.InfoValue] * 100
-        }
+      if (plot.show === 'percent') {
+        item[plot.InfoValue] = item[plot.InfoValue] * 100
+      }
 
-        if (!_mdata.has(item.$uuid)) {
-          item.$count = 1
-          _mdata.set(item.$uuid, item)
-        } else {
-          let _item = _mdata.get(item.$uuid)
-          _item.$count++
-          _item[plot.InfoValue] += item[plot.InfoValue]
-          _mdata.set(item.$uuid, _item)
-        }
-      })
+      item[plot.InfoValue] = item[plot.InfoValue].toFixed(decimal)
+      item[plot.InfoValue] = +item[plot.InfoValue]
 
-      _data = [..._mdata.values()]
-      _data = _data.map(item => {
-        item[plot.InfoValue] = item[plot.InfoValue] / item.$count
-        item[plot.InfoValue] = item[plot.InfoValue].toFixed(decimal)
-        item[plot.InfoValue] = +item[plot.InfoValue]
-
-        return item
-      })
-    } else if (plot.repeat === 'cumsum') {
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.InfoType] || !item[plot.Xaxis]) return
-
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
-        }
-
-        item.$uuid = item[plot.InfoType] + item[plot.Xaxis]
-
-        if (typeof(item[plot.InfoValue]) !== 'number') {
-          item[plot.InfoValue] = parseFloat(item[plot.InfoValue])
-          if (isNaN(item[plot.InfoValue])) {
-            item[plot.InfoValue] = 0
-          }
-        }
-        if (percent) {
-          item[plot.InfoValue] = item[plot.InfoValue] * 100
-        }
-
-        if (!_mdata.has(item.$uuid)) {
-          _mdata.set(item.$uuid, item)
-        } else {
-          let _item = _mdata.get(item.$uuid)
-          _item[plot.InfoValue] += item[plot.InfoValue]
-          _mdata.set(item.$uuid, _item)
-        }
-      })
-
-      _data = [..._mdata.values()]
-      _data = _data.map(item => {
-        item[plot.InfoValue] = item[plot.InfoValue].toFixed(decimal)
-        item[plot.InfoValue] = +item[plot.InfoValue]
-
-        return item
-      })
-    } else { // plot.repeat === 'unrepeat'
-      let _mdata = new Map()
-      _cdata.forEach(item => {
-        if (!item[plot.InfoType] || !item[plot.Xaxis]) return
-
-        if (/^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(item[plot.Xaxis])) {
-          item[plot.Xaxis] = ' ' + item[plot.Xaxis]
-        }
-
-        item.$uuid = item[plot.InfoType] + item[plot.Xaxis]
-
-        if (!_mdata.has(item.$uuid)) {
-          if (typeof(item[plot.InfoValue]) !== 'number') {
-            item[plot.InfoValue] = parseFloat(item[plot.InfoValue])
-            if (isNaN(item[plot.InfoValue])) {
-              item[plot.InfoValue] = 0
-            }
-          }
-          if (percent) {
-            item[plot.InfoValue] = item[plot.InfoValue] * 100
-          }
-
-          item[plot.InfoValue] = item[plot.InfoValue].toFixed(decimal)
-          item[plot.InfoValue] = +item[plot.InfoValue]
-
-          _mdata.set(item.$uuid, item)
-        }
-      })
-
-      _data = [..._mdata.values()]
-    }
-
-    this.setState({empty: _data.length === 0})
-
-    return _data
+      return item
+    })
   }
 
   /**
@@ -1119,15 +920,15 @@
     }
     if (plot.label !== 'false') {
       _chart.label(_valfield, (value) => {
-        if (plot.labelValue === 'zero' && value === 0) {
-          return null
-        }
         let val = value
         if (plot.show === 'percent') {
           val = value + '%'
         } else if (plot.show === 'thdSeparator') {
           val = val + ''
           val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+        }
+        if (plot.labelUnit) {
+          val = val + plot.labelUnit
         }
         return {
           content: val,
@@ -1410,7 +1211,7 @@
         }
         if (plot.$label !== 'false') {
           _chart.label('value*key', (value, key) => {
-            if (plot.labelValue === 'zero' && value === 0) {
+            if (plot.$label !== 'true' && value === 0) {
               return null
             }
 
@@ -1420,6 +1221,9 @@
             } else if (plot.show === 'thdSeparator') {
               val = val + ''
               val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+            }
+            if (plot.labelUnit) {
+              val = val + plot.labelUnit
             }
 
             if (plot.$label === 'true' && plot.labelColor === 'custom' && plot.$colors && plot.$colors.has(key)) {
@@ -1432,7 +1236,7 @@
           })
         }
 
-        if (plot.barSize || plot.correction) {
+        if (plot.barSize) {
           _chart.size(plot.barSize || 35)
         }
         if (plot.barRadius) {
@@ -1473,7 +1277,7 @@
         }
         if (plot.$label !== 'false') {
           _chart.label('value*key', (value, key) => {
-            if (plot.labelValue === 'zero' && value === 0) {
+            if (plot.$label !== 'true' && value === 0) {
               return null
             }
 
@@ -1483,6 +1287,9 @@
             } else if (plot.show === 'thdSeparator') {
               val = val + ''
               val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+            }
+            if (plot.labelUnit) {
+              val = val + plot.labelUnit
             }
             if (plot.$label === 'true' && plot.labelColor === 'custom' && plot.$colors && plot.$colors.has(key)) {
               lablecfg.style.fill = plot.$colors.get(key)
@@ -1494,7 +1301,7 @@
           })
         }
 
-        if (plot.barSize || plot.correction) {
+        if (plot.barSize) {
           _chart.size(plot.barSize || 35)
         }
         if (plot.barRadius) {
@@ -1569,7 +1376,7 @@
         }
         if (item.label !== 'false') {
           _chart.label(item.name, (value) => {
-            if (plot.labelValue === 'zero' && value === 0) {
+            if (plot.label !== 'true' && value === 0) {
               return null
             }
 
@@ -1579,6 +1386,9 @@
             } else if (item.show === 'thdSeparator') {
               val = val + ''
               val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+            }
+            if (plot.labelUnit) {
+              val = val + plot.labelUnit
             }
             if (plot.label === 'true' && plot.labelColor === 'custom' && item.color) {
               lablecfg.style.fill = item.color
@@ -1640,16 +1450,15 @@
 
         if (item.label === 'true') {
           _chart.label(item.name, (value) => {
-            if (plot.labelValue === 'zero' && value === 0) {
-              return null
-            }
-
             let val = value
             if (item.show === 'percent') {
               val = value + '%'
             } else if (item.show === 'thdSeparator') {
               val = val + ''
               val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+            }
+            if (plot.labelUnit) {
+              val = val + plot.labelUnit
             }
 
             return {
@@ -1887,7 +1696,7 @@
       }
       if (plot.label !== 'false') {
         _chart.label(`${_valfield}*${_typefield}`, (value, key) => {
-          if (plot.labelValue === 'zero' && value === 0) {
+          if (plot.label !== 'true' && value === 0) {
             return null
           }
 
@@ -1897,6 +1706,9 @@
           } else if (plot.show === 'thdSeparator') {
             val = val + ''
             val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+          }
+          if (plot.labelUnit) {
+            val = val + plot.labelUnit
           }
 
           if (plot.label === 'true' && plot.labelColor === 'custom' && plot.$colors && plot.$colors.has(key)) {
@@ -1910,7 +1722,7 @@
         })
       }
 
-      if (plot.barSize || plot.correction) {
+      if (plot.barSize) {
         _chart.size(plot.barSize || 35)
       }
       if (plot.selectColor) {
@@ -1973,7 +1785,7 @@
       }
       if (plot.label !== 'false') {
         _chart.label(`${_valfield}*${_typefield}`, (value, key) => {
-          if (plot.labelValue === 'zero' && value === 0) {
+          if (plot.label !== 'true' && value === 0) {
             return null
           }
 
@@ -1983,6 +1795,9 @@
           } else if (plot.show === 'thdSeparator') {
             val = val + ''
             val = val.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+          }
+          if (plot.labelUnit) {
+            val = val + plot.labelUnit
           }
 
           if (plot.label === 'true' && plot.labelColor === 'custom' && plot.$colors && plot.$colors.has(key)) {
@@ -1996,7 +1811,7 @@
         })
       }
 
-      if (plot.barSize || plot.correction) {
+      if (plot.barSize) {
         _chart.size(plot.barSize || 35)
       }
       if (plot.selectColor) {
@@ -2033,17 +1848,13 @@
           MenuName: menu.MenuName,
           MenuNo: menu.MenuNo || '',
           type: menu.tabType,
-          param: {}
+          param: {$BID: data.$$uuid || ''}
         }
   
-        if (plot.joint === 'true') {
-          newtab.param.$BID = data.$$uuid || ''
-
-          Object.keys(data).forEach(key => {
-            if (/^\$/.test(key)) return
-            newtab.param[key] = data[key]
-          })
-        }
+        Object.keys(data).forEach(key => {
+          if (/^\$/.test(key)) return
+          newtab.param[key] = data[key]
+        })
   
         MKEmitter.emit('modifyTabs', newtab, true)
       } else if (plot.click === 'menu') {
@@ -2062,16 +1873,12 @@
 
         if (!menu) return
   
-        menu.param = {}
+        menu.param = {$BID: data.$$uuid || ''}
   
-        if (plot.joint === 'true') {
-          menu.param.$BID = data.$$uuid || ''
-
-          Object.keys(data).forEach(key => {
-            if (/^\$/.test(key)) return
-            menu.param[key] = data[key]
-          })
-        }
+        Object.keys(data).forEach(key => {
+          if (/^\$/.test(key)) return
+          menu.param[key] = data[key]
+        })
   
         MKEmitter.emit('modifyTabs', menu, true)
       } else {

--
Gitblit v1.8.0