@visactor/vchart
Version:
charts lib based @visactor/VGrammar
74 lines (73 loc) • 2.35 kB
TypeScript
import type { BaseEventParams } from '../../event/interface';
import type { IOrientType } from '../../typings';
import type { IDelayType } from '../../typings/event';
import type { IComponentSpec } from '../base/interface';
import type { IComponent } from '../interface';
export interface IDataFilterComponentSpec extends Omit<IComponentSpec, 'width' | 'height'> {
visible?: boolean;
orient?: IOrientType;
width?: 'auto' | number;
height?: 'auto' | number;
field?: string;
axisId?: string;
axisIndex?: number;
regionIndex?: number | number[];
start?: number;
end?: number;
startValue?: number | string;
endValue?: number | string;
valueField?: string;
rangeMode?: [string, string];
autoIndent?: boolean;
auto?: boolean;
zoomLock?: boolean;
minSpan?: number;
maxSpan?: number;
minValueSpan?: number;
maxValueSpan?: number;
delayType?: IDelayType;
delayTime?: number;
roamZoom?: IRoamZoomSpec | boolean;
roamDrag?: IRoamDragSpec | boolean;
roamScroll?: IRoamScrollSpec | boolean;
realTime?: boolean;
customDomain?: any[];
updateDataAfterChange?: (start: number, end: number, startValue: any, endValue: any) => void;
}
export interface IRoamDragSpec extends IRoamSpec {
reverse?: boolean;
filter?: (delta: [number, number], e?: BaseEventParams['event']) => boolean;
}
export interface IRoamScrollSpec extends IRoamSpec {
reverse?: boolean;
filter?: (params: {
scrollX: number;
scrollY: number;
}, e?: BaseEventParams['event']) => boolean;
}
export interface IRoamZoomSpec extends IRoamSpec {
focus?: boolean;
filter?: (params: {
zoomDelta: number;
zoomX?: number;
zoomY?: number;
}, e?: BaseEventParams['event']) => boolean;
}
export interface IRoamSpec {
enable?: boolean;
rate?: number;
}
export interface IDataFilterComponent extends IComponent {
setStartAndEnd: (start: number | string, end: number | string, rangeMode: ['percent' | 'value', 'percent' | 'value']) => void;
enableInteraction: () => void;
disableInteraction: () => void;
zoomIn: (location?: {
x: number;
y: number;
}) => void;
zoomOut: (location?: {
x: number;
y: number;
}) => void;
}
export type IFilterMode = 'filter' | 'axis';