@visactor/vchart
Version:
charts lib based @visactor/VGrammar
67 lines (66 loc) • 2.52 kB
TypeScript
import type { IMark, IGroupMark } from '../mark/interface';
import type { ILayoutModel, IModelConstructor, IModelOption, IModelSpecInfo } from '../model/interface';
import type { ISeries, SeriesType } from '../series/interface';
import type { CoordinateType } from '../typings/coordinate';
import type { IProjectionSpec } from '../component/geo/interface';
import type { ConvertToMarkStyleSpec, IRectMarkSpec } from '../typings/visual';
import type { StringOrNumber } from '../typings';
import type { ILayoutItemSpec } from '../layout/interface';
export interface IRegion extends ILayoutModel {
getStackInverse: () => boolean;
getStackSort: () => boolean;
getMaxWidth: () => number | undefined;
setMaxWidth: (value: number) => void;
getMaxHeight: () => number | undefined;
setMaxHeight: (value: number) => void;
addSeries: (series: ISeries) => void;
removeSeries: (series: ISeries) => void;
getSeries: (opt?: ISeriesFilter) => ISeries[];
getSeriesInName: (name: string) => ISeries;
getSeriesInUserId: (userId: string) => ISeries;
getSeriesInId: (id: number) => ISeries;
getSeriesInType: (type: SeriesType) => ISeries[];
getSeriesInCoordinateType: (type: CoordinateType) => ISeries[];
getSeriesInDataName: (dataName: string) => ISeries[];
getMarks: () => IMark[];
getGroupMark: () => IGroupMark;
getInteractionMark: () => IGroupMark;
getSpecInfo: () => IRegionSpecInfo;
}
export type ISeriesFilter = {
name?: string;
userId?: StringOrNumber | StringOrNumber[];
specIndex?: number | number[];
id?: number;
type?: string;
coordinateType?: CoordinateType;
dataName?: string;
};
export interface IRegionConstructor extends IModelConstructor {
new (spec: IRegionSpec, ctx: IModelOption): IRegion;
}
export interface IRegionSpec extends ILayoutItemSpec {
id?: StringOrNumber;
coordinate?: CoordinateType;
style?: ConvertToMarkStyleSpec<IRectMarkSpec>;
stackInverse?: boolean;
stackSort?: boolean;
}
export interface IGeoRegionSpec extends IRegionSpec {
coordinate?: 'geo';
roam?: boolean | {
blank?: boolean;
};
longitudeField?: string;
latitudeField?: string;
projection?: Partial<Omit<IProjectionSpec, 'name'>>;
zoomLimit?: {
min?: number;
max?: number;
};
}
export type RegionSpec = IRegionSpec | IGeoRegionSpec;
export interface IRegionSpecInfo<T extends RegionSpec = IRegionSpec> extends IModelSpecInfo {
type: 'region';
spec: T;
}