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