From b656f58958a5ca54e710b980b98f4b542ff6369f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 10 六月 2021 18:58:21 +0800
Subject: [PATCH] 2021-06-10

---
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx |   78 +++++++++++++++++++++-----------------
 1 files changed, 43 insertions(+), 35 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 2f30000..cd01883 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -145,7 +145,7 @@
       if (_config.plot.datatype === 'statistics') {
         if (_config.plot.ramp === 'true') {
           let _s = 'l(0) '
-          if (_config.plot.chartType === 'bar') {
+          if (_config.plot.chartType === 'bar' || (_config.plot.chartType === 'line' && _config.plot.rampDirection === 'vertical')) {
             _s = 'l(90) '
           }
           _config.plot.colors.forEach(item => {
@@ -183,7 +183,7 @@
       } else {
         if (_config.plot.ramp === 'true') {
           let _s = 'l(0) '
-          if (_config.plot.chartType === 'bar') {
+          if (_config.plot.chartType === 'bar' || (_config.plot.chartType === 'line' && _config.plot.rampDirection === 'vertical')) {
             _s = 'l(90) '
           }
           _config.plot.colors.forEach(item => {
@@ -531,6 +531,8 @@
     if (plot.repeat === 'average') {
       let _mdata = new Map()
       _cdata.forEach(item => {
+        if (!item[plot.Xaxis]) return
+
         vFields.forEach(col => {
           if (typeof(item[col.field]) !== 'number') {
             item[col.field] = parseFloat(item[col.field])
@@ -543,10 +545,15 @@
           }
         })
 
-        if (item[plot.Xaxis] && !_mdata.has(item[plot.Xaxis])) {
+        // 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]
+        }
+
+        if (!_mdata.has(item[plot.Xaxis])) {
           item.$count = 1
           _mdata.set(item[plot.Xaxis], item)
-        } else if (item[plot.Xaxis]) {
+        } else {
           let _item = _mdata.get(item[plot.Xaxis])
           _item.$count++
           vFields.forEach(col => {
@@ -569,6 +576,8 @@
     } else if (plot.repeat === 'cumsum') {
       let _mdata = new Map()
       _cdata.forEach(item => {
+        if (!item[plot.Xaxis]) return
+
         vFields.forEach(col => {
           if (typeof(item[col.field]) !== 'number') {
             item[col.field] = parseFloat(item[col.field])
@@ -581,9 +590,13 @@
           }
         })
 
-        if (item[plot.Xaxis] && !_mdata.has(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 (!_mdata.has(item[plot.Xaxis])) {
           _mdata.set(item[plot.Xaxis], item)
-        } else if (item[plot.Xaxis]) {
+        } else {
           let _item = _mdata.get(item[plot.Xaxis])
           vFields.forEach(col => {
             _item[col.field] += item[col.field]
@@ -604,7 +617,13 @@
     } else { // plot.repeat === 'unrepeat'
       let _mdata = new Map()
       _cdata.forEach(item => {
-        if (item[plot.Xaxis] && !_mdata.has(item[plot.Xaxis])) {
+        if (!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]
+        }
+
+        if (!_mdata.has(item[plot.Xaxis])) {
           vFields.forEach(col => {
             if (typeof(item[col.field]) !== 'number') {
               item[col.field] = parseFloat(item[col.field])
@@ -657,6 +676,10 @@
       _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])
@@ -692,6 +715,10 @@
       _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') {
@@ -724,6 +751,10 @@
       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]
 
@@ -889,6 +920,9 @@
       let limit = chartColors.length
       _chart.color(_typefield, (key) => {
         if (plot.$colors.has(key)) {
+          if (plot.area === 'true' && plot.rampDirection === 'vertical') {
+            return plot.$colors.get(key).replace(/l\(9?0\) 0:|\s1:.*/ig, '')
+          }
           return plot.$colors.get(key)
         } else {
           colorIndex++
@@ -971,21 +1005,8 @@
   customrender = (data) => {
     const { plot, transfield } = this.state
     const ds = new DataSet()
+    const dv = ds.createView().source(data)
 
-    let _copydata = data
-    // dodge is not support linear attribute, please use category attribute! 鏃堕棿鏍煎紡
-    if (_copydata[0] && _copydata[0][plot.Xaxis] && /^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(_copydata[0][plot.Xaxis])) {
-      for (let i = 1; i < 12; i++) {
-        if (_copydata[i] && _copydata[i][plot.Xaxis] === _copydata[0][plot.Xaxis]) {
-          _copydata[i][plot.Xaxis] += ' '
-        } else {
-          break;
-        }
-      }
-      _copydata[0][plot.Xaxis] += ' '
-    }
-
-    const dv = ds.createView().source(_copydata)
     dv.transform({
       type: 'map',
       callback(row) {
@@ -1084,7 +1105,7 @@
         padding
       })
       const dst = new DataSet()
-      const dvt = dst.createView().source(_copydata)
+      const dvt = dst.createView().source(data)
   
       dvt.transform({
         type: 'fold',
@@ -1339,7 +1360,6 @@
     let _data = []
     let _valfield = 'value'
     let _typefield = 'key'
-
     let colorIndex = 0
 
     if (plot.datatype === 'statistics') {
@@ -1383,18 +1403,6 @@
       autoFit: true,
       height: plot.height
     })
-
-    // dodge is not support linear attribute, please use category attribute! 鏃堕棿鏍煎紡
-    if (_data[0] && _data[0][plot.Xaxis] && /^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?/.test(_data[0][plot.Xaxis])) {
-      for (let i = 1; i < 12; i++) {
-        if (_data[i] && _data[i][plot.Xaxis] === _data[0][plot.Xaxis]) {
-          _data[i][plot.Xaxis] += ' '
-        } else {
-          break;
-        }
-      }
-      _data[0][plot.Xaxis] += ' '
-    }
 
     chart.data(_data)
 

--
Gitblit v1.8.0