tablor-core
Version:
Core features for data tables, grids, and advanced search, pagination, and sorting in Angular.
87 lines (86 loc) • 4.31 kB
TypeScript
import { ImmutableAugmentedItem, Item, ItemsAddedPayload, ItemsRemovedPayload, ItemsUpdatedPayload } from '../stores/items-store/interfaces';
import { Subject } from 'rxjs';
import { DraftSortingOptions, ImmutableProcessedSortingOption, ItemsSortedPayload, ProcessedSortingOptions, SortedItemsChangedPayload, SortingOptionsChangedPayload, SortRange } from './interfaces';
import { SearchedItemsChangedPayload } from '../searcher/searcher/interfaces';
import { FieldsStore } from '../stores/fields-store/fields-store';
import { Searcher } from '../searcher/searcher/searcher';
/**
* `Sorter` is responsible for sorting items.
*/
export declare class Sorter<T extends Item<T>> {
protected readonly hasField: FieldsStore<T>['hasField'];
protected readonly getSearchResults: Searcher<T>['getMutableItems'];
protected readonly $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>;
protected readonly $itemsAdded: Subject<ItemsAddedPayload<T>>;
protected readonly $itemsRemoved: Subject<ItemsRemovedPayload<T>>;
protected readonly $itemsUpdated: Subject<ItemsUpdatedPayload<T>>;
protected readonly _options: ProcessedSortingOptions<T, keyof T>[];
protected readonly _sortingRanges: SortRange[][];
readonly $sortingOptionsChanged: Subject<SortingOptionsChangedPayload<T>>;
readonly $itemsSorted: Subject<ItemsSortedPayload<T>>;
readonly $sortedItemsChanged: Subject<SortedItemsChangedPayload<T>>;
constructor(hasField: FieldsStore<T>['hasField'], getSearchResults: Searcher<T>['getMutableItems'], $searchedItemsChanged: Subject<SearchedItemsChangedPayload<T>>, $itemsAdded: Subject<ItemsAddedPayload<T>>, $itemsRemoved: Subject<ItemsRemovedPayload<T>>, $itemsUpdated: Subject<ItemsUpdatedPayload<T>>);
/**
* Returns the current sorting options
*/
getOptions(includingNoneOrdered?: boolean): Readonly<ImmutableProcessedSortingOption<T, keyof T>[]>;
/**
* Returns the keys of all current sorting options
*/
getSortingFieldKeys(includingNoneOrdered?: boolean): (keyof T)[];
/**
* Returns the order of all current sorting options
*/
getSortingFieldOrders(includingNoneOrdered?: boolean): ProcessedSortingOptions<T, keyof T>['order'][];
/**
* Returns the order of a specific sorting option
*/
getSortingFieldOrder(indexOrKey: number | keyof T): ProcessedSortingOptions<T, keyof T>['order'] | undefined;
/**
* Returns whether a field is currently sorted
*/
isFieldSorted(field: keyof T, includingNoneOrdered?: boolean): boolean;
/**
* Returns the current sorted items
*/
getItems(): Readonly<ImmutableAugmentedItem<T>[]>;
/**
* Returns the current sorting ranges
*
* @remarks
* This method is only for testing purposes
*/
getSortingRanges(): Readonly<Readonly<Readonly<SortRange>[]>[]>;
/**
* Clears the sorting
*/
clearSort(): void;
/**
* Sorts the items based on the provided options.
*/
sort<K extends keyof T>(options: DraftSortingOptions<T, K>): void;
/**
* Sorts the items based on the current sorting options.
*/
protected sortItems(optionsIndex: number): void;
/**
* Creates sorting ranges for nested sorting options.
*/
protected makeSortingRangesForNestedSortingOptions(items: ImmutableAugmentedItem<T>[], currCompareFnForNestedMatch: ProcessedSortingOptions<T, keyof T>['customCompareFnForNestedMatch'], optionsIndex?: number): SortRange[];
/**
* Sorts the items based on the given compare function.
*/
protected applySort<K extends keyof T>(items: ImmutableAugmentedItem<T>[], compareFn: ProcessedSortingOptions<T, K>['customCompareFn'], optionsIndex: number): ImmutableAugmentedItem<T>[];
/**
* Transform\\\\s the given draft options into processed options with meta-data.
*/
protected processOptions<K extends keyof T>(options: DraftSortingOptions<T, K>): ProcessedSortingOptions<T, K>;
/**
* Performs the behavior for handling new and previously sorted fields.
*/
protected addNewOptions<K extends keyof T>(options: ProcessedSortingOptions<T, K>): void;
/**
* Sorts the items based on the current sorting options.
*/
protected handleSearchedItemsChange(): void;
}