UNPKG

@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 14.3 kB
{"version":3,"file":"rxap-data-source-http-table.mjs","sources":["../../../../../packages/angular/data-source/http/table/src/lib/error.ts","../../../../../packages/angular/data-source/http/table/src/lib/tokens.ts","../../../../../packages/angular/data-source/http/table/src/lib/http-table.data-source.ts","../../../../../packages/angular/data-source/http/table/src/lib/to-http-table-data-source.pipe.ts","../../../../../packages/angular/data-source/http/table/src/index.ts","../../../../../packages/angular/data-source/http/table/src/rxap-data-source-http-table.ts"],"sourcesContent":["import { RxapHttpDataSourceError } from '@rxap/data-source/http';\n\nexport class RxapHttpTableDataSourceError extends RxapHttpDataSourceError {\n\n constructor(message: string, code: string, className?: string) {\n super(message, code, className);\n this.addSubPackageName('table');\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION = new InjectionToken(\n 'rxap/data-source/http/table/to-options');\n","import {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n BaseDataSourceViewer,\n RXAP_DATA_SOURCE_METADATA,\n} from '@rxap/data-source';\nimport type { HttpDataSource } from '@rxap/data-source/http';\nimport {\n HttpDataSourceOptions,\n HttpDataSourceViewer,\n} from '@rxap/data-source/http';\nimport {\n PaginationData,\n RxapHttpPaginationDataSourceError,\n} from '@rxap/data-source/http/pagination';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n AbstractTableDataSource,\n AbstractTableDataSourceMetadata,\n FilterLike,\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 RxapAbstractTableDataSource,\n SortLike,\n TableEvent,\n} from '@rxap/data-source/table';\nimport {\n Constructor,\n isPromise,\n} from '@rxap/utilities';\nimport {\n combineLatest,\n EMPTY,\n isObservable,\n Observable,\n of,\n TeardownLogic,\n} from 'rxjs';\nimport {\n filter as rxjsFilter,\n map,\n startWith,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport { RxapHttpTableDataSourceError } from './error';\nimport { RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION } from './tokens';\n\nexport interface HttpTableDataSourceViewer extends BaseDataSourceViewer {\n readonly viewChange: Observable<TableEvent>;\n}\n\nexport type HttpTableDataSourceMetadata = AbstractTableDataSourceMetadata\n\nexport type TableEventToHttpOptionsFunction = (\n event: TableEvent,\n) =>\n | HttpDataSourceOptions\n | Observable<HttpDataSourceOptions>\n | Promise<HttpDataSourceOptions>;\n\n@Injectable()\nexport class HttpTableDataSource<\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: HttpDataSource<PaginationData<Data>>,\n @Optional()\n @Inject(RXAP_TABLE_DATA_SOURCE_PAGINATOR)\n paginator: PaginatorLike | null = null,\n @Optional()\n @Inject(RXAP_HTTP_TABLE_DATA_SOURCE_TO_OPTIONS_FUNCTION)\n tableEventToHttpOptions: any | 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: HttpTableDataSourceMetadata | null = dataSource.metadata,\n ) {\n super(paginator, sort, filter, parameters, metadata);\n if (tableEventToHttpOptions) {\n this.tableEventToHttpOptions = tableEventToHttpOptions;\n }\n }\n\n public tableEventToHttpOptions(\n event: TableEvent,\n ):\n | HttpDataSourceOptions\n | Observable<HttpDataSourceOptions>\n | Promise<HttpDataSourceOptions> {\n throw new RxapHttpTableDataSourceError(\n 'The TableEventToHttpOptionsFunction is not defined',\n '',\n );\n }\n\n protected override _connect(\n viewer: HttpDataSourceViewer,\n ): [ Observable<Data[]>, TeardownLogic ] {\n this.assertPaginator();\n\n if (viewer.viewChange && viewer.viewChange !== EMPTY) {\n console.warn('The viewChange property is readonly');\n }\n\n if (this.paginator === undefined || this.paginator.page === undefined) {\n throw new RxapHttpTableDataSourceError(\n 'The paginator instance has not a page property',\n '',\n );\n }\n\n viewer.viewChange = 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 tap((page) => {\n if (typeof page.pageSize !== 'number') {\n console.warn('The page size is not defined!');\n }\n }),\n rxjsFilter((page) => typeof page.pageSize === 'number'),\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 ?? of(null),\n ]).pipe(\n map(([ page, sort, filter ]) => ({\n start: page ? page.pageSize * page.pageIndex : 0,\n end: page ? page.pageSize * page.pageIndex + page.pageSize : Number.MAX_SAFE_INTEGER,\n page,\n sort,\n filter,\n })),\n switchMap((event) => {\n const options = this.tableEventToHttpOptions(event);\n if (isPromise(options) || isObservable(options)) {\n return options;\n }\n return of(options);\n }),\n );\n\n return [\n this.dataSource.connect(viewer).pipe(\n tap((paginationData) => {\n if (typeof paginationData !== 'object') {\n throw new RxapHttpPaginationDataSourceError(\n 'The http data source does not return a PaginationData object. Value is not an object',\n '',\n );\n }\n if (paginationData['total'] === undefined || paginationData['total'] === null) {\n throw new RxapHttpPaginationDataSourceError(\n 'The http data source does not return a PaginationData object. Object has not the property total',\n '',\n );\n }\n if (\n !paginationData['data'] &&\n !Array.isArray(paginationData['data'])\n ) {\n throw new RxapHttpPaginationDataSourceError(\n 'The http data source does not return a PaginationData object. Object has not the property data' +\n ' property of the value not an array',\n '',\n );\n }\n if (\n paginationData['size'] !== undefined &&\n paginationData['size'] !== this.paginator!.pageSize\n ) {\n console.warn(\n 'The selected page size from the paginator is not equal to the page size from the PaginationData object',\n );\n }\n if (\n paginationData.page !== undefined &&\n paginationData.page !== this.paginator!.pageIndex\n ) {\n console.warn(\n 'The selected page index from the paginator is not equal to the page index from the PaginationData object',\n );\n }\n }),\n tap((paginationData) => this.updateTotalLength(paginationData.total)),\n map((paginationData) => paginationData.data),\n ),\n () => this.dataSource.disconnect(viewer),\n ];\n }\n}\n\nexport function RxapHttpTableDataSource<Data extends Record<any, any>>(\n metadata: HttpTableDataSourceMetadata,\n className = 'HttpTableDataSource',\n packageName = '@rxap/data-source/http/table',\n) {\n return function (target: Constructor<HttpTableDataSource<Data>>) {\n RxapAbstractTableDataSource(metadata, className, packageName)(target);\n };\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { HttpDataSource } from '@rxap/data-source/http';\nimport { PaginationData } from '@rxap/data-source/http/pagination';\nimport { PaginatorLike } from '@rxap/data-source/pagination';\nimport {\n FilterLike,\n SortLike,\n} from '@rxap/data-source/table';\nimport {\n HttpTableDataSource,\n TableEventToHttpOptionsFunction,\n} from './http-table.data-source';\n\n@Pipe({\n name: 'toHttpTableDataSource',\n standalone: true,\n})\nexport class ToHttpTableDataSourcePipe implements PipeTransform {\n\n public transform<Data extends Record<any, any>>(\n dataSource: HttpDataSource<PaginationData<Data>>,\n paginator: PaginatorLike,\n tableEventToHttpOptions: TableEventToHttpOptionsFunction,\n sort?: SortLike,\n filter?: FilterLike,\n ): HttpTableDataSource<Data> {\n return new HttpTableDataSource(dataSource, paginator, tableEventToHttpOptions, sort, filter);\n }\n\n}\n\n\n","// region \nexport * from './lib/error';\nexport * from './lib/http-table.data-source';\nexport * from './lib/to-http-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":["rxjsFilter"],"mappings":"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"}