import { TMaybePromise } from '../../utils'; import { Column } from '../column'; /** * Represents the sort direction of a column, eg ascending or descending */ export declare const enum ESortDir { Asc = "asc", Desc = "desc" } export interface IDisplayHandlerResult { /** The actual rows to display */ rows: TRow[]; /** The total number of rows in the table. It counts also items on other pages. The pages in the pagination component are calculated using this value. */ totalRowCount: number; } export interface IDisplayHandlerParam { /** The original [[Datatable.data]] property of the datatable. */ source: TRow[] | TSource; /** The return value of [[Handler.filterHandler]]. */ filtered: TRow[] | TFiltered; /** The return value of [[Handler.sortHandler]]. */ sorted: TRow[] | TSorted; /** The return value of [[Handler.paginateHandler]]. */ paged: TRow[] | TPaged; } export declare type TFilterHandler = (data: TIn, filters: string | string[], columns: Array>) => TMaybePromise; export declare type TSortHandler = (filteredData: TIn, sortColumn: Column | null, sortDir: ESortDir | null) => TMaybePromise; export declare type TPaginateHandler = (sortedData: TIn, perPage: number | null, pageNumber: number) => TMaybePromise; export declare type TDisplayHandler = (operationResults: IDisplayHandlerParam) => TMaybePromise>; /** * This interface exposes methods used to manipulate table data, like filtering, sorting, or paginating. * You can implement this interface, or override [[DefaultHandler]]'s instance's members to customize the behavior of your [[VueDatatable]]. * Handlers are called in this order: filter, sort, paginate, display. * * @tutorial ajax-handler */ export interface IHandler { /** Filter the provided rows, checking if at least a cell contains one of the specified filters. It supports promises. Defaults to [[Handler.defaultFilterHandler]]. */ filterHandler: TFilterHandler; /** Sort the given rows depending on a specific column & sort order. It suports promises. Defaults to [[Handler.defaultSortHandler]]. */ sortHandler: TSortHandler; /** Split the rows list to display the requested page index. It supports promises. Defaults to [[Handler.defaultPaginateHandler]]. */ paginateHandler: TPaginateHandler; /** Handler to post-process the paginated data, and determine which data to actually display. It supports promises. Defaults to [[Handler.defaultDisplayHandler]]. */ displayHandler: TDisplayHandler; }