fix(web): fix inconsistency between model recommendation charts and display charts (#1615)

Co-authored-by: hzh97 <2976151305@qq.com>
Co-authored-by: aries_ckt <916701291@qq.com>
This commit is contained in:
chenluli
2024-06-13 19:33:36 +08:00
committed by GitHub
parent 57f7b6d64c
commit 28c67efbea
256 changed files with 144 additions and 62117 deletions

View File

@@ -1,17 +1,17 @@
import { hasSubset, intersects } from '../advisor/utils';
import { processDateEncode } from './util';
import { findOrdinalField, processDateEncode, findNominalField, isUniqueXValue, getLineSize } from './util';
import type { ChartKnowledge, CustomChart, GetChartConfigProps, Specification } from '../types';
import type { Datum } from '@antv/ava';
const getChartSpec = (data: GetChartConfigProps['data'], dataProps: GetChartConfigProps['dataProps']) => {
const field4X = dataProps.find((field) =>
// @ts-ignore
intersects(field.levelOfMeasurements, ['Time', 'Ordinal']),
);
// @ts-ignore
const field4Y = dataProps.filter((field) => hasSubset(field.levelOfMeasurements, ['Interval']));
const field4Nominal = dataProps.find((field) =>
// @ts-ignore
hasSubset(field.levelOfMeasurements, ['Nominal']),
const ordinalField = findOrdinalField(dataProps);
const nominalField = findNominalField(dataProps);
// 放宽折线图的 x 轴条件,优先选择 time ordinal 类型,没有的话使用 nominal 类型
const field4X = ordinalField ?? nominalField;
const field4Y = dataProps.filter((field) => field.levelOfMeasurements && hasSubset(field.levelOfMeasurements, ['Interval']));
const field4Nominal = dataProps.find(
(field) => field.name !== field4X?.name && field.levelOfMeasurements && hasSubset(field.levelOfMeasurements, ['Nominal']),
);
if (!field4X || !field4Y) return null;
@@ -28,6 +28,10 @@ const getChartSpec = (data: GetChartConfigProps['data'], dataProps: GetChartConf
encode: {
x: processDateEncode(field4X.name as string, dataProps),
y: field.name,
size: (datum: Datum) => getLineSize(datum, data, { field4Split: field4Nominal, field4X }),
},
legend: {
size: false,
},
};
if (field4Nominal) {