@visactor/vtable
Version:
canvas table width high performance
193 lines (192 loc) • 5.68 kB
TypeScript
import { SortType } from '..';
import type { BaseTableAPI } from '../base-table';
export declare const registeredAggregators: {
[key: string]: {
new (args: {
key?: string;
field: string | string[];
aggregationFun?: any;
formatFun?: any;
isRecord?: boolean;
needSplitPositiveAndNegative?: boolean;
calculateFun?: any;
dependAggregators?: any;
dependIndicatorKeys?: string[];
}): Aggregator;
};
};
export interface IAggregator {
records: any[];
value: () => any;
push: (record: any) => void;
deleteRecord: (record: any) => void;
updateRecord: (oldRecord: any, newRecord: any) => void;
recalculate: () => any;
formatValue?: (col?: number, row?: number, table?: BaseTableAPI) => any;
formatFun?: () => any;
clearCacheValue: () => any;
reset: () => void;
}
export declare abstract class Aggregator implements IAggregator {
isAggregator?: boolean;
isRecord?: boolean;
records: any[];
type?: string;
key: string;
field?: string | string[];
formatFun?: any;
_formatedValue?: any;
constructor(config: {
key: string;
field: string | string[];
formatFun?: any;
isRecord?: boolean;
});
abstract push(record: any): void;
abstract deleteRecord(record: any): void;
abstract updateRecord(oldRecord: any, newRecord: any): void;
abstract value(): any;
abstract recalculate(): any;
clearCacheValue(): void;
formatValue(col?: number, row?: number, table?: BaseTableAPI): any;
reset(): void;
}
export declare class RecordAggregator extends Aggregator {
type: string;
isRecord?: boolean;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): any[];
reset(): void;
recalculate(): void;
}
export declare class NoneAggregator extends Aggregator {
type: string;
isRecord?: boolean;
field?: string;
fieldValue?: any;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): any;
reset(): void;
recalculate(): void;
}
export declare class CustomAggregator extends Aggregator {
type: string;
isRecord?: boolean;
field?: string;
aggregationFun?: Function;
values: (string | number)[];
fieldValue?: any;
constructor(config: {
key: string;
field: string;
formatFun?: any;
isRecord?: boolean;
aggregationFun?: Function;
});
push(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
deleteRecord(record: any): void;
value(): any;
reset(): void;
recalculate(): void;
}
export declare class RecalculateAggregator extends Aggregator {
type: string;
isRecord?: boolean;
field?: string;
calculateFun: Function;
fieldValue?: any;
dependAggregators: Aggregator[];
dependIndicatorKeys: string[];
constructor(config: {
key: string;
field: string;
formatFun: any;
isRecord: boolean;
calculateFun: Function;
dependAggregators: Aggregator[];
dependIndicatorKeys: string[];
});
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): any;
reset(): void;
recalculate(): void;
}
export declare class SumAggregator extends Aggregator {
type: string;
sum: number;
positiveSum: number;
nagetiveSum: number;
field?: string;
needSplitPositiveAndNegativeForSum?: boolean;
constructor(config: {
key: string;
field: string;
formatFun?: any;
isRecord?: boolean;
needSplitPositiveAndNegative?: boolean;
});
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): number;
positiveValue(): number;
negativeValue(): number;
reset(): void;
recalculate(): void;
}
export declare class CountAggregator extends Aggregator {
type: string;
count: number;
field?: string;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): number;
reset(): void;
recalculate(): void;
}
export declare class AvgAggregator extends Aggregator {
type: string;
sum: number;
count: number;
field?: string;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): number;
reset(): void;
recalculate(): void;
}
export declare class MaxAggregator extends Aggregator {
type: string;
max: number;
field?: string;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): number;
reset(): void;
recalculate(): void;
}
export declare class MinAggregator extends Aggregator {
type: string;
min: number;
field?: string;
push(record: any): void;
deleteRecord(record: any): void;
updateRecord(oldRecord: any, newRecord: any): void;
value(): number;
reset(): void;
recalculate(): void;
}
export declare function indicatorSort(a: any, b: any): any;
export declare function typeSort(a: any, b: any, sortType: SortType): number;
export declare function naturalSort(as: any, bs: any, sortType: SortType): number;
export declare function sortBy(order: string[]): (a: any, b: any, sortType: SortType) => number;