UNPKG

imng-kendo-grid-odata

Version:

This library was generated with [Nx](https://nx.dev).

186 lines (176 loc) 9.73 kB
import { Observable, BehaviorSubject } from 'rxjs'; import * as i2 from '@progress/kendo-angular-grid'; import { PagerSettings, GridComponent } from '@progress/kendo-angular-grid'; import * as i0 from '@angular/core'; import { OnInit, OnDestroy, AfterViewInit, ChangeDetectorRef, EventEmitter } from '@angular/core'; import { ODataState, ODataResult, ODataService, Expander, Computation } from 'imng-kendo-odata'; import * as i3 from 'imng-kendo-grid'; import { KendoGridBaseComponent, GridStateChangeEvent } from 'imng-kendo-grid'; import { Router } from '@angular/router'; import { Subscribable, Subscriptions } from 'imng-ngrx-utils'; import { CompositeFilterDescriptor, FilterDescriptor } from '@progress/kendo-data-query'; import { ICompositeFilter, IFilter } from 'imng-odata-client'; import * as i1 from '@angular/common'; import * as _progress_kendo_svg_icons from '@progress/kendo-svg-icons'; interface IKendoODataGridFacade<Entity> { loading$: Observable<boolean>; gridODataState$: Observable<ODataState | undefined>; gridData$: Observable<ODataResult<Entity> | undefined>; gridPagerSettings$: Observable<false | PagerSettings>; loadEntities(state: ODataState): void; reloadEntities(state?: ODataState): void; } declare abstract class KendoODataBasedComponent<ENTITY extends object, FACADE extends IKendoODataGridFacade<ENTITY>> extends KendoGridBaseComponent<ENTITY> implements OnInit, OnDestroy, Subscribable { readonly facade: FACADE; readonly state: ODataState | Observable<ODataState>; readonly router: Router | null; readonly gridRefresh$: Observable<unknown> | null; useLoadAllDataExport: boolean; odataService: ODataService; odataEndpoint?: string; /** * This sets the amount of the maximum amount of sortable columns for this component. Default = 5. */ maxSortedColumnCount: number; /** * This will allow you to provide a visual indicator that some of the columns have been hidden. */ hasHiddenColumns$: Observable<boolean>; loadDataProgression$: BehaviorSubject<number>; gridStateQueryKey: string; gridDataState: ODataState; gridDataResult$: Observable<ODataResult<ENTITY>>; loading$: Observable<boolean>; gridPagerSettings$: Observable<false | PagerSettings>; /** * A properties enum to make kendo grid columns definitions type safe * {@example <kendo-grid-column [field]="props.FIELD_NAME">} */ abstract readonly props: any; protected expanders?: Expander[]; protected compute?: (string | Computation)[]; protected transformations?: string; /** * The default filter descriptor is set by developer in the constructor initialization. * This is used to reset the filter when the "Clear Filter" button is clicked. * * @public * @type {CompositeFilterDescriptor | ICompositeFilter | undefined} */ defaultFilter: CompositeFilterDescriptor | ICompositeFilter | undefined; constructor(facade: FACADE, state: ODataState | Observable<ODataState>, router?: Router | null, //NOSONAR gridRefresh$?: Observable<unknown> | null); ngOnInit(): void; deserializeODataState(stateQueryParam: string): ODataState; /** * This method ensures the proper handling of date filters in an OData query * @param filter */ normalizeFilters(filter: FilterDescriptor | CompositeFilterDescriptor | IFilter | ICompositeFilter): void; serializeODataState(odataState: ODataState): string; /** * Will reset filters to initialGrid state passed into the constructor */ resetFilters(): void; dataStateChange(state: GridStateChangeEvent | ODataState): void; /** * Gets an Observable of all data for Excel export. * * Returns all data from the OData endpoint if the endpoint is available and * `useLoadAllDataExport` is enabled, otherwise returns the current grid data result. * * @returns {Observable<ODataResult<ENTITY>>} An Observable containing the OData result with entity data */ excelData: () => Observable<ODataResult<ENTITY>>; /** * Loads all data from the OData service by fetching data in chunks of 100 items. * * This method retrieves the current grid data and OData state, then creates multiple * OData queries to fetch all available data in batches. Each batch is limited to 100 items * to manage memory and performance. The results from all batches are accumulated and returned * as a single ODataResult. * * @returns {Observable<ODataResult<ENTITY>>} An observable that emits the complete accumulated result * containing the total count and combined data from all fetched batches. After emission, * sets the useLoadAllDataExport flag to false. * * @remarks * - Uses `concatMap` to ensure requests are processed sequentially * - Uses `scan` to accumulate results from each batch * - Count is disabled on subsequent requests (count: false) to optimize performance * - The useLoadAllDataExport flag is reset to false upon completion */ loadAllData(): Observable<ODataResult<ENTITY>>; loadEntities(odataState: ODataState): void; validateSortParameters(state: ODataState): ODataState; updateRouterState(state: ODataState): void; reloadEntities(): void; static ɵfac: i0.ɵɵFactoryDeclaration<KendoODataBasedComponent<any, any>, never>; static ɵcmp: i0.ɵɵComponentDeclaration<KendoODataBasedComponent<any, any>, "ng-component", never, {}, {}, never, never, true, never>; } interface KendoODataGridState<Entity> { gridData: ODataResult<Entity>; loading: boolean; gridODataState: ODataState; /** Last known error (if any) */ error: unknown | undefined; gridPagerSettings: PagerSettings | false; } declare const getODataPagerSettings: <T>(m: { gridData: ODataResult<T>; gridODataState?: ODataState; }) => false | PagerSettings; declare const mapPagerSettings: <T>() => (source: Observable<{ gridData: ODataResult<T>; gridODataState?: ODataState; }>) => Observable<false | PagerSettings>; declare function createKendoODataGridInitialState<TEntity>(): KendoODataGridState<TEntity>; declare class IMNG_KENDO_GRID_ODATA implements OnInit, AfterViewInit, OnDestroy, Subscribable { readonly gridComponent: GridComponent; readonly changeDetectorRef: ChangeDetectorRef; readonly allSubscriptions: Subscriptions; private facade; odataComponent: KendoODataBasedComponent<object, IKendoODataGridFacade<object>>; ngOnInit(): void; ngAfterViewInit(): void; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<IMNG_KENDO_GRID_ODATA, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<IMNG_KENDO_GRID_ODATA, "[imngODataGrid]", never, { "odataComponent": { "alias": "imngODataGrid"; "required": false; }; }, {}, never, never, true, never>; } declare class IMNG_KENDO_GRID_ODATA_HEADER implements OnInit { parentGrid: GridComponent; readonly exportIcon: _progress_kendo_svg_icons.SVGIcon; readonly filePdfIcon: _progress_kendo_svg_icons.SVGIcon; readonly plusIcon: _progress_kendo_svg_icons.SVGIcon; readonly fileExcelIcon: _progress_kendo_svg_icons.SVGIcon; readonly filterClearIcon: _progress_kendo_svg_icons.SVGIcon; readonly arrowRotateCcwIcon: _progress_kendo_svg_icons.SVGIcon; imngODataGrid: KendoODataBasedComponent<object, IKendoODataGridFacade<object>>; loadDataProgression$: BehaviorSubject<number>; exportOptions: { name: string; command: string; click: () => void; svgIcon?: unknown; }[]; entityName: string; hideColumnChooser: boolean; hideResetFilters: boolean; hideReloadData: boolean; hideExports: boolean; hasHiddenColumns$: Observable<boolean> | undefined; addItemClicked: EventEmitter<any>; resetFiltersClicked: EventEmitter<any>; reloadEntitiesClicked: EventEmitter<any>; ngOnInit(): void; configureGridForLoadAllData(exportCallback: (gridComponent: GridComponent) => void): void; static ɵfac: i0.ɵɵFactoryDeclaration<IMNG_KENDO_GRID_ODATA_HEADER, never>; static ɵcmp: i0.ɵɵComponentDeclaration<IMNG_KENDO_GRID_ODATA_HEADER, "imng-kendo-grid-odata-header", never, { "imngODataGrid": { "alias": "imngODataGrid"; "required": true; }; "entityName": { "alias": "entityName"; "required": false; }; "hideColumnChooser": { "alias": "hideColumnChooser"; "required": false; }; "hideResetFilters": { "alias": "hideResetFilters"; "required": false; }; "hideReloadData": { "alias": "hideReloadData"; "required": false; }; "hideExports": { "alias": "hideExports"; "required": false; }; "hasHiddenColumns$": { "alias": "hasHiddenColumns$"; "required": false; }; }, { "addItemClicked": "addItemClicked"; "resetFiltersClicked": "resetFiltersClicked"; "reloadEntitiesClicked": "reloadEntitiesClicked"; }, never, never, true, never>; } declare class ImngKendoGridODataModule { static ɵfac: i0.ɵɵFactoryDeclaration<ImngKendoGridODataModule, never>; static ɵmod: i0.ɵɵNgModuleDeclaration<ImngKendoGridODataModule, never, [typeof i1.CommonModule, typeof i2.PDFModule, typeof i2.ExcelModule, typeof i3.ImngKendoGridModule, typeof IMNG_KENDO_GRID_ODATA, typeof IMNG_KENDO_GRID_ODATA_HEADER], [typeof IMNG_KENDO_GRID_ODATA, typeof IMNG_KENDO_GRID_ODATA_HEADER]>; static ɵinj: i0.ɵɵInjectorDeclaration<ImngKendoGridODataModule>; } export { IMNG_KENDO_GRID_ODATA, IMNG_KENDO_GRID_ODATA_HEADER, ImngKendoGridODataModule, KendoODataBasedComponent, createKendoODataGridInitialState, getODataPagerSettings, mapPagerSettings }; export type { IKendoODataGridFacade, KendoODataGridState };