import { HttpClient } from '@angular/common/http'; import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { InjectionToken } from '@angular/core'; import { GasPaginator } from '../gas-paginator/gas-paginator.namespace'; import { GasTable } from './gas-table.namespace'; import FilterValue = GasTable.FilterValue; import SortingValue = GasTable.SortingValue; import TableValue = GasTable.TableValue; /** @description - тип предназначен для хранения pipe обработки данных для репозитория таблицы */ export declare type GasArgumentStream = (stream: Observable) => Observable; /** @description - хранит названия get параметров необходимых для составления url запроса в репозитории таблицы */ export declare type GasUrlQueryParams = { page: string; rowsPerPage: string; filter: string; sorting: string; }; /** @description - параметры настроек репозитория таблицы передаваемых через InjectionToken */ export declare type GasTableRepositoryParams = { defaultPaginatorData: GasPaginator.Data; queryUrl: string; queryParamNames: GasUrlQueryParams; dataPipe: GasArgumentStream; }; /** @description - стандартные настройки пагинации */ export declare const DEFAULT_PAGINATOR_DATA: GasPaginator.Data; /** @description - стандартные названия get параметров */ export declare const DEFAULT_QUERY_PARAMS: GasUrlQueryParams; /** @description - стандартный pipe для полученных репозиторием данных */ export declare const DEFAULT_TABLE_DATA_PIPE: (stream: Observable) => Observable; /** @description - injection token со стандартными настройками репозитория таблицы */ export declare const DEFAULT_REPOSITORY_PARAMS_TOKEN: InjectionToken; /** @description - класс, который используется по паттерну "репозиторий". * Необходимо создать ваш новый класс и расширить его базовым и переопределить методы и свойства, которые вам нужны. * */ export declare abstract class GasDefaultTableRepository { private httpClient; private gasTableRepositoryParams; sorting$: Observable; paginationData$: Observable; filter$: Observable; refreshSubject$: BehaviorSubject; selectedRowChanged$: Subject | Record[]>; get filter(): FilterValue; set filter(filter: FilterValue); get defaultSorting(): SortingValue; set defaultSorting(sorting: SortingValue); get sorting(): SortingValue; set sorting(sorting: SortingValue); get paginationData(): GasPaginator.Data; set paginationData(paginationData: GasPaginator.Data); get tableData(): Observable; private innerDefaultSorting; private sortingSubject$; private paginationDataSubject$; private filterSubject$; private tableData$; constructor(httpClient: HttpClient, gasTableRepositoryParams: GasTableRepositoryParams); /** @description - метод формирует url и get параметры по данным фильтра, пагинации и сортировки */ getGeneratedUrl(): string; /** @description - используется для определения pipe возвращаемых данных при запросе на сервер */ dataPipe(observable: Observable): Observable; /** @description - по умолчанию отправляет GET запрос и данные будут возвращены из data * для изменения можно изменить пайп через dataPipe/InjectionToken или переопределить метод * */ getData(): Observable; /** @description - обновляет состояние таблицы в репозитории */ updateTableValue(data: TableValue[]): void; }