@visactor/vchart
Version:
charts lib based @visactor/VGrammar
123 lines (122 loc) • 7.16 kB
TypeScript
import type { IEvent } from '../../event/interface';
import type { LayoutCallBack } from '../../layout/interface';
import type { IParserOptions } from '@visactor/vdataset';
import type { IComponent, IComponentConstructor } from '../../component/interface';
import type { IMark } from '../../mark/interface';
import type { IModel, IModelConstructor, IModelOption, IModelSpecInfo, IUpdateSpecResult } from '../../model/interface';
import type { IRegion, IRegionConstructor } from '../../region/interface';
import type { ISeries, ISeriesConstructor } from '../../series/interface';
import type { IChartEvaluateOption, IChartLayoutOption, IChartOption, IChartSpecInfo, IChartSpecTransformerOption } from './common';
import type { IBoundsLike, IPadding, Maybe } from '@visactor/vutils';
import type { ICompilable } from '../../compile/interface';
import type { IRegionQuerier, MaybeArray, Datum, IMarkStateSpec, StringOrNumber, IShowTooltipOption, IDataValues, ILayoutRect, IData } from '../../typings';
import type { DataView } from '@visactor/vdataset';
import type { IGlobalScale } from '../../scale/interface';
import type { IMorphConfig } from '../../animation/spec';
import type { IMarkGraphic } from '../../mark/interface/common';
export type DimensionIndexOption = {
filter?: (cmp: IComponent) => boolean;
tooltip?: boolean;
showTooltipOption?: IShowTooltipOption;
crosshair?: boolean;
};
export interface IChartData {
parseData: (dataSpec: IData) => void;
updateData: (dataSpec: IData, fullUp?: boolean, forceMerge?: boolean) => boolean;
getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;
}
export interface IChart extends ICompilable {
padding: IPadding;
readonly type: string;
readonly chartData: IChartData;
readonly transformerConstructor: new (option: IChartSpecTransformerOption) => IChartSpecTransformer;
getSpec: () => any;
setSpec: (s: any) => void;
reDataFlow: () => void;
setCanvasRect: (width: number, height: number) => void;
getCanvasRect: () => ILayoutRect;
getViewRect: () => ILayoutRect;
getOption: () => IChartOption;
getModelOption: () => IModelOption;
getEvent: () => IEvent;
getGlobalScale: () => IGlobalScale;
setLayout: (layout: LayoutCallBack) => void;
layout: () => void;
getLayoutTag: () => boolean;
setLayoutTag: (tag: boolean, morphConfig?: IMorphConfig, renderNextTick?: boolean) => boolean;
resetLayoutItemTag: () => void;
updateData: (id: StringOrNumber, data: unknown, updateGlobalScale?: boolean, options?: IParserOptions) => void;
updateFullData: (data: IDataValues | IDataValues[]) => void;
updateGlobalScaleDomain: () => void;
created: (transformer: Maybe<IChartSpecTransformer>) => void;
init: () => void;
onLayoutStart: (ctx: IChartLayoutOption) => void;
onLayoutEnd: (ctx: IChartLayoutOption) => void;
onEvaluateEnd: (ctx: IChartEvaluateOption) => void;
onResize: (width: number, height: number, reRender: boolean) => void;
onLayout: () => void;
reInit: () => void;
getAllSeries: () => ISeries[];
getRegionsInIndex: (index?: number[]) => IRegion[];
getRegionsInIds: (ids: number[]) => IRegion[];
getAllRegions: () => IRegion[];
getRegionsInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => IRegion[];
getRegionsInQuerier: (query: MaybeArray<IRegionQuerier>) => IRegion[];
getSeriesInIndex: (index?: number[]) => ISeries[];
getSeriesInIds: (ids?: number[]) => ISeries[];
getSeriesInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => ISeries[];
getSeriesInUserId: (userId: StringOrNumber) => ISeries | undefined;
getComponentByIndex: (key: string, index: number) => IComponent | undefined;
getComponentByUserId: (userId: StringOrNumber) => IComponent | undefined;
getComponentsByKey: (key: string) => IComponent[];
getComponentsByType: (type: string) => IComponent[];
getAllComponents: () => IComponent[];
getModelById: (id: number) => IModel | undefined;
getModelByUserId: (userId: StringOrNumber) => IModel | undefined;
getModelInFilter: (filter: string | {
type: string;
index: number;
} | ((model: IModel) => boolean)) => IModel | undefined;
getAllModels: () => IModel[];
getMarkById: (id: number) => IMark | undefined;
getAllMarks: () => IMark[];
getMarkByUserName: (name: string) => IMark[];
updateSpec: (spec: any) => IUpdateSpecResult;
updateState: (state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>, filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean) => void;
setSelected: (datum: MaybeArray<any> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier) => void;
setHovered: (datum: MaybeArray<Datum> | null, filter?: (series: ISeries, mark: IMark) => boolean, region?: IRegionQuerier) => void;
clearState: (state: string) => void;
clearAllStates: () => void;
clearSelected: () => void;
clearHovered: () => void;
updateViewBox: (viewBox: IBoundsLike, reLayout: boolean) => void;
getCanvas: () => HTMLCanvasElement | undefined;
setCurrentTheme: () => void;
getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;
setDimensionIndex: (value: StringOrNumber, opt: DimensionIndexOption) => void;
filterGraphicsByDatum: (datum: MaybeArray<Datum> | null, opt?: {
filter?: (series: ISeries, mark: IMark) => boolean;
region?: IRegionQuerier;
getDatum?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => Datum;
callback?: (el: IMarkGraphic, mark: IMark, s: ISeries, r: IRegion) => void;
regionCallback?: (pickElements: IMarkGraphic[], r: IRegion) => void;
}) => IMarkGraphic[];
}
export interface IChartSpecTransformer {
readonly type: string;
readonly seriesType: string;
initChartSpec: (spec: any) => IChartSpecInfo;
transformSpec: (spec: any) => void;
transformModelSpec: (spec: any) => IChartSpecInfo;
createSpecInfo: (chartSpec: any, transform?: (constructor: IModelConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => void) => IChartSpecInfo;
forEachRegionInSpec: <K>(spec: any, callbackfn: (constructor: IRegionConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];
forEachSeriesInSpec: <K>(spec: any, callbackfn: (constructor: ISeriesConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];
forEachComponentInSpec: <K>(spec: any, callbackfn: (constructor: IComponentConstructor, specInfo: IModelSpecInfo, chartSpecInfo?: IChartSpecInfo) => K, chartSpecInfo?: IChartSpecInfo) => K[];
}
export interface IChartConstructor {
readonly type: string;
readonly seriesType?: string;
readonly series?: string | string[];
readonly transformerConstructor: new (option: IChartSpecTransformerOption) => IChartSpecTransformer;
new (spec: any, options: IChartOption): IChart;
}