mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-29 06:47:30 +00:00
Co-authored-by: Fangyin Cheng <staneyffer@gmail.com> Co-authored-by: 谨欣 <echo.cmy@antgroup.com> Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com> Co-authored-by: yanzhiyong <932374019@qq.com>
69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { hasSubset } from '../advisor/utils';
|
|
|
|
import type { ChartKnowledge, CustomChart, GetChartConfigProps, Specification } from '../types';
|
|
import { findNominalField, findOrdinalField } from './util';
|
|
|
|
const getChartSpec = (data: GetChartConfigProps['data'], dataProps: GetChartConfigProps['dataProps']) => {
|
|
try {
|
|
const field4Y = dataProps?.filter(field => hasSubset(field.levelOfMeasurements, ['Interval']));
|
|
const nominalField = findNominalField(dataProps);
|
|
const ordinalField = findOrdinalField(dataProps);
|
|
const field4X = nominalField ?? ordinalField;
|
|
if (!field4X || !field4Y) return null;
|
|
|
|
const spec: Specification = {
|
|
type: 'view',
|
|
data,
|
|
children: [],
|
|
};
|
|
|
|
field4Y?.forEach(field => {
|
|
const singleLine: Specification = {
|
|
type: 'interval',
|
|
encode: {
|
|
x: field4X.name,
|
|
y: field.name,
|
|
color: () => field.name,
|
|
series: () => field.name,
|
|
},
|
|
};
|
|
spec.children.push(singleLine);
|
|
});
|
|
return spec;
|
|
} catch (err) {
|
|
console.log(err);
|
|
return null;
|
|
}
|
|
};
|
|
|
|
const ckb: ChartKnowledge = {
|
|
id: 'multi_measure_column_chart',
|
|
name: 'multi_measure_column_chart',
|
|
alias: ['multi_measure_column_chart'],
|
|
family: ['ColumnCharts'],
|
|
def: 'multi_measure_column_chart uses lines with segments to show changes in data in a ordinal dimension',
|
|
purpose: ['Comparison', 'Distribution'],
|
|
coord: ['Cartesian2D'],
|
|
category: ['Statistic'],
|
|
shape: ['Lines'],
|
|
dataPres: [
|
|
{ minQty: 1, maxQty: '*', fieldConditions: ['Interval'] },
|
|
{ minQty: 1, maxQty: 1, fieldConditions: ['Nominal'] },
|
|
],
|
|
channel: ['Color', 'Direction', 'Position'],
|
|
recRate: 'Recommended',
|
|
toSpec: getChartSpec,
|
|
};
|
|
|
|
/* 订制一个图表需要的所有参数 */
|
|
export const multi_measure_column_chart: CustomChart = {
|
|
/* 图表唯一 Id */
|
|
chartType: 'multi_measure_column_chart',
|
|
/* 图表知识 */
|
|
chartKnowledge: ckb as ChartKnowledge,
|
|
/** 图表中文名 */
|
|
chineseName: '折线图',
|
|
};
|
|
|
|
export default multi_measure_column_chart;
|