mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-09 21:08:59 +00:00
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:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user