@one-paragon/angular-utilities 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +4 -4
  2. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +3 -3
  3. package/esm2022/http-request-state/HttpRequestStateStore.mjs +5 -4
  4. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +1 -1
  5. package/esm2022/http-request-state/directives/request-state-directive.mjs +1 -1
  6. package/esm2022/table-builder/classes/filter-info.mjs +1 -1
  7. package/esm2022/table-builder/components/array-column.component.mjs +37 -29
  8. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +7 -6
  9. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +4 -5
  10. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +4 -5
  11. package/esm2022/table-builder/components/filter/filter.component.mjs +7 -8
  12. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +21 -15
  13. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +5 -5
  14. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +5 -5
  15. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +15 -11
  16. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +6 -7
  17. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +5 -5
  18. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +5 -6
  19. package/esm2022/table-builder/components/link-column.component.mjs +22 -20
  20. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +4 -5
  21. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +8 -8
  22. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +4 -3
  23. package/esm2022/table-builder/components/table-container/table-container.mjs +3 -3
  24. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +8 -8
  25. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +5 -5
  26. package/esm2022/table-builder/enums/filterTypes.mjs +30 -30
  27. package/esm2022/utilities/directives/dialog.mjs +4 -3
  28. package/esm2022/utilities/pipes/function.pipe.mjs +1 -1
  29. package/fesm2022/one-paragon-angular-utilities.mjs +182 -157
  30. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  31. package/http-request-state/HttpRequestStateFactory.d.ts +3 -2
  32. package/http-request-state/HttpRequestStateStore.d.ts +6 -5
  33. package/http-request-state/directives/http-success-state-directive.d.ts +7 -7
  34. package/http-request-state/directives/request-state-directive.d.ts +5 -5
  35. package/package.json +1 -1
  36. package/table-builder/classes/filter-info.d.ts +94 -7
  37. package/table-builder/components/array-column.component.d.ts +1 -1
  38. package/table-builder/components/column-builder/column-builder.component.d.ts +1 -1
  39. package/table-builder/components/filter/filter.component.d.ts +93 -352
  40. package/table-builder/components/in-filter/in-filter.component.d.ts +1 -1
  41. package/table-builder/components/table-container/table-container-imports.d.ts +3 -2
  42. package/table-builder/enums/filterTypes.d.ts +47 -7
  43. package/utilities/pipes/function.pipe.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/http-request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateFactory.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/GenericTableDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/classes/data-filter.ts","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container-imports.ts","../../../projects/angular-utilities/src/table-builder/ngrx/tableBuilderStateStore.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nexport enum HttpRequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\n export type HttpRequestStateCancelled = {\r\n status: HttpRequestStatus.cancelled\r\n }\r\n\r\n export type HttpRequestStateNotStarted = {\r\n status: HttpRequestStatus.notStarted\r\n }\r\n\r\n export type HttpRequestStateInProgress = {\r\n status: HttpRequestStatus.inProgress\r\n }\r\n\r\n export type HttpRequestStateSuccess<T> = {\r\n status: HttpRequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type HttpRequestStateError = {\r\n status: HttpRequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export type HttpRequestState<T = any> =\r\n HttpRequestStateCancelled |\r\n HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\nexport enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions {\r\n strategy?: HttpRequestStrategy\r\n}\r\n\r\nexport type HttpRequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { HttpRequestState, HttpRequestStateError, HttpRequestStateInProgress, HttpRequestStateNotStarted, HttpRequestStateSuccess, HttpRequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: HttpRequestState<T>): state is HttpRequestStateError {\r\n return state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: HttpRequestState<T>): state is HttpRequestStateSuccess<T> {\r\n return state.status === HttpRequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: HttpRequestState<T>): state is (HttpRequestStateSuccess<T> | HttpRequestStateError) {\r\n return state.status === HttpRequestStatus.success || state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): HttpRequestStateSuccess<T> {\r\n return { status: HttpRequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): HttpRequestStateError {\r\n return { status: HttpRequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: HttpRequestStateNotStarted = { status: HttpRequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: HttpRequestStateInProgress = { status: HttpRequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: HttpRequestStatus) {\r\n return [HttpRequestStatus.success, HttpRequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nexport function defaultShareReplay<T>() {\n return function (src: Observable<T>): Observable<T> {\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n };\n}","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestStateAny<T>;\r\n state?: HttpRequestStateAny<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]', standalone: true })\r\nexport class HttpRequestStateDirective<TParam extends any[], T> {\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<HttpRequestState<T>>>();\r\n state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: HttpRequestState<T>) => void)[] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: HttpRequestStateStore<TParam, T> | Observable<HttpRequestState<T>>) {\r\n if (isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n ) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe(state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === HttpRequestStatus.success;\r\n this.ViewContext.status.error = state.status === HttpRequestStatus.fail;\r\n this.hooks.forEach(hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: HttpRequestStateDirective<any, T>, ctx: any): ctx is HttpRequestStateViewContext<T> {\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n status: HttpRequestStatus;\r\n body?: T;\r\n error?: any;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase {\r\n hasView = false;\r\n constructor(\r\n private injector: Injector,\r\n protected templateRef: TemplateRef<any>,\r\n protected viewContainer: ViewContainerRef,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if(parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n ngOnDestroy() {\r\n \r\n }\r\n\r\n private baseRender = (state:HttpRequestState ) : void => {\r\n if (this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: HttpRequestState) => boolean;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]', standalone: true })\r\nexport class HttpErrorStateDirective<TParam extends any[], T> extends HttpStateDirectiveBase {\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector, templateRef, viewContainer);\r\n }\r\n\r\n render = (state: HttpRequestState<any>) => {\r\n if (isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]', standalone: true })\r\nexport class HttpInProgressStateDirective extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]', standalone: true })\r\nexport class HttpNotStartedStateDirective<TParam extends any[],T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","import { Directive, Injector, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]', standalone: true })\r\nexport class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {\r\n @Input() httpSuccessStateTypeSafety?: HttpRequestStateStore<any, T> | Observable<HttpRequestState<T>>;\r\n render = (state: HttpRequestState<T>) => {\r\n if (isSuccessState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n return true;\r\n }\r\n return false;\r\n };\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<{ $implicit: T }>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector, templateRef, viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: HttpSuccessStateDirective<T>, ctx: any): ctx is HttpSuccessStateViewContext<T> {\r\n return true;\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\nimport { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport const getRequestorBody = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n filter(isSuccessState),\n map( res => res.body)\n );","import { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const getRequestorStatus = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n map( res => res.status)\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<HttpRequestState>): Observable<HttpRequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<HttpRequestState<T>>): Observable<HttpRequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\n return function (src: Observable<T>): Observable<T | TResult> {\n return src.pipe(catchError(e => of(projection(e))),);\n };\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { HttpRequestFactory, HttpRequestState, HttpRequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<HttpRequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<HttpRequestState<Res>>;\r\n status$: Observable<HttpRequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: HttpRequestFactory<TParam,T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<HttpRequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<HttpRequestState<T>>,\r\n request:HttpRequestFactory<TParam,TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n ): Observable<HttpRequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === HttpRequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule { }","import { Observable, of, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, pluck, startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Directive } from '@angular/core';\r\n\r\nexport interface RequestResponse<TParam extends any[],T> {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n}\r\n\r\n@Directive()\r\nexport class HttpRequestStateStore<TParam extends any[], T> extends ComponentStore<RequestResponse<TParam,T>> {\r\n\r\n constructor(private req: HttpRequestFactory<TParam,T> ,private options?: RequestStateOptions) {\r\n super({ requestParams: null as any ,response: notStarted });\r\n this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n }\r\n\r\n reset() {\r\n this.setState({ requestParams:null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === HttpRequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n if(this.options?.strategy === HttpRequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {\r\n return (obs).pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n );\r\n });\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if (this.get().response.status !== HttpRequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n\r\n selectHttpState$ = this.state$.pipe(map(a => a.response));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));\r\n\r\n selectError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isErrorState),\r\n map( state => state.error)\r\n );\r\n\r\n selectResponse$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n selectSuccessOrError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map( () => null)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.on(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body?: T) => void) {\r\n this.on(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.on(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(func: (state: {\r\n requestParams: [...TParam];\r\n body: T;\r\n }) => void) {\r\n this.onUpdate(({ requestParams, response }) => {\r\n if(isSuccessState(response)){\r\n func({requestParams,body: response.body});\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(func: (state: {\r\n error: HttpErrorResponse;\r\n requestParams: [...TParam];\r\n }) => void) {\r\n this.onUpdate( ({ requestParams, response }) => {\r\n if(isErrorState(response)){\r\n func({ requestParams, error: response.error });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam,T>> {\r\n return this.req(...params).pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n onUpdate(func: (state: {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n }) => void) {\r\n this.on(this.state$, func);\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return this.effect((src: Observable<V>) => {\r\n return src.pipe(tap(func));\r\n })(srcObservable) as Subscription;\r\n }\r\n\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n }\r\n\r\n export class CancellationToken {}\r\n","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { HttpRequestFactory, RequestStateOptions } from \"./types\";\r\nimport { HttpRequestStateStore } from './HttpRequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class HttpRequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.ngOnDestroy());\r\n }\r\n private requestors: OnDestroy[] = [];\r\n create<TParam extends any[], T>( req: HttpRequestFactory<TParam,T>, options?: RequestStateOptions ) : HttpRequestStateStore<TParam,T> {\r\n const requestor = new HttpRequestStateStore(req, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions ) {\r\n const requestor = new HttpRequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'spaceCase', standalone: true})\r\nexport class SpaceCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n return spaceCase(value);\r\n }\r\n}\r\n\r\n/**\r\n * Adds a space before uppercase letters that either\r\n * 1. follows a lowercase letter or digit\r\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\r\n * \r\n * Uppercases the first digit\r\n * \r\n * Turns underscores into spaces\r\n */\r\nexport function spaceCase(value: string){\r\n const phrase = value?.replace(/([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, '$1$3 $2$4')\r\n // uppercase the first character of every word\r\n return phrase?.replace(/(^| )(\\w)/g, x => x.toUpperCase());\r\n}\r\n","import { Dictionary } from './dictionary';\r\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\r\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\r\nimport { QueryParamsHandling } from '@angular/router';\r\n\r\n\r\nexport enum FieldType {\r\n Unknown = 0,\r\n Date = 1,\r\n Link = 2,\r\n ImageUrl = 3,\r\n Currency = 4,\r\n Array = 5,\r\n Hidden = 6,\r\n Number = 7,\r\n String = 8,\r\n Boolean = 9,\r\n PhoneNumber = 10,\r\n Expression = 11,\r\n Enum = 12,\r\n DateTime = 13,\r\n}\r\n\r\nexport enum SortDirection {\r\n asc= 'asc',\r\n desc= 'desc'\r\n}\r\n\r\nexport enum Target {\r\n Blank = '_blank',\r\n Self = '_self',\r\n Parent = '_parent',\r\n Top = '_top'\r\n}\r\n\r\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\r\n key: (keyof T | AdditionalFields[number]) & string;\r\n displayName?: string;\r\n fieldType: FieldType;\r\n additional?: Additional<T>;\r\n order?: number;\r\n preSort?: SortDef;\r\n _internalNotUserDefined?: boolean;\r\n width?: string;\r\n noExport?: boolean;\r\n noFilter?: boolean;\r\n noSort?: boolean;\r\n customCell?: boolean;\r\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\r\n click?: (element: T, key: string ) => void;\r\n template?: TemplateRef<any>;\r\n classes?: Dictionary<Predicate<T>>;\r\n toolTip?: string;\r\n useIcon?: boolean;\r\n}\r\nexport interface ReportDef<DataType = any> {\r\n data: DataType[];\r\n metaData: MetaData [];\r\n totalRecords?: number;\r\n count: number;\r\n}\r\n\r\nexport interface SortDef {\r\n direction: SortDirection;\r\n precedence?: number;\r\n}\r\n\r\nexport interface FilterOptions {\r\n filterableValues : string[]\r\n}\r\nexport interface DateTimeOptions {\r\n format?: string;\r\n includeSeconds?: boolean;\r\n includeMilliseconds: boolean;\r\n}\r\ntype interpolatedRoute = string;\r\nexport interface Additional<T = any> {\r\n link? : {\r\n base?: string;\r\n urlKey?: string;\r\n target?: Target;\r\n useRouterLink?: boolean;\r\n /**\r\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\r\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\r\n */\r\n interpolatedRoute?: interpolatedRoute;\r\n routerLinkOptions?:{\r\n queryParams?: [string, interpolatedRoute][];\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n }\r\n /**\r\n * @deprecated Please use link.base\r\n */\r\n base?: string;\r\n /**\r\n * @deprecated Please use link.urlKey\r\n */\r\n urlKey?: string;\r\n /**\r\n * @deprecated Please use link.target\r\n */\r\n target?: Target;\r\n /**\r\n * @deprecated Please use link.useRouterLink\r\n */\r\n useRouterLink?: boolean;\r\n footer?: { type: 'sum' };\r\n grouping?: { groupBy?: boolean, sum?: boolean; groupTitleFn?: (val: any) => string }\r\n export?: TableBuilderExport;\r\n dateFormat?: string;\r\n dateTimeOptions?: DateTimeOptions;\r\n filterOptions?: FilterOptions;\r\n styles?: Dictionary<string>;\r\n columnPartStyles?: {\r\n header?: Dictionary<string>,\r\n body?: Dictionary<string>,\r\n footer?: Dictionary<string>,\r\n }\r\n columnPartClasses?: {\r\n header?: Dictionary<Predicate<T>>,\r\n footer?: Dictionary<Predicate<T>>,\r\n }\r\n enumMap?: {[key:number]:string};\r\n boolean? : {\r\n showForFalse? : true | { icon : string },\r\n forTrue? : { icon : string }\r\n }\r\n}\r\n\r\nexport enum ArrayStyle {\r\n CommaDelimited,\r\n NewLine\r\n}\r\n\r\nexport interface ArrayAdditional extends Additional {\r\n limit?: number;\r\n arrayStyle?: ArrayStyle;\r\n}\r\n","import { merge } from \"lodash\";\r\n\r\nexport class GeneralTableSettings {\r\n constructor(settings? : TableBuilderSettings){\r\n if(settings){\r\n merge(this.headerSettings, settings.headerSettings);\r\n merge(this.footerSettings, settings.footerSettings);\r\n merge(this.columnHeaderSettings, settings.columnHeaderSettings);\r\n }\r\n }\r\n headerSettings = new TableWrapperHeaderSettings();\r\n footerSettings = new TableWrapperFooterSettings();\r\n columnHeaderSettings = new TableColumnHeaderSettings();\r\n}\r\n\r\nexport interface TableBuilderSettings {\r\n headerSettings? : Partial<TableWrapperHeaderSettings>;\r\n footerSettings? : Partial<TableWrapperFooterSettings>;\r\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\r\n}\r\n\r\nexport class TableWrapperHeaderSettings {\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideHeader = false\r\n hideSort = false\r\n collapse = false\r\n showTitleWhenCollapsed = true;\r\n}\r\n\r\nexport class TableWrapperFooterSettings {\r\n collapse = false\r\n}\r\n\r\nexport class TableColumnHeaderSettings {\r\n noFilters = false;\r\n noHeader = false;\r\n}\r\n\r\nexport class PersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings | PersistedTableSettings){\r\n if (tableSettings){\r\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseHeader;\r\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseFooter;\r\n }\r\n }\r\n collapseHeader = false;\r\n collapseFooter = false;\r\n}\r\n\r\nexport class NotPersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings){\r\n if(tableSettings){\r\n this.hideExport = tableSettings.headerSettings.hideExport;\r\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\r\n this.hideFilter = tableSettings.headerSettings.hideFilter;\r\n this.hideSort = tableSettings.headerSettings.hideSort;\r\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\r\n this.hideHeader = tableSettings.headerSettings.hideHeader;\r\n this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;\r\n this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;\r\n }\r\n }\r\n hideExport = true\r\n hideFilter = true\r\n hideColumnSettings = true\r\n hideSort = true\r\n showTitleWhenHeaderCollapsed = true;\r\n hideHeader = true\r\n hideColumnHeaderFilters = true;\r\n hideColumnHeader = true;\r\n}\r\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData, Target } from '../interfaces/report-def';\r\nimport { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface Group {\r\n groupName?: string;\r\n parentGroupName?: string;\r\n isExpanded?: boolean;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : { order:Dictionary<number>, widths:Dictionary<number>, table:{ width?:number }, pageSize?: number };\r\n persistedTableSettings : PersistedTableSettings;\r\n groupByKeys: string[];\r\n groups: Group[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersistedTableSettings : NotPersistedTableSettings;\r\n pageSize: number;\r\n linkMaps:{[key:string]:{\r\n link: (t:any)=>string,\r\n useRouterLink: boolean,\r\n target: Target\r\n }};\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersistedTableSettings = null;\r\n linkMaps = null;\r\n pageSize = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n LoadedFromStore,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{ order: {}, widths: {}, table: {}},\r\n persistedTableSettings : new PersistedTableSettings(),\r\n notPersistedTableSettings : new NotPersistedTableSettings(),\r\n pageSize: 10,\r\n linkMaps:{},\r\n groupByKeys: [],\r\n groups: []\r\n};\r\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\r\n\r\n// here is how to use it\r\n// <generic-table [report]=\"report\">\r\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\r\n// <p *customCell=\"'column2'\">I am custom cell two </p>\r\n// </generic-table>\r\n@Directive({\r\n selector: '[customCell]',\r\n standalone: true\r\n})\r\nexport class CustomCellDirective implements AfterContentInit {\r\n @Input() customCell!: string;\r\n @Input() displayName?: string;\r\n @Input() preSort?: SortDef;\r\n @Input() TemplateRef: TemplateRef<any>;\r\n @Input() customCellOrder?: number;\r\n @Input() customCellWidth?: string;\r\n constructor(\r\n @Optional() private templateRef: TemplateRef<any>,\r\n @Optional() public columnDef: CdkColumnDef\r\n ) {\r\n this.TemplateRef = this.templateRef;\r\n }\r\n ngAfterContentInit() {\r\n if (this.TemplateRef === null) {\r\n this.TemplateRef = this.templateRef;\r\n }\r\n }\r\n\r\n getMetaData(metaData? : MetaData): MetaData {\r\n return {\r\n key: this.customCell,\r\n displayName: this.displayName ?? metaData?.displayName,\r\n preSort: this.preSort ?? metaData?.preSort,\r\n fieldType: metaData?.fieldType ?? FieldType.Unknown,\r\n order: this.customCellOrder ?? metaData?.order,\r\n _internalNotUserDefined: !(!!metaData),\r\n width: this.customCellWidth ?? metaData?.width,\r\n customCell: true,\r\n noExport: !metaData\r\n };\r\n }\r\n}\r\n","import { Predicate } from '@angular/core';\r\nimport { flatten } from 'lodash';\r\nimport {\r\n filter,\r\n first,\r\n map,\r\n pairwise,\r\n startWith,\r\n Observable,\r\n combineLatest,\r\n Subscription,\r\n MonoTypeOperatorFunction,\r\n OperatorFunction,\r\n concatMap,\r\n merge,\r\n of,\r\n delay\r\n} from 'rxjs';\r\n\r\n\r\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\r\n return src.pipe(filter(predicate),first());\r\n}\r\n\r\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.map(mapFunc) ) );\r\n\r\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.filter(filterFunc) ) );\r\n\r\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\r\n return (source: Observable<T>) => {\r\n return new Observable<T>(subscriber => {\r\n let emitted = false;\r\n setTimeout(() => {\r\n if(!emitted) {\r\n subscriber.next(val);\r\n }\r\n }, 0);\r\n source.subscribe({\r\n next(x) { emitted = true; subscriber.next(x) },\r\n error(err) { emitted = true; subscriber.error(err) },\r\n complete() { emitted = true; subscriber.complete(); }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\r\n return combineLatest(\r\n sources.map( src => src.pipe(onWait([])))\r\n ).pipe(\r\n map( res => flatten(res) )\r\n );\r\n};\r\n\r\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsciber => {\r\n let isOn = defaultState;\r\n const subscription = new Subscription();\r\n subscription.add( switchSource.subscribe( on => isOn = on ));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(isOn) {\r\n subsciber.next(value);\r\n }\r\n },\r\n error: error => subsciber.error(error),\r\n complete: () => subsciber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function skipOneWhen( skipper: Observable<any> ) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsriber => {\r\n const subscription = new Subscription();\r\n let skipNext = false;\r\n subscription.add(skipper.subscribe( _ => skipNext = true));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(skipNext) {\r\n skipNext = false;\r\n } else {\r\n subsriber.next(value);\r\n }\r\n },\r\n error: error => subsriber.error(error),\r\n complete: () => subsriber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\r\n return (source: Observable<T>) => {\r\n return source.pipe(startWith(startingValue), pairwise());\r\n }\r\n}\r\n\r\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\r\n return (source: Observable<T | null | undefined>) => {\r\n return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\r\n }\r\n}\r\n\r\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\r\n return (src: Observable<T>) => {\r\n return src.pipe(\r\n concatMap(r => {\r\n if (predicate(r)) {\r\n return merge(\r\n of({ r }),\r\n of(null).pipe(delay(delayTime))\r\n ).pipe(\r\n notNull(),\r\n map(d => d.r)\r\n );\r\n } else {\r\n return of(r);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\r\ntype PipeLike<T> = Observable<T>['pipe'];\r\nexport class Subjectifier<T> extends Observable<T>{\r\n private _subj = new Subject<T>();\r\n private merged = merge(this._source, this._subj);\r\n constructor(private _source: Observable<T>){\r\n super((obs: Observer<T>) => {\r\n const s = merge( _source, this._subj ).subscribe(obs);\r\n return s;\r\n });\r\n }\r\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\r\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\r\n new Subjectifier(this.merged.pipe(...operations));\r\n}","import { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { defaultShareReplay } from \"../../rxjs\";\r\nimport { TableStore } from \"../classes/table-store\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n standalone: true\r\n})\r\nexport class ResizeColumnDirective implements OnInit{\r\n @Input(\"resizeColumn\") resizable!: boolean;\r\n\r\n @Input() key!: string;\r\n constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\r\n\r\n ngOnInit(){\r\n if (this.resizable){\r\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\r\n const resizer = this.createResizerSpanInColumnHead(columnHead);\r\n\r\n const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer,columnHead,table)\r\n\r\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\r\n filter(({mouseMove})=>!!mouseMove.buttons),\r\n map( ({mouseDownData,mouseMove}) => {\r\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\r\n return ({\r\n key:this.key,\r\n widthInPixel:newColumnWidth,\r\n tableSize:newTableWidth,\r\n })\r\n }),\r\n defaultShareReplay()\r\n );\r\n\r\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\r\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\r\n ));\r\n\r\n this.store.setTableWidth(resizeColsData$.pipe(\r\n map(resizeData => resizeData.tableSize )));\r\n }\r\n\r\n }\r\n\r\n createResizerSpanInColumnHead(columnHead:HTMLElement){\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n resizer.style['cursor']='col-resize';\r\n resizer.style['user-select']='none';\r\n resizer.style['width']='10px';\r\n resizer.style['height']='100%';\r\n resizer.style['position']='absolute';\r\n resizer.style['right']='0';\r\n resizer.style['top']='0';\r\n resizer.style['z-index']='1';\r\n this.renderer.appendChild(columnHead, resizer);\r\n return resizer;\r\n }\r\n\r\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\r\n const columnHead: HTMLElement = this.el.nativeElement;\r\n const row = this.renderer.parentNode(columnHead);\r\n const table = this.renderer.parentNode(row);\r\n return ({table,columnHead})\r\n }\r\n\r\n mouseDownThroughMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\r\n .pipe(\r\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\r\n map( mouseMove => ({mouseDownData, mouseMove})),\r\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\r\n ) ),\r\n )\r\n }\r\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\r\n map(event => ({\r\n startPageX: event.pageX,\r\n startColumnWidth: this.getElementWidth(columnHead),\r\n startTableWidth: this.getElementWidth(table),\r\n }))\r\n );\r\n }\r\n\r\n calculateNewWidths(mouseDownData: MouseDownData, mouseMove: MouseEvent):{newTableWidth:number,newColumnWidth:number}{\r\n const change = (mouseMove.pageX - mouseDownData.startPageX );\r\n let newColumnWidth = mouseDownData.startColumnWidth + change;\r\n if(newColumnWidth < 1){\r\n newColumnWidth = 1;\r\n }\r\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\r\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\r\n return ({newTableWidth,newColumnWidth})\r\n }\r\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\r\n\r\n}\r\ninterface MouseDownData{\r\n startPageX:number,\r\n startColumnWidth:number,\r\n startTableWidth:number,\r\n}\r\n","\r\nexport enum FilterType {\r\n NumberEquals = 'Equals',\r\n NumberNotEqual = 'Does Not Equal',\r\n NumberGreaterThan = 'Greater Than',\r\n NumberLessThan = 'Less Than',\r\n NumberBetween = 'Between',\r\n StringEquals = 'Equals',\r\n StringContains = 'Contains',\r\n StringDoesNotContain = 'Does Not Contain',\r\n StringStartWith = 'Start With',\r\n StringEndsWith = 'Ends With',\r\n DateIsOn = 'Is on',\r\n DateIsNotOn = 'Is Not On',\r\n DateOnOrAfter = 'On or After',\r\n DateOnOrBefore = 'On or Before',\r\n DateBetween = 'Between',\r\n DateTimeIsAt = 'Is At',\r\n DateTimeIsNotAt = 'Is Not At',\r\n DateTimeAtOrAfter = 'At or After',\r\n DateTimeAtOrBefore = 'At or Before',\r\n DateTimeBetween = 'Between',\r\n BooleanEquals = 'Is',\r\n IsNull = 'Is Blank',\r\n Or = 'Or',\r\n And = 'And',\r\n In = 'In',\r\n Custom = 'Custom',\r\n}\r\n\r\nexport const NumberFilterMap:FilterToFiltersMap = {\r\n [FilterType.NumberEquals]: [FilterType.NumberEquals],\r\n [FilterType.NumberNotEqual]: [FilterType.NumberNotEqual],\r\n [FilterType.NumberGreaterThan]: [FilterType.NumberGreaterThan],\r\n [FilterType.NumberLessThan]: [FilterType.NumberLessThan],\r\n [FilterType.NumberBetween]: [FilterType.NumberBetween],\r\n [FilterType.IsNull]: [FilterType.IsNull],\r\n [FilterType.In]: [FilterType.In],\r\n};\r\n\r\nexport const StringFilterMap:FilterToFiltersMap = {\r\n [FilterType.StringEquals]: [FilterType.StringEquals],\r\n [FilterType.StringContains]: [FilterType.StringContains],\r\n [FilterType.StringDoesNotContain]: [FilterType.StringDoesNotContain],\r\n [FilterType.StringStartWith]: [FilterType.StringStartWith],\r\n [FilterType.StringEndsWith]: [FilterType.StringEndsWith],\r\n [FilterType.IsNull]: [FilterType.IsNull],\r\n [FilterType.In]: [FilterType.In],\r\n};\r\n\r\nexport const DateFilterMap:FilterToFiltersMap = {\r\n [FilterType.DateIsOn]: [FilterType.DateIsOn],\r\n [FilterType.DateIsNotOn]: [FilterType.DateIsNotOn],\r\n [FilterType.DateOnOrAfter]: [FilterType.DateOnOrAfter],\r\n [FilterType.DateOnOrBefore]: [FilterType.DateOnOrBefore],\r\n [FilterType.DateBetween]: [FilterType.DateBetween],\r\n [FilterType.IsNull]: [FilterType.IsNull],\r\n};\r\n\r\nexport const DateTimeFilterMap:FilterToFiltersMap = {\r\n ...DateFilterMap,\r\n [FilterType.DateTimeIsAt]: [FilterType.DateTimeIsAt],\r\n [FilterType.DateTimeIsNotAt]: [FilterType.DateTimeIsNotAt],\r\n [FilterType.DateTimeAtOrAfter]: [FilterType.DateTimeAtOrAfter],\r\n [FilterType.DateTimeAtOrBefore]: [FilterType.DateTimeAtOrBefore],\r\n [FilterType.DateTimeBetween]: [FilterType.DateTimeBetween],\r\n};\r\n\r\nexport const BooleanFilterMap :FilterToFiltersMap = {\r\n [FilterType.BooleanEquals]: [FilterType.BooleanEquals],\r\n [FilterType.IsNull]: [FilterType.IsNull],\r\n};\r\n\r\nexport const EnumFilterMap : FilterToFiltersMap = {\r\n [FilterType.IsNull] : [FilterType.IsNull],\r\n [FilterType.In] : [FilterType.In]\r\n}\r\n\r\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType[]}>;\r\n","import { Directive, Input, Optional, Predicate, SimpleChanges } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, takeUntil, tap } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FilterType } from \"../enums/filterTypes\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { MatRadioButton } from \"@angular/material/radio\";\r\nimport { MatButtonToggle } from '@angular/material/button-toggle';\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { FieldType } from \"../interfaces/report-def\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\r\nimport { MatOption } from \"@angular/material/core\";\r\n\r\n\r\nconst inputs = [\r\n 'predicate: tbCustomFilter',\r\n 'filterId: filterId',\r\n];\r\n\r\n\r\n@Directive({\r\n selector: ' '\r\n})\r\nexport abstract class TableCustomFilterDirective<T = any> {\r\n abstract filter$ : Observable<CustomFilter>;\r\n filterId!: string;\r\n savable = false;\r\n used = false;\r\n abstract active: boolean;\r\n abstract reset(): void;\r\n}\r\n\r\n\r\n\r\n\r\n@Directive({\r\n selector: \"[tbFilter]\",\r\n standalone: true,\r\n}) export class TableFilterDirective extends ComponentStore<FilterInfo> {\r\n\r\n constructor(@Optional() protected model: NgControl, @Optional() wrapper: TableWrapperDirective) {\r\n super();\r\n if(wrapper) {\r\n wrapper.register(this);\r\n }\r\n if(model) {\r\n this.effect( () => {\r\n return model.valueChanges!.pipe(\r\n tap( val => {\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n )\r\n })\r\n }\r\n }\r\n reset() {\r\n this.filterValue = undefined;\r\n }\r\n filter$ = this.state$;\r\n\r\n @Input() filterType!: FilterType;\r\n @Input() key!: string;\r\n @Input() fieldType!: FieldType;\r\n @Input() filterId!: string;\r\n @Input() active = true;\r\n @Input() filterValue: any = null;\r\n\r\n setFilterValue(value: any) {\r\n if(this.model) {\r\n setTimeout(() => {\r\n this.model.reset(value);\r\n }, 0);\r\n } else {\r\n this.filterValue = value;\r\n }\r\n }\r\n\r\n\r\n used = false;\r\n savable = false;\r\n ready = false;\r\n\r\n _userActive = true;\r\n ngOnChanges(changes: SimpleChanges ) {\r\n this.update();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n this.ready = true;\r\n this.update();\r\n }\r\n\r\n protected setFilter(filter: FilterInfo ) {\r\n this.setState(filter);\r\n }\r\n\r\n update() {\r\n if (this.ready) {\r\n this.setFilter(\r\n {\r\n filterId: this.filterId,\r\n key: this.key,\r\n filterType: this.filterType,\r\n fieldType: this.fieldType,\r\n filterValue: this.filterValue,\r\n active: this.active && this.filterValue !== undefined,\r\n _isExternalyManaged: true,\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[tbFilterStringContains]',\r\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\r\n inputs: [\r\n 'key:tbFilterStringContains',\r\n 'filterValue:filterValue',\r\n 'filterId: filterId',\r\n 'active: active',\r\n ],\r\n standalone: true,\r\n}) export class TableFilterStringContainsDirective extends TableFilterDirective {\r\n constructor(@Optional() model: NgControl, @Optional() wrapper: TableWrapperDirective) {\r\n super(model,wrapper);\r\n this.filterType = FilterType.StringContains;\r\n this.fieldType = FieldType.String;\r\n this.effect( () => {\r\n return model.valueChanges!.pipe(\r\n tap( val => {\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n )\r\n })\r\n }\r\n\r\n override reset() {\r\n if(this.model) {\r\n this.model.reset();\r\n }\r\n super.reset();\r\n }\r\n\r\n override setFilter(filter: FilterInfo) {\r\n filter.active = filter.filterValue && this._userActive;\r\n super.setFilter(filter);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes['active']) {\r\n this._userActive = changes['active'].currentValue;\r\n }\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[tbCustomFilter]\",\r\n})\r\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective<T> {\r\n\r\n filter$! : Subject<CustomFilter>;\r\n filter!: CustomFilter;\r\n @Input() filterId! : string;\r\n\r\n _predicate!: Predicate<T>;\r\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\r\n this._predicate = val;\r\n this.update({predicate:val});\r\n }\r\n\r\n _active: boolean = false;\r\n ready = false;\r\n\r\n update(val: Partial<CustomFilter> ) {\r\n if(this.ready) {\r\n this.filter = {...this.filter,...val};\r\n this.filter$.next(this.filter);\r\n }\r\n }\r\n\r\n @Input() set active(val: boolean) {\r\n if(this._active !== val) {\r\n this._active = val;\r\n this.update({active:val});\r\n }\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n\r\n this.filter = {\r\n filterType: FilterType.Custom,\r\n filterId: this.filterId,\r\n active: this._active,\r\n predicate: this._predicate,\r\n };\r\n this.ready = true;\r\n this.filter$ = new BehaviorSubject(this.filter);\r\n }\r\n}\r\n\r\n@Directive()\r\nexport abstract class TbSelectedFilterDirective<T = any> extends TableCustomFilterDirectiveBase<T> {\r\n\r\n\r\n protected constructor(private change: Observable<any>, private isActive: () => boolean, @Optional() wrapper: TableWrapperDirective) {\r\n super();\r\n if(wrapper) {\r\n wrapper.register(this);\r\n }\r\n }\r\n\r\n reset() {\r\n this.active = false;\r\n }\r\n\r\n destroySubject$ = new ReplaySubject<void>(1);\r\n ngOnDestroy() {\r\n this.destroySubject$.next();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._active = this.isActive();\r\n super.ngOnInit();\r\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\r\n this.active = this.isActive();\r\n });\r\n }\r\n}\r\n\r\n// Checkbox\r\n@Directive({\r\n selector: 'mat-checkbox[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n this.matCheckbox.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matCheckbox: MatCheckbox, @Optional() wrapper: TableWrapperDirective) {\r\n super(matCheckbox.change, () => matCheckbox.checked, wrapper);\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'mat-slide-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatSlideToggleTbFilterDirective<T = any> extends TbSelectedFilterDirective<T> {\r\n override set active(val: boolean) {\r\n this.matSlideToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matSlideToggle: MatSlideToggle, @Optional() wrapper: TableWrapperDirective) {\r\n super(matSlideToggle.change, () => matSlideToggle.checked,wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Radio button\r\n@Directive({\r\n selector: 'mat-radio-button[tbCustomFilter]',\r\n inputs: ['predicate: tbCustomFilter'],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n this.matRadioButton.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matRadioButton: MatRadioButton, @Optional() wrapper: TableWrapperDirective) {\r\n super(matRadioButton.change, () => matRadioButton.checked, wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Option (select)\r\n@Directive({\r\n selector: 'mat-option[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n if(val) {\r\n this.matOption.select();\r\n } else {\r\n this.matOption.deselect();\r\n }\r\n super.active = val;\r\n }\r\n constructor(private matOption: MatOption, @Optional() wrapper: TableWrapperDirective) {\r\n super( matOption.onSelectionChange.pipe(tap( d => {\r\n if(!matOption.value) {\r\n matOption.value = uuid();\r\n }\r\n }\r\n\r\n )), () => matOption.selected, wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Button toggle\r\n@Directive({\r\n selector: 'mat-button-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {\r\n override set active(val: boolean) {\r\n this.matButtonToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matButtonToggle: MatButtonToggle, @Optional() wrapper: TableWrapperDirective) {\r\n super(matButtonToggle.change, () => matButtonToggle.checked,wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { ContentChildren, Directive, QueryList } from \"@angular/core\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\r\n\r\n@Directive({\r\n selector: '[tbWrapper]',\r\n standalone: true,\r\n})\r\nexport class TableWrapperDirective {\r\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\r\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\r\n\r\n registrations : (TableCustomFilterDirective | TableFilterDirective) [] = [];\r\n\r\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\r\n this.registrations.push(filter);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'phone', standalone: true})\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n\r\n transform(phoneNum: string): any {\r\n if (phoneNum) {\r\n phoneNum = phoneNum.replace(/\\D/g,'');\r\n if(phoneNum[0] === '1') {\r\n phoneNum = phoneNum.substring(1);\r\n }\r\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\r\n }\r\n }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { TableState, defaultTableState } from './TableState';\r\nimport { DefaultSettings } from './DefaultSettings';\r\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\r\nimport { MultiSortDirective } from '../directives';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../../utilities/pipes/space-case.pipes';\r\nexport interface TableBuilderConfig {\r\n defaultTableState: Partial<TableState>;\r\n export?: TableBuilderExport;\r\n defaultSettings?: DefaultSettings;\r\n arrayInfo?: ArrayAdditional;\r\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\r\n}\r\n\r\nexport interface TableBuilderExport {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n onSave?: (event?: any) => void;\r\n prepend? : string;\r\n}\r\n\r\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\r\n\r\nexport function provideTableBuilder(config?: TableBuilderConfig) : EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n MultiSortDirective,\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n { provide : TableBuilderConfigToken , useValue: config || defaultTableState}\r\n ])\r\n}\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\n\nexport const isNull:FilterFunc<boolean,any> = (filterInfo:FilterInfo) => {\n const func = filterInfo.filterValue ?\n (val: any) => val == null || val === ''\n :\n (val: any) => val != null && val !== '';\n return func;\n}\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const equelsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val) === equelsVal );\n}\n\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).includes(containsVal));\n}\n\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>!prepareForStringCompare(val)?.includes(doesNotContainVal));\n}\n\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).startsWith(startsWith));\n}\n\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).endsWith(startsWith));\n}\n\nconst multipleStringValuesEqualsFunc:FilterFunc<string[],string> = (filterInfo:FilterInfo) => {\n const filterVals = filterInfo.filterValue.map( (v: string) => prepareForStringCompare(v));\n return ((val)=> filterVals.some((s:string) => prepareForStringCompare(val) === s));\n}\n\nexport const StringFilterFuncs: {[k:string]: FilterFunc<any,any>} = {\n [FilterType.StringEquals]: stringEqualFunc,\n [FilterType.StringContains]: stringContainsFunc,\n [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\n [FilterType.StringStartWith]: stringStartsWithFunc,\n [FilterType.StringEndsWith]: stringEndsWithFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleStringValuesEqualsFunc,\n};\n\nexport const EnumFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.IsNull]: isNull,\n [FilterType.In] : multipleStringValuesEqualsFunc,\n};\n\nexport const prepareForStringCompare = (val : any):string => val?.toString().trim().toLowerCase();\n","import { Range, FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\ntype NumberFilterFunc = FilterFunc<number>\n\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val === filterInfo.filterValue;\n}\n\nconst numberNotEqualFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val !== filterInfo.filterValue;\n}\n\nconst numberGreaterThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val > filterInfo.filterValue;\n}\n\nconst numberLessThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val < filterInfo.filterValue;\n}\n\nconst numberBetweenFunc:FilterFunc<Range<number>,number> = (filterInfo : FilterInfo) => {\n const startVal = Number(filterInfo.filterValue.Start);\n const endVal = Number(filterInfo.filterValue.End);\n return ((val)=>(val > startVal) && (val < endVal));\n}\n\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[],number> = (filterInfo:FilterInfo) => {\n return ((val)=>filterInfo.filterValue.some((value: any) => val === value));\n}\n\nexport const NumberFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.NumberEquals]: numberEqalsFunc,\n [FilterType.NumberNotEqual]: numberNotEqualFunc,\n [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\n [FilterType.NumberLessThan]: numberLessThanFunc,\n [FilterType.NumberBetween]: numberBetweenFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleNumberValuesEqualsFunc,\n};\n","import { FilterFunc, FilterInfo, Range } from '../classes/filter-info';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() === isOnVal);\r\n}\r\n\r\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() !== isNotOnVal);\r\n}\r\n\r\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const afterVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() >= afterVal);\r\n}\r\n\r\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const beforeVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() <= beforeVal);\r\n}\r\n\r\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\r\n const startVal = new Date(filterInfo.filterValue.Start);\r\n const endVal = new Date(filterInfo.filterValue.End);\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return (\r\n (val)=> {\r\n const cleanedVal = clean(filterInfo, val);\r\n return cleanedVal>=startVal && cleanedVal <= endVal;\r\n });\r\n}\r\n\r\nconst cleanDateTime = (filterInfo:FilterInfo, val: Date) => {\r\n if(!!DateFilterFuncs[filterInfo.filterType]){\r\n const d = new Date(val);\r\n d.setHours(0,0,0,0);\r\n return d;\r\n }\r\n return val;\r\n}\r\n\r\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\r\n [FilterType.DateIsOn]: dateIsOnFunc,\r\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\r\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n\r\nexport const DateTimeFilterFuncs: Dictionary<FilterFunc<any,any>> = {\r\n ...DateFilterFuncs,\r\n [FilterType.DateTimeIsAt]: dateIsOnFunc,\r\n [FilterType.DateTimeIsNotAt]: dateIsNotOnFunc,\r\n [FilterType.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateTimeBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\n return filterInfo.filterValue === val;\n}\n\nexport const BooleanFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.BooleanEquals]: booleanEqualsFunc,\n [FilterType.IsNull]: isNull,\n};\n","import { StringFilterMap, DateFilterMap, NumberFilterMap, BooleanFilterMap, FilterType, FilterToFiltersMap, EnumFilterMap, DateTimeFilterMap } from '../enums/filterTypes';\r\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\r\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\r\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Predicate } from '@angular/core';\r\nimport { get } from 'lodash';\r\n\r\ntype FilterTypeMapType = { [key in FieldType]: FilterToFiltersMap};\r\nexport type UnmappedTypes = FieldType.Expression |\r\n FieldType.Hidden |\r\n FieldType.ImageUrl;\r\n\r\n\r\nexport type mappedFieldTypes =\r\n FieldType.Unknown |\r\n FieldType.Date |\r\n FieldType.DateTime |\r\n FieldType.Currency |\r\n FieldType.Array |\r\n FieldType.Number |\r\n FieldType.String |\r\n FieldType.Boolean |\r\n FieldType.PhoneNumber |\r\n FieldType.Link |\r\n FieldType.Enum;\r\n\r\nexport const filterTypeMap: Omit<FilterTypeMapType, UnmappedTypes> = {\r\n [FieldType.Unknown] : StringFilterMap,\r\n [FieldType.Date] : DateFilterMap,\r\n [FieldType.DateTime]: DateTimeFilterMap,\r\n [FieldType.Currency] : NumberFilterMap,\r\n [FieldType.Array] : StringFilterMap,\r\n [FieldType.Number] : NumberFilterMap,\r\n [FieldType.String] : StringFilterMap,\r\n [FieldType.Boolean] : BooleanFilterMap,\r\n [FieldType.PhoneNumber] : StringFilterMap,\r\n [FieldType.Link] : StringFilterMap,\r\n [FieldType.Enum] : EnumFilterMap,\r\n};\r\n\r\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\r\n [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.every( f => f(obj));\r\n },\r\n [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.some( f => f(obj));\r\n },\r\n};\r\n\r\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\r\n [FieldType.String] : StringFilterFuncs,\r\n [FieldType.Array] : StringFilterFuncs,\r\n [FieldType.Currency] : NumberFilterFuncs,\r\n [FieldType.PhoneNumber] : StringFilterFuncs,\r\n [FieldType.Date] : DateFilterFuncs,\r\n [FieldType.DateTime] : DateTimeFilterFuncs,\r\n [FieldType.Number] : NumberFilterFuncs,\r\n [FieldType.Boolean] : BooleanFilterFuncs,\r\n [FieldType.Unknown] : StringFilterFuncs,\r\n [FieldType.Enum] : EnumFilterFuncs ,\r\n [FieldType.Link] : StringFilterFuncs,\r\n};\r\n\r\nexport interface FilterState {\r\n filterId: string;\r\n filterType: FilterType;\r\n filterValue?: any;\r\n active?: boolean;\r\n\r\n}\r\n\r\nexport interface FilterInfo<T extends FieldType = any> extends FilterState {\r\n key: string;\r\n fieldType: T;\r\n _isExternalyManaged?: boolean;\r\n}\r\n\r\nexport interface PartialFilter<T extends FieldType = any> {\r\n filterId?: string;\r\n key: string;\r\n fieldType: T;\r\n filterType?: FilterType;\r\n filterValue?: any;\r\n}\r\n\r\n\r\n\r\nexport interface CustomFilter<T extends FieldType = any> extends FilterState {\r\n predicate: Predicate<T>;\r\n filterType: FilterType.Custom;\r\n}\r\n\r\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\r\n return filter && filter.filterType === FilterType.Custom;\r\n}\r\n\r\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\r\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\r\n}\r\n\r\nconst defaultPredicate: Predicate<any> = () => true;\r\n\r\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\r\n if(isCustomFilter(filter)) {\r\n return filter.active ? filter.predicate : defaultPredicate;\r\n }\r\n if (filter.filterValue === undefined) {\r\n return defaultPredicate;\r\n }\r\n\r\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\r\n if(!func) {\r\n if(filterFactoryMap[filter.filterType]){\r\n return filterFactoryMap[filter.filterType!](filter);\r\n }\r\n }\r\n\r\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\r\n return (rowObj) => {\r\n const value = get(rowObj, filter.key);\r\n return ((value == undefined) && cannotBeTrueForNull)\r\n ? false\r\n : func( value);\r\n };\r\n}\r\n\r\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\r\nexport type Range<T> = {Start:T,End:T};\r\n\r\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\r\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { Observable } from 'rxjs';\r\nimport { defaultTableState, Group, InitializationState, keysToDelete, PersistedTableState, TableState } from './TableState';\r\nimport { Injectable, Inject, Predicate } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\r\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\r\nimport { Sort, SortDirection } from '@angular/material/sort' ;\r\nimport { ComponentStore } from '@ngrx/component-store' ;\r\nimport update from 'immutability-helper';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { filter, last, map, tap } from 'rxjs/operators'\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { notNull, onceWhen } from '../../rxjs/rxjs-operators';\r\nimport { GeneralTableSettings, NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport function stateIs(initializationState: InitializationState) {\r\n return (state: TableState) => state.initializationState === initializationState;\r\n}\r\n\r\n@Injectable()\r\nexport class TableStore extends ComponentStore<TableState> {\r\n\r\n constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\r\n super( { ...defaultTableState, ...config.defaultTableState});\r\n }\r\n\r\n getSavableState() : Observable<PersistedTableState> {\r\n return this.state$.pipe(\r\n map( s => {\r\n const savableState = {...s} as Partial<TableState>;\r\n keysToDelete.forEach(key => delete savableState[key]);\r\n return savableState as PersistedTableState;\r\n })\r\n );\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\r\n this.effect(() => srcObservable.pipe(\r\n tap(func)\r\n ));\r\n return this;\r\n }\r\n\r\n onLast(callback: (state: TableState) => void ) {\r\n this.on(this.state$.pipe(last()),callback);\r\n }\r\n\r\n readonly metaData$ = this.select( state => state.metaData);\r\n\r\n readonly metaDataArray$ = this.select(\r\n this.state$,\r\n orderMetaData\r\n );\r\n\r\n getMetaData$ = (key: string) : Observable<MetaData> => {\r\n return this.select( state => state.metaData[key] ).pipe(\r\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\r\n notNull())\r\n }\r\n\r\n getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\r\n getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\r\n\r\n private displayedColumns = (state:TableState) => orderMetaData(state).map(md => md.key)\r\n .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\r\n readonly displayedColumns$ = this.select(this.displayedColumns);\r\n readonly hideColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\r\n }));\r\n\r\n readonly resetState = this.updater((state) => {\r\n const hiddenColumns = Object.values(state.metaData)\r\n .filter(md => md.fieldType === FieldType.Hidden)\r\n .map(md => md.key);\r\n const sorted = this.createPreSort(state.metaData);\r\n return update(state, {\r\n hiddenKeys: { $set: [...hiddenColumns] },\r\n filters: { $set: {} },\r\n sorted: {$set: sorted},\r\n userDefined : {$set: {widths:{},order:{},table:{}}},\r\n });\r\n });\r\n\r\n readonly showColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\r\n }));\r\n\r\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\r\n\r\n var hiddenKeysSet= new Set<string>(\r\n [\r\n ...displayCols.filter(col => !col.visible).map(col => col.key),\r\n ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\r\n ]\r\n );\r\n\r\n return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\r\n });\r\n\r\n\r\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\r\n const userDefinedWidths = {...state.userDefined.widths};\r\n colWidths.forEach(cw => {\r\n userDefinedWidths[cw.key] = cw.widthInPixel;\r\n });\r\n return {...state, userDefined: {...state.userDefined, widths:userDefinedWidths}};\r\n });\r\n\r\n setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\r\n const {newOrder ,oldOrder} = moved;\r\n const mdsArr = orderViewableMetaData(state);\r\n moveItemInArray(mdsArr,oldOrder,newOrder);\r\n\r\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\r\n aggregate[current.key] = index;\r\n return aggregate\r\n },{});\r\n return({...state, userDefined: {...state.userDefined, order:userDefinedOrder}})\r\n })\r\n\r\n\r\n readonly filters$ = this.select(state => state.filters );\r\n\r\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | CustomFilter | undefined> => {\r\n return this.select( state => state.filters[filterId] );\r\n }\r\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\r\n return this.addFiltersToState(state, [filter]);\r\n });\r\n\r\n readonly addFilters = this.updater((state,filters:(FilterInfo | CustomFilter )[])=>{\r\n return this.addFiltersToState(state, filters);\r\n })\r\n\r\n\r\n private addFiltersToState = (state:TableState,filters:(FilterInfo | CustomFilter)[]) : TableState => {\r\n\r\n var customFilters = filters.filter( isCustomFilter );\r\n\r\n var filterInfos = filters.filter(isFilterInfo);\r\n\r\n const filtersObj = filterInfos\r\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\r\n .reduce((filtersObj: {[k: string]: any},filter)=>{\r\n if (!filter.filterId) {\r\n filter.filterId = uuid();\r\n }\r\n filtersObj[filter.filterId] = filter;\r\n return filtersObj;\r\n },{});\r\n\r\n customFilters.forEach( fltr => {\r\n if(!fltr.filterId) {\r\n fltr.filterId = uuid();\r\n }\r\n filtersObj[fltr.filterId] = fltr;\r\n })\r\n return {\r\n ...state,\r\n filters : {...state.filters, ...filtersObj }\r\n };\r\n }\r\n\r\n readonly removeFilter = this.updater( (state, filterId: string) =>\r\n update(state, {filters: {$unset : [filterId ]}})\r\n );\r\n\r\n readonly removeFilters = this.updater( (state, filterIds: string[]) =>\r\n update(state, {filters: {$unset : [...filterIds ]}})\r\n );\r\n\r\n readonly clearFilters = this.updater((state)=>\r\n ({...state,filters:{}}))\r\n\r\n\r\n readonly sorted$ = this.state$.pipe(\r\n filter(stateIs(InitializationState.Ready)),\r\n map( state => state.sorted)\r\n );\r\n\r\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\r\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\r\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\r\n .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\r\n }\r\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\r\n const sortArray = state.sorted.filter( s => s.active !== key );\r\n if(direction) {\r\n sortArray.unshift({active: key, direction});\r\n }\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\r\n const metaData = state.metaData;\r\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\r\n : state.initializationState === InitializationState.Created ? this.createPreSort(metaData) : state.sorted;\r\n return {...state, ...incomingTableState, metaData , sorted};\r\n }\r\n\r\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({ ...state, pageSize, userDefined: { ...state.userDefined, pageSize } }));\r\n\r\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\r\n\r\n cleanPersistedState(state: TableState,pState: PersistedTableState) {\r\n const metas = Object.values(state.metaData);\r\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\r\n obj[filter.filterId!] = pState.filters[filter.filterId!];\r\n return obj;\r\n }, {});\r\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\r\n return ({...pState,filters,sorted})\r\n }\r\n\r\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\r\n const incomingTableState: Partial<TableState> = this.cleanPersistedState(state,persistedState);\r\n const newState = this.updateStateFunc(state,incomingTableState);\r\n newState.initializationState = state.initializationState === InitializationState.MetaDataLoaded ? InitializationState.LoadedFromStore : state.initializationState;\r\n return newState;\r\n });\r\n\r\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\r\n setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\r\n\r\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\r\n return {\r\n key: orig.key,\r\n displayName: merge.displayName ?? orig.displayName,\r\n fieldType: merge.fieldType || orig.fieldType,\r\n additional: {...orig.additional, ...merge.additional},\r\n order: merge.order ?? orig.order,\r\n preSort: merge.preSort ?? orig.preSort,\r\n _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\r\n width: merge.width ?? orig.width,\r\n noExport: merge.noExport || orig.noExport,\r\n noFilter: merge.noFilter || orig.noFilter,\r\n customCell: merge.customCell ?? orig.customCell,\r\n transform: merge.transform ?? orig.transform,\r\n click: merge.click ?? orig.click,\r\n classes: merge.classes ?? orig.classes,\r\n noSort: merge.noSort ?? orig.noSort,\r\n template: merge.template ?? orig.template,\r\n toolTip: merge.toolTip ?? orig.toolTip,\r\n useIcon: merge.useIcon ?? orig.useIcon,\r\n };\r\n }\r\n\r\n readonly setInitializationState = this.updater( (state, initializationState: InitializationState) => {\r\n return {...state, initializationState};\r\n });\r\n\r\n runOnceWhen(predicate: Predicate<TableState>, func: (state:TableState) => void) {\r\n const obs = this.state$.pipe(onceWhen(predicate));\r\n this.on(obs, (state) => {\r\n func(state);\r\n });\r\n }\r\n\r\n onReady( func: (state: TableState) => void ) {\r\n this.runOnceWhen(stateIs(InitializationState.Ready),func);\r\n }\r\n\r\n readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\r\n const metaData = ( Array.isArray(md) ? [...md] : [md] )\r\n .reduce((prev: Dictionary<MetaData>,curr) => {\r\n if(prev[curr.key]) {\r\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\r\n } else {\r\n prev[curr.key] = curr;\r\n }\r\n return prev;\r\n } ,{});\r\n let sorted = state.sorted;\r\n if(sorted.length === 0) {\r\n sorted = this.createPreSort(metaData);\r\n }\r\n const order = this.initializeOrder(state, metaData);\r\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\r\n return {...state, initializationState, metaData, sorted, userDefined:{...state.userDefined,order:order}};\r\n });\r\n\r\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\r\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\r\n let userDefinedOrder = state.userDefined.order;\r\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\r\n return {}\r\n }\r\n return userDefinedOrder;\r\n }\r\n\r\n toggleCollapseHeader = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n })\r\n\r\n toggleCollapseFooter = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n })\r\n\r\n addGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupByKeys: [...state.groupByKeys, groupByKey]\r\n }));\r\n\r\n removeGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupByKeys: state.groupByKeys.filter(key => groupByKey != key)\r\n }));\r\n\r\n updateGroup = this.updater((state, group: Group) => ({\r\n ...state,\r\n groups: [...state.groups.filter(g => g.groupName != group.groupName), group]\r\n }))\r\n\r\n groupByKeys$ = this.select(state => state.groupByKeys);\r\n groups$ = this.select(state => state.groups);\r\n\r\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\r\n const s:TableState = {\r\n ...state,\r\n persistedTableSettings : new PersistedTableSettings(settings),\r\n notPersistedTableSettings : new NotPersistedTableSettings(settings)\r\n };\r\n return s;\r\n });\r\n\r\n tableSettings$ = this.select(state => {\r\n const ts : PersistedTableSettings & NotPersistedTableSettings =\r\n {...state.persistedTableSettings,...state.notPersistedTableSettings};\r\n return ts;\r\n })\r\n\r\n setLinkMaps = this.updater((state,maps: any)=>{\r\n return {...state,linkMaps:maps};\r\n });\r\n getLinkMap = (md:MetaData) =>{\r\n return this.select(state => {\r\n return state.linkMaps[md.key]})};\r\n}\r\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\r\n\r\nexport const orderMetaData = (state:TableState) => {\r\n const userOrderArr = Object.entries(state.userDefined.order);\r\n return userOrderArr.length ?\r\n Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\r\n :\r\n Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { map } from 'rxjs/operators';\r\nimport { TableStore } from '../classes/table-store';\r\n\r\n@Directive({\r\n selector: '[multiSort]',\r\n exportAs: 'multiSort',\r\n inputs: ['disabled: matSortDisabled'],\r\n providers: [\r\n { provide: MatSort, useExisting: MultiSortDirective }\r\n ],\r\n standalone: true\r\n})\r\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\r\n rules: Sort[] = [];\r\n\r\n constructor(private state: TableStore) {\r\n super();\r\n this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\r\n this.state.on(\r\n this.state.sorted$,\r\n (rules) => {\r\n const oldRules = this.rules;\r\n this.rules = rules;\r\n if (this.active && rules.length === 0) {\r\n this.active = '';\r\n this.direction = '';\r\n this.sortChange.emit({ active: '', direction: '' });\r\n }\r\n\r\n else if(!!rules.length && isDifferent(oldRules, rules)) {\r\n this.active = rules[0].active;\r\n this.direction = rules[0].direction;\r\n this.sortChange.emit(rules[0]);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nfunction isDifferent(a: Sort[], b: Sort[]) {\r\n if (a.length !== b.length) {\r\n return true;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].active !== b[i].active || a[i].direction !== b[i].direction) {\r\n return true;\r\n } \r\n }\r\n return false;\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'preventEnter',\r\n standalone: true\r\n})\r\nexport class PreventEnterDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown() {\r\n return false\r\n }\r\n}\r\n","import {Directive, HostListener} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[stop-propagation]\",\r\n standalone: true\r\n})\r\nexport class StopPropagationDirective\r\n{\r\n @HostListener(\"click\", [\"$event\"])\r\n public onClick(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener(\"mousedown\", [\"$event\"])\r\n public onMousedown(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autoFocus]',\r\n standalone: true,\r\n})\r\nexport class AutoFocusDirective implements AfterViewInit {\r\n\r\n @Input() autoFocus = true;\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n ngAfterViewInit() {\r\n if(this.autoFocus){\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[clickSubject]',\r\n exportAs: 'clickSubject',\r\n host: {\r\n '(click)': 'next(this._val)'\r\n },\r\n standalone: true,\r\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\r\n constructor( ) {\r\n super();\r\n }\r\n _val!: T;\r\n\r\n @Input('clickSubject') set clickSubject( val: T) {\r\n this._val = val;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Directive({\r\n selector: '[clickEmitter]',\r\n exportAs: 'clickEmitter',\r\n host: {\r\n '(click)': 'next(true)'\r\n },\r\n standalone: true,\r\n}) export class ClickEmitterDirective extends Subject<boolean> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n allOpenOpDialogs: MatDialogRef<any>[] = [];\r\n\r\n addDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs.push(ref);\r\n }\r\n\r\n removeDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\r\n }\r\n\r\n closeAllOpDialogs() {\r\n this.allOpenOpDialogs.forEach(ref => ref.close());\r\n }\r\n}\r\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { switchAll } from 'rxjs/operators';\r\nimport { DialogService } from './dialog-service';\r\n\r\ninterface DialogViewContext<T> {\r\n $implicit: T,\r\n opDialog: T,\r\n close: () => void,\r\n}\r\n\r\n@Component({\r\n template: ``,\r\n standalone: true,\r\n})\r\nexport class DialogWrapper<T = any> {\r\n viewEmbedded = false;\r\n viewContext = {\r\n close: () => {},\r\n } as DialogViewContext<T>;\r\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\r\n if (this.viewEmbedded) {\r\n this.vcr.clear();\r\n }\r\n this.viewEmbedded = true;\r\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\r\n }\r\n\r\n set close(closeMethod: () => void ) {\r\n this.viewContext.close = closeMethod;\r\n }\r\n\r\n set data(value: T) {\r\n this.viewContext.$implicit = value;\r\n this.viewContext.opDialog = value;\r\n }\r\n constructor(private vcr: ViewContainerRef ) {\r\n }\r\n\r\n}\r\n\r\n\r\nconst defaultDialogConfig: MatDialogConfig = {\r\n maxHeight: '95vh',\r\n}\r\n\r\n\r\n@Directive(\r\n { selector: '[opDialog]', standalone: true }\r\n) export class DialogDirective<T> implements OnDestroy {\r\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\r\n _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\r\n @Input() opDialogAddDialogClass = true;\r\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\r\n \r\n this._dialogConfig = { ...defaultDialogConfig, ...config };\r\n }\r\n\r\n get opDialogConfig() : MatDialogConfig<T> {\r\n return this._dialogConfig;\r\n }\r\n @Input('opDialog') set state(open_close: Observable<T>) {\r\n this._data.next(open_close);\r\n }\r\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\r\n dialogRef?: MatDialogRef<any, boolean>;\r\n subscription: Subscription;\r\n componentWrapper?: DialogWrapper<T>;\r\n\r\n constructor(\r\n private templateRef: TemplateRef<DialogViewContext<T>>,\r\n private dialog: MatDialog,\r\n private service: DialogService) {\r\n this.subscription = this._data.pipe(\r\n switchAll()\r\n ).subscribe(d => {\r\n if (d) {\r\n this.opDialogConfig.data = d;\r\n this.setDialogState(true);\r\n } else {\r\n this.setDialogState(false);\r\n }\r\n });\r\n }\r\n\r\n _data = new Subject<Observable<T>>();\r\n\r\n close() {\r\n this.dialogRef?.close();\r\n }\r\n\r\n initDialog() {\r\n if(this.nativeElement){\r\n const rect = this.nativeElement.getBoundingClientRect();\r\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\r\n this.opDialogConfig = {...this.opDialogConfig , position};\r\n }\r\n if (this.opDialogAddDialogClass) {\r\n this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\r\n }\r\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\r\n this.componentWrapper = this.dialogRef.componentInstance;\r\n this.componentWrapper!.close = () => this.dialogRef?.close();\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n this.componentWrapper!.template = this.templateRef;\r\n if (!this.opDialogConfig.disableClose) {\r\n this.service.addDialogRef(this.dialogRef);\r\n }\r\n const sub = this.dialogRef.afterClosed().subscribe(() => {\r\n this.opDialogClosed.emit(true);\r\n this.service.removeDialogRef(this.dialogRef!);\r\n this.dialogRef = undefined;\r\n sub.unsubscribe();\r\n });\r\n }\r\n\r\n setDialogState(open: boolean) {\r\n if (open) {\r\n if (!this.dialogRef) {\r\n this.initDialog();\r\n } else {\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n }\r\n } else if (!open && this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false | 0 | '' | null | undefined>> {\r\n return true;\r\n }\r\n\r\n}\r\n","import { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\r\n standalone: true\r\n}) export class StylerDirective {\r\n @Input() set styler(styles){\r\n if(styles){\r\n Object.keys(styles).forEach( style => {\r\n this.el.nativeElement.style[style] = styles[style];\r\n });\r\n }\r\n };\r\n constructor(private el: ElementRef) {\r\n }\r\n}\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\r\n\r\n\r\n@Directive(\r\n { selector: '[opMatSlideToggleGroup]',\r\n standalone: true\r\n}\r\n) export class MatSlideToggleGroupDirective {\r\n @Input() allowMultiple = false;\r\n\r\n _toggles!: QueryList<MatSlideToggle>;\r\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\r\n this._toggles = val;\r\n this._ready.next(true);\r\n }\r\n\r\n private _ready = new ReplaySubject<boolean>(1);\r\n\r\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\r\n return this._ready.pipe( switchMap( _ => this.getObs()));\r\n }\r\n\r\n\r\n getInitValue() {\r\n const startValue = this._toggles.reduce( (prev,cur) => {\r\n if(!cur.name) {\r\n throw new Error('toggle must have the name attribute set');\r\n }\r\n prev[cur.name] = cur.checked\r\n return prev;\r\n }, {} as {[k:string]: boolean});\r\n return startValue;\r\n }\r\n\r\n getObs() {\r\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\r\n\r\n const startValue = this.getInitValue();\r\n\r\n return toggleChanges.pipe(\r\n scan( (prev,cur) => {\r\n const toggleName = cur.source.name!;\r\n const newVal = {...prev,[toggleName]:cur.checked};\r\n if(cur.checked && !this.allowMultiple) {\r\n Object.keys(prev)\r\n .filter( key => key !== toggleName && prev[key])\r\n .forEach( key => {\r\n newVal[key] = false;\r\n this._toggles.find( toggle => toggle.name === key)!.toggle();\r\n });\r\n }\r\n return newVal;\r\n },startValue),\r\n startWith(startValue),\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input[trimWhitespace]',\r\n standalone: true\r\n})\r\nexport class TrimWhitespaceDirective {\r\n\r\n constructor(private elem: ElementRef) { }\r\n\r\n @HostListener('blur') onBlur() {\r\n const inputString = this.elem.nativeElement.value;\r\n if(inputString) {\r\n const newValue = inputString.trim().replace(/\\t/g, '');\r\n if(inputString !== newValue) {\r\n this.elem.nativeElement.value = newValue;\r\n this.elem.nativeElement.dispatchEvent(new Event('input', {bubbles:true}));\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'func',\r\n standalone: true\r\n})\r\nexport class FunctionPipe implements PipeTransform {\r\n transform(func: ( (...args: any[])=> any ) | string, ...args: any[]): any {\r\n if(typeof func === 'string') {\r\n const [instance, ...tail] = args;\r\n const method = instance[func].bind(instance);\r\n return method(...tail);\r\n }\r\n return func(...args);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { Dictionary, Predicate } from '@ngrx/entity';\r\n\r\n@Directive({\r\n selector: '[conditionalClasses]',\r\n standalone: true\r\n})\r\nexport class ConditionalClassesDirective {\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n }\r\n\r\n @Input() element?: any;\r\n @Input('conditionalClasses') classes?: Dictionary<Predicate<any>>;\r\n\r\n classesApplied: string[] = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let toApply: string [] = [];\r\n if(this.classes) {\r\n toApply = Object.keys(this.classes)\r\n .filter( key => this.classes![key]!(this.element) );\r\n }\r\n\r\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\r\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\r\n\r\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\r\n\r\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement , c ) );\r\n\r\n this.classesApplied = toApply;\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\r\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\r\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\r\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\r\nimport { DialogDirective } from \"./directives/dialog\";\r\nimport { DialogService } from \"./directives/dialog-service\";\r\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\r\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\r\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\r\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\r\nimport { StylerDirective } from \"./directives/styler\";\r\nimport { FunctionPipe } from \"./pipes/function.pipe\";\r\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\r\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\r\n\r\n@NgModule({\r\n exports: [\r\n StopPropagationDirective,\r\n PreventEnterDirective,\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n imports: [\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n TrimWhitespaceDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n providers: [\r\n DialogService\r\n ]\r\n})\r\nexport class UtilitiesModule {\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-filter',\r\n templateUrl: './date-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n NgIf, MatInputModule, FormsModule, MatDatepickerModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n</ng-container>\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { NgFor, NgIf } from '@angular/common';\r\nimport { AutoFocusDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-in-filter',\r\n templateUrl: './in-filter.component.html',\r\n styleUrls: ['./in-filter.component.css'],\r\n changeDetection:ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n NgFor, NgIf, FormsModule, AutoFocusDirective\r\n ]\r\n})\r\nexport class InFilterComponent implements ControlValueAccessor {\r\n FieldType = FieldType;\r\n @Input() type! : FieldType;\r\n value: any[] = [undefined];\r\n\r\n constructor(private ref: ChangeDetectorRef) {\r\n this.value = [undefined];\r\n }\r\n writeValue(obj: any[]): void {\r\n if(!obj?.length) obj = [undefined];\r\n this.value = obj;\r\n this.ref.markForCheck();\r\n }\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n addInput(){\r\n this.value = [...this.value, undefined];\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n removeInput(index: number){\r\n this.value = [...this.value];\r\n this.value.splice(index,1);\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n onValueChange(i:number,value: number | string){\r\n this.value = [...this.value];\r\n this.value[i] = value;\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { NgIf } from '@angular/common';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\n\r\n\r\n@Component({\r\n selector: 'tb-number-filter',\r\n templateUrl: './number-filter.component.html',\r\n styleUrls: ['./number-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n NgIf, MatInputModule, FormsModule, InFilterComponent\r\n ]\r\n})\r\nexport class NumberFilterComponent {\r\n FilterType = FilterType; FieldType = FieldType;\r\n @Input() CurrentFilterType!: FilterType;\r\n @Input() info!:PartialFilter;\r\n}\r\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In\">\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n\r\n<ng-container *ngIf=\"CurrentFilterType === FilterType.NumberBetween\">\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<div class=\"inline\" *ngIf=\"CurrentFilterType === FilterType.In\">\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { NgIf } from '@angular/common';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-time-filter',\r\n templateUrl: './date-time-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n NgIf, FormsModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateTimeFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateTimeBetween\" ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\r\n</ng-container>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { Dictionary } from '../../../interfaces/dictionary';\r\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\r\nimport { AsyncPipe, KeyValuePipe, NgFor } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\n\r\n\r\n@Component({\r\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\r\n template: `\r\n <div *ngFor=\"let item of keyValues$ | async| keyvalue\" >\r\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\r\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\r\n </mat-checkbox>\r\n </div>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InListFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n NgFor, AsyncPipe, KeyValuePipe, MatCheckboxModule, StopPropagationDirective, SpaceCasePipe\r\n ]\r\n})\r\nexport class InListFilterComponent implements ControlValueAccessor {\r\n\r\n constructor(private ref: ChangeDetectorRef, private tableState: TableStore ) {}\r\n value: string[] = [];\r\n FieldType = FieldType;\r\n writeValue(obj: string[]): void {\r\n this.value = obj;\r\n\r\n if(this.value) {\r\n this.selectedKeys = this.value.map( f => f );\r\n }\r\n this.ref.markForCheck();\r\n }\r\n\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n @Input() key!: string;\r\n\r\n keyValues$! : Observable<Dictionary<string>>;\r\n selectedKeys : string[] = [];\r\n metaData!: MetaData;\r\n\r\n ngOnInit() {\r\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\r\n tap(metaData => this.metaData = metaData),\r\n map( metaData => {\r\n if(metaData.additional?.filterOptions?.filterableValues ) {\r\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\r\n } else {\r\n if(metaData.fieldType === FieldType.Enum ) {\r\n return metaData.additional!.enumMap;\r\n }\r\n }\r\n return {};\r\n })\r\n );\r\n }\r\n\r\n selectFilterChanged($event, val) {\r\n if($event.checked) {\r\n this.selectedKeys.push(val);\r\n } else {\r\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\r\n }\r\n\r\n this.value = this.selectedKeys;\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\r\nimport { filterTypeMap, FilterInfo, mappedFieldTypes, PartialFilter } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { KeyValuePipe, NgFor, NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PreventEnterDirective, SpaceCasePipe } from '../../../utilities';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\r\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\r\nimport { DateTimeFilterComponent } from '../date-time-filter/date-time-filter.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\nimport { InListFilterComponent } from './in-list/in-list-filter.component';\r\n\r\n@Component({\r\n selector: 'tb-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatCardModule, NgIf, FormsModule, SpaceCasePipe, MatButtonModule, MatTooltipModule, MatIconModule,\r\n MatInputModule, MatSelectModule, KeyValuePipe, NgSwitch, NgSwitchCase, NumberFilterComponent,\r\n DateFilterComponent, DateTimeFilterComponent, MatRadioModule, InFilterComponent, InListFilterComponent,\r\n PreventEnterDirective, NgFor, NgTemplateOutlet\r\n ]\r\n})\r\nexport class FilterComponent {\r\n filterTypes = filterTypeMap;\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n @Input() filter!: PartialFilter;;\r\n @Output() close = new EventEmitter();\r\n currentFilterType?: FilterType;\r\n constructor( public state: TableStore) { }\r\n\r\n ngOnInit() {\r\n this.currentFilterType = this.filter.filterType;\r\n }\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if (filter.filterValue != null && filter.filterType) {\r\n this.state.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","<mat-card appearance=\"outlined\" class=\"filter-card\" *ngIf=\"filter\">\r\n <mat-card-content>\r\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\r\n <div class=\"head-row\" >\r\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\r\n <button class=\"cancel-button small-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\r\n matTooltip=\"Close\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"filter-row\">\r\n <div class=\"inline\">\r\n <mat-form-field class=\"my-filter\" >\r\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" [panelWidth]=\"null\">\r\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\r\n {{ kvp.key }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\r\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\r\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\r\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\r\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.DateTime\">\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-time-filter>\r\n </ng-container>\r\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\r\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\r\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\r\n Apply\r\n </button>\r\n \r\n \r\n <ng-template #String>\r\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\r\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" />\r\n </ng-container>\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\r\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #Enum>\r\n <ng-container *ngIf='currentFilterType === FilterType.In' >\r\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\r\n </ng-container>\r\n </ng-template>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\r\nimport { DisplayCol } from '../../classes/display-col';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\r\nimport {CdkDragDrop, DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { AsyncPipe, NgFor, NgIf } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-col-displayer',\r\n templateUrl: './gen-col-displayer.component.html',\r\n styleUrls: ['./gen-col-displayer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush ,\r\n standalone: true,\r\n imports: [\r\n NgIf, NgFor, AsyncPipe, MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,\r\n DragDropModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenColDisplayerComponent {\r\n columns$: Observable< DisplayCol[]>;\r\n constructor( private tableState: TableStore ) {\r\n this.columns$ = this.tableState.state$.pipe(\r\n map( state =>\r\n orderViewableMetaData(state)\r\n .map( md => ({\r\n key: md.key,\r\n displayName: md.displayName,\r\n isVisible: !state.hiddenKeys.includes(md.key)\r\n }))\r\n ),\r\n );\r\n }\r\n\r\n reset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = true);\r\n this.emit(displayCols);\r\n }\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\r\n }\r\n unset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = false);\r\n this.emit(displayCols);\r\n }\r\n\r\n emit(displayCols: DisplayCol[]) {\r\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\r\n }\r\n}\r\n","<ng-container *ngIf=\"columns$ | async as displayCols\">\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\"\r\n *ngFor=\"let col of displayCols\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\" *ngIf=\"col.isVisible; else hidden\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n <ng-template #hidden>\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n </ng-template>\r\n\r\n </div>\r\n </button>\r\n </div>\r\n </mat-menu>\r\n</ng-container>","import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { map } from \"rxjs/operators\";\nimport { PartialFilter } from \"../../classes/filter-info\";\n@Injectable()\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\n constructor(){\n super({filterInfo:[]});\n }\n\n clearAll = this.updater(()=>({filterInfo:[]}));\n deleteByIndex = this.updater((state,index:number)=>{\n const arr = [...state.filterInfo];\n arr.splice(index, 1);\n return {filterInfo:arr};\n });\n\n currentFilters$ = this.state$.pipe(map(state => state.filterInfo));\n\n addFilter = this.updater((state,filter:PartialFilter)=>{\n return ({...state,filterInfo:[...state.filterInfo,filter]});\n })\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\r\nimport { Observable } from 'rxjs';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe, NgFor } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tb-filter-displayer',\r\n templateUrl: './gen-filter-displayer.component.html',\r\n styleUrls: ['./gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,\r\n NgFor, AsyncPipe, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenFilterDisplayerComponent {\r\n\r\n constructor( public tableState: TableStore, public filterStore : WrapperFilterStore) {\r\n this.filterCols$ = tableState.metaDataArray$.pipe(\r\n map(md => Object.values( md ).filter(m => (m.fieldType !== FieldType.Hidden) && (!m.noFilter))),\r\n );\r\n }\r\n\r\n filterCols$: Observable<MetaData[]>;\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\r\n }\r\n}\r\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <button *ngFor=\"let md of filterCols$ | async\" (click)=\"addFilter(md)\" mat-menu-item>\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({name: 'keyDisplay', standalone: true})\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n constructor( public tableState: TableStore) {\r\n }\r\n transform(key: string): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( metaData => metaData.displayName || spaceCase(key))\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FilterType } from '../enums/filterTypes';\r\n\r\n@Pipe({name: 'formatFilterType', standalone: true})\r\nexport class FormatFilterTypePipe implements PipeTransform {\r\n transform(filterType: FilterType, value: any){\r\n if(filterType === FilterType.IsNull){\r\n return value ? filterType : 'Is Not Blank'\r\n }\r\n return filterType;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\r\n\r\n\r\n@Pipe({name: 'formatFilterValue', standalone: true})\r\nexport class FormatFilterValuePipe implements PipeTransform {\r\n constructor( public tableState: TableStore , private datePipe: DatePipe) {\r\n }\r\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( md => {\r\n if(filterType === FilterType.IsNull) {\r\n return '';\r\n }\r\n if(value && (filterType === FilterType.In )){\r\n if(md.fieldType === FieldType.Enum) {\r\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\r\n }\r\n return value.join(', ') ?? value;\r\n }\r\n if(filterType === FilterType.NumberBetween){\r\n return value.Start + ' - ' + value.End;\r\n }\r\n if(md.fieldType === FieldType.Date){\r\n return this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n if(md.fieldType === FieldType.DateTime){\r\n return !!DateTimeFilterFuncs[filterType] ? this.datePipe.transform(value, 'short') : this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n return value\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FilterInfo, isFilterInfo } from '../../../classes/filter-info';\r\nimport { map } from 'rxjs/operators';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { Observable } from 'rxjs';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe, NgFor, NgIf } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FilterComponent } from '../../filter/filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { KeyDisplayPipe } from '../../../pipes/key-display';\r\nimport { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';\r\nimport { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';\r\n\r\n@Component({\r\n selector: 'lib-filter-list',\r\n templateUrl: './filter-list.component.html',\r\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\r\n standalone: true,\r\n imports: [\r\n LetDirective, NgIf, MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,\r\n MatChipsModule, NgFor, AsyncPipe, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe\r\n ]\r\n})\r\nexport class FilterChipsComponent {\r\n\r\n tableState = inject(TableStore);\r\n filterStore = inject(WrapperFilterStore);\r\n\r\n filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(\r\n map(filters =>\r\n Object.values(filters).filter(f => isFilterInfo(f) && !f._isExternalyManaged) as FilterInfo<any>[]\r\n ));\r\n\r\n deleteByIndex(index: number) {\r\n this.filterStore.deleteByIndex(index);\r\n }\r\n\r\n addFilter(filter:FilterInfo<any>){\r\n this.filterStore.addFilter(filter);\r\n }\r\n\r\n clearAll() {\r\n this.filterStore.clearAll();\r\n }\r\n\r\n currentFilters$ = this.filterStore.currentFilters$;\r\n}\r\n","<div class=\"d-w\" *ngrxLet=\"currentFilters$ as currentFilters\" >\r\n\r\n <button class=\"cancel-button\" *ngIf=\"currentFilters.length\" mat-icon-button (click)=\"clearAll()\"\r\n matTooltip=\"Close all Filters Cards\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"currentFilters.length\" class=\"float\">\r\n <div class=\"filter\" *ngFor=\"let filter of (currentFilters$ | async); index as i;\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex(i)\" />\r\n </div>\r\n </div>\r\n\r\n <mat-chip-set *ngrxLet=\"filters$ as filters\">\r\n <mat-chip *ngFor=\"let filter of filters\" (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <mat-chip *ngIf=\"filters.length >= 2\" (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-set>\r\n\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass, NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\r\nimport { InListFilterComponent } from '../filter/in-list/in-list-filter.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './header-menu.component.html',\r\n styleUrls: ['./header-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatMenuModule, MatIconModule, MatButtonModule, FormsModule,NgSwitchCase, NgSwitch, NgIf, InListFilterComponent,\r\n MatInputModule, MatTooltipModule, NgClass, StopPropagationDirective, MatRadioModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class HeaderMenuComponent {\r\n FieldType = FieldType;\r\n FilterType = FilterType;\r\n myFilterType!: FilterType;\r\n myFilterValue: any;\r\n\r\n @Input() filter!: Partial<FilterInfo>;\r\n\r\n @Input() metaData!: MetaData;\r\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\r\n constructor( public tableState: TableStore) {}\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n ngOnInit() {\r\n this.resetFilterType();\r\n }\r\n\r\n resetFilterType() {\r\n if(this.metaData.additional?.filterOptions?.filterableValues) {\r\n this.myFilterType = FilterType.In;\r\n return;\r\n }\r\n switch (this.metaData.fieldType) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n this.myFilterType = FilterType.StringContains;\r\n break;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n this.myFilterType = FilterType.NumberEquals;\r\n break;\r\n case FieldType.Boolean:\r\n this.myFilterType = FilterType.BooleanEquals;\r\n break;\r\n case FieldType.Date:\r\n case FieldType.DateTime:\r\n this.myFilterType = FilterType.DateIsOn;\r\n break;\r\n case FieldType.Enum:\r\n this.myFilterType = FilterType.In;\r\n break;\r\n }\r\n }\r\n\r\n setStringFilterType() {\r\n this.myFilterType = this.myFilterType === FilterType.StringContains ? FilterType.StringDoesNotContain : FilterType.StringContains;\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n if (filterType === this.myFilterType) {\r\n this.resetFilterType();\r\n } else {\r\n this.myFilterType = filterType;\r\n }\r\n }\r\n\r\n onEnter(filter: FilterInfo) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.trigger.closeMenu();\r\n }\r\n }\r\n}\r\n","<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n \r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\"\r\n >\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport {sumBy} from 'lodash';\r\n\r\n@Pipe({\r\n name: 'columnTotal',\r\n standalone: true\r\n })\r\nexport class ColumnTotalPipe implements PipeTransform {\r\n transform(data: any[], metaData: MetaData) {\r\n const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter)\r\n switch (metaData.additional!.footer!.type) {\r\n case 'sum':\r\n return sumBy(dataToCalculate, metaData.key);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\r\nimport { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\nimport { SpaceCasePipe } from '../../utilities';\r\nimport { get } from 'lodash';\r\nexport function isPipe(o : any ): o is PipeTransform {\r\n return typeof ((o as PipeTransform).transform ) === 'function';\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransformCreator {\r\n constructor(\r\n private datePipe: DatePipe,\r\n private currencyPipe: CurrencyPipe,\r\n private phonePipe: PhoneNumberPipe,\r\n private casePipe: SpaceCasePipe,\r\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\r\n ) {}\r\n createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any) {\r\n const defaultFunc = (value: any) => get( value, metaData.key);\r\n if(metaData.transform) {\r\n if(isPipe(metaData.transform)){\r\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\r\n }\r\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any,b:any)=>any)(defaultFunc(value),value);\r\n }\r\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\r\n var tranformer = this.config.transformers![metaData.fieldType]!;\r\n return (value: any) => tranformer(defaultFunc(value));\r\n }\r\n const defaultDateFormat = this.config.defaultSettings?.dateFormat ?? 'shortDate';\r\n const defaultDateTimeFormat = this.config.defaultSettings?.dateTimeFormat ?? 'short';\r\n switch(metaData.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateFormat);\r\n case FieldType.DateTime:\r\n const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateTimeFormat);\r\n case FieldType.Currency:\r\n return (value: any) => this.currencyPipe.transform(defaultFunc(value));\r\n case FieldType.PhoneNumber:\r\n return (value: any) => this.phonePipe.transform(defaultFunc(value));\r\n case FieldType.Enum:\r\n return (value: any) => this.casePipe.transform(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\r\n case FieldType.Boolean:\r\n let forTrue = 'check'\r\n let forFalse = '';\r\n if(metaData.additional?.boolean?.forTrue) {\r\n forTrue = metaData?.additional.boolean.forTrue.icon;\r\n }\r\n if(metaData.additional?.boolean?.showForFalse === true) {\r\n forFalse = 'clear';\r\n } else if (metaData.additional?.boolean?.showForFalse?.icon) {\r\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\r\n }\r\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\r\n }\r\n return defaultFunc;\r\n }\r\n\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { TableStore } from \"../classes/table-store\";\r\nimport { MetaData } from \"../interfaces/report-def\";\r\nimport { LetDirective } from \"@ngrx/component\";\r\nimport { FunctionPipe } from \"../../utilities\";\r\nimport { NgIf } from \"@angular/common\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"tb-link-column\",\r\n standalone: true,\r\n imports: [\r\n LetDirective, FunctionPipe, NgIf, RouterModule\r\n ],\r\n template: `\r\n <ng-container *ngrxLet=\"(link | func : (metaData)) as linkInfo\">\r\n <a *ngIf=\"$any(linkInfo).useRouterLink; else hrefLink\" target=\"{{$any(linkInfo).target}}\"\r\n [routerLink]=\" [($any(linkInfo).link | func : element)]\"\r\n [queryParams]=\"$any(linkInfo).routerLinkOptions.queryParams | func : element\"\r\n [fragment]=\"$any(linkInfo).routerLinkOptions.fragment\"\r\n [preserveFragment]=\"$any(linkInfo).routerLinkOptions.preserveFragment\"\r\n [queryParamsHandling]=\"$any(linkInfo).routerLinkOptions.queryParamsHandling\"\r\n >\r\n {{transform | func : element}}\r\n </a>\r\n <ng-template #hrefLink>\r\n <a target=\"{{$any(linkInfo).target}}\"\r\n href=\"{{($any(linkInfo).link | func : element)}}\">\r\n {{transform | func : element}}\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n `\r\n})export class LinkColumnComponent {\r\n @Input() metaData!: MetaData;\r\n @Input() element!: any;\r\n @Input() transform = (a:any)=>a;\r\n constructor(protected store: TableStore) { }\r\n link = (metaData : MetaData) => this.store.getLinkMap(metaData);\r\n\r\n}","import { ChangeDetectionStrategy, Component, Input, Inject } from '@angular/core';\r\nimport { ArrayStyle, ArrayAdditional, MetaData } from '../interfaces/report-def';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\nimport { NgFor, NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'tb-array-column',\r\n standalone: true,\r\n imports: [\r\n NgIf, NgSwitch, NgSwitchCase, NgFor\r\n ],\r\n template: `\r\n <ng-container *ngIf=\"array.length === 0; else hasVals\">-</ng-container>\r\n <ng-template #hasVals>\r\n <ng-container [ngSwitch]=\"additional.arrayStyle\">\r\n <ng-container *ngSwitchCase=\"ArrayStyle.CommaDelimited\">\r\n <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\">, </ng-container> </span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"ArrayStyle.NewLine\">\r\n <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\"><br /></ng-container> </span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayColumnComponent {\r\n ArrayStyle = ArrayStyle;\r\n additional!: ArrayAdditional;\r\n @Input() array!: any[];\r\n @Input() metaData!: MetaData;\r\n\r\n constructor( @Inject(TableBuilderConfigToken) private config: TableBuilderConfig\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.additional = this.metaData?.additional ?? this.config.arrayInfo ?? { limit: 3, arrayStyle: ArrayStyle.NewLine } as ArrayAdditional;\r\n this.array = (this.array ?? []).slice(0, this.additional.limit );\r\n\r\n }\r\n}\r\n","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { LinkColumnComponent } from \"../link-column.component\";\r\nimport { ArrayColumnComponent } from \"../array-column.component\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { FunctionPipe } from \"../../../utilities\";\r\n\r\n@Component({\r\n templateUrl: './initialization-component.html',\r\n standalone: true,\r\n imports: [\r\n LinkColumnComponent, ArrayColumnComponent, MatIconModule, FunctionPipe\r\n ]\r\n})\r\nexport class InitializationComponent {\r\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\r\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\r\n @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\r\n @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\r\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\r\n @ViewChild('defaultWithIcon', {static: true}) defaultWithIcon! : TemplateRef<any>;\r\n}\r\n","<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\r\nimport { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { TableStore } from \"../classes/table-store\";\r\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\r\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class TableTemplateService {\r\n instance!: InitializationComponent;\r\n templates;\r\n\r\n initTemplates() {\r\n this.templates = { };\r\n this.templates[FieldType.Array] = this.instance.arrayTemplate;\r\n this.templates[FieldType.Boolean] = this.instance.defaultWithIcon;\r\n this.templates[FieldType.Currency] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\r\n this.templates[FieldType.DateTime] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Expression] = this.instance.defaultTemplate;\r\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\r\n this.templates[FieldType.Link] = this.instance.linkTemplate;\r\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\r\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\r\n this.templates[FieldType.String] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Enum] = this.instance.defaultTemplate;\r\n }\r\n getTemplate(metaData: MetaData) : TemplateRef<any> {\r\n\r\n let tmp = this.templates[metaData.fieldType];\r\n if(metaData.useIcon) {\r\n if(tmp === this.instance.defaultTemplate) {\r\n tmp = this.instance.defaultWithIcon;\r\n }\r\n }\r\n return tmp;\r\n }\r\n\r\n constructor(resolver: ComponentFactoryResolver, i: Injector, ) {\r\n const factory = resolver.resolveComponentFactory(InitializationComponent);\r\n const c = factory.create(i);\r\n this.instance = c.instance;\r\n this.initTemplates();\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren, Predicate, Injector } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { MatColumnDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable } from 'rxjs';\r\nimport { CustomCellDirective, ResizeColumnDirective } from '../../directives';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TransformCreator } from '../../services/transform-creator';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { TableTemplateService } from '../../services/table-template-service';\r\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\r\nimport { CdkDropList, CDK_DROP_LIST, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { AsyncPipe, CurrencyPipe, DecimalPipe, NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet } from '@angular/common';\r\nimport { ConditionalClassesDirective, SpaceCasePipe, StylerDirective } from '../../../utilities';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { HeaderMenuComponent } from '../header-menu/header-menu.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { ColumnTotalPipe } from '../../pipes/column-total.pipe';\r\n\r\n\r\ninterface widthStyle {\r\n flex?: string;\r\n maxWidth?: string;\r\n}\r\n\r\ninterface allStyles {\r\n body: widthStyle;\r\n header: widthStyle;\r\n footer: widthStyle;\r\n}\r\n\r\n@Component({\r\n selector: 'tb-column-builder',\r\n templateUrl: './column-builder.component.html',\r\n styleUrls: ['./column-builder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\r\n ],\r\n standalone: true,\r\n imports: [\r\n MatTableModule, NgIf, NgTemplateOutlet, StylerDirective, ResizeColumnDirective,\r\n ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, HeaderMenuComponent,\r\n AsyncPipe, MatTooltipModule, LetDirective, NgSwitch, NgSwitchCase, ColumnTotalPipe, CurrencyPipe, DecimalPipe\r\n ]\r\n})\r\nexport class ColumnBuilderComponent implements OnInit {\r\n FieldType = FieldType;\r\n filter!: Partial<FilterInfo>;\r\n @Input() metaData!: MetaData;\r\n\r\n @Input() customCell!: CustomCellDirective;\r\n @Input() data$!: Observable<any[]>;\r\n\r\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\r\n outerTemplate!: TemplateRef<any>;\r\n innerTemplate!: TemplateRef<any>;\r\n transform!: (o: any, ...args: any[])=> any ;\r\n\r\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\r\n\r\n\r\n constructor(\r\n private transformCreator: TransformCreator,\r\n private table: MatTable<any>,\r\n public state: TableStore,\r\n private templateService: TableTemplateService,\r\n protected injector: Injector,\r\n ) { }\r\n\r\n getInnerTemplate() :TemplateRef<any> {\r\n if(this.metaData.template) return this.metaData.template;\r\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\r\n return this.templateService.getTemplate(this.metaData);\r\n }\r\n showfilters$!: Observable<boolean>;\r\n getOuterTemplate() {\r\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\r\n }\r\n classes?: Dictionary<Predicate<any>>;\r\n\r\n ngOnInit() {\r\n if(this.metaData.fieldType === FieldType.Currency) {\r\n this.classes = {\r\n ['negative-currency']: (element) => element[this.metaData.key] < 0,\r\n ...this.metaData.classes\r\n }\r\n }\r\n else {\r\n this.classes = this.metaData.classes;\r\n }\r\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\r\n const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\r\n previousAndCurrent(0),\r\n map(this.mapWidth),\r\n );\r\n const fullMetaStyles = this.metaData.additional?.styles ?? {};\r\n this.styles$ = width$.pipe(map(width => {\r\n const styles: allStyles = {\r\n header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\r\n footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\r\n body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\r\n };\r\n return styles;\r\n }));\r\n this.showfilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.outerTemplate = this.getOuterTemplate();\r\n this.innerTemplate = this.getInnerTemplate();\r\n this.transform = this.transformCreator.createTransformer(this.metaData);\r\n this.table.addColumnDef(this.columnDef);\r\n }\r\n\r\n cellClicked(element: any, key: string) {\r\n if(this.metaData.click) {\r\n this.metaData.click(element,key);\r\n }\r\n }\r\n\r\n mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\r\n const baseWidth = !!this.metaData.width ? {flex:`0 0 ${this.metaData.width}`, maxWidth:'none'} : {flex:'1'};\r\n if( currentUserDefinedWidth ){\r\n return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\r\n } if( wasReset() ){\r\n return (baseWidth);\r\n }\r\n return ({});\r\n function wasReset(){\r\n return previousUserDefinedWidth >= 0 && currentUserDefinedWidth == null;\r\n }\r\n }\r\n\r\n styles$!:Observable<allStyles>\r\n\r\n}\r\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\r\n\r\n <!-- header -->\r\n <ng-template matHeaderCellDef #myHeader>\r\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\r\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \"/>\r\n </ng-container>\r\n\r\n <ng-template #header>\r\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref \r\n [conditionalClasses]='metaData.additional?.columnPartClasses?.header' >\r\n <div class=\"header-container\" cdkDragHandle>\r\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n <ng-template #headerWithoutMenu >\r\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n </ng-template>\r\n <tb-header-menu\r\n *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\r\n </tb-header-menu>\r\n </div>\r\n </mat-header-cell>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ?? ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\"/>\r\n </ng-container>\r\n\r\n <ng-template #footer>\r\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\" [conditionalClasses]='metaData.additional?.columnPartClasses?.footer'>\r\n <span *ngIf=\"!!data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\r\n <span *ngSwitchCase=\"FieldType.Currency\">\r\n {{ data | columnTotal: metaData | currency }}\r\n </span>\r\n <span *ngSwitchCase=\"FieldType.Number\">\r\n {{ data | columnTotal: metaData | number }}\r\n </span>\r\n </span>\r\n </mat-footer-cell>\r\n </ng-template>\r\n </ng-template>\r\n</ng-container>\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(private dataSrc: Observable<T[]>) {\r\n super([]);\r\n }\r\n\r\n connect() {\r\n if (!this.subscription) {\r\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\r\n }\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { Sort, SortDirection } from \"@angular/material/sort\";\nimport { orderBy } from 'lodash';\n\nexport type direc = 'asc' | 'desc' | boolean;\n\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\n return orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction as direc ));\n}\n","import { Observable } from 'rxjs';\r\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\r\nimport { MatTableObservableDataSource } from './MatTableObservableDataSource'\r\nimport { sortData } from '../functions/sort-data-function';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\r\n{\r\n\r\n constructor(dataSrc: Observable<T[]>)\r\n {\r\n super(dataSrc);\r\n\r\n const baseSort = this.sortData;\r\n this.sortData = ((data: T[], sort: MatSort) => sort instanceof MultiSortDirective ? sortData(data, sort.rules) : baseSort(data, sort));\r\n }\r\n}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\nimport { asyncScheduler, merge, Observable } from 'rxjs';\r\nimport { delay, distinct, distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\r\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { AsyncPipe, NgClass, NgIf } from '@angular/common';\r\n@Component({\r\n selector: 'tb-paginator',\r\n standalone: true,\r\n imports: [NgIf, AsyncPipe, MatPaginatorModule, NgClass],\r\n template: `\r\n <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\" *ngIf=\"currentPageData$ | async as pageData\">\r\n {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\r\n </div>\r\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\r\n [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\r\n </mat-paginator>\r\n `,\r\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginatorComponent implements OnInit, AfterViewInit{\r\n @Input() dataSource! : GenericTableDataSource<any>;\r\n @Input() tableElRef! : ElementRef\r\n @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\r\n currentPageData$!: Observable<CurrentPageDetails>;\r\n collapseFooter$!:Observable<boolean>;\r\n @Input() data$!: Observable<any[]>;\r\n\r\n constructor(private state : TableStore){}\r\n ngOnInit(){\r\n this.dataSource.paginator = this.paginator;\r\n this.ourPageEvent = true;\r\n this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\r\n this.state.setPageSize(onPaginatorPageSizeChange(this.paginator));\r\n this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\r\n\r\n }\r\n ngAfterViewInit(){\r\n this.currentPageData$ = merge(\r\n this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\r\n this.data$.pipe(\r\n distinctUntilKeyChanged(\"length\"),\r\n delayToAllowForProperUpdate,\r\n map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\r\n );\r\n }\r\n\r\n paginatorChange() : void {\r\n if(!this.ourPageEvent){\r\n setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\r\n } else {\r\n this.ourPageEvent = false;\r\n }\r\n }\r\n ourPageEvent = false;\r\n}\r\n\r\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\r\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\r\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\r\n total : pageData.length\r\n});\r\n\r\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\r\n currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\r\n total:paginator.length})\r\n\r\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\r\n\r\ninterface CurrentPageDetails {\r\n currentStart:number,\r\n currentEnd:number,\r\n total:number\r\n}\r\n\r\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.userDefined.pageSize || state.pageSize), distinct());\r\n\r\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\r\n paginator._changePageSize(pageSize);\r\n\r\nconst onPaginatorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\r\n","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ChangeDetectionStrategy,\r\n Output,\r\n SimpleChanges,\r\n OnInit,\r\n QueryList,\r\n ViewContainerRef,\r\n ElementRef,\r\n Injector,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable, combineLatest } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { tap, map, distinctUntilChanged } from 'rxjs/operators';\r\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Group } from '../../classes/TableState';\r\nimport { PaginatorComponent } from './paginator.component';\r\nimport { StylerDirective } from '../../../utilities';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@Component({\r\n selector: 'tb-generic-table',\r\n templateUrl: './generic-table.component.html',\r\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTableModule, DragDropModule, StylerDirective, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,\r\n NgIf, PaginatorComponent, MatTooltipModule, AsyncPipe\r\n ]\r\n})\r\nexport class GenericTableComponent implements OnInit {\r\n\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.state.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\r\n }\r\n\r\n @Input() data$!: Observable<any[]>;\r\n @Input() indexColumn = false;\r\n @Input() selectionColumn = false;\r\n @Input() trackBy!: string;\r\n @Input() rows!: QueryList<MatRowDef<any>>;\r\n @Input() isSticky = false;\r\n @Input() columnBuilders!: ColumnBuilderComponent[];\r\n @Input() columnInfos!: Observable<ColumnInfo[]>;\r\n @Input() groupHeaderTemplate!: TemplateRef<any>;\r\n\r\n private _disableSort!: boolean;\r\n @Input() set disableSort(val: boolean) {\r\n this._disableSort = val;\r\n if (val) {\r\n if (this.dataSource?.sort) {\r\n this.dataSource.sort = null;\r\n }\r\n } else {\r\n if (this.dataSource && !this.dataSource.sort) {\r\n this.dataSource.sort = this.sort;\r\n }\r\n }\r\n }\r\n get disableSort() { return this._disableSort; }\r\n\r\n @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\r\n @ViewChild(CdkDropList, { static: true }) dropList!: CdkDropList;\r\n @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\r\n @ViewChild(PaginatorComponent) paginatorComponent!: PaginatorComponent;\r\n currentColumns!: string[];\r\n dataSource!: GenericTableDataSource<any>;\r\n keys: string [] = [];\r\n injector: Injector;\r\n rowDefArr :MatRowDef<any>[]= [];\r\n columns:string [] = [];\r\n myColumns: Dictionary<ColumnBuilderComponent> = {};\r\n showHeader$!: Observable<boolean>;\r\n\r\n constructor(\r\n private sort: MatSort,\r\n public state: TableStore,\r\n private viewContainer: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n\r\n this.injector = Injector.create({ providers: [\r\n {provide: MatTable, useFactory: ()=> {return this.table} },\r\n {provide: CdkDropList, useFactory: ()=> {return this.dropList} },\r\n ], parent: injector});\r\n }\r\n\r\n trackByFunction = (index:number, item: any) => {\r\n if (!item) {\r\n return null;\r\n }\r\n if (this.trackBy) {\r\n return item[this.trackBy];\r\n }\r\n return item;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rows && this.rows && this.myColumns.length) {\r\n this.initializeRowDefs([...this.rows]);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.selectionColumn) {\r\n this.columns.push('select');\r\n }\r\n\r\n if (this.indexColumn) {\r\n this.columns.push('index');\r\n }\r\n\r\n this.createDataSource();\r\n\r\n this.state.on(this.columnInfos, columns => {\r\n columns.forEach(ci => this.addMetaData(ci))\r\n });\r\n\r\n this.initializeRowDefs([...this.rows]);\r\n\r\n this.state.on(this.state.displayedColumns$, keys => {\r\n this.keys = [...this.columns, ...keys];\r\n this.rowDefArr?.forEach(row => row.columns = this.keys)\r\n });\r\n\r\n this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));\r\n this.showFooterRow$ = combineLatest([\r\n this.data$.pipe(map(d => !!d.length), distinctUntilChanged()),\r\n this.state.metaDataArray$.pipe(map(metaData => metaData.some(md => !!md.additional?.footer)), distinctUntilChanged()),\r\n this.columnInfos.pipe(map(columnInfos => columnInfos.some(ci => !!ci.customCell?.columnDef?.footerCell)), distinctUntilChanged()),\r\n ]).pipe(map(([hasData, hasFooterDef, hasCustomFooter]) => {\r\n const hasselectionColumn = this.selectionColumn;\r\n return hasCustomFooter || (hasData && (hasFooterDef || hasselectionColumn)) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';\r\n }));\r\n }\r\n\r\n createDataSource() {\r\n this.dataSource = new GenericTableDataSource(\r\n this.data$.pipe(tap((d) => this.selection.clear() ))\r\n );\r\n\r\n if (!this.disableSort) {\r\n this.dataSource.sort = this.sort;\r\n }\r\n }\r\n\r\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\r\n return row.isGroupHeader;\r\n }\r\n\r\n isGroupFooter(_: number, row: { isGroupFooter: boolean }) {\r\n return row.isGroupFooter;\r\n }\r\n\r\n updateGroup(group: Group): void {\r\n this.state.updateGroup({\r\n ...group,\r\n isExpanded: !group.isExpanded\r\n });\r\n }\r\n\r\n addMetaData(column: ColumnInfo) {\r\n let columnBuilder = this.myColumns[column.metaData.key];\r\n if(columnBuilder) {\r\n columnBuilder.metaData = column.metaData;\r\n } else {\r\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\r\n index: 0,\r\n injector: this.injector\r\n });\r\n component.instance.customCell = column.customCell;\r\n component.instance.metaData = column.metaData;\r\n component.instance.data$ = this.data$;\r\n this.myColumns[column.metaData.key] = component.instance;\r\n }\r\n }\r\n\r\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\r\n this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\r\n this.rowDefArr = defs;\r\n defs.forEach(r => {\r\n r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\r\n if (this.table) {\r\n this.table.addRowDef(r);\r\n }\r\n });\r\n }\r\n\r\n selection : SelectionModel<any> = new SelectionModel<any>(true, []);\r\n @Output() selection$: Observable<any> = this.selection.changed;\r\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\r\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\r\n\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected() ?\r\n this.selection.clear() :\r\n this.selection.select(...this.dataSource.data);\r\n }\r\n\r\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\r\n previousAndCurrent<number | undefined>(0),\r\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\r\n if( currentUserDefinedWidth){\r\n return ({width:`${currentUserDefinedWidth}px`});\r\n } if( wasReset() ){\r\n return ({width:'initial'});\r\n }\r\n return ({});\r\n\r\n function wasReset(){\r\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\r\n }\r\n })\r\n );\r\n \r\n showFooterRow$!: Observable<'regular-footer' | 'no-footer' | 'small-footer'>;\r\n collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\r\n}\r\n","<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n [trackBy]='trackByFunction'\r\n [styler]=\"tableWidth | async\"\r\n>\r\n\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox *ngIf=\"!row.isGroupFooter\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef>\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\r\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\" >\r\n <button mat-icon-button (click)=\"updateGroup(row);\">\r\n <mat-icon *ngIf=\"!row.isExpanded\">chevron_right</mat-icon>\r\n <mat-icon *ngIf=\"row.isExpanded\">expand_more</mat-icon>\r\n </button>\r\n {{row.groupHeaderName}}\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"groupHeaderTemplate; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showHeader$ | async\">\r\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\" />\r\n </ng-container>\r\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\" />\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\" />\r\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\" />\r\n <mat-footer-row *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []\" />\r\n\r\n</mat-table>\r\n\r\n<div class=\"flx-row-end sticky\">\r\n <tb-paginator #tbPaginator\r\n [dataSource]=\"dataSource\"\r\n [tableElRef]=\"tableElRef\"\r\n [data$]=\"data$\" />\r\n\r\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\r\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n</div>\r\n","import { Observable, combineLatest, of } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { combineArrays } from '../../rxjs/rxjs-operators';\r\nimport { createFilterFunc, CustomFilter, FilterInfo } from './filter-info';\r\n\r\nexport class DataFilter<T = any> {\r\n\r\n constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\r\n }\r\n\r\n filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\r\n return data.filter( r => filters.every( fltr => fltr(r)) );\r\n }\r\n\r\n filterData(data$: Observable<T[]>) {\r\n return combineLatest([data$, this.filters$]).pipe(\r\n map(([data, filters]) => this.filter(data, filters)),\r\n shareReplay({bufferSize: 1, refCount: true})\r\n );\r\n }\r\n\r\n appendFilters(filters$: Observable<(FilterInfo | CustomFilter )[]>) : DataFilter {\r\n return new DataFilter(combineArrays([\r\n this.filters$ ?? of([]),\r\n filters$.pipe(map(fltrs => fltrs\r\n // we only want to remove it if it was specifically set to false\r\n // as apposed to falsy\r\n .filter( f => f.active !== false )\r\n .map(filter => createFilterFunc(filter))))\r\n ]));\r\n }\r\n}\r\n","export function downloadData(data: string, filename: string, mimeType: string) {\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\n const downloadLink = document.createElement('a');\n downloadLink.download = filename;\n downloadLink.href = url;\n downloadLink.style.display = 'none';\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n URL.revokeObjectURL(url);\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { combineLatest} from 'rxjs';\r\nimport { orderMetaData, TableStore } from '../classes/table-store';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { downloadData } from '../functions/download-data';\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\r\nimport { TableState } from '../classes/TableState';\r\nimport { isPipe } from './transform-creator';\r\nimport { get } from 'lodash';\r\n\r\n@Injectable()\r\nexport class ExportToCsvService<T> {\r\n constructor(\r\n public state: TableStore,\r\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\r\n private datePipe: DatePipe,\r\n ){}\r\n\r\n exportToCsv = (data: Observable<T[]>) => {\r\n const exportableFields$ = this.state.state$.pipe(\r\n map(mapExportableFields)\r\n );\r\n\r\n combineLatest([data,exportableFields$]).pipe(\r\n first(),\r\n map(([data,fields]) => this.csvData(data,fields)),\r\n ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\r\n }\r\n\r\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\r\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\r\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\r\n return res.join('\\n');\r\n }\r\n\r\n metaToField = (meta: MetaData<T>, row: T) => {\r\n let val: any = get( row,meta.key);\r\n if (val == null && !meta.transform) return val\r\n if(meta.transform && meta.fieldType !== FieldType.Expression){\r\n const transform = meta.transform as any;\r\n return isPipe(transform) ? transform.transform(val) : transform(val);\r\n }\r\n switch (meta.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\r\n val = this.transform(val, dateFormat);\r\n break;\r\n case FieldType.DateTime:\r\n const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\r\n val = this.transform(val, dateTimeFormat);\r\n break;\r\n case FieldType.String:\r\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\r\n val = prepend + val;\r\n break;\r\n case FieldType.Array:\r\n const additional = meta.additional as ArrayAdditional;\r\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\r\n break;\r\n case FieldType.Expression:\r\n val = (meta.transform as any)(row);\r\n break;\r\n }\r\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\r\n val = val.replaceAll('\"', '\"\"');\r\n val = '\"' + val + '\"';\r\n }\r\n return val;\r\n }\r\n\r\n private transform(val: any, dateFormat: any) {\r\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\r\n return this.config.transformers[FieldType.Date]!(val);\r\n }\r\n return this.datePipe.transform(val, dateFormat);\r\n }\r\n}\r\n\r\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\r\n\r\n orderMetaData(state)\r\n .filter( meta => !keysToRemove.includes(meta.key));\r\n\r\n\r\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\r\n .filter(md => md.noExport )\r\n .map( md => md.key );\r\n\r\nexport const mapExportableFields = (state: TableState) => {\r\n const fieldsToRemove = nonExportableFields(state)\r\n .concat(state.hiddenKeys);\r\n return removeFromMetaData(state, fieldsToRemove);\r\n}\r\n","import { ArrayStyle } from '../interfaces/report-def';\r\n\r\nexport interface DefaultSettings {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n}\r\n\r\nexport const ArrayDefaults = {\r\n limit : 3,\r\n arrayStyle : ArrayStyle.CommaDelimited\r\n}","import { get } from \"lodash\";\r\nimport { MetaData } from \"../interfaces/report-def\";\r\n\r\nexport function createLinkCreator<T>(metaData: MetaData<T>){\r\n const target = metaData.additional?.link?.target || metaData.additional?.target || '_blank';\r\n const useRouterLink = metaData.additional?.link?.useRouterLink || metaData.additional?.useRouterLink;\r\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\r\n const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = parseInterpolated(value, element);\r\n return map;\r\n }, {}) ?? null,\r\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\r\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\r\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\r\n }\r\n : undefined;\r\n\r\n\r\n\r\n if (hasRoute) {\r\n return ({\r\n link: (element: T) => parseInterpolated(metaData.additional!.link!.interpolatedRoute!, element),\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n } else {\r\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\r\n const base = metaData.additional!.link?.base || metaData.additional!.base;\r\n const getKey = key(metaData);\r\n return ({\r\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n }\r\n}\r\n\r\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ? \r\n (element:any) => get(element, (metaData.additional!.link!.urlKey as string)) :\r\n metaData.additional!.urlKey ?\r\n (element:any) => get(element, (metaData.additional!.urlKey as string)) :\r\n (element:any) => get(element, metaData.key);\r\n\r\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\r\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,key));","import { Component, inject } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { NgFor, NgIf } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'group-by-list',\r\n templateUrl: './group-by-list.component.html',\r\n styleUrls: ['./group-by-list.component.css'],\r\n standalone: true,\r\n imports: [\r\n MatChipsModule, LetDirective, NgIf, NgFor, MatIconModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GroupByListComponent {\r\n \r\n tableStore = inject(TableStore);\r\n}\r\n","<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\r\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\r\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n</mat-chip-set>\r\n","import { Injectable } from '@angular/core';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { combineLatest } from 'rxjs';\r\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { notNull } from '../../../rxjs/rxjs-operators';\r\n\r\n@Injectable()\r\nexport class SortMenuComponentStore extends ComponentStore<ComponentStoreState> {\r\n constructor(private tableState: TableStore){\r\n super({ notSorted:[], sorted: []})\r\n }\r\n private set = this.updater((state, data: ComponentStoreState)=> ({...data}));\r\n\r\n setSorted = this.updater((state, sorted: SortWithName[])=>({...state, sorted}));\r\n\r\n setNotSorted = this.updater((state, notSorted: SortWithName[])=>({...state, notSorted}));\r\n sorted$ = this.select(state=>state.sorted);\r\n notSorted$ = this.select(state=>state.notSorted);\r\n\r\n setDirection = this.updater((state,sort:SortWithName)=>{\r\n const index = state.sorted.findIndex(s => s.active === sort.active);\r\n const sorted = [...state.sorted];\r\n sorted.splice(index,1,sort);\r\n return ({...state,sorted});\r\n })\r\n\r\n reset = () => {\r\n const sorted = this.tableState.sorted$.pipe(\r\n mergeMap(sort => this.tableState.metaData$.pipe(\r\n notNull(),\r\n map(\r\n meta => sort.map(s => {\r\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\r\n )))\r\n );\r\n const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\r\n metas => this.tableState.sorted$.pipe(\r\n map(s => metas\r\n .filter(meta => !s.some(s=>s.active=== meta.key) && !meta.noSort)\r\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\r\n )\r\n ));\r\n this.set(combineLatest([\r\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\r\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\r\n }\r\n}\r\n\r\nexport interface ComponentStoreState {\r\n sorted : SortWithName[];\r\n notSorted: SortWithName[];\r\n}\r\n\r\nexport interface SortWithName extends Sort{\r\n displayName : string;\r\n}\r\n\r\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\r\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\r\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { SortDirection } from '../../interfaces/report-def';\r\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-sort-menu',\r\n templateUrl: './sort-menu.component.html',\r\n styleUrls: ['./sort-menu.component.scss'],\r\n providers:[SortMenuComponentStore],\r\n standalone: true,\r\n imports: [\r\n LetDirective, NgIf, MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,\r\n NgFor, SpaceCasePipe, NgClass, AsyncPipe\r\n ]\r\n})\r\nexport class SortMenuComponent implements OnInit{\r\n\r\n sorted$:Observable<SortWithName[]>;\r\n notSorted$:Observable<SortWithName[]>;\r\n SortDirection = SortDirection;\r\n dirty$ = new BehaviorSubject(false);\r\n constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\r\n this.sorted$ = this.store.sorted$.pipe(map(data=>[...data]));\r\n this.notSorted$ = this.store.notSorted$.pipe(map(data=>[...data]));\r\n }\r\n\r\n reset(){\r\n this.dirty$.next(false);\r\n this.store.reset();\r\n }\r\n\r\n ngOnInit(){\r\n this.store.reset();\r\n }\r\n\r\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\r\n this.dirty$.next(true);\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n this.store.setSorted(event.container.data);\r\n } else {\r\n\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\r\n this.store.setSorted(event.container.data);\r\n this.store.setNotSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\r\n if (event.previousContainer === event.container) {\r\n return;\r\n } else {\r\n this.dirty$.next(true);\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\r\n\r\n this.store.setNotSorted(event.container.data);\r\n this.store.setSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n apply = this.store.effect((obs:Observable<null>)=>\r\n obs.pipe(tap(()=>{\r\n this.dirty$.next(false);\r\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\r\n })));\r\n\r\n setDirection(sort:SortWithName){\r\n this.dirty$.next(true);\r\n this.store.setDirection(sort);\r\n }\r\n\r\n}\r\n\r\n\r\n","<ng-container *ngrxLet=\"dirty$ as dirty\">\n<ng-container *ngIf=\"sorted$ | async as sorted\">\n <ng-container *ngIf=\"notSorted$ | async as notSorted\">\n <!-- Menu Trigger -->\n <span matTooltip=\"Sort\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">swap_vert</mat-icon>\n </button>\n </span>\n\n <!-- Menu -->\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\n <div mat-menu-item class=\"menu-button\">\n <div class=\"close-button-wrapper\">\n <span matTooltip=\"Close\">\n <mat-icon>close</mat-icon>\n </span>\n <span *ngIf=\"dirty\" matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\n <mat-icon>undo</mat-icon>\n </span>\n </div>\n </div>\n\n <!-- Apply Button -->\n <div class=\"apply-button-wrapper\">\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\n stop-propagation [class.apply-border]=\"dirty\"\n [disabled]=\"!dirty\">\n Apply\n <ng-container *ngIf=\"dirty\">Unsaved Changes</ng-container>\n </button>\n </div>\n\n <!-- Default Sorting Text -->\n <div *ngIf=\"!sorted.length\" class=\"tip\" >\n Sorting List\n </div>\n\n <!-- Sorted Menu List -->\n <div class=\"list\"\n cdkDropList\n #sortedGroup=\"cdkDropList\"\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\n [cdkDropListData]=\"sorted\"\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\n\n <!-- Menu Item Wrapper -->\n <ng-container *ngFor=\"let sort of sorted;let i=index\">\n\n <!-- Menu Item Headers -->\n <span *ngIf=\"sorted.length > 1 && i === 0 \" class=\"description\" class=\"sort-header\">First By</span>\n <span *ngIf=\"sorted.length > 1 && i !== 0 \" class=\"description\" class=\"sort-header\">Then By</span>\n\n <!-- Menu Item -->\n <div mat-menu-item cdkDrag class=\"menu-item\">\n <div class=\"sort-item\">\n <span class=\"sorted-name\">\n {{sort.displayName || (sort.active | spaceCase)}}\n <span class=\"direction-text\">{{sort.direction}}</span>\n </span>\n\n <!-- Sort Direction Buttons -->\n <div class=\"up-down-buttons-wrapper\">\n <button class=\"up-down-button up-button\" stop-propagation\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n arrow_upward\n </mat-icon>\n </button>\n\n <button class=\"up-down-button\" stop-propagation\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n arrow_downward\n </mat-icon>\n </button>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n\n <!-- Default Not Sorted Text -->\n <div *ngIf=\"!notSorted.length\" class=\"tip\" >\n Not Sorted List\n </div>\n <!-- Not Sorted Menu List -->\n <div class=\"list\"\n cdkDropList\n #notSortedGroup=\"cdkDropList\"\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\n [cdkDropListData]=\"notSorted\"\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\n <div mat-menu-item *ngFor=\"let sort of notSorted\" class=\"menu-item\" cdkDrag>\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\n </div>\n </div>\n </mat-menu>\n </ng-container>\n</ng-container>\n</ng-container>\n","import { CommonModule } from \"@angular/common\";\r\nimport { LetDirective } from \"@ngrx/component\";\r\nimport { MultiSortDirective } from \"../../directives\";\r\nimport { GroupByListComponent } from \"../group-by-list/group-by-list.component\";\r\nimport { FilterChipsComponent } from \"../table-container-filter/filter-list/filter-list.component\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { GenericTableComponent } from \"../generic-table/generic-table.component\";\r\nimport { GenFilterDisplayerComponent } from \"../table-container-filter/gen-filter-displayer/gen-filter-displayer.component\";\r\nimport { GenColDisplayerComponent } from \"../gen-col-displayer/gen-col-displayer.component\";\r\nimport { SortMenuComponent } from \"../sort-menu/sort-menu.component\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { ClickEmitterDirective, DialogDirective, StopPropagationDirective } from \"../../../utilities\";\r\n\r\nexport const i = [\r\n CommonModule, LetDirective,\r\n \r\n MultiSortDirective, GroupByListComponent, FilterChipsComponent, GenFilterDisplayerComponent, GenColDisplayerComponent,\r\n SortMenuComponent, GenericTableComponent, StopPropagationDirective, ClickEmitterDirective, DialogDirective,\r\n\r\n MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule, MatInputModule\r\n\r\n]","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable, filter, tap } from \"rxjs\";\r\nimport { concatLatestFrom } from \"@ngrx/effects\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TableBuilderStateStore extends ComponentStore<GlobalStorageState> {\r\n constructor(){\r\n super(loadGlobalStorageState())\r\n }\r\n\r\n //selectors\r\n selectLocalProfile = (key:string) => this.select(state => \r\n state.localProfiles[key]);\r\n \r\n selectLocalProfileState = (key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile) => {\r\n if(profile) {\r\n return profile.states[profile.current ?? profile.default];\r\n }\r\n return null;\r\n });\r\n\r\n selectLocalProfileCurrentKey = (key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile) => {\r\n if(profile) {\r\n return profile.current ?? profile.default;\r\n }\r\n return 'default';\r\n });\r\n\r\n selectLocalProfileKeys = <T>(key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile<T>) => {\r\n if(profile) {\r\n return Object.keys(profile.states).filter( key => key);\r\n }\r\n return null;\r\n });\r\n\r\n\r\n // reducers\r\n setLocalProfile = this.updater((state, props: { key: string, value: any }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {\r\n default: props.value\r\n }};\r\n } else {\r\n profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : props.value} };\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile} }\r\n });\r\n\r\n setLocalProfilesState = this.updater((state, props: { key: string, current: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(!profile) {\r\n profile = {default: props.current, current: props.current , states : {[props.current]: null }};\r\n } else {\r\n const state = profile.states[props.current] ?? profile.states[profile.current ?? profile.default];\r\n profile = {...profile, current: props.current, states: {...profile.states, [props.current] : state }};\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile}};\r\n });\r\n\r\n deleteLocalProfilesState = this.updater((state, props: { key: string, stateKey: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(profile) {\r\n const current = profile.current === props.stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[props.stateKey];\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n });\r\n\r\n // effects\r\n saveLocalProfile = this.effect((props$: Observable<{ key: string, value: any, persist?: boolean }>) => props$.pipe(\r\n filter( action => !!action.persist),\r\n concatLatestFrom((action) => this.selectLocalProfile(action.key)),\r\n tap( ([action, profile]) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {default: action.value}};\r\n globalSavedState.localProfiles[action.key] = profile;\r\n } {\r\n if(!globalSavedState.localProfiles[action.key]) {\r\n globalSavedState.localProfiles[action.key] = {...profile,states: {[profile.current ?? profile.default]: action.value}};\r\n } else {\r\n globalSavedState.localProfiles[action.key].states[profile.current ?? profile.default] = action.value;\r\n }\r\n\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.setLocalProfile(action);\r\n })\r\n ));\r\n\r\n deleteLocalProfile = this.effect((props$: Observable<{ key: string, stateKey: string }>) => props$.pipe(\r\n tap((props) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[props.key]) {\r\n return;\r\n } else {\r\n delete globalSavedState.localProfiles[props.key].states[props.stateKey];\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.deleteLocalProfilesState(props)\r\n })\r\n ))\r\n}\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState {\r\n const storage = localStorage.getItem('global-state-storage');\r\n if(storage) {\r\n return {...defaultStorageState, ...JSON.parse(storage)};\r\n }\r\n return defaultStorageState;\r\n}\r\n\r\nexport interface Profile<T = any> {\r\n default: string;\r\n current: string;\r\n states: Dictionary<T>;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n globalProfileKeys : string [];\r\n currentGlobalProfile: string;\r\n globalProfiles: Dictionary<Profile>;\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n globalProfileKeys: ['Default'],\r\n currentGlobalProfile: 'Default',\r\n globalProfiles: {},\r\n localProfiles: {}\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ContentChildren,\r\n QueryList,\r\n ChangeDetectionStrategy,\r\n Predicate,\r\n TemplateRef,\r\n ViewChild,\r\n inject,\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, from, ReplaySubject } from 'rxjs';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { first, last, map, switchMap, tap, withLatestFrom, mergeAll, scan, switchAll } from 'rxjs/operators';\r\nimport { TableBuilder } from '../../classes/table-builder';\r\nimport { MatRowDef } from '@angular/material/table';\r\nimport { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\r\nimport { stateIs, TableStore } from '../../classes/table-store';\r\nimport { DataFilter } from '../../classes/data-filter';\r\nimport { combineArrays, mapArray, notNull } from '../../../rxjs/rxjs-operators';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { Group, InitializationState } from '../../classes/TableState';\r\nimport { sortData } from '../../functions/sort-data-function';\r\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\r\nimport { cloneDeep, groupBy } from 'lodash';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { defaultShareReplay } from '../../../rxjs';\r\nimport { flattenDeep } from 'lodash';\r\nimport { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\r\nimport { createLinkCreator } from '../../services/link-creator.service';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport {i} from './table-container-imports'\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\n\r\n@Component({\r\n selector: 'tb-table-container',\r\n templateUrl: './table-container.html',\r\n styleUrls: ['./table-container.css','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [TableStore, ExportToCsvService, WrapperFilterStore],\r\n standalone: true,\r\n imports: i\r\n}) export class TableContainerComponent<T = any> {\r\n\r\n @ViewChild(GenericTableComponent) private genericTableComponent!: GenericTableComponent;\r\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\r\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\r\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\r\n @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\r\n\r\n @Input() tableId!: string;\r\n @Input() tableBuilder!: TableBuilder;\r\n @Input() indexColumn = false;\r\n @Input() selectionColumn = false;\r\n @Input() trackBy!: string;\r\n @Input() isSticky = true;\r\n @Input() set pageSize(value: number) {\r\n this.state.setPageSize(value);\r\n }\r\n @Input() inputFilters?: Observable<Array<Predicate<T>>>;\r\n @Input() groupHeaderTemplate!: TemplateRef<any>;\r\n\r\n @Output() selection$ = new EventEmitter();\r\n dataSubject = new ReplaySubject<Observable<T[]>>(1);\r\n @Output() data = this.dataSubject.pipe(\r\n switchAll(),\r\n defaultShareReplay(),\r\n );\r\n @Output() onStateReset = new EventEmitter();\r\n @Output() onSaveState = new EventEmitter();\r\n state = inject(TableStore);\r\n @Output() state$ = this.state.getSavableState().pipe(\r\n map(state => cloneDeep(state)),\r\n defaultShareReplay(),\r\n );\r\n\r\n myColumns$!: Observable<ColumnInfo[]>;\r\n stateKeys$?: Observable<string[] | null>;\r\n currentStateKey$?: Observable<string>;\r\n disableSort!: boolean;\r\n\r\n config = inject(TableBuilderConfigToken);\r\n exportToCsvService = inject(ExportToCsvService<T>);\r\n wrapper = inject(TableWrapperDirective, { optional: true });\r\n store = inject(TableBuilderStateStore);\r\n _ = this.state.on( this.state.getSavableState().pipe(last()), finalState => {\r\n if(this.tableId) {\r\n this.store.setLocalProfile({key:this.tableId,value: finalState});\r\n }\r\n });\r\n\r\n\r\n firstPage(): void {\r\n this.genericTableComponent?.paginatorComponent?.paginator?.firstPage();\r\n }\r\n\r\n lastPage(): void {\r\n this.genericTableComponent?.paginatorComponent?.paginator?.lastPage();\r\n }\r\n\r\n resetState() {\r\n this.customFilters.forEach( cf => cf.reset());\r\n this.filters.forEach( cf => cf.reset() );\r\n this.state.resetState();\r\n this.onStateReset.next(null)\r\n }\r\n\r\n initializeState() {\r\n this.state.setTableSettings(this.tableBuilder.settings);\r\n this.state.runOnceWhen(\r\n stateIs(InitializationState.MetaDataLoaded),\r\n () => {\r\n if(this.tableId) {\r\n const persistedState$ = this.store.selectLocalProfileState(this.tableId).pipe(\r\n tap( persistedState => {\r\n if(!persistedState) {\r\n this.state.setInitializationState(InitializationState.LoadedFromStore);\r\n }\r\n }),\r\n notNull(),\r\n );\r\n this.state.updateStateFromPersistedState(persistedState$);\r\n } else {\r\n this.state.setInitializationState(InitializationState.LoadedFromStore);\r\n }\r\n });\r\n }\r\n customFilters$ = new BehaviorSubject<Predicate<any>[]>([]);\r\n initializeData() {\r\n var allFilters = this.inputFilters ?\r\n combineArrays([this.customFilters$, this.inputFilters])\r\n : this.customFilters$;\r\n\r\n const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\r\n\r\n const data = new DataFilter(allFilters)\r\n .appendFilters(filters$)\r\n .filterData(this.tableBuilder.getData$()).pipe(\r\n switchMap(data => this.state.groupByKeys$.pipe(\r\n map(groupBy => this.getData(data, groupBy)) ).pipe(\r\n switchMap(data => this.state.groups$.pipe(\r\n map(groups => this.setDisplay(data, groups))\r\n ))\r\n ))\r\n );\r\n\r\n this.dataSubject.next(data);\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeState();\r\n this.initializeData();\r\n\r\n if(this.tableId) {\r\n this.stateKeys$ = this.store.selectLocalProfileKeys(this.tableId);\r\n this.currentStateKey$ = this.store.selectLocalProfileCurrentKey(this.tableId);\r\n }\r\n }\r\n\r\n exportToCsv(): void {\r\n const sorted = this.data.pipe(\r\n withLatestFrom(this.state.sorted$),\r\n map(([data, sorted]) => sortData(data, sorted))\r\n );\r\n this.exportToCsvService.exportToCsv(sorted);\r\n }\r\n\r\n saveState() {\r\n this.state.getSavableState().pipe(\r\n first()\r\n ).subscribe(tableState => {\r\n this.onSaveState.next(null);\r\n this.store.saveLocalProfile({ key: this.tableId, value:tableState, persist: true} );\r\n this.store.setLocalProfile({ key: this.tableId, value:tableState } );\r\n });\r\n }\r\n\r\n setProfileState(val: string) {\r\n this.store.setLocalProfilesState({key:this.tableId, current: val});\r\n }\r\n\r\n deleteProfileState(stateKey: string) {\r\n this.store.deleteLocalProfile({key:this.tableId, stateKey});\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeColumns();\r\n this.state.runOnceWhen(\r\n stateIs(InitializationState.LoadedFromStore),\r\n state => {\r\n\r\n let allFilters = [...this.filters, ...this.customFilters];\r\n if(this.wrapper) {\r\n allFilters = [...allFilters, ...this.wrapper.customFilters, ...this.wrapper.filters, ...this.wrapper.registrations];\r\n }\r\n\r\n const customFilters: (TableCustomFilterDirective|TableFilterDirective )[] = [];\r\n\r\n allFilters.filter( f => !f.used).forEach( f => {\r\n f.used = true;\r\n if(f.savable) {\r\n var filter = state.filters[f.filterId];\r\n if(isFilterInfo(filter)) {\r\n const filterDirective: TableFilterDirective = f as TableFilterDirective;\r\n filterDirective.fieldType = filter.fieldType;\r\n filterDirective.filterType = filter.filterType;\r\n filterDirective.setFilterValue(filter.filterValue);\r\n filterDirective.key = filter.key;\r\n filterDirective.update();\r\n }\r\n if(isCustomFilter(filter)) {\r\n f.active = filter.active ?? false;\r\n }\r\n this.state.addFilter(f.filter$);\r\n } else {\r\n customFilters.push(f);\r\n }\r\n });\r\n\r\n const filters$ = from( customFilters.map( cf => cf.filter$ )).pipe(\r\n mergeAll(),\r\n scan( (a,b)=> {\r\n if(b.active) {\r\n a[b.filterId] = isCustomFilter(b) ? b.predicate : createFilterFunc(b);\r\n } else {\r\n delete a[b.filterId] ;\r\n }\r\n return a;\r\n }, {} as Dictionary<Predicate<any>>),\r\n map( f => Object.values(f))\r\n );\r\n this.state.on(filters$, (f) => {\r\n this.customFilters$.next(f);\r\n });\r\n this.state.updateState({initializationState: InitializationState.Ready});\r\n });\r\n }\r\n\r\n initializeColumns() {\r\n const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\r\n this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\r\n map((mds) => {\r\n mds = mds.map(this.mapMetaDatas);\r\n return [\r\n ...mds,\r\n ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\r\n ]\r\n })\r\n ));\r\n this.state.setLinkMaps(this.tableBuilder.metaData$!.pipe(\r\n map((mds) => {\r\n return mds.reduce((acc, md) => {\r\n if(md.fieldType === FieldType.Link){ acc[md.key]= createLinkCreator(md)}\r\n return acc;\r\n },{})\r\n })\r\n ))\r\n\r\n this.myColumns$ = this.state.metaDataArray$.pipe(\r\n mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\r\n );\r\n }\r\n mapMetaDatas = (meta : MetaData<T>) => {\r\n if(meta.fieldType === FieldType.Array){\r\n const additional = {...meta.additional} as ArrayAdditional;\r\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\r\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\r\n return {...meta,additional}\r\n }\r\n return meta;\r\n }\r\n\r\n collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\r\n\r\n getData(data: any[], groupByKeys: string[]): any[] {\r\n if (!groupByKeys.length) {\r\n this.disableSort = false;\r\n return data;\r\n }\r\n this.disableSort = true;\r\n return this.tbGroupBy(data, groupByKeys);\r\n }\r\n\r\n tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\r\n let res = {};\r\n res = groupBy(data, groupByKeys[0]);\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n if (remainingGroupByKeys.length) {\r\n Object.keys(res).forEach(key => res[key] = this.tbGroupBy(res[key], remainingGroupByKeys, key))\r\n }\r\n return flattenDeep(Object.keys(res).map(groupName => {\r\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\r\n return [\r\n {\r\n isGroupHeader: true,\r\n groupHeaderName: `${groupName} (${res[groupName]?.filter(row => !row.isGroupHeader)?.length})`,\r\n data: res[groupName],\r\n groupName: uniqName,\r\n padding: 0\r\n },\r\n (res[groupName] as any[])?.map(d => ({ ...d, parentGroupName: d.parentGroupName || uniqName }))\r\n ];\r\n })).map(this.addIndentation);\r\n }\r\n\r\n addIndentation = (d: any) => {\r\n if (d.isGroupHeader) {\r\n if (d.padding) {\r\n d.padding += 20;\r\n } else {\r\n d.padding = 1;\r\n }\r\n }\r\n return d;\r\n }\r\n\r\n setDisplay = (data: any[], groups: Group[]): any[] => data\r\n .map(d => ({\r\n ...d,\r\n shouldDisplay: !d.parentGroupName || this.shouldDisplay(groups.find(g => g.groupName == d.parentGroupName), groups),\r\n isExpanded: groups.find(g => g.groupName == d.groupName)?.isExpanded\r\n }))\r\n .filter(d => d.shouldDisplay);\r\n\r\n\r\n shouldDisplay = (currentGroup?: Group, groups?: Group[]): boolean => {\r\n if (!currentGroup?.isExpanded) {\r\n return false;\r\n }\r\n\r\n const parentGroup = groups?.find(g => g.groupName == currentGroup.parentGroupName);\r\n\r\n if (parentGroup) {\r\n return this.shouldDisplay(parentGroup, groups);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","<ng-content select=\"[before]\" />\r\n\r\n<ng-container multiSort [matSortDisabled]=\"disableSort\" *ngrxLet=\"state.tableSettings$ as tableSettings\">\r\n <div class=\"header-wrapper\">\r\n <div class=\"title\">\r\n <ng-content select=\".tb-header-title\" *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\" />\r\n <group-by-list />\r\n </div>\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\r\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #mainMenu='matMenu'>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n </ng-container>\r\n <ng-template #allMenu>\r\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n </ng-template>\r\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [indexColumn]='indexColumn'\r\n [selectionColumn]='selectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\r\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\">\r\n </tb-generic-table>\r\n </div>\r\n\r\n\r\n\r\n <ng-template #headerMenu>\r\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\"/>\r\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"/>\r\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"/>\r\n </ng-template>\r\n\r\n <ng-template #headerMenuExtra>\r\n <button mat-menu-item (click)=\"resetState()\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset table</span>\r\n </button>\r\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\r\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\r\n <mat-icon color=\"primary\">save</mat-icon>\r\n <span>Save to {{currentKey}}</span>\r\n </button>\r\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\r\n <span>Choose Profile</span>\r\n </button>\r\n </ng-container>\r\n\r\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\r\n <button mat-menu-item clickEmitter #add='clickEmitter'>\r\n <mat-icon>add</mat-icon>\r\n <span>New</span>\r\n </button>\r\n <ng-container *ngFor='let key of stateKeys$ | async'>\r\n <button mat-menu-item (click)='setProfileState(key)'>\r\n <span>{{key}}</span>\r\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <ng-container *opDialog='add'>\r\n <mat-form-field>\r\n <input class=\"add-key\" matInput #addedKey />\r\n </mat-form-field>\r\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);' [disabled]=\"!addedKey.value\">\r\n Add\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\r\nimport { MultiSortDirective } from './directives/multi-sort.directive';\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\r\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FilterComponent, GenericTableComponent, TableContainerComponent } from './components';\r\nimport { CustomCellDirective, MatSlideToggleTbFilterDirective, MatRadioButtonTbFilterDirective, MatOptionTbFilterDirective, MatCheckboxTbFilterDirective, MatButtonToggleFilterDirective, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective, ResizeColumnDirective, TableCustomFilterDirective } from './directives';\r\nimport { UtilitiesModule } from '../utilities';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { TableBuilderStateStore } from './ngrx/tableBuilderStateStore';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatNativeDateModule,\r\n RouterModule,\r\n TableContainerComponent,\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n exports: [\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n providers: [\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n MultiSortDirective,\r\n TableBuilderStateStore,\r\n ]\r\n})\r\nexport class TableBuilderModule {\r\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\r\n return {\r\n ngModule: TableBuilderModule,\r\n providers: [\r\n { provide: TableBuilderConfigToken, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { isObservable, Observable, of } from 'rxjs';\r\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\r\nimport { first, map, switchMap } from 'rxjs/operators';\r\nimport { mapArray } from '../../rxjs/rxjs-operators';\r\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { defaultShareReplay } from '../../rxjs';\r\nimport { get, set } from 'lodash';\r\n\r\nexport class TableBuilder<T = any> {\r\n\r\n metaData$: Observable<MetaData<T>[]>;\r\n constructor(private data$: Observable<T[]>, metaData$?: Observable<MetaData<T,any>[]> | MetaData<T,any>[], settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\r\n this.data$ = this.data$.pipe(defaultShareReplay());\r\n this.metaData$ = metaData$ ?\r\n (isObservable(metaData$) ? metaData$ : of(metaData$ )).pipe(defaultShareReplay()) \r\n :\r\n data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\r\n const s = isObservable(settings) ? settings : of(settings);\r\n this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\r\n }\r\n settings : Observable<GeneralTableSettings>;\r\n getData$(): Observable<any[]> {\r\n return this.metaData$.pipe(\r\n switchMap( metaData => this.data$.pipe(\r\n mapArray( data => this.cleanRecord(data, metaData ) )\r\n ))\r\n );\r\n }\r\n\r\n createMetaData(obj: any): MetaData [] {\r\n return Object.keys(obj ?? {})\r\n .map( key => ({\r\n key,\r\n fieldType: FieldType.Unknown,\r\n order: -1\r\n }));\r\n }\r\n\r\n cleanVal(val: any, metaData: MetaData): any {\r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n const num = Number( val );\r\n return isNaN(num) || val == null ? null : num;\r\n case FieldType.Date:\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n return null;\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n return d;\r\n case FieldType.DateTime: \r\n const dateTime = Date.parse(val);\r\n if(isNaN(dateTime)){\r\n return null;\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n return dt;\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n return dt;\r\n }\r\n dt.setSeconds(0, 0);\r\n return dt;\r\n }\r\n return val;\r\n }\r\n\r\n cleanRecord( record: T, metadata: MetaData []): T {\r\n const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\r\n const val = this.cleanVal(get(record, curr.key), curr);\r\n if(val !== undefined) {\r\n set(prev as {}, curr.key, val);\r\n }\r\n return prev;\r\n }, {...record} as T )\r\n return {...record, ...cleaned};\r\n }\r\n}\r\n\r\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\r\n reportDef$ = reportDef$.pipe(defaultShareReplay());\r\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\r\n};\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { get } from 'lodash';\r\n\r\n// State\r\nexport class AppStatusState {\r\n readonly ActionStatusBar!: ActionStatus[];\r\n}\r\n\r\nexport interface StatusState {\r\n ids: string[];\r\n entities: {[id: string]: ActionStatus};\r\n}\r\n\r\nexport class ActionStatus {\r\n id!: string;\r\n displayName?: string;\r\n status!: serverStatusTypes;\r\n responsePayload?: any;\r\n}\r\n\r\nconst InitialState: StatusState = {\r\n ids: [],\r\n entities: {}\r\n};\r\n\r\nexport enum serverStatusTypes {\r\n notStarted = 0,\r\n inProgress = 1,\r\n success = 2,\r\n error = 3\r\n}\r\n\r\n// Entity and Selectors\r\nexport const statusAdapter = createEntityAdapter<ActionStatus>();\r\nexport interface State extends EntityState<ActionStatus> {}\r\nexport const initialState: StatusState = statusAdapter.getInitialState(InitialState);\r\n\r\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = statusAdapter.getSelectors(getStatusState);\r\n\r\nexport const selectEntity = (id: string) => createSelector(\r\n selectEntities,\r\n (entities: any) => entities[id]\r\n);\r\n\r\n// Reducers\r\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\r\n\r\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' );\r\n\r\n if ( actionStatus ) {\r\n if ( state.ids.find(id => id === actionStatus.id) ) {\r\n const modifiedObj = {...state.entities[actionStatus.id] };\r\n modifiedObj.status = actionStatus.status;\r\n modifiedObj.responsePayload = actionStatus.responsePayload;\r\n return statusAdapter.upsertOne( modifiedObj, state);\r\n } else {\r\n return statusAdapter.addOne(actionStatus , state);\r\n }\r\n\r\n }\r\n return state;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { actionStatusReducer } from '../ngrx';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\r\n ]\r\n})\r\nexport class NgrxExtModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\r\nimport { delayOn } from '../../rxjs';\r\nimport { AsyncPipe, NgIf } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'lib-action-state-spinner',\r\n templateUrl: './action-state-spinner.component.html',\r\n styleUrls: ['./action-state-spinner.component.css'],\r\n standalone: true,\r\n imports: [NgIf, AsyncPipe, MatProgressSpinnerModule]\r\n})\r\nexport class ActionStateSpinnerComponent implements OnInit {\r\n\r\n @Input() status$!: Observable<ActionStatus>;\r\n serverActionStatus$!: Observable<ActionStatus>;\r\n serverStatusTypes = serverStatusTypes;\r\n\r\n ngOnInit() {\r\n this.serverActionStatus$ = this.status$.pipe(\r\n delayOn( a => a.status === serverStatusTypes.inProgress , 500)\r\n );\r\n }\r\n}\r\n","<div id=\"blocker\" *ngIf=\"(serverActionStatus$ | async)?.status === serverStatusTypes.inProgress\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ActionStateSpinnerComponent,\r\n ],\r\n exports: [\r\n ActionStateSpinnerComponent,\r\n ]\r\n})\r\nexport class ActionStateUiModule { }\r\n","/*\r\n * Public API Surface of action-state\r\n */\r\n\r\nexport * from './ngrx';\r\nexport * from './ngrx-ext/ngrx-ext.module';\r\nexport * from './action-state-ui/action-state-ui.module';\r\nexport * from './action-state-spinner/action-state-spinner.component';\r\n","import { APP_INITIALIZER, makeEnvironmentProviders } from \"@angular/core\";\r\nimport { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\ntype Cache = {\r\n [key: string]: { [key: string]: any }[];\r\n}\r\n\r\nclass AppStoreCache {\r\n cache: Cache = {};\r\n isInCache = (props: any, actionableSelectorId: string): boolean => {\r\n if(typeof props != 'object') props = { props };\r\n\r\n let itemsInCache = this.cache[actionableSelectorId] = this.cache[actionableSelectorId] || [];\r\n\r\n if(itemsInCache.some(itemInCache => shallowEquals(itemInCache, props))){\r\n return true;\r\n }\r\n\r\n itemsInCache.push(props);\r\n return false;\r\n }\r\n}\r\n\r\nlet _store: Store<any>;\r\nlet _cache: AppStoreCache;\r\n\r\nexport const clearActionableSelectorRequestCache = () => _cache.cache = {};\r\n\r\nconst setStore = (store: Store) => {\r\n if(store instanceof Store) _store = store;\r\n};\r\n\r\nexport function setUpStoreFactory(store: Store){\r\n _cache = new AppStoreCache();\r\n return () => new Promise((resolve, reject) => {\r\n setStore(store);\r\n resolve(null);\r\n })\r\n}\r\n\r\n/**\r\n * Creates a selector that can dispatch an action if conditions are met.\r\n * Note: The props of the selector factory must include the props of the action.\r\n * @param selectorFactory A method that returns selector.\r\n * @param action The action that will be dispatched when conditions are met.\r\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\r\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\r\n */\r\nexport const createActionableSelector = <State, Result, Props = any>(\r\n selectorFactory: (props?: Props) => MemoizedSelector<State, Result>,\r\n action: ActionReturner<Props | undefined>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n): (props?: Props) => ActionableMemoizedSelector<State, Result> => {\r\n const id = uuid();\r\n const slctr = (props?: Props) => createSelector(\r\n selectorFactory(props),\r\n (selected: Result) => {\r\n if(dispatchIf(selected) && !_cache.isInCache(props, id)){\r\n queueMicrotask(() => _store.dispatch(action(props)));\r\n }\r\n return selected;\r\n }\r\n ) as ActionableMemoizedSelector<State, Result>;\r\n return slctr;\r\n}\r\n\r\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\r\n\r\nexport type ActionReturner<Props> = (props: Props) => Action;\r\n\r\nexport function defaultFilter(data: any) {\r\n return data == null || data == undefined;\r\n}\r\n\r\nconst shallowEquals = (cachedItem: object, newItem: object): boolean => {\r\n const cachedItemKeys = Object.keys(cachedItem);\r\n const secondKeys = Object.keys(newItem);\r\n if(cachedItemKeys.length !== secondKeys.length) {\r\n return false;\r\n }\r\n for(let index = 0; index < cachedItemKeys.length; index++) {\r\n const currentKey = cachedItemKeys[index];\r\n if(cachedItem[currentKey] !== newItem[currentKey]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function provideActionableSelector(){\r\n return makeEnvironmentProviders([\r\n { provide: APP_INITIALIZER, useFactory: setUpStoreFactory, multi: true, deps: [Store] },\r\n ])\r\n}\r\n","/*\r\n * Public API Surface of http-request-state\r\n */\r\n\r\nexport * from './http-request-state/directives';\r\nexport * from './http-request-state/rxjs';\r\nexport * from './http-request-state';\r\n\r\n\r\nexport * from './table-builder/table-builder.module';\r\n\r\nexport * from './table-builder/classes/TableBuilderConfig';\r\n\r\nexport * from './table-builder/interfaces/report-def';\r\n\r\nexport * from './table-builder/classes/MatTableObservableDataSource';\r\n\r\nexport * from './table-builder/classes/table-builder';\r\n\r\nexport * from './table-builder/classes/table-builder-general-settings';\r\n\r\nexport * from './table-builder/components';\r\n\r\nexport * from './table-builder/directives';\r\n\r\nexport {FilterType} from './table-builder/enums/filterTypes';\r\n\r\n\r\nexport * from './rxjs'\r\n\r\nexport * from './utilities'\r\n\r\nexport * from './action-state';\r\n\r\nexport * from './ngrx';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","merge","i1.TableStore","tap","uuid","i1","i2.TableWrapperDirective","takeUntil","i2.DialogService","switchMap","i2","i4","i6","i7","i8","i10","i3","i2.WrapperFilterStore","i5","i1.TransformCreator","i3.TableStore","i4.TableTemplateService","delay","i2.TableStore","first","i2.SortMenuComponentStore","scan","i3.MultiSortDirective","i4.GroupByListComponent","i5.FilterChipsComponent","i6.GenFilterDisplayerComponent","i7.GenColDisplayerComponent","i8.SortMenuComponent","i9.GenericTableComponent","i10.StopPropagationDirective","i11.ClickEmitterDirective","i12.DialogDirective","i13","i15","i16","i17","i18"],"mappings":"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"}
1
+ {"version":3,"file":"one-paragon-angular-utilities.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/http-request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateFactory.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.html","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/GenericTableDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/classes/data-filter.ts","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container-imports.ts","../../../projects/angular-utilities/src/table-builder/ngrx/tableBuilderStateStore.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/one-paragon-angular-utilities.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nexport enum HttpRequestStatus {\r\n notStarted,\r\n inProgress,\r\n success,\r\n fail,\r\n cancelled,\r\n }\r\n\r\n export type HttpRequestStateCancelled = {\r\n status: HttpRequestStatus.cancelled\r\n }\r\n\r\n export type HttpRequestStateNotStarted = {\r\n status: HttpRequestStatus.notStarted\r\n }\r\n\r\n export type HttpRequestStateInProgress = {\r\n status: HttpRequestStatus.inProgress\r\n }\r\n\r\n export type HttpRequestStateSuccess<T> = {\r\n status: HttpRequestStatus.success;\r\n body: T;\r\n }\r\n\r\n export type HttpRequestStateError = {\r\n status: HttpRequestStatus.fail;\r\n error: any;\r\n }\r\n\r\n\r\n export type HttpRequestState<T = any> =\r\n HttpRequestStateCancelled |\r\n HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\nexport enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse = 2,\r\n cancelPrevious = 3,\r\n sequential = 4,\r\n}\r\nexport interface RequestStateOptions {\r\n strategy?: HttpRequestStrategy\r\n}\r\n\r\nexport type HttpRequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { HttpRequestState, HttpRequestStateError, HttpRequestStateInProgress, HttpRequestStateNotStarted, HttpRequestStateSuccess, HttpRequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: HttpRequestState<T>): state is HttpRequestStateError {\r\n return state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: HttpRequestState<T>): state is HttpRequestStateSuccess<T> {\r\n return state.status === HttpRequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: HttpRequestState<T>): state is (HttpRequestStateSuccess<T> | HttpRequestStateError) {\r\n return state.status === HttpRequestStatus.success || state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): HttpRequestStateSuccess<T> {\r\n return { status: HttpRequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): HttpRequestStateError {\r\n return { status: HttpRequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: HttpRequestStateNotStarted = { status: HttpRequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: HttpRequestStateInProgress = { status: HttpRequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: HttpRequestStatus) {\r\n return [HttpRequestStatus.success, HttpRequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nexport function defaultShareReplay<T>() {\n return function (src: Observable<T>): Observable<T> {\n return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n };\n}","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n $implicit?: HttpRequestStateAny<T>;\r\n state?: HttpRequestStateAny<T>;\r\n status: {\r\n inProgress: boolean;\r\n notStarted: boolean;\r\n success: boolean;\r\n error: boolean;\r\n };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]', standalone: true })\r\nexport class HttpRequestStateDirective<TParam extends any[], V, R, T = R extends null ? V : R> {\r\n\r\n readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n $implicit: undefined,\r\n state: undefined,\r\n status: {\r\n inProgress: false,\r\n notStarted: true,\r\n success: false,\r\n error: false,\r\n }\r\n };\r\n\r\n\r\n subject = new Subject<Observable<HttpRequestState<T>>>();\r\n state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n subscription: Unsubscribable;\r\n hooks: ((state: HttpRequestState<T>) => void)[] = [];\r\n\r\n @Input('httpRequestState') set stateStore(store: HttpRequestStateStore<TParam, V, R, T> | Observable<HttpRequestState<T>>) {\r\n if (isObservable(store)) {\r\n this.subject.next(store);\r\n } else {\r\n this.subject.next(store.state$.pipe(map(state => state.response)));\r\n }\r\n\r\n }\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef,\r\n ) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, this.ViewContext);\r\n this.subscription = this.state.subscribe(state => {\r\n this.ViewContext.$implicit = state;\r\n this.ViewContext.state = state;\r\n this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;\r\n this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;\r\n this.ViewContext.status.success = state.status === HttpRequestStatus.success;\r\n this.ViewContext.status.error = state.status === HttpRequestStatus.fail;\r\n this.hooks.forEach(hook => hook(state));\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.viewContainer.clear();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpRequestStateDirective<any, V, R>, ctx: any): ctx is HttpRequestStateViewContext<R extends null ? V : R> {\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n status: HttpRequestStatus;\r\n body?: T;\r\n error?: any;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase {\r\n hasView = false;\r\n constructor(\r\n private injector: Injector,\r\n protected templateRef: TemplateRef<any>,\r\n protected viewContainer: ViewContainerRef,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n const parent = this.injector.get(HttpRequestStateDirective);\r\n if(parent == null) {\r\n throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n }\r\n parent.hooks.push(this.baseRender);\r\n this.baseRender(parent.ViewContext.state);\r\n }\r\n\r\n ngOnDestroy() {\r\n \r\n }\r\n\r\n private baseRender = (state:HttpRequestState ) : void => {\r\n if (this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n this.hasView = this.render(state);\r\n }\r\n\r\n abstract render: (state: HttpRequestState) => boolean;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]', standalone: true })\r\nexport class HttpErrorStateDirective<TParam extends any[], T> extends HttpStateDirectiveBase {\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector, templateRef, viewContainer);\r\n }\r\n\r\n render = (state: HttpRequestState<any>) => {\r\n if (isErrorState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]', standalone: true })\r\nexport class HttpInProgressStateDirective extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.inProgress){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]', standalone: true })\r\nexport class HttpNotStartedStateDirective<TParam extends any[],T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\r\n if(state.status === HttpRequestStatus.notStarted){\r\n this.viewContainer.createEmbeddedView(this.templateRef );\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<any>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector,templateRef,viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","import { Directive, Injector, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]', standalone: true })\r\nexport class HttpSuccessStateDirective<V, R> extends HttpStateDirectiveBase {\r\n @Input() httpSuccessStateTypeSafety?: HttpRequestStateStore<any, V, R> | Observable<HttpRequestState<V>>;\r\n render = (state: HttpRequestState<R extends unknown ? V : R>) => {\r\n if (isSuccessState(state)) {\r\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n return true;\r\n }\r\n return false;\r\n };\r\n constructor(\r\n injector: Injector,\r\n templateRef: TemplateRef<{ $implicit: R extends unknown ? V : R }>,\r\n viewContainer: ViewContainerRef,\r\n ) {\r\n super(injector, templateRef, viewContainer);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n static ngTemplateContextGuard<V, R>(dir: HttpSuccessStateDirective<V, R>, ctx: any): ctx is HttpSuccessStateViewContext<R extends unknown ? V : R> {\r\n return true;\r\n }\r\n}\r\n","import { isSuccessState } from '../helpers';\nimport { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport const getRequestorBody = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n filter(isSuccessState),\n map( res => res.body)\n );","import { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const getRequestorStatus = <T>(source: Observable<HttpRequestState<T>>) =>\n source.pipe(\n map( res => res.status)\n );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n return function (src: Observable<HttpRequestState>): Observable<HttpRequestState> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isErrorState(result)) {\r\n onError(result.error);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n return function (src: Observable<HttpRequestState<T>>): Observable<HttpRequestState<T>> {\r\n return src.pipe(\r\n tap( result => {\r\n if(isSuccessState(result)) {\r\n onSuccess(result.body);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\n return function (src: Observable<T>): Observable<T | TResult> {\n return src.pipe(catchError(e => of(projection(e))),);\n };\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { HttpRequestFactory, HttpRequestState, HttpRequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<HttpRequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n httpState$: Observable<HttpRequestState<Res>>;\r\n status$: Observable<HttpRequestStatus>;\r\n body$: Observable<Res>;\r\n request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n return req.pipe(\r\n map(createSuccess),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n defaultShareReplay()\r\n );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: HttpRequestFactory<TParam,T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<HttpRequestState<T>>> {\r\n const request$ = new ReplaySubject<[...TParam]>(1);\r\n const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n startWith(notStarted),\r\n defaultShareReplay(),\r\n );\r\n const request = (...params: [...TParam]) => {\r\n request$.next(params);\r\n return httpState$;\r\n };\r\n return ({\r\n request,\r\n httpState$,\r\n body$: httpState$.pipe(getRequestorBody),\r\n status$: httpState$.pipe(getRequestorStatus)\r\n });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n httpState$: Observable<HttpRequestState<T>>,\r\n request:HttpRequestFactory<TParam,TT>,\r\n requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n ): Observable<HttpRequestState<TT>> {\r\n return httpState$.pipe(\r\n switchMap( res => {\r\n if(res.status === HttpRequestStatus.success) {\r\n const secondReq = httpRequestor<[...TParam], TT>(request);\r\n const param = requestParams(res.body);\r\n secondReq.request(...param );\r\n return secondReq.httpState$;\r\n } else {\r\n return of(res);\r\n }\r\n }),\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\r\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\r\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\r\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\r\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ],\r\n exports: [\r\n HttpSuccessStateDirective,\r\n HttpRequestStateDirective,\r\n HttpErrorStateDirective,\r\n HttpInProgressStateDirective,\r\n HttpNotStartedStateDirective,\r\n ]\r\n}) export class HttpRequestModule { }","import { Observable, of, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Directive } from '@angular/core';\r\n\r\nexport interface RequestResponse<TParam extends any[], T> {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n}\r\n\r\n@Directive()\r\nexport class HttpRequestStateStore<TParam extends any[], V, R = null, T = R extends null ? V : R> extends ComponentStore<RequestResponse<TParam, T>> {\r\n\r\n constructor(private req: HttpRequestFactory<TParam, V> ,private options?: RequestStateOptions, private project?: (v: V) => R) {\r\n super({ requestParams: null as any, response: notStarted });\r\n this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;\r\n }\r\n\r\n reset() {\r\n this.setState({ requestParams:null as any, response: notStarted });\r\n }\r\n\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy === HttpRequestStrategy.concurrent)\r\n return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n if(this.options?.strategy === HttpRequestStrategy.sequential)\r\n return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );\r\n }\r\n\r\n private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {\r\n return (obs).pipe(\r\n this.flatteningStrategy(),\r\n tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n );\r\n });\r\n\r\n private flattenedRequest = (...value: [...TParam]) => {\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n private singleUseRequest = (...value: [...TParam]) => {\r\n if (this.get().response.status !== HttpRequestStatus.notStarted) {\r\n throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n }\r\n return this.requestEffect(value) as Subscription;\r\n }\r\n\r\n selectHttpState$ = this.state$.pipe(map(a => a.response));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));\r\n\r\n selectError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isErrorState),\r\n map( state => state.error)\r\n );\r\n\r\n selectResponse$: Observable<T> = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessState),\r\n map( state => state.body)\r\n );\r\n selectSuccessOrError$ = this.state$.pipe(\r\n map(r => r.response),\r\n filter(isSuccessOrErrorState),\r\n map( () => null)\r\n );\r\n\r\n errorHandled = false;\r\n onError( cb: (error: HttpErrorResponse) => void) {\r\n this.errorHandled = true;\r\n this.on(this.selectError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccess( cb: (body?: T) => void) {\r\n this.on(this.selectResponse$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessOrError(cb: () => void){\r\n this.on(this.selectSuccessOrError$, cb);\r\n return this;\r\n }\r\n\r\n onSuccessWithRequest(func: (state: {\r\n requestParams: [...TParam];\r\n body: T;\r\n }) => void) {\r\n this.onUpdate(({ requestParams, response }) => {\r\n if(isSuccessState(response)){\r\n func({requestParams,body: response.body});\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n onErrorWithRequest(func: (state: {\r\n error: HttpErrorResponse;\r\n requestParams: [...TParam];\r\n }) => void) {\r\n this.onUpdate( ({ requestParams, response }) => {\r\n if(isErrorState(response)){\r\n func({ requestParams, error: response.error });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam, T>> {\r\n return this.req(...params).pipe(\r\n map(re => createSuccess((this.project ? this.project(re) : re) as T)),\r\n mapError(createFailure),\r\n startWith(inProgress),\r\n map( state => ({ requestParams: params, response: state })),\r\n defaultShareReplay()\r\n );\r\n }\r\n\r\n onUpdate(func: (state: {\r\n requestParams: [...TParam];\r\n response: HttpRequestState<T>;\r\n }) => void) {\r\n this.on(this.state$, func);\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n return this.effect((src: Observable<V>) => {\r\n return src.pipe(tap(func));\r\n })(srcObservable) as Subscription;\r\n }\r\n\r\n request: (...value: [...TParam] ) => Subscription;\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n }\r\n\r\n export class CancellationToken {}\r\n","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { HttpRequestFactory, RequestStateOptions } from \"./types\";\r\nimport { HttpRequestStateStore } from './HttpRequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class HttpRequestStateFactory implements OnDestroy {\r\n\r\n constructor() {}\r\n ngOnDestroy(): void {\r\n this.requestors.forEach( request => request.ngOnDestroy());\r\n }\r\n private requestors: OnDestroy[] = [];\r\n\r\n create<TParam extends any[], V>( req: HttpRequestFactory<TParam, V>, options?: RequestStateOptions) : HttpRequestStateStore<TParam, V>\r\n create<TParam extends any[], V, R, T = R>( req: HttpRequestFactory<TParam, V>, project: (v: V) => R , options?: RequestStateOptions) : HttpRequestStateStore<TParam, V, T>\r\n create<TParam extends any[], V, R = null, T = R extends null ? V : R>( req: HttpRequestFactory<TParam, V>, optionsOrProject?: RequestStateOptions | ((v: V) => R), options?: RequestStateOptions ) : HttpRequestStateStore<TParam, V, R, T> {\r\n const requestor = (typeof(optionsOrProject) === 'function' ? new HttpRequestStateStore<TParam, V, R, T>(req, options, optionsOrProject) : new HttpRequestStateStore<TParam, V, R, T>(req, options));\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions ) {\r\n const requestor = new HttpRequestStateStore(r, options);\r\n this.requestors.push(requestor);\r\n return requestor;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'spaceCase', standalone: true})\r\nexport class SpaceCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n return spaceCase(value);\r\n }\r\n}\r\n\r\n/**\r\n * Adds a space before uppercase letters that either\r\n * 1. follows a lowercase letter or digit\r\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\r\n * \r\n * Uppercases the first digit\r\n * \r\n * Turns underscores into spaces\r\n */\r\nexport function spaceCase(value: string){\r\n const phrase = value?.replace(/([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, '$1$3 $2$4')\r\n // uppercase the first character of every word\r\n return phrase?.replace(/(^| )(\\w)/g, x => x.toUpperCase());\r\n}\r\n","import { Dictionary } from './dictionary';\r\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\r\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\r\nimport { QueryParamsHandling } from '@angular/router';\r\n\r\n\r\nexport enum FieldType {\r\n Unknown = 0,\r\n Date = 1,\r\n Link = 2,\r\n ImageUrl = 3,\r\n Currency = 4,\r\n Array = 5,\r\n Hidden = 6,\r\n Number = 7,\r\n String = 8,\r\n Boolean = 9,\r\n PhoneNumber = 10,\r\n Expression = 11,\r\n Enum = 12,\r\n DateTime = 13,\r\n}\r\n\r\nexport enum SortDirection {\r\n asc= 'asc',\r\n desc= 'desc'\r\n}\r\n\r\nexport enum Target {\r\n Blank = '_blank',\r\n Self = '_self',\r\n Parent = '_parent',\r\n Top = '_top'\r\n}\r\n\r\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\r\n key: (keyof T | AdditionalFields[number]) & string;\r\n displayName?: string;\r\n fieldType: FieldType;\r\n additional?: Additional<T>;\r\n order?: number;\r\n preSort?: SortDef;\r\n _internalNotUserDefined?: boolean;\r\n width?: string;\r\n noExport?: boolean;\r\n noFilter?: boolean;\r\n noSort?: boolean;\r\n customCell?: boolean;\r\n transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\r\n click?: (element: T, key: string ) => void;\r\n template?: TemplateRef<any>;\r\n classes?: Dictionary<Predicate<T>>;\r\n toolTip?: string;\r\n useIcon?: boolean;\r\n}\r\nexport interface ReportDef<DataType = any> {\r\n data: DataType[];\r\n metaData: MetaData [];\r\n totalRecords?: number;\r\n count: number;\r\n}\r\n\r\nexport interface SortDef {\r\n direction: SortDirection;\r\n precedence?: number;\r\n}\r\n\r\nexport interface FilterOptions {\r\n filterableValues : string[]\r\n}\r\nexport interface DateTimeOptions {\r\n format?: string;\r\n includeSeconds?: boolean;\r\n includeMilliseconds: boolean;\r\n}\r\ntype interpolatedRoute = string;\r\nexport interface Additional<T = any> {\r\n link? : {\r\n base?: string;\r\n urlKey?: string;\r\n target?: Target;\r\n useRouterLink?: boolean;\r\n /**\r\n * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\r\n * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\r\n */\r\n interpolatedRoute?: interpolatedRoute;\r\n routerLinkOptions?:{\r\n queryParams?: [string, interpolatedRoute][];\r\n fragment?: string;\r\n preserveFragment?: boolean;\r\n queryParamsHandling?: QueryParamsHandling;\r\n }\r\n }\r\n /**\r\n * @deprecated Please use link.base\r\n */\r\n base?: string;\r\n /**\r\n * @deprecated Please use link.urlKey\r\n */\r\n urlKey?: string;\r\n /**\r\n * @deprecated Please use link.target\r\n */\r\n target?: Target;\r\n /**\r\n * @deprecated Please use link.useRouterLink\r\n */\r\n useRouterLink?: boolean;\r\n footer?: { type: 'sum' };\r\n grouping?: { groupBy?: boolean, sum?: boolean; groupTitleFn?: (val: any) => string }\r\n export?: TableBuilderExport;\r\n dateFormat?: string;\r\n dateTimeOptions?: DateTimeOptions;\r\n filterOptions?: FilterOptions;\r\n styles?: Dictionary<string>;\r\n columnPartStyles?: {\r\n header?: Dictionary<string>,\r\n body?: Dictionary<string>,\r\n footer?: Dictionary<string>,\r\n }\r\n columnPartClasses?: {\r\n header?: Dictionary<Predicate<T>>,\r\n footer?: Dictionary<Predicate<T>>,\r\n }\r\n enumMap?: {[key:number]:string};\r\n boolean? : {\r\n showForFalse? : true | { icon : string },\r\n forTrue? : { icon : string }\r\n }\r\n}\r\n\r\nexport enum ArrayStyle {\r\n CommaDelimited,\r\n NewLine\r\n}\r\n\r\nexport interface ArrayAdditional extends Additional {\r\n limit?: number;\r\n arrayStyle?: ArrayStyle;\r\n}\r\n","import { merge } from \"lodash\";\r\n\r\nexport class GeneralTableSettings {\r\n constructor(settings? : TableBuilderSettings){\r\n if(settings){\r\n merge(this.headerSettings, settings.headerSettings);\r\n merge(this.footerSettings, settings.footerSettings);\r\n merge(this.columnHeaderSettings, settings.columnHeaderSettings);\r\n }\r\n }\r\n headerSettings = new TableWrapperHeaderSettings();\r\n footerSettings = new TableWrapperFooterSettings();\r\n columnHeaderSettings = new TableColumnHeaderSettings();\r\n}\r\n\r\nexport interface TableBuilderSettings {\r\n headerSettings? : Partial<TableWrapperHeaderSettings>;\r\n footerSettings? : Partial<TableWrapperFooterSettings>;\r\n columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\r\n}\r\n\r\nexport class TableWrapperHeaderSettings {\r\n hideExport = false\r\n hideFilter = false\r\n hideColumnSettings = false\r\n hideHeader = false\r\n hideSort = false\r\n collapse = false\r\n showTitleWhenCollapsed = true;\r\n}\r\n\r\nexport class TableWrapperFooterSettings {\r\n collapse = false\r\n}\r\n\r\nexport class TableColumnHeaderSettings {\r\n noFilters = false;\r\n noHeader = false;\r\n}\r\n\r\nexport class PersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings | PersistedTableSettings){\r\n if (tableSettings){\r\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseHeader;\r\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PersistedTableSettings).collapseFooter;\r\n }\r\n }\r\n collapseHeader = false;\r\n collapseFooter = false;\r\n}\r\n\r\nexport class NotPersistedTableSettings {\r\n constructor(tableSettings? :GeneralTableSettings){\r\n if(tableSettings){\r\n this.hideExport = tableSettings.headerSettings.hideExport;\r\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\r\n this.hideFilter = tableSettings.headerSettings.hideFilter;\r\n this.hideSort = tableSettings.headerSettings.hideSort;\r\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\r\n this.hideHeader = tableSettings.headerSettings.hideHeader;\r\n this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;\r\n this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;\r\n }\r\n }\r\n hideExport = true\r\n hideFilter = true\r\n hideColumnSettings = true\r\n hideSort = true\r\n showTitleWhenHeaderCollapsed = true;\r\n hideHeader = true\r\n hideColumnHeaderFilters = true;\r\n hideColumnHeader = true;\r\n}\r\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData, Target } from '../interfaces/report-def';\r\nimport { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface Group {\r\n groupName?: string;\r\n parentGroupName?: string;\r\n isExpanded?: boolean;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n filters: Dictionary<FilterInfo | CustomFilter>;\r\n sorted : Sort [];\r\n userDefined : { order:Dictionary<number>, widths:Dictionary<number>, table:{ width?:number }, pageSize?: number };\r\n persistedTableSettings : PersistedTableSettings;\r\n groupByKeys: string[];\r\n groups: Group[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n initializationState: InitializationState;\r\n metaData: Dictionary<MetaData>;\r\n notPersistedTableSettings : NotPersistedTableSettings;\r\n pageSize: number;\r\n linkMaps:{[key:string]:{\r\n link: (t:any)=>string,\r\n useRouterLink: boolean,\r\n target: Target\r\n }};\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n initializationState = null;\r\n metaData = null;\r\n notPersistedTableSettings = null;\r\n linkMaps = null;\r\n pageSize = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n Created,\r\n MetaDataLoaded,\r\n LoadedFromStore,\r\n Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n initializationState: InitializationState.Created,\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{ order: {}, widths: {}, table: {}},\r\n persistedTableSettings : new PersistedTableSettings(),\r\n notPersistedTableSettings : new NotPersistedTableSettings(),\r\n pageSize: 10,\r\n linkMaps:{},\r\n groupByKeys: [],\r\n groups: []\r\n};\r\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\r\n\r\n// here is how to use it\r\n// <generic-table [report]=\"report\">\r\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\r\n// <p *customCell=\"'column2'\">I am custom cell two </p>\r\n// </generic-table>\r\n@Directive({\r\n selector: '[customCell]',\r\n standalone: true\r\n})\r\nexport class CustomCellDirective implements AfterContentInit {\r\n @Input() customCell!: string;\r\n @Input() displayName?: string;\r\n @Input() preSort?: SortDef;\r\n @Input() TemplateRef: TemplateRef<any>;\r\n @Input() customCellOrder?: number;\r\n @Input() customCellWidth?: string;\r\n constructor(\r\n @Optional() private templateRef: TemplateRef<any>,\r\n @Optional() public columnDef: CdkColumnDef\r\n ) {\r\n this.TemplateRef = this.templateRef;\r\n }\r\n ngAfterContentInit() {\r\n if (this.TemplateRef === null) {\r\n this.TemplateRef = this.templateRef;\r\n }\r\n }\r\n\r\n getMetaData(metaData? : MetaData): MetaData {\r\n return {\r\n key: this.customCell,\r\n displayName: this.displayName ?? metaData?.displayName,\r\n preSort: this.preSort ?? metaData?.preSort,\r\n fieldType: metaData?.fieldType ?? FieldType.Unknown,\r\n order: this.customCellOrder ?? metaData?.order,\r\n _internalNotUserDefined: !(!!metaData),\r\n width: this.customCellWidth ?? metaData?.width,\r\n customCell: true,\r\n noExport: !metaData\r\n };\r\n }\r\n}\r\n","import { Predicate } from '@angular/core';\r\nimport { flatten } from 'lodash';\r\nimport {\r\n filter,\r\n first,\r\n map,\r\n pairwise,\r\n startWith,\r\n Observable,\r\n combineLatest,\r\n Subscription,\r\n MonoTypeOperatorFunction,\r\n OperatorFunction,\r\n concatMap,\r\n merge,\r\n of,\r\n delay\r\n} from 'rxjs';\r\n\r\n\r\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\r\n return src.pipe(filter(predicate),first());\r\n}\r\n\r\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.map(mapFunc) ) );\r\n\r\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\r\n source.pipe( map( src => src.filter(filterFunc) ) );\r\n\r\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\r\n return (source: Observable<T>) => {\r\n return new Observable<T>(subscriber => {\r\n let emitted = false;\r\n setTimeout(() => {\r\n if(!emitted) {\r\n subscriber.next(val);\r\n }\r\n }, 0);\r\n source.subscribe({\r\n next(x) { emitted = true; subscriber.next(x) },\r\n error(err) { emitted = true; subscriber.error(err) },\r\n complete() { emitted = true; subscriber.complete(); }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\r\n return combineLatest(\r\n sources.map( src => src.pipe(onWait([])))\r\n ).pipe(\r\n map( res => flatten(res) )\r\n );\r\n};\r\n\r\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsciber => {\r\n let isOn = defaultState;\r\n const subscription = new Subscription();\r\n subscription.add( switchSource.subscribe( on => isOn = on ));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(isOn) {\r\n subsciber.next(value);\r\n }\r\n },\r\n error: error => subsciber.error(error),\r\n complete: () => subsciber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function skipOneWhen( skipper: Observable<any> ) {\r\n return <T>(source: Observable<T>) : Observable<T> => {\r\n return new Observable(subsriber => {\r\n const subscription = new Subscription();\r\n let skipNext = false;\r\n subscription.add(skipper.subscribe( _ => skipNext = true));\r\n subscription.add(source.subscribe({\r\n next(value) {\r\n if(skipNext) {\r\n skipNext = false;\r\n } else {\r\n subsriber.next(value);\r\n }\r\n },\r\n error: error => subsriber.error(error),\r\n complete: () => subsriber.complete()\r\n }));\r\n return subscription;\r\n });\r\n }\r\n}\r\n\r\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\r\n return (source: Observable<T>) => {\r\n return source.pipe(startWith(startingValue), pairwise());\r\n }\r\n}\r\n\r\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\r\n return (source: Observable<T | null | undefined>) => {\r\n return source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\r\n }\r\n}\r\n\r\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\r\n return (src: Observable<T>) => {\r\n return src.pipe(\r\n concatMap(r => {\r\n if (predicate(r)) {\r\n return merge(\r\n of({ r }),\r\n of(null).pipe(delay(delayTime))\r\n ).pipe(\r\n notNull(),\r\n map(d => d.r)\r\n );\r\n } else {\r\n return of(r);\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\r\ntype PipeLike<T> = Observable<T>['pipe'];\r\nexport class Subjectifier<T> extends Observable<T>{\r\n private _subj = new Subject<T>();\r\n private merged = merge(this._source, this._subj);\r\n constructor(private _source: Observable<T>){\r\n super((obs: Observer<T>) => {\r\n const s = merge( _source, this._subj ).subscribe(obs);\r\n return s;\r\n });\r\n }\r\n next: Subject<T>['next'] = this._subj.next.bind(this._subj);\r\n newSubj = (...operations: Parameters<PipeLike<T>>) =>\r\n new Subjectifier(this.merged.pipe(...operations));\r\n}","import { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\r\nimport { fromEvent } from \"rxjs\";\r\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { defaultShareReplay } from \"../../rxjs\";\r\nimport { TableStore } from \"../classes/table-store\";\r\n\r\n@Directive({\r\n selector: \"[resizeColumn]\",\r\n standalone: true\r\n})\r\nexport class ResizeColumnDirective implements OnInit{\r\n @Input(\"resizeColumn\") resizable!: boolean;\r\n\r\n @Input() key!: string;\r\n constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\r\n\r\n ngOnInit(){\r\n if (this.resizable){\r\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\r\n const resizer = this.createResizerSpanInColumnHead(columnHead);\r\n\r\n const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer,columnHead,table)\r\n\r\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\r\n filter(({mouseMove})=>!!mouseMove.buttons),\r\n map( ({mouseDownData,mouseMove}) => {\r\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\r\n return ({\r\n key:this.key,\r\n widthInPixel:newColumnWidth,\r\n tableSize:newTableWidth,\r\n })\r\n }),\r\n defaultShareReplay()\r\n );\r\n\r\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\r\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\r\n ));\r\n\r\n this.store.setTableWidth(resizeColsData$.pipe(\r\n map(resizeData => resizeData.tableSize )));\r\n }\r\n\r\n }\r\n\r\n createResizerSpanInColumnHead(columnHead:HTMLElement){\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n resizer.style['cursor']='col-resize';\r\n resizer.style['user-select']='none';\r\n resizer.style['width']='10px';\r\n resizer.style['height']='100%';\r\n resizer.style['position']='absolute';\r\n resizer.style['right']='0';\r\n resizer.style['top']='0';\r\n resizer.style['z-index']='1';\r\n this.renderer.appendChild(columnHead, resizer);\r\n return resizer;\r\n }\r\n\r\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\r\n const columnHead: HTMLElement = this.el.nativeElement;\r\n const row = this.renderer.parentNode(columnHead);\r\n const table = this.renderer.parentNode(row);\r\n return ({table,columnHead})\r\n }\r\n\r\n mouseDownThroughMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\r\n .pipe(\r\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\r\n map( mouseMove => ({mouseDownData, mouseMove})),\r\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\r\n ) ),\r\n )\r\n }\r\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\r\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\r\n map(event => ({\r\n startPageX: event.pageX,\r\n startColumnWidth: this.getElementWidth(columnHead),\r\n startTableWidth: this.getElementWidth(table),\r\n }))\r\n );\r\n }\r\n\r\n calculateNewWidths(mouseDownData: MouseDownData, mouseMove: MouseEvent):{newTableWidth:number,newColumnWidth:number}{\r\n const change = (mouseMove.pageX - mouseDownData.startPageX );\r\n let newColumnWidth = mouseDownData.startColumnWidth + change;\r\n if(newColumnWidth < 1){\r\n newColumnWidth = 1;\r\n }\r\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\r\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\r\n return ({newTableWidth,newColumnWidth})\r\n }\r\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\r\n\r\n}\r\ninterface MouseDownData{\r\n startPageX:number,\r\n startColumnWidth:number,\r\n startTableWidth:number,\r\n}\r\n","\r\nexport enum FilterType {\r\n NumberEquals = 'Equals',\r\n NumberNotEqual = 'Does Not Equal',\r\n NumberGreaterThan = 'Greater Than',\r\n NumberLessThan = 'Less Than',\r\n NumberBetween = 'Between',\r\n StringEquals = 'Equals',\r\n StringContains = 'Contains',\r\n StringDoesNotContain = 'Does Not Contain',\r\n StringStartWith = 'Start With',\r\n StringEndsWith = 'Ends With',\r\n DateIsOn = 'Is on',\r\n DateIsNotOn = 'Is Not On',\r\n DateOnOrAfter = 'On or After',\r\n DateOnOrBefore = 'On or Before',\r\n DateBetween = 'Between',\r\n DateTimeIsAt = 'Is At',\r\n DateTimeIsNotAt = 'Is Not At',\r\n DateTimeAtOrAfter = 'At or After',\r\n DateTimeAtOrBefore = 'At or Before',\r\n DateTimeBetween = 'Between',\r\n BooleanEquals = 'Is',\r\n IsNull = 'Is Blank',\r\n Or = 'Or',\r\n And = 'And',\r\n In = 'In',\r\n Custom = 'Custom',\r\n}\r\n\r\nexport const NumberFilterMap = {\r\n [FilterType.NumberEquals]:FilterType.NumberEquals,\r\n [FilterType.NumberNotEqual]:FilterType.NumberNotEqual,\r\n [FilterType.NumberGreaterThan]:FilterType.NumberGreaterThan,\r\n [FilterType.NumberLessThan]:FilterType.NumberLessThan,\r\n [FilterType.NumberBetween]:FilterType.NumberBetween,\r\n [FilterType.IsNull]:FilterType.IsNull,\r\n [FilterType.In]:FilterType.In,\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport const StringFilterMap = {\r\n [FilterType.StringEquals]:FilterType.StringEquals,\r\n [FilterType.StringContains]:FilterType.StringContains,\r\n [FilterType.StringDoesNotContain]:FilterType.StringDoesNotContain,\r\n [FilterType.StringStartWith]:FilterType.StringStartWith,\r\n [FilterType.StringEndsWith]:FilterType.StringEndsWith,\r\n [FilterType.IsNull]:FilterType.IsNull,\r\n [FilterType.In]:FilterType.In,\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport const DateFilterMap = {\r\n [FilterType.DateIsOn]:FilterType.DateIsOn,\r\n [FilterType.DateIsNotOn]:FilterType.DateIsNotOn,\r\n [FilterType.DateOnOrAfter]:FilterType.DateOnOrAfter,\r\n [FilterType.DateOnOrBefore]:FilterType.DateOnOrBefore,\r\n [FilterType.DateBetween]:FilterType.DateBetween,\r\n [FilterType.IsNull]:FilterType.IsNull,\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport const DateTimeFilterMap = {\r\n ...DateFilterMap,\r\n [FilterType.DateTimeIsAt]:FilterType.DateTimeIsAt,\r\n [FilterType.DateTimeIsNotAt]:FilterType.DateTimeIsNotAt,\r\n [FilterType.DateTimeAtOrAfter]:FilterType.DateTimeAtOrAfter,\r\n [FilterType.DateTimeAtOrBefore]:FilterType.DateTimeAtOrBefore,\r\n [FilterType.DateTimeBetween]:FilterType.DateTimeBetween,\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport const BooleanFilterMap = {\r\n [FilterType.BooleanEquals]: FilterType.BooleanEquals,\r\n [FilterType.IsNull]:FilterType.IsNull,\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport const EnumFilterMap = {\r\n [FilterType.IsNull] : FilterType.IsNull,\r\n [FilterType.In] : FilterType.In\r\n} as const satisfies FilterToFiltersMap;\r\n\r\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType}>;\r\n","import { Directive, Input, Optional, Predicate, SimpleChanges } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, takeUntil, tap } from \"rxjs\";\r\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FilterType } from \"../enums/filterTypes\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { MatRadioButton } from \"@angular/material/radio\";\r\nimport { MatButtonToggle } from '@angular/material/button-toggle';\r\nimport { MatCheckbox } from \"@angular/material/checkbox\";\r\nimport { FieldType } from \"../interfaces/report-def\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport { ComponentStore } from \"@ngrx/component-store\";\r\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\r\nimport { MatOption } from \"@angular/material/core\";\r\n\r\n\r\nconst inputs = [\r\n 'predicate: tbCustomFilter',\r\n 'filterId: filterId',\r\n];\r\n\r\n\r\n@Directive({\r\n selector: ' '\r\n})\r\nexport abstract class TableCustomFilterDirective<T = any> {\r\n abstract filter$ : Observable<CustomFilter>;\r\n filterId!: string;\r\n savable = false;\r\n used = false;\r\n abstract active: boolean;\r\n abstract reset(): void;\r\n}\r\n\r\n\r\n\r\n\r\n@Directive({\r\n selector: \"[tbFilter]\",\r\n standalone: true,\r\n}) export class TableFilterDirective extends ComponentStore<FilterInfo> {\r\n\r\n constructor(@Optional() protected model: NgControl, @Optional() wrapper: TableWrapperDirective) {\r\n super();\r\n if(wrapper) {\r\n wrapper.register(this);\r\n }\r\n if(model) {\r\n this.effect( () => {\r\n return model.valueChanges!.pipe(\r\n tap( val => {\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n )\r\n })\r\n }\r\n }\r\n reset() {\r\n this.filterValue = undefined;\r\n }\r\n filter$ = this.state$;\r\n\r\n @Input() filterType!: FilterType;\r\n @Input() key!: string;\r\n @Input() fieldType!: FieldType;\r\n @Input() filterId!: string;\r\n @Input() active = true;\r\n @Input() filterValue: any = null;\r\n\r\n setFilterValue(value: any) {\r\n if(this.model) {\r\n setTimeout(() => {\r\n this.model.reset(value);\r\n }, 0);\r\n } else {\r\n this.filterValue = value;\r\n }\r\n }\r\n\r\n\r\n used = false;\r\n savable = false;\r\n ready = false;\r\n\r\n _userActive = true;\r\n ngOnChanges(changes: SimpleChanges ) {\r\n this.update();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n this.ready = true;\r\n this.update();\r\n }\r\n\r\n protected setFilter(filter: FilterInfo ) {\r\n this.setState(filter);\r\n }\r\n\r\n update() {\r\n if (this.ready) {\r\n this.setFilter(\r\n {\r\n filterId: this.filterId,\r\n key: this.key,\r\n filterType: this.filterType,\r\n fieldType: this.fieldType,\r\n filterValue: this.filterValue,\r\n active: this.active && this.filterValue !== undefined,\r\n _isExternalyManaged: true,\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[tbFilterStringContains]',\r\n providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\r\n inputs: [\r\n 'key:tbFilterStringContains',\r\n 'filterValue:filterValue',\r\n 'filterId: filterId',\r\n 'active: active',\r\n ],\r\n standalone: true,\r\n}) export class TableFilterStringContainsDirective extends TableFilterDirective {\r\n constructor(@Optional() model: NgControl, @Optional() wrapper: TableWrapperDirective) {\r\n super(model,wrapper);\r\n this.filterType = FilterType.StringContains;\r\n this.fieldType = FieldType.String;\r\n this.effect( () => {\r\n return model.valueChanges!.pipe(\r\n tap( val => {\r\n this.filterValue = val;\r\n this.update();\r\n })\r\n )\r\n })\r\n }\r\n\r\n override reset() {\r\n if(this.model) {\r\n this.model.reset();\r\n }\r\n super.reset();\r\n }\r\n\r\n override setFilter(filter: FilterInfo) {\r\n filter.active = filter.filterValue && this._userActive;\r\n super.setFilter(filter);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes['active']) {\r\n this._userActive = changes['active'].currentValue;\r\n }\r\n super.ngOnChanges(changes);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[tbCustomFilter]\",\r\n})\r\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective<T> {\r\n\r\n filter$! : Subject<CustomFilter>;\r\n filter!: CustomFilter;\r\n @Input() filterId! : string;\r\n\r\n _predicate!: Predicate<T>;\r\n @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\r\n this._predicate = val;\r\n this.update({predicate:val});\r\n }\r\n\r\n _active: boolean = false;\r\n ready = false;\r\n\r\n update(val: Partial<CustomFilter> ) {\r\n if(this.ready) {\r\n this.filter = {...this.filter,...val};\r\n this.filter$.next(this.filter);\r\n }\r\n }\r\n\r\n @Input() set active(val: boolean) {\r\n if(this._active !== val) {\r\n this._active = val;\r\n this.update({active:val});\r\n }\r\n }\r\n get active(): boolean {\r\n return this._active;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.filterId) {\r\n this.filterId = uuid();\r\n } else {\r\n this.savable = true;\r\n }\r\n\r\n this.filter = {\r\n filterType: FilterType.Custom,\r\n filterId: this.filterId,\r\n active: this._active,\r\n predicate: this._predicate,\r\n };\r\n this.ready = true;\r\n this.filter$ = new BehaviorSubject(this.filter);\r\n }\r\n}\r\n\r\n@Directive()\r\nexport abstract class TbSelectedFilterDirective<T = any> extends TableCustomFilterDirectiveBase<T> {\r\n\r\n\r\n protected constructor(private change: Observable<any>, private isActive: () => boolean, @Optional() wrapper: TableWrapperDirective) {\r\n super();\r\n if(wrapper) {\r\n wrapper.register(this);\r\n }\r\n }\r\n\r\n reset() {\r\n this.active = false;\r\n }\r\n\r\n destroySubject$ = new ReplaySubject<void>(1);\r\n ngOnDestroy() {\r\n this.destroySubject$.next();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._active = this.isActive();\r\n super.ngOnInit();\r\n this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\r\n this.active = this.isActive();\r\n });\r\n }\r\n}\r\n\r\n// Checkbox\r\n@Directive({\r\n selector: 'mat-checkbox[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n this.matCheckbox.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matCheckbox: MatCheckbox, @Optional() wrapper: TableWrapperDirective) {\r\n super(matCheckbox.change, () => matCheckbox.checked, wrapper);\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: 'mat-slide-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatSlideToggleTbFilterDirective<T = any> extends TbSelectedFilterDirective<T> {\r\n override set active(val: boolean) {\r\n this.matSlideToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matSlideToggle: MatSlideToggle, @Optional() wrapper: TableWrapperDirective) {\r\n super(matSlideToggle.change, () => matSlideToggle.checked,wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Radio button\r\n@Directive({\r\n selector: 'mat-radio-button[tbCustomFilter]',\r\n inputs: ['predicate: tbCustomFilter'],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n this.matRadioButton.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matRadioButton: MatRadioButton, @Optional() wrapper: TableWrapperDirective) {\r\n super(matRadioButton.change, () => matRadioButton.checked, wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Option (select)\r\n@Directive({\r\n selector: 'mat-option[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective {\r\n\r\n override set active(val: boolean) {\r\n if(val) {\r\n this.matOption.select();\r\n } else {\r\n this.matOption.deselect();\r\n }\r\n super.active = val;\r\n }\r\n constructor(private matOption: MatOption, @Optional() wrapper: TableWrapperDirective) {\r\n super( matOption.onSelectionChange.pipe(tap( d => {\r\n if(!matOption.value) {\r\n matOption.value = uuid();\r\n }\r\n }\r\n\r\n )), () => matOption.selected, wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n// Button toggle\r\n@Directive({\r\n selector: 'mat-button-toggle[tbCustomFilter]',\r\n inputs: [\r\n ...inputs\r\n ],\r\n providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\r\n standalone: true,\r\n})\r\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {\r\n override set active(val: boolean) {\r\n this.matButtonToggle.checked = val;\r\n super.active = val;\r\n }\r\n constructor(private matButtonToggle: MatButtonToggle, @Optional() wrapper: TableWrapperDirective) {\r\n super(matButtonToggle.change, () => matButtonToggle.checked,wrapper);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n","import { ContentChildren, Directive, QueryList } from \"@angular/core\";\r\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\r\n\r\n@Directive({\r\n selector: '[tbWrapper]',\r\n standalone: true,\r\n})\r\nexport class TableWrapperDirective {\r\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\r\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\r\n\r\n registrations : (TableCustomFilterDirective | TableFilterDirective) [] = [];\r\n\r\n register(filter: TableCustomFilterDirective | TableFilterDirective) {\r\n this.registrations.push(filter);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'phone', standalone: true})\r\nexport class PhoneNumberPipe implements PipeTransform {\r\n\r\n transform(phoneNum: string): any {\r\n if (phoneNum) {\r\n phoneNum = phoneNum.replace(/\\D/g,'');\r\n if(phoneNum[0] === '1') {\r\n phoneNum = phoneNum.substring(1);\r\n }\r\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\r\n }\r\n }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { TableState, defaultTableState } from './TableState';\r\nimport { DefaultSettings } from './DefaultSettings';\r\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\r\nimport { MultiSortDirective } from '../directives';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../../utilities/pipes/space-case.pipes';\r\nexport interface TableBuilderConfig {\r\n defaultTableState: Partial<TableState>;\r\n export?: TableBuilderExport;\r\n defaultSettings?: DefaultSettings;\r\n arrayInfo?: ArrayAdditional;\r\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\r\n}\r\n\r\nexport interface TableBuilderExport {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n onSave?: (event?: any) => void;\r\n prepend? : string;\r\n}\r\n\r\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\r\n\r\nexport function provideTableBuilder(config?: TableBuilderConfig) : EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n MultiSortDirective,\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n { provide : TableBuilderConfigToken , useValue: config || defaultTableState}\r\n ])\r\n}\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\n\nexport const isNull:FilterFunc<boolean,any> = (filterInfo:FilterInfo) => {\n const func = filterInfo.filterValue ?\n (val: any) => val == null || val === ''\n :\n (val: any) => val != null && val !== '';\n return func;\n}\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst stringEqualFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const equelsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val) === equelsVal );\n}\n\nconst stringContainsFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const containsVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).includes(containsVal));\n}\n\nconst stringDoesNotContainFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const doesNotContainVal = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>!prepareForStringCompare(val)?.includes(doesNotContainVal));\n}\n\nconst stringStartsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).startsWith(startsWith));\n}\n\nconst stringEndsWithFunc:FilterFunc<string> = (filterInfo:FilterInfo) => {\n const startsWith = prepareForStringCompare(filterInfo.filterValue);\n return ((val)=>prepareForStringCompare(val).endsWith(startsWith));\n}\n\nconst multipleStringValuesEqualsFunc:FilterFunc<string[],string> = (filterInfo:FilterInfo) => {\n const filterVals = filterInfo.filterValue.map( (v: string) => prepareForStringCompare(v));\n return ((val)=> filterVals.some((s:string) => prepareForStringCompare(val) === s));\n}\n\nexport const StringFilterFuncs: {[k:string]: FilterFunc<any,any>} = {\n [FilterType.StringEquals]: stringEqualFunc,\n [FilterType.StringContains]: stringContainsFunc,\n [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\n [FilterType.StringStartWith]: stringStartsWithFunc,\n [FilterType.StringEndsWith]: stringEndsWithFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleStringValuesEqualsFunc,\n};\n\nexport const EnumFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.IsNull]: isNull,\n [FilterType.In] : multipleStringValuesEqualsFunc,\n};\n\nexport const prepareForStringCompare = (val : any):string => val?.toString().trim().toLowerCase();\n","import { Range, FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\ntype NumberFilterFunc = FilterFunc<number>\n\nconst numberEqalsFunc:NumberFilterFunc = (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val === filterInfo.filterValue;\n}\n\nconst numberNotEqualFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean =>{\n return val !== filterInfo.filterValue;\n}\n\nconst numberGreaterThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val > filterInfo.filterValue;\n}\n\nconst numberLessThanFunc:NumberFilterFunc= (filterInfo : FilterInfo<number>) => (val: number): boolean => {\n return val < filterInfo.filterValue;\n}\n\nconst numberBetweenFunc:FilterFunc<Range<number>,number> = (filterInfo : FilterInfo) => {\n const startVal = Number(filterInfo.filterValue.Start);\n const endVal = Number(filterInfo.filterValue.End);\n return ((val)=>(val > startVal) && (val < endVal));\n}\n\nexport const multipleNumberValuesEqualsFunc:FilterFunc<number[],number> = (filterInfo:FilterInfo) => {\n return ((val)=>filterInfo.filterValue.some((value: any) => val === value));\n}\n\nexport const NumberFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.NumberEquals]: numberEqalsFunc,\n [FilterType.NumberNotEqual]: numberNotEqualFunc,\n [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\n [FilterType.NumberLessThan]: numberLessThanFunc,\n [FilterType.NumberBetween]: numberBetweenFunc,\n [FilterType.IsNull]: isNull,\n [FilterType.In]: multipleNumberValuesEqualsFunc,\n};\n","import { FilterFunc, FilterInfo, Range } from '../classes/filter-info';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { isNull } from './null-filter-function';\r\n\r\n\r\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() === isOnVal);\r\n}\r\n\r\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() !== isNotOnVal);\r\n}\r\n\r\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const afterVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() >= afterVal);\r\n}\r\n\r\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\r\n const beforeVal = new Date( filterInfo.filterValue).getTime();\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return ((val)=>clean(filterInfo,val).getTime() <= beforeVal);\r\n}\r\n\r\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\r\n const startVal = new Date(filterInfo.filterValue.Start);\r\n const endVal = new Date(filterInfo.filterValue.End);\r\n const clean = filterInfo.fieldType === FieldType.Date ? (a,b) => b : cleanDateTime\r\n return (\r\n (val)=> {\r\n const cleanedVal = clean(filterInfo, val);\r\n return cleanedVal>=startVal && cleanedVal <= endVal;\r\n });\r\n}\r\n\r\nconst cleanDateTime = (filterInfo:FilterInfo, val: Date) => {\r\n if(!!DateFilterFuncs[filterInfo.filterType]){\r\n const d = new Date(val);\r\n d.setHours(0,0,0,0);\r\n return d;\r\n }\r\n return val;\r\n}\r\n\r\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\r\n [FilterType.DateIsOn]: dateIsOnFunc,\r\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\r\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n\r\nexport const DateTimeFilterFuncs: Dictionary<FilterFunc<any,any>> = {\r\n ...DateFilterFuncs,\r\n [FilterType.DateTimeIsAt]: dateIsOnFunc,\r\n [FilterType.DateTimeIsNotAt]: dateIsNotOnFunc,\r\n [FilterType.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\r\n [FilterType.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\r\n [FilterType.DateTimeBetween]: dateBetweenFunc,\r\n [FilterType.IsNull]: isNull,\r\n};\r\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\nconst booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean => {\n return filterInfo.filterValue === val;\n}\n\nexport const BooleanFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.BooleanEquals]: booleanEqualsFunc,\n [FilterType.IsNull]: isNull,\n};\n","import { StringFilterMap, DateFilterMap, NumberFilterMap, BooleanFilterMap, FilterType, FilterToFiltersMap, EnumFilterMap, DateTimeFilterMap } from '../enums/filterTypes';\r\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\r\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\r\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\r\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Predicate } from '@angular/core';\r\nimport { get } from 'lodash';\r\n\r\nexport type mappedFieldTypes =\r\n FieldType.Unknown |\r\n FieldType.Date |\r\n FieldType.DateTime |\r\n FieldType.Currency |\r\n FieldType.Array |\r\n FieldType.Number |\r\n FieldType.String |\r\n FieldType.Boolean |\r\n FieldType.PhoneNumber |\r\n FieldType.Link |\r\n FieldType.Enum;\r\n\r\ntype MappedTypes = Exclude<typeof FieldType[keyof typeof FieldType],FieldType.Expression | FieldType.Hidden | FieldType.ImageUrl>\r\n\r\nexport const filterTypeMap = {\r\n [FieldType.Unknown] : StringFilterMap,\r\n [FieldType.Date] : DateFilterMap,\r\n [FieldType.DateTime]: DateTimeFilterMap,\r\n [FieldType.Currency] : NumberFilterMap,\r\n [FieldType.Array] : StringFilterMap,\r\n [FieldType.Number] : NumberFilterMap,\r\n [FieldType.String] : StringFilterMap,\r\n [FieldType.Boolean] : BooleanFilterMap,\r\n [FieldType.PhoneNumber] : StringFilterMap,\r\n [FieldType.Link] : StringFilterMap,\r\n [FieldType.Enum] : EnumFilterMap,\r\n} as const satisfies {[key in MappedTypes]: FilterToFiltersMap};\r\n\r\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\r\n [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.every( f => f(obj));\r\n },\r\n [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean => {\r\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\r\n return (obj: any) : boolean => filters.some( f => f(obj));\r\n },\r\n};\r\n\r\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\r\n [FieldType.String] : StringFilterFuncs,\r\n [FieldType.Array] : StringFilterFuncs,\r\n [FieldType.Currency] : NumberFilterFuncs,\r\n [FieldType.PhoneNumber] : StringFilterFuncs,\r\n [FieldType.Date] : DateFilterFuncs,\r\n [FieldType.DateTime] : DateTimeFilterFuncs,\r\n [FieldType.Number] : NumberFilterFuncs,\r\n [FieldType.Boolean] : BooleanFilterFuncs,\r\n [FieldType.Unknown] : StringFilterFuncs,\r\n [FieldType.Enum] : EnumFilterFuncs ,\r\n [FieldType.Link] : StringFilterFuncs,\r\n};\r\n\r\nexport interface FilterState {\r\n filterId: string;\r\n filterType: FilterType;\r\n filterValue?: any;\r\n active?: boolean;\r\n\r\n}\r\n\r\nexport interface FilterInfo<T extends FieldType = any> extends FilterState {\r\n key: string;\r\n fieldType: T;\r\n _isExternalyManaged?: boolean;\r\n}\r\n\r\nexport interface PartialFilter<T extends FieldType = any> {\r\n filterId?: string;\r\n key: string;\r\n fieldType: T;\r\n filterType?: FilterType;\r\n filterValue?: any;\r\n}\r\n\r\n\r\n\r\nexport interface CustomFilter<T extends FieldType = any> extends FilterState {\r\n predicate: Predicate<T>;\r\n filterType: FilterType.Custom;\r\n}\r\n\r\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) : filter is CustomFilter {\r\n return filter && filter.filterType === FilterType.Custom;\r\n}\r\n\r\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) : filter is FilterInfo {\r\n return filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\r\n}\r\n\r\nconst defaultPredicate: Predicate<any> = () => true;\r\n\r\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any> {\r\n if(isCustomFilter(filter)) {\r\n return filter.active ? filter.predicate : defaultPredicate;\r\n }\r\n if (filter.filterValue === undefined) {\r\n return defaultPredicate;\r\n }\r\n\r\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\r\n if(!func) {\r\n if(filterFactoryMap[filter.filterType]){\r\n return filterFactoryMap[filter.filterType!](filter);\r\n }\r\n }\r\n\r\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\r\n return (rowObj) => {\r\n const value = get(rowObj, filter.key);\r\n return ((value == undefined) && cannotBeTrueForNull)\r\n ? false\r\n : func( value);\r\n };\r\n}\r\n\r\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\r\nexport type Range<T> = {Start:T,End:T};\r\n\r\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\r\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { Observable } from 'rxjs';\r\nimport { defaultTableState, Group, InitializationState, keysToDelete, PersistedTableState, TableState } from './TableState';\r\nimport { Injectable, Inject, Predicate } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\r\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\r\nimport { Sort, SortDirection } from '@angular/material/sort' ;\r\nimport { ComponentStore } from '@ngrx/component-store' ;\r\nimport update from 'immutability-helper';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { filter, last, map, tap } from 'rxjs/operators'\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { notNull, onceWhen } from '../../rxjs/rxjs-operators';\r\nimport { GeneralTableSettings, NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport function stateIs(initializationState: InitializationState) {\r\n return (state: TableState) => state.initializationState === initializationState;\r\n}\r\n\r\n@Injectable()\r\nexport class TableStore extends ComponentStore<TableState> {\r\n\r\n constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\r\n super( { ...defaultTableState, ...config.defaultTableState});\r\n }\r\n\r\n getSavableState() : Observable<PersistedTableState> {\r\n return this.state$.pipe(\r\n map( s => {\r\n const savableState = {...s} as Partial<TableState>;\r\n keysToDelete.forEach(key => delete savableState[key]);\r\n return savableState as PersistedTableState;\r\n })\r\n );\r\n }\r\n\r\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\r\n this.effect(() => srcObservable.pipe(\r\n tap(func)\r\n ));\r\n return this;\r\n }\r\n\r\n onLast(callback: (state: TableState) => void ) {\r\n this.on(this.state$.pipe(last()),callback);\r\n }\r\n\r\n readonly metaData$ = this.select( state => state.metaData);\r\n\r\n readonly metaDataArray$ = this.select(\r\n this.state$,\r\n orderMetaData\r\n );\r\n\r\n getMetaData$ = (key: string) : Observable<MetaData> => {\r\n return this.select( state => state.metaData[key] ).pipe(\r\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\r\n notNull())\r\n }\r\n\r\n getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\r\n getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\r\n\r\n private displayedColumns = (state:TableState) => orderMetaData(state).map(md => md.key)\r\n .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\r\n readonly displayedColumns$ = this.select(this.displayedColumns);\r\n readonly hideColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\r\n }));\r\n\r\n readonly resetState = this.updater((state) => {\r\n const hiddenColumns = Object.values(state.metaData)\r\n .filter(md => md.fieldType === FieldType.Hidden)\r\n .map(md => md.key);\r\n const sorted = this.createPreSort(state.metaData);\r\n return update(state, {\r\n hiddenKeys: { $set: [...hiddenColumns] },\r\n filters: { $set: {} },\r\n sorted: {$set: sorted},\r\n userDefined : {$set: {widths:{},order:{},table:{}}},\r\n });\r\n });\r\n\r\n readonly showColumn = this.updater((state, key: string) => ({\r\n ...state,\r\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\r\n }));\r\n\r\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\r\n\r\n var hiddenKeysSet= new Set<string>(\r\n [\r\n ...displayCols.filter(col => !col.visible).map(col => col.key),\r\n ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\r\n ]\r\n );\r\n\r\n return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\r\n });\r\n\r\n\r\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\r\n const userDefinedWidths = {...state.userDefined.widths};\r\n colWidths.forEach(cw => {\r\n userDefinedWidths[cw.key] = cw.widthInPixel;\r\n });\r\n return {...state, userDefined: {...state.userDefined, widths:userDefinedWidths}};\r\n });\r\n\r\n setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\r\n const {newOrder ,oldOrder} = moved;\r\n const mdsArr = orderViewableMetaData(state);\r\n moveItemInArray(mdsArr,oldOrder,newOrder);\r\n\r\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\r\n aggregate[current.key] = index;\r\n return aggregate\r\n },{});\r\n return({...state, userDefined: {...state.userDefined, order:userDefinedOrder}})\r\n })\r\n\r\n\r\n readonly filters$ = this.select(state => state.filters );\r\n\r\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | CustomFilter | undefined> => {\r\n return this.select( state => state.filters[filterId] );\r\n }\r\n readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\r\n return this.addFiltersToState(state, [filter]);\r\n });\r\n\r\n readonly addFilters = this.updater((state,filters:(FilterInfo | CustomFilter )[])=>{\r\n return this.addFiltersToState(state, filters);\r\n })\r\n\r\n\r\n private addFiltersToState = (state:TableState,filters:(FilterInfo | CustomFilter)[]) : TableState => {\r\n\r\n var customFilters = filters.filter( isCustomFilter );\r\n\r\n var filterInfos = filters.filter(isFilterInfo);\r\n\r\n const filtersObj = filterInfos\r\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\r\n .reduce((filtersObj: {[k: string]: any},filter)=>{\r\n if (!filter.filterId) {\r\n filter.filterId = uuid();\r\n }\r\n filtersObj[filter.filterId] = filter;\r\n return filtersObj;\r\n },{});\r\n\r\n customFilters.forEach( fltr => {\r\n if(!fltr.filterId) {\r\n fltr.filterId = uuid();\r\n }\r\n filtersObj[fltr.filterId] = fltr;\r\n })\r\n return {\r\n ...state,\r\n filters : {...state.filters, ...filtersObj }\r\n };\r\n }\r\n\r\n readonly removeFilter = this.updater( (state, filterId: string) =>\r\n update(state, {filters: {$unset : [filterId ]}})\r\n );\r\n\r\n readonly removeFilters = this.updater( (state, filterIds: string[]) =>\r\n update(state, {filters: {$unset : [...filterIds ]}})\r\n );\r\n\r\n readonly clearFilters = this.updater((state)=>\r\n ({...state,filters:{}}))\r\n\r\n\r\n readonly sorted$ = this.state$.pipe(\r\n filter(stateIs(InitializationState.Ready)),\r\n map( state => state.sorted)\r\n );\r\n\r\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\r\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\r\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\r\n .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\r\n }\r\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\r\n const sortArray = state.sorted.filter( s => s.active !== key );\r\n if(direction) {\r\n sortArray.unshift({active: key, direction});\r\n }\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\r\n return {\r\n ...state,\r\n sorted: sortArray,\r\n };\r\n });\r\n\r\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\r\n const metaData = state.metaData;\r\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\r\n : state.initializationState === InitializationState.Created ? this.createPreSort(metaData) : state.sorted;\r\n return {...state, ...incomingTableState, metaData , sorted};\r\n }\r\n\r\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({ ...state, pageSize, userDefined: { ...state.userDefined, pageSize } }));\r\n\r\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\r\n\r\n cleanPersistedState(state: TableState,pState: PersistedTableState) {\r\n const metas = Object.values(state.metaData);\r\n const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\r\n obj[filter.filterId!] = pState.filters[filter.filterId!];\r\n return obj;\r\n }, {});\r\n const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\r\n return ({...pState,filters,sorted})\r\n }\r\n\r\n readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\r\n const incomingTableState: Partial<TableState> = this.cleanPersistedState(state,persistedState);\r\n const newState = this.updateStateFunc(state,incomingTableState);\r\n newState.initializationState = state.initializationState === InitializationState.MetaDataLoaded ? InitializationState.LoadedFromStore : state.initializationState;\r\n return newState;\r\n });\r\n\r\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\r\n setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\r\n\r\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\r\n return {\r\n key: orig.key,\r\n displayName: merge.displayName ?? orig.displayName,\r\n fieldType: merge.fieldType || orig.fieldType,\r\n additional: {...orig.additional, ...merge.additional},\r\n order: merge.order ?? orig.order,\r\n preSort: merge.preSort ?? orig.preSort,\r\n _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\r\n width: merge.width ?? orig.width,\r\n noExport: merge.noExport || orig.noExport,\r\n noFilter: merge.noFilter || orig.noFilter,\r\n customCell: merge.customCell ?? orig.customCell,\r\n transform: merge.transform ?? orig.transform,\r\n click: merge.click ?? orig.click,\r\n classes: merge.classes ?? orig.classes,\r\n noSort: merge.noSort ?? orig.noSort,\r\n template: merge.template ?? orig.template,\r\n toolTip: merge.toolTip ?? orig.toolTip,\r\n useIcon: merge.useIcon ?? orig.useIcon,\r\n };\r\n }\r\n\r\n readonly setInitializationState = this.updater( (state, initializationState: InitializationState) => {\r\n return {...state, initializationState};\r\n });\r\n\r\n runOnceWhen(predicate: Predicate<TableState>, func: (state:TableState) => void) {\r\n const obs = this.state$.pipe(onceWhen(predicate));\r\n this.on(obs, (state) => {\r\n func(state);\r\n });\r\n }\r\n\r\n onReady( func: (state: TableState) => void ) {\r\n this.runOnceWhen(stateIs(InitializationState.Ready),func);\r\n }\r\n\r\n readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\r\n const metaData = ( Array.isArray(md) ? [...md] : [md] )\r\n .reduce((prev: Dictionary<MetaData>,curr) => {\r\n if(prev[curr.key]) {\r\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\r\n } else {\r\n prev[curr.key] = curr;\r\n }\r\n return prev;\r\n } ,{});\r\n let sorted = state.sorted;\r\n if(sorted.length === 0) {\r\n sorted = this.createPreSort(metaData);\r\n }\r\n const order = this.initializeOrder(state, metaData);\r\n const initializationState = state.initializationState == InitializationState.Created ? InitializationState.MetaDataLoaded : state.initializationState;\r\n return {...state, initializationState, metaData, sorted, userDefined:{...state.userDefined,order:order}};\r\n });\r\n\r\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\r\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\r\n let userDefinedOrder = state.userDefined.order;\r\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\r\n return {}\r\n }\r\n return userDefinedOrder;\r\n }\r\n\r\n toggleCollapseHeader = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n })\r\n\r\n toggleCollapseFooter = this.updater((state)=>{\r\n const tableSettings = {...state.persistedTableSettings};\r\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\r\n return ({...state,persistedTableSettings : new PersistedTableSettings(tableSettings)});\r\n })\r\n\r\n addGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupByKeys: [...state.groupByKeys, groupByKey]\r\n }));\r\n\r\n removeGroupByKey = this.updater((state, groupByKey: string) => ({\r\n ...state,\r\n groupByKeys: state.groupByKeys.filter(key => groupByKey != key)\r\n }));\r\n\r\n updateGroup = this.updater((state, group: Group) => ({\r\n ...state,\r\n groups: [...state.groups.filter(g => g.groupName != group.groupName), group]\r\n }))\r\n\r\n groupByKeys$ = this.select(state => state.groupByKeys);\r\n groups$ = this.select(state => state.groups);\r\n\r\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\r\n const s:TableState = {\r\n ...state,\r\n persistedTableSettings : new PersistedTableSettings(settings),\r\n notPersistedTableSettings : new NotPersistedTableSettings(settings)\r\n };\r\n return s;\r\n });\r\n\r\n tableSettings$ = this.select(state => {\r\n const ts : PersistedTableSettings & NotPersistedTableSettings =\r\n {...state.persistedTableSettings,...state.notPersistedTableSettings};\r\n return ts;\r\n })\r\n\r\n setLinkMaps = this.updater((state,maps: any)=>{\r\n return {...state,linkMaps:maps};\r\n });\r\n getLinkMap = (md:MetaData) =>{\r\n return this.select(state => {\r\n return state.linkMaps[md.key]})};\r\n}\r\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\r\n\r\nexport const orderMetaData = (state:TableState) => {\r\n const userOrderArr = Object.entries(state.userDefined.order);\r\n return userOrderArr.length ?\r\n Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\r\n :\r\n Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { map } from 'rxjs/operators';\r\nimport { TableStore } from '../classes/table-store';\r\n\r\n@Directive({\r\n selector: '[multiSort]',\r\n exportAs: 'multiSort',\r\n inputs: ['disabled: matSortDisabled'],\r\n providers: [\r\n { provide: MatSort, useExisting: MultiSortDirective }\r\n ],\r\n standalone: true\r\n})\r\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\r\n rules: Sort[] = [];\r\n\r\n constructor(private state: TableStore) {\r\n super();\r\n this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\r\n this.state.on(\r\n this.state.sorted$,\r\n (rules) => {\r\n const oldRules = this.rules;\r\n this.rules = rules;\r\n if (this.active && rules.length === 0) {\r\n this.active = '';\r\n this.direction = '';\r\n this.sortChange.emit({ active: '', direction: '' });\r\n }\r\n\r\n else if(!!rules.length && isDifferent(oldRules, rules)) {\r\n this.active = rules[0].active;\r\n this.direction = rules[0].direction;\r\n this.sortChange.emit(rules[0]);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n\r\nfunction isDifferent(a: Sort[], b: Sort[]) {\r\n if (a.length !== b.length) {\r\n return true;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].active !== b[i].active || a[i].direction !== b[i].direction) {\r\n return true;\r\n } \r\n }\r\n return false;\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'preventEnter',\r\n standalone: true\r\n})\r\nexport class PreventEnterDirective {\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown() {\r\n return false\r\n }\r\n}\r\n","import {Directive, HostListener} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[stop-propagation]\",\r\n standalone: true\r\n})\r\nexport class StopPropagationDirective\r\n{\r\n @HostListener(\"click\", [\"$event\"])\r\n public onClick(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener(\"mousedown\", [\"$event\"])\r\n public onMousedown(event: any): void\r\n {\r\n event.stopPropagation();\r\n }\r\n}\r\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[autoFocus]',\r\n standalone: true,\r\n})\r\nexport class AutoFocusDirective implements AfterViewInit {\r\n\r\n @Input() autoFocus = true;\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n ngAfterViewInit() {\r\n if(this.autoFocus){\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[clickSubject]',\r\n exportAs: 'clickSubject',\r\n host: {\r\n '(click)': 'next(this._val)'\r\n },\r\n standalone: true,\r\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\r\n constructor( ) {\r\n super();\r\n }\r\n _val!: T;\r\n\r\n @Input('clickSubject') set clickSubject( val: T) {\r\n this._val = val;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Directive({\r\n selector: '[clickEmitter]',\r\n exportAs: 'clickEmitter',\r\n host: {\r\n '(click)': 'next(true)'\r\n },\r\n standalone: true,\r\n}) export class ClickEmitterDirective extends Subject<boolean> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable} from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DialogService {\r\n allOpenOpDialogs: MatDialogRef<any>[] = [];\r\n\r\n addDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs.push(ref);\r\n }\r\n\r\n removeDialogRef(ref: MatDialogRef<any>) {\r\n this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\r\n }\r\n\r\n closeAllOpDialogs() {\r\n this.allOpenOpDialogs.forEach(ref => ref.close());\r\n }\r\n}\r\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { switchAll } from 'rxjs/operators';\r\nimport { DialogService } from './dialog-service';\r\n\r\ninterface DialogViewContext<T> {\r\n $implicit: T,\r\n opDialog: T,\r\n close: () => void,\r\n}\r\n\r\n@Component({\r\n template: ``,\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DialogWrapper<T = any> {\r\n viewEmbedded = false;\r\n viewContext = {\r\n close: () => {},\r\n } as DialogViewContext<T>;\r\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\r\n if (this.viewEmbedded) {\r\n this.vcr.clear();\r\n }\r\n this.viewEmbedded = true;\r\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\r\n }\r\n\r\n set close(closeMethod: () => void ) {\r\n this.viewContext.close = closeMethod;\r\n }\r\n\r\n set data(value: T) {\r\n this.viewContext.$implicit = value;\r\n this.viewContext.opDialog = value;\r\n }\r\n constructor(private vcr: ViewContainerRef ) {\r\n }\r\n\r\n}\r\n\r\n\r\nconst defaultDialogConfig: MatDialogConfig = {\r\n maxHeight: '95vh',\r\n}\r\n\r\n\r\n@Directive(\r\n { selector: '[opDialog]', standalone: true }\r\n) export class DialogDirective<T> implements OnDestroy {\r\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\r\n _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\r\n @Input() opDialogAddDialogClass = true;\r\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\r\n \r\n this._dialogConfig = { ...defaultDialogConfig, ...config };\r\n }\r\n\r\n get opDialogConfig() : MatDialogConfig<T> {\r\n return this._dialogConfig;\r\n }\r\n @Input('opDialog') set state(open_close: Observable<T>) {\r\n this._data.next(open_close);\r\n }\r\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\r\n dialogRef?: MatDialogRef<any, boolean>;\r\n subscription: Subscription;\r\n componentWrapper?: DialogWrapper<T>;\r\n\r\n constructor(\r\n private templateRef: TemplateRef<DialogViewContext<T>>,\r\n private dialog: MatDialog,\r\n private service: DialogService) {\r\n this.subscription = this._data.pipe(\r\n switchAll()\r\n ).subscribe(d => {\r\n if (d) {\r\n this.opDialogConfig.data = d;\r\n this.setDialogState(true);\r\n } else {\r\n this.setDialogState(false);\r\n }\r\n });\r\n }\r\n\r\n _data = new Subject<Observable<T>>();\r\n\r\n close() {\r\n this.dialogRef?.close();\r\n }\r\n\r\n initDialog() {\r\n if(this.nativeElement){\r\n const rect = this.nativeElement.getBoundingClientRect();\r\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\r\n this.opDialogConfig = {...this.opDialogConfig , position};\r\n }\r\n if (this.opDialogAddDialogClass) {\r\n this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\r\n }\r\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\r\n this.componentWrapper = this.dialogRef.componentInstance;\r\n this.componentWrapper!.close = () => this.dialogRef?.close();\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n this.componentWrapper!.template = this.templateRef;\r\n if (!this.opDialogConfig.disableClose) {\r\n this.service.addDialogRef(this.dialogRef);\r\n }\r\n const sub = this.dialogRef.afterClosed().subscribe(() => {\r\n this.opDialogClosed.emit(true);\r\n this.service.removeDialogRef(this.dialogRef!);\r\n this.dialogRef = undefined;\r\n sub.unsubscribe();\r\n });\r\n }\r\n\r\n setDialogState(open: boolean) {\r\n if (open) {\r\n if (!this.dialogRef) {\r\n this.initDialog();\r\n } else {\r\n this.componentWrapper!.data = this.opDialogConfig.data as T;\r\n }\r\n } else if (!open && this.dialogRef) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false | 0 | '' | null | undefined>> {\r\n return true;\r\n }\r\n\r\n}\r\n","import { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\r\n standalone: true\r\n}) export class StylerDirective {\r\n @Input() set styler(styles){\r\n if(styles){\r\n Object.keys(styles).forEach( style => {\r\n this.el.nativeElement.style[style] = styles[style];\r\n });\r\n }\r\n };\r\n constructor(private el: ElementRef) {\r\n }\r\n}\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\r\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\r\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\r\n\r\n\r\n@Directive(\r\n { selector: '[opMatSlideToggleGroup]',\r\n standalone: true\r\n}\r\n) export class MatSlideToggleGroupDirective {\r\n @Input() allowMultiple = false;\r\n\r\n _toggles!: QueryList<MatSlideToggle>;\r\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\r\n this._toggles = val;\r\n this._ready.next(true);\r\n }\r\n\r\n private _ready = new ReplaySubject<boolean>(1);\r\n\r\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\r\n return this._ready.pipe( switchMap( _ => this.getObs()));\r\n }\r\n\r\n\r\n getInitValue() {\r\n const startValue = this._toggles.reduce( (prev,cur) => {\r\n if(!cur.name) {\r\n throw new Error('toggle must have the name attribute set');\r\n }\r\n prev[cur.name] = cur.checked\r\n return prev;\r\n }, {} as {[k:string]: boolean});\r\n return startValue;\r\n }\r\n\r\n getObs() {\r\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\r\n\r\n const startValue = this.getInitValue();\r\n\r\n return toggleChanges.pipe(\r\n scan( (prev,cur) => {\r\n const toggleName = cur.source.name!;\r\n const newVal = {...prev,[toggleName]:cur.checked};\r\n if(cur.checked && !this.allowMultiple) {\r\n Object.keys(prev)\r\n .filter( key => key !== toggleName && prev[key])\r\n .forEach( key => {\r\n newVal[key] = false;\r\n this._toggles.find( toggle => toggle.name === key)!.toggle();\r\n });\r\n }\r\n return newVal;\r\n },startValue),\r\n startWith(startValue),\r\n );\r\n\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input[trimWhitespace]',\r\n standalone: true\r\n})\r\nexport class TrimWhitespaceDirective {\r\n\r\n constructor(private elem: ElementRef) { }\r\n\r\n @HostListener('blur') onBlur() {\r\n const inputString = this.elem.nativeElement.value;\r\n if(inputString) {\r\n const newValue = inputString.trim().replace(/\\t/g, '');\r\n if(inputString !== newValue) {\r\n this.elem.nativeElement.value = newValue;\r\n this.elem.nativeElement.dispatchEvent(new Event('input', {bubbles:true}));\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'func',\r\n standalone: true\r\n})\r\nexport class FunctionPipe implements PipeTransform {\r\n transform<T>(func: ( (...args: any[])=> T ) | string, ...args: any[]): T {\r\n if(typeof func === 'string') {\r\n const [instance, ...tail] = args;\r\n const method = instance[func].bind(instance);\r\n return method(...tail);\r\n }\r\n return func(...args);\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { Dictionary, Predicate } from '@ngrx/entity';\r\n\r\n@Directive({\r\n selector: '[conditionalClasses]',\r\n standalone: true\r\n})\r\nexport class ConditionalClassesDirective {\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n }\r\n\r\n @Input() element?: any;\r\n @Input('conditionalClasses') classes?: Dictionary<Predicate<any>>;\r\n\r\n classesApplied: string[] = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let toApply: string [] = [];\r\n if(this.classes) {\r\n toApply = Object.keys(this.classes)\r\n .filter( key => this.classes![key]!(this.element) );\r\n }\r\n\r\n var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\r\n var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\r\n\r\n classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\r\n\r\n classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement , c ) );\r\n\r\n this.classesApplied = toApply;\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\r\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\r\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\r\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\r\nimport { DialogDirective } from \"./directives/dialog\";\r\nimport { DialogService } from \"./directives/dialog-service\";\r\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\r\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\r\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\r\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\r\nimport { StylerDirective } from \"./directives/styler\";\r\nimport { FunctionPipe } from \"./pipes/function.pipe\";\r\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\r\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\r\n\r\n@NgModule({\r\n exports: [\r\n StopPropagationDirective,\r\n PreventEnterDirective,\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n TrimWhitespaceDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n imports: [\r\n SpaceCasePipe,\r\n PhoneNumberPipe,\r\n FunctionPipe,\r\n StopPropagationDirective,\r\n StylerDirective,\r\n PreventEnterDirective,\r\n AutoFocusDirective,\r\n TrimWhitespaceDirective,\r\n ClickSubjectDirective,\r\n ClickEmitterDirective,\r\n DialogDirective,\r\n MatSlideToggleGroupDirective,\r\n ConditionalClassesDirective,\r\n ],\r\n providers: [\r\n DialogService\r\n ]\r\n})\r\nexport class UtilitiesModule {\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-filter',\r\n templateUrl: './date-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n MatInputModule, FormsModule, MatDatepickerModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if (CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull) {\r\n <mat-form-field>\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\r\n <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix [for]=\"cal\" preventEnter />\r\n <mat-datepicker #cal />\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.DateBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <mat-form-field class=\"my-filter\" >\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\r\n (click)=\"fromVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter />\r\n <mat-datepicker #fromVal></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\r\n <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter />\r\n <mat-datepicker #toVal />\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { AutoFocusDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'lib-in-filter',\r\n templateUrl: './in-filter.component.html',\r\n styleUrls: ['./in-filter.component.css'],\r\n changeDetection:ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n FormsModule, AutoFocusDirective\r\n ]\r\n})\r\nexport class InFilterComponent implements ControlValueAccessor {\r\n FieldType = FieldType;\r\n @Input() type! : FieldType;\r\n value: (string | number | undefined)[] = [undefined];\r\n\r\n constructor(private ref: ChangeDetectorRef) {\r\n this.value = [undefined];\r\n }\r\n writeValue(obj: any[]): void {\r\n if(!obj?.length) obj = [undefined];\r\n this.value = obj;\r\n this.ref.markForCheck();\r\n }\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n addInput(){\r\n this.value = [...this.value, undefined];\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n removeInput(index: number){\r\n this.value = [...this.value];\r\n this.value.splice(index,1);\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n onValueChange(i:number,value: number | string){\r\n this.value = [...this.value];\r\n this.value[i] = value;\r\n this.ref.markForCheck();\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","<div class=inline>\r\n @for (val of value; track $index) {\r\n <div>\r\n @if(type === FieldType.Number || type === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1) {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n \r\n }\r\n</div>\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\n\r\n\r\n@Component({\r\n selector: 'tb-number-filter',\r\n templateUrl: './number-filter.component.html',\r\n styleUrls: ['./number-filter.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n MatInputModule, FormsModule, InFilterComponent\r\n ]\r\n})\r\nexport class NumberFilterComponent {\r\n FilterType = FilterType; FieldType = FieldType;\r\n @Input() CurrentFilterType!: FilterType;\r\n @Input() info!:PartialFilter;\r\n}\r\n","@if(CurrentFilterType !== FilterType.NumberBetween){\r\n @if(CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n }\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n@if (CurrentFilterType === FilterType.In) {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { PartialFilter } from '../../classes/filter-info';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { ControlContainer, FormsModule, NgForm } from '@angular/forms';\r\nimport { PreventEnterDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-date-time-filter',\r\n templateUrl: './date-time-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['../filter/filter.component.scss'],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true,\r\n imports: [\r\n FormsModule, PreventEnterDirective\r\n ]\r\n})\r\nexport class DateTimeFilterComponent {\r\n FilterType = FilterType;\r\n @Input() info!: PartialFilter;\r\n @Input() CurrentFilterType!: FilterType;\r\n}\r\n","@if(CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull){\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\r\n}\r\n@if(CurrentFilterType === FilterType.DateTimeBetween){\r\n <ng-container ngModelGroup=\"filterValue\">\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\r\n <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\r\n </ng-container>\r\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { Dictionary } from '../../../interfaces/dictionary';\r\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\r\nimport { AsyncPipe, KeyValuePipe } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\n\r\n\r\n@Component({\r\n selector: 'tb-in-list-filter , [tb-in-list-filter]',\r\n template: `\r\n @for (item of keyValues$ | async| keyvalue; track item.key) {\r\n <div>\r\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\r\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: InListFilterComponent,\r\n multi: true\r\n }],\r\n standalone: true,\r\n imports: [\r\n AsyncPipe, KeyValuePipe, MatCheckboxModule, StopPropagationDirective, SpaceCasePipe\r\n ]\r\n})\r\nexport class InListFilterComponent implements ControlValueAccessor {\r\n\r\n constructor(private ref: ChangeDetectorRef, private tableState: TableStore ) {}\r\n value: string[] = [];\r\n FieldType = FieldType;\r\n writeValue(obj: string[]): void {\r\n this.value = obj;\r\n\r\n if(this.value) {\r\n this.selectedKeys = this.value.map( f => f );\r\n }\r\n this.ref.markForCheck();\r\n }\r\n\r\n onChange = (_: any) => { };\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n onTouched = () => { };\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n @Input() key!: string;\r\n\r\n keyValues$! : Observable<Dictionary<string>>;\r\n selectedKeys : string[] = [];\r\n metaData!: MetaData;\r\n\r\n ngOnInit() {\r\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\r\n tap(metaData => this.metaData = metaData),\r\n map( metaData => {\r\n if(metaData.additional?.filterOptions?.filterableValues ) {\r\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\r\n } else {\r\n if(metaData.fieldType === FieldType.Enum ) {\r\n return metaData.additional!.enumMap;\r\n }\r\n }\r\n return {};\r\n })\r\n );\r\n }\r\n\r\n selectFilterChanged($event, val) {\r\n if($event.checked) {\r\n this.selectedKeys.push(val);\r\n } else {\r\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\r\n }\r\n\r\n this.value = this.selectedKeys;\r\n this.onChange(this.value);\r\n }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\r\nimport { filterTypeMap, FilterInfo, PartialFilter } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { KeyValuePipe, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PreventEnterDirective, SpaceCasePipe } from '../../../utilities';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NumberFilterComponent } from '../number-filter/number-filter.component';\r\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\r\nimport { DateTimeFilterComponent } from '../date-time-filter/date-time-filter.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { InFilterComponent } from '../in-filter/in-filter.component';\r\nimport { InListFilterComponent } from './in-list/in-list-filter.component';\r\n\r\n@Component({\r\n selector: 'tb-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatCardModule, FormsModule, SpaceCasePipe, MatButtonModule, MatTooltipModule, MatIconModule,\r\n MatInputModule, MatSelectModule, KeyValuePipe, NumberFilterComponent,\r\n DateFilterComponent, DateTimeFilterComponent, MatRadioModule, InFilterComponent, InListFilterComponent,\r\n PreventEnterDirective, NgTemplateOutlet\r\n ]\r\n})\r\nexport class FilterComponent {\r\n filterTypes = filterTypeMap;\r\n FilterType = FilterType;\r\n FieldType = FieldType;\r\n @Input() filter!: PartialFilter;\r\n @Output() close = new EventEmitter();\r\n currentFilterType?: FilterType;\r\n constructor( public state: TableStore) { }\r\n\r\n ngOnInit() {\r\n this.currentFilterType = this.filter.filterType;\r\n }\r\n onEnter(filter: FilterInfo, event: any) {\r\n event.preventDefault();\r\n if (filter.filterValue != null && filter.filterType) {\r\n this.state.addFilter(filter);\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@if (filter) {\r\n<mat-card appearance=\"outlined\" class=\"filter-card\">\r\n <mat-card-content>\r\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\r\n <div class=\"head-row\" >\r\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\r\n <button class=\"cancel-button small-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\r\n matTooltip=\"Close\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"filter-row\">\r\n <div class=\"inline\">\r\n <mat-form-field class=\"my-filter\" >\r\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" [panelWidth]=\"null\">\r\n @for (kvp of filterTypes[filter.fieldType] | keyvalue; track kvp.key) {\r\n <mat-option [value]=\"kvp.value\">\r\n {{ kvp.key }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n @if(filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\r\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber) {\r\n <ng-container *ngTemplateOutlet=\"String\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency){\r\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Boolean){\r\n <ng-container *ngTemplateOutlet=\"Boolean\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Date){\r\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.DateTime){\r\n <tb-date-time-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" />\r\n }\r\n @else if(filter.fieldType === FieldType.Enum){\r\n <ng-container *ngTemplateOutlet=\"Enum\" />\r\n }\r\n\r\n @if(currentFilterType === FilterType.IsNull){\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\">\r\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\r\n </mat-radio-group>\r\n }\r\n </div>\r\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\r\n Apply\r\n </button>\r\n \r\n \r\n <ng-template #String>\r\n @if(currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n </mat-form-field>\r\n } @else {\r\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" />\r\n }\r\n </ng-template>\r\n \r\n <ng-template #Boolean >\r\n @if(currentFilterType === FilterType.BooleanEquals){\r\n <div class=\"switch\">\r\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\r\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\r\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n </ng-template>\r\n <ng-template #Enum>\r\n @if(currentFilterType === FilterType.In){\r\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\r\n\r\n }\r\n </ng-template>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n}\r\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\r\nimport { DisplayCol } from '../../classes/display-col';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\r\nimport {CdkDragDrop, DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-col-displayer',\r\n templateUrl: './gen-col-displayer.component.html',\r\n styleUrls: ['./gen-col-displayer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush ,\r\n standalone: true,\r\n imports: [\r\n AsyncPipe, MatTooltipModule, MatIconModule, MatButtonModule, MatMenuModule, StopPropagationDirective,\r\n DragDropModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenColDisplayerComponent {\r\n columns$: Observable< DisplayCol[]>;\r\n constructor( private tableState: TableStore ) {\r\n this.columns$ = this.tableState.state$.pipe(\r\n map( state =>\r\n orderViewableMetaData(state)\r\n .map( md => ({\r\n key: md.key,\r\n displayName: md.displayName,\r\n isVisible: !state.hiddenKeys.includes(md.key)\r\n }))\r\n ),\r\n );\r\n }\r\n\r\n reset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = true);\r\n this.emit(displayCols);\r\n }\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\r\n }\r\n unset(displayCols: DisplayCol[]) {\r\n displayCols.forEach(c => c.isVisible = false);\r\n this.emit(displayCols);\r\n }\r\n\r\n emit(displayCols: DisplayCol[]) {\r\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\r\n }\r\n}\r\n","@if(columns$ | async; as displayCols){\r\n <span matTooltip=\"Show/hide columns\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n </button>\r\n </span>\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\r\n\r\n <button mat-menu-item>\r\n <span matTooltip=\"Close\">\r\n <button class=\"filter-button\" mat-icon-button>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <button mat-menu-item stop-propagation>\r\n <span matTooltip=\"Show all columns\">\r\n <button mat-icon-button (click)=\"reset(displayCols)\">\r\n <mat-icon color=\"primary\">done_all</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <span matTooltip=\"Hide all columns\">\r\n <button mat-icon-button (click)=\"unset(displayCols)\">\r\n <mat-icon color=\"primary\">cancel</mat-icon>\r\n </button>\r\n </span>\r\n </button>\r\n\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\r\n @for (col of displayCols; track col.key) {\r\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\r\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\">\r\n @if(col.isVisible){\r\n <button mat-icon-button matTooltip=\"Hide Column\" class=\"show-hide\">\r\n <mat-icon color=\"primary\">check_box</mat-icon>\r\n </button>\r\n } @else {\r\n <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\r\n <mat-icon>indeterminate_check_box</mat-icon>\r\n </button>\r\n }\r\n \r\n <p class=\"label\">\r\n {{col.displayName || (col.key | spaceCase) }}\r\n </p>\r\n\r\n </div>\r\n </button>\r\n }\r\n\r\n </div>\r\n </mat-menu>\r\n}","import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { map } from \"rxjs/operators\";\nimport { PartialFilter } from \"../../classes/filter-info\";\n@Injectable()\nexport class WrapperFilterStore extends ComponentStore<{filterInfo:PartialFilter[]}>{\n constructor(){\n super({filterInfo:[]});\n }\n\n clearAll = this.updater(()=>({filterInfo:[]}));\n deleteByIndex = this.updater((state,index:number)=>{\n const arr = [...state.filterInfo];\n arr.splice(index, 1);\n return {filterInfo:arr};\n });\n\n currentFilters$ = this.state$.pipe(map(state => state.filterInfo));\n\n addFilter = this.updater((state,filter:PartialFilter)=>{\n return ({...state,filterInfo:[...state.filterInfo,filter]});\n })\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\r\nimport { Observable } from 'rxjs';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tb-filter-displayer',\r\n templateUrl: './gen-filter-displayer.component.html',\r\n styleUrls: ['./gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,\r\n AsyncPipe, SpaceCasePipe\r\n ]\r\n})\r\nexport class GenFilterDisplayerComponent {\r\n\r\n constructor( public tableState: TableStore, public filterStore : WrapperFilterStore) {\r\n this.filterCols$ = tableState.metaDataArray$.pipe(\r\n map(md => Object.values( md ).filter(m => (m.fieldType !== FieldType.Hidden) && (!m.noFilter))),\r\n );\r\n }\r\n\r\n filterCols$: Observable<MetaData[]>;\r\n\r\n addFilter(metaData: MetaData) {\r\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\r\n }\r\n}\r\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of filterCols$ | async; track md.key) {\r\n <button (click)=\"addFilter(md)\" mat-menu-item>\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({name: 'keyDisplay', standalone: true})\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n constructor( public tableState: TableStore) {\r\n }\r\n transform(key: string): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( metaData => metaData.displayName || spaceCase(key))\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { FilterType } from '../enums/filterTypes';\r\n\r\n@Pipe({name: 'formatFilterType', standalone: true})\r\nexport class FormatFilterTypePipe implements PipeTransform {\r\n transform(filterType: FilterType, value: any){\r\n if(filterType === FilterType.IsNull){\r\n return value ? filterType : 'Is Not Blank'\r\n }\r\n return filterType;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { FieldType } from '../interfaces/report-def';\r\nimport { DatePipe } from '@angular/common';\r\nimport { FilterType } from '../enums/filterTypes';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\r\n\r\n\r\n@Pipe({name: 'formatFilterValue', standalone: true})\r\nexport class FormatFilterValuePipe implements PipeTransform {\r\n constructor( public tableState: TableStore , private datePipe: DatePipe) {\r\n }\r\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\r\n return this.tableState.getMetaData$(key).pipe(\r\n map( md => {\r\n if(filterType === FilterType.IsNull) {\r\n return '';\r\n }\r\n if(value && (filterType === FilterType.In )){\r\n if(md.fieldType === FieldType.Enum) {\r\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\r\n }\r\n return value.join(', ') ?? value;\r\n }\r\n if(filterType === FilterType.NumberBetween){\r\n return value.Start + ' - ' + value.End;\r\n }\r\n if(md.fieldType === FieldType.Date){\r\n return this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n if(md.fieldType === FieldType.DateTime){\r\n return !!DateTimeFilterFuncs[filterType] ? this.datePipe.transform(value, 'short') : this.datePipe.transform(value, 'MM/dd/yy');\r\n }\r\n return value\r\n })\r\n );\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { TableStore } from '../../../classes/table-store';\r\nimport { FilterInfo, isFilterInfo } from '../../../classes/filter-info';\r\nimport { map } from 'rxjs/operators';\r\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\r\nimport { Observable } from 'rxjs';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FilterComponent } from '../../filter/filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { KeyDisplayPipe } from '../../../pipes/key-display';\r\nimport { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';\r\nimport { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';\r\n\r\n@Component({\r\n selector: 'lib-filter-list',\r\n templateUrl: './filter-list.component.html',\r\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n LetDirective, MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,\r\n MatChipsModule, AsyncPipe, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe\r\n ]\r\n})\r\nexport class FilterChipsComponent {\r\n\r\n tableState = inject(TableStore);\r\n filterStore = inject(WrapperFilterStore);\r\n\r\n filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(\r\n map(filters =>\r\n Object.values(filters).filter(f => isFilterInfo(f) && !f._isExternalyManaged) as FilterInfo<any>[]\r\n ));\r\n\r\n deleteByIndex(index: number) {\r\n this.filterStore.deleteByIndex(index);\r\n }\r\n\r\n addFilter(filter:FilterInfo<any>){\r\n this.filterStore.addFilter(filter);\r\n }\r\n\r\n clearAll() {\r\n this.filterStore.clearAll();\r\n }\r\n\r\n currentFilters$ = this.filterStore.currentFilters$;\r\n}\r\n","<div class=\"d-w\" *ngrxLet=\"currentFilters$ as currentFilters\" >\r\n\r\n @if (currentFilters.length) {\r\n <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of currentFilters$ | async; track filter.key) {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set *ngrxLet=\"filters$ as filters\">\r\n @for (filter of filters; track filter.key) {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if (filters.length > 1) {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { InListFilterComponent } from '../filter/in-list/in-list-filter.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StopPropagationDirective } from '../../../utilities';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n selector: 'tb-header-menu',\r\n templateUrl: './header-menu.component.html',\r\n styleUrls: ['./header-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatMenuModule, MatIconModule, MatButtonModule, FormsModule, InListFilterComponent,\r\n MatInputModule, MatTooltipModule, NgClass, StopPropagationDirective, MatRadioModule, MatDatepickerModule\r\n ]\r\n})\r\nexport class HeaderMenuComponent {\r\n FieldType = FieldType;\r\n FilterType = FilterType;\r\n myFilterType!: FilterType;\r\n myFilterValue: any;\r\n\r\n @Input() filter!: Partial<FilterInfo>;\r\n\r\n @Input() metaData!: MetaData;\r\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\r\n constructor( public tableState: TableStore) {}\r\n\r\n hideField(key: string) {\r\n this.tableState.hideColumn(key);\r\n }\r\n\r\n ngOnInit() {\r\n this.resetFilterType();\r\n }\r\n\r\n resetFilterType() {\r\n if(this.metaData.additional?.filterOptions?.filterableValues) {\r\n this.myFilterType = FilterType.In;\r\n return;\r\n }\r\n switch (this.metaData.fieldType) {\r\n case FieldType.String:\r\n case FieldType.Link:\r\n case FieldType.PhoneNumber:\r\n case FieldType.Array:\r\n case FieldType.Unknown:\r\n this.myFilterType = FilterType.StringContains;\r\n break;\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n this.myFilterType = FilterType.NumberEquals;\r\n break;\r\n case FieldType.Boolean:\r\n this.myFilterType = FilterType.BooleanEquals;\r\n break;\r\n case FieldType.Date:\r\n case FieldType.DateTime:\r\n this.myFilterType = FilterType.DateIsOn;\r\n break;\r\n case FieldType.Enum:\r\n this.myFilterType = FilterType.In;\r\n break;\r\n }\r\n }\r\n\r\n setStringFilterType() {\r\n this.myFilterType = this.myFilterType === FilterType.StringContains ? FilterType.StringDoesNotContain : FilterType.StringContains;\r\n }\r\n\r\n setFilterType(filterType: FilterType) {\r\n if (filterType === this.myFilterType) {\r\n this.resetFilterType();\r\n } else {\r\n this.myFilterType = filterType;\r\n }\r\n }\r\n\r\n onEnter(filter: FilterInfo) {\r\n if (filter.filterValue != undefined && filter.filterType) {\r\n this.tableState.addFilter(filter);\r\n this.trigger.closeMenu();\r\n }\r\n }\r\n}\r\n","<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(myFilterType === FilterType.Or || myFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Boolean) {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport {sumBy} from 'lodash';\r\n\r\n@Pipe({\r\n name: 'columnTotal',\r\n standalone: true\r\n })\r\nexport class ColumnTotalPipe implements PipeTransform {\r\n transform(data: any[], metaData: MetaData) {\r\n const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter)\r\n switch (metaData.additional!.footer!.type) {\r\n case 'sum':\r\n return sumBy(dataToCalculate, metaData.key);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\r\nimport { FieldType, MetaData } from '../interfaces/report-def';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\nimport { SpaceCasePipe } from '../../utilities';\r\nimport { get } from 'lodash';\r\nexport function isPipe(o : any ): o is PipeTransform {\r\n return typeof ((o as PipeTransform).transform ) === 'function';\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransformCreator {\r\n constructor(\r\n private datePipe: DatePipe,\r\n private currencyPipe: CurrencyPipe,\r\n private phonePipe: PhoneNumberPipe,\r\n private casePipe: SpaceCasePipe,\r\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\r\n ) {}\r\n createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any) {\r\n const defaultFunc = (value: any) => get( value, metaData.key);\r\n if(metaData.transform) {\r\n if(isPipe(metaData.transform)){\r\n return (value: any) => (metaData!.transform as PipeTransform).transform(defaultFunc(value));\r\n }\r\n return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any,b:any)=>any)(defaultFunc(value),value);\r\n }\r\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\r\n var tranformer = this.config.transformers![metaData.fieldType]!;\r\n return (value: any) => tranformer(defaultFunc(value));\r\n }\r\n const defaultDateFormat = this.config.defaultSettings?.dateFormat ?? 'shortDate';\r\n const defaultDateTimeFormat = this.config.defaultSettings?.dateTimeFormat ?? 'short';\r\n switch(metaData.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateFormat);\r\n case FieldType.DateTime:\r\n const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\r\n return (value: any) => this.datePipe.transform(defaultFunc(value), dateTimeFormat);\r\n case FieldType.Currency:\r\n return (value: any) => this.currencyPipe.transform(defaultFunc(value));\r\n case FieldType.PhoneNumber:\r\n return (value: any) => this.phonePipe.transform(defaultFunc(value));\r\n case FieldType.Enum:\r\n return (value: any) => this.casePipe.transform(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\r\n case FieldType.Boolean:\r\n let forTrue = 'check'\r\n let forFalse = '';\r\n if(metaData.additional?.boolean?.forTrue) {\r\n forTrue = metaData?.additional.boolean.forTrue.icon;\r\n }\r\n if(metaData.additional?.boolean?.showForFalse === true) {\r\n forFalse = 'clear';\r\n } else if (metaData.additional?.boolean?.showForFalse?.icon) {\r\n forFalse = metaData.additional?.boolean?.showForFalse?.icon;\r\n }\r\n return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\r\n }\r\n return defaultFunc;\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { TableStore } from \"../classes/table-store\";\r\nimport { MetaData } from \"../interfaces/report-def\";\r\nimport { LetDirective } from \"@ngrx/component\";\r\nimport { FunctionPipe } from \"../../utilities\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"tb-link-column\",\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n LetDirective, FunctionPipe, RouterModule\r\n ],\r\n template: `\r\n <ng-container *ngrxLet=\"(link | func : metaData) as linkInfo\">\r\n @if(linkInfo.useRouterLink){\r\n <a target=\"{{$any(linkInfo).target}}\"\r\n [routerLink]=\" [($any(linkInfo).link | func : element)]\"\r\n [queryParams]=\"$any(linkInfo).routerLinkOptions.queryParams | func : element\"\r\n [fragment]=\"$any(linkInfo).routerLinkOptions.fragment\"\r\n [preserveFragment]=\"$any(linkInfo).routerLinkOptions.preserveFragment\"\r\n [queryParamsHandling]=\"$any(linkInfo).routerLinkOptions.queryParamsHandling\"\r\n >\r\n {{transform | func : element}}\r\n </a>\r\n } @else {\r\n <a target=\"{{$any(linkInfo).target}}\"\r\n href=\"{{($any(linkInfo).link | func : element)}}\">\r\n {{transform | func : element}}\r\n </a>\r\n }\r\n </ng-container>\r\n `\r\n})export class LinkColumnComponent {\r\n @Input() metaData!: MetaData;\r\n @Input() element!: any;\r\n @Input() transform = (a:any)=>a;\r\n constructor(protected store: TableStore) { }\r\n link = (metaData : MetaData) => this.store.getLinkMap(metaData);\r\n\r\n}","import { ChangeDetectionStrategy, Component, Input, Inject } from '@angular/core';\r\nimport { ArrayStyle, ArrayAdditional, MetaData } from '../interfaces/report-def';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\n\r\n\r\n@Component({\r\n selector: 'tb-array-column',\r\n standalone: true,\r\n template: `\r\n @if(!array.length){\r\n -\r\n } @else {\r\n @switch (additional.arrayStyle) {\r\n @case (ArrayStyle.CommaDelimited) {\r\n @for(val of array; track $index){\r\n {{val + (!$last ? ',' : '')}}\r\n }\r\n }\r\n @case(ArrayStyle.NewLine){\r\n @for(val of array; track $index){\r\n {{val}}\r\n @if(!$last){ <br/> }\r\n }\r\n }\r\n }\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ArrayColumnComponent {\r\n ArrayStyle = ArrayStyle;\r\n additional!: ArrayAdditional;\r\n @Input() array!: (string | number)[];\r\n @Input() metaData!: MetaData;\r\n\r\n constructor( @Inject(TableBuilderConfigToken) private config: TableBuilderConfig\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.additional = this.metaData?.additional ?? this.config.arrayInfo ?? { limit: 3, arrayStyle: ArrayStyle.NewLine } as ArrayAdditional;\r\n this.array = (this.array ?? []).slice(0, this.additional.limit );\r\n\r\n }\r\n}\r\n","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { LinkColumnComponent } from \"../link-column.component\";\r\nimport { ArrayColumnComponent } from \"../array-column.component\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { FunctionPipe } from \"../../../utilities\";\r\n\r\n@Component({\r\n templateUrl: './initialization-component.html',\r\n standalone: true,\r\n imports: [\r\n LinkColumnComponent, ArrayColumnComponent, MatIconModule, FunctionPipe\r\n ]\r\n})\r\nexport class InitializationComponent {\r\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\r\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\r\n @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\r\n @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\r\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\r\n @ViewChild('defaultWithIcon', {static: true}) defaultWithIcon! : TemplateRef<any>;\r\n}\r\n","<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\r\nimport { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { TableStore } from \"../classes/table-store\";\r\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\r\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class TableTemplateService {\r\n instance!: InitializationComponent;\r\n templates;\r\n\r\n initTemplates() {\r\n this.templates = { };\r\n this.templates[FieldType.Array] = this.instance.arrayTemplate;\r\n this.templates[FieldType.Boolean] = this.instance.defaultWithIcon;\r\n this.templates[FieldType.Currency] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\r\n this.templates[FieldType.DateTime] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Expression] = this.instance.defaultTemplate;\r\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\r\n this.templates[FieldType.Link] = this.instance.linkTemplate;\r\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\r\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\r\n this.templates[FieldType.String] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\r\n this.templates[FieldType.Enum] = this.instance.defaultTemplate;\r\n }\r\n getTemplate(metaData: MetaData) : TemplateRef<any> {\r\n\r\n let tmp = this.templates[metaData.fieldType];\r\n if(metaData.useIcon) {\r\n if(tmp === this.instance.defaultTemplate) {\r\n tmp = this.instance.defaultWithIcon;\r\n }\r\n }\r\n return tmp;\r\n }\r\n\r\n constructor(resolver: ComponentFactoryResolver, i: Injector, ) {\r\n const factory = resolver.resolveComponentFactory(InitializationComponent);\r\n const c = factory.create(i);\r\n this.instance = c.instance;\r\n this.initTemplates();\r\n }\r\n}\r\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren, Predicate, Injector } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { MatColumnDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable } from 'rxjs';\r\nimport { CustomCellDirective, ResizeColumnDirective } from '../../directives';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TransformCreator } from '../../services/transform-creator';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { map } from 'rxjs/operators';\r\nimport { TableTemplateService } from '../../services/table-template-service';\r\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\r\nimport { CdkDropList, CDK_DROP_LIST, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Dictionary } from '@ngrx/entity';\r\nimport { AsyncPipe, CurrencyPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ConditionalClassesDirective, SpaceCasePipe, StylerDirective } from '../../../utilities';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { HeaderMenuComponent } from '../header-menu/header-menu.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { ColumnTotalPipe } from '../../pipes/column-total.pipe';\r\n\r\n\r\ninterface widthStyle {\r\n flex?: string;\r\n maxWidth?: string;\r\n}\r\n\r\ninterface allStyles {\r\n body: widthStyle;\r\n header: widthStyle;\r\n footer: widthStyle;\r\n}\r\n\r\n@Component({\r\n selector: 'tb-column-builder',\r\n templateUrl: './column-builder.component.html',\r\n styleUrls: ['./column-builder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\r\n ],\r\n standalone: true,\r\n imports: [\r\n MatTableModule, NgTemplateOutlet, StylerDirective, ResizeColumnDirective,\r\n ConditionalClassesDirective, DragDropModule, MatSortModule, SpaceCasePipe, HeaderMenuComponent,\r\n AsyncPipe, MatTooltipModule, LetDirective, ColumnTotalPipe, CurrencyPipe, DecimalPipe\r\n ]\r\n})\r\nexport class ColumnBuilderComponent implements OnInit {\r\n FieldType = FieldType;\r\n filter!: Partial<FilterInfo>;\r\n @Input() metaData!: MetaData;\r\n\r\n @Input() customCell?: CustomCellDirective = undefined;\r\n @Input() data$!: Observable<any[]>;\r\n\r\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\r\n outerTemplate!: TemplateRef<any>;\r\n innerTemplate!: TemplateRef<any>;\r\n transform!: (o: any, ...args: any[])=> any ;\r\n\r\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\r\n\r\n\r\n constructor(\r\n private transformCreator: TransformCreator,\r\n private table: MatTable<any>,\r\n public state: TableStore,\r\n private templateService: TableTemplateService,\r\n protected injector: Injector,\r\n ) { }\r\n\r\n getInnerTemplate() :TemplateRef<any> {\r\n if(this.metaData.template) return this.metaData.template;\r\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\r\n return this.templateService.getTemplate(this.metaData);\r\n }\r\n showfilters$!: Observable<boolean>;\r\n getOuterTemplate() {\r\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\r\n }\r\n classes?: Dictionary<Predicate<any>>;\r\n\r\n ngOnInit() {\r\n if(this.metaData.fieldType === FieldType.Currency) {\r\n this.classes = {\r\n ['negative-currency']: (element) => element[this.metaData.key] < 0,\r\n ...this.metaData.classes\r\n }\r\n }\r\n else {\r\n this.classes = this.metaData.classes;\r\n }\r\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\r\n const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\r\n previousAndCurrent(0),\r\n map(this.mapWidth),\r\n );\r\n const fullMetaStyles = this.metaData.additional?.styles ?? {};\r\n this.styles$ = width$.pipe(map(width => {\r\n const styles: allStyles = {\r\n header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\r\n footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\r\n body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\r\n };\r\n return styles;\r\n }));\r\n this.showfilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.outerTemplate = this.getOuterTemplate();\r\n this.innerTemplate = this.getInnerTemplate();\r\n this.transform = this.transformCreator.createTransformer(this.metaData);\r\n this.table.addColumnDef(this.columnDef);\r\n }\r\n\r\n cellClicked(element: any, key: string) {\r\n if(this.metaData.click) {\r\n this.metaData.click(element,key);\r\n }\r\n }\r\n\r\n mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\r\n const baseWidth = !!this.metaData.width ? {flex:`0 0 ${this.metaData.width}`, maxWidth:'none'} : {flex:'1'};\r\n if( currentUserDefinedWidth ){\r\n return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\r\n } if( wasReset() ){\r\n return (baseWidth);\r\n }\r\n return ({});\r\n function wasReset(){\r\n return previousUserDefinedWidth >= 0 && currentUserDefinedWidth == null;\r\n }\r\n }\r\n\r\n styles$!:Observable<allStyles>\r\n\r\n}\r\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\r\n\r\n <!-- header -->\r\n <ng-template matHeaderCellDef #myHeader>\r\n @if(customCell?.columnDef?.headerCell){\r\n <ng-container *ngTemplateOutlet=\"customCell!.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \"/>\r\n } @else {\r\n <mat-header-cell cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head drag-header\" #headref \r\n [conditionalClasses]='metaData.additional?.columnPartClasses?.header' >\r\n <div class=\"header-container\" cdkDragHandle>\r\n @if(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell){\r\n <div mat-sort-header [disabled]=\"metaData.noSort\" style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n } @else if(metaData._internalNotUserDefined) {\r\n <div style=\"width: 100%\">\r\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\r\n </div>\r\n }\r\n @if((!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async)){\r\n <tb-header-menu #menu [metaData]='metaData' [filter]='filter' />\r\n }\r\n \r\n </div>\r\n </mat-header-cell>\r\n }\r\n </ng-template>\r\n\r\n <!-- body -->\r\n <ng-container *matCellDef=\"let element;\">\r\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\"/>\r\n </ng-container>\r\n <ng-template #body let-element='element' >\r\n <mat-cell [matTooltip]=\"metaData.toolTip ?? ''\" [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\r\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\" />\r\n </mat-cell>\r\n </ng-template>\r\n \r\n <!-- footer -->\r\n <ng-template matFooterCellDef>\r\n @if(customCell?.columnDef?.footerCell){\r\n <ng-container\r\n *ngTemplateOutlet=\"customCell!.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\"/>\r\n } @else {\r\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\" [conditionalClasses]='metaData.additional?.columnPartClasses?.footer'>\r\n @if(!!data?.length && metaData.additional?.footer){\r\n <span class=\"bold\">\r\n @switch (metaData.fieldType) {\r\n @case (FieldType.Currency) { {{ data | columnTotal: metaData | currency }} }\r\n @case (FieldType.Number) { {{ data | columnTotal: metaData | number }} }\r\n }\r\n </span>\r\n }\r\n \r\n </mat-footer-cell>\r\n }\r\n </ng-template>\r\n</ng-container>\r\n","import { MatTableDataSource } from '@angular/material/table';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\r\n subscription?: Subscription;\r\n constructor(private dataSrc: Observable<T[]>) {\r\n super([]);\r\n }\r\n\r\n connect() {\r\n if (!this.subscription) {\r\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\r\n }\r\n return super.connect();\r\n }\r\n disconnect() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = undefined;\r\n }\r\n super.disconnect();\r\n }\r\n}\r\n","import { Sort, SortDirection } from \"@angular/material/sort\";\nimport { orderBy } from 'lodash';\n\nexport type direc = 'asc' | 'desc' | boolean;\n\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\n return orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction as direc ));\n}\n","import { Observable } from 'rxjs';\r\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\r\nimport { MatTableObservableDataSource } from './MatTableObservableDataSource'\r\nimport { sortData } from '../functions/sort-data-function';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\r\n{\r\n\r\n constructor(dataSrc: Observable<T[]>)\r\n {\r\n super(dataSrc);\r\n\r\n const baseSort = this.sortData;\r\n this.sortData = ((data: T[], sort: MatSort) => sort instanceof MultiSortDirective ? sortData(data, sort.rules) : baseSort(data, sort));\r\n }\r\n}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\r\nimport { asyncScheduler, merge, Observable } from 'rxjs';\r\nimport { delay, distinct, distinctUntilKeyChanged, map, tap } from 'rxjs/operators';\r\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { AsyncPipe, NgClass } from '@angular/common';\r\n@Component({\r\n selector: 'tb-paginator',\r\n standalone: true,\r\n imports: [AsyncPipe, MatPaginatorModule, NgClass],\r\n template: `\r\n @if(currentPageData$ | async; as pageData){\r\n <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\">\r\n {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\r\n </div>\r\n }\r\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\r\n [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\r\n </mat-paginator>\r\n `,\r\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaginatorComponent implements OnInit, AfterViewInit{\r\n @Input() dataSource! : GenericTableDataSource<any>;\r\n @Input() tableElRef! : ElementRef\r\n @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\r\n currentPageData$!: Observable<CurrentPageDetails>;\r\n collapseFooter$!:Observable<boolean>;\r\n @Input() data$!: Observable<any[]>;\r\n\r\n constructor(private state : TableStore){}\r\n ngOnInit(){\r\n this.dataSource.paginator = this.paginator;\r\n this.ourPageEvent = true;\r\n this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\r\n this.state.setPageSize(onPaginatorPageSizeChange(this.paginator));\r\n this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\r\n\r\n }\r\n ngAfterViewInit(){\r\n this.currentPageData$ = merge(\r\n this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\r\n this.data$.pipe(\r\n distinctUntilKeyChanged(\"length\"),\r\n delayToAllowForProperUpdate,\r\n map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\r\n );\r\n }\r\n\r\n paginatorChange() : void {\r\n if(!this.ourPageEvent){\r\n setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\r\n } else {\r\n this.ourPageEvent = false;\r\n }\r\n }\r\n ourPageEvent = false;\r\n}\r\n\r\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\r\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\r\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\r\n total : pageData.length\r\n});\r\n\r\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\r\n currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\r\n total:paginator.length})\r\n\r\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\r\n\r\ninterface CurrentPageDetails {\r\n currentStart:number,\r\n currentEnd:number,\r\n total:number\r\n}\r\n\r\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.userDefined.pageSize || state.pageSize), distinct());\r\n\r\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\r\n paginator._changePageSize(pageSize);\r\n\r\nconst onPaginatorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\r\n","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ChangeDetectionStrategy,\r\n Output,\r\n SimpleChanges,\r\n OnInit,\r\n QueryList,\r\n ViewContainerRef,\r\n ElementRef,\r\n Injector,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatRowDef, MatTable, MatTableModule } from '@angular/material/table';\r\nimport { Observable, combineLatest } from 'rxjs';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { tap, map, distinctUntilChanged } from 'rxjs/operators';\r\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\r\nimport { FieldType } from '../../interfaces/report-def';\r\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { CdkDragDrop, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Group } from '../../classes/TableState';\r\nimport { PaginatorComponent } from './paginator.component';\r\nimport { StylerDirective } from '../../../utilities';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@Component({\r\n selector: 'tb-generic-table',\r\n templateUrl: './generic-table.component.html',\r\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n MatTableModule, DragDropModule, StylerDirective, MatCheckboxModule, MatButtonModule, MatIconModule, NgTemplateOutlet,\r\n PaginatorComponent, MatTooltipModule, AsyncPipe\r\n ]\r\n})\r\nexport class GenericTableComponent implements OnInit {\r\n\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n this.state.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\r\n }\r\n\r\n @Input() data$!: Observable<any[]>;\r\n @Input() indexColumn = false;\r\n @Input() selectionColumn = false;\r\n @Input() trackBy!: string;\r\n @Input() rows!: QueryList<MatRowDef<any>>;\r\n @Input() isSticky = false;\r\n @Input() columnBuilders!: ColumnBuilderComponent[];\r\n @Input() columnInfos!: Observable<ColumnInfo[]>;\r\n @Input() groupHeaderTemplate!: TemplateRef<any>;\r\n\r\n private _disableSort!: boolean;\r\n @Input() set disableSort(val: boolean) {\r\n this._disableSort = val;\r\n if (val) {\r\n if (this.dataSource?.sort) {\r\n this.dataSource.sort = null;\r\n }\r\n } else {\r\n if (this.dataSource && !this.dataSource.sort) {\r\n this.dataSource.sort = this.sort;\r\n }\r\n }\r\n }\r\n get disableSort() { return this._disableSort; }\r\n\r\n @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\r\n @ViewChild(CdkDropList, { static: true }) dropList!: CdkDropList;\r\n @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\r\n @ViewChild(PaginatorComponent) paginatorComponent!: PaginatorComponent;\r\n currentColumns!: string[];\r\n dataSource!: GenericTableDataSource<any>;\r\n keys: string [] = [];\r\n injector: Injector;\r\n rowDefArr :MatRowDef<any>[]= [];\r\n columns:string [] = [];\r\n myColumns: Dictionary<ColumnBuilderComponent> = {};\r\n showHeader$!: Observable<boolean>;\r\n\r\n constructor(\r\n private sort: MatSort,\r\n public state: TableStore,\r\n private viewContainer: ViewContainerRef,\r\n injector: Injector,\r\n ) {\r\n\r\n this.injector = Injector.create({ providers: [\r\n {provide: MatTable, useFactory: ()=> {return this.table} },\r\n {provide: CdkDropList, useFactory: ()=> {return this.dropList} },\r\n ], parent: injector});\r\n }\r\n\r\n trackByFunction = (index:number, item: any) => {\r\n if (!item) {\r\n return null;\r\n }\r\n if (this.trackBy) {\r\n return item[this.trackBy];\r\n }\r\n return item;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rows && this.rows && this.myColumns.length) {\r\n this.initializeRowDefs([...this.rows]);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.selectionColumn) {\r\n this.columns.push('select');\r\n }\r\n\r\n if (this.indexColumn) {\r\n this.columns.push('index');\r\n }\r\n\r\n this.createDataSource();\r\n\r\n this.state.on(this.columnInfos, columns => {\r\n columns.forEach(ci => this.addMetaData(ci))\r\n });\r\n\r\n this.initializeRowDefs([...this.rows]);\r\n\r\n this.state.on(this.state.displayedColumns$, keys => {\r\n this.keys = [...this.columns, ...keys];\r\n this.rowDefArr?.forEach(row => row.columns = this.keys)\r\n });\r\n\r\n this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));\r\n this.showFooterRow$ = combineLatest([\r\n this.data$.pipe(map(d => !!d.length), distinctUntilChanged()),\r\n this.state.metaDataArray$.pipe(map(metaData => metaData.some(md => !!md.additional?.footer)), distinctUntilChanged()),\r\n this.columnInfos.pipe(map(columnInfos => columnInfos.some(ci => !!ci.customCell?.columnDef?.footerCell)), distinctUntilChanged()),\r\n ]).pipe(map(([hasData, hasFooterDef, hasCustomFooter]) => {\r\n const hasselectionColumn = this.selectionColumn;\r\n return hasCustomFooter || (hasData && (hasFooterDef || hasselectionColumn)) ? 'regular-footer' : hasData ? 'no-footer' : 'small-footer';\r\n }));\r\n }\r\n\r\n createDataSource() {\r\n this.dataSource = new GenericTableDataSource(\r\n this.data$.pipe(tap((d) => this.selection.clear() ))\r\n );\r\n\r\n if (!this.disableSort) {\r\n this.dataSource.sort = this.sort;\r\n }\r\n }\r\n\r\n isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\r\n return row.isGroupHeader;\r\n }\r\n\r\n isGroupFooter(_: number, row: { isGroupFooter: boolean }) {\r\n return row.isGroupFooter;\r\n }\r\n\r\n updateGroup(group: Group): void {\r\n this.state.updateGroup({\r\n ...group,\r\n isExpanded: !group.isExpanded\r\n });\r\n }\r\n\r\n addMetaData(column: ColumnInfo) {\r\n let columnBuilder = this.myColumns[column.metaData.key];\r\n if(columnBuilder) {\r\n columnBuilder.metaData = column.metaData;\r\n } else {\r\n const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\r\n index: 0,\r\n injector: this.injector\r\n });\r\n component.instance.customCell = column.customCell;\r\n component.instance.metaData = column.metaData;\r\n component.instance.data$ = this.data$;\r\n this.myColumns[column.metaData.key] = component.instance;\r\n }\r\n }\r\n\r\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\r\n this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\r\n this.rowDefArr = defs;\r\n defs.forEach(r => {\r\n r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\r\n if (this.table) {\r\n this.table.addRowDef(r);\r\n }\r\n });\r\n }\r\n\r\n selection : SelectionModel<any> = new SelectionModel<any>(true, []);\r\n @Output() selection$: Observable<any> = this.selection.changed;\r\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\r\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\r\n\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected() ?\r\n this.selection.clear() :\r\n this.selection.select(...this.dataSource.data);\r\n }\r\n\r\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\r\n previousAndCurrent<number | undefined>(0),\r\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\r\n if( currentUserDefinedWidth){\r\n return ({width:`${currentUserDefinedWidth}px`});\r\n } if( wasReset() ){\r\n return ({width:'initial'});\r\n }\r\n return ({});\r\n\r\n function wasReset(){\r\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\r\n }\r\n })\r\n );\r\n \r\n showFooterRow$!: Observable<'regular-footer' | 'no-footer' | 'small-footer'>;\r\n collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\r\n}\r\n","<mat-table\r\n cdkDropList\r\n cdkDropListLockAxis='x'\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"table-drag-list\"\r\n [class]=\"(showFooterRow$ | async)\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n [trackBy]='trackByFunction'\r\n [styler]=\"tableWidth | async\"\r\n>\r\n\r\n <ng-container matColumnDef=\"select\">\r\n\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"!!(masterToggleChecked$ | async)\"\r\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n\r\n <mat-cell *matCellDef=\"let row\">\r\n @if(!row.isGroupFooter){\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"/>\r\n }\r\n </mat-cell>\r\n\r\n <mat-footer-cell *matFooterCellDef>\r\n {{ selection.selected.length }}\r\n </mat-footer-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"index\">\r\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\r\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\r\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"groupHeader\">\r\n <mat-cell *matCellDef=\"let row\">\r\n <div [style.paddingLeft]=\"row.padding + 'px !important'\" >\r\n <button mat-icon-button (click)=\"updateGroup(row);\">\r\n @if(!row.isExpanded){\r\n <mat-icon>chevron_right</mat-icon>\r\n } @else {\r\n <mat-icon>expand_more</mat-icon>\r\n }\r\n </button>\r\n {{row.groupHeaderName}}\r\n </div>\r\n <div style=\"flex-grow: 1\">\r\n <ng-container *ngTemplateOutlet=\"groupHeaderTemplate; context: { element: row }\"></ng-container>\r\n </div>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n @if(showHeader$ | async){\r\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\" />\r\n }\r\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\" />\r\n <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" style=\"background-color: white;\" />\r\n <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\" />\r\n <mat-footer-row *matFooterRowDef=\"(showFooterRow$ | async) === 'regular-footer' ? keys : []\" />\r\n\r\n</mat-table>\r\n\r\n<div class=\"flx-row-end sticky\">\r\n <tb-paginator #tbPaginator\r\n [dataSource]=\"dataSource\"\r\n [tableElRef]=\"tableElRef\"\r\n [data$]=\"data$\" />\r\n\r\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\r\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n</div>\r\n","import { Observable, combineLatest, of } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { combineArrays } from '../../rxjs/rxjs-operators';\r\nimport { createFilterFunc, CustomFilter, FilterInfo } from './filter-info';\r\n\r\nexport class DataFilter<T = any> {\r\n\r\n constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\r\n }\r\n\r\n filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\r\n return data.filter( r => filters.every( fltr => fltr(r)) );\r\n }\r\n\r\n filterData(data$: Observable<T[]>) {\r\n return combineLatest([data$, this.filters$]).pipe(\r\n map(([data, filters]) => this.filter(data, filters)),\r\n shareReplay({bufferSize: 1, refCount: true})\r\n );\r\n }\r\n\r\n appendFilters(filters$: Observable<(FilterInfo | CustomFilter )[]>) : DataFilter {\r\n return new DataFilter(combineArrays([\r\n this.filters$ ?? of([]),\r\n filters$.pipe(map(fltrs => fltrs\r\n // we only want to remove it if it was specifically set to false\r\n // as apposed to falsy\r\n .filter( f => f.active !== false )\r\n .map(filter => createFilterFunc(filter))))\r\n ]));\r\n }\r\n}\r\n","export function downloadData(data: string, filename: string, mimeType: string) {\n const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\n const downloadLink = document.createElement('a');\n downloadLink.download = filename;\n downloadLink.href = url;\n downloadLink.style.display = 'none';\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n URL.revokeObjectURL(url);\n}\n","import { DatePipe } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { combineLatest} from 'rxjs';\r\nimport { orderMetaData, TableStore } from '../classes/table-store';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\r\nimport { downloadData } from '../functions/download-data';\r\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\r\nimport { TableState } from '../classes/TableState';\r\nimport { isPipe } from './transform-creator';\r\nimport { get } from 'lodash';\r\n\r\n@Injectable()\r\nexport class ExportToCsvService<T> {\r\n constructor(\r\n public state: TableStore,\r\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\r\n private datePipe: DatePipe,\r\n ){}\r\n\r\n exportToCsv = (data: Observable<T[]>) => {\r\n const exportableFields$ = this.state.state$.pipe(\r\n map(mapExportableFields)\r\n );\r\n\r\n combineLatest([data,exportableFields$]).pipe(\r\n first(),\r\n map(([data,fields]) => this.csvData(data,fields)),\r\n ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\r\n }\r\n\r\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\r\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\r\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\r\n return res.join('\\n');\r\n }\r\n\r\n metaToField = (meta: MetaData<T>, row: T) => {\r\n let val: any = get( row,meta.key);\r\n if (val == null && !meta.transform) return val\r\n if(meta.transform && meta.fieldType !== FieldType.Expression){\r\n const transform = meta.transform as any;\r\n return isPipe(transform) ? transform.transform(val) : transform(val);\r\n }\r\n switch (meta.fieldType) {\r\n case FieldType.Date:\r\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\r\n val = this.transform(val, dateFormat);\r\n break;\r\n case FieldType.DateTime:\r\n const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\r\n val = this.transform(val, dateTimeFormat);\r\n break;\r\n case FieldType.String:\r\n const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\r\n val = prepend + val;\r\n break;\r\n case FieldType.Array:\r\n const additional = meta.additional as ArrayAdditional;\r\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\r\n break;\r\n case FieldType.Expression:\r\n val = (meta.transform as any)(row);\r\n break;\r\n }\r\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\r\n val = val.replaceAll('\"', '\"\"');\r\n val = '\"' + val + '\"';\r\n }\r\n return val;\r\n }\r\n\r\n private transform(val: any, dateFormat: any) {\r\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\r\n return this.config.transformers[FieldType.Date]!(val);\r\n }\r\n return this.datePipe.transform(val, dateFormat);\r\n }\r\n}\r\n\r\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\r\n\r\n orderMetaData(state)\r\n .filter( meta => !keysToRemove.includes(meta.key));\r\n\r\n\r\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\r\n .filter(md => md.noExport )\r\n .map( md => md.key );\r\n\r\nexport const mapExportableFields = (state: TableState) => {\r\n const fieldsToRemove = nonExportableFields(state)\r\n .concat(state.hiddenKeys);\r\n return removeFromMetaData(state, fieldsToRemove);\r\n}\r\n","import { ArrayStyle } from '../interfaces/report-def';\r\n\r\nexport interface DefaultSettings {\r\n dateFormat?: string;\r\n dateTimeFormat?: string;\r\n}\r\n\r\nexport const ArrayDefaults = {\r\n limit : 3,\r\n arrayStyle : ArrayStyle.CommaDelimited\r\n}","import { get } from \"lodash\";\r\nimport { MetaData } from \"../interfaces/report-def\";\r\n\r\nexport function createLinkCreator<T>(metaData: MetaData<T>){\r\n const target = metaData.additional?.link?.target || metaData.additional?.target || '_blank';\r\n const useRouterLink = metaData.additional?.link?.useRouterLink || metaData.additional?.useRouterLink;\r\n const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\r\n const routerLinkOptions = useRouterLink ? {\r\n queryParams: (element) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\r\n map[key] = parseInterpolated(value, element);\r\n return map;\r\n }, {}) ?? null,\r\n fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\r\n preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\r\n queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\r\n }\r\n : undefined;\r\n\r\n\r\n\r\n if (hasRoute) {\r\n return ({\r\n link: (element: T) => parseInterpolated(metaData.additional!.link!.interpolatedRoute!, element),\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n } else {\r\n const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\r\n const base = metaData.additional!.link?.base || metaData.additional!.base;\r\n const getKey = key(metaData);\r\n return ({\r\n link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\r\n target,\r\n useRouterLink,\r\n routerLinkOptions,\r\n });\r\n }\r\n}\r\n\r\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ? \r\n (element:any) => get(element, (metaData.additional!.link!.urlKey as string)) :\r\n metaData.additional!.urlKey ?\r\n (element:any) => get(element, (metaData.additional!.urlKey as string)) :\r\n (element:any) => get(element, metaData.key);\r\n\r\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\r\n interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,key));","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SpaceCasePipe } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'group-by-list',\r\n templateUrl: './group-by-list.component.html',\r\n styleUrls: ['./group-by-list.component.css'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n MatChipsModule, LetDirective, MatIconModule, SpaceCasePipe\r\n ]\r\n})\r\nexport class GroupByListComponent {\r\n \r\n tableStore = inject(TableStore);\r\n}\r\n","<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span class=\"tb-group-label\">Group By:</span>\r\n @for (groupByKey of groupByKeys; track groupByKey) {\r\n @if($index > 0){\r\n <mat-icon class=\"nested-arrow\">arrow_right</mat-icon>\r\n }\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n</mat-chip-set>\r\n","import { Injectable } from '@angular/core';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { combineLatest } from 'rxjs';\r\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { notNull } from '../../../rxjs/rxjs-operators';\r\n\r\n@Injectable()\r\nexport class SortMenuComponentStore extends ComponentStore<ComponentStoreState> {\r\n constructor(private tableState: TableStore){\r\n super({ notSorted:[], sorted: []})\r\n }\r\n private set = this.updater((state, data: ComponentStoreState)=> ({...data}));\r\n\r\n setSorted = this.updater((state, sorted: SortWithName[])=>({...state, sorted}));\r\n\r\n setNotSorted = this.updater((state, notSorted: SortWithName[])=>({...state, notSorted}));\r\n sorted$ = this.select(state=>state.sorted);\r\n notSorted$ = this.select(state=>state.notSorted);\r\n\r\n setDirection = this.updater((state,sort:SortWithName)=>{\r\n const index = state.sorted.findIndex(s => s.active === sort.active);\r\n const sorted = [...state.sorted];\r\n sorted.splice(index,1,sort);\r\n return ({...state,sorted});\r\n })\r\n\r\n reset = () => {\r\n const sorted = this.tableState.sorted$.pipe(\r\n mergeMap(sort => this.tableState.metaData$.pipe(\r\n notNull(),\r\n map(\r\n meta => sort.map(s => {\r\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\r\n )))\r\n );\r\n const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\r\n metas => this.tableState.sorted$.pipe(\r\n map(s => metas\r\n .filter(meta => !s.some(s=>s.active=== meta.key) && !meta.noSort)\r\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\r\n )\r\n ));\r\n this.set(combineLatest([\r\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\r\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\r\n }\r\n}\r\n\r\nexport interface ComponentStoreState {\r\n sorted : SortWithName[];\r\n notSorted: SortWithName[];\r\n}\r\n\r\nexport interface SortWithName extends Sort{\r\n displayName : string;\r\n}\r\n\r\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\r\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\r\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map, tap } from 'rxjs/operators';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { SortDirection } from '../../interfaces/report-def';\r\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\r\nimport { LetDirective } from '@ngrx/component';\r\nimport { AsyncPipe, NgClass } from '@angular/common';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SpaceCasePipe, StopPropagationDirective } from '../../../utilities';\r\n\r\n@Component({\r\n selector: 'tb-sort-menu',\r\n templateUrl: './sort-menu.component.html',\r\n styleUrls: ['./sort-menu.component.scss'],\r\n providers:[SortMenuComponentStore],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n LetDirective, MatTooltipModule, MatButtonModule, MatIconModule, MatMenuModule, StopPropagationDirective, DragDropModule,\r\n SpaceCasePipe, NgClass, AsyncPipe\r\n ]\r\n})\r\nexport class SortMenuComponent implements OnInit{\r\n\r\n sorted$:Observable<SortWithName[]>;\r\n notSorted$:Observable<SortWithName[]>;\r\n SortDirection = SortDirection;\r\n dirty$ = new BehaviorSubject(false);\r\n constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\r\n this.sorted$ = this.store.sorted$.pipe(map(data=>[...data]));\r\n this.notSorted$ = this.store.notSorted$.pipe(map(data=>[...data]));\r\n }\r\n\r\n reset(){\r\n this.dirty$.next(false);\r\n this.store.reset();\r\n }\r\n\r\n ngOnInit(){\r\n this.store.reset();\r\n }\r\n\r\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\r\n this.dirty$.next(true);\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n this.store.setSorted(event.container.data);\r\n } else {\r\n\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\r\n this.store.setSorted(event.container.data);\r\n this.store.setNotSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\r\n if (event.previousContainer === event.container) {\r\n return;\r\n } else {\r\n this.dirty$.next(true);\r\n transferArrayItem(event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\r\n\r\n this.store.setNotSorted(event.container.data);\r\n this.store.setSorted(event.previousContainer.data);\r\n }\r\n }\r\n\r\n apply = this.store.effect((obs:Observable<null>)=>\r\n obs.pipe(tap(()=>{\r\n this.dirty$.next(false);\r\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\r\n })));\r\n\r\n setDirection(sort:SortWithName){\r\n this.dirty$.next(true);\r\n this.store.setDirection(sort);\r\n }\r\n\r\n}\r\n\r\n\r\n","<ng-container *ngrxLet=\"dirty$ as dirty\">\r\n @if(sorted$ | async; as sorted){\r\n @if (notSorted$ | async; as notSorted) {\r\n <!-- Menu Trigger -->\r\n <span matTooltip=\"Sort\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon color=\"primary\">swap_vert</mat-icon>\r\n </button>\r\n </span>\r\n\r\n <!-- Menu -->\r\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\" (closed)=\"reset()\">\r\n <div mat-menu-item class=\"menu-button\">\r\n <div class=\"close-button-wrapper\">\r\n <span matTooltip=\"Close\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n @if(dirty){\r\n <span matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\r\n <mat-icon>undo</mat-icon>\r\n </span>\r\n }\r\n \r\n </div>\r\n </div>\r\n\r\n <!-- Apply Button -->\r\n <div class=\"apply-button-wrapper\">\r\n <button mat-button color=\"primary\" (click)=\"apply(null)\"\r\n stop-propagation [class.apply-border]=\"dirty\"\r\n [disabled]=\"!dirty\">\r\n Apply @if (dirty) { Unsaved Changes }\r\n </button>\r\n </div>\r\n\r\n <!-- Default Sorting Text -->\r\n @if (!sorted.length) {\r\n <div class=\"tip\" >\r\n Sorting List\r\n </div>\r\n }\r\n\r\n <!-- Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #sortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[notSortedGroup]\"\r\n [cdkDropListData]=\"sorted\"\r\n (cdkDropListDropped)=\"dropIntoSorted($event)\">\r\n\r\n <!-- Menu Item Wrapper -->\r\n @for (sort of sorted; track sort.active) {\r\n <!-- Menu Item Headers -->\r\n @if (sorted.length > 1) {\r\n <span class=\"description sort-header\">{{$index === 0 ? 'First By' : 'Then By'}}</span>\r\n }\r\n \r\n <!-- Menu Item -->\r\n <div mat-menu-item cdkDrag class=\"menu-item\">\r\n <div class=\"sort-item\">\r\n <span class=\"sorted-name\">\r\n {{sort.displayName || (sort.active | spaceCase)}}\r\n <span class=\"direction-text\">{{sort.direction}}</span>\r\n </span>\r\n \r\n <!-- Sort Direction Buttons -->\r\n <div class=\"up-down-buttons-wrapper\">\r\n <button class=\"up-down-button up-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_upward\r\n </mat-icon>\r\n </button>\r\n \r\n <button class=\"up-down-button\" stop-propagation\r\n (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\r\n <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\r\n arrow_downward\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Default Not Sorted Text -->\r\n @if(!notSorted.length){\r\n <div class=\"tip\" >\r\n Not Sorted List\r\n </div>\r\n }\r\n\r\n <!-- Not Sorted Menu List -->\r\n <div class=\"list\"\r\n cdkDropList\r\n #notSortedGroup=\"cdkDropList\"\r\n [cdkDropListConnectedTo]=\"[sortedGroup]\"\r\n [cdkDropListData]=\"notSorted\"\r\n (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\r\n @for (sort of notSorted; track sort.active) {\r\n <div mat-menu-item class=\"menu-item\" cdkDrag>\r\n <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\r\n </div>\r\n }\r\n </div>\r\n </mat-menu>\r\n }\r\n }\r\n</ng-container>\r\n","import { AsyncPipe, CommonModule, NgTemplateOutlet } from \"@angular/common\";\r\nimport { LetDirective } from \"@ngrx/component\";\r\nimport { MultiSortDirective } from \"../../directives\";\r\nimport { GroupByListComponent } from \"../group-by-list/group-by-list.component\";\r\nimport { FilterChipsComponent } from \"../table-container-filter/filter-list/filter-list.component\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { GenericTableComponent } from \"../generic-table/generic-table.component\";\r\nimport { GenFilterDisplayerComponent } from \"../table-container-filter/gen-filter-displayer/gen-filter-displayer.component\";\r\nimport { GenColDisplayerComponent } from \"../gen-col-displayer/gen-col-displayer.component\";\r\nimport { SortMenuComponent } from \"../sort-menu/sort-menu.component\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { ClickEmitterDirective, DialogDirective, StopPropagationDirective } from \"../../../utilities\";\r\n\r\nexport const i = [\r\n AsyncPipe, NgTemplateOutlet,\r\n\r\n LetDirective,\r\n \r\n MultiSortDirective, GroupByListComponent, FilterChipsComponent, GenFilterDisplayerComponent, GenColDisplayerComponent,\r\n SortMenuComponent, GenericTableComponent, StopPropagationDirective, ClickEmitterDirective, DialogDirective,\r\n\r\n MatButtonModule, MatMenuModule, MatIconModule, MatTooltipModule, MatInputModule\r\n\r\n]","import { ComponentStore } from \"@ngrx/component-store\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable, filter, tap } from \"rxjs\";\r\nimport { concatLatestFrom } from \"@ngrx/effects\";\r\nimport { Dictionary } from \"../interfaces/dictionary\";\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TableBuilderStateStore extends ComponentStore<GlobalStorageState> {\r\n constructor(){\r\n super(loadGlobalStorageState())\r\n }\r\n\r\n //selectors\r\n selectLocalProfile = (key:string) => this.select(state => \r\n state.localProfiles[key]);\r\n \r\n selectLocalProfileState = (key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile) => {\r\n if(profile) {\r\n return profile.states[profile.current ?? profile.default];\r\n }\r\n return null;\r\n });\r\n\r\n selectLocalProfileCurrentKey = (key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile) => {\r\n if(profile) {\r\n return profile.current ?? profile.default;\r\n }\r\n return 'default';\r\n });\r\n\r\n selectLocalProfileKeys = <T>(key:string) => this.select(\r\n this.selectLocalProfile(key),\r\n (profile: Profile<T>) => {\r\n if(profile) {\r\n return Object.keys(profile.states).filter( key => key);\r\n }\r\n return null;\r\n });\r\n\r\n\r\n // reducers\r\n setLocalProfile = this.updater((state, props: { key: string, value: any }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {\r\n default: props.value\r\n }};\r\n } else {\r\n profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : props.value} };\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile} }\r\n });\r\n\r\n setLocalProfilesState = this.updater((state, props: { key: string, current: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(!profile) {\r\n profile = {default: props.current, current: props.current , states : {[props.current]: null }};\r\n } else {\r\n const state = profile.states[props.current] ?? profile.states[profile.current ?? profile.default];\r\n profile = {...profile, current: props.current, states: {...profile.states, [props.current] : state }};\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile}};\r\n });\r\n\r\n deleteLocalProfilesState = this.updater((state, props: { key: string, stateKey: string }) => {\r\n let profile = state.localProfiles[props.key];\r\n if(profile) {\r\n const current = profile.current === props.stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[props.stateKey];\r\n return {...state, localProfiles: {...state.localProfiles, [props.key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n });\r\n\r\n // effects\r\n saveLocalProfile = this.effect((props$: Observable<{ key: string, value: any, persist?: boolean }>) => props$.pipe(\r\n filter( action => !!action.persist),\r\n concatLatestFrom((action) => this.selectLocalProfile(action.key)),\r\n tap( ([action, profile]) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {default: action.value}};\r\n globalSavedState.localProfiles[action.key] = profile;\r\n } {\r\n if(!globalSavedState.localProfiles[action.key]) {\r\n globalSavedState.localProfiles[action.key] = {...profile,states: {[profile.current ?? profile.default]: action.value}};\r\n } else {\r\n globalSavedState.localProfiles[action.key].states[profile.current ?? profile.default] = action.value;\r\n }\r\n\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.setLocalProfile(action);\r\n })\r\n ));\r\n\r\n deleteLocalProfile = this.effect((props$: Observable<{ key: string, stateKey: string }>) => props$.pipe(\r\n tap((props) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[props.key]) {\r\n return;\r\n } else {\r\n delete globalSavedState.localProfiles[props.key].states[props.stateKey];\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n this.deleteLocalProfilesState(props)\r\n })\r\n ))\r\n}\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState {\r\n const storage = localStorage.getItem('global-state-storage');\r\n if(storage) {\r\n return {...defaultStorageState, ...JSON.parse(storage)};\r\n }\r\n return defaultStorageState;\r\n}\r\n\r\nexport interface Profile<T = any> {\r\n default: string;\r\n current: string;\r\n states: Dictionary<T>;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n globalProfileKeys : string [];\r\n currentGlobalProfile: string;\r\n globalProfiles: Dictionary<Profile>;\r\n localProfiles: Dictionary<Profile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n globalProfileKeys: ['Default'],\r\n currentGlobalProfile: 'Default',\r\n globalProfiles: {},\r\n localProfiles: {}\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ContentChildren,\r\n QueryList,\r\n ChangeDetectionStrategy,\r\n Predicate,\r\n TemplateRef,\r\n ViewChild,\r\n inject,\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable, from, ReplaySubject } from 'rxjs';\r\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { first, last, map, switchMap, tap, withLatestFrom, mergeAll, scan, switchAll } from 'rxjs/operators';\r\nimport { TableBuilder } from '../../classes/table-builder';\r\nimport { MatRowDef } from '@angular/material/table';\r\nimport { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\r\nimport { stateIs, TableStore } from '../../classes/table-store';\r\nimport { DataFilter } from '../../classes/data-filter';\r\nimport { combineArrays, mapArray, notNull } from '../../../rxjs/rxjs-operators';\r\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\r\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\r\nimport { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\r\nimport { Group, InitializationState } from '../../classes/TableState';\r\nimport { sortData } from '../../functions/sort-data-function';\r\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\r\nimport { cloneDeep, groupBy } from 'lodash';\r\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\r\nimport { defaultShareReplay } from '../../../rxjs';\r\nimport { flattenDeep } from 'lodash';\r\nimport { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';\r\nimport { Dictionary } from '../../interfaces/dictionary';\r\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\r\nimport { createLinkCreator } from '../../services/link-creator.service';\r\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\r\nimport {i} from './table-container-imports'\r\nimport { TableBuilderStateStore } from '../../ngrx/tableBuilderStateStore';\r\n\r\n@Component({\r\n selector: 'tb-table-container',\r\n templateUrl: './table-container.html',\r\n styleUrls: ['./table-container.css','../../styles/collapser.styles.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [TableStore, ExportToCsvService, WrapperFilterStore],\r\n standalone: true,\r\n imports: i\r\n}) export class TableContainerComponent<T = any> {\r\n\r\n @ViewChild(GenericTableComponent) private genericTableComponent!: GenericTableComponent;\r\n @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\r\n @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\r\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\r\n @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\r\n\r\n @Input() tableId!: string;\r\n @Input() tableBuilder!: TableBuilder;\r\n @Input() indexColumn = false;\r\n @Input() selectionColumn = false;\r\n @Input() trackBy!: string;\r\n @Input() isSticky = true;\r\n @Input() set pageSize(value: number) {\r\n this.state.setPageSize(value);\r\n }\r\n @Input() inputFilters?: Observable<Array<Predicate<T>>>;\r\n @Input() groupHeaderTemplate!: TemplateRef<any>;\r\n\r\n @Output() selection$ = new EventEmitter();\r\n dataSubject = new ReplaySubject<Observable<T[]>>(1);\r\n @Output() data = this.dataSubject.pipe(\r\n switchAll(),\r\n defaultShareReplay(),\r\n );\r\n @Output() onStateReset = new EventEmitter();\r\n @Output() onSaveState = new EventEmitter();\r\n state = inject(TableStore);\r\n @Output() state$ = this.state.getSavableState().pipe(\r\n map(state => cloneDeep(state)),\r\n defaultShareReplay(),\r\n );\r\n\r\n myColumns$!: Observable<ColumnInfo[]>;\r\n stateKeys$?: Observable<string[] | null>;\r\n currentStateKey$?: Observable<string>;\r\n disableSort!: boolean;\r\n\r\n config = inject(TableBuilderConfigToken);\r\n exportToCsvService = inject(ExportToCsvService<T>);\r\n wrapper = inject(TableWrapperDirective, { optional: true });\r\n store = inject(TableBuilderStateStore);\r\n _ = this.state.on( this.state.getSavableState().pipe(last()), finalState => {\r\n if(this.tableId) {\r\n this.store.setLocalProfile({key:this.tableId,value: finalState});\r\n }\r\n });\r\n\r\n\r\n firstPage(): void {\r\n this.genericTableComponent?.paginatorComponent?.paginator?.firstPage();\r\n }\r\n\r\n lastPage(): void {\r\n this.genericTableComponent?.paginatorComponent?.paginator?.lastPage();\r\n }\r\n\r\n resetState() {\r\n this.customFilters.forEach( cf => cf.reset());\r\n this.filters.forEach( cf => cf.reset() );\r\n this.state.resetState();\r\n this.onStateReset.next(null)\r\n }\r\n\r\n initializeState() {\r\n this.state.setTableSettings(this.tableBuilder.settings);\r\n this.state.runOnceWhen(\r\n stateIs(InitializationState.MetaDataLoaded),\r\n () => {\r\n if(this.tableId) {\r\n const persistedState$ = this.store.selectLocalProfileState(this.tableId).pipe(\r\n tap( persistedState => {\r\n if(!persistedState) {\r\n this.state.setInitializationState(InitializationState.LoadedFromStore);\r\n }\r\n }),\r\n notNull(),\r\n );\r\n this.state.updateStateFromPersistedState(persistedState$);\r\n } else {\r\n this.state.setInitializationState(InitializationState.LoadedFromStore);\r\n }\r\n });\r\n }\r\n customFilters$ = new BehaviorSubject<Predicate<any>[]>([]);\r\n initializeData() {\r\n var allFilters = this.inputFilters ?\r\n combineArrays([this.customFilters$, this.inputFilters])\r\n : this.customFilters$;\r\n\r\n const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\r\n\r\n const data = new DataFilter(allFilters)\r\n .appendFilters(filters$)\r\n .filterData(this.tableBuilder.getData$()).pipe(\r\n switchMap(data => this.state.groupByKeys$.pipe(\r\n map(groupBy => this.getData(data, groupBy)) ).pipe(\r\n switchMap(data => this.state.groups$.pipe(\r\n map(groups => this.setDisplay(data, groups))\r\n ))\r\n ))\r\n );\r\n\r\n this.dataSubject.next(data);\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeState();\r\n this.initializeData();\r\n\r\n if(this.tableId) {\r\n this.stateKeys$ = this.store.selectLocalProfileKeys(this.tableId);\r\n this.currentStateKey$ = this.store.selectLocalProfileCurrentKey(this.tableId);\r\n }\r\n }\r\n\r\n exportToCsv(): void {\r\n const sorted = this.data.pipe(\r\n withLatestFrom(this.state.sorted$),\r\n map(([data, sorted]) => sortData(data, sorted))\r\n );\r\n this.exportToCsvService.exportToCsv(sorted);\r\n }\r\n\r\n saveState() {\r\n this.state.getSavableState().pipe(\r\n first()\r\n ).subscribe(tableState => {\r\n this.onSaveState.next(null);\r\n this.store.saveLocalProfile({ key: this.tableId, value:tableState, persist: true} );\r\n this.store.setLocalProfile({ key: this.tableId, value:tableState } );\r\n });\r\n }\r\n\r\n setProfileState(val: string) {\r\n this.store.setLocalProfilesState({key:this.tableId, current: val});\r\n }\r\n\r\n deleteProfileState(stateKey: string) {\r\n this.store.deleteLocalProfile({key:this.tableId, stateKey});\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeColumns();\r\n this.state.runOnceWhen(\r\n stateIs(InitializationState.LoadedFromStore),\r\n state => {\r\n\r\n let allFilters = [...this.filters, ...this.customFilters];\r\n if(this.wrapper) {\r\n allFilters = [...allFilters, ...this.wrapper.customFilters, ...this.wrapper.filters, ...this.wrapper.registrations];\r\n }\r\n\r\n const customFilters: (TableCustomFilterDirective|TableFilterDirective )[] = [];\r\n\r\n allFilters.filter( f => !f.used).forEach( f => {\r\n f.used = true;\r\n if(f.savable) {\r\n var filter = state.filters[f.filterId];\r\n if(isFilterInfo(filter)) {\r\n const filterDirective: TableFilterDirective = f as TableFilterDirective;\r\n filterDirective.fieldType = filter.fieldType;\r\n filterDirective.filterType = filter.filterType;\r\n filterDirective.setFilterValue(filter.filterValue);\r\n filterDirective.key = filter.key;\r\n filterDirective.update();\r\n }\r\n if(isCustomFilter(filter)) {\r\n f.active = filter.active ?? false;\r\n }\r\n this.state.addFilter(f.filter$);\r\n } else {\r\n customFilters.push(f);\r\n }\r\n });\r\n\r\n const filters$ = from( customFilters.map( cf => cf.filter$ )).pipe(\r\n mergeAll(),\r\n scan( (a,b)=> {\r\n if(b.active) {\r\n a[b.filterId] = isCustomFilter(b) ? b.predicate : createFilterFunc(b);\r\n } else {\r\n delete a[b.filterId] ;\r\n }\r\n return a;\r\n }, {} as Dictionary<Predicate<any>>),\r\n map( f => Object.values(f))\r\n );\r\n this.state.on(filters$, (f) => {\r\n this.customFilters$.next(f);\r\n });\r\n this.state.updateState({initializationState: InitializationState.Ready});\r\n });\r\n }\r\n\r\n initializeColumns() {\r\n const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\r\n this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\r\n map((mds) => {\r\n mds = mds.map(this.mapMetaDatas);\r\n return [\r\n ...mds,\r\n ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\r\n ]\r\n })\r\n ));\r\n this.state.setLinkMaps(this.tableBuilder.metaData$!.pipe(\r\n map((mds) => {\r\n return mds.reduce((acc, md) => {\r\n if(md.fieldType === FieldType.Link){ acc[md.key]= createLinkCreator(md)}\r\n return acc;\r\n },{})\r\n })\r\n ))\r\n\r\n this.myColumns$ = this.state.metaDataArray$.pipe(\r\n mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\r\n );\r\n }\r\n mapMetaDatas = (meta : MetaData<T>) => {\r\n if(meta.fieldType === FieldType.Array){\r\n const additional = {...meta.additional} as ArrayAdditional;\r\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\r\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\r\n return {...meta,additional}\r\n }\r\n return meta;\r\n }\r\n\r\n collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\r\n\r\n getData(data: any[], groupByKeys: string[]): any[] {\r\n if (!groupByKeys.length) {\r\n this.disableSort = false;\r\n return data;\r\n }\r\n this.disableSort = true;\r\n return this.tbGroupBy(data, groupByKeys);\r\n }\r\n\r\n tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\r\n let res = {};\r\n res = groupBy(data, groupByKeys[0]);\r\n const remainingGroupByKeys = groupByKeys.slice(1);\r\n if (remainingGroupByKeys.length) {\r\n Object.keys(res).forEach(key => res[key] = this.tbGroupBy(res[key], remainingGroupByKeys, key))\r\n }\r\n return flattenDeep(Object.keys(res).map(groupName => {\r\n const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\r\n return [\r\n {\r\n isGroupHeader: true,\r\n groupHeaderName: `${groupName} (${res[groupName]?.filter(row => !row.isGroupHeader)?.length})`,\r\n data: res[groupName],\r\n groupName: uniqName,\r\n padding: 0\r\n },\r\n (res[groupName] as any[])?.map(d => ({ ...d, parentGroupName: d.parentGroupName || uniqName }))\r\n ];\r\n })).map(this.addIndentation);\r\n }\r\n\r\n addIndentation = (d: any) => {\r\n if (d.isGroupHeader) {\r\n if (d.padding) {\r\n d.padding += 20;\r\n } else {\r\n d.padding = 1;\r\n }\r\n }\r\n return d;\r\n }\r\n\r\n setDisplay = (data: any[], groups: Group[]): any[] => data\r\n .map(d => ({\r\n ...d,\r\n shouldDisplay: !d.parentGroupName || this.shouldDisplay(groups.find(g => g.groupName == d.parentGroupName), groups),\r\n isExpanded: groups.find(g => g.groupName == d.groupName)?.isExpanded\r\n }))\r\n .filter(d => d.shouldDisplay);\r\n\r\n\r\n shouldDisplay = (currentGroup?: Group, groups?: Group[]): boolean => {\r\n if (!currentGroup?.isExpanded) {\r\n return false;\r\n }\r\n\r\n const parentGroup = groups?.find(g => g.groupName == currentGroup.parentGroupName);\r\n\r\n if (parentGroup) {\r\n return this.shouldDisplay(parentGroup, groups);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","<ng-content select=\"[before]\" />\r\n\r\n<ng-container multiSort [matSortDisabled]=\"disableSort\" *ngrxLet=\"state.tableSettings$ as tableSettings\">\r\n <div class=\"header-wrapper\">\r\n <div class=\"title\">\r\n @if ((!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed) {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n @if((state.groupByKeys$ | async)?.length){\r\n <group-by-list />\r\n }\r\n </div>\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!(collapseHeader$ | async)) {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #mainMenu='matMenu'>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n @else {\r\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [indexColumn]='indexColumn'\r\n [selectionColumn]='selectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\r\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\">\r\n </tb-generic-table>\r\n </div>\r\n\r\n\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n </ng-template>\r\n\r\n <ng-template #headerMenuExtra>\r\n <button mat-menu-item (click)=\"resetState()\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset table</span>\r\n </button>\r\n @if (!tableSettings.hideExport) {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (currentStateKey$ | async; as currentKey) {\r\n @if (tableId) {\r\n <button mat-menu-item (click)=\"saveState()\">\r\n <mat-icon color=\"primary\">save</mat-icon>\r\n <span>Save to {{currentKey}}</span>\r\n </button>\r\n <button mat-menu-item [matMenuTriggerFor]=\"savedNames\">\r\n <span>Choose Profile</span>\r\n </button>\r\n }\r\n }\r\n\r\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\r\n <button mat-menu-item clickEmitter #add='clickEmitter'>\r\n <mat-icon>add</mat-icon>\r\n <span>New</span>\r\n </button>\r\n @for (key of stateKeys$ | async; track key) {\r\n <button mat-menu-item (click)='setProfileState(key)'>\r\n <span>{{key}}</span>\r\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\r\n </button>\r\n }\r\n </mat-menu>\r\n <ng-container *opDialog='add'>\r\n <mat-form-field>\r\n <input class=\"add-key\" matInput #addedKey />\r\n </mat-form-field>\r\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);' [disabled]=\"!addedKey.value\">\r\n Add\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\r\nimport { MultiSortDirective } from './directives/multi-sort.directive';\r\nimport { ModuleWithProviders } from '@angular/core';\r\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\r\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FilterComponent, GenericTableComponent, TableContainerComponent } from './components';\r\nimport { CustomCellDirective, MatSlideToggleTbFilterDirective, MatRadioButtonTbFilterDirective, MatOptionTbFilterDirective, MatCheckboxTbFilterDirective, MatButtonToggleFilterDirective, TableFilterDirective, TableFilterStringContainsDirective, TableWrapperDirective, ResizeColumnDirective, TableCustomFilterDirective } from './directives';\r\nimport { UtilitiesModule } from '../utilities';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { TableBuilderStateStore } from './ngrx/tableBuilderStateStore';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatNativeDateModule,\r\n RouterModule,\r\n TableContainerComponent,\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n exports: [\r\n GenericTableComponent,\r\n TableContainerComponent,\r\n CustomCellDirective,\r\n FilterComponent,\r\n MatSlideToggleTbFilterDirective,\r\n MatRadioButtonTbFilterDirective,\r\n MatOptionTbFilterDirective,\r\n MatCheckboxTbFilterDirective,\r\n MatButtonToggleFilterDirective,\r\n TableFilterDirective,\r\n TableFilterStringContainsDirective,\r\n TableWrapperDirective,\r\n ResizeColumnDirective,\r\n UtilitiesModule,\r\n ],\r\n providers: [\r\n SpaceCasePipe,\r\n DatePipe,\r\n CurrencyPipe,\r\n PhoneNumberPipe,\r\n MultiSortDirective,\r\n TableBuilderStateStore,\r\n ]\r\n})\r\nexport class TableBuilderModule {\r\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\r\n return {\r\n ngModule: TableBuilderModule,\r\n providers: [\r\n { provide: TableBuilderConfigToken, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { isObservable, Observable, of } from 'rxjs';\r\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\r\nimport { first, map, switchMap } from 'rxjs/operators';\r\nimport { mapArray } from '../../rxjs/rxjs-operators';\r\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\r\nimport { defaultShareReplay } from '../../rxjs';\r\nimport { get, set } from 'lodash';\r\n\r\nexport class TableBuilder<T = any> {\r\n\r\n metaData$: Observable<MetaData<T>[]>;\r\n constructor(private data$: Observable<T[]>, metaData$?: Observable<MetaData<T,any>[]> | MetaData<T,any>[], settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\r\n this.data$ = this.data$.pipe(defaultShareReplay());\r\n this.metaData$ = metaData$ ?\r\n (isObservable(metaData$) ? metaData$ : of(metaData$ )).pipe(defaultShareReplay()) \r\n :\r\n data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\r\n const s = isObservable(settings) ? settings : of(settings);\r\n this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\r\n }\r\n settings : Observable<GeneralTableSettings>;\r\n getData$(): Observable<any[]> {\r\n return this.metaData$.pipe(\r\n switchMap( metaData => this.data$.pipe(\r\n mapArray( data => this.cleanRecord(data, metaData ) )\r\n ))\r\n );\r\n }\r\n\r\n createMetaData(obj: any): MetaData [] {\r\n return Object.keys(obj ?? {})\r\n .map( key => ({\r\n key,\r\n fieldType: FieldType.Unknown,\r\n order: -1\r\n }));\r\n }\r\n\r\n cleanVal(val: any, metaData: MetaData): any {\r\n switch ( metaData.fieldType ) {\r\n case FieldType.Currency:\r\n case FieldType.Number:\r\n const num = Number( val );\r\n return isNaN(num) || val == null ? null : num;\r\n case FieldType.Date:\r\n const date = Date.parse(val);\r\n if(isNaN(date)){\r\n return null;\r\n }\r\n const d = new Date(date);\r\n d.setHours(0,0,0,0);\r\n return d;\r\n case FieldType.DateTime: \r\n const dateTime = Date.parse(val);\r\n if(isNaN(dateTime)){\r\n return null;\r\n }\r\n const dt = new Date(dateTime);\r\n if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\r\n return dt;\r\n }\r\n if(metaData.additional?.dateTimeOptions?.includeSeconds){\r\n dt.setMilliseconds(0);\r\n return dt;\r\n }\r\n dt.setSeconds(0, 0);\r\n return dt;\r\n }\r\n return val;\r\n }\r\n\r\n cleanRecord( record: T, metadata: MetaData []): T {\r\n const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\r\n const val = this.cleanVal(get(record, curr.key), curr);\r\n if(val !== undefined) {\r\n set(prev as {}, curr.key, val);\r\n }\r\n return prev;\r\n }, {...record} as T )\r\n return {...record, ...cleaned};\r\n }\r\n}\r\n\r\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\r\n reportDef$ = reportDef$.pipe(defaultShareReplay());\r\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\r\n};\r\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\r\nimport { get } from 'lodash';\r\n\r\n// State\r\nexport class AppStatusState {\r\n readonly ActionStatusBar!: ActionStatus[];\r\n}\r\n\r\nexport interface StatusState {\r\n ids: string[];\r\n entities: {[id: string]: ActionStatus};\r\n}\r\n\r\nexport class ActionStatus {\r\n id!: string;\r\n displayName?: string;\r\n status!: serverStatusTypes;\r\n responsePayload?: any;\r\n}\r\n\r\nconst InitialState: StatusState = {\r\n ids: [],\r\n entities: {}\r\n};\r\n\r\nexport enum serverStatusTypes {\r\n notStarted = 0,\r\n inProgress = 1,\r\n success = 2,\r\n error = 3\r\n}\r\n\r\n// Entity and Selectors\r\nexport const statusAdapter = createEntityAdapter<ActionStatus>();\r\nexport interface State extends EntityState<ActionStatus> {}\r\nexport const initialState: StatusState = statusAdapter.getInitialState(InitialState);\r\n\r\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal\r\n} = statusAdapter.getSelectors(getStatusState);\r\n\r\nexport const selectEntity = (id: string) => createSelector(\r\n selectEntities,\r\n (entities: any) => entities[id]\r\n);\r\n\r\n// Reducers\r\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\r\n\r\n const actionStatus: ActionStatus = get(action, 'payload.actionStatus' );\r\n\r\n if ( actionStatus ) {\r\n if ( state.ids.find(id => id === actionStatus.id) ) {\r\n const modifiedObj = {...state.entities[actionStatus.id] };\r\n modifiedObj.status = actionStatus.status;\r\n modifiedObj.responsePayload = actionStatus.responsePayload;\r\n return statusAdapter.upsertOne( modifiedObj, state);\r\n } else {\r\n return statusAdapter.addOne(actionStatus , state);\r\n }\r\n\r\n }\r\n return state;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { actionStatusReducer } from '../ngrx';\r\nimport { StoreModule } from '@ngrx/store';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature('ActionStatus', actionStatusReducer),\r\n ]\r\n})\r\nexport class NgrxExtModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\r\nimport { delayOn } from '../../rxjs';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'lib-action-state-spinner',\r\n templateUrl: './action-state-spinner.component.html',\r\n styleUrls: ['./action-state-spinner.component.css'],\r\n standalone: true,\r\n imports: [AsyncPipe, MatProgressSpinnerModule]\r\n})\r\nexport class ActionStateSpinnerComponent implements OnInit {\r\n\r\n @Input() status$!: Observable<ActionStatus>;\r\n serverActionStatus$!: Observable<ActionStatus>;\r\n serverStatusTypes = serverStatusTypes;\r\n\r\n ngOnInit() {\r\n this.serverActionStatus$ = this.status$.pipe(\r\n delayOn( a => a.status === serverStatusTypes.inProgress , 500)\r\n );\r\n }\r\n}\r\n","@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress){\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n ActionStateSpinnerComponent,\r\n ],\r\n exports: [\r\n ActionStateSpinnerComponent,\r\n ]\r\n})\r\nexport class ActionStateUiModule { }\r\n","/*\r\n * Public API Surface of action-state\r\n */\r\n\r\nexport * from './ngrx';\r\nexport * from './ngrx-ext/ngrx-ext.module';\r\nexport * from './action-state-ui/action-state-ui.module';\r\nexport * from './action-state-spinner/action-state-spinner.component';\r\n","import { APP_INITIALIZER, makeEnvironmentProviders } from \"@angular/core\";\r\nimport { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\ntype Cache = {\r\n [key: string]: { [key: string]: any }[];\r\n}\r\n\r\nclass AppStoreCache {\r\n cache: Cache = {};\r\n isInCache = (props: any, actionableSelectorId: string): boolean => {\r\n if(typeof props != 'object') props = { props };\r\n\r\n let itemsInCache = this.cache[actionableSelectorId] = this.cache[actionableSelectorId] || [];\r\n\r\n if(itemsInCache.some(itemInCache => shallowEquals(itemInCache, props))){\r\n return true;\r\n }\r\n\r\n itemsInCache.push(props);\r\n return false;\r\n }\r\n}\r\n\r\nlet _store: Store<any>;\r\nlet _cache: AppStoreCache;\r\n\r\nexport const clearActionableSelectorRequestCache = () => _cache.cache = {};\r\n\r\nconst setStore = (store: Store) => {\r\n if(store instanceof Store) _store = store;\r\n};\r\n\r\nexport function setUpStoreFactory(store: Store){\r\n _cache = new AppStoreCache();\r\n return () => new Promise((resolve, reject) => {\r\n setStore(store);\r\n resolve(null);\r\n })\r\n}\r\n\r\n/**\r\n * Creates a selector that can dispatch an action if conditions are met.\r\n * Note: The props of the selector factory must include the props of the action.\r\n * @param selectorFactory A method that returns selector.\r\n * @param action The action that will be dispatched when conditions are met.\r\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\r\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\r\n */\r\nexport const createActionableSelector = <State, Result, Props = any>(\r\n selectorFactory: (props?: Props) => MemoizedSelector<State, Result>,\r\n action: ActionReturner<Props | undefined>,\r\n dispatchIf: (data: Result) => boolean = defaultFilter,\r\n): (props?: Props) => ActionableMemoizedSelector<State, Result> => {\r\n const id = uuid();\r\n const slctr = (props?: Props) => createSelector(\r\n selectorFactory(props),\r\n (selected: Result) => {\r\n if(dispatchIf(selected) && !_cache.isInCache(props, id)){\r\n queueMicrotask(() => _store.dispatch(action(props)));\r\n }\r\n return selected;\r\n }\r\n ) as ActionableMemoizedSelector<State, Result>;\r\n return slctr;\r\n}\r\n\r\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\r\n\r\nexport type ActionReturner<Props> = (props: Props) => Action;\r\n\r\nexport function defaultFilter(data: any) {\r\n return data == null || data == undefined;\r\n}\r\n\r\nconst shallowEquals = (cachedItem: object, newItem: object): boolean => {\r\n const cachedItemKeys = Object.keys(cachedItem);\r\n const secondKeys = Object.keys(newItem);\r\n if(cachedItemKeys.length !== secondKeys.length) {\r\n return false;\r\n }\r\n for(let index = 0; index < cachedItemKeys.length; index++) {\r\n const currentKey = cachedItemKeys[index];\r\n if(cachedItem[currentKey] !== newItem[currentKey]){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function provideActionableSelector(){\r\n return makeEnvironmentProviders([\r\n { provide: APP_INITIALIZER, useFactory: setUpStoreFactory, multi: true, deps: [Store] },\r\n ])\r\n}\r\n","/*\r\n * Public API Surface of http-request-state\r\n */\r\n\r\nexport * from './http-request-state/directives';\r\nexport * from './http-request-state/rxjs';\r\nexport * from './http-request-state';\r\n\r\n\r\nexport * from './table-builder/table-builder.module';\r\n\r\nexport * from './table-builder/classes/TableBuilderConfig';\r\n\r\nexport * from './table-builder/interfaces/report-def';\r\n\r\nexport * from './table-builder/classes/MatTableObservableDataSource';\r\n\r\nexport * from './table-builder/classes/table-builder';\r\n\r\nexport * from './table-builder/classes/table-builder-general-settings';\r\n\r\nexport * from './table-builder/components';\r\n\r\nexport * from './table-builder/directives';\r\n\r\nexport {FilterType} from './table-builder/enums/filterTypes';\r\n\r\n\r\nexport * from './rxjs'\r\n\r\nexport * from './utilities'\r\n\r\nexport * from './action-state';\r\n\r\nexport * from './ngrx';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","merge","i1.TableStore","tap","uuid","i1","i2.TableWrapperDirective","takeUntil","i2.DialogService","switchMap","i2","i4","i5","i6","i7","i8","i10","i11","i3","i2.WrapperFilterStore","i9","i1.TransformCreator","i3.TableStore","i4.TableTemplateService","delay","i2.TableStore","first","i2.SortMenuComponentStore","scan","i3.MultiSortDirective","i4.GroupByListComponent","i5.FilterChipsComponent","i6.GenFilterDisplayerComponent","i7.GenColDisplayerComponent","i8.SortMenuComponent","i9.GenericTableComponent","i10.StopPropagationDirective","i11.ClickEmitterDirective","i12.DialogDirective","i13","i15","i16","i17","i18"],"mappings":"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"}