{"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":["/* eslint-disable @angular-eslint/prefer-inject */\nimport { 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  ICompositeFilter,\n  Expander,\n  IFilter,\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})\nexport abstract class ImngPrimeODataTableBaseComponent<\n  ENTITY extends { id?: IdType | null },\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 convention:\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: IFilter | ICompositeFilter) {\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 latest user defined sort\n  if (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?.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  inject,\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})\nexport class IMNG_PRIME_TABLE implements OnInit, OnDestroy {\n  readonly tableComponent = inject(Table);\n  readonly changeDetectorRef = inject(ChangeDetectorRef);\n\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\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})\nexport class IMNG_PRIME_SEARCH_CAPTION {\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 { IMNG_PRIME_TABLE } from './prime-odata-table.directive';\nimport { TableModule } from 'primeng/table';\nimport { IMNG_PRIME_SEARCH_CAPTION } from './search-caption/search-caption.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TableModule,\n    IMNG_PRIME_TABLE,\n    IMNG_PRIME_SEARCH_CAPTION,\n  ],\n  exports: [IMNG_PRIME_TABLE, IMNG_PRIME_SEARCH_CAPTION],\n})\nexport class ImngPrimeTableODataModule {}\n","import {\n  IChildFilter,\n  ICompositeFilter,\n  IFilter,\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): ICompositeFilter => ({\n          logic: t.collection?.every((e) => e.operator === 'and')\n            ? 'and'\n            : 'or',\n          filters: t.collection.map(\n            (m): IFilter => ({\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: ICompositeFilter,\n): ICompositeFilter {\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 <IChildFilter>{\n          ...x,\n          childTable: fieldSegments[0].replaceAll('.', '/'),\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.replaceAll('.', '/');\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":[],"mappings":"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"}