@true-directive/base
Version:
The set of base classes for the TrueDirective Grid
147 lines (146 loc) • 5.69 kB
TypeScript
/**
* Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
* @link https://truedirective.com/
* @license MIT
*/
import { Column } from './column.class';
import { Filter } from './filter.class';
import { SortInfo } from './sort-info.class';
import { ColumnCollection } from './column-collection.class';
import { CellPosition } from './cell-position.class';
import { GridSettings } from './grid-settings.class';
import { ValueFormatter } from './value-formatter.class';
import { DataQuery } from './data-query.class';
/**
* Источник данных
*/
export declare class DataSource {
columnCollection: ColumnCollection;
settings: GridSettings;
/**
* Исходный набор строк
*/
private _model;
model: any[];
private _totalRowCount?;
totalRowCount: number;
lazyLoaded?: number;
readonly loadedRowCount: number;
/**
* Общий текстовый фильтр
*/
searchString: string;
/**
* Filters
*/
readonly filters: Filter[];
/**
* Sortings
*/
readonly sortings: SortInfo[];
/**
* Resulting rows list
*/
protected _resultRows: any[];
readonly resultRowCount: number;
readonly resultRows: any[];
readonly valueFormatter: ValueFormatter;
clearSorting(): void;
clearFilters(): void;
clear(): void;
getQuery(counter?: number, subject?: any): DataQuery;
/**
* Наложение фильтров
* @param rows Список строк
* @return Отфильтрованный набор строк
*/
doFilter(rows: any[]): any[];
/**
* Сортировка строк.
* @param rows Список строк, подлежащих группировке
* @return Отсортированный список строк
*/
doSort(rows: any[]): any[];
summaries(columns: Column[]): void;
sortedByField(fieldName: string): SortInfo;
summariedByColumn(col: Column): boolean;
/**
* Проверка видимости строки после изменения значения одного из полей
* @param r Измененная строка
* @param fieldName Наименование поля
* @return Необходим ли перезапрос данных
*/
checkDataUpdateNeed(r: any, fieldName: string): boolean;
/**
* Окончательная обрабтка данных и сохранение в resultRows.
* @param rows [description]
* @return [description]
*/
accomplishFetch(rows: any[]): void;
/**
* Пересчет данных для отображения
*/
recalcData(): void;
/**
* Получение данных для отображения, которые обработаны вне нашего компонента.
* Например, сервером.
* @param rows Отфильтрованные, отсортированные данные.
* @param settings Настройки
*/
fetchData(rows: any[], totalRowCount?: number): void;
/**
* Установка фильтра
* @param f Фильтр
*/
setFilter(f: Filter): void;
/**
* Удаляем фильтр по заданной колонке
* @param fieldName Наименование поля
* @return Если фильтр удален - возвращаем true. Если фильтра не было - false.
*/
removeFilter(fieldName: string): boolean;
/**
* Получить фильтр заданной колонки.
* Используется в том числе заголовком для отображения подсвеченной иконки
* @param c Колонка, для которой нужно получить фильтр
* @return Фильтр, если есть
*/
getFilter(c: Column): Filter;
/**
* Data sorting
* @param sortings List of sortings
*/
sort(sortings: SortInfo[]): void;
/**
* Data filtering
* @param filters List of filters
*/
filter(filters: Filter[]): void;
/**
* Сортировка по колонке
* @param col Колонка
*/
sortByColumn(col: Column, add?: boolean): void;
/**
* Убрать одну строку из результирующего набора строк. Например, по причине
* того, что она перестала удовлетворять условиям фильтра при изменении одного
* из полей.
* @param r Строка, подлежащая скрытию
* @return Было ли удаление
*/
removeResultRow(r: any): boolean;
rowData(row: any): any;
displayedValue(col: Column, value: any, row: any): string;
value(row: any, fieldName: string): any;
updateValue(row: any, fieldName: string, value: any): any;
/**
* Check drag possibility
* @param draggedRows [description]
* @param dropRow [description]
* @param dropPos [description]
* @return [description]
*/
canDrop(draggedRows: any[], dropRow: any, dropPos: string): string;
canEditCell(cp: CellPosition): boolean;
moveRows(draggedRows: any[], dropTarget: any, dropPos: string): boolean;
}