|
|
|
@ -7,7 +7,8 @@ import DateGroupRadio from '../components/DateGroupRadio';
|
|
|
|
|
import { cloneDeep, groupBy, sortBy } from '../utils/commons';
|
|
|
|
|
|
|
|
|
|
export default observer((props) => {
|
|
|
|
|
const { dataSource: rawData, showAVG, showSUM, loading, solidLineTime, solidLineDash, isCompareLine, ...config } = props;
|
|
|
|
|
const { dataSource: rawData, showAVG, showCompareSum, loading, solidLineTime,
|
|
|
|
|
solidLineDash, isCompareLine,solidLineCompareTime, ...config } = props;
|
|
|
|
|
const { xField, yField, yFieldAlias, seriesField } = config;
|
|
|
|
|
|
|
|
|
|
const [dataBeforeXChange, setDataBeforeXChange] = useState([]);
|
|
|
|
@ -25,14 +26,15 @@ export default observer((props) => {
|
|
|
|
|
// xAxis: {
|
|
|
|
|
// type: 'timeCat',
|
|
|
|
|
// },
|
|
|
|
|
color: isCompareLine?['#17f485', '#1890ff','#17f485', '#1890ff',"#181414","#181414"]:undefined,
|
|
|
|
|
point: {
|
|
|
|
|
size: 4,
|
|
|
|
|
shape: "cicle",
|
|
|
|
|
},
|
|
|
|
|
lineStyle: (datum) => {
|
|
|
|
|
return {
|
|
|
|
|
stroke: isCompareLine?datum._ylabel.includes(solidLineTime) ? 'red' : 'blue':undefined, // 设置颜色
|
|
|
|
|
lineDash: isCompareLine?datum._ylabel.includes(solidLineDash) ? [4, 4] : undefined:undefined, // 设置虚线
|
|
|
|
|
stroke: isCompareLine?datum._ylabel.includes("总计")?"#181414":datum._ylabel.includes(solidLineDash) ? '#1890ff':'#17f485' : undefined, // 设置颜色
|
|
|
|
|
lineDash: isCompareLine?datum._ylabel.includes(solidLineTime) ? undefined:[4, 4] : undefined, // 设置虚线
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
yAxis: {
|
|
|
|
@ -101,7 +103,35 @@ export default observer((props) => {
|
|
|
|
|
// ];
|
|
|
|
|
// setLineConfig({ ...lineConfig, yField, xField, annotations: avgLine });
|
|
|
|
|
setLineConfig({ ...lineConfig, yField, xField,});
|
|
|
|
|
if (showSUM) {
|
|
|
|
|
if (showCompareSum) {
|
|
|
|
|
const _sumLine = Object.keys(byDays).reduce((r, _d) => {
|
|
|
|
|
const summaryVal = byDays[_d].reduce((rows, row) =>
|
|
|
|
|
{
|
|
|
|
|
if (row[seriesField].includes(solidLineTime)){
|
|
|
|
|
return rows + row[yField];
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
, 0);
|
|
|
|
|
const summaryCompareVal = byDays[_d].reduce((rows, row) =>
|
|
|
|
|
{
|
|
|
|
|
if (row[seriesField].includes(solidLineCompareTime)){
|
|
|
|
|
return rows + row[yField];
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
, 0);
|
|
|
|
|
r.push({ ...byDays[_d][0], [yField]: summaryVal, [seriesField]: solidLineTime+'总计' });
|
|
|
|
|
r.push({ ...byDays[_d][0], [yField]: summaryCompareVal, [seriesField]: solidLineCompareTime+'总计' });
|
|
|
|
|
return r;
|
|
|
|
|
}, []);
|
|
|
|
|
setSumSeries(_sumLine);
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
const _sumLine = Object.keys(byDays).reduce((r, _d) => {
|
|
|
|
|
const summaryVal = byDays[_d].reduce((rows, row) => rows + row[yField], 0);
|
|
|
|
|
r.push({ ...byDays[_d][0], [yField]: summaryVal, [seriesField]: '总计' });
|
|
|
|
@ -110,9 +140,6 @@ export default observer((props) => {
|
|
|
|
|
// console.log(_sumLine.map((ele) => ele[yField]));
|
|
|
|
|
setSumSeries(_sumLine);
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
setSumSeries([]);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const onChangeXDateFieldGroup = (value, data, avg1) => {
|
|
|
|
@ -125,8 +152,35 @@ export default observer((props) => {
|
|
|
|
|
}, {});
|
|
|
|
|
// console.log(groupByDate);
|
|
|
|
|
const _data = Object.keys(groupByDate).reduce((r, _d) => {
|
|
|
|
|
const summaryVal = groupByDate[_d].reduce((rows, row) => rows + row[yField], 0);
|
|
|
|
|
_sumLine.push({ ...groupByDate[_d][0], [yField]: summaryVal, [seriesField]: '总计' });
|
|
|
|
|
if (showCompareSum) {
|
|
|
|
|
const summaryVal = groupByDate[_d].reduce((rows, row) =>
|
|
|
|
|
{
|
|
|
|
|
if (row[seriesField].includes(solidLineTime)){
|
|
|
|
|
return rows + row[yField];
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
, 0);
|
|
|
|
|
const summaryCompareVal = groupByDate[_d].reduce((rows, row) =>
|
|
|
|
|
{
|
|
|
|
|
if (row[seriesField].includes(solidLineCompareTime)){
|
|
|
|
|
return rows + row[yField];
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
, 0);
|
|
|
|
|
_sumLine.push({ ...groupByDate[_d][0], [yField]: summaryVal, [seriesField]: solidLineTime+'总计' });
|
|
|
|
|
_sumLine.push({ ...groupByDate[_d][0], [yField]: summaryCompareVal, [seriesField]: solidLineCompareTime+'总计' });
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
const summaryVal = groupByDate[_d].reduce((rows, row) => rows + row[yField], 0);
|
|
|
|
|
_sumLine.push({ ...groupByDate[_d][0], [yField]: summaryVal, [seriesField]: '总计' });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const xAxisGroup = groupByDate[_d].reduce((a, v) => {
|
|
|
|
|
(a[v[seriesField]] || (a[v[seriesField]] = [])).push(v);
|
|
|
|
@ -145,23 +199,19 @@ export default observer((props) => {
|
|
|
|
|
// console.log('date source=====', _data);
|
|
|
|
|
setLineChartX(value);
|
|
|
|
|
setDataSource(_data);
|
|
|
|
|
if (showSUM) {
|
|
|
|
|
setSumSeries(_sumLine);
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
setSumSeries([]);
|
|
|
|
|
}
|
|
|
|
|
setSumSeries(_sumLine);
|
|
|
|
|
|
|
|
|
|
// setAvgLine1(avg1);
|
|
|
|
|
const avg1Int = Math.round(avg1);
|
|
|
|
|
const mergedConfig = { ...lineConfig,
|
|
|
|
|
annotations: [
|
|
|
|
|
{ type: 'text', position: ['start', avg1Int], content: avg1Int, offsetX: -15, style: { fill: '#F4664A', textBaseline: 'bottom' } },
|
|
|
|
|
{ type: 'line', start: [-10, avg1Int], end: ['max', avg1Int], style: { stroke: '#F4664A', lineDash: [2, 2] } },
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
// const avg1Int = Math.round(avg1);
|
|
|
|
|
// const mergedConfig = { ...lineConfig,
|
|
|
|
|
// annotations: [
|
|
|
|
|
// { type: 'text', position: ['start', avg1Int], content: avg1Int, offsetX: -15, style: { fill: '#F4664A', textBaseline: 'bottom' } },
|
|
|
|
|
// { type: 'line', start: [-10, avg1Int], end: ['max', avg1Int], style: { stroke: '#F4664A', lineDash: [2, 2] } },
|
|
|
|
|
// ],
|
|
|
|
|
// };
|
|
|
|
|
// console.log(mergedConfig);
|
|
|
|
|
setLineConfig(mergedConfig);
|
|
|
|
|
// setLineConfig(mergedConfig);
|
|
|
|
|
setLineConfig(cloneDeep(line_config));
|
|
|
|
|
};
|
|
|
|
|
return (
|
|
|
|
|
<section>
|
|
|
|
|