From deb2536eaaa559d6c8ec94f81afb94b6c7806b4d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 29 三月 2024 16:15:14 +0800 Subject: [PATCH] 2024-03-29 --- src/tabviews/custom/components/chart/antv-pie/index.jsx | 498 ++++++++++++++----------------------------------------- 1 files changed, 128 insertions(+), 370 deletions(-) diff --git a/src/tabviews/custom/components/chart/antv-pie/index.jsx b/src/tabviews/custom/components/chart/antv-pie/index.jsx index a8bb8d5..bc32406 100644 --- a/src/tabviews/custom/components/chart/antv-pie/index.jsx +++ b/src/tabviews/custom/components/chart/antv-pie/index.jsx @@ -3,8 +3,8 @@ import { is, fromJS } from 'immutable' import { Chart } from '@antv/g2' import DataSet, { DataView } from '@antv/data-set' -import { Spin, Empty, notification, Modal } from 'antd' -import { DownloadOutlined } from '@ant-design/icons' +import { Spin, Empty } from 'antd' +// import { DownloadOutlined } from '@ant-design/icons' import moment from 'moment' import Api from '@/api' @@ -76,7 +76,7 @@ this.data = window.GLOB.SyncData.get(_config.dataName) || [] if (_config.$cache) { - Api.writeCacheConfig(_config.uuid, fromJS(this.data).toJS()) + Api.writeCacheConfig(_config.uuid, fromJS(this.data).toJS(), BID) } _config.setting.sync = 'false' @@ -140,12 +140,12 @@ } initExec = () => { - const { config } = this.state + const { config, BID } = this.state if (config.$cache) { if (config.$time) { if (!this.loaded) { - Api.getLCacheConfig(config.uuid, config.$time).then(res => { + Api.getLCacheConfig(config.uuid, config.$time, BID).then(res => { if (!res.valid && config.setting.onload === 'true') { setTimeout(() => { this.loadData('init') @@ -162,7 +162,7 @@ } } else { if (!this.loaded) { - Api.getLCacheConfig(config.uuid, 0).then(res => { + Api.getLCacheConfig(config.uuid, 0, BID).then(res => { if (!res.data || this.loaded) return this.data = res.data @@ -188,14 +188,14 @@ } transferSyncData = (syncId) => { - const { config } = this.state + const { config, BID } = this.state if (config.$syncId !== syncId) return let _data = window.GLOB.SyncData.get(config.dataName) || [] if (config.$cache) { - Api.writeCacheConfig(config.uuid, fromJS(_data).toJS()) + Api.writeCacheConfig(config.uuid, fromJS(_data).toJS(), BID) } this.data = _data @@ -297,7 +297,7 @@ let result = await Api.genericInterface(param) if (result.status) { if (config.$cache && type === 'init') { - Api.writeCacheConfig(config.uuid, result.data || []) + Api.writeCacheConfig(config.uuid, result.data || [], BID) } this.loaded = true @@ -316,45 +316,21 @@ 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) } } /** * @description 鍥捐〃鏁版嵁棰勫鐞� * 1銆侀�氳繃鏄剧ず鍒楄繘琛屾暟鎹被鍨嬭浆鎹� - * 2銆侀噸澶嶆暟鎹細鍙栧钩鍧囧�笺�佺疮璁°�佸幓閲� - * 3銆佹煴鐘跺浘鏁版嵁琛ラ綈 */ getdata = () => { const { plot } = this.state @@ -362,91 +338,22 @@ if (this.data.length === 0) { this.setState({empty: true}) return [] + } else { + this.setState({empty: false}) } - let _data = [] - let _cdata = fromJS(this.data).toJS() - - if (plot.repeat === 'average') { - let _mdata = new Map() - _cdata.forEach(item => { - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } else if (!item[plot.Xaxis]) { - return + return fromJS(this.data).toJS().map(item => { + if (typeof(item[plot.Yaxis]) !== 'number') { + item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) + if (isNaN(item[plot.Yaxis])) { + item[plot.Yaxis] = 0 } + } - 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++ - _item[plot.Yaxis] += item[plot.Yaxis] - _mdata.set(item[plot.Xaxis], _item) - } - }) + item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - _data = [..._mdata.values()] - _data = _data.map(item => { - item[plot.Yaxis] = item[plot.Yaxis] / item.$count - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - - return item - }) - } else if (plot.repeat === 'cumsum') { - let _mdata = new Map() - _cdata.forEach(item => { - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } else if (!item[plot.Xaxis]) { - return - } - - if (!_mdata.has(item[plot.Xaxis])) { - _mdata.set(item[plot.Xaxis], item) - } else { - let _item = _mdata.get(item[plot.Xaxis]) - _item[plot.Yaxis] += item[plot.Yaxis] - _mdata.set(item[plot.Xaxis], _item) - } - }) - - _data = [..._mdata.values()] - _data = _data.map(item => { - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - return item - }) - } else { // plot.repeat === 'unrepeat' - let _mdata = new Map() - _cdata.forEach(item => { - if (!item[plot.Xaxis] || _mdata.has(item[plot.Xaxis])) { - return - } - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } - - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - - _mdata.set(item[plot.Xaxis], item) - }) - - _data = [..._mdata.values()] - } - - this.setState({empty: _data.length === 0}) - - return _data + return item + }) } getnestdata = () => { @@ -458,127 +365,40 @@ } let _data = [] - let _cdata = fromJS(this.data).toJS() - if (plot.repeat === 'average') { - let _mdata = new Map() - let map = new Map() - let sort = 1 - _cdata.forEach(item => { - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } else if (!item[plot.Xaxis] || !item[plot.type]) { + let _mdata = new Map() + let map = new Map() + let sort = 1 + fromJS(this.data).toJS().forEach(item => { + let sign = item[plot.type] + item[plot.Xaxis] + if (!item[plot.Xaxis] || !item[plot.type] || _mdata.has(sign)) { + return + } + + if (typeof(item[plot.Yaxis]) !== 'number') { + item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) + if (isNaN(item[plot.Yaxis])) { return } + } - item.$type = item[plot.type] - let sign = item.$type + item[plot.Xaxis] + item.$type = item[plot.type] - if (!_mdata.has(sign)) { - let _sort = sort - if (map.has(item.$type)) { - _sort = map.get(item.$type) - } else { - map.set(item.$type, _sort) - sort++ - } + let _sort = sort + if (map.has(item.$type)) { + _sort = map.get(item.$type) + } else { + map.set(item.$type, _sort) + sort++ + } - item.$count = 1 - item.$sort = _sort - _mdata.set(sign, item) - } else { - let _item = _mdata.get(sign) - _item.$count++ - _item[plot.Yaxis] += item[plot.Yaxis] - _mdata.set(sign, _item) - } - }) + item.$sort = _sort + item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - _data = [..._mdata.values()] - _data = _data.map(item => { - item[plot.Yaxis] = item[plot.Yaxis] / item.$count - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) + _mdata.set(sign, true) - return item - }) - } else if (plot.repeat === 'cumsum') { - let _mdata = new Map() - let map = new Map() - let sort = 1 - _cdata.forEach(item => { - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } else if (!item[plot.Xaxis] || !item[plot.type]) { - return - } - - item.$type = item[plot.type] - let sign = item.$type + item[plot.Xaxis] - - if (!_mdata.has(sign)) { - let _sort = sort - if (map.has(item.$type)) { - _sort = map.get(item.$type) - } else { - map.set(item.$type, _sort) - sort++ - } - - item.$sort = _sort - _mdata.set(sign, item) - } else { - let _item = _mdata.get(sign) - _item[plot.Yaxis] += item[plot.Yaxis] - _mdata.set(sign, _item) - } - }) - - _data = [..._mdata.values()] - _data = _data.map(item => { - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - return item - }) - } else { // plot.repeat === 'unrepeat' - let _mdata = new Map() - let map = new Map() - let sort = 1 - _cdata.forEach(item => { - let sign = item[plot.type] + item[plot.Xaxis] - if (!item[plot.Xaxis] || !item[plot.type] || _mdata.has(sign)) { - return - } - - if (typeof(item[plot.Yaxis]) !== 'number') { - item[plot.Yaxis] = parseFloat(item[plot.Yaxis]) - if (isNaN(item[plot.Yaxis])) { - return - } - } - - item.$type = item[plot.type] - - let _sort = sort - if (map.has(item.$type)) { - _sort = map.get(item.$type) - } else { - map.set(item.$type, _sort) - sort++ - } - - item.$sort = _sort - item[plot.Yaxis] = +item[plot.Yaxis].toFixed(plot.$decimal) - - _mdata.set(sign, item) - }) - - _data = [..._mdata.values()] - } + _data.push(item) + }) this.setState({empty: _data.length === 0}) @@ -834,7 +654,7 @@ height: plot.height }) - if (plot.shape !== 'nightingale' && plot.show !== 'value') { + if (plot.show !== 'value') { dv.transform({ type: 'percent', field: Y_axis, @@ -854,27 +674,13 @@ chart.data(dv.rows) - if (plot.shape === 'nightingale') { - chart.coordinate('polar', { - innerRadius: plot.innerRadius ? (plot.innerRadius / 100) : 0, - radius: plot.radius ? (plot.radius / 100) : 0.75, - }) - } else { - chart.coordinate('theta', { - innerRadius: plot.shape !== 'pie' && plot.innerRadius ? (plot.innerRadius / 100) : 0, - radius: plot.radius ? (plot.radius / 100) : 0.75, - }) - } + chart.coordinate('theta', { + innerRadius: plot.shape !== 'pie' && plot.innerRadius ? (plot.innerRadius / 100) : 0, + radius: plot.radius ? (plot.radius / 100) : 0.75, + }) if (!plot.legend || plot.legend === 'hidden') { chart.legend(false) - } else if (plot.shape === 'nightingale') { - chart.legend(X_axis, { - position: plot.legend, - itemName: { - style: { fill: color } - } - }) } else { chart.legend({ position: plot.legend, @@ -904,125 +710,84 @@ }) } - if (plot.shape !== 'nightingale') { - let _chart = chart - .interval() - .adjust('stack') - .position(Y_axis) - .tooltip(`${X_axis}*${Y_axis}`, (name, value) => { - if (plot.show !== 'value') { - value = (value * 100).toFixed(2) + '%' - } - return { - name: name, - value: value - } - }) - - if (plot.splitLine) { - _chart.style({ - lineWidth: plot.splitLine, - stroke: plot.splitColor, - }) - } - if (plot.colors && plot.colors.length > 0) { - let limit = chartColors.length - _chart.color(X_axis, (type) => { - if (colors.has(type)) { - return colors.get(type) - } else { - let _c = chartColors[colorIndex % limit] - colors.set(type, _c) - colorIndex++ - return _c - } - }) - } else { - _chart.color(X_axis) - } - if (plot.label !== 'false') { - if (plot.label === 'inner') { - _chart.label(Y_axis, { - offset: -30, - content: (data) => { - let _val = '' - if (plot.show !== 'value') { - _val = `${(data[Y_axis] * 100).toFixed(2)}%` - } else { - _val = `${data[Y_axis]}` - } - return _val - }, - style: { - textAlign: 'center', - fontSize: 16, - shadowBlur: 2, - shadowColor: 'rgba(0, 0, 0, .45)', - fill: '#fff', - } - }) - } else { - _chart.label(Y_axis, { - layout: { type: plot.label === 'outer' ? 'pie-spider' : 'fixed-overlap' }, - labelHeight: 20, - content: (data) => { - let _val = '' - if (plot.show !== 'value') { - _val = `${(data[Y_axis] * 100).toFixed(2)}%` - } else { - _val = `${data[Y_axis]}` - } - - return `${data[X_axis]}: ${_val}` - }, - labelLine: { - style: { - lineWidth: 0.5, - }, - }, - style: { - fill: color - } - }) + let _chart = chart + .interval() + .adjust('stack') + .position(Y_axis) + .tooltip(`${X_axis}*${Y_axis}`, (name, value) => { + if (plot.show !== 'value') { + value = (value * 100).toFixed(2) + '%' } - } - } else { - chart.axis(false) - let _chart = chart - .interval() - .position(`${X_axis}*${Y_axis}`) + return { + name: name, + value: value + } + }) - if (plot.colors && plot.colors.length > 0) { - let limit = chartColors.length - _chart.color(X_axis, (type) => { - if (colors.has(type)) { - return colors.get(type) - } else { - let _c = chartColors[colorIndex % limit] - colors.set(type, _c) - colorIndex++ - return _c + if (plot.splitLine) { + _chart.style({ + lineWidth: plot.splitLine, + stroke: plot.splitColor, + }) + } + if (plot.colors && plot.colors.length > 0) { + let limit = chartColors.length + _chart.color(X_axis, (type) => { + if (colors.has(type)) { + return colors.get(type) + } else { + let _c = chartColors[colorIndex % limit] + colors.set(type, _c) + colorIndex++ + return _c + } + }) + } else { + _chart.color(X_axis) + } + if (plot.label !== 'false') { + if (plot.label === 'inner') { + _chart.label(Y_axis, { + offset: -30, + content: (data) => { + let _val = '' + if (plot.show !== 'value') { + _val = `${(data[Y_axis] * 100).toFixed(2)}%` + } else { + _val = `${data[Y_axis]}` + } + return _val + }, + style: { + textAlign: 'center', + fontSize: 16, + shadowBlur: 2, + shadowColor: 'rgba(0, 0, 0, .45)', + fill: '#fff', } }) } else { - _chart.color(X_axis) - } - if (plot.label !== 'false') { - let _label = {} - if (plot.label === 'inner') { - _label.offset = -15 - } else { - _label.style = { + _chart.label(Y_axis, { + layout: { type: plot.label === 'outer' ? 'pie-spider' : 'fixed-overlap' }, + labelHeight: 20, + content: (data) => { + let _val = '' + if (plot.show !== 'value') { + _val = `${(data[Y_axis] * 100).toFixed(2)}%` + } else { + _val = `${data[Y_axis]}` + } + + return `${data[X_axis]}: ${_val}` + }, + labelLine: { + style: { + lineWidth: 0.5, + }, + }, + style: { fill: color } - } - - _chart.label(X_axis, _label) - } - if (plot.splitLine) { - _chart.style({ - lineWidth: plot.splitLine, - stroke: plot.splitColor, }) } } @@ -1031,16 +796,9 @@ let menu_id = plot.linkmenu.slice(-1)[0] chart.on('element:dblclick', (ev) => { - let menu = window.GLOB.mkThdMenus.filter(m => m.MenuID === menu_id)[0] || '' + let menu = window.GLOB.mkThdMenus.get(menu_id) || '' - if (!menu) { - notification.warning({ - top: 92, - message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', - duration: 5 - }) - return - } + if (!menu) return try { let data = ev.data.data @@ -1136,7 +894,7 @@ } <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} /> <div className="canvas-wrap"> - {config.plot.download === 'enable' && this.state.chart && !empty ? <DownloadOutlined onClick={this.downloadImage} className="system-color download"/> : null} + {/* {config.plot.download === 'enable' && this.state.chart && !empty ? <DownloadOutlined onClick={this.downloadImage} className="system-color download"/> : null} */} <div className={'canvas' + (empty ? ' empty' : '')} id={this.state.chartId}></div> </div> {empty ? <Empty description={false}/> : null} -- Gitblit v1.8.0