armisa-models
Version:
models of armisa!
36 lines (31 loc) • 1.25 kB
text/typescript
export type IValueOfListFilterType<T> = {
value: T;
};
export type IFilterMethodType = | 'equal' | 'from' | 'to' | 'between' | 'list' | 'contain' | undefined;
export interface IFilterBase<T, L> {
key: string,
method: IFilterMethodType;
setMethodValue: (value: number | undefined) => void;
getMethodValue: () => | 0 | 1 | 2 | 3 | 4 | undefined;
isFiltered: () => boolean;
clearFilter: () => void;
keyOfMethod: string;
list: { value: L }[] | undefined;
itemOfListValue?: T;
multiItem?: IValueOfListFilterType<L>;
multiItemTimer?: NodeJS.Timeout;
}
export abstract class FilterBase<T, L, FILTERTYPE> implements IFilterBase<T, L> {
abstract key: string;
abstract method: IFilterMethodType;
abstract setMethodValue: (value: number | undefined) => void;
abstract getMethodValue: () => | 0 | 1 | 2 | 3 | 4 | undefined;
abstract getFilter: () => FILTERTYPE | undefined;
abstract isFiltered: () => boolean;
abstract clearFilter: () => void;
abstract keyOfMethod: string;
list: { value: L }[] | undefined;
abstract itemOfListValue?: T;
abstract multiItem?: IValueOfListFilterType<L>;
abstract multiItemTimer?: NodeJS.Timeout;
}