From 004176924ce35c96600f5c18e85478944de8bec6 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 14 一月 2023 16:46:50 +0800 Subject: [PATCH] 2023-01-14 --- src/tabviews/custom/components/chart/antv-pie/index.jsx | 49 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/tabviews/custom/components/chart/antv-pie/index.jsx b/src/tabviews/custom/components/chart/antv-pie/index.jsx index f6893b8..02ba1cc 100644 --- a/src/tabviews/custom/components/chart/antv-pie/index.jsx +++ b/src/tabviews/custom/components/chart/antv-pie/index.jsx @@ -32,7 +32,7 @@ title: '', // 缁勪欢鏍囬 sync: false, // 鏄惁缁熶竴璇锋眰鏁版嵁 plot: null, // 鍥捐〃璁剧疆 - data: null, // 鏁版嵁 + data: [], // 鏁版嵁 search: null, // 鎼滅储鏉′欢 chart: null } @@ -83,7 +83,7 @@ this.setState({ config: _config, - data: _data, + data: _data || [], BID: BID || '', arr_field: _config.columns.map(col => col.field).join(','), plot: _config.plot, @@ -113,9 +113,11 @@ _data = nextProps.data[config.dataName] || [] } - this.setState({sync: false, data: _data}, () => { + this.setState({sync: false, data: _data}) + + if (!is(fromJS(this.state.data), fromJS(_data))) { this.handleData() - }) + } } else if (config.setting.useMSearch && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) { this.setState({}, () => { this.loadData() @@ -128,7 +130,7 @@ } componentDidMount () { - const { config } = this.state + const { config, sync } = this.state MKEmitter.addListener('reloadData', this.reloadData) MKEmitter.addListener('resetSelectLine', this.resetParentParam) @@ -137,6 +139,16 @@ this.timer = new TimerTask() this.timer.init(config.uuid, config.timer, config.timerRepeats, () => { this.loadData(true) + }) + } + + if (config.$cache && (config.setting.sync !== 'true' || sync)) { + Api.getLCacheConfig(config.uuid).then(res => { + if (!res) return + + this.setState({data: res}, () => { + this.handleData() + }) }) } } @@ -174,12 +186,18 @@ } handleData = () => { - const { plot, chartId } = this.state - - let _element = document.getElementById(chartId) + let _element = document.getElementById(this.state.chartId) if (_element) { _element.innerHTML = '' } + + setTimeout(() => { + this.viewrender() + }, 100) + } + + viewrender = () => { + const { plot } = this.state if (plot.shape === 'nest') { this.nestrender() @@ -227,19 +245,18 @@ let result = await Api.genericInterface(param) if (result.status) { - let reset = true - - if (hastimer && is(fromJS(result.data), fromJS(this.state.data))) { - reset = false + if (config.$cache) { + Api.writeCacheConfig(config.uuid, result.data || '') } this.setState({ - data: result.data, + data: result.data || [], loading: false - }, () => { - if (!reset) return - this.handleData() }) + + if (!is(fromJS(this.state.data), fromJS(result.data || []))) { + this.handleData() + } } else { this.setState({ loading: false -- Gitblit v1.8.0