2020-08-04 22:52:57 +02:00
|
|
|
import {
|
|
|
|
IBarControllerDatasetOptions,
|
|
|
|
ILineControllerDatasetOptions,
|
|
|
|
ILineControllerChartOptions,
|
|
|
|
IScatterDataPoint,
|
|
|
|
IScatterControllerDatasetOptions,
|
|
|
|
IScatterControllerChartOptions,
|
|
|
|
IBubbleControllerDatasetOptions,
|
|
|
|
IBubbleDataPoint,
|
|
|
|
IDoughnutControllerChartOptions,
|
|
|
|
IDoughnutControllerDatasetOptions,
|
|
|
|
IDoughnutDataPoint,
|
|
|
|
IPieControllerChartOptions,
|
|
|
|
IPieControllerDatasetOptions,
|
|
|
|
IPieDataPoint,
|
|
|
|
IControllerDatasetOptions,
|
|
|
|
IBarControllerChartOptions,
|
|
|
|
IPolarAreaControllerChartOptions,
|
|
|
|
IPolarAreaControllerDatasetOptions,
|
|
|
|
IRadarControllerChartOptions,
|
|
|
|
IRadarControllerDatasetOptions,
|
|
|
|
} from './controllers';
|
|
|
|
import { ICoreChartOptions } from './core/interfaces';
|
|
|
|
import { IElementChartOptions } from './elements';
|
|
|
|
import {
|
|
|
|
ITooltipChartOptions,
|
|
|
|
IFillerControllerDatasetOptions,
|
|
|
|
ILegendChartOptions,
|
|
|
|
ITitleChartOptions,
|
|
|
|
} from './plugins';
|
2020-09-09 03:27:08 +02:00
|
|
|
import { IChartAnimationOptions, IParsingOptions, IPlugin } from './core';
|
2020-08-04 22:52:57 +02:00
|
|
|
import { IScaleChartOptions } from './scales';
|
|
|
|
|
|
|
|
export type DeepPartial<T> = T extends {}
|
|
|
|
? {
|
|
|
|
[K in keyof T]?: DeepPartial<T[K]>;
|
|
|
|
}
|
|
|
|
: T;
|
|
|
|
|
2020-09-09 03:27:08 +02:00
|
|
|
export enum ChartTypeEnum {
|
|
|
|
bar = 'bar',
|
|
|
|
bubble = 'bubble',
|
|
|
|
doughnut = 'doughnut',
|
|
|
|
line = 'line',
|
|
|
|
pie = 'pie',
|
|
|
|
polarArea = 'polarArea',
|
|
|
|
radar = 'radar',
|
|
|
|
scatter = 'scatter',
|
|
|
|
}
|
|
|
|
|
|
|
|
export type IChartType = keyof typeof ChartTypeEnum;
|
|
|
|
|
2020-09-12 02:18:21 +02:00
|
|
|
export interface IChartDatasetProperties<TYPE extends IChartType, DATA extends unknown[]> {
|
|
|
|
type?: TYPE;
|
|
|
|
data: DATA;
|
2020-08-04 22:52:57 +02:00
|
|
|
}
|
|
|
|
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IChartDatasetBase<TYPE extends IChartType, DATA extends unknown[], O> = DeepPartial<
|
|
|
|
IControllerDatasetOptions & IParsingOptions & O
|
|
|
|
> & IChartDatasetProperties<TYPE, DATA>;
|
|
|
|
|
|
|
|
export type IBarControllerDataset<DATA extends unknown[] = number[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'bar',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IBarControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type ILineControllerDataset<DATA extends unknown[] = IScatterDataPoint[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'line',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
ILineControllerDatasetOptions & IFillerControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IScatterControllerDataset<DATA extends unknown[] = IScatterDataPoint[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'scatter',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IScatterControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IBubbleControllerDataset<DATA extends unknown[] = IBubbleDataPoint[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'bubble',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IBubbleControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IPieControllerDataset<DATA extends unknown[] = IPieDataPoint[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'pie',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IPieControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IDoughnutControllerDataset<DATA extends unknown[] = IDoughnutDataPoint[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'doughnut',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IDoughnutControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IPolarAreaControllerDataset<DATA extends unknown[] = number[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'polarArea',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IPolarAreaControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
2020-09-12 02:18:21 +02:00
|
|
|
export type IRadarControllerDataset<DATA extends unknown[] = number[]> = IChartDatasetBase<
|
2020-08-04 22:52:57 +02:00
|
|
|
'radar',
|
2020-09-12 02:18:21 +02:00
|
|
|
DATA,
|
|
|
|
IRadarControllerDatasetOptions
|
2020-08-04 22:52:57 +02:00
|
|
|
>;
|
|
|
|
|
2020-09-12 02:18:21 +02:00
|
|
|
export interface IChartDatasetRegistry<DATA extends unknown[]> {
|
|
|
|
bar: IBarControllerDataset<DATA>;
|
|
|
|
line: ILineControllerDataset<DATA>;
|
|
|
|
scatter: IScatterControllerDataset<DATA>;
|
|
|
|
bubble: IBubbleControllerDataset<DATA>;
|
|
|
|
pie: IPieControllerDataset<DATA>;
|
|
|
|
doughnut: IDoughnutControllerDataset<DATA>;
|
|
|
|
polarArea: IPolarAreaControllerDataset<DATA>;
|
|
|
|
radar: IRadarControllerDataset<DATA>;
|
|
|
|
}
|
|
|
|
|
|
|
|
export type IChartDataset<T extends unknown[] = unknown[]> = IChartDatasetRegistry<T>[keyof IChartDatasetRegistry<T>]
|
|
|
|
|
|
|
|
export interface IChartData<
|
|
|
|
TYPE extends IChartType = IChartType,
|
|
|
|
DATA extends unknown[] = unknown[],
|
|
|
|
LABEL = string
|
|
|
|
> {
|
|
|
|
labels: LABEL[];
|
|
|
|
// IChartDatasetProperties is repeated here in order to help the compiler to infer the generic types
|
|
|
|
datasets: (IChartDatasetProperties<TYPE, DATA> & IChartDatasetRegistry<DATA>[TYPE])[];
|
|
|
|
}
|
|
|
|
|
|
|
|
export type IChartOptionsBase<O> = DeepPartial<
|
|
|
|
ICoreChartOptions &
|
|
|
|
IParsingOptions &
|
|
|
|
ITooltipChartOptions &
|
|
|
|
ILegendChartOptions &
|
|
|
|
ITitleChartOptions &
|
|
|
|
IChartAnimationOptions &
|
|
|
|
IScaleChartOptions &
|
|
|
|
IElementChartOptions &
|
|
|
|
O
|
|
|
|
>;
|
|
|
|
|
|
|
|
export interface IChartOptionsRegistry {
|
|
|
|
bar: IChartOptionsBase<IBarControllerChartOptions>;
|
|
|
|
line: IChartOptionsBase<ILineControllerChartOptions>;
|
|
|
|
scatter: IChartOptionsBase<IScatterControllerChartOptions>;
|
|
|
|
bubble: IChartOptionsBase<{}>;
|
|
|
|
pie: IChartOptionsBase<IPieControllerChartOptions>;
|
|
|
|
doughnut: IChartOptionsBase<IDoughnutControllerChartOptions>;
|
|
|
|
polarArea: IChartOptionsBase<IPolarAreaControllerChartOptions>;
|
|
|
|
radar: IChartOptionsBase<IRadarControllerChartOptions>;
|
|
|
|
}
|
|
|
|
|
|
|
|
export type IChartOptions = IChartOptionsRegistry[keyof IChartOptionsRegistry]
|
|
|
|
|
|
|
|
export interface IChartConfiguration<
|
|
|
|
TYPE extends IChartType = IChartType,
|
|
|
|
DATA extends unknown[] = unknown[],
|
|
|
|
LABEL = string
|
|
|
|
> {
|
|
|
|
type: TYPE;
|
|
|
|
data: IChartData<TYPE, DATA, LABEL>;
|
|
|
|
options?: IChartOptionsRegistry[TYPE];
|
|
|
|
plugins?: IPlugin[];
|
|
|
|
}
|