@rxap/data-source
Version:
Provides a set of classes and decorators for creating and managing data sources in Angular applications, including base classes, static data sources, observable data sources, and method data sources. It also includes a component for displaying data source
1 lines • 34.4 kB
Source Map (JSON)
{"version":3,"file":"rxap-data-source-table.mjs","sources":["../../../../../packages/angular/data-source/table/src/lib/tokens.ts","../../../../../packages/angular/data-source/table/src/lib/abstract-table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/dynamic-table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/error.ts","../../../../../packages/angular/data-source/table/src/lib/table.data-source.ts","../../../../../packages/angular/data-source/table/src/lib/to-table-data-source.pipe.ts","../../../../../packages/angular/data-source/table/src/index.ts","../../../../../packages/angular/data-source/table/src/rxap-data-source-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const RXAP_TABLE_DATA_SOURCE_PAGINATOR = new InjectionToken('rxap/data-source/table/paginator');\nexport const RXAP_TABLE_DATA_SOURCE_SORT = new InjectionToken('rxap/data-source/table/sort');\nexport const RXAP_TABLE_DATA_SOURCE_FILTER = new InjectionToken('rxap/data-source/table/filter');\nexport const RXAP_TABLE_DATA_SOURCE_PARAMETERS = new InjectionToken('rxap/data-source/table/parameters');\nexport const RXAP_TABLE_DATA_SOURCE = new InjectionToken('rxap/data-source/table/source');\nexport const RXAP_TABLE_METHOD = new InjectionToken(\n 'rxap/data-source/table/table-method',\n);\n","import {\n Inject,\n Injectable,\n isDevMode,\n Optional,\n} from '@angular/core';\nimport { RXAP_DATA_SOURCE_METADATA } from '@rxap/data-source';\nimport {\n AbstractPaginationDataSource,\n AbstractPaginationDataSourceMetadata,\n PaginatorLike,\n RxapAbstractPaginationDataSource,\n} from '@rxap/data-source/pagination';\nimport { ToggleSubject } from '@rxap/rxjs';\nimport {\n Constructor,\n hasIndexSignature,\n} from '@rxap/utilities';\nimport { Observable } from 'rxjs';\nimport {\n RXAP_TABLE_DATA_SOURCE_FILTER,\n RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n RXAP_TABLE_DATA_SOURCE_SORT,\n} from './tokens';\n\nexport type SortDirection = 'asc' | 'desc' | '';\n\nexport interface Sort {\n /** The id of the column being sorted. */\n active: string;\n /** The sort direction. */\n direction: SortDirection;\n}\n\nexport interface SortLike {\n disabled?: boolean;\n sortChange?: Observable<Sort>;\n /** The id of the most recently sorted MatSortable. */\n active: string;\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the MatSortable's sort start.\n */\n start: SortDirection;\n /** The sort direction of the currently active MatSortable. */\n direction: SortDirection;\n}\n\nexport interface FilterLike {\n change: Observable<Record<string, any> | string>;\n current: Record<string, any> | string;\n}\n\nexport type AbstractTableDataSourceMetadata = AbstractPaginationDataSourceMetadata\n\n@Injectable()\nexport abstract class AbstractTableDataSource<Data extends Record<string, any> = any, Parameters = any>\n extends AbstractPaginationDataSource<Data> {\n\n public override readonly loading$ = new ToggleSubject(true);\n public sort?: SortLike;\n public filter?: FilterLike;\n public parameters?: Observable<Parameters>;\n\n constructor(\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n paginator: PaginatorLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n sort: SortLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n filter: FilterLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n parameters: Observable<Parameters> | null = null,\n @Optional()\n @Inject(RXAP_DATA_SOURCE_METADATA)\n metadata: AbstractTableDataSourceMetadata | null = null,\n ) {\n super(paginator, metadata);\n if (parameters) {\n this.parameters = parameters;\n }\n if (sort) {\n this.sort = sort;\n }\n if (filter) {\n this.filter = filter;\n }\n }\n\n public get sortByColumn(): string | undefined {\n return this.sort?.active;\n }\n\n public get sortDirection(): 'asc' | 'desc' | '' | undefined {\n return this.sort?.direction;\n }\n\n public get totalRowCount(): number {\n return this.paginator!.length;\n }\n\n public get filterValue(): Record<string, any> | string | undefined {\n return this.filter?.current;\n }\n\n public applySortBy(\n data: ReadonlyArray<Data>,\n column: string,\n direction: SortDirection,\n ): Data[] {\n return column ? data.slice().sort((a, b) => {\n\n if (!hasIndexSignature(a) || !hasIndexSignature(b)) {\n return 0;\n }\n\n const aColumn = a[column];\n const bColumn = b[column];\n\n const type = typeof aColumn;\n let sort = 0;\n\n switch (type) {\n case 'boolean':\n sort = aColumn === bColumn ? 0 : aColumn ? 1 : -1;\n break;\n case 'string':\n sort = aColumn.localeCompare(bColumn);\n break;\n case 'number':\n case 'bigint':\n sort = aColumn - bColumn;\n break;\n\n }\n\n return direction === 'desc' ? sort * -1 : sort;\n\n }) : data.slice();\n }\n\n public applyFilterBy(data: ReadonlyArray<Data>, filter: Record<string, any> | string): Data[] {\n if (filter) {\n if (typeof filter === 'string') {\n if (isDevMode()) {\n console.error('The filter is a string. Currently not supported by the AbstractTableDataSource');\n }\n return data.slice();\n } else {\n return data.filter(row => {\n return Object.entries(filter).every(([ key, value ]) => {\n const type = typeof value;\n if (row[key] !== undefined && hasIndexSignature(row)) {\n switch (type) {\n case 'undefined':\n return true;\n case 'object':\n return value === null || value === undefined || value === row[key];\n case 'boolean':\n return value === row[key];\n case 'number':\n return value === row[key];\n case 'string':\n return (row[key] || '').toString().toLowerCase().includes(value.toLowerCase());\n case 'function':\n return value(row[key]);\n case 'bigint':\n return value === row[key];\n }\n }\n return true;\n });\n });\n }\n } else {\n return data.slice();\n }\n }\n\n}\n\nexport function RxapAbstractTableDataSource(\n metadataOrId: string | AbstractTableDataSourceMetadata,\n className = 'AbstractTableDataSource',\n packageName = '@rxap/data-source/table',\n) {\n return function (target: Constructor<AbstractTableDataSource<any>>) {\n RxapAbstractPaginationDataSource(metadataOrId, className, packageName)(target);\n };\n}\n","import {\n Inject,\n Injectable,\n InjectionToken,\n isDevMode,\n OnInit,\n Optional,\n} from '@angular/core';\nimport {\n BaseDataSourceViewer,\n DataSourceViewerId,\n RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport {\n PageEvent,\n PaginatorLike,\n} from '@rxap/data-source/pagination';\nimport {\n Method,\n MethodWithParameters,\n} from '@rxap/pattern';\nimport {\n clone,\n equals,\n} from '@rxap/utilities';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n of,\n TeardownLogic,\n} from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n retry,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport {\n AbstractTableDataSource,\n FilterLike,\n Sort,\n SortLike,\n} from './abstract-table.data-source';\nimport { TableDataSourceMetadata } from './table.data-source';\nimport {\n RXAP_TABLE_DATA_SOURCE_FILTER,\n RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n RXAP_TABLE_DATA_SOURCE_SORT,\n RXAP_TABLE_METHOD,\n} from './tokens';\n\n/**\n * @deprecated removed use RXAP_TABLE_METHOD instead\n */\nexport const RXAP_TABLE_REMOTE_METHOD = new InjectionToken('rxap/data-source/table/remote-method');\n\nexport interface TableEvent<Parameters = any> {\n start: number;\n end: number;\n page?: PageEvent | null;\n sort?: Sort | null;\n filter?: Record<string, any> | null | string;\n /** The custom table parameter */\n parameters?: Parameters;\n /** time of the last refresh call */\n refresh?: number;\n setTotalLength?: (length: number) => void;\n}\n\nexport interface DynamicTableDataSourceViewer<Parameters> extends BaseDataSourceViewer<Parameters> {\n parameters: Parameters;\n}\n\n@Injectable()\nexport class DynamicTableDataSource<Data extends Record<any, any> = any, Parameters = any>\n extends AbstractTableDataSource<Data, Parameters> implements OnInit {\n\n public paginatorMap = new Map<string, PaginatorLike>();\n public sortMap = new Map<string, SortLike>();\n public filterMap = new Map<string, FilterLike>();\n public parametersMap = new Map<string, Observable<Parameters>>();\n protected _refresh$ = new BehaviorSubject<number>(Date.now());\n\n constructor(\n @Optional()\n @Inject(RXAP_TABLE_METHOD)\n protected readonly method: MethodWithParameters<Data[], TableEvent<Parameters>>,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n paginator: PaginatorLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n sort: SortLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n filter: FilterLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n parameters: Observable<Parameters> | null = null,\n @Optional()\n @Inject(RXAP_DATA_SOURCE_METADATA)\n metadata: TableDataSourceMetadata | null = method.metadata,\n ) {\n super(paginator, sort, filter, parameters, metadata);\n }\n\n /**\n * @deprecated use method instead\n * @private\n */\n private get remoteMethod(): Method<Data[], TableEvent<Parameters>> {\n return this.method;\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n public ngOnInit() {\n this._data$ = this.createTableDataLoader(this.paginator, this.sort, this.filter, this.parameters);\n }\n\n public setTotalLengthFactory(id?: string) {\n const paginator: PaginatorLike | undefined = id ? this.paginatorMap.get(id) : this.paginator;\n\n function setTotalLength(length: number): void {\n if (paginator) {\n paginator.length = length;\n }\n }\n\n return setTotalLength;\n }\n\n public setTotalLength(length: number, id?: string): void {\n if (id) {\n if (this.paginatorMap.has(id)) {\n this.paginatorMap.get(id)!.length = length;\n }\n } else {\n if (this.paginator) {\n this.paginator.length = length;\n }\n }\n }\n\n public override refresh(): any {\n this._refresh$.next(Date.now());\n }\n\n setPaginator(paginator: PaginatorLike | undefined, id?: string) {\n if (paginator) {\n if (id) {\n this.paginatorMap.set(id, paginator);\n } else {\n this.paginator = paginator;\n }\n }\n }\n\n setSort(sort: SortLike | null, id?: string) {\n if (sort) {\n if (id) {\n this.sortMap.set(id, sort);\n } else {\n this.sort = sort;\n }\n }\n }\n\n setFilter(tableFilter: FilterLike | undefined, id?: string) {\n if (tableFilter) {\n if (id) {\n this.filterMap.set(id, tableFilter);\n } else {\n this.filter = tableFilter;\n }\n }\n }\n\n setParameters(parameters: Observable<Parameters> | undefined, id?: string) {\n if (parameters) {\n if (id) {\n this.parametersMap.set(id, parameters);\n } else {\n this.parameters = parameters;\n }\n }\n }\n\n protected override genericRetryFunction(error: any, retryCount: number): Observable<any> {\n this.loading$.disable();\n return super.genericRetryFunction(error, retryCount);\n }\n\n protected override _connect(viewer: BaseDataSourceViewer): [ Observable<Data[]>, TeardownLogic ] | Observable<Data[]> {\n // call to ensure all parent logic is executed\n let data = super._connect(viewer);\n if (viewer.id && this.hasDynamicInputs(viewer.id)) {\n data = this.createTableDataLoader(\n this.paginatorMap.get(viewer.id),\n this.sortMap.get(viewer.id),\n this.filterMap.get(viewer.id),\n this.parametersMap.get(viewer.id),\n viewer.id,\n );\n }\n return data;\n }\n\n protected override _disconnect(viewerId: DataSourceViewerId) {\n if (this.hasDynamicInputs(viewerId)) {\n this.paginatorMap.delete(viewerId);\n this.sortMap.delete(viewerId);\n this.filterMap.delete(viewerId);\n this.parametersMap.delete(viewerId);\n }\n super._disconnect(viewerId);\n }\n\n protected async loadPage(tableEvent: TableEvent): Promise<Data[]> {\n try {\n return await this.method.call(tableEvent);\n } catch (e: any) {\n console.error(`Failed to load page: ${ e.message }`);\n this.handelError(e);\n this.hasError$.enable();\n this.error$.next(e);\n }\n return [];\n }\n\n protected override handelError(error: any) {\n if (isDevMode()) {\n console.error(`Failed to load page: ${ error.message }`, error);\n }\n }\n\n protected hasDynamicInputs(id: string) {\n return this.paginatorMap.has(id) || this.sortMap.has(id) || this.filterMap.has(id) || this.parametersMap.has(id);\n }\n\n private createTableDataLoader(\n paginatorLike?: PaginatorLike,\n sortLike?: SortLike,\n filterLike?: FilterLike,\n parametersLike?: Observable<Parameters>,\n id?: string,\n ) {\n return combineLatest([\n paginatorLike?.page?.pipe(\n startWith({\n pageIndex: paginatorLike?.pageIndex ?? 0,\n pageSize: paginatorLike?.pageSize ?? Number.MAX_SAFE_INTEGER,\n length: paginatorLike?.length,\n }),\n ) ?? of(undefined),\n sortLike?.sortChange?.pipe(\n startWith({\n active: sortLike?.active,\n direction: sortLike?.direction,\n }),\n ) ?? of(undefined),\n filterLike?.change?.pipe(tap(() => paginatorLike?.firstPage && paginatorLike?.firstPage())) ?? of(undefined),\n parametersLike ?? of(undefined),\n this._refresh$,\n this._retry$.pipe(startWith(null)),\n ]).pipe(\n debounceTime(100),\n map(([ page, sort, filter, parameters, refresh ]) => {\n const tableEvent: TableEvent = {\n page,\n start: page ? page.pageSize * page.pageIndex : 0,\n end: page ? page.pageSize * page.pageIndex + page.pageSize : Number.MAX_SAFE_INTEGER,\n sort,\n filter,\n parameters,\n refresh,\n };\n return {\n ...clone(tableEvent),\n setTotalLength: this.setTotalLengthFactory(id),\n };\n }),\n distinctUntilChanged((a, b) => equals(a, b)),\n tap(() => {\n this.loading$.enable();\n if (this.hasError$.value) {\n this.hasError$.disable();\n }\n }),\n switchMap(tableEvent => this.loadPage(tableEvent)),\n tap({\n next: () => this.loading$.disable(),\n error: error => {\n this.hasError$.enable();\n this.error$.next(error);\n this.handelError(error);\n },\n }),\n retry({\n delay: (error, retryCount) => this.genericRetryFunction(error, retryCount),\n }),\n );\n }\n\n}\n","import { RxapDataSourceError } from '@rxap/data-source';\n\nexport class RxapTableDataSourceError extends RxapDataSourceError {\n\n constructor(message: string, code: string, className?: string) {\n super(message, code, className);\n this.addSubPackageName('table');\n }\n\n}\n","import {\n AbstractTableDataSource,\n AbstractTableDataSourceMetadata,\n FilterLike,\n RxapAbstractTableDataSource,\n SortLike,\n} from './abstract-table.data-source';\nimport {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n RXAP_TABLE_DATA_SOURCE,\n RXAP_TABLE_DATA_SOURCE_FILTER,\n RXAP_TABLE_DATA_SOURCE_PAGINATOR,\n RXAP_TABLE_DATA_SOURCE_PARAMETERS,\n RXAP_TABLE_DATA_SOURCE_SORT,\n} from './tokens';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n BaseDataSource,\n BaseDataSourceViewer,\n RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport {\n combineLatest,\n Observable,\n of,\n TeardownLogic,\n} from 'rxjs';\nimport {\n map,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport { Constructor } from '@rxap/utilities';\n\nexport type TableDataSourceMetadata = AbstractTableDataSourceMetadata\n\n@Injectable()\nexport class TableDataSource<\n Data extends Record<any, any>,\n Parameters = any\n> extends AbstractTableDataSource<Data> {\n constructor(\n @Inject(RXAP_TABLE_DATA_SOURCE)\n private readonly dataSource: BaseDataSource<Data[]>,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n paginator: PaginatorLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_SORT)\n sort: SortLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_FILTER)\n filter: FilterLike | null = null,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PARAMETERS)\n parameters: Observable<Parameters> | null = null,\n @Optional()\n @Inject(RXAP_DATA_SOURCE_METADATA)\n metadata: TableDataSourceMetadata | null = dataSource.metadata,\n ) {\n super(paginator, sort, filter, parameters, metadata);\n }\n\n public override refresh(): any {\n this.dataSource.refresh();\n }\n\n protected override _connect(\n viewer: BaseDataSourceViewer,\n ): [ Observable<Data[]>, TeardownLogic ] {\n return [\n this.dataSource.connect(viewer).pipe(\n tap((data) => this.updateTotalLength(data.length)),\n tap(() => this.loading$.disable()),\n switchMap((data) => {\n this.assertPaginator();\n\n if (this.paginator && this.paginator.page) {\n return combineLatest([\n this.paginator.page.pipe(\n startWith({\n pageIndex: this.paginator.pageIndex,\n pageSize: this.paginator.pageSize,\n length: this.paginator.length,\n }),\n ),\n this.sort?.sortChange?.pipe(\n startWith({\n active: this.sort?.active,\n direction: this.sort?.direction,\n }),\n ) ?? of(null),\n this.filter?.change.pipe(startWith({})) ?? of(null),\n ]).pipe(\n map(([ page, sort, filter ]) => {\n let filteredData = data;\n\n if (filter) {\n filteredData = this.applyFilterBy(filteredData, filter);\n }\n\n let sortData = filteredData;\n\n if (sort) {\n sortData = this.applySortBy(\n sortData,\n sort.active,\n sort.direction,\n );\n }\n\n return this.applyPagination(\n sortData,\n page.pageSize,\n page.pageIndex,\n );\n }),\n );\n }\n\n throw new Error('The paginator have not a defined page property!');\n }),\n ),\n () => this.dataSource.disconnect(viewer),\n ];\n }\n}\n\nexport function RxapTableDataSource(\n metadataOrId: string | TableDataSourceMetadata,\n className = 'TableDataSource',\n packageName = '@rxap/data-source/table',\n) {\n return function (target: Constructor<TableDataSource<any>>) {\n RxapAbstractTableDataSource(metadataOrId, className, packageName)(target);\n };\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport { TableDataSource } from './table.data-source';\nimport { BaseDataSource } from '@rxap/data-source';\nimport {\n FilterLike,\n SortLike,\n} from './abstract-table.data-source';\n\n@Pipe({\n name: 'toTableDataSource',\n standalone: true,\n})\nexport class ToTableDataSourcePipe implements PipeTransform {\n\n public transform<Data extends Record<any, any>>(\n dataSource: BaseDataSource<Data[]>,\n paginator: PaginatorLike,\n sort?: SortLike,\n filter?: FilterLike,\n ): TableDataSource<Data> {\n return new TableDataSource(dataSource, paginator, sort, filter);\n }\n\n}\n\n\n","// region \nexport * from './lib/abstract-table.data-source';\nexport * from './lib/dynamic-table.data-source';\nexport * from './lib/error';\nexport * from './lib/table.data-source';\nexport * from './lib/to-table-data-source.pipe';\nexport * from './lib/tokens';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}