todo: 双线图: KPI
parent
e3cbbee6b7
commit
1c78a0c64f
@ -0,0 +1,71 @@
|
|||||||
|
import { observer } from 'mobx-react';
|
||||||
|
import { DualAxes } from '@ant-design/plots';
|
||||||
|
import { merge, pick, cloneDeep } from '../utils/commons';
|
||||||
|
import { dataFieldAlias } from '../libs/ht';
|
||||||
|
|
||||||
|
const uniqueByKey = (array, key, pickLast) => {
|
||||||
|
const seen = new Map();
|
||||||
|
const isPickLast = pickLast === true;
|
||||||
|
|
||||||
|
return array.filter(item => {
|
||||||
|
const k = item[key];
|
||||||
|
const storedItem = seen.get(k);
|
||||||
|
|
||||||
|
if(storedItem) {
|
||||||
|
if(isPickLast) {
|
||||||
|
seen.set(k, item); // update with last item
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
seen.set(k, item);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default observer((props) => {
|
||||||
|
const { config, dataSource, ...extProps } = props;
|
||||||
|
const kpiKey = dataFieldAlias[config.yField]?.nestkey?.v;
|
||||||
|
const _data = uniqueByKey(dataSource, config.xField, true); // debug:
|
||||||
|
const mergeConfig = merge(
|
||||||
|
// color: ['#1979C9', '#F4664A', '#FAAD14'],
|
||||||
|
|
||||||
|
// padding: 'auto',
|
||||||
|
// xField: 'groupDateVal',
|
||||||
|
// yField: 'SumML',
|
||||||
|
// seriesField: 'groupsLabel',
|
||||||
|
{
|
||||||
|
...pick(config, ['padding', 'xField', 'seriesField']),
|
||||||
|
yField: [config.yField, kpiKey],
|
||||||
|
legend: false,
|
||||||
|
xAxis: {
|
||||||
|
type: 'cat',
|
||||||
|
},
|
||||||
|
meta: { ...cloneDeep(dataFieldAlias) },
|
||||||
|
geometryOptions: [
|
||||||
|
{
|
||||||
|
geometry: 'line',
|
||||||
|
smooth: true,
|
||||||
|
point: {
|
||||||
|
size: 4,
|
||||||
|
shape: 'cicle',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
geometry: 'line',
|
||||||
|
smooth: true,
|
||||||
|
point: {
|
||||||
|
size: 4,
|
||||||
|
shape: 'cicle',
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
lineWidth: 1,
|
||||||
|
lineDash: [5, 5],
|
||||||
|
},
|
||||||
|
color: '#F4664A',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return <DualAxes {...mergeConfig} data={[_data, _data]} />;
|
||||||
|
});
|
Loading…
Reference in New Issue