import { Iterable } from 'ix'; import { Observable } from 'rxjs'; import { ObjectComparer, SortDirection } from '../../../Utils/Compare'; import { Command, IterableLike, ObservableLike, ObservableOrValue, ReadOnlyProperty } from '../../../WebRx'; import { HandlerRoutingStateChanged, RoutingStateHandler } from '../../React'; import { ListItemsViewModel } from '../ListItems/ListItemsViewModel'; import { PageRequest, PagerRoutingState, PagerViewModel } from '../Pager/PagerViewModel'; export interface SortArgs { field: string; direction: SortDirection; } export interface DataSourceRequest { page?: PageRequest; sort?: SortArgs; context?: TContext; } export interface DataSourceResponse { items: IterableLike; count: number; } export interface DataGridRoutingState { pager?: PagerRoutingState; sorting?: SortArgs; } export declare class DataGridViewModel extends ListItemsViewModel implements RoutingStateHandler { static displayName: string; static DefaultRateLimit: number; protected readonly processRequests: Command; protected readonly comparer: ObjectComparer; readonly pager: PagerViewModel | null; readonly isLoading: ReadOnlyProperty; readonly requests: ReadOnlyProperty | undefined>; readonly responses: ReadOnlyProperty | undefined>; readonly projectedSource: ReadOnlyProperty>; readonly projectedCount: ReadOnlyProperty; readonly sorting: ReadOnlyProperty; readonly sort: Command; readonly toggleSortDirection: Command; /** * @param source data source. * @param pager pager. if omitted a default pager will be created. use null for no pager. * @param context request context included in projection requests. if included requests are bound to context events. * @param comparer custom object comparer. if omitted a default object comparer will be used. */ constructor(source: ObservableLike>, pager?: PagerViewModel | null, context?: ObservableLike, comparer?: string | ObjectComparer, rateLimit?: number); isRoutingStateHandler(): boolean; createRoutingState(changed?: HandlerRoutingStateChanged): DataGridRoutingState; applyRoutingState(state: DataGridRoutingState): void; getItemsSourceProperty(): ReadOnlyProperty>; protected isSortChanged(sort: SortArgs | undefined): boolean; protected getReverseSortDirection(field: string, request: DataSourceRequest | undefined): SortDirection; protected getRequest(source: IterableLike, page: PageRequest | undefined, sort: SortArgs | undefined, context: TRequestContext | undefined): DataSourceRequest | undefined; protected getRequests(context?: ObservableLike): Observable | undefined>; protected getResponse(request: DataSourceRequest | undefined): ObservableOrValue | undefined>; protected getResponseFromItems(items: Iterable, request: DataSourceRequest): ObservableOrValue | undefined>; protected getResponses(requests?: ObservableLike | undefined>, rateLimit?: number): Observable>; }