imng-prime-table-odata
Version:
This library was generated with [Nx](https://nx.dev).
1 lines • 34 kB
Source Map (JSON)
{"version":3,"file":"imng-prime-table-odata.mjs","sources":["../../../../libs/imng-prime-table-odata/src/lib/prime-odata-component-base.ts","../../../../libs/imng-prime-table-odata/src/lib/helpers/handle-multi-column-sorting.ts","../../../../libs/imng-prime-table-odata/src/lib/prime-odata-table.directive.ts","../../../../libs/imng-prime-table-odata/src/lib/search-caption/search-caption.component.ts","../../../../libs/imng-prime-table-odata/src/lib/search-caption/search-caption.component.html","../../../../libs/imng-prime-table-odata/src/lib/imng-prime-table-odata.module.ts","../../../../libs/imng-prime-table-odata/src/lib/helpers/to-odata-query.ts","../../../../libs/imng-prime-table-odata/src/lib/helpers/prime-odata-initial-state-creator.ts","../../../../libs/imng-prime-table-odata/src/lib/helpers/crement-active-effect-count.ts","../../../../libs/imng-prime-table-odata/src/lib/imng-prime-effect-error-reducer.ts","../../../../libs/imng-prime-table-odata/src/imng-prime-table-odata.ts"],"sourcesContent":["import { Observable, isObservable, map, tap, distinct } from 'rxjs';\nimport {\n OnInit,\n OnDestroy,\n InjectionToken,\n Inject,\n Component,\n} from '@angular/core';\nimport { IPrimeODataTableFacade } from './prime-odata-table-facade';\nimport { Router } from '@angular/router';\nimport { Subscribable, Subscriptions } from 'imng-ngrx-utils';\nimport {\n CompositeFilter,\n Expander,\n Filter,\n isCompositeFilter,\n} from 'imng-odata-client';\nimport {\n getRelatedValue,\n getRelatedField,\n IdType,\n toLocalTimeStamp,\n IRelatedFieldOptions,\n isRelatedFieldOptions,\n} from 'imng-nrsrx-client-utils';\nimport { PrimeTableState } from './models/prime-table-state';\nimport { SortMeta } from 'primeng/api';\nimport { EnumProperties, getEnumDisplayText } from 'openapi-ts-generator/enums';\n\nconst FACADE = new InjectionToken<\n IPrimeODataTableFacade<{ id?: IdType | null }>\n>('imng-prime-table-odata-facade');\nconst STATE = new InjectionToken<PrimeTableState>('imng-prime-table-state');\n\n@Component({\n template: '',\n standalone: false\n})\nexport abstract class ImngPrimeODataTableBaseComponent<\n ENTITY extends { id?: IdType | null | undefined },\n FACADE extends IPrimeODataTableFacade<ENTITY>,\n >\n implements OnInit, OnDestroy, Subscribable\n{\n public readonly allSubscriptions = new Subscriptions();\n public readonly ENUM_DISPLAY_TEXT = EnumProperties.DISPLAY_TEXT;\n public readonly ENUM_NAME = EnumProperties.NAME;\n public readonly getEnumDisplayText = getEnumDisplayText;\n /**\n * This sets the amount of the maximum amount of sortable columns for this component. Default = 5.\n */\n public maxSortedColumnCount = 5; //NOSONAR\n /**\n * This will allow you to provide a visual indicator that some of the columns have been hidden.\n */\n public hasHiddenColumns$: Observable<boolean>;\n public tableStateQueryKey = 'tableState';\n public tableState: PrimeTableState;\n public tableData$: Observable<ENTITY[]>;\n public activeEffectCount$: Observable<number>;\n public rowsPerPageOptions: number[] = [10, 20, 50, 100];\n /**\n * A properties enum to make prime table columns definitions type safe\n * {@example <td>{{ dataItem[props.FIELD_NAME] }}</td>}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public abstract readonly props: any; //NOSONAR\n protected expanders?: Expander[];\n protected appliedTransformations?: string;\n public readonly getRelatedValue = getRelatedValue;\n\n constructor(\n @Inject(FACADE) public readonly facade: FACADE,\n @Inject(STATE)\n private readonly state: PrimeTableState | Observable<PrimeTableState>,\n public readonly router: Router | null = null, //NOSONAR\n public readonly tableRefresh$: Observable<unknown> | null = null,\n ) {\n if (\n this.router?.routerState?.snapshot?.root.queryParams[\n this.tableStateQueryKey\n ]\n ) {\n try {\n this.tableState = this.deserializeTableState(\n this.router?.routerState?.snapshot?.root?.queryParams[\n this.tableStateQueryKey\n ],\n );\n } catch (e) {\n console.error(\n //NOSONAR\n `Exception thrown while deserializing query string parameter: ${this.tableStateQueryKey}.`,\n e,\n );\n }\n }\n if (isObservable(state)) {\n this.allSubscriptions.push(\n state.subscribe((t) => {\n this.tableState = t;\n this.expanders = t.expand;\n this.appliedTransformations = t.apply;\n }),\n );\n } else {\n this.tableState = this.tableState\n ? {\n ...this.tableState,\n select: state.select,\n expand: state.expand,\n }\n : state;\n this.expanders = state.expand;\n this.appliedTransformations = state.apply;\n }\n if (tableRefresh$) {\n this.allSubscriptions.push(\n tableRefresh$.subscribe(() => this.loadEntities(this.tableState)),\n );\n }\n }\n\n public ngOnInit(): void {\n if (!this.tableRefresh$) {\n this.loadEntities(this.tableState);\n }\n this.activeEffectCount$ = this.facade.activeEffectCount$;\n this.tableData$ = this.facade.tableData$?.pipe(map((table) => table ?? []));\n this.allSubscriptions.push(\n this.facade.tableState$\n .pipe(\n distinct(),\n tap((t) => {\n if (this.router) {\n this.updateRouterState(t);\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy(): void {\n this.allSubscriptions.unsubscribeAll();\n }\n\n public getExportFileName(exportName: string): string {\n return `${exportName}-${toLocalTimeStamp()}`;\n }\n /**\n * Naming convetion:\n * . => Parent table navigation separator\n * / => Child table navigation separator\n * @param segments\n * @returns\n */\n public getRelatedField(\n ...segments: (string | IRelatedFieldOptions)[]\n ): string | null {\n if (!segments.length) {\n return null;\n }\n const initialSegment = segments[0];\n if (isRelatedFieldOptions(initialSegment)) {\n return getRelatedField(initialSegment);\n }\n return getRelatedField({ segments: segments.map((m) => m.toString()) });\n }\n\n public deserializeTableState(stateQueryParam: string): PrimeTableState {\n return JSON.parse(atob(stateQueryParam));\n }\n\n /**\n * This method ensures the proper handling of date filters in an OData query\n * @param filter\n */\n public normalizeFilters(filter: Filter | CompositeFilter) {\n if (isCompositeFilter(filter)) {\n filter.filters.forEach(this.normalizeFilters);\n } else if (\n filter?.field?.toUpperCase() === 'DATE' ||\n filter?.field?.toUpperCase().endsWith('DATE') ||\n filter?.field?.toUpperCase().endsWith('UTC')\n ) {\n filter.value = new Date(filter.value as never);\n }\n }\n\n public serializeTableState(primeTableState: PrimeTableState): string {\n return btoa(JSON.stringify(primeTableState));\n }\n /**\n * Will reset filters to initialGrid state passed into the constructor\n */\n public resetFilters(): void {\n if (!isObservable(this.state)) {\n this.tableState = {\n ...this.state,\n filters: this.state.filters,\n };\n this.loadEntities(this.tableState);\n }\n }\n public dataStateChange(primeTableState: PrimeTableState): void {\n this.tableState = {\n ...primeTableState,\n expand: this.expanders,\n apply: this.appliedTransformations,\n };\n this.loadEntities(this.tableState);\n }\n\n public excelData = (): Observable<ENTITY[]> => this.tableData$;\n\n public loadEntities(primeTableState: PrimeTableState): void {\n this.tableState = {\n ...primeTableState,\n multiSortMeta: this.validateSortParameters(primeTableState.multiSortMeta),\n };\n this.expanders = primeTableState.expand;\n this.appliedTransformations = primeTableState.apply;\n this.facade.loadEntities(this.tableState);\n }\n\n public validateSortParameters(multiSortMeta?: SortMeta[]): SortMeta[] {\n if (\n multiSortMeta?.length &&\n multiSortMeta?.length > this.maxSortedColumnCount\n ) {\n multiSortMeta = multiSortMeta.slice(0, this.maxSortedColumnCount);\n\n console.warn(\n `You have exceeded the limit of ${this.maxSortedColumnCount} sorted columns for the current table. MAX-Sorted-Column-Count`,\n ); //NOSONAR\n }\n return multiSortMeta || [];\n }\n\n public updateRouterState(state: PrimeTableState): void {\n if (this.router) {\n const tempState = { ...state };\n delete tempState.select;\n delete tempState.expand;\n this.router.navigate([], {\n relativeTo: this.router.routerState.root,\n queryParams: {\n [this.tableStateQueryKey]: this.serializeTableState(tempState),\n },\n skipLocationChange: false,\n queryParamsHandling: 'merge',\n });\n }\n }\n public reloadEntities(): void {\n this.facade.reloadEntities();\n }\n}\n","import { LazyLoadEvent, SortMeta } from 'primeng/api';\n\nexport function handleMultiColumnSorting(\n val: LazyLoadEvent,\n sortState: SortMeta[],\n): SortMeta[] {\n //The following code is due to a bug in the MultiSortMeta\n //This object is currently only returning the lastest user defined sort\n if (val.multiSortMeta && val.multiSortMeta.filter((t) => t).length) {\n const sort = val.multiSortMeta[0];\n const matchingSort = sortState.find((f) => sort.field === f.field);\n sortState = sortState.filter((f) => sort.field !== f.field);\n if (!matchingSort || matchingSort.order !== -1) {\n sortState.push(sort);\n }\n }\n return sortState;\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { IPrimeODataTableFacade } from './prime-odata-table-facade';\nimport { Table } from 'primeng/table';\nimport { Subscriptions } from 'imng-ngrx-utils';\nimport { ImngPrimeODataTableBaseComponent } from './prime-odata-component-base';\nimport { FilterMetadata, LazyLoadEvent, SortMeta } from 'primeng/api';\nimport { handleMultiColumnSorting } from './helpers/handle-multi-column-sorting';\nimport { PrimeTableState } from './models/prime-table-state';\nimport { IdType } from 'imng-nrsrx-client-utils';\n\n@Directive({\n selector: '[imngODataTable]',\n standalone: false\n})\nexport class ImngPrimeODataTableDirective implements OnInit, OnDestroy {\n @Input('imngODataTable')\n public odataTableComponent: ImngPrimeODataTableBaseComponent<\n object,\n IPrimeODataTableFacade<{ id?: IdType | null }>\n >;\n private facade: IPrimeODataTableFacade<{ id?: IdType | null }>;\n private sortState: SortMeta[] = [];\n public readonly allSubscriptions = new Subscriptions();\n constructor(\n public readonly tableComponent: Table,\n public readonly changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n this.facade = this.odataTableComponent.facade || ({} as never);\n this.tableComponent.responsiveLayout = 'scroll';\n this.tableComponent.paginator = true;\n this.tableComponent.lazy = true;\n this.tableComponent.styleClass = 'p-datatable-gridlines';\n this.tableComponent.sortMode = 'multiple';\n this.tableComponent.showCurrentPageReport = true;\n this.tableComponent.rowHover = true;\n this.tableComponent.resizableColumns = true;\n this.tableComponent.reorderableColumns = true;\n this.tableComponent.currentPageReportTemplate =\n 'Showing {first} to {last} of {totalRecords} entries';\n this.tableComponent.rowsPerPageOptions =\n this.odataTableComponent.rowsPerPageOptions;\n\n this.allSubscriptions.push(\n this.facade.tableData$.subscribe((t) => {\n this.tableComponent.value = t || [];\n this.changeDetectorRef.markForCheck();\n }),\n );\n this.allSubscriptions.push(\n this.facade.activeEffectCount$.subscribe((t) => {\n this.tableComponent.loading = t > 0;\n this.changeDetectorRef.markForCheck();\n }),\n );\n this.allSubscriptions.push(\n this.facade.totalRecordCount$.subscribe((t) => {\n this.tableComponent.totalRecords = t || 0;\n this.changeDetectorRef.markForCheck();\n }),\n );\n this.allSubscriptions.push(\n this.facade.tableState$.subscribe((newTableState) => {\n this.tableComponent.rows = newTableState?.rows || 20;\n if (\n newTableState.first &&\n this.tableComponent.first !== newTableState.first\n ) {\n this.tableComponent.first = newTableState.first;\n }\n if (newTableState.filters) {\n const newFilters: { [s: string]: FilterMetadata[] } = {};\n Object.keys(newTableState.filters)\n .filter((newFilterKey) => newTableState.filters?.[newFilterKey])\n .forEach((newFilterKey) => {\n newFilters[newFilterKey] = [\n ...(newTableState.filters?.[newFilterKey]?.map(\n (filterMetadata) => ({\n ...filterMetadata,\n }),\n ) || []),\n ];\n });\n this.tableComponent.filters = newFilters;\n }\n this.tableComponent.multiSortMeta =\n newTableState.multiSortMeta?.map((sort) => ({\n ...sort,\n })) || [];\n this.changeDetectorRef.markForCheck();\n }),\n );\n this.allSubscriptions.push(\n this.tableComponent.onLazyLoad.subscribe((x: LazyLoadEvent) => {\n this.tableComponent.multiSortMeta =\n this.sortState =\n x.multiSortMeta =\n this.odataTableComponent.validateSortParameters(\n handleMultiColumnSorting(x, this.sortState),\n );\n if (x.globalFilter && x.filters?.['global']) {\n const globalFilter = x.filters['global'];\n this.tableComponent.globalFilterFields?.forEach((field) => {\n const filterVal = x.filters?.[field] as FilterMetadata[];\n if (filterVal.length === 1) {\n filterVal[0].value = globalFilter.value;\n filterVal[0].matchMode = globalFilter.matchMode;\n filterVal[0].operator = 'or';\n }\n });\n delete x.filters['global'];\n }\n this.facade.loadEntities(x as PrimeTableState);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.allSubscriptions.unsubscribeAll();\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Component({\n selector: 'imng-prime-search-caption',\n templateUrl: './search-caption.component.html',\n styleUrls: ['./search-caption.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SearchCaptionComponent {\n @Input()\n public dataTable: Table;\n}\n","<div class=\"d-flex flex-row-reverse\">\n <button\n pButton\n label=\"Clear\"\n class=\"btn btn-outline-secondary ms-2\"\n (click)=\"dataTable.clear()\">\n <em class=\"pi pi-filter-slash\"></em>\n Clear\n </button>\n <div class=\"input-group w-25\">\n <input\n type=\"text\"\n class=\"form-control\"\n #globalFilter\n pInputText\n (keyup)=\"dataTable.filterGlobal(globalFilter.value, 'contains')\"\n placeholder=\"Search keyword\" />\n <button pButton label=\"Clear\" class=\"btn btn-outline-secondary\">\n <em class=\"pi pi-search\"></em>\n Search\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ImngPrimeODataTableDirective } from './prime-odata-table.directive';\nimport { TableModule } from 'primeng/table';\nimport { SearchCaptionComponent } from './search-caption/search-caption.component';\n\n@NgModule({\n imports: [CommonModule, TableModule],\n declarations: [\n ImngPrimeODataTableDirective,\n SearchCaptionComponent\n ],\n exports: [\n ImngPrimeODataTableDirective,\n SearchCaptionComponent\n ],\n})\nexport class ImngPrimeTableODataModule { }\n","import {\n ChildFilter,\n CompositeFilter,\n Filter,\n getFilterOperator,\n isCompositeFilter,\n ODataQuery,\n Sort,\n} from 'imng-odata-client';\nimport { PrimeTableState } from '../models/prime-table-state';\n\nexport function toODataQuery(val: PrimeTableState): ODataQuery {\n const query: ODataQuery = {\n ...val,\n orderBy: val.multiSortMeta?.map(\n (x): Sort => ({\n field: x.field,\n dir: x.order === -1 ? 'desc' : 'asc',\n }),\n ),\n skip: val.first,\n top: val.rows,\n };\n\n if (val.filters) {\n const filters = Object.keys(val.filters || {})\n .filter((key) => val.filters?.[key]?.some((e) => e.value))\n .map((key) => ({\n key,\n collection: val.filters?.[key] || [],\n }))\n .filter(\n (metaData) =>\n metaData.collection?.filter((filter) => filter.value).length,\n )\n .map(\n (t): CompositeFilter => ({\n logic: t.collection?.every((e) => e.operator === 'and')\n ? 'and'\n : 'or',\n filters: t.collection.map(\n (m): Filter => ({\n field: t.key,\n operator: getFilterOperator(m.matchMode || 'eq'),\n value: m.value,\n }),\n ),\n }),\n );\n if (filters?.length) {\n query.filter = {\n logic: filters.some((e) => e.logic === 'or') ? 'or' : 'and',\n filters,\n };\n }\n }\n delete (query as { filters: undefined }).filters;\n delete (query as { multiSortMeta: undefined }).multiSortMeta;\n if (query.filter) {\n query.filter = transformPrimeRelatedTableFilters(query.filter);\n }\n return query;\n}\n\nexport function transformPrimeRelatedTableFilters(\n filter: CompositeFilter,\n): CompositeFilter {\n if (filter) {\n filter.filters = filter.filters.map((x) => {\n if (isCompositeFilter(x)) {\n return transformPrimeRelatedTableFilters(x);\n } else if (x.field.indexOf('/') > 0) {\n const fieldSegments = x.field.split('/');\n return <ChildFilter>{\n ...x,\n childTable: fieldSegments[0].replace('.', '/'),\n field: fieldSegments.filter((v, i) => i > 0).join('/'),\n linqOperation: 'any',\n };\n } else if (x.field.indexOf('.') > 0) {\n x.field = x.field.replace(/\\./g, '/');\n }\n return x;\n });\n }\n return filter;\n}\n","import { PrimeODataTableState } from '../models/prime-odata-table-state';\n\nexport function createPrimeODataTableInitialState<\n TEntity,\n>(): PrimeODataTableState<TEntity> {\n return {\n tableData: [],\n totalRecordCount: 0,\n activeEffectCount: 0,\n tableState: {},\n error: undefined,\n };\n}\n","export function incrementActiveEffectCount<\n T extends {\n activeEffectCount: number;\n },\n>(state: T): T {\n return {\n ...state,\n activeEffectCount: state.activeEffectCount + 1,\n };\n}\n\nexport function decrementActiveEffectCount<\n T extends {\n activeEffectCount: number;\n },\n>(state: T): T {\n return {\n ...state,\n activeEffectCount:\n state.activeEffectCount - 1 < 0 ? 0 : state.activeEffectCount - 1,\n };\n}\n","import { decrementActiveEffectCount } from './helpers/crement-active-effect-count';\n\nexport function imngPrimeEffectErrorReducer<\n T extends { activeEffectCount: number; error: unknown },\n>(state: T, effectError: { payload: { error: Error } }): T {\n return {\n ...decrementActiveEffectCount(state),\n error: effectError.payload.error,\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}