@one-paragon/angular-utilities 0.0.12 → 0.0.13
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.
- package/esm2020/utilities/directives/dialog.mjs +13 -5
- package/fesm2015/one-paragon-angular-utilities.mjs +13 -5
- package/fesm2015/one-paragon-angular-utilities.mjs.map +1 -1
- package/fesm2020/one-paragon-angular-utilities.mjs +13 -4
- package/fesm2020/one-paragon-angular-utilities.mjs.map +1 -1
- package/package.json +1 -1
- package/utilities/directives/dialog.d.ts +4 -4
|
@@ -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/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.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/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.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/enums/filterTypes.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../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/utilities/directives/styler.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.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/directives/custom-cell-directive.ts","../../../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/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/utilities/directives/auto-focus.directive.ts","../../../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-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/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/material.module.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../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/ngrx/selectors.ts","../../../projects/angular-utilities/src/table-builder/ngrx/actions.ts","../../../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/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/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/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/ngrx/reducer.ts","../../../projects/angular-utilities/src/table-builder/ngrx/effects.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.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 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 HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\n export enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse,\r\n cancelPrevious,\r\n }\r\n export interface RequestStateOptions {\r\n strategy?: HttpRequestStrategy\r\n }\r\n\r\n export 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 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?: HttpRequestState<T>;\r\n state?: HttpRequestState<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]' })\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\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]' })\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]' })\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]' })\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, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\n\r\n@Directive({ selector: '[httpSuccessState]'})\r\nexport class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\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\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","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 providers:[],\r\n declarations: [\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 {\r\n\r\n}","import { Observable, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { 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\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy !== HttpRequestStrategy.concurrent) {\r\n return switchMap( (params: [...TParam]) => this.createRequest(...params) );\r\n }\r\n return mergeMap( (params: [...TParam]) => 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(pluck('response'));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(pluck('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\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 }\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 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 }\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\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","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 { Dictionary } from './dictionary';\nimport { PipeTransform, TemplateRef } from '@angular/core';\n\n\nexport enum FieldType {\n Unknown = 0,\n Date = 1,\n Link = 2,\n ImageUrl = 3,\n Currency = 4,\n Array = 5,\n Hidden = 6,\n Number = 7,\n String = 8,\n Boolean = 9,\n PhoneNumber = 10,\n Expression = 11,\n Enum = 12,\n}\n\nexport enum SortDirection {\n asc= 'asc',\n desc= 'desc'\n}\n\nexport enum Target {\n Blank = '_blank',\n Self = '_self',\n Parent = '_parent',\n Top = '_top'\n}\n\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\n key: (keyof T | AdditionalFields[number]) & string;\n displayName?: string;\n fieldType: FieldType;\n additional?: Additional;\n order?: number;\n preSort?: SortDef;\n _internalNotUserDefined?: boolean;\n width?: string;\n noExport?: boolean;\n noFilter?: boolean;\n customCell?: boolean;\n transform?: ( (o: T, ...args: any[])=> any ) | ( (o: string, ...args: any[])=> any ) | PipeTransform;\n click?: (element: T, key: string ) => void;\n template?: TemplateRef<any>;\n}\nexport interface ReportDef<DataType = any> {\n data: DataType[];\n metaData: MetaData [];\n totalRecords?: number;\n count: number;\n}\n\nexport interface SortDef {\n direction: SortDirection;\n precedence?: number;\n}\n\nexport interface FilterOptions {\n filterableValues : string[]\n}\n\nexport interface Additional {\n base?: string;\n urlKey?: string;\n target?: Target;\n useRouterLink?: boolean;\n footer?: { type: 'sum' };\n export?: any;\n dateFormat?: string;\n filterOptions?: FilterOptions;\n styles?: Dictionary<string>;\n columnPartStyles?: {\n header?: Dictionary<string>,\n body?: Dictionary<string>,\n footer?: Dictionary<string>,\n }\n enumMap?: {[key:number]:string};\n boolean? : { \n showForFalse? : true | { icon : string },\n forTrue? : { icon : string }\n }\n}\n\nexport enum ArrayStyle {\n CommaDelimited,\n NewLine\n}\n\nexport interface ArrayAdditional extends Additional {\n metaData?: MetaData;\n limit?: number;\n arrayStyle?: ArrayStyle;\n}\n","import { flatten } from 'lodash';\nimport { Observable, combineLatest, Subscription, MonoTypeOperatorFunction, OperatorFunction } from 'rxjs';\nimport { filter, map, pairwise, startWith } from 'rxjs/operators';\n\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.map(mapFunc) ) );\n\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.filter(filterFunc) ) );\n\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n return new Observable<T>(subscriber => {\n let emitted = false;\n setTimeout(() => {\n if(!emitted) {\n subscriber.next(val);\n }\n }, 0);\n source.subscribe({\n next(x) { emitted = true; subscriber.next(x) },\n error(err) { emitted = true; subscriber.error(err) },\n complete() { emitted = true; subscriber.complete(); }\n });\n });\n }\n\n}\n\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\n return combineLatest(\n sources.map( src => src.pipe(onWait([])))\n ).pipe(\n map( res => flatten(res) )\n );\n};\n\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsciber => {\n let isOn = defaultState;\n const subscription = new Subscription();\n subscription.add( switchSource.subscribe( on => isOn = on ));\n subscription.add(source.subscribe({\n next(value) {\n if(isOn) {\n subsciber.next(value);\n }\n },\n error: error => subsciber.error(error),\n complete: () => subsciber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function skipOneWhen( skipper: Observable<any> ) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsriber => {\n const subscription = new Subscription();\n let skipNext = false;\n subscription.add(skipper.subscribe( _ => skipNext = true));\n subscription.add(source.subscribe({\n next(value) {\n if(skipNext) {\n skipNext = false;\n } else {\n subsriber.next(value);\n }\n },\n error: error => subsriber.error(error),\n complete: () => subsriber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\n return (source: Observable<T>) => {\n return source.pipe(startWith(startingValue), pairwise());\n }\n}\n\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\n return (source: Observable<T | null | undefined>) => {\n return source.pipe(filter( (o: T | null | undefined): o is T => !!o) )\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { TableState } from './TableState';\nimport { DefaultSettings } from './DefaultSettings';\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\nexport interface TableBuilderConfig {\n defaultTableState: Partial<TableState>;\n export?: TableBuilderExport;\n defaultSettings?: DefaultSettings;\n arrayInfo?: ArrayAdditional;\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\n}\n\nexport interface TableBuilderExport {\n dateFormat?: string;\n onSave?: (event?: any) => void;\n}\n\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'phone'})\nexport class PhoneNumberPipe implements PipeTransform {\n\n transform(phoneNum: string): any {\n if (phoneNum) {\n phoneNum = phoneNum.replace(/\\D/g,'');\n if(phoneNum[0] === '1') {\n phoneNum = phoneNum.substring(1);\n }\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\n }\n }\n}\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\nimport { FieldType, MetaData } from '../interfaces/report-def';\nimport { DatePipe, CurrencyPipe } from '@angular/common';\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\n\nexport function isPipe(o : any ): o is PipeTransform {\n return typeof ((o as PipeTransform).transform ) === 'function';\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TransformCreator {\n constructor(\n private datePipe: DatePipe,\n private currencyPipe: CurrencyPipe,\n private phonePipe: PhoneNumberPipe,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n ) {}\n createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any) {\n if(metaData.transform) {\n if(isPipe(metaData.transform)){\n return metaData.transform.transform;\n }\n return metaData.transform\n }\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\n return this.config.transformers[metaData.fieldType]!;\n }\n switch(metaData.fieldType) {\n case FieldType.Date:\n const dateFormat = metaData.additional?.dateFormat ?? this.config.defaultSettings?.dateFormat ?? 'shortDate';\n return (value: any) => this.datePipe.transform(value, dateFormat);\n case FieldType.Currency:\n return this.currencyPipe.transform;\n case FieldType.PhoneNumber:\n return this.phonePipe.transform;\n }\n return (value: any) => value;\n }\n\n}\n","import { merge } from \"lodash\";\n\nexport class GeneralTableSettings {\n constructor(settings? : TableBuilderSettings){\n if(settings){\n merge(this.headerSettings,settings.headerSettings);\n merge(this.footerSettings,settings.footerSettings);\n }\n }\n headerSettings = new TableWrapperHeaderSettings();\n footerSettings = new TableWrapperFooterSettings();\n}\n\nexport interface TableBuilderSettings {\n headerSettings? : Partial<TableWrapperHeaderSettings>;\n footerSettings? : Partial<TableWrapperFooterSettings>;\n}\n\nexport class TableWrapperHeaderSettings {\n hideExport = false\n hideFilter = false\n hideColumnSettings = false\n hideSort = false\n collapse = false\n showTitleWhenCollapsed = true;\n}\n\nexport class TableWrapperFooterSettings {\n collapse = false\n}\n\nexport class PesrsistedTableSettings {\n constructor(tableSettings? :GeneralTableSettings | PesrsistedTableSettings){\n if (tableSettings){\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseHeader;\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseFooter;\n }\n }\n collapseHeader = false;\n collapseFooter = false;\n}\n\nexport class NotPersisitedTableSettings {\n constructor(tableSettings? :GeneralTableSettings){\n if(tableSettings){\n this.hideExport = tableSettings.headerSettings.hideExport;\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\n this.hideFilter = tableSettings.headerSettings.hideFilter;\n this.hideSort = tableSettings.headerSettings.hideSort;\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\n }\n }\n hideExport = true\n hideFilter = true\n hideColumnSettings = true\n hideSort = true\n showTitleWhenHeaderCollapsed = true;\n}\n","import { FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n pageSize?: number;\r\n filters: Dictionary<FilterInfo>;\r\n sorted : Sort [];\r\n userDefined : {order:Dictionary<number>,widths:Dictionary<number>,table:{width?:number}};\r\n persistedTableSettings : PesrsistedTableSettings;\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n metaData: Dictionary<MetaData>;\r\n notPersisitedTableSettings : NotPersisitedTableSettings;\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{order:{},widths:{},table:{}},\r\n persistedTableSettings : new PesrsistedTableSettings(),\r\n notPersisitedTableSettings : new NotPersisitedTableSettings(),\r\n pageSize: 10,\r\n};\r\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\nimport { v4 as uuid } from 'uuid';\nimport { Observable } from 'rxjs';\nimport { defaultTableState, PersistedTableState, TableState } from './TableState';\nimport { Injectable, Inject } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\nimport { FilterInfo } from './filter-info';\nimport { Sort, SortDirection } from '@angular/material/sort' ;\nimport { ComponentStore } from '@ngrx/component-store' ;\nimport update from 'immutability-helper';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { last, map, tap } from 'rxjs/operators'\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { notNull } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TableStore extends ComponentStore<TableState> {\n\n constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\n super( { ...defaultTableState, ...config.defaultTableState});\n }\n\n getSavableState() : Observable<PersistedTableState> {\n return this.state$.pipe(\n map( s => {\n const savableState = {...s} as Partial<TableState>\n delete savableState.metaData;\n delete savableState.notPersisitedTableSettings;\n return savableState as PersistedTableState;\n })\n );\n }\n\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\n this.effect(() => srcObservable.pipe(\n tap(func)\n ))\n }\n\n onLast(callback: (state: TableState) => void ) {\n this.on(this.state$.pipe(last()),callback);\n }\n\n readonly metaData$ = this.select( state => state.metaData);\n\n readonly metaDataArray$ = this.select(\n this.state$,\n orderMetaData\n );\n\n getMetaData$ = (key: string) : Observable<MetaData> => {\n return this.select( state => state.metaData[key] ).pipe(\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\n notNull())\n }\n\n getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\n getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\n\n private displayedColumns = (state:TableState) => orderMetaData(state).map(md => md.key)\n .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\n readonly displayedColumns$ = this.select(this.displayedColumns);\n readonly hideColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\n }));\n\n readonly resetState = this.updater((state) => {\n const hiddenColumns = Object.values(state.metaData)\n .filter(md => md.fieldType === FieldType.Hidden)\n .map(md => md.key);\n const sorted = this.createPreSort(state.metaData);\n return update(state, {\n hiddenKeys: { $set: [...hiddenColumns] },\n filters: { $set: {} },\n sorted: {$set: sorted},\n userDefined : {$set: {widths:{},order:{},table:{}}},\n });\n });\n\n readonly showColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\n }));\n\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\n\n var hiddenKeysSet= new Set<string>(\n [\n ...displayCols.filter(col => !col.visible).map(col => col.key),\n ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\n ]\n );\n\n return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\n });\n\n\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\n const userDefinedWidths = {...state.userDefined.widths};\n colWidths.forEach(cw => {\n userDefinedWidths[cw.key] = cw.widthInPixel;\n });\n return {...state, userDefined: {...state.userDefined,widths:userDefinedWidths}};\n });\n\n setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\n const {newOrder ,oldOrder} = moved;\n const mdsArr = orderViewableMetaData(state);\n moveItemInArray(mdsArr,oldOrder,newOrder);\n\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\n aggregate[current.key] = index;\n return aggregate\n },{});\n return({...state, userDefined:{...state.userDefined,order:userDefinedOrder}})\n })\n\n\n readonly filters$ = this.select(state => state.filters );\n\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | undefined> => {\n return this.select( state => state.filters[filterId] );\n }\n readonly addFilter = this.updater( (state, filter: FilterInfo) => {\n return this.addFiltersToState(state, [filter]);\n });\n\n readonly addFilters = this.updater((state,filters:FilterInfo[])=>{\n return this.addFiltersToState(state, filters);\n })\n\n private addFiltersToState = (state:TableState,filters:FilterInfo[]) : TableState => {\n const filtersObj = filters\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\n .reduce((filtersObj: {[k: string]: any},filter)=>{\n if (!filter.filterId) {\n filter.filterId = uuid();\n }\n filtersObj[filter.filterId] = filter;\n return filtersObj;\n },{});\n return {\n ...state,\n filters : {...state.filters, ...filtersObj }\n };\n }\n\n readonly removeFilter = this.updater( (state, filterId: string) =>\n update(state, {filters: {$unset : [filterId ]}})\n );\n\n readonly removeFilters = this.updater( (state, filterIds: string[]) =>\n update(state, {filters: {$unset : [...filterIds ]}})\n );\n\n readonly clearFilters = this.updater((state)=>\n ({...state,filters:{}}))\n\n\n readonly sorted$ = this.select(state => state.sorted);\n\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\n .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\n }\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\n const sortArray = state.sorted.filter( s => s.active !== key );\n if(direction) {\n sortArray.unshift({active: key, direction});\n }\n return {\n ...state,\n sorted: sortArray,\n };\n });\n\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\n return {\n ...state,\n sorted: sortArray,\n };\n })\n\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\n const metaData = state.metaData;\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted : this.createPreSort(metaData);\n return {...state, ...incomingTableState, metaData , sorted};\n }\n\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({...state,pageSize}));\n\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\n\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\n setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\n\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\n return {\n key: orig.key,\n displayName: merge.displayName ?? orig.displayName,\n fieldType: merge.fieldType || orig.fieldType,\n additional: {...orig.additional, ...merge.additional},\n order: merge.order ?? orig.order,\n preSort: merge.preSort ?? orig.preSort,\n _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\n width: merge.width ?? orig.width,\n noExport: merge.noExport || orig.noExport,\n noFilter: merge.noFilter || orig.noFilter,\n customCell: merge.customCell ?? orig.customCell,\n transform: merge.transform ?? orig.transform,\n click: merge.click ?? orig.click,\n };\n }\n\n readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\n const metaData = ( Array.isArray(md) ? [...md] : [md] )\n .reduce((prev: Dictionary<MetaData>,curr) => {\n if(prev[curr.key]) {\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\n } else {\n prev[curr.key] = curr;\n }\n return prev;\n } ,{});\n let sorted = state.sorted;\n if(sorted.length === 0) {\n sorted = this.createPreSort(metaData);\n }\n const order = this.initializeOrder(state, metaData);\n return {...state, metaData, sorted, userDefined:{...state.userDefined,order:order}};\n });\n\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\n let userDefinedOrder = state.userDefined.order;\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\n return {}\n }\n return userDefinedOrder;\n }\n\n toggleCollapseHeader = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n toggleCollapseFooter = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\n const s:TableState = {\n ...state,\n persistedTableSettings : new PesrsistedTableSettings(settings),\n notPersisitedTableSettings : new NotPersisitedTableSettings(settings)\n };\n return s;\n });\n\n tableSettings$ = this.select(state => {\n const ts : PesrsistedTableSettings & NotPersisitedTableSettings =\n {...state.persistedTableSettings,...state.notPersisitedTableSettings};\n return ts;\n })\n}\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\n\nexport const orderMetaData = (state:TableState) => {\n const userOrderArr = Object.entries(state.userDefined.order);\n return userOrderArr.length ?\n Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\n :\n Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\n}\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 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 { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'func'\n})\nexport class FunctionPipe implements PipeTransform {\n transform(func: ( (...args: any[])=> any ) | string, ...args: any[]): any {\n if(typeof func === 'string') {\n const [instance, ...tail] = args;\n const method = instance[func].bind(instance);\n return method(...tail);\n }\n return func(...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'spaceCase'})\nexport class SpaceCasePipe implements PipeTransform {\n transform(value: string): string {\n return spaceCase(value);\n }\n}\n\n/**\n * Adds a space before uppercase letters that either\n * 1. follows a lowercase letter or digit\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\n * \n * Uppercases the first digit\n * \n * Turns underscores into spaces\n */\nexport function spaceCase(value: string){\n return value?.replace(/(?<=[a-z0-9])([A-Z])|(?<=[a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, ' $1$2')\n // uppercase the first character\n .replace(/^./, str => str.toUpperCase() );\n}\n","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\n\n@Component({\n templateUrl: './initialization-component.html'\n})\nexport class InitializationComponent {\n @ViewChild('boolean', {static: true}) booleanTemplate! : TemplateRef<any>;\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\n @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\n @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\n @ViewChild('expression', {static: true}) expressionTemplate! : TemplateRef<any>;\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\n @ViewChild('enum', {static: true}) enumTemplate! : TemplateRef<any>;\n\n}\n","<ng-template #boolean let-element='element' let-metaData='metaData'>\n <span>\n <mat-icon *ngIf=\"element[metaData.key]\">\n {{!!metaData.additional.boolean?.forTrue ? metaData.additional.boolean.forTrue.icon: 'check'}}\n </mat-icon>\n <mat-icon *ngIf=\"!element[metaData.key] && !!metaData.additional.boolean?.showForFalse\">\n {{metaData.additional.boolean.showForFalse === true ? 'clear' : metaData.additional.boolean.showForFalse.icon}}\n </mat-icon>\n </span>\n</ng-template>\n<ng-template #link let-element='element' let-metaData='metaData'>\n <a *ngIf=\"metaData.additional.useRouterLink; else hrefLink\" target=\"{{metaData.additional?.target || '_blank'}}\"\n [routerLink]=\"[metaData.additional.base, metaData.additional.urlKey ? element[metaData.additional.urlKey] : element[metaData.key]]\">\n {{element[metaData.key]}}\n </a>\n <ng-template #hrefLink>\n <a target=\"{{metaData.additional?.target || '_blank'}}\"\n href=\"{{metaData.additional.base}}{{metaData.additional.urlKey? element[metaData.additional.urlKey] : element[metaData.key]}}\">\n {{element[metaData.key]}}\n </a>\n </ng-template>\n</ng-template>\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\n <span>\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\n </span>\n</ng-template>\n<ng-template #currency let-element='element' let-metaData='metaData' >\n <span [class.negative-currency]=\"element[metaData.key] < 0\">\n {{ element[metaData.key] | currency }}\n </span>\n</ng-template>\n<ng-template #array let-element='element' let-metaData='metaData'>\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\n</ng-template>\n<ng-template #expression let-element='element' let-metaData='metaData'>\n <span>{{ metaData.transform | func : element }}</span>\n</ng-template>\n<ng-template #enum let-element='element' let-metaData='metaData' >\n <span>{{ metaData.additional.enumMap[element[metaData.key]] | spaceCase }}</span>\n</ng-template>\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform'>\n <span>{{ transform | func : element[metaData.key] }}</span>\n</ng-template>\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\nimport { Injectable, TemplateRef } from \"@angular/core\";\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\nimport { FieldType } from \"../interfaces/report-def\";\n\n@Injectable({providedIn: 'root'})\nexport class TableTemplateService {\n instance: InitializationComponent;\n templates;\n\n initTemplates() {\n this.templates = { };\n this.templates[FieldType.Array] = this.instance.arrayTemplate;\n this.templates[FieldType.Boolean] = this.instance.booleanTemplate;\n this.templates[FieldType.Currency] = this.instance.currencyTemplate;\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\n this.templates[FieldType.Expression] = this.instance.expressionTemplate;\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\n this.templates[FieldType.Link] = this.instance.linkTemplate;\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\n this.templates[FieldType.String] = this.instance.defaultTemplate;\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\n this.templates[FieldType.Enum] = this.instance.enumTemplate;\n }\n getTemplate(fieldType: FieldType) : TemplateRef<any> {\n return this.templates[fieldType];\n }\n\n constructor(resolver: ComponentFactoryResolver, i: Injector) {\n const factory = resolver.resolveComponentFactory(InitializationComponent);\n const c = factory.create(i);\n this.instance = c.instance;\n this.initTemplates();\n }\n}\n","\nexport enum FilterType {\n NumberEquals = 'Equals',\n NumberNotEqual = 'Does Not Equal',\n NumberGreaterThan = 'Greater Than',\n NumberLessThan = 'Less Than',\n NumberBetween = 'Between',\n StringEquals = 'Equals',\n StringContains = 'Contains',\n StringDoesNotContain = 'Does Not Contain',\n StringStartWith = 'Start With',\n StringEndsWith = 'Ends With',\n DateIsOn = 'Is on',\n DateIsNotOn = 'Is Not On',\n DateOnOrAfter = 'On or After',\n DateOnOrBefore = 'On or Before',\n DateBetween = 'Between',\n BooleanEquals = 'Is',\n IsNull = 'Is Blank',\n Or = 'Or',\n And = 'And',\n In = 'In',\n}\n\nexport const NumberFilterMap:FilterToFiltersMap = {\n [FilterType.NumberEquals]: [FilterType.NumberEquals],\n [FilterType.NumberNotEqual]: [FilterType.NumberNotEqual],\n [FilterType.NumberGreaterThan]: [FilterType.NumberGreaterThan],\n [FilterType.NumberLessThan]: [FilterType.NumberLessThan],\n [FilterType.NumberBetween]: [FilterType.NumberBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const StringFilterMap:FilterToFiltersMap = {\n [FilterType.StringEquals]: [FilterType.StringEquals],\n [FilterType.StringContains]: [FilterType.StringContains],\n [FilterType.StringDoesNotContain]: [FilterType.StringDoesNotContain],\n [FilterType.StringStartWith]: [FilterType.StringStartWith],\n [FilterType.StringEndsWith]: [FilterType.StringEndsWith],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const DateFilterMap:FilterToFiltersMap = {\n [FilterType.DateIsOn]: [FilterType.DateIsOn],\n [FilterType.DateIsNotOn]: [FilterType.DateIsNotOn],\n [FilterType.DateOnOrAfter]: [FilterType.DateOnOrAfter],\n [FilterType.DateOnOrBefore]: [FilterType.DateOnOrBefore],\n [FilterType.DateBetween]: [FilterType.DateBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const BooleanFilterMap :FilterToFiltersMap = {\n [FilterType.BooleanEquals]: [FilterType.BooleanEquals],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const EnumFilterMap : FilterToFiltersMap = {\n [FilterType.IsNull] : [FilterType.IsNull],\n [FilterType.In] : [FilterType.In]\n}\n\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType[]}>;\n","import {Directive, HostListener} from \"@angular/core\";\n\n@Directive({\n selector: \"[stop-propagation]\"\n})\nexport class StopPropagationDirective\n{\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: any): void\n {\n event.stopPropagation();\n }\n\n @HostListener(\"mousedown\", [\"$event\"])\n public onMousedown(event: any): void\n {\n event.stopPropagation();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../../classes/table-store';\nimport { Dictionary } from '../../../interfaces/dictionary';\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-in-list-filter',\n template: `\n <div *ngFor=\"let item of keyValues$ | async| keyvalue\" >\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\n </mat-checkbox>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InListFilterComponent,\n multi: true\n }],\n})\nexport class InListFilterComponent implements ControlValueAccessor {\n constructor(private ref: ChangeDetectorRef, private tableState: TableStore) {}\n value: string[] = [];\n FieldType = FieldType;\n writeValue(obj: string[]): void {\n this.value = obj;\n\n if(this.value) {\n this.selectedKeys = this.value.map( f => f );\n }\n this.ref.markForCheck();\n }\n\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n @Input() key!: string;\n\n keyValues$! : Observable<Dictionary<string>>;\n selectedKeys : string[] = [];\n metaData!: MetaData;\n\n ngOnInit() {\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\n tap(metaData => this.metaData = metaData),\n map( metaData => {\n if(metaData.additional?.filterOptions?.filterableValues ) {\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\n } else {\n if(metaData.fieldType === FieldType.Enum ) {\n return metaData.additional!.enumMap;\n }\n }\n return {};\n })\n );\n }\n\n selectFilterChanged($event, val) {\n if($event.checked) {\n this.selectedKeys.push(val);\n } else {\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\n }\n\n this.value = this.selectedKeys;\n this.onChange(this.value);\n }\n\n}\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 { MatMenuTrigger } from '@angular/material/menu';\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})\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 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 disableRipple [matMenuTriggerFor]=\"menu\" style=\"height:16px;\" [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)=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)\">\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' ></tb-in-list-filter>\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=\"example-full-width font\" style=\"padding: 0 16px\">\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()\">\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 style=\"padding: 0 16px\">\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>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberLessThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberGreaterThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.NumberEquals)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\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 style=\"padding: 0 16px\">\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\">\r\n <mat-form-field style=\"padding: 0 16px\" class=\"font auto-width\" stop-propagation >\r\n <span matPrefix>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrAfter)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrBefore)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.DateIsOn)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n =</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 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 { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\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 { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\nimport { fromEvent, of } from \"rxjs\";\nimport { filter, first, map, shareReplay, switchMap, takeUntil, tap } from \"rxjs/operators\";\nimport { TableStore } from \"../classes/table-store\";\n\n@Directive({\n selector: \"[resizeColumn]\",\n})\nexport class ResizeColumnDirective implements OnInit{\n @Input(\"resizeColumn\") resizable!: boolean;\n\n @Input() key!: string;\n constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\n\n ngOnInit(){\n if (this.resizable){\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\n const resizer = this.createResizerSpanInColumnHead(columnHead);\n\n const aggregateMouseEventsMapped$ = this.mouseDownThroghMouseUpEventMapper(resizer,columnHead,table)\n\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\n filter(({mouseMove})=>!!mouseMove.buttons),\n map( ({mouseDownData,mouseMove}) => {\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\n return ({\n key:this.key,\n widthInPixel:newColumnWidth,\n tableSize:newTableWidth,\n })\n }),\n shareReplay({bufferSize:1,refCount:true})\n );\n\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\n ));\n\n this.store.setTableWidth(resizeColsData$.pipe(\n map(resizeData => resizeData.tableSize )));\n }\n\n }\n\n createResizerSpanInColumnHead(columnHead:HTMLElement){\n const resizer = this.renderer.createElement(\"span\");\n this.renderer.addClass(resizer, \"resize-holder\");\n resizer.style['cursor']='col-resize';\n resizer.style['user-select']='none';\n resizer.style['width']='10px';\n resizer.style['height']='100%';\n resizer.style['position']='absolute';\n resizer.style['right']='0';\n resizer.style['top']='0';\n resizer.style['z-index']='1';\n this.renderer.appendChild(columnHead, resizer);\n return resizer;\n }\n\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\n const columnHead: HTMLElement = this.el.nativeElement;\n const row = this.renderer.parentNode(columnHead);\n const table = this.renderer.parentNode(row);\n return ({table,columnHead})\n }\n\n mouseDownThroghMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\n .pipe(\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\n map( mouseMove => ({mouseDownData, mouseMove})),\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\n ) ),\n )\n }\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\n map(event => ({\n startPageX: event.pageX,\n startColumnWidth: this.getElementWidth(columnHead),\n startTableWidth: this.getElementWidth(table),\n }))\n );\n }\n\n calculateNewWidths(mouseDownData:MouseDowmData,mouseMove:MouseEvent):{newTableWidth:number,newColumnWidth:number}{\n const change = (mouseMove.pageX - mouseDownData.startPageX );\n let newColumnWidth = mouseDownData.startColumnWidth + change;\n if(newColumnWidth < 1){\n newColumnWidth = 1;\n }\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\n return ({newTableWidth,newColumnWidth})\n }\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\n\n}\ninterface MouseDowmData{\n startPageX:number,\n startColumnWidth:number,\n startTableWidth:number,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MetaData } from '../interfaces/report-def';\nimport {sumBy} from 'lodash';\n\n@Pipe({ name: 'columnTotal' })\nexport class ColumnTotalPipe implements PipeTransform {\n transform(data: any[], metaData: MetaData) {\n switch (metaData.additional!.footer!.type) {\n case 'sum':\n return sumBy(data, metaData.key);\n }\n return null;\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren } from '@angular/core';\nimport { FieldType, MetaData } from '../../interfaces/report-def';\nimport { MatColumnDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { CustomCellDirective } from '../../directives';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { TransformCreator } from '../../services/transform-creator';\nimport { TableStore } from '../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { TableTemplateService } from '../../services/table-template-service';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { notNull, previousAndCurrent } from '../../../rxjs/rxjs-operators';\n\ninterface widthStyle {\n flex?: string;\n maxWidth?: string;\n}\n\ninterface allStyles {\n body: widthStyle;\n header: widthStyle;\n footer: widthStyle;\n}\n\n@Component({\n selector: 'tb-column-builder',\n templateUrl: './column-builder.component.html',\n styleUrls: ['./column-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnBuilderComponent implements OnInit {\n FieldType = FieldType;\n filter!: Partial<FilterInfo>;\n @Input() metaData!: MetaData\n @Input() customCell!: CustomCellDirective;\n @Input() data$!: Observable<any[]>;\n\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\n outerTemplate!: TemplateRef<any>;\n innerTemplate!: TemplateRef<any>;\n transform!: (o: any, ...args: any[])=> any ;\n\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\n\n\n constructor(\n private transformCreator: TransformCreator,\n private table: MatTable<any>,\n public state: TableStore,\n private templateService: TableTemplateService,\n ) { }\n\n getInnerTemplate() :TemplateRef<any> {\n if(this.metaData.template) return this.metaData.template;\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\n return this.templateService.getTemplate(this.metaData.fieldType);\n }\n\n getOuterTemplate() {\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\n }\n\n ngOnInit() {\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\n const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\n previousAndCurrent(0),\n map(this.mapWidth),\n );\n const fullMetaStyles = this.metaData.additional?.styles ?? {};\n this.styles$ = width$.pipe(map(width => {\n const styles: allStyles = {\n header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\n footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\n body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\n };\n return styles;\n }));\n }\n\n ngAfterViewInit() {\n this.outerTemplate = this.getOuterTemplate();\n this.innerTemplate = this.getInnerTemplate();\n this.transform = this.transformCreator.createTransformer(this.metaData);\n this.table.addColumnDef(this.columnDef);\n }\n\n cellClicked(element: any, key: string) {\n if(this.metaData.click) {\n this.metaData.click(element,key);\n }\n }\n\n mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\n\n if( currentUserDefinedWidth ){\n return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\n } if( wasReset() ){\n return ({flex:'1'});\n }\n return ({});\n function wasReset(){\n return previousUserDefinedWidth >=0 && currentUserDefinedWidth == null;\n }\n }\n\n styles$!:Observable<allStyles>\n\n}\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n <mat-cell [styler]='styles.body' (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"metaData.fieldType !== FieldType.Expression && ( element[metaData.key] == null ) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\">-</span>\n </mat-cell>\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head\" #headref >\n <div class=\"header-container\">\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (!metaData.noFilter)\" #menu [metaData]='metaData' [filter]='filter' ></tb-header-menu>\n </div>\n </mat-header-cell>\n </ng-template>\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { MatTableDataSource } from '@angular/material/table';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\n subscription?: Subscription;\n constructor(private dataSrc: Observable<T[]>) {\n super([]);\n }\n\n connect() {\n if (!this.subscription) {\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\n }\n return super.connect();\n }\n disconnect() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n super.disconnect();\n }\n}\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';\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\nimport { MatTableObservableDataSource } from './MatTableObservableDataSource'\nimport { sortData } from '../functions/sort-data-function';\nimport { MatSort } from '@angular/material/sort';\n\n\nexport function isMultiSort(sort: MatSort): sort is MultiSortDirective {\n return Array.isArray((sort as MultiSortDirective ).rules);\n}\n\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\n{\n\n constructor(dataSrc: Observable<T[]>)\n {\n super(dataSrc);\n\n const baseSort = this.sortData;\n this.sortData = ((data: T[], sort: MatSort) => isMultiSort(sort) ? sortData(data, sort.rules) : baseSort(data, sort));\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n Input,\n ElementRef,\n AfterViewInit,\n OnInit,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { asyncScheduler, merge, Observable } from 'rxjs';\nimport { delay, distinct, distinctUntilKeyChanged, map } from 'rxjs/operators';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { TableStore } from '../../classes/table-store';\n@Component({\n selector: 'tb-paginator',\n template: `\n <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\" *ngIf=\"currentPageData$ | async as pageData\">\n {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\n </div>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\n [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\n </mat-paginator>\n `,\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnInit, AfterViewInit{\n @Input() dataSource! : GenericTableDataSource<any>;\n @Input() tableElRef! : ElementRef\n @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\n currentPageData$!: Observable<CurrentPageDetails>;\n collapseFooter$!:Observable<boolean>;\n @Input() data$!: Observable<any[]>;\n\n constructor(private state : TableStore){}\n ngOnInit(){\n this.dataSource.paginator = this.paginator;\n this.ourPageEvent = true;\n this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\n this.state.setPageSize(onPagiantorPageSizeChange(this.paginator));\n this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n\n }\n ngAfterViewInit(){\n this.currentPageData$ = merge(\n this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\n this.data$.pipe(\n distinctUntilKeyChanged(\"length\"),\n delayToAllowForProperUpdate,\n map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\n );\n }\n\n paginatorChange() : void {\n if(!this.ourPageEvent){\n setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\n } else {\n this.ourPageEvent = false;\n }\n }\n ourPageEvent = false;\n\n}\n\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\n total : pageData.length\n});\n\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\n currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\n total:paginator.length})\n\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\n\ninterface CurrentPageDetails {\n currentStart:number,\n currentEnd:number,\n total:number\n}\n\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.pageSize),distinct());\n\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\n paginator._changePageSize(pageSize);\n\nconst onPagiantorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\n","import {\n Component,\n ViewChild,\n Input,\n ChangeDetectionStrategy,\n Output,\n SimpleChanges,\n OnInit,\n QueryList,\n ComponentFactoryResolver,\n ViewContainerRef,\n ElementRef,\n ComponentFactory,\n Injector,\n} from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { MatRowDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TableStore } from '../../classes/table-store';\nimport { tap, map } from 'rxjs/operators';\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { FieldType } from '../../interfaces/report-def';\nimport { notNull, previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\n\n@Component({\n selector: 'tb-generic-table',\n templateUrl: './generic-table.component.html',\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GenericTableComponent implements OnInit {\n\n @Input() data$!: Observable<any[]>;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() rows!: QueryList<MatRowDef<any>>;\n @Input() isSticky = false;\n @Input() columnBuilders!: ColumnBuilderComponent[];\n\n @Input() columnInfos!: Observable<ColumnInfo[]>;\n @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\n @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\n currentColumns!: string[];\n\n dataSource!: GenericTableDataSource<any>;\n keys: string [] = [];\n factory: ComponentFactory<ColumnBuilderComponent> ;\n injector: Injector;\n constructor(\n private sort: MatSort,\n public state: TableStore,\n componentFactoryResolver: ComponentFactoryResolver,\n private viewContainer: ViewContainerRef,\n injector: Injector,\n ) {\n this.factory = componentFactoryResolver.resolveComponentFactory(ColumnBuilderComponent);\n this.injector = Injector.create({ providers: [{provide: MatTable, useFactory: ()=> {return this.table} }], parent: injector});\n }\n\n trackByFunction = (index:number, item: any) => {\n if (!item) {\n return null;\n }\n if (this.trackBy) {\n return item[this.trackBy];\n }\n return item;\n }\n rowDefArr :MatRowDef<any>[]= [];\n columns:string [] = [];\n ngOnChanges(changes: SimpleChanges) {\n if (changes.rows && this.rows && this.myColumns.length) {\n this.initializeRowDefs([...this.rows]);\n }\n }\n\n ngOnInit() {\n if (this.SelectionColumn) {\n this.columns.push('select');\n }\n if (this.IndexColumn) {\n this.columns.push('index');\n }\n this.createDataSource();\n\n this.state.on(this.columnInfos, columns => {\n columns.forEach( ci => this.addMetaData(ci) )});\n this.initializeRowDefs([...this.rows]);\n this.state.on(this.state.displayedColumns$, keys => {\n this.keys = [...this.columns, ...keys];\n this.rowDefArr?.forEach(row => row.columns = this.keys)\n } );\n }\n createDataSource() {\n this.dataSource = new GenericTableDataSource(\n this.data$.pipe(tap((d) => this.selection.clear() ))\n );\n this.dataSource.sort = this.sort;\n }\n\n myColumns: Dictionary<ColumnBuilderComponent> = {};\n\n addMetaData(column: ColumnInfo) {\n let columnBuilder = this.myColumns[column.metaData.key];\n if(columnBuilder) {\n columnBuilder.metaData = column.metaData;\n } else {\n const component = this.viewContainer.createComponent(this.factory,0, this.injector);\n component.instance.customCell = column.customCell;\n component.instance.metaData = column.metaData;\n component.instance.data$ = this.data$;\n this.myColumns[column.metaData.key] = component.instance;\n }\n }\n\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\n this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\n this.rowDefArr = defs;\n defs.forEach(r => {\n r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\n if (this.table) {\n this.table.addRowDef(r);\n }\n });\n }\n selection : SelectionModel<any> = new SelectionModel<any>(true, []);\n @Output() selection$: Observable<any> = this.selection.changed;\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected() ?\n this.selection.clear() :\n this.selection.select(...this.dataSource.data);\n }\n\n defVal: number | undefined = 0;\n\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\n previousAndCurrent<number | undefined>(0),\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\n if( currentUserDefinedWidth){\n return ({width:`${currentUserDefinedWidth}px`});\n } if( wasReset() ){\n return ({width:'initial'});\n }\n return ({});\n\n function wasReset(){\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\n }\n })\n\n );\n\n collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n}\n","<mat-table #table [dataSource]=\"dataSource\" [trackBy]='trackByFunction' [styler]=\"tableWidth | async\">\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator [dataSource]=\"dataSource\" [tableElRef]=\"tableElRef\" #tbPaginator\n [data$]=\"data$\"></tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n\n</div>\n\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\n\n// here is how to use it\n// <generic-table [report]=\"report\">\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\n// <p *customCell=\"'column2'\">I am custom cell two </p>\n// </generic-table>\n@Directive({\n selector: '[customCell]',\n})\nexport class CustomCellDirective implements AfterContentInit {\n @Input() customCell!: string;\n @Input() displayName?: string;\n @Input() preSort?: SortDef;\n @Input() TemplateRef: TemplateRef<any>;\n @Input() customCellOrder?: number;\n @Input() customCellWidth?: string;\n constructor(\n @Optional() private templateRef: TemplateRef<any>,\n @Optional() public columnDef: CdkColumnDef\n ) {\n this.TemplateRef = this.templateRef;\n }\n ngAfterContentInit() {\n if (this.TemplateRef === null) {\n this.TemplateRef = this.templateRef;\n }\n }\n\n getMetaData(metaData? : MetaData): MetaData {\n return {\n key: this.customCell,\n displayName: this.displayName ?? metaData?.displayName,\n preSort: this.preSort ?? metaData?.preSort,\n fieldType: metaData?.fieldType ?? FieldType.Unknown,\n order: this.customCellOrder ?? metaData?.order,\n _internalNotUserDefined: !(!!metaData),\n width: this.customCellWidth ?? metaData?.width,\n customCell: true,\n noExport: !metaData\n };\n }\n}\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\nimport { DisplayCol } from '../../classes/display-col';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'tb-col-displayer',\n templateUrl: './gen-col-displayer.component.html',\n styleUrls: ['./gen-col-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenColDisplayerComponent {\n columns$: Observable< DisplayCol[]>;\n constructor( private tableState: TableStore ) {\n this.columns$ = this.tableState.state$.pipe(\n map( state =>\n orderViewableMetaData(state)\n .map( md => ({\n key: md.key,\n displayName: md.displayName,\n isVisible: !state.hiddenKeys.includes(md.key)\n }))\n ),\n );\n }\n\n reset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = true);\n this.emit(displayCols);\n }\n drop(event: CdkDragDrop<string[]>) {\n this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n }\n unset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = false);\n this.emit(displayCols);\n }\n\n emit(displayCols: DisplayCol[]) {\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\n }\n}\n","<ng-container *ngIf=\"columns$ | async as displayCols\">\n <span matTooltip=\"Show/hide columns\" class=\"pull-right\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">visibility_off</mat-icon>\n </button>\n </span>\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n <button mat-menu-item>\n <div style=\"display: flex; flex-direction: row-reverse;\">\n <span matTooltip=\"Close\">\n <button class=\"filter-button\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </div>\n </button>\n <button mat-menu-item stop-propagation>\n <div style=\"display: flex; justify-content: space-between;\">\n <span matTooltip=\"Show all columns\">\n <button mat-icon-button (click)=\"reset(displayCols)\">\n <mat-icon color=\"primary\">done_all</mat-icon>\n </button>\n </span>\n\n <span matTooltip=\"Hide all columns\">\n <button mat-icon-button (click)=\"unset(displayCols)\">\n <mat-icon color=\"primary\">cancel</mat-icon>\n </button>\n </span>\n </div>\n </button>\n\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\"\n *ngFor=\"let col of displayCols\">\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; justify-content: space-between; align-items: center;\">\n <p class=\"label\" style=\"display: flex;\">\n {{col.displayName || (col.key | spaceCase) }}\n </p>\n <span matTooltip=\"Hide Column\" class=\"show-hide\" *ngIf=\"col.isVisible; else hidden\">\n <button mat-icon-button>\n <mat-icon color=\"primary\">check_box</mat-icon>\n </button>\n </span>\n\n <ng-template #hidden >\n <span matTooltip=\"Show Column\" class=\"show-hide\">\n <button mat-icon-button>\n <mat-icon>indeterminate_check_box</mat-icon>\n </button>\n </span>\n </ng-template>\n\n </div>\n </button>\n </div>\n </mat-menu>\n</ng-container>\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';\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\nimport { Observable } from 'rxjs';\nimport { TableStore } from '../../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\n\n@Component({\n selector: 'tb-filter-displayer',\n templateUrl: './gen-filter-displayer.component.html',\n styleUrls: ['./gen-filter-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenFilterDisplayerComponent {\n\n constructor( public tableState: TableStore, public filterStore : WrapperFilterStore) {\n this.filterCols$ = tableState.metaDataArray$.pipe(\n map(md => Object.values( md ).filter(m => (m.fieldType !== FieldType.Hidden) && (!m.noFilter))),\n );\n }\n\n filterCols$: Observable<MetaData[]>;\n\n addFilter(metaData: MetaData) {\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\n }\n}\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n <button class=\"filter-labels\" *ngFor=\"let md of filterCols$ | async\" (click)=\"addFilter(md)\" mat-menu-item>\n {{md.displayName || (md.key | spaceCase)}}\n </button>\n</mat-menu>\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';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() === isOnVal);\n}\n\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val?.getTime() !== isNotOnVal);\n}\n\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const afterVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() >= afterVal);\n}\n\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const beforeVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() <= beforeVal);\n}\n\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\n const startVal = new Date(filterInfo.filterValue.Start);\n const endVal = new Date(filterInfo.filterValue.End);\n return ((val)=>val>=startVal && val <= endVal);\n}\n\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.DateIsOn]: dateIsOnFunc,\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\n [FilterType.DateBetween]: dateBetweenFunc,\n [FilterType.IsNull]: isNull,\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\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 } from '../enums/filterTypes';\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\nimport { DateFilterFuncs } from '../functions/date-filter-function';\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\nimport { FieldType } from '../interfaces/report-def';\nimport { Dictionary } from '../interfaces/dictionary';\n\ntype FilterTypeMapType = { [key in FieldType]: FilterToFiltersMap};\nexport type UnmappedTypes = FieldType.Expression |\n FieldType.Hidden |\n FieldType.ImageUrl;\n\n\nexport type mappedFieldTypes =\n FieldType.Unknown |\n FieldType.Date |\n FieldType.Currency |\n FieldType.Array |\n FieldType.Number |\n FieldType.String |\n FieldType.Boolean |\n FieldType.PhoneNumber |\n FieldType.Link |\n FieldType.Enum;\n\nexport const filterTypeMap: Omit<FilterTypeMapType, UnmappedTypes> = {\n [FieldType.Unknown] : StringFilterMap,\n [FieldType.Date] : DateFilterMap,\n [FieldType.Currency] : NumberFilterMap,\n [FieldType.Array] : StringFilterMap,\n [FieldType.Number] : NumberFilterMap,\n [FieldType.String] : StringFilterMap,\n [FieldType.Boolean] : BooleanFilterMap,\n [FieldType.PhoneNumber] : StringFilterMap,\n [FieldType.Link] : StringFilterMap,\n [FieldType.Enum] : EnumFilterMap,\n};\n\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\n [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.every( f => f(obj));\n },\n [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.some( f => f(obj));\n },\n};\n\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\n [FieldType.String] : StringFilterFuncs,\n [FieldType.Array] : StringFilterFuncs,\n [FieldType.Currency] : NumberFilterFuncs,\n [FieldType.PhoneNumber] : StringFilterFuncs,\n [FieldType.Date] : DateFilterFuncs,\n [FieldType.Number] : NumberFilterFuncs,\n [FieldType.Boolean] : BooleanFilterFuncs,\n [FieldType.Unknown] : StringFilterFuncs,\n [FieldType.Enum] : EnumFilterFuncs ,\n [FieldType.Link] : StringFilterFuncs,\n};\nexport interface FilterInfo<T extends FieldType = any> {\n filterId: string;\n filterType: FilterType;\n filterValue: any;\n key: string;\n fieldType: T;\n}\n\nexport interface PartialFilter<T extends FieldType = any> {\n filterId?: string;\n key: string;\n fieldType: T;\n filterType?: FilterType;\n filterValue?: any;\n}\n\n\nexport function createFilterFunc(filter: FilterInfo): (val: any) => boolean {\n if (filter.filterValue === undefined) {\n return () => true;\n }\n\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\n if(!func) {\n if(filterFactoryMap[filter.filterType]){\n return filterFactoryMap[filter.filterType!](filter);\n }\n }\n\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\n return (rowObj) => {\n const value = rowObj[filter.key];\n return ((value == undefined) && cannotBeTrueForNull)\n ? false\n : func( value);\n };\n}\n\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\nexport type Range<T> = {Start:T,End:T};\n\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\n\n@Directive({\n selector: '[autoFocus]'\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n @Input() autoFocus = true;\n constructor(private elementRef: ElementRef) { }\n\n ngAfterViewInit() {\n if(this.autoFocus){\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n@Component({\n selector: 'lib-in-filter',\n templateUrl: './in-filter.component.html',\n styleUrls: ['./in-filter.component.css'],\n changeDetection:ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InFilterComponent,\n multi: true\n }],\n})\nexport class InFilterComponent implements ControlValueAccessor {\n FieldType = FieldType;\n @Input() type! : FieldType;\n value: any[] = [undefined];\n\n constructor(private ref: ChangeDetectorRef) {\n this.value = [undefined];\n }\n writeValue(obj: any[]): void {\n if(!obj?.length) obj = [undefined];\n this.value = obj;\n this.ref.markForCheck();\n }\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n throw new Error('Method not implemented.');\n }\n\n addInput(){\n this.value = [...this.value, undefined];\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n removeInput(index: number){\n this.value = [...this.value];\n this.value.splice(index,1);\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n onValueChange(i:number,value: number | string){\n this.value = [...this.value];\n this.value[i] = value;\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n}\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';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class NumberFilterComponent {\n FilterType = FilterType; FieldType = FieldType;\n @Input() CurrentFilterType!: FilterType;\n @Input() info!:PartialFilter;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\n </mat-form-field>\n</ng-container>\n\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.NumberBetween\">\n <ng-container ngModelGroup=\"filterValue\" >\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n<div class=\"inline\" *ngIf=\"CurrentFilterType === FilterType.In\">\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' ></lib-in-filter>\n</div>\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { FilterInfo, PartialFilter } from '../../classes/filter-info';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'tb-date-filter',\n templateUrl: './date-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class DateFilterComponent {\n FilterType = FilterType;\n @Input() info!: PartialFilter;\n @Input() CurrentFilterType!: FilterType;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { filterTypeMap, FilterInfo, UnmappedTypes, mappedFieldTypes, PartialFilter } from '../../classes/filter-info';\nimport { TableStore } from '../../classes/table-store';\nimport { FilterType } from '../../enums/filterTypes';\nimport { FieldType } from '../../interfaces/report-def';\n\n\ntype thingy = Omit<FieldType,UnmappedTypes>\n\n@Component({\n selector: 'tb-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterComponent<T extends mappedFieldTypes = any> {\n filterTypes = filterTypeMap;\n FilterType = FilterType;\n FieldType = FieldType;\n @Input() filter!: PartialFilter;;\n @Output() close = new EventEmitter();\n currentFilterType?: FilterType;\n constructor( public state: TableStore) { }\n\n ngOnInit() {\n this.currentFilterType = this.filter.filterType;\n }\n onEnter(filter: FilterInfo, event: any) {\n event.preventDefault();\n if (filter.filterValue != null && filter.filterType) {\n this.state.addFilter(filter);\n this.close.emit();\n }\n }\n}\n","<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n","\nimport { NgModule } from '@angular/core';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatChipsModule } from '@angular/material/chips';\n\n\n@NgModule({\n imports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ],\n exports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ]\n\n})\nexport class MaterialModule { }\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { map } from 'rxjs/operators';\nimport { TableStore } from '../classes/table-store';\n\n@Directive({\n selector: '[multiSort]',\n exportAs: 'multiSort',\n inputs: ['disabled: matSortDisabled'],\n providers: [\n { provide: MatSort, useExisting: MultiSortDirective }\n ]\n})\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\n rules: Sort[] = [];\n\n constructor(private state: TableStore) {\n super();\n this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\n this.state.on(\n this.state.sorted$,\n rules => {\n this.rules = rules;\n\n if (this.active && rules.length === 0) {\n this.active = '';\n this.direction = '';\n this.sortChange.emit({ active: '', direction: '' });\n }\n\n if(rules.length > 0 && (this.active !== rules[0].active || this.direction !== rules[0].direction)) {\n this.active = rules[0].active;\n this.direction = rules[0].direction;\n this.sortChange.emit(rules[0]);\n }\n\n }\n );\n }\n\n}\n","import { Observable, combineLatest, of } from 'rxjs';\nimport { map, scan, shareReplay } from 'rxjs/operators';\nimport { combineArrays } from '../../rxjs/rxjs-operators';\nimport { createFilterFunc, FilterInfo } from './filter-info';\n\nexport class DataFilter<T = any> {\n\n constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\n }\n\n filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\n return data.filter( r => filters.every( fltr => fltr(r)) );\n }\n\n filterData(data$: Observable<T[]>) {\n return combineLatest([data$, this.filters$]).pipe(\n map(([data, filters]) => this.filter(data, filters)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n appendFilters(filters$: Observable<FilterInfo[]>) : DataFilter {\n return new DataFilter(combineArrays([\n this.filters$ ?? of([]),\n filters$.pipe(map(fltrs => fltrs.map(filter => createFilterFunc(filter))))\n ]));\n }\n}\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';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport { combineLatest} from 'rxjs';\nimport { orderMetaData, TableStore } from '../classes/table-store';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\nimport { downloadData } from '../functions/download-data';\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\nimport { TableState } from '../classes/TableState';\nimport { isPipe } from './transform-creator';\n@Injectable()\nexport class ExportToCsvService<T> {\n constructor(\n public state: TableStore,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private datePipe: DatePipe,\n ){}\n\n exportToCsv = (data: Observable<T[]>) => {\n const exportableFields$ = this.state.state$.pipe(\n map(mapExportableFields)\n );\n\n combineLatest([data,exportableFields$]).pipe(\n first(),\n map(([data,fields]) => this.csvData(data,fields)),\n ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\n }\n\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\n return res.join('\\n');\n }\n\n metaToField = (meta: MetaData<T>, row: T) => {\n let val: any = row[meta.key];\n if (val == null && !meta.transform) return val\n if(meta.transform && meta.fieldType !== FieldType.Expression){\n const transform = meta.transform as any;\n return isPipe(transform) ? transform.transform(val) : transform(val);\n }\n switch (meta.fieldType) {\n case FieldType.Date:\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\n val = this.transform(val, dateFormat);\n break;\n case FieldType.String:\n const prepend: string = meta.additional?.export?.prepend || '';\n val = prepend + val;\n break;\n case FieldType.Array:\n const additional = meta.additional as ArrayAdditional;\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\n break;\n case FieldType.Expression:\n val = (meta.transform as any)(row);\n break;\n }\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\n val = val.replace('\"', '\"\"');\n val = '\"' + val + '\"';\n }\n return val;\n }\n\n private transform(val: any, dateFormat: any) {\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\n return this.config.transformers[FieldType.Date]!(val);\n }\n return this.datePipe.transform(val, dateFormat);\n }\n}\n\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\n\n orderMetaData(state)\n .filter( meta => !keysToRemove.includes(meta.key));\n\n\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\n .filter(md => md.noExport )\n .map( md => md.key );\n\nexport const mapExportableFields = (state: TableState) => {\n const fieldsToRemove = nonExportableFields(state)\n .concat(state.hiddenKeys);\n return removeFromMetaData(state, fieldsToRemove);\n}\n","import { ArrayStyle } from '../interfaces/report-def';\n\nexport interface DefaultSettings {\n dateFormat?: string;\n}\n\nexport const ArrayDefaults = {\n limit : 3,\n arrayStyle : ArrayStyle.CommaDelimited\n}","import { createSelector } from '@ngrx/store';\nimport { GlobalStorageState, Profile } from './reducer';\n\nexport const selectGlobalStorageState = (state: {globalStorageState: GlobalStorageState}) => state.globalStorageState;\n\nexport const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys )\n\nexport const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);\n\nexport const selectLocalProfile = <T>(key:string) => createSelector(selectGlobalStorageState, state => state.localProfiles[key]);\n\nexport const selectLocalProfileState = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.states[profile.current ?? profile.default];\n }\n return null;\n});\n\nexport const selectLocalProfileCurrentKey = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.current ?? profile.default;\n }\n return 'default';\n});\n\nexport const selectLocalProfileKeys = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return Object.keys(profile.states).filter( key => key);\n }\n return null;\n});\n","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const setLocalProfile = createAction('[State Storage] Set Local Profile', props<{key: string, value: any, persist?: boolean}>());\r\n\r\nexport const setLocalProfilesState = createAction('[State Storage] Set Local Profiles Current', props<{key: string, current: string}>());\r\n\r\nexport const deleteLocalProfilesState = createAction('[State Storage] Delete Local Profiles Current', props<{key: string, stateKey: string}>());\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'})\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';\nimport { FilterType } from '../enums/filterTypes';\n\n@Pipe({name: 'formatFilterType'})\nexport class FormatFilterTypePipe implements PipeTransform {\n transform(filterType: FilterType, value: any){\n if(filterType === FilterType.IsNull){\n return value ? filterType : 'Is Not Blank'\n }\n return filterType;\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableStore } from '../classes/table-store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FieldType } from '../interfaces/report-def';\nimport { DatePipe } from '@angular/common';\nimport { FilterType } from '../enums/filterTypes';\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\n\n\n@Pipe({name: 'formatFilterValue'})\nexport class FormatFilterValuePipe implements PipeTransform {\n constructor( public tableState: TableStore , private datePipe: DatePipe) {\n }\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\n return this.tableState.getMetaData$(key).pipe(\n map( md => {\n if(filterType === FilterType.IsNull) {\n return '';\n }\n if(value && (filterType === FilterType.In )){\n if(md.fieldType === FieldType.Enum) {\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\n }\n return value.join(', ') ?? value;\n }\n if(filterType === FilterType.NumberBetween){\n if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value.Start, 'MM/dd/yy')+ ' - ' + this.datePipe.transform(value.End, 'MM/dd/yy');\n }else{\n value = value.Start + ' - ' + value.End;\n }\n } else if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value, 'MM/dd/yy');\n }\n return value\n })\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { TableStore } from '../../../classes/table-store';\nimport { FilterInfo } from '../../../classes/filter-info';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-filter-list',\n templateUrl: './filter-list.component.html',\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css']\n})\nexport class FilterChipsComponent {\n\n constructor( public tableState: TableStore, private filterStore : WrapperFilterStore) {\n }\n\n filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(map( filters => Object.values(filters)));\n\n deleteByIndex(index: number) {\n this.filterStore.deleteByIndex(index);\n }\n\n addFilter(filter:FilterInfo<any>){\n this.filterStore.addFilter(filter);\n }\n\n clearAll() {\n this.filterStore.clearAll();\n }\n\n currentFilters$ = this.filterStore.currentFilters$;\n}\n","<div style=\"display: flex; flex-direction: row;justify-content: flex-end;\" *ngrxLet=\"currentFilters$ as currentFilters\" >\n\n <button class=\"cancel-button pull-right\" *ngIf=\"currentFilters.length\" mat-icon-button (click)=\"clearAll()\"\n matTooltip=\"Close all Filters\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n\n\n <div *ngIf=\"currentFilters.length\" class=\"float\">\n <div class=\"filter\" *ngFor=\"let filter of (currentFilters$ | async); index as i;\">\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex(i)\" > </tb-filter>\n </div>\n </div>\n\n <mat-chip-list *ngrxLet=\"filters$ as filters\">\n <mat-chip *ngFor=\"let filter of filters\" (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n <mat-chip *ngIf=\"filters.length >= 2\" (removed)=\"tableState.clearFilters()\">\n Clear All\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </mat-chip-list>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { notNull } from '../../../rxjs/rxjs-operators';\n\n@Injectable()\nexport class SortMenuComponentStore extends ComponentStore<ComponenStoreState> {\n constructor(private tableState: TableStore){\n super({notSorted:[],sorted:[]})\n }\n private set = this.updater((state,data:ComponenStoreState)=> ({...data}));\n\n setSorted = this.updater((state,sorted:SortWithName[])=>({...state,sorted}));\n\n setNotSorted = this.updater((state,notSorted:SortWithName[])=>({...state,notSorted}));\n sorted$ = this.select(state=>state.sorted);\n notSorted$ = this.select(state=>state.notSorted);\n setDirection = this.updater((state,sort:SortWithName)=>{\n const index = state.sorted.findIndex(s => s.active === sort.active);\n const sorted = [...state.sorted];\n sorted.splice(index,1,sort);\n return ({...state,sorted});\n })\n reset = () => {\n const sorted = this.tableState.sorted$.pipe(\n mergeMap(sort => this.tableState.metaData$.pipe(\n notNull(),\n map(\n meta => sort.map(s => {\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\n )))\n );\n const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\n metas => this.tableState.sorted$.pipe(\n map(s => metas.filter(meta=> !s.some(s=>s.active=== meta.key))\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\n )\n ));\n this.set(combineLatest([\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\n }\n}\n\nexport interface ComponenStoreState {\n sorted : SortWithName[];\n notSorted: SortWithName[];\n}\n\nexport interface SortWithName extends Sort{\n displayName : string;\n}\n\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { SortDirection } from '../../interfaces/report-def';\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\n\n@Component({\n selector: 'tb-sort-menu',\n templateUrl: './sort-menu.component.html',\n styleUrls: ['./sort-menu.component.scss'],\n providers:[SortMenuComponentStore]\n})\nexport class SortMenuComponent implements OnInit{\n\n sorted$:Observable<SortWithName[]>;\n notSorted$:Observable<SortWithName[]>;\n SortDirection = SortDirection;\n dirty$ = new BehaviorSubject(false);\n constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\n this.sorted$=this.store.sorted$.pipe(map(data=>[...data]));\n this.notSorted$=this.store.notSorted$.pipe(map(data=>[...data]));\n }\n\n reset(){\n this.dirty$.next(false);\n this.store.reset();\n }\n\n ngOnInit(){\n this.store.reset();\n }\n\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\n this.dirty$.next(true);\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\n this.store.setSorted(event.container.data);\n this.store.setNotSorted(event.previousContainer.data);\n }\n }\n\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\n if (event.previousContainer === event.container) {\n return;\n } else {\n this.dirty$.next(true);\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\n\n this.store.setNotSorted(event.container.data);\n this.store.setSorted(event.previousContainer.data);\n }\n }\n\n apply = this.store.effect((obs:Observable<null>)=>\n obs.pipe(tap(()=>{\n this.dirty$.next(false);\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\n })));\n\n setDirection(sort:SortWithName){\n this.dirty$.next(true);\n this.store.setDirection(sort);\n }\n\n}\n\n\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\" class=\"pull-right\">\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 { Directive } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Directive({\n selector: '[clickEmitter]',\n exportAs: 'clickEmitter',\n host: {\n '(click)': 'next(true)'\n }\n}) export class ClickEmitterDirective extends Subject<boolean> {\n constructor() {\n super();\n }\n}\n","import { Injectable} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n\n\n@Injectable({\n providedIn: 'root'\n })\n\nexport class DialogService {\n allOpenAppDialogs: MatDialogRef<any>[] = [];\n\n addDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs.push(ref);\n }\n\n removeDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs = this.allOpenAppDialogs.filter(rf => ref.id !== rf.id);\n }\n\n closeAllAppDialogs() {\n this.allOpenAppDialogs.forEach(ref => ref.close());\n }\n}\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { switchAll } from 'rxjs/operators';\nimport { DialogService } from './dialog-service';\n\n\ninterface DialogViewContext<T> {\n $implicit?: T,\n opDialog?: T,\n close: () => void,\n\n}\n\n@Component({\n selector: 'app-dialog-content',\n template: ``\n})\nexport class DialogWrapper<T = any> {\n viewEmbeded = false;\n viewContext = {\n close: () => {},\n } as DialogViewContext<T>;\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\n if (this.viewEmbeded) {\n this.vcr.clear();\n }\n this.viewEmbeded = true;\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\n }\n\n set close(closeMethod: () => void ) {\n this.viewContext.close = closeMethod;\n }\n\n set data(value: T) {\n this.viewContext.$implicit = value;\n this.viewContext.opDialog = value;\n }\n constructor(private vcr: ViewContainerRef ) {\n }\n\n}\n\n\n@Directive(\n { selector: '[opDialog]' }\n) export class DialogDirective<T> implements OnDestroy {\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\n @Input() opDialogConfig: MatDialogConfig<T> = new MatDialogConfig<T>();\n @Input('opDialog') set state(open_close: Observable<T>) {\n this._data.next(open_close);\n }\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\n dialogRef?: MatDialogRef<any, boolean>;\n subscription: Subscription;\n componentWrapper?: DialogWrapper<T>;\n\n constructor(\n private templateRef: TemplateRef<DialogViewContext<T>>,\n private dialog: MatDialog,\n private service: DialogService) {\n this.subscription = this._data.pipe(\n switchAll()\n ).subscribe(d => {\n if (d) {\n this.opDialogConfig.data = d;\n this.setDialogState(true);\n } else {\n this.setDialogState(false);\n }\n });\n }\n\n _data = new Subject<Observable<T>>();\n\n close() {\n this.dialogRef?.close();\n }\n\n initDialog() {\n if(this.nativeElement){\n const rect = this.nativeElement.getBoundingClientRect();\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\n this.opDialogConfig = {...(this.opDialogConfig ?? {} as MatDialogConfig), position};\n }\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\n this.componentWrapper = this.dialogRef.componentInstance;\n this.componentWrapper!.close = () => this.dialogRef?.close();\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n this.componentWrapper!.template = this.templateRef;\n if (!this.opDialogConfig || !this.opDialogConfig.disableClose) {\n this.service.addDialogRef(this.dialogRef);\n }\n const sub = this.dialogRef.afterClosed().subscribe(() => {\n this.opDialogClosed.emit(true);\n this.service.removeDialogRef(this.dialogRef!);\n this.dialogRef = undefined;\n sub.unsubscribe();\n });\n }\n\n setDialogState(open: boolean) {\n if (open) {\n if (!this.dialogRef) {\n this.initDialog();\n } else {\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n }\n } else if (!open && this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is { $implicit: T } {\n return true;\n }\n\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n ContentChildren,\n QueryList,\n ChangeDetectionStrategy,\n Inject,\n} from '@angular/core';\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\nimport { distinctUntilChanged, first, last, map, shareReplay, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { TableBuilder } from '../../classes/table-builder';\nimport { MatRowDef } from '@angular/material/table';\nimport { CustomCellDirective } from '../../directives';\nimport { TableStore } from '../../classes/table-store';\nimport { DataFilter } from '../../classes/data-filter';\nimport { mapArray, notNull, skipOneWhen } from '../../../rxjs/rxjs-operators';\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\nimport * as selectors from '../../ngrx/selectors';\nimport { select, Store } from '@ngrx/store';\nimport { deleteLocalProfilesState, setLocalProfile, setLocalProfilesState } from '../../ngrx/actions';\nimport { PersistedTableState } from '../../classes/TableState';\nimport { sortData } from '../../functions/sort-data-function';\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\nimport { cloneDeep } from 'lodash';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { defaultShareReplay } from '../../../rxjs'\n\n@Component({\n selector: 'tb-table-container',\n templateUrl: './table-container.html',\n styleUrls: ['./table-container.css','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TableStore,ExportToCsvService,WrapperFilterStore]\n}) export class TableContainerComponent<T = any> {\n @Input() tableId!: string;\n @Input() SaveState = false;\n @Input() tableBuilder!: TableBuilder;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() isSticky = true;\n @Input() set pageSize(value: number) {\n this.state.setPageSize(value);\n }\n @Input() inputFilters!: Observable<Array<(val: T) => boolean>>;\n @Output() selection$ = new EventEmitter();\n dataSubject = new ReplaySubject<Observable<T[]>>(1);\n @Output() data = this.dataSubject.pipe(\n switchMap( d => d),\n shareReplay({refCount: true, bufferSize: 1 })\n );\n\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\n @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\n @Output() OnStateReset = new EventEmitter();\n @Output() OnSaveState = new EventEmitter();\n @Output() state$ : Observable<PersistedTableState>;\n\n myColumns$!: Observable<ColumnInfo[]>;\n\n stateKeys$?: Observable<string[] | null>;\n currentStateKey$?: Observable<string>;\n\n constructor(\n public state: TableStore,\n public exportToCsvService: ExportToCsvService<T>,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private store: Store<any>\n ) {\n this.state.on( this.state.getSavableState().pipe(last()), finalState => {\n if(this.tableId) {\n this.store.dispatch(setLocalProfile({key:this.tableId,value: finalState}));\n }\n });\n this.state$ = this.state.getSavableState().pipe(\n map(state => cloneDeep(state)),\n defaultShareReplay(),\n );\n }\n\n ngOnInit() {\n this.state.setTableSettings(this.tableBuilder.settings);\n if(this.tableId) {\n this.state.updateState(\n this.store.pipe(\n select(selectors.selectLocalProfileState<any>(this.tableId) ),\n notNull(),\n this.cleanStateOnInitialLoad(),\n skipOneWhen(this.OnSaveState),\n )\n );\n this.stateKeys$ = this.store.select(selectors.selectLocalProfileKeys(this.tableId));\n this.currentStateKey$ = this.store.select(selectors.selectLocalProfileCurrentKey(this.tableId));\n }\n const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\n const data = new DataFilter(this.inputFilters)\n .appendFilters(filters$)\n .filterData(this.tableBuilder.getData$());\n this.dataSubject.next(data);\n }\n\n exportToCsv(): void {\n const sorted = this.data.pipe(\n withLatestFrom(this.state.sorted$),\n map(([data, sorted]) => sortData(data, sorted))\n );\n this.exportToCsvService.exportToCsv(sorted);\n }\n\n saveState() {\n this.state.getSavableState().pipe(\n first()\n ).subscribe( tableState => {\n this.OnSaveState.next(null);\n this.store.dispatch(setLocalProfile({ key: this.tableId, value:tableState, persist: true} ));\n });\n }\n\n setProfileState(val: string) {\n this.store.dispatch(setLocalProfilesState({key:this.tableId, current: val}));\n }\n\n deleteProfileState(stateKey: string) {\n this.store.dispatch(deleteLocalProfilesState({key:this.tableId, stateKey}));\n }\n\n\n ngAfterContentInit() {\n this.InitializeColumns();\n }\n\n\n InitializeColumns() {\n const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\n this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\n first(),\n map((mds) => {\n mds = mds.map(this.mapMetaDatas);\n return [\n ...mds,\n ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\n ]\n })\n ));\n\n this.myColumns$ = this.state.metaDataArray$.pipe(\n mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\n );\n }\n mapMetaDatas = (meta : MetaData<T>) => {\n if(meta.fieldType === FieldType.Array){\n const additional = {...meta.additional} as ArrayAdditional;\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\n return {...meta,additional}\n }\n return meta;\n }\n\n cleanStateOnInitialLoad = () => (obs:Observable<PersistedTableState>) =>\n combineLatest([obs.pipe(addTimeStamp()) , this.tableBuilder.metaData$!]).pipe(\n distinctUntilChanged(([state],[state2])=>state.index === state2.index),\n map(([{value:state},metas],index)=>{\n if (index === 0) {\n\n const filters = Object.values(state.filters).filter(fltr => metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\n obj[filter.filterId!] = state.filters[filter.filterId!];\n return obj;\n }, {});\n const sorted = state.sorted.filter(s => metas.some(m => m.key === s.active));\n return ({...state,filters,sorted})\n }\n return state\n })\n );\n collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\n\n}\nconst addTimeStamp = <T>() => (obs:Observable<T>) => obs.pipe(map((t,i) => ({value:t,index:i})));\n","<ng-container multiSort>\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$'>\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"state.resetState();OnStateReset.next(null)\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n","import { createReducer, Action, on } from '@ngrx/store';\r\nimport * as tableActions from './actions';\r\nimport { Dictionary } from '../interfaces/dictionary';\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}\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\nconst reducer = createReducer(\r\n loadGlobalStorageState(),\r\n on(tableActions.setLocalProfile, (state,{key,value})=> {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {\r\n default: value\r\n }};\r\n } else {\r\n profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : value} };\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} }\r\n }),\r\n on(tableActions.setLocalProfilesState, (state, {key,current}) => {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: current, current , states : {[current]: null }};\r\n } else {\r\n const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];\r\n profile = {...profile, current, states: {...profile.states, [current] : state }};\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile}};\r\n }),\r\n on(tableActions.deleteLocalProfilesState, (state, {key,stateKey}) => {\r\n let profile = state.localProfiles[key];\r\n if(profile) {\r\n const current = profile.current === stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[stateKey];\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n })\r\n);\r\n\r\nexport function storageStateReducer(state: GlobalStorageState | undefined, action: Action) {\r\n return reducer(state, action);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\r\nimport { defaultStorageState, GlobalStorageState} from './reducer';\r\nimport { tap, filter, mergeMap, first, map } from 'rxjs/operators';\r\nimport * as tableActions from './actions';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { selectLocalProfile } from './selectors';\r\n\r\n\r\n@Injectable()\r\nexport class SaveTableEffects {\r\n\r\n saveLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.setLocalProfile),\r\n filter( action => !!action.persist),\r\n concatLatestFrom( (action) => this.store.pipe(\r\n select(selectLocalProfile(action.key))\r\n )),\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 }),\r\n ), { dispatch: false }\r\n );\r\n\r\n deleteLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.deleteLocalProfilesState),\r\n tap( (a) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[a.key]) {\r\n return;\r\n } else {\r\n delete globalSavedState.localProfiles[a.key].states[a.stateKey];\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }),\r\n ), { dispatch: false }\r\n );\r\n\r\n constructor( private actions$: Actions, private store: Store<any> ) {}\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'preventEnter'\n})\nexport class PreventEnterDirective {\n\n @HostListener('keydown.enter', ['$event'])\n onKeyDown() {\n return false\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[clickSubject]',\n exportAs: 'clickSubject',\n host: {\n '(click)': 'next(this._val)'\n }\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\n constructor( ) {\n super();\n }\n _val!: T;\n\n @Input('clickSubject') set clickSubject( val: T) {\n this._val = val;\n }\n}\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\n\n\n@Directive(\n { selector: '[opMatSlideToggleGroup]' ,\n}\n) export class MatSlideToggleGroupDirective {\n @Input() allowMultiple = false;\n\n _toggles!: QueryList<MatSlideToggle>;\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\n this._toggles = val;\n this._ready.next(true);\n }\n\n private _ready = new ReplaySubject<boolean>(1);\n\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\n return this._ready.pipe( switchMap( _ => this.getObs()));\n }\n\n\n getInitValue() {\n const startValue = this._toggles.reduce( (prev,cur) => {\n if(!cur.name) {\n throw new Error('toggle must have the name attribute set');\n }\n prev[cur.name] = cur.checked\n return prev;\n }, {} as {[k:string]: boolean});\n return startValue;\n }\n\n getObs() {\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\n\n const startValue = this.getInitValue();\n\n return toggleChanges.pipe(\n scan( (prev,cur) => {\n const toggleName = cur.source.name!;\n const newVal = {...prev,[toggleName]:cur.checked};\n if(cur.checked && !this.allowMultiple) {\n Object.keys(prev)\n .filter( key => key !== toggleName && prev[key])\n .forEach( key => {\n newVal[key] = false;\n this._toggles.find( toggle => toggle.name === key)!.toggle();\n });\n }\n return newVal;\n },startValue),\n startWith(startValue),\n );\n\n }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\nimport { DialogDirective } from \"./directives/dialog\";\nimport { DialogService } from \"./directives/dialog-service\";\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\nimport { StylerDirective } from \"./directives/styler\";\nimport { FunctionPipe } from \"./pipes/function.pipe\";\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\n\n@NgModule({\n imports: [\n\n ],\n exports: [\n StopPropagationDirective,\n PreventEnterDirective,\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ],\n declarations: [\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ],\n providers : [\n DialogService\n ]\n})\nexport class UtilitiesModule {\n}\n","\nimport { NgModule } from '@angular/core';\nimport { GenericTableComponent } from './components/generic-table/generic-table.component';\nimport { CustomCellDirective } from './directives/custom-cell-directive';\nimport { GenColDisplayerComponent } from './components/gen-col-displayer/gen-col-displayer.component';\nimport { GenFilterDisplayerComponent } from './components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\nimport { MaterialModule } from './material.module';\nimport { DateFilterComponent } from './components/date-filter/date-filter.component';\nimport { TableContainerComponent } from './components/table-container/table-container';\nimport { ColumnTotalPipe } from './pipes/column-total.pipe';\nimport { MultiSortDirective } from './directives/multi-sort.directive';\nimport { ColumnBuilderComponent } from './components/column-builder/column-builder.component';\nimport { ModuleWithProviders } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\nimport { NumberFilterComponent } from './components/number-filter/number-filter.component';\nimport { StoreModule } from '@ngrx/store';\nimport { storageStateReducer } from './ngrx/reducer';\nimport { HeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SaveTableEffects } from './ngrx/effects';\nimport { KeyDisplayPipe } from './pipes/key-display';\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\nimport { RouterModule } from '@angular/router';\nimport { ArrayColumnComponent } from './components/array-column.component';\nimport { InFilterComponent } from './components/in-filter/in-filter.component';\nimport { FormatFilterValuePipe } from './pipes/format-filter-value.pipe';\nimport { FormatFilterTypePipe } from './pipes/format-filter-type.pipe';\nimport { ResizeColumnDirective } from './directives/resize-column.directive';\nimport {ReactiveComponentModule} from '@ngrx/component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { InitializationComponent } from './components/initialization-component/initialization-component';\nimport { TableTemplateService } from './services/table-template-service';\nimport { InListFilterComponent } from './components/filter/in-list/in-list-filter.component';\nimport { SortMenuComponent } from './components/sort-menu/sort-menu.component';\nimport { FilterChipsComponent } from './components/table-container-filter/filter-list/filter-list.component';\nimport { PaginatorComponent } from './components/generic-table/paginator.component';\nimport { UtilitiesModule } from '../utilities';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialModule,\n StoreModule.forFeature('globalStorageState', storageStateReducer),\n EffectsModule.forFeature([SaveTableEffects]),\n FormsModule,\n RouterModule,\n ReactiveComponentModule,\n DragDropModule,\n UtilitiesModule,\n ],\n exports: [\n GenericTableComponent,\n PaginatorComponent,\n TableContainerComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n FilterComponent,\n MultiSortDirective,\n ResizeColumnDirective,\n ],\n declarations: [\n ColumnTotalPipe,\n TableContainerComponent,\n GenericTableComponent,\n PaginatorComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n DateFilterComponent,\n FilterComponent,\n MultiSortDirective,\n NumberFilterComponent,\n ColumnBuilderComponent,\n ArrayColumnComponent,\n HeaderMenuComponent,\n KeyDisplayPipe,\n FormatFilterValuePipe,\n FormatFilterTypePipe,\n ResizeColumnDirective,\n InFilterComponent,\n InitializationComponent,\n InListFilterComponent,\n SortMenuComponent,\n FilterChipsComponent,\n ],\n providers : [\n SpaceCasePipe,\n DatePipe,\n CurrencyPipe,\n PhoneNumberPipe,\n TableTemplateService,\n ]\n})\nexport class TableBuilderModule {\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\n return {\n ngModule: TableBuilderModule,\n providers: [\n MultiSortDirective,\n { provide : TableBuilderConfigToken , useValue: config}\n ]\n };\n }\n}\n","import { isObservable, Observable, of } from 'rxjs';\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\nimport { first, map, switchMap } from 'rxjs/operators';\nimport { mapArray } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\nimport { defaultShareReplay } from '../../rxjs';\n\nexport class TableBuilder<T = any> {\n\n metaData$: Observable<MetaData<T>[]>;\n constructor(private data$: Observable<T[]>, metaData$?: Observable<MetaData<T,any>[]>, settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\n this.data$ = this.data$.pipe(defaultShareReplay());\n this.metaData$ = metaData$ ?\n metaData$.pipe(first(),defaultShareReplay()) :\n data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\n const s = isObservable(settings) ? settings : of(settings);\n this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\n }\n settings : Observable<GeneralTableSettings>;\n getData$(): Observable<any[]> {\n return this.metaData$.pipe(\n switchMap( metaData => this.data$.pipe(\n mapArray( data => this.cleanRecord(data, metaData ) )\n ))\n );\n }\n\n createMetaData(obj: any): MetaData [] {\n return Object.keys(obj ?? {})\n .map( key => ({\n key,\n fieldType: FieldType.Unknown,\n order: -1\n }));\n }\n\n cleanVal(val: any, metaData: MetaData): any {\n switch ( metaData.fieldType ) {\n case FieldType.Currency:\n case FieldType.Number:\n const num = Number( val );\n return isNaN(num) || val == null ? null : num;\n case FieldType.Date:\n const date = Date.parse(val);\n if(isNaN(date)){\n return null;\n }\n const d = new Date(date);\n d.setHours(0,0,0,0);\n return d;\n }\n return val;\n }\n\n cleanRecord( record: T, metadata: MetaData []): T {\n const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\n prev[curr.key] = this.cleanVal(record[curr.key], curr);\n return prev;\n }, {} as T )\n return {...record, ...cleaned};\n }\n}\n\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\n reportDef$ = reportDef$.pipe(defaultShareReplay());\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\n};\n","/*\n * Public API Surface of http-request-state\n */\n\nexport * from './http-request-state/directives';\nexport * from './http-request-state/rxjs';\nexport * from './http-request-state';\n\n\nexport * from './table-builder/table-builder.module';\n\nexport * from './table-builder/interfaces/report-def';\n\nexport * from './table-builder/classes/MatTableObservableDataSource';\n\nexport * from './table-builder/classes/table-builder';\n\nexport * from './table-builder/classes/table-builder-general-settings';\n\nexport * from './table-builder/components';\n\nexport * from './table-builder/directives';\n\nexport {FilterType} from './table-builder/enums/filterTypes';\n\n\nexport * from './rxjs'\n\nexport * from './utilities'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","merge","selectors.selectLocalProfileState","selectors.selectLocalProfileKeys","selectors.selectLocalProfileCurrentKey","tableActions.setLocalProfile","tableActions.setLocalProfilesState","tableActions.deleteLocalProfilesState","switchMap","startWith"],"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/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.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/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.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/enums/filterTypes.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../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/utilities/directives/styler.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.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/directives/custom-cell-directive.ts","../../../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/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/utilities/directives/auto-focus.directive.ts","../../../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-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/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/material.module.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../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/ngrx/selectors.ts","../../../projects/angular-utilities/src/table-builder/ngrx/actions.ts","../../../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/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/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/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/ngrx/reducer.ts","../../../projects/angular-utilities/src/table-builder/ngrx/effects.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.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 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 HttpRequestStateNotStarted |\r\n HttpRequestStateInProgress |\r\n HttpRequestStateSuccess<T> |\r\n HttpRequestStateError ;\r\n\r\n export enum HttpRequestStrategy {\r\n concurrent = 1,\r\n singleUse,\r\n cancelPrevious,\r\n }\r\n export interface RequestStateOptions {\r\n strategy?: HttpRequestStrategy\r\n }\r\n\r\n export 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 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?: HttpRequestState<T>;\r\n state?: HttpRequestState<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]' })\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\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]' })\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]' })\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]' })\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, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\n\r\n@Directive({ selector: '[httpSuccessState]'})\r\nexport class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {\r\n render = (state: HttpRequestState<any>) => {\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\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","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 providers:[],\r\n declarations: [\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 {\r\n\r\n}","import { Observable, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { 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\r\n private flatteningStrategy = () => {\r\n if(this.options?.strategy !== HttpRequestStrategy.concurrent) {\r\n return switchMap( (params: [...TParam]) => this.createRequest(...params) );\r\n }\r\n return mergeMap( (params: [...TParam]) => 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(pluck('response'));\r\n\r\n selectStatus$ = this.selectHttpState$.pipe(pluck('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\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 }\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 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 }\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\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","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 { Dictionary } from './dictionary';\nimport { PipeTransform, TemplateRef } from '@angular/core';\n\n\nexport enum FieldType {\n Unknown = 0,\n Date = 1,\n Link = 2,\n ImageUrl = 3,\n Currency = 4,\n Array = 5,\n Hidden = 6,\n Number = 7,\n String = 8,\n Boolean = 9,\n PhoneNumber = 10,\n Expression = 11,\n Enum = 12,\n}\n\nexport enum SortDirection {\n asc= 'asc',\n desc= 'desc'\n}\n\nexport enum Target {\n Blank = '_blank',\n Self = '_self',\n Parent = '_parent',\n Top = '_top'\n}\n\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\n key: (keyof T | AdditionalFields[number]) & string;\n displayName?: string;\n fieldType: FieldType;\n additional?: Additional;\n order?: number;\n preSort?: SortDef;\n _internalNotUserDefined?: boolean;\n width?: string;\n noExport?: boolean;\n noFilter?: boolean;\n customCell?: boolean;\n transform?: ( (o: T, ...args: any[])=> any ) | ( (o: string, ...args: any[])=> any ) | PipeTransform;\n click?: (element: T, key: string ) => void;\n template?: TemplateRef<any>;\n}\nexport interface ReportDef<DataType = any> {\n data: DataType[];\n metaData: MetaData [];\n totalRecords?: number;\n count: number;\n}\n\nexport interface SortDef {\n direction: SortDirection;\n precedence?: number;\n}\n\nexport interface FilterOptions {\n filterableValues : string[]\n}\n\nexport interface Additional {\n base?: string;\n urlKey?: string;\n target?: Target;\n useRouterLink?: boolean;\n footer?: { type: 'sum' };\n export?: any;\n dateFormat?: string;\n filterOptions?: FilterOptions;\n styles?: Dictionary<string>;\n columnPartStyles?: {\n header?: Dictionary<string>,\n body?: Dictionary<string>,\n footer?: Dictionary<string>,\n }\n enumMap?: {[key:number]:string};\n boolean? : { \n showForFalse? : true | { icon : string },\n forTrue? : { icon : string }\n }\n}\n\nexport enum ArrayStyle {\n CommaDelimited,\n NewLine\n}\n\nexport interface ArrayAdditional extends Additional {\n metaData?: MetaData;\n limit?: number;\n arrayStyle?: ArrayStyle;\n}\n","import { flatten } from 'lodash';\nimport { Observable, combineLatest, Subscription, MonoTypeOperatorFunction, OperatorFunction } from 'rxjs';\nimport { filter, map, pairwise, startWith } from 'rxjs/operators';\n\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.map(mapFunc) ) );\n\nexport const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\n source.pipe( map( src => src.filter(filterFunc) ) );\n\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n return new Observable<T>(subscriber => {\n let emitted = false;\n setTimeout(() => {\n if(!emitted) {\n subscriber.next(val);\n }\n }, 0);\n source.subscribe({\n next(x) { emitted = true; subscriber.next(x) },\n error(err) { emitted = true; subscriber.error(err) },\n complete() { emitted = true; subscriber.complete(); }\n });\n });\n }\n\n}\n\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\n return combineLatest(\n sources.map( src => src.pipe(onWait([])))\n ).pipe(\n map( res => flatten(res) )\n );\n};\n\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsciber => {\n let isOn = defaultState;\n const subscription = new Subscription();\n subscription.add( switchSource.subscribe( on => isOn = on ));\n subscription.add(source.subscribe({\n next(value) {\n if(isOn) {\n subsciber.next(value);\n }\n },\n error: error => subsciber.error(error),\n complete: () => subsciber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function skipOneWhen( skipper: Observable<any> ) {\n return <T>(source: Observable<T>) : Observable<T> => {\n return new Observable(subsriber => {\n const subscription = new Subscription();\n let skipNext = false;\n subscription.add(skipper.subscribe( _ => skipNext = true));\n subscription.add(source.subscribe({\n next(value) {\n if(skipNext) {\n skipNext = false;\n } else {\n subsriber.next(value);\n }\n },\n error: error => subsriber.error(error),\n complete: () => subsriber.complete()\n }));\n return subscription;\n });\n }\n}\n\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\n return (source: Observable<T>) => {\n return source.pipe(startWith(startingValue), pairwise());\n }\n}\n\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\n return (source: Observable<T | null | undefined>) => {\n return source.pipe(filter( (o: T | null | undefined): o is T => !!o) )\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { TableState } from './TableState';\nimport { DefaultSettings } from './DefaultSettings';\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\nexport interface TableBuilderConfig {\n defaultTableState: Partial<TableState>;\n export?: TableBuilderExport;\n defaultSettings?: DefaultSettings;\n arrayInfo?: ArrayAdditional;\n transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\n}\n\nexport interface TableBuilderExport {\n dateFormat?: string;\n onSave?: (event?: any) => void;\n}\n\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'phone'})\nexport class PhoneNumberPipe implements PipeTransform {\n\n transform(phoneNum: string): any {\n if (phoneNum) {\n phoneNum = phoneNum.replace(/\\D/g,'');\n if(phoneNum[0] === '1') {\n phoneNum = phoneNum.substring(1);\n }\n return '(' + phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\n }\n }\n}\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\nimport { FieldType, MetaData } from '../interfaces/report-def';\nimport { DatePipe, CurrencyPipe } from '@angular/common';\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\n\nexport function isPipe(o : any ): o is PipeTransform {\n return typeof ((o as PipeTransform).transform ) === 'function';\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TransformCreator {\n constructor(\n private datePipe: DatePipe,\n private currencyPipe: CurrencyPipe,\n private phonePipe: PhoneNumberPipe,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n ) {}\n createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any) {\n if(metaData.transform) {\n if(isPipe(metaData.transform)){\n return metaData.transform.transform;\n }\n return metaData.transform\n }\n if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\n return this.config.transformers[metaData.fieldType]!;\n }\n switch(metaData.fieldType) {\n case FieldType.Date:\n const dateFormat = metaData.additional?.dateFormat ?? this.config.defaultSettings?.dateFormat ?? 'shortDate';\n return (value: any) => this.datePipe.transform(value, dateFormat);\n case FieldType.Currency:\n return this.currencyPipe.transform;\n case FieldType.PhoneNumber:\n return this.phonePipe.transform;\n }\n return (value: any) => value;\n }\n\n}\n","import { merge } from \"lodash\";\n\nexport class GeneralTableSettings {\n constructor(settings? : TableBuilderSettings){\n if(settings){\n merge(this.headerSettings,settings.headerSettings);\n merge(this.footerSettings,settings.footerSettings);\n }\n }\n headerSettings = new TableWrapperHeaderSettings();\n footerSettings = new TableWrapperFooterSettings();\n}\n\nexport interface TableBuilderSettings {\n headerSettings? : Partial<TableWrapperHeaderSettings>;\n footerSettings? : Partial<TableWrapperFooterSettings>;\n}\n\nexport class TableWrapperHeaderSettings {\n hideExport = false\n hideFilter = false\n hideColumnSettings = false\n hideSort = false\n collapse = false\n showTitleWhenCollapsed = true;\n}\n\nexport class TableWrapperFooterSettings {\n collapse = false\n}\n\nexport class PesrsistedTableSettings {\n constructor(tableSettings? :GeneralTableSettings | PesrsistedTableSettings){\n if (tableSettings){\n this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseHeader;\n this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseFooter;\n }\n }\n collapseHeader = false;\n collapseFooter = false;\n}\n\nexport class NotPersisitedTableSettings {\n constructor(tableSettings? :GeneralTableSettings){\n if(tableSettings){\n this.hideExport = tableSettings.headerSettings.hideExport;\n this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\n this.hideFilter = tableSettings.headerSettings.hideFilter;\n this.hideSort = tableSettings.headerSettings.hideSort;\n this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\n }\n }\n hideExport = true\n hideFilter = true\n hideColumnSettings = true\n hideSort = true\n showTitleWhenHeaderCollapsed = true;\n}\n","import { FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData } from '../interfaces/report-def';\r\nimport { NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface PersistedTableState {\r\n hiddenKeys?: string [];\r\n pageSize?: number;\r\n filters: Dictionary<FilterInfo>;\r\n sorted : Sort [];\r\n userDefined : {order:Dictionary<number>,widths:Dictionary<number>,table:{width?:number}};\r\n persistedTableSettings : PesrsistedTableSettings;\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n metaData: Dictionary<MetaData>;\r\n notPersisitedTableSettings : NotPersisitedTableSettings;\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n metaData: {},\r\n filters: {},\r\n hiddenKeys: [],\r\n sorted: [],\r\n userDefined:{order:{},widths:{},table:{}},\r\n persistedTableSettings : new PesrsistedTableSettings(),\r\n notPersisitedTableSettings : new NotPersisitedTableSettings(),\r\n pageSize: 10,\r\n};\r\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\nimport { v4 as uuid } from 'uuid';\nimport { Observable } from 'rxjs';\nimport { defaultTableState, PersistedTableState, TableState } from './TableState';\nimport { Injectable, Inject } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\nimport { FilterInfo } from './filter-info';\nimport { Sort, SortDirection } from '@angular/material/sort' ;\nimport { ComponentStore } from '@ngrx/component-store' ;\nimport update from 'immutability-helper';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { last, map, tap } from 'rxjs/operators'\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { notNull } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TableStore extends ComponentStore<TableState> {\n\n constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\n super( { ...defaultTableState, ...config.defaultTableState});\n }\n\n getSavableState() : Observable<PersistedTableState> {\n return this.state$.pipe(\n map( s => {\n const savableState = {...s} as Partial<TableState>\n delete savableState.metaData;\n delete savableState.notPersisitedTableSettings;\n return savableState as PersistedTableState;\n })\n );\n }\n\n on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\n this.effect(() => srcObservable.pipe(\n tap(func)\n ))\n }\n\n onLast(callback: (state: TableState) => void ) {\n this.on(this.state$.pipe(last()),callback);\n }\n\n readonly metaData$ = this.select( state => state.metaData);\n\n readonly metaDataArray$ = this.select(\n this.state$,\n orderMetaData\n );\n\n getMetaData$ = (key: string) : Observable<MetaData> => {\n return this.select( state => state.metaData[key] ).pipe(\n tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\n notNull())\n }\n\n getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\n getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\n\n private displayedColumns = (state:TableState) => orderMetaData(state).map(md => md.key)\n .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\n readonly displayedColumns$ = this.select(this.displayedColumns);\n readonly hideColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\n }));\n\n readonly resetState = this.updater((state) => {\n const hiddenColumns = Object.values(state.metaData)\n .filter(md => md.fieldType === FieldType.Hidden)\n .map(md => md.key);\n const sorted = this.createPreSort(state.metaData);\n return update(state, {\n hiddenKeys: { $set: [...hiddenColumns] },\n filters: { $set: {} },\n sorted: {$set: sorted},\n userDefined : {$set: {widths:{},order:{},table:{}}},\n });\n });\n\n readonly showColumn = this.updater((state, key: string) => ({\n ...state,\n hiddenKeys: state.hiddenKeys.filter( k => k !== key),\n }));\n\n readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\n\n var hiddenKeysSet= new Set<string>(\n [\n ...displayCols.filter(col => !col.visible).map(col => col.key),\n ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\n ]\n );\n\n return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\n });\n\n\n setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\n const userDefinedWidths = {...state.userDefined.widths};\n colWidths.forEach(cw => {\n userDefinedWidths[cw.key] = cw.widthInPixel;\n });\n return {...state, userDefined: {...state.userDefined,widths:userDefinedWidths}};\n });\n\n setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\n const {newOrder ,oldOrder} = moved;\n const mdsArr = orderViewableMetaData(state);\n moveItemInArray(mdsArr,oldOrder,newOrder);\n\n const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\n aggregate[current.key] = index;\n return aggregate\n },{});\n return({...state, userDefined:{...state.userDefined,order:userDefinedOrder}})\n })\n\n\n readonly filters$ = this.select(state => state.filters );\n\n readonly getFilter$ = (filterId: string) : Observable<FilterInfo | undefined> => {\n return this.select( state => state.filters[filterId] );\n }\n readonly addFilter = this.updater( (state, filter: FilterInfo) => {\n return this.addFiltersToState(state, [filter]);\n });\n\n readonly addFilters = this.updater((state,filters:FilterInfo[])=>{\n return this.addFiltersToState(state, filters);\n })\n\n private addFiltersToState = (state:TableState,filters:FilterInfo[]) : TableState => {\n const filtersObj = filters\n .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\n .reduce((filtersObj: {[k: string]: any},filter)=>{\n if (!filter.filterId) {\n filter.filterId = uuid();\n }\n filtersObj[filter.filterId] = filter;\n return filtersObj;\n },{});\n return {\n ...state,\n filters : {...state.filters, ...filtersObj }\n };\n }\n\n readonly removeFilter = this.updater( (state, filterId: string) =>\n update(state, {filters: {$unset : [filterId ]}})\n );\n\n readonly removeFilters = this.updater( (state, filterIds: string[]) =>\n update(state, {filters: {$unset : [...filterIds ]}})\n );\n\n readonly clearFilters = this.updater((state)=>\n ({...state,filters:{}}))\n\n\n readonly sorted$ = this.select(state => state.sorted);\n\n createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\n return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\n .sort(({ preSort: ps1 }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\n .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\n }\n readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\n const sortArray = state.sorted.filter( s => s.active !== key );\n if(direction) {\n sortArray.unshift({active: key, direction});\n }\n return {\n ...state,\n sorted: sortArray,\n };\n });\n\n readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\n return {\n ...state,\n sorted: sortArray,\n };\n })\n\n updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\n const metaData = state.metaData;\n const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted : this.createPreSort(metaData);\n return {...state, ...incomingTableState, metaData , sorted};\n }\n\n readonly setPageSize = this.updater( (state, pageSize: number)=> ({...state,pageSize}));\n\n readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\n\n getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\n setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\n\n mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\n return {\n key: orig.key,\n displayName: merge.displayName ?? orig.displayName,\n fieldType: merge.fieldType || orig.fieldType,\n additional: {...orig.additional, ...merge.additional},\n order: merge.order ?? orig.order,\n preSort: merge.preSort ?? orig.preSort,\n _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\n width: merge.width ?? orig.width,\n noExport: merge.noExport || orig.noExport,\n noFilter: merge.noFilter || orig.noFilter,\n customCell: merge.customCell ?? orig.customCell,\n transform: merge.transform ?? orig.transform,\n click: merge.click ?? orig.click,\n };\n }\n\n readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\n const metaData = ( Array.isArray(md) ? [...md] : [md] )\n .reduce((prev: Dictionary<MetaData>,curr) => {\n if(prev[curr.key]) {\n prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\n } else {\n prev[curr.key] = curr;\n }\n return prev;\n } ,{});\n let sorted = state.sorted;\n if(sorted.length === 0) {\n sorted = this.createPreSort(metaData);\n }\n const order = this.initializeOrder(state, metaData);\n return {...state, metaData, sorted, userDefined:{...state.userDefined,order:order}};\n });\n\n private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\n const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\n let userDefinedOrder = state.userDefined.order;\n if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\n return {}\n }\n return userDefinedOrder;\n }\n\n toggleCollapseHeader = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseHeader = !tableSettings.collapseHeader;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n toggleCollapseFooter = this.updater((state)=>{\n const tableSettings = {...state.persistedTableSettings};\n tableSettings.collapseFooter = !tableSettings.collapseFooter;\n return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n })\n\n\n setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\n const s:TableState = {\n ...state,\n persistedTableSettings : new PesrsistedTableSettings(settings),\n notPersisitedTableSettings : new NotPersisitedTableSettings(settings)\n };\n return s;\n });\n\n tableSettings$ = this.select(state => {\n const ts : PesrsistedTableSettings & NotPersisitedTableSettings =\n {...state.persistedTableSettings,...state.notPersisitedTableSettings};\n return ts;\n })\n}\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\n\nexport const orderMetaData = (state:TableState) => {\n const userOrderArr = Object.entries(state.userDefined.order);\n return userOrderArr.length ?\n Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\n :\n Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\n}\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 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 { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'func'\n})\nexport class FunctionPipe implements PipeTransform {\n transform(func: ( (...args: any[])=> any ) | string, ...args: any[]): any {\n if(typeof func === 'string') {\n const [instance, ...tail] = args;\n const method = instance[func].bind(instance);\n return method(...tail);\n }\n return func(...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'spaceCase'})\nexport class SpaceCasePipe implements PipeTransform {\n transform(value: string): string {\n return spaceCase(value);\n }\n}\n\n/**\n * Adds a space before uppercase letters that either\n * 1. follows a lowercase letter or digit\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\n * \n * Uppercases the first digit\n * \n * Turns underscores into spaces\n */\nexport function spaceCase(value: string){\n return value?.replace(/(?<=[a-z0-9])([A-Z])|(?<=[a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, ' $1$2')\n // uppercase the first character\n .replace(/^./, str => str.toUpperCase() );\n}\n","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\n\n@Component({\n templateUrl: './initialization-component.html'\n})\nexport class InitializationComponent {\n @ViewChild('boolean', {static: true}) booleanTemplate! : TemplateRef<any>;\n @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\n @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\n @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\n @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\n @ViewChild('expression', {static: true}) expressionTemplate! : TemplateRef<any>;\n @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\n @ViewChild('enum', {static: true}) enumTemplate! : TemplateRef<any>;\n\n}\n","<ng-template #boolean let-element='element' let-metaData='metaData'>\n <span>\n <mat-icon *ngIf=\"element[metaData.key]\">\n {{!!metaData.additional.boolean?.forTrue ? metaData.additional.boolean.forTrue.icon: 'check'}}\n </mat-icon>\n <mat-icon *ngIf=\"!element[metaData.key] && !!metaData.additional.boolean?.showForFalse\">\n {{metaData.additional.boolean.showForFalse === true ? 'clear' : metaData.additional.boolean.showForFalse.icon}}\n </mat-icon>\n </span>\n</ng-template>\n<ng-template #link let-element='element' let-metaData='metaData'>\n <a *ngIf=\"metaData.additional.useRouterLink; else hrefLink\" target=\"{{metaData.additional?.target || '_blank'}}\"\n [routerLink]=\"[metaData.additional.base, metaData.additional.urlKey ? element[metaData.additional.urlKey] : element[metaData.key]]\">\n {{element[metaData.key]}}\n </a>\n <ng-template #hrefLink>\n <a target=\"{{metaData.additional?.target || '_blank'}}\"\n href=\"{{metaData.additional.base}}{{metaData.additional.urlKey? element[metaData.additional.urlKey] : element[metaData.key]}}\">\n {{element[metaData.key]}}\n </a>\n </ng-template>\n</ng-template>\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\n <span>\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\n </span>\n</ng-template>\n<ng-template #currency let-element='element' let-metaData='metaData' >\n <span [class.negative-currency]=\"element[metaData.key] < 0\">\n {{ element[metaData.key] | currency }}\n </span>\n</ng-template>\n<ng-template #array let-element='element' let-metaData='metaData'>\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\n</ng-template>\n<ng-template #expression let-element='element' let-metaData='metaData'>\n <span>{{ metaData.transform | func : element }}</span>\n</ng-template>\n<ng-template #enum let-element='element' let-metaData='metaData' >\n <span>{{ metaData.additional.enumMap[element[metaData.key]] | spaceCase }}</span>\n</ng-template>\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform'>\n <span>{{ transform | func : element[metaData.key] }}</span>\n</ng-template>\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\nimport { Injectable, TemplateRef } from \"@angular/core\";\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\nimport { FieldType } from \"../interfaces/report-def\";\n\n@Injectable({providedIn: 'root'})\nexport class TableTemplateService {\n instance: InitializationComponent;\n templates;\n\n initTemplates() {\n this.templates = { };\n this.templates[FieldType.Array] = this.instance.arrayTemplate;\n this.templates[FieldType.Boolean] = this.instance.booleanTemplate;\n this.templates[FieldType.Currency] = this.instance.currencyTemplate;\n this.templates[FieldType.Date] = this.instance.defaultTemplate;\n this.templates[FieldType.Expression] = this.instance.expressionTemplate;\n this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\n this.templates[FieldType.Link] = this.instance.linkTemplate;\n this.templates[FieldType.Number] = this.instance.defaultTemplate;\n this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\n this.templates[FieldType.String] = this.instance.defaultTemplate;\n this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\n this.templates[FieldType.Enum] = this.instance.enumTemplate;\n }\n getTemplate(fieldType: FieldType) : TemplateRef<any> {\n return this.templates[fieldType];\n }\n\n constructor(resolver: ComponentFactoryResolver, i: Injector) {\n const factory = resolver.resolveComponentFactory(InitializationComponent);\n const c = factory.create(i);\n this.instance = c.instance;\n this.initTemplates();\n }\n}\n","\nexport enum FilterType {\n NumberEquals = 'Equals',\n NumberNotEqual = 'Does Not Equal',\n NumberGreaterThan = 'Greater Than',\n NumberLessThan = 'Less Than',\n NumberBetween = 'Between',\n StringEquals = 'Equals',\n StringContains = 'Contains',\n StringDoesNotContain = 'Does Not Contain',\n StringStartWith = 'Start With',\n StringEndsWith = 'Ends With',\n DateIsOn = 'Is on',\n DateIsNotOn = 'Is Not On',\n DateOnOrAfter = 'On or After',\n DateOnOrBefore = 'On or Before',\n DateBetween = 'Between',\n BooleanEquals = 'Is',\n IsNull = 'Is Blank',\n Or = 'Or',\n And = 'And',\n In = 'In',\n}\n\nexport const NumberFilterMap:FilterToFiltersMap = {\n [FilterType.NumberEquals]: [FilterType.NumberEquals],\n [FilterType.NumberNotEqual]: [FilterType.NumberNotEqual],\n [FilterType.NumberGreaterThan]: [FilterType.NumberGreaterThan],\n [FilterType.NumberLessThan]: [FilterType.NumberLessThan],\n [FilterType.NumberBetween]: [FilterType.NumberBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const StringFilterMap:FilterToFiltersMap = {\n [FilterType.StringEquals]: [FilterType.StringEquals],\n [FilterType.StringContains]: [FilterType.StringContains],\n [FilterType.StringDoesNotContain]: [FilterType.StringDoesNotContain],\n [FilterType.StringStartWith]: [FilterType.StringStartWith],\n [FilterType.StringEndsWith]: [FilterType.StringEndsWith],\n [FilterType.IsNull]: [FilterType.IsNull],\n [FilterType.In]: [FilterType.In],\n};\n\nexport const DateFilterMap:FilterToFiltersMap = {\n [FilterType.DateIsOn]: [FilterType.DateIsOn],\n [FilterType.DateIsNotOn]: [FilterType.DateIsNotOn],\n [FilterType.DateOnOrAfter]: [FilterType.DateOnOrAfter],\n [FilterType.DateOnOrBefore]: [FilterType.DateOnOrBefore],\n [FilterType.DateBetween]: [FilterType.DateBetween],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const BooleanFilterMap :FilterToFiltersMap = {\n [FilterType.BooleanEquals]: [FilterType.BooleanEquals],\n [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const EnumFilterMap : FilterToFiltersMap = {\n [FilterType.IsNull] : [FilterType.IsNull],\n [FilterType.In] : [FilterType.In]\n}\n\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType[]}>;\n","import {Directive, HostListener} from \"@angular/core\";\n\n@Directive({\n selector: \"[stop-propagation]\"\n})\nexport class StopPropagationDirective\n{\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: any): void\n {\n event.stopPropagation();\n }\n\n @HostListener(\"mousedown\", [\"$event\"])\n public onMousedown(event: any): void\n {\n event.stopPropagation();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../../classes/table-store';\nimport { Dictionary } from '../../../interfaces/dictionary';\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-in-list-filter',\n template: `\n <div *ngFor=\"let item of keyValues$ | async| keyvalue\" >\n <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\n {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\n </mat-checkbox>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InListFilterComponent,\n multi: true\n }],\n})\nexport class InListFilterComponent implements ControlValueAccessor {\n constructor(private ref: ChangeDetectorRef, private tableState: TableStore) {}\n value: string[] = [];\n FieldType = FieldType;\n writeValue(obj: string[]): void {\n this.value = obj;\n\n if(this.value) {\n this.selectedKeys = this.value.map( f => f );\n }\n this.ref.markForCheck();\n }\n\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n @Input() key!: string;\n\n keyValues$! : Observable<Dictionary<string>>;\n selectedKeys : string[] = [];\n metaData!: MetaData;\n\n ngOnInit() {\n this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\n tap(metaData => this.metaData = metaData),\n map( metaData => {\n if(metaData.additional?.filterOptions?.filterableValues ) {\n return metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\n } else {\n if(metaData.fieldType === FieldType.Enum ) {\n return metaData.additional!.enumMap;\n }\n }\n return {};\n })\n );\n }\n\n selectFilterChanged($event, val) {\n if($event.checked) {\n this.selectedKeys.push(val);\n } else {\n this.selectedKeys = this.selectedKeys.filter( item => item !== val);\n }\n\n this.value = this.selectedKeys;\n this.onChange(this.value);\n }\n\n}\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 { MatMenuTrigger } from '@angular/material/menu';\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})\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 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 disableRipple [matMenuTriggerFor]=\"menu\" style=\"height:16px;\" [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)=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)\">\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' ></tb-in-list-filter>\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=\"example-full-width font\" style=\"padding: 0 16px\">\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()\">\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 style=\"padding: 0 16px\">\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>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberLessThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.NumberGreaterThan)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.NumberEquals)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\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 style=\"padding: 0 16px\">\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\">\r\n <mat-form-field style=\"padding: 0 16px\" class=\"font auto-width\" stop-propagation >\r\n <span matPrefix>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrAfter)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <mat-icon (click)=\"setFilterType(FilterType.DateOnOrBefore)\" class=\"suffix-icons underline\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple>\r\n <span (click)=\"setFilterType(FilterType.DateIsOn)\" class=\"suffix-icons\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n =</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 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 { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[styler]',\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 { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\nimport { fromEvent, of } from \"rxjs\";\nimport { filter, first, map, shareReplay, switchMap, takeUntil, tap } from \"rxjs/operators\";\nimport { TableStore } from \"../classes/table-store\";\n\n@Directive({\n selector: \"[resizeColumn]\",\n})\nexport class ResizeColumnDirective implements OnInit{\n @Input(\"resizeColumn\") resizable!: boolean;\n\n @Input() key!: string;\n constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\n\n ngOnInit(){\n if (this.resizable){\n const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\n const resizer = this.createResizerSpanInColumnHead(columnHead);\n\n const aggregateMouseEventsMapped$ = this.mouseDownThroghMouseUpEventMapper(resizer,columnHead,table)\n\n const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\n filter(({mouseMove})=>!!mouseMove.buttons),\n map( ({mouseDownData,mouseMove}) => {\n const {newTableWidth,newColumnWidth} = this.calculateNewWidths(mouseDownData,mouseMove)\n return ({\n key:this.key,\n widthInPixel:newColumnWidth,\n tableSize:newTableWidth,\n })\n }),\n shareReplay({bufferSize:1,refCount:true})\n );\n\n this.store.setUserDefinedWidth(resizeColsData$.pipe(\n map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\n ));\n\n this.store.setTableWidth(resizeColsData$.pipe(\n map(resizeData => resizeData.tableSize )));\n }\n\n }\n\n createResizerSpanInColumnHead(columnHead:HTMLElement){\n const resizer = this.renderer.createElement(\"span\");\n this.renderer.addClass(resizer, \"resize-holder\");\n resizer.style['cursor']='col-resize';\n resizer.style['user-select']='none';\n resizer.style['width']='10px';\n resizer.style['height']='100%';\n resizer.style['position']='absolute';\n resizer.style['right']='0';\n resizer.style['top']='0';\n resizer.style['z-index']='1';\n this.renderer.appendChild(columnHead, resizer);\n return resizer;\n }\n\n getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\n const columnHead: HTMLElement = this.el.nativeElement;\n const row = this.renderer.parentNode(columnHead);\n const table = this.renderer.parentNode(row);\n return ({table,columnHead})\n }\n\n mouseDownThroghMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return this.resizerMouseDownEventMapper(resizer,columnHead,table)\n .pipe(\n switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\n map( mouseMove => ({mouseDownData, mouseMove})),\n takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\n ) ),\n )\n }\n resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\n map(event => ({\n startPageX: event.pageX,\n startColumnWidth: this.getElementWidth(columnHead),\n startTableWidth: this.getElementWidth(table),\n }))\n );\n }\n\n calculateNewWidths(mouseDownData:MouseDowmData,mouseMove:MouseEvent):{newTableWidth:number,newColumnWidth:number}{\n const change = (mouseMove.pageX - mouseDownData.startPageX );\n let newColumnWidth = mouseDownData.startColumnWidth + change;\n if(newColumnWidth < 1){\n newColumnWidth = 1;\n }\n const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\n const newTableWidth = (mouseDownData.startTableWidth + columnChange);\n return ({newTableWidth,newColumnWidth})\n }\n getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\n\n}\ninterface MouseDowmData{\n startPageX:number,\n startColumnWidth:number,\n startTableWidth:number,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MetaData } from '../interfaces/report-def';\nimport {sumBy} from 'lodash';\n\n@Pipe({ name: 'columnTotal' })\nexport class ColumnTotalPipe implements PipeTransform {\n transform(data: any[], metaData: MetaData) {\n switch (metaData.additional!.footer!.type) {\n case 'sum':\n return sumBy(data, metaData.key);\n }\n return null;\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren } from '@angular/core';\nimport { FieldType, MetaData } from '../../interfaces/report-def';\nimport { MatColumnDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { CustomCellDirective } from '../../directives';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { TransformCreator } from '../../services/transform-creator';\nimport { TableStore } from '../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { TableTemplateService } from '../../services/table-template-service';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { notNull, previousAndCurrent } from '../../../rxjs/rxjs-operators';\n\ninterface widthStyle {\n flex?: string;\n maxWidth?: string;\n}\n\ninterface allStyles {\n body: widthStyle;\n header: widthStyle;\n footer: widthStyle;\n}\n\n@Component({\n selector: 'tb-column-builder',\n templateUrl: './column-builder.component.html',\n styleUrls: ['./column-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnBuilderComponent implements OnInit {\n FieldType = FieldType;\n filter!: Partial<FilterInfo>;\n @Input() metaData!: MetaData\n @Input() customCell!: CustomCellDirective;\n @Input() data$!: Observable<any[]>;\n\n @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\n outerTemplate!: TemplateRef<any>;\n innerTemplate!: TemplateRef<any>;\n transform!: (o: any, ...args: any[])=> any ;\n\n @ViewChild('body') bodyTemplate!: TemplateRef<any>;\n\n\n constructor(\n private transformCreator: TransformCreator,\n private table: MatTable<any>,\n public state: TableStore,\n private templateService: TableTemplateService,\n ) { }\n\n getInnerTemplate() :TemplateRef<any> {\n if(this.metaData.template) return this.metaData.template;\n if (this.customCell?.TemplateRef) return this.customCell.TemplateRef;\n return this.templateService.getTemplate(this.metaData.fieldType);\n }\n\n getOuterTemplate() {\n return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\n }\n\n ngOnInit() {\n this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\n const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\n previousAndCurrent(0),\n map(this.mapWidth),\n );\n const fullMetaStyles = this.metaData.additional?.styles ?? {};\n this.styles$ = width$.pipe(map(width => {\n const styles: allStyles = {\n header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\n footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\n body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\n };\n return styles;\n }));\n }\n\n ngAfterViewInit() {\n this.outerTemplate = this.getOuterTemplate();\n this.innerTemplate = this.getInnerTemplate();\n this.transform = this.transformCreator.createTransformer(this.metaData);\n this.table.addColumnDef(this.columnDef);\n }\n\n cellClicked(element: any, key: string) {\n if(this.metaData.click) {\n this.metaData.click(element,key);\n }\n }\n\n mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\n\n if( currentUserDefinedWidth ){\n return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\n } if( wasReset() ){\n return ({flex:'1'});\n }\n return ({});\n function wasReset(){\n return previousUserDefinedWidth >=0 && currentUserDefinedWidth == null;\n }\n }\n\n styles$!:Observable<allStyles>\n\n}\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\">\n\n <ng-template #body let-element='element' >\n <mat-cell [styler]='styles.body' (click)='cellClicked(element, metaData.key)'>\n <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }\">\n </ng-container>\n <span class=\"no-val\" *ngIf=\"metaData.fieldType !== FieldType.Expression && ( element[metaData.key] == null ) &&\n !((customCell && customCell.TemplateRef) || metaData.template)\">-</span>\n </mat-cell>\n </ng-template>\n\n <ng-template matHeaderCellDef #myHeader>\n\n <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles: styles.header} \">\n </ng-container>\n </ng-container>\n\n <ng-template #header>\n\n <mat-header-cell [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\" class=\"column-head\" #headref >\n <div class=\"header-container\">\n <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n <ng-template #headerWithoutMenu >\n <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n {{ metaData.displayName ? metaData.displayName : ( metaData.key | spaceCase ) }}\n </div>\n </ng-template>\n <tb-header-menu *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (!metaData.noFilter)\" #menu [metaData]='metaData' [filter]='filter' ></tb-header-menu>\n </div>\n </mat-header-cell>\n </ng-template>\n </ng-template>\n\n\n <ng-container *matCellDef=\"let element;\">\n <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n </ng-container>\n </ng-container>\n\n <ng-template matFooterCellDef>\n <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n <ng-container\n *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n </ng-container>\n </ng-container>\n\n <ng-template #footer>\n <mat-footer-cell [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n <span *ngSwitchCase=\"FieldType.Currency\">\n {{ data | columnTotal: metaData | currency }}\n </span>\n <span *ngSwitchCase=\"FieldType.Number\">\n {{ data | columnTotal: metaData | number }}\n </span>\n </span>\n </mat-footer-cell>\n </ng-template>\n </ng-template>\n</ng-container>\n","import { MatTableDataSource } from '@angular/material/table';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class MatTableObservableDataSource<T> extends MatTableDataSource<T> {\n subscription?: Subscription;\n constructor(private dataSrc: Observable<T[]>) {\n super([]);\n }\n\n connect() {\n if (!this.subscription) {\n this.subscription = this.dataSrc.subscribe( data => this.data = data );\n }\n return super.connect();\n }\n disconnect() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n super.disconnect();\n }\n}\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';\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\nimport { MatTableObservableDataSource } from './MatTableObservableDataSource'\nimport { sortData } from '../functions/sort-data-function';\nimport { MatSort } from '@angular/material/sort';\n\n\nexport function isMultiSort(sort: MatSort): sort is MultiSortDirective {\n return Array.isArray((sort as MultiSortDirective ).rules);\n}\n\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\n{\n\n constructor(dataSrc: Observable<T[]>)\n {\n super(dataSrc);\n\n const baseSort = this.sortData;\n this.sortData = ((data: T[], sort: MatSort) => isMultiSort(sort) ? sortData(data, sort.rules) : baseSort(data, sort));\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewChild,\n Input,\n ElementRef,\n AfterViewInit,\n OnInit,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { asyncScheduler, merge, Observable } from 'rxjs';\nimport { delay, distinct, distinctUntilKeyChanged, map } from 'rxjs/operators';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { TableStore } from '../../classes/table-store';\n@Component({\n selector: 'tb-paginator',\n template: `\n <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\" *ngIf=\"currentPageData$ | async as pageData\">\n {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\n </div>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\n [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\n </mat-paginator>\n `,\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnInit, AfterViewInit{\n @Input() dataSource! : GenericTableDataSource<any>;\n @Input() tableElRef! : ElementRef\n @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\n currentPageData$!: Observable<CurrentPageDetails>;\n collapseFooter$!:Observable<boolean>;\n @Input() data$!: Observable<any[]>;\n\n constructor(private state : TableStore){}\n ngOnInit(){\n this.dataSource.paginator = this.paginator;\n this.ourPageEvent = true;\n this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\n this.state.setPageSize(onPagiantorPageSizeChange(this.paginator));\n this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n\n }\n ngAfterViewInit(){\n this.currentPageData$ = merge(\n this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\n this.data$.pipe(\n distinctUntilKeyChanged(\"length\"),\n delayToAllowForProperUpdate,\n map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\n );\n }\n\n paginatorChange() : void {\n if(!this.ourPageEvent){\n setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\n } else {\n this.ourPageEvent = false;\n }\n }\n ourPageEvent = false;\n\n}\n\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\n currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\n currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\n total : pageData.length\n});\n\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\n currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\n total:paginator.length})\n\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\n\ninterface CurrentPageDetails {\n currentStart:number,\n currentEnd:number,\n total:number\n}\n\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.pageSize),distinct());\n\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\n paginator._changePageSize(pageSize);\n\nconst onPagiantorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\n","import {\n Component,\n ViewChild,\n Input,\n ChangeDetectionStrategy,\n Output,\n SimpleChanges,\n OnInit,\n QueryList,\n ComponentFactoryResolver,\n ViewContainerRef,\n ElementRef,\n ComponentFactory,\n Injector,\n} from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { MatRowDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TableStore } from '../../classes/table-store';\nimport { tap, map } from 'rxjs/operators';\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { FieldType } from '../../interfaces/report-def';\nimport { notNull, previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\n\n@Component({\n selector: 'tb-generic-table',\n templateUrl: './generic-table.component.html',\n styleUrls: ['./generic-table.component.scss','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GenericTableComponent implements OnInit {\n\n @Input() data$!: Observable<any[]>;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() rows!: QueryList<MatRowDef<any>>;\n @Input() isSticky = false;\n @Input() columnBuilders!: ColumnBuilderComponent[];\n\n @Input() columnInfos!: Observable<ColumnInfo[]>;\n @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\n @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\n currentColumns!: string[];\n\n dataSource!: GenericTableDataSource<any>;\n keys: string [] = [];\n factory: ComponentFactory<ColumnBuilderComponent> ;\n injector: Injector;\n constructor(\n private sort: MatSort,\n public state: TableStore,\n componentFactoryResolver: ComponentFactoryResolver,\n private viewContainer: ViewContainerRef,\n injector: Injector,\n ) {\n this.factory = componentFactoryResolver.resolveComponentFactory(ColumnBuilderComponent);\n this.injector = Injector.create({ providers: [{provide: MatTable, useFactory: ()=> {return this.table} }], parent: injector});\n }\n\n trackByFunction = (index:number, item: any) => {\n if (!item) {\n return null;\n }\n if (this.trackBy) {\n return item[this.trackBy];\n }\n return item;\n }\n rowDefArr :MatRowDef<any>[]= [];\n columns:string [] = [];\n ngOnChanges(changes: SimpleChanges) {\n if (changes.rows && this.rows && this.myColumns.length) {\n this.initializeRowDefs([...this.rows]);\n }\n }\n\n ngOnInit() {\n if (this.SelectionColumn) {\n this.columns.push('select');\n }\n if (this.IndexColumn) {\n this.columns.push('index');\n }\n this.createDataSource();\n\n this.state.on(this.columnInfos, columns => {\n columns.forEach( ci => this.addMetaData(ci) )});\n this.initializeRowDefs([...this.rows]);\n this.state.on(this.state.displayedColumns$, keys => {\n this.keys = [...this.columns, ...keys];\n this.rowDefArr?.forEach(row => row.columns = this.keys)\n } );\n }\n createDataSource() {\n this.dataSource = new GenericTableDataSource(\n this.data$.pipe(tap((d) => this.selection.clear() ))\n );\n this.dataSource.sort = this.sort;\n }\n\n myColumns: Dictionary<ColumnBuilderComponent> = {};\n\n addMetaData(column: ColumnInfo) {\n let columnBuilder = this.myColumns[column.metaData.key];\n if(columnBuilder) {\n columnBuilder.metaData = column.metaData;\n } else {\n const component = this.viewContainer.createComponent(this.factory,0, this.injector);\n component.instance.customCell = column.customCell;\n component.instance.metaData = column.metaData;\n component.instance.data$ = this.data$;\n this.myColumns[column.metaData.key] = component.instance;\n }\n }\n\n initializeRowDefs = (defs:MatRowDef<any>[])=>{\n this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\n this.rowDefArr = defs;\n defs.forEach(r => {\n r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\n if (this.table) {\n this.table.addRowDef(r);\n }\n });\n }\n selection : SelectionModel<any> = new SelectionModel<any>(true, []);\n @Output() selection$: Observable<any> = this.selection.changed;\n masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\n masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected() ?\n this.selection.clear() :\n this.selection.select(...this.dataSource.data);\n }\n\n defVal: number | undefined = 0;\n\n tableWidth = this.state.getUserDefinedTableSize$.pipe(\n previousAndCurrent<number | undefined>(0),\n map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\n if( currentUserDefinedWidth){\n return ({width:`${currentUserDefinedWidth}px`});\n } if( wasReset() ){\n return ({width:'initial'});\n }\n return ({});\n\n function wasReset(){\n return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\n }\n })\n\n );\n\n collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n}\n","<mat-table #table [dataSource]=\"dataSource\" [trackBy]='trackByFunction' [styler]=\"tableWidth | async\">\n\n <ng-container matColumnDef=\"select\">\n\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" style=\"flex: 0 0 30px;\" >\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"!!(masterToggleChecked$ | async)\"\n [indeterminate]=\"masterToggleIndeterminate$ | async\">\n </mat-checkbox>\n </mat-header-cell>\n\n <mat-cell *matCellDef=\"let row\" style=\"flex: 0 0 30px;\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </mat-cell>\n\n <mat-footer-cell *matFooterCellDef style=\"flex: 0 0 30px;\">\n {{ selection.selected.length }}\n </mat-footer-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"index\">\n <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) + i + 1 }} </mat-cell>\n <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n</mat-table>\n\n<div class=\"flx-row-end sticky\">\n <tb-paginator [dataSource]=\"dataSource\" [tableElRef]=\"tableElRef\" #tbPaginator\n [data$]=\"data$\"></tb-paginator>\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n\n</div>\n\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\n\n// here is how to use it\n// <generic-table [report]=\"report\">\n// <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\n// <p *customCell=\"'column2'\">I am custom cell two </p>\n// </generic-table>\n@Directive({\n selector: '[customCell]',\n})\nexport class CustomCellDirective implements AfterContentInit {\n @Input() customCell!: string;\n @Input() displayName?: string;\n @Input() preSort?: SortDef;\n @Input() TemplateRef: TemplateRef<any>;\n @Input() customCellOrder?: number;\n @Input() customCellWidth?: string;\n constructor(\n @Optional() private templateRef: TemplateRef<any>,\n @Optional() public columnDef: CdkColumnDef\n ) {\n this.TemplateRef = this.templateRef;\n }\n ngAfterContentInit() {\n if (this.TemplateRef === null) {\n this.TemplateRef = this.templateRef;\n }\n }\n\n getMetaData(metaData? : MetaData): MetaData {\n return {\n key: this.customCell,\n displayName: this.displayName ?? metaData?.displayName,\n preSort: this.preSort ?? metaData?.preSort,\n fieldType: metaData?.fieldType ?? FieldType.Unknown,\n order: this.customCellOrder ?? metaData?.order,\n _internalNotUserDefined: !(!!metaData),\n width: this.customCellWidth ?? metaData?.width,\n customCell: true,\n noExport: !metaData\n };\n }\n}\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\nimport { DisplayCol } from '../../classes/display-col';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\n\n@Component({\n selector: 'tb-col-displayer',\n templateUrl: './gen-col-displayer.component.html',\n styleUrls: ['./gen-col-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenColDisplayerComponent {\n columns$: Observable< DisplayCol[]>;\n constructor( private tableState: TableStore ) {\n this.columns$ = this.tableState.state$.pipe(\n map( state =>\n orderViewableMetaData(state)\n .map( md => ({\n key: md.key,\n displayName: md.displayName,\n isVisible: !state.hiddenKeys.includes(md.key)\n }))\n ),\n );\n }\n\n reset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = true);\n this.emit(displayCols);\n }\n drop(event: CdkDragDrop<string[]>) {\n this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n }\n unset(displayCols: DisplayCol[]) {\n displayCols.forEach(c => c.isVisible = false);\n this.emit(displayCols);\n }\n\n emit(displayCols: DisplayCol[]) {\n this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\n }\n}\n","<ng-container *ngIf=\"columns$ | async as displayCols\">\n <span matTooltip=\"Show/hide columns\" class=\"pull-right\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon color=\"primary\">visibility_off</mat-icon>\n </button>\n </span>\n <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n <button mat-menu-item>\n <div style=\"display: flex; flex-direction: row-reverse;\">\n <span matTooltip=\"Close\">\n <button class=\"filter-button\" mat-icon-button>\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </div>\n </button>\n <button mat-menu-item stop-propagation>\n <div style=\"display: flex; justify-content: space-between;\">\n <span matTooltip=\"Show all columns\">\n <button mat-icon-button (click)=\"reset(displayCols)\">\n <mat-icon color=\"primary\">done_all</mat-icon>\n </button>\n </span>\n\n <span matTooltip=\"Hide all columns\">\n <button mat-icon-button (click)=\"unset(displayCols)\">\n <mat-icon color=\"primary\">cancel</mat-icon>\n </button>\n </span>\n </div>\n </button>\n\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation [cdkDropListLockAxis]=\"'y'\">\n <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\"\n *ngFor=\"let col of displayCols\">\n <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; justify-content: space-between; align-items: center;\">\n <p class=\"label\" style=\"display: flex;\">\n {{col.displayName || (col.key | spaceCase) }}\n </p>\n <span matTooltip=\"Hide Column\" class=\"show-hide\" *ngIf=\"col.isVisible; else hidden\">\n <button mat-icon-button>\n <mat-icon color=\"primary\">check_box</mat-icon>\n </button>\n </span>\n\n <ng-template #hidden >\n <span matTooltip=\"Show Column\" class=\"show-hide\">\n <button mat-icon-button>\n <mat-icon>indeterminate_check_box</mat-icon>\n </button>\n </span>\n </ng-template>\n\n </div>\n </button>\n </div>\n </mat-menu>\n</ng-container>\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';\nimport { MetaData, FieldType } from '../../../interfaces/report-def';\nimport { Observable } from 'rxjs';\nimport { TableStore } from '../../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\n\n@Component({\n selector: 'tb-filter-displayer',\n templateUrl: './gen-filter-displayer.component.html',\n styleUrls: ['./gen-filter-displayer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GenFilterDisplayerComponent {\n\n constructor( public tableState: TableStore, public filterStore : WrapperFilterStore) {\n this.filterCols$ = tableState.metaDataArray$.pipe(\n map(md => Object.values( md ).filter(m => (m.fieldType !== FieldType.Hidden) && (!m.noFilter))),\n );\n }\n\n filterCols$: Observable<MetaData[]>;\n\n addFilter(metaData: MetaData) {\n this.filterStore.addFilter({key: metaData.key, fieldType: metaData.fieldType});\n }\n}\n","<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n <button class=\"filter-labels\" *ngFor=\"let md of filterCols$ | async\" (click)=\"addFilter(md)\" mat-menu-item>\n {{md.displayName || (md.key | spaceCase)}}\n </button>\n</mat-menu>\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';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\n\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() === isOnVal);\n}\n\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const isNotOnVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val?.getTime() !== isNotOnVal);\n}\n\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const afterVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() >= afterVal);\n}\n\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n const beforeVal = new Date( filterInfo.filterValue).getTime();\n return ((val)=>val.getTime() <= beforeVal);\n}\n\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\n const startVal = new Date(filterInfo.filterValue.Start);\n const endVal = new Date(filterInfo.filterValue.End);\n return ((val)=>val>=startVal && val <= endVal);\n}\n\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n [FilterType.DateIsOn]: dateIsOnFunc,\n [FilterType.DateIsNotOn]: dateIsNotOnFunc,\n [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\n [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\n [FilterType.DateBetween]: dateBetweenFunc,\n [FilterType.IsNull]: isNull,\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\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 } from '../enums/filterTypes';\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\nimport { DateFilterFuncs } from '../functions/date-filter-function';\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\nimport { FieldType } from '../interfaces/report-def';\nimport { Dictionary } from '../interfaces/dictionary';\n\ntype FilterTypeMapType = { [key in FieldType]: FilterToFiltersMap};\nexport type UnmappedTypes = FieldType.Expression |\n FieldType.Hidden |\n FieldType.ImageUrl;\n\n\nexport type mappedFieldTypes =\n FieldType.Unknown |\n FieldType.Date |\n FieldType.Currency |\n FieldType.Array |\n FieldType.Number |\n FieldType.String |\n FieldType.Boolean |\n FieldType.PhoneNumber |\n FieldType.Link |\n FieldType.Enum;\n\nexport const filterTypeMap: Omit<FilterTypeMapType, UnmappedTypes> = {\n [FieldType.Unknown] : StringFilterMap,\n [FieldType.Date] : DateFilterMap,\n [FieldType.Currency] : NumberFilterMap,\n [FieldType.Array] : StringFilterMap,\n [FieldType.Number] : NumberFilterMap,\n [FieldType.String] : StringFilterMap,\n [FieldType.Boolean] : BooleanFilterMap,\n [FieldType.PhoneNumber] : StringFilterMap,\n [FieldType.Link] : StringFilterMap,\n [FieldType.Enum] : EnumFilterMap,\n};\n\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\n [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.every( f => f(obj));\n },\n [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean => {\n const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n return (obj: any) : boolean => filters.some( f => f(obj));\n },\n};\n\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\n [FieldType.String] : StringFilterFuncs,\n [FieldType.Array] : StringFilterFuncs,\n [FieldType.Currency] : NumberFilterFuncs,\n [FieldType.PhoneNumber] : StringFilterFuncs,\n [FieldType.Date] : DateFilterFuncs,\n [FieldType.Number] : NumberFilterFuncs,\n [FieldType.Boolean] : BooleanFilterFuncs,\n [FieldType.Unknown] : StringFilterFuncs,\n [FieldType.Enum] : EnumFilterFuncs ,\n [FieldType.Link] : StringFilterFuncs,\n};\nexport interface FilterInfo<T extends FieldType = any> {\n filterId: string;\n filterType: FilterType;\n filterValue: any;\n key: string;\n fieldType: T;\n}\n\nexport interface PartialFilter<T extends FieldType = any> {\n filterId?: string;\n key: string;\n fieldType: T;\n filterType?: FilterType;\n filterValue?: any;\n}\n\n\nexport function createFilterFunc(filter: FilterInfo): (val: any) => boolean {\n if (filter.filterValue === undefined) {\n return () => true;\n }\n\n const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\n if(!func) {\n if(filterFactoryMap[filter.filterType]){\n return filterFactoryMap[filter.filterType!](filter);\n }\n }\n\n const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\n return (rowObj) => {\n const value = rowObj[filter.key];\n return ((value == undefined) && cannotBeTrueForNull)\n ? false\n : func( value);\n };\n}\n\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\nexport type Range<T> = {Start:T,End:T};\n\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\n\n@Directive({\n selector: '[autoFocus]'\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n @Input() autoFocus = true;\n constructor(private elementRef: ElementRef) { }\n\n ngAfterViewInit() {\n if(this.autoFocus){\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n@Component({\n selector: 'lib-in-filter',\n templateUrl: './in-filter.component.html',\n styleUrls: ['./in-filter.component.css'],\n changeDetection:ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: InFilterComponent,\n multi: true\n }],\n})\nexport class InFilterComponent implements ControlValueAccessor {\n FieldType = FieldType;\n @Input() type! : FieldType;\n value: any[] = [undefined];\n\n constructor(private ref: ChangeDetectorRef) {\n this.value = [undefined];\n }\n writeValue(obj: any[]): void {\n if(!obj?.length) obj = [undefined];\n this.value = obj;\n this.ref.markForCheck();\n }\n onChange = (_: any) => { };\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n onTouched = () => { };\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n throw new Error('Method not implemented.');\n }\n\n addInput(){\n this.value = [...this.value, undefined];\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n removeInput(index: number){\n this.value = [...this.value];\n this.value.splice(index,1);\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n onValueChange(i:number,value: number | string){\n this.value = [...this.value];\n this.value[i] = value;\n this.ref.markForCheck();\n this.onChange(this.value);\n }\n\n}\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';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n\n@Component({\n selector: 'tb-number-filter',\n templateUrl: './number-filter.component.html',\n styleUrls: ['./number-filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class NumberFilterComponent {\n FilterType = FilterType; FieldType = FieldType;\n @Input() CurrentFilterType!: FilterType;\n @Input() info!:PartialFilter;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\n </mat-form-field>\n</ng-container>\n\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.NumberBetween\">\n <ng-container ngModelGroup=\"filterValue\" >\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n<div class=\"inline\" *ngIf=\"CurrentFilterType === FilterType.In\">\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' ></lib-in-filter>\n</div>\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { FilterInfo, PartialFilter } from '../../classes/filter-info';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n selector: 'tb-date-filter',\n templateUrl: './date-filter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}]\n})\nexport class DateFilterComponent {\n FilterType = FilterType;\n @Input() info!: PartialFilter;\n @Input() CurrentFilterType!: FilterType;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n <mat-datepicker-toggle matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #cal></mat-datepicker>\n </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n <ng-container ngModelGroup=\"filterValue\">\n <mat-form-field class=\"my-filter\" >\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"From\" [matDatepicker]=\"fromVal\"\n (click)=\"fromVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #fromVal></mat-datepicker>\n </mat-form-field>\n <mat-form-field class=\"my-filter\">\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n <mat-datepicker #toVal></mat-datepicker>\n </mat-form-field>\n </ng-container>\n</ng-container>\n\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { filterTypeMap, FilterInfo, UnmappedTypes, mappedFieldTypes, PartialFilter } from '../../classes/filter-info';\nimport { TableStore } from '../../classes/table-store';\nimport { FilterType } from '../../enums/filterTypes';\nimport { FieldType } from '../../interfaces/report-def';\n\n\ntype thingy = Omit<FieldType,UnmappedTypes>\n\n@Component({\n selector: 'tb-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterComponent<T extends mappedFieldTypes = any> {\n filterTypes = filterTypeMap;\n FilterType = FilterType;\n FieldType = FieldType;\n @Input() filter!: PartialFilter;;\n @Output() close = new EventEmitter();\n currentFilterType?: FilterType;\n constructor( public state: TableStore) { }\n\n ngOnInit() {\n this.currentFilterType = this.filter.filterType;\n }\n onEnter(filter: FilterInfo, event: any) {\n event.preventDefault();\n if (filter.filterValue != null && filter.filterType) {\n this.state.addFilter(filter);\n this.close.emit();\n }\n }\n}\n","<mat-card class=\"mat-elevation-z5\" *ngIf=\"filter\">\n <form #form=\"ngForm\" (keydown.enter)=\"onEnter(form.value,$event)\" (keydown.escape)=\"close.emit()\">\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n <div class=\"row\" >\n <h4 class=\"filter-name\">{{(filter.key | spaceCase)}} Filter</h4>\n <button class=\"cancel-button\" color=\"primary\" mat-icon-button (click)=\"close.emit();\" type=\"button\"\n matTooltip=\"Close\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n </div>\n <div class=\"row\">\n <mat-form-field class=\"my-filter\" >\n <mat-select placeholder=\"Select Filter Type\" name=\"filterType\" [(ngModel)]=\"currentFilterType\" >\n <mat-option *ngFor=\"let kvp of filterTypes[filter.fieldType] | keyvalue \" [value]=\"$any(kvp.value)[0]\">\n {{ kvp.key }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link ||\n filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber\" >\n <ng-container *ngTemplateOutlet=\"String\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency\">\n <tb-number-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\" ></tb-number-filter>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Boolean\">\n <ng-container *ngTemplateOutlet=\"Boolean\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"filter.fieldType === FieldType.Date\">\n <tb-date-filter [info]=\"filter\" [CurrentFilterType]=\"currentFilterType!\"></tb-date-filter>\n </ng-container>\n <ng-container *ngSwitchCase='filter.fieldType === FieldType.Enum' >\n <ng-container *ngTemplateOutlet=\"Enum\"></ng-container>\n </ng-container>\n </ng-container>\n\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" *ngIf=\"currentFilterType === FilterType.IsNull\">\n <mat-radio-button [value]=\"true\">True</mat-radio-button>\n <mat-radio-button [value]=\"false\">False</mat-radio-button>\n </mat-radio-group>\n\n </div>\n <button mat-button (click)=\"state.addFilter(form.value)\" disableRipple [disabled]=\"form.value.filterValue==undefined || !form.value.filterType\">\n Apply\n </button>\n\n\n<ng-template #String>\n <mat-form-field class=\"my-filter\" *ngIf=\"currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In\">\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\n </mat-form-field>\n <ng-container *ngIf=\"currentFilterType === FilterType.In\">\n <lib-in-filter [type]=\"FieldType.String\" name='filterValue' [(ngModel)]=\"filter.filterValue\" ></lib-in-filter>\n </ng-container>\n</ng-template>\n\n<ng-template #Boolean >\n <div class=\"switch\" [ngSwitch]=\"currentFilterType\">\n <div class=\"switch\" *ngSwitchCase=\"FilterType.BooleanEquals\">\n <mat-radio-group name=\"filterValue\" [ngModel]=\"filter.filterValue\" >\n <mat-radio-button [value]=\"true\" preventEnter>True</mat-radio-button>\n <mat-radio-button [value]=\"false\" preventEnter>False</mat-radio-button>\n </mat-radio-group>\n </div>\n </div>\n</ng-template>\n\n <ng-template #Enum>\n <ng-container *ngIf='currentFilterType === FilterType.In' >\n <tb-in-list-filter [key]='filter.key' name='filterValue' [(ngModel)]='filter.filterValue' ></tb-in-list-filter>\n </ng-container>\n </ng-template>\n\n </form>\n</mat-card>\n","\nimport { NgModule } from '@angular/core';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatChipsModule } from '@angular/material/chips';\n\n\n@NgModule({\n imports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ],\n exports: [\n MatSlideToggleModule,\n MatTableModule,\n MatSelectModule,\n MatDialogModule,\n MatDatepickerModule,\n MatRadioModule,\n MatButtonModule,\n MatExpansionModule,\n MatStepperModule,\n MatToolbarModule,\n MatTooltipModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatListModule,\n MatGridListModule,\n MatCardModule,\n MatSidenavModule,\n MatTabsModule,\n MatInputModule,\n MatTabsModule,\n MatCheckboxModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatSortModule,\n MatAutocompleteModule,\n MatPaginatorModule,\n MatChipsModule,\n MatDialogModule,\n ]\n\n})\nexport class MaterialModule { }\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { map } from 'rxjs/operators';\nimport { TableStore } from '../classes/table-store';\n\n@Directive({\n selector: '[multiSort]',\n exportAs: 'multiSort',\n inputs: ['disabled: matSortDisabled'],\n providers: [\n { provide: MatSort, useExisting: MultiSortDirective }\n ]\n})\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\n rules: Sort[] = [];\n\n constructor(private state: TableStore) {\n super();\n this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\n this.state.on(\n this.state.sorted$,\n rules => {\n this.rules = rules;\n\n if (this.active && rules.length === 0) {\n this.active = '';\n this.direction = '';\n this.sortChange.emit({ active: '', direction: '' });\n }\n\n if(rules.length > 0 && (this.active !== rules[0].active || this.direction !== rules[0].direction)) {\n this.active = rules[0].active;\n this.direction = rules[0].direction;\n this.sortChange.emit(rules[0]);\n }\n\n }\n );\n }\n\n}\n","import { Observable, combineLatest, of } from 'rxjs';\nimport { map, scan, shareReplay } from 'rxjs/operators';\nimport { combineArrays } from '../../rxjs/rxjs-operators';\nimport { createFilterFunc, FilterInfo } from './filter-info';\n\nexport class DataFilter<T = any> {\n\n constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\n }\n\n filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\n return data.filter( r => filters.every( fltr => fltr(r)) );\n }\n\n filterData(data$: Observable<T[]>) {\n return combineLatest([data$, this.filters$]).pipe(\n map(([data, filters]) => this.filter(data, filters)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n appendFilters(filters$: Observable<FilterInfo[]>) : DataFilter {\n return new DataFilter(combineArrays([\n this.filters$ ?? of([]),\n filters$.pipe(map(fltrs => fltrs.map(filter => createFilterFunc(filter))))\n ]));\n }\n}\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';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport { combineLatest} from 'rxjs';\nimport { orderMetaData, TableStore } from '../classes/table-store';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\nimport { downloadData } from '../functions/download-data';\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\nimport { TableState } from '../classes/TableState';\nimport { isPipe } from './transform-creator';\n@Injectable()\nexport class ExportToCsvService<T> {\n constructor(\n public state: TableStore,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private datePipe: DatePipe,\n ){}\n\n exportToCsv = (data: Observable<T[]>) => {\n const exportableFields$ = this.state.state$.pipe(\n map(mapExportableFields)\n );\n\n combineLatest([data,exportableFields$]).pipe(\n first(),\n map(([data,fields]) => this.csvData(data,fields)),\n ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\n }\n\n csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\n const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\n res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\n return res.join('\\n');\n }\n\n metaToField = (meta: MetaData<T>, row: T) => {\n let val: any = row[meta.key];\n if (val == null && !meta.transform) return val\n if(meta.transform && meta.fieldType !== FieldType.Expression){\n const transform = meta.transform as any;\n return isPipe(transform) ? transform.transform(val) : transform(val);\n }\n switch (meta.fieldType) {\n case FieldType.Date:\n const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\n val = this.transform(val, dateFormat);\n break;\n case FieldType.String:\n const prepend: string = meta.additional?.export?.prepend || '';\n val = prepend + val;\n break;\n case FieldType.Array:\n const additional = meta.additional as ArrayAdditional;\n val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\n break;\n case FieldType.Expression:\n val = (meta.transform as any)(row);\n break;\n }\n if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\n val = val.replace('\"', '\"\"');\n val = '\"' + val + '\"';\n }\n return val;\n }\n\n private transform(val: any, dateFormat: any) {\n if (this.config.transformers && this.config.transformers[FieldType.Date]) {\n return this.config.transformers[FieldType.Date]!(val);\n }\n return this.datePipe.transform(val, dateFormat);\n }\n}\n\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\n\n orderMetaData(state)\n .filter( meta => !keysToRemove.includes(meta.key));\n\n\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\n .filter(md => md.noExport )\n .map( md => md.key );\n\nexport const mapExportableFields = (state: TableState) => {\n const fieldsToRemove = nonExportableFields(state)\n .concat(state.hiddenKeys);\n return removeFromMetaData(state, fieldsToRemove);\n}\n","import { ArrayStyle } from '../interfaces/report-def';\n\nexport interface DefaultSettings {\n dateFormat?: string;\n}\n\nexport const ArrayDefaults = {\n limit : 3,\n arrayStyle : ArrayStyle.CommaDelimited\n}","import { createSelector } from '@ngrx/store';\nimport { GlobalStorageState, Profile } from './reducer';\n\nexport const selectGlobalStorageState = (state: {globalStorageState: GlobalStorageState}) => state.globalStorageState;\n\nexport const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys )\n\nexport const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);\n\nexport const selectLocalProfile = <T>(key:string) => createSelector(selectGlobalStorageState, state => state.localProfiles[key]);\n\nexport const selectLocalProfileState = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.states[profile.current ?? profile.default];\n }\n return null;\n});\n\nexport const selectLocalProfileCurrentKey = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return profile.current ?? profile.default;\n }\n return 'default';\n});\n\nexport const selectLocalProfileKeys = <T>(key:string) => createSelector(\n selectLocalProfile(key),\n (profile: Profile<T>) => {\n if(profile) {\n return Object.keys(profile.states).filter( key => key);\n }\n return null;\n});\n","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const setLocalProfile = createAction('[State Storage] Set Local Profile', props<{key: string, value: any, persist?: boolean}>());\r\n\r\nexport const setLocalProfilesState = createAction('[State Storage] Set Local Profiles Current', props<{key: string, current: string}>());\r\n\r\nexport const deleteLocalProfilesState = createAction('[State Storage] Delete Local Profiles Current', props<{key: string, stateKey: string}>());\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'})\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';\nimport { FilterType } from '../enums/filterTypes';\n\n@Pipe({name: 'formatFilterType'})\nexport class FormatFilterTypePipe implements PipeTransform {\n transform(filterType: FilterType, value: any){\n if(filterType === FilterType.IsNull){\n return value ? filterType : 'Is Not Blank'\n }\n return filterType;\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableStore } from '../classes/table-store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FieldType } from '../interfaces/report-def';\nimport { DatePipe } from '@angular/common';\nimport { FilterType } from '../enums/filterTypes';\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\n\n\n@Pipe({name: 'formatFilterValue'})\nexport class FormatFilterValuePipe implements PipeTransform {\n constructor( public tableState: TableStore , private datePipe: DatePipe) {\n }\n transform(value: any, key: string, filterType: FilterType): Observable<string> {\n return this.tableState.getMetaData$(key).pipe(\n map( md => {\n if(filterType === FilterType.IsNull) {\n return '';\n }\n if(value && (filterType === FilterType.In )){\n if(md.fieldType === FieldType.Enum) {\n return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\n }\n return value.join(', ') ?? value;\n }\n if(filterType === FilterType.NumberBetween){\n if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value.Start, 'MM/dd/yy')+ ' - ' + this.datePipe.transform(value.End, 'MM/dd/yy');\n }else{\n value = value.Start + ' - ' + value.End;\n }\n } else if(md.fieldType === FieldType.Date){\n value = this.datePipe.transform(value, 'MM/dd/yy');\n }\n return value\n })\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { TableStore } from '../../../classes/table-store';\nimport { FilterInfo } from '../../../classes/filter-info';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-filter-list',\n templateUrl: './filter-list.component.html',\n styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css']\n})\nexport class FilterChipsComponent {\n\n constructor( public tableState: TableStore, private filterStore : WrapperFilterStore) {\n }\n\n filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(map( filters => Object.values(filters)));\n\n deleteByIndex(index: number) {\n this.filterStore.deleteByIndex(index);\n }\n\n addFilter(filter:FilterInfo<any>){\n this.filterStore.addFilter(filter);\n }\n\n clearAll() {\n this.filterStore.clearAll();\n }\n\n currentFilters$ = this.filterStore.currentFilters$;\n}\n","<div style=\"display: flex; flex-direction: row;justify-content: flex-end;\" *ngrxLet=\"currentFilters$ as currentFilters\" >\n\n <button class=\"cancel-button pull-right\" *ngIf=\"currentFilters.length\" mat-icon-button (click)=\"clearAll()\"\n matTooltip=\"Close all Filters\">\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\n </button>\n\n\n <div *ngIf=\"currentFilters.length\" class=\"float\">\n <div class=\"filter\" *ngFor=\"let filter of (currentFilters$ | async); index as i;\">\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex(i)\" > </tb-filter>\n </div>\n </div>\n\n <mat-chip-list *ngrxLet=\"filters$ as filters\">\n <mat-chip *ngFor=\"let filter of filters\" (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n <mat-chip *ngIf=\"filters.length >= 2\" (removed)=\"tableState.clearFilters()\">\n Clear All\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </mat-chip-list>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { notNull } from '../../../rxjs/rxjs-operators';\n\n@Injectable()\nexport class SortMenuComponentStore extends ComponentStore<ComponenStoreState> {\n constructor(private tableState: TableStore){\n super({notSorted:[],sorted:[]})\n }\n private set = this.updater((state,data:ComponenStoreState)=> ({...data}));\n\n setSorted = this.updater((state,sorted:SortWithName[])=>({...state,sorted}));\n\n setNotSorted = this.updater((state,notSorted:SortWithName[])=>({...state,notSorted}));\n sorted$ = this.select(state=>state.sorted);\n notSorted$ = this.select(state=>state.notSorted);\n setDirection = this.updater((state,sort:SortWithName)=>{\n const index = state.sorted.findIndex(s => s.active === sort.active);\n const sorted = [...state.sorted];\n sorted.splice(index,1,sort);\n return ({...state,sorted});\n })\n reset = () => {\n const sorted = this.tableState.sorted$.pipe(\n mergeMap(sort => this.tableState.metaData$.pipe(\n notNull(),\n map(\n meta => sort.map(s => {\n return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\n )))\n );\n const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\n metas => this.tableState.sorted$.pipe(\n map(s => metas.filter(meta=> !s.some(s=>s.active=== meta.key))\n .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\n )\n ));\n this.set(combineLatest([\n sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\n ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\n }\n}\n\nexport interface ComponenStoreState {\n sorted : SortWithName[];\n notSorted: SortWithName[];\n}\n\nexport interface SortWithName extends Sort{\n displayName : string;\n}\n\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\n arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { SortDirection } from '../../interfaces/report-def';\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\n\n@Component({\n selector: 'tb-sort-menu',\n templateUrl: './sort-menu.component.html',\n styleUrls: ['./sort-menu.component.scss'],\n providers:[SortMenuComponentStore]\n})\nexport class SortMenuComponent implements OnInit{\n\n sorted$:Observable<SortWithName[]>;\n notSorted$:Observable<SortWithName[]>;\n SortDirection = SortDirection;\n dirty$ = new BehaviorSubject(false);\n constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\n this.sorted$=this.store.sorted$.pipe(map(data=>[...data]));\n this.notSorted$=this.store.notSorted$.pipe(map(data=>[...data]));\n }\n\n reset(){\n this.dirty$.next(false);\n this.store.reset();\n }\n\n ngOnInit(){\n this.store.reset();\n }\n\n dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\n this.dirty$.next(true);\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\n this.store.setSorted(event.container.data);\n this.store.setNotSorted(event.previousContainer.data);\n }\n }\n\n dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\n if (event.previousContainer === event.container) {\n return;\n } else {\n this.dirty$.next(true);\n transferArrayItem(event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex);\n event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\n\n this.store.setNotSorted(event.container.data);\n this.store.setSorted(event.previousContainer.data);\n }\n }\n\n apply = this.store.effect((obs:Observable<null>)=>\n obs.pipe(tap(()=>{\n this.dirty$.next(false);\n this.tableState.setAllSort(this.store.sorted$.pipe(first()))\n })));\n\n setDirection(sort:SortWithName){\n this.dirty$.next(true);\n this.store.setDirection(sort);\n }\n\n}\n\n\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\" class=\"pull-right\">\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 { Directive } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Directive({\n selector: '[clickEmitter]',\n exportAs: 'clickEmitter',\n host: {\n '(click)': 'next(true)'\n }\n}) export class ClickEmitterDirective extends Subject<boolean> {\n constructor() {\n super();\n }\n}\n","import { Injectable} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n\n\n@Injectable({\n providedIn: 'root'\n })\n\nexport class DialogService {\n allOpenAppDialogs: MatDialogRef<any>[] = [];\n\n addDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs.push(ref);\n }\n\n removeDialogRef(ref: MatDialogRef<any>) {\n this.allOpenAppDialogs = this.allOpenAppDialogs.filter(rf => ref.id !== rf.id);\n }\n\n closeAllAppDialogs() {\n this.allOpenAppDialogs.forEach(ref => ref.close());\n }\n}\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { switchAll } from 'rxjs/operators';\nimport { DialogService } from './dialog-service';\n\n\ninterface DialogViewContext<T> {\n $implicit?: T,\n opDialog?: T,\n close: () => void,\n\n}\n\n@Component({\n selector: 'app-dialog-content',\n template: ``\n})\nexport class DialogWrapper<T = any> {\n viewEmbeded = false;\n viewContext = {\n close: () => {},\n } as DialogViewContext<T>;\n set template(tmpl: TemplateRef<DialogViewContext<T>>) {\n if (this.viewEmbeded) {\n this.vcr.clear();\n }\n this.viewEmbeded = true;\n this.vcr.createEmbeddedView(tmpl, this.viewContext);\n }\n\n set close(closeMethod: () => void ) {\n this.viewContext.close = closeMethod;\n }\n\n set data(value: T) {\n this.viewContext.$implicit = value;\n this.viewContext.opDialog = value;\n }\n constructor(private vcr: ViewContainerRef ) {\n }\n\n}\n\n\nconst defaultDialogConfig: MatDialogConfig = {\n maxHeight: '95vh'\n}\n\n\n@Directive(\n { selector: '[opDialog]' }\n) export class DialogDirective<T> implements OnDestroy {\n @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\n _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\n @Input() set opDialogConfig(config: MatDialogConfig<T>) {\n this._dialogConfig = {...defaultDialogConfig, ...config};\n }\n\n get opDialogConfig() : MatDialogConfig<T> {\n return this._dialogConfig;\n }\n @Input('opDialog') set state(open_close: Observable<T>) {\n this._data.next(open_close);\n }\n @Input('opDialogOrigin') nativeElement? : HTMLElement;\n dialogRef?: MatDialogRef<any, boolean>;\n subscription: Subscription;\n componentWrapper?: DialogWrapper<T>;\n\n constructor(\n private templateRef: TemplateRef<DialogViewContext<T>>,\n private dialog: MatDialog,\n private service: DialogService) {\n this.subscription = this._data.pipe(\n switchAll()\n ).subscribe(d => {\n if (d) {\n this.opDialogConfig.data = d;\n this.setDialogState(true);\n } else {\n this.setDialogState(false);\n }\n });\n }\n\n _data = new Subject<Observable<T>>();\n\n close() {\n this.dialogRef?.close();\n }\n\n initDialog() {\n if(this.nativeElement){\n const rect = this.nativeElement.getBoundingClientRect();\n const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\n this.opDialogConfig = {...this.opDialogConfig , position};\n }\n this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\n this.componentWrapper = this.dialogRef.componentInstance;\n this.componentWrapper!.close = () => this.dialogRef?.close();\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n this.componentWrapper!.template = this.templateRef;\n if (!this.opDialogConfig.disableClose) {\n this.service.addDialogRef(this.dialogRef);\n }\n const sub = this.dialogRef.afterClosed().subscribe(() => {\n this.opDialogClosed.emit(true);\n this.service.removeDialogRef(this.dialogRef!);\n this.dialogRef = undefined;\n sub.unsubscribe();\n });\n }\n\n setDialogState(open: boolean) {\n if (open) {\n if (!this.dialogRef) {\n this.initDialog();\n } else {\n this.componentWrapper!.data = this.opDialogConfig.data as T;\n }\n } else if (!open && this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false|0|''|null|undefined>> {\n return true;\n }\n\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n ContentChildren,\n QueryList,\n ChangeDetectionStrategy,\n Inject,\n} from '@angular/core';\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\nimport { distinctUntilChanged, first, last, map, shareReplay, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { TableBuilder } from '../../classes/table-builder';\nimport { MatRowDef } from '@angular/material/table';\nimport { CustomCellDirective } from '../../directives';\nimport { TableStore } from '../../classes/table-store';\nimport { DataFilter } from '../../classes/data-filter';\nimport { mapArray, notNull, skipOneWhen } from '../../../rxjs/rxjs-operators';\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\nimport * as selectors from '../../ngrx/selectors';\nimport { select, Store } from '@ngrx/store';\nimport { deleteLocalProfilesState, setLocalProfile, setLocalProfilesState } from '../../ngrx/actions';\nimport { PersistedTableState } from '../../classes/TableState';\nimport { sortData } from '../../functions/sort-data-function';\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\nimport { cloneDeep } from 'lodash';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { defaultShareReplay } from '../../../rxjs'\n\n@Component({\n selector: 'tb-table-container',\n templateUrl: './table-container.html',\n styleUrls: ['./table-container.css','../../styles/collapser.styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TableStore,ExportToCsvService,WrapperFilterStore]\n}) export class TableContainerComponent<T = any> {\n @Input() tableId!: string;\n @Input() SaveState = false;\n @Input() tableBuilder!: TableBuilder;\n @Input() IndexColumn = false;\n @Input() SelectionColumn = false;\n @Input() trackBy!: string;\n @Input() isSticky = true;\n @Input() set pageSize(value: number) {\n this.state.setPageSize(value);\n }\n @Input() inputFilters!: Observable<Array<(val: T) => boolean>>;\n @Output() selection$ = new EventEmitter();\n dataSubject = new ReplaySubject<Observable<T[]>>(1);\n @Output() data = this.dataSubject.pipe(\n switchMap( d => d),\n shareReplay({refCount: true, bufferSize: 1 })\n );\n\n @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\n @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\n @Output() OnStateReset = new EventEmitter();\n @Output() OnSaveState = new EventEmitter();\n @Output() state$ : Observable<PersistedTableState>;\n\n myColumns$!: Observable<ColumnInfo[]>;\n\n stateKeys$?: Observable<string[] | null>;\n currentStateKey$?: Observable<string>;\n\n constructor(\n public state: TableStore,\n public exportToCsvService: ExportToCsvService<T>,\n @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n private store: Store<any>\n ) {\n this.state.on( this.state.getSavableState().pipe(last()), finalState => {\n if(this.tableId) {\n this.store.dispatch(setLocalProfile({key:this.tableId,value: finalState}));\n }\n });\n this.state$ = this.state.getSavableState().pipe(\n map(state => cloneDeep(state)),\n defaultShareReplay(),\n );\n }\n\n ngOnInit() {\n this.state.setTableSettings(this.tableBuilder.settings);\n if(this.tableId) {\n this.state.updateState(\n this.store.pipe(\n select(selectors.selectLocalProfileState<any>(this.tableId) ),\n notNull(),\n this.cleanStateOnInitialLoad(),\n skipOneWhen(this.OnSaveState),\n )\n );\n this.stateKeys$ = this.store.select(selectors.selectLocalProfileKeys(this.tableId));\n this.currentStateKey$ = this.store.select(selectors.selectLocalProfileCurrentKey(this.tableId));\n }\n const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\n const data = new DataFilter(this.inputFilters)\n .appendFilters(filters$)\n .filterData(this.tableBuilder.getData$());\n this.dataSubject.next(data);\n }\n\n exportToCsv(): void {\n const sorted = this.data.pipe(\n withLatestFrom(this.state.sorted$),\n map(([data, sorted]) => sortData(data, sorted))\n );\n this.exportToCsvService.exportToCsv(sorted);\n }\n\n saveState() {\n this.state.getSavableState().pipe(\n first()\n ).subscribe( tableState => {\n this.OnSaveState.next(null);\n this.store.dispatch(setLocalProfile({ key: this.tableId, value:tableState, persist: true} ));\n });\n }\n\n setProfileState(val: string) {\n this.store.dispatch(setLocalProfilesState({key:this.tableId, current: val}));\n }\n\n deleteProfileState(stateKey: string) {\n this.store.dispatch(deleteLocalProfilesState({key:this.tableId, stateKey}));\n }\n\n\n ngAfterContentInit() {\n this.InitializeColumns();\n }\n\n\n InitializeColumns() {\n const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\n this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\n first(),\n map((mds) => {\n mds = mds.map(this.mapMetaDatas);\n return [\n ...mds,\n ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\n ]\n })\n ));\n\n this.myColumns$ = this.state.metaDataArray$.pipe(\n mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\n );\n }\n mapMetaDatas = (meta : MetaData<T>) => {\n if(meta.fieldType === FieldType.Array){\n const additional = {...meta.additional} as ArrayAdditional;\n additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\n additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\n return {...meta,additional}\n }\n return meta;\n }\n\n cleanStateOnInitialLoad = () => (obs:Observable<PersistedTableState>) =>\n combineLatest([obs.pipe(addTimeStamp()) , this.tableBuilder.metaData$!]).pipe(\n distinctUntilChanged(([state],[state2])=>state.index === state2.index),\n map(([{value:state},metas],index)=>{\n if (index === 0) {\n\n const filters = Object.values(state.filters).filter(fltr => metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\n obj[filter.filterId!] = state.filters[filter.filterId!];\n return obj;\n }, {});\n const sorted = state.sorted.filter(s => metas.some(m => m.key === s.active));\n return ({...state,filters,sorted})\n }\n return state\n })\n );\n collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\n\n}\nconst addTimeStamp = <T>() => (obs:Observable<T>) => obs.pipe(map((t,i) => ({value:t,index:i})));\n","<ng-container multiSort>\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$'>\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"state.resetState();OnStateReset.next(null)\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n","import { createReducer, Action, on } from '@ngrx/store';\r\nimport * as tableActions from './actions';\r\nimport { Dictionary } from '../interfaces/dictionary';\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}\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\nconst reducer = createReducer(\r\n loadGlobalStorageState(),\r\n on(tableActions.setLocalProfile, (state,{key,value})=> {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: 'default', current: 'default', states : {\r\n default: value\r\n }};\r\n } else {\r\n profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : value} };\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} }\r\n }),\r\n on(tableActions.setLocalProfilesState, (state, {key,current}) => {\r\n let profile = state.localProfiles[key];\r\n if(!profile) {\r\n profile = {default: current, current , states : {[current]: null }};\r\n } else {\r\n const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];\r\n profile = {...profile, current, states: {...profile.states, [current] : state }};\r\n }\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile}};\r\n }),\r\n on(tableActions.deleteLocalProfilesState, (state, {key,stateKey}) => {\r\n let profile = state.localProfiles[key];\r\n if(profile) {\r\n const current = profile.current === stateKey ? profile.default : profile.current;\r\n profile = {...profile,current, states: { ...profile.states}};\r\n delete profile.states[stateKey];\r\n return {...state, localProfiles: {...state.localProfiles, [key]: profile} };\r\n } else {\r\n return state;\r\n }\r\n })\r\n);\r\n\r\nexport function storageStateReducer(state: GlobalStorageState | undefined, action: Action) {\r\n return reducer(state, action);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, concatLatestFrom, createEffect, ofType } from '@ngrx/effects';\r\nimport { defaultStorageState, GlobalStorageState} from './reducer';\r\nimport { tap, filter, mergeMap, first, map } from 'rxjs/operators';\r\nimport * as tableActions from './actions';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { selectLocalProfile } from './selectors';\r\n\r\n\r\n@Injectable()\r\nexport class SaveTableEffects {\r\n\r\n saveLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.setLocalProfile),\r\n filter( action => !!action.persist),\r\n concatLatestFrom( (action) => this.store.pipe(\r\n select(selectLocalProfile(action.key))\r\n )),\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 }),\r\n ), { dispatch: false }\r\n );\r\n\r\n deleteLocalProfile$ = createEffect(\r\n () => this.actions$.pipe(\r\n ofType(tableActions.deleteLocalProfilesState),\r\n tap( (a) => {\r\n const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n if(!globalSavedState.localProfiles[a.key]) {\r\n return;\r\n } else {\r\n delete globalSavedState.localProfiles[a.key].states[a.stateKey];\r\n }\r\n localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n }),\r\n ), { dispatch: false }\r\n );\r\n\r\n constructor( private actions$: Actions, private store: Store<any> ) {}\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'preventEnter'\n})\nexport class PreventEnterDirective {\n\n @HostListener('keydown.enter', ['$event'])\n onKeyDown() {\n return false\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[clickSubject]',\n exportAs: 'clickSubject',\n host: {\n '(click)': 'next(this._val)'\n }\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\n constructor( ) {\n super();\n }\n _val!: T;\n\n @Input('clickSubject') set clickSubject( val: T) {\n this._val = val;\n }\n}\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\n\n\n@Directive(\n { selector: '[opMatSlideToggleGroup]' ,\n}\n) export class MatSlideToggleGroupDirective {\n @Input() allowMultiple = false;\n\n _toggles!: QueryList<MatSlideToggle>;\n @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\n this._toggles = val;\n this._ready.next(true);\n }\n\n private _ready = new ReplaySubject<boolean>(1);\n\n @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\n return this._ready.pipe( switchMap( _ => this.getObs()));\n }\n\n\n getInitValue() {\n const startValue = this._toggles.reduce( (prev,cur) => {\n if(!cur.name) {\n throw new Error('toggle must have the name attribute set');\n }\n prev[cur.name] = cur.checked\n return prev;\n }, {} as {[k:string]: boolean});\n return startValue;\n }\n\n getObs() {\n var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\n\n const startValue = this.getInitValue();\n\n return toggleChanges.pipe(\n scan( (prev,cur) => {\n const toggleName = cur.source.name!;\n const newVal = {...prev,[toggleName]:cur.checked};\n if(cur.checked && !this.allowMultiple) {\n Object.keys(prev)\n .filter( key => key !== toggleName && prev[key])\n .forEach( key => {\n newVal[key] = false;\n this._toggles.find( toggle => toggle.name === key)!.toggle();\n });\n }\n return newVal;\n },startValue),\n startWith(startValue),\n );\n\n }\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\nimport { DialogDirective } from \"./directives/dialog\";\nimport { DialogService } from \"./directives/dialog-service\";\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\nimport { StylerDirective } from \"./directives/styler\";\nimport { FunctionPipe } from \"./pipes/function.pipe\";\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\n\n@NgModule({\n imports: [\n\n ],\n exports: [\n StopPropagationDirective,\n PreventEnterDirective,\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ],\n declarations: [\n SpaceCasePipe,\n PhoneNumberPipe,\n FunctionPipe,\n StopPropagationDirective,\n StylerDirective,\n PreventEnterDirective,\n AutoFocusDirective,\n ClickSubjectDirective,\n ClickEmitterDirective,\n DialogDirective,\n MatSlideToggleGroupDirective,\n ],\n providers : [\n DialogService\n ]\n})\nexport class UtilitiesModule {\n}\n","\nimport { NgModule } from '@angular/core';\nimport { GenericTableComponent } from './components/generic-table/generic-table.component';\nimport { CustomCellDirective } from './directives/custom-cell-directive';\nimport { GenColDisplayerComponent } from './components/gen-col-displayer/gen-col-displayer.component';\nimport { GenFilterDisplayerComponent } from './components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\nimport { MaterialModule } from './material.module';\nimport { DateFilterComponent } from './components/date-filter/date-filter.component';\nimport { TableContainerComponent } from './components/table-container/table-container';\nimport { ColumnTotalPipe } from './pipes/column-total.pipe';\nimport { MultiSortDirective } from './directives/multi-sort.directive';\nimport { ColumnBuilderComponent } from './components/column-builder/column-builder.component';\nimport { ModuleWithProviders } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\nimport { NumberFilterComponent } from './components/number-filter/number-filter.component';\nimport { StoreModule } from '@ngrx/store';\nimport { storageStateReducer } from './ngrx/reducer';\nimport { HeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SaveTableEffects } from './ngrx/effects';\nimport { KeyDisplayPipe } from './pipes/key-display';\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\nimport { RouterModule } from '@angular/router';\nimport { ArrayColumnComponent } from './components/array-column.component';\nimport { InFilterComponent } from './components/in-filter/in-filter.component';\nimport { FormatFilterValuePipe } from './pipes/format-filter-value.pipe';\nimport { FormatFilterTypePipe } from './pipes/format-filter-type.pipe';\nimport { ResizeColumnDirective } from './directives/resize-column.directive';\nimport {ReactiveComponentModule} from '@ngrx/component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { InitializationComponent } from './components/initialization-component/initialization-component';\nimport { TableTemplateService } from './services/table-template-service';\nimport { InListFilterComponent } from './components/filter/in-list/in-list-filter.component';\nimport { SortMenuComponent } from './components/sort-menu/sort-menu.component';\nimport { FilterChipsComponent } from './components/table-container-filter/filter-list/filter-list.component';\nimport { PaginatorComponent } from './components/generic-table/paginator.component';\nimport { UtilitiesModule } from '../utilities';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialModule,\n StoreModule.forFeature('globalStorageState', storageStateReducer),\n EffectsModule.forFeature([SaveTableEffects]),\n FormsModule,\n RouterModule,\n ReactiveComponentModule,\n DragDropModule,\n UtilitiesModule,\n ],\n exports: [\n GenericTableComponent,\n PaginatorComponent,\n TableContainerComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n FilterComponent,\n MultiSortDirective,\n ResizeColumnDirective,\n ],\n declarations: [\n ColumnTotalPipe,\n TableContainerComponent,\n GenericTableComponent,\n PaginatorComponent,\n CustomCellDirective,\n GenColDisplayerComponent,\n GenFilterDisplayerComponent,\n DateFilterComponent,\n FilterComponent,\n MultiSortDirective,\n NumberFilterComponent,\n ColumnBuilderComponent,\n ArrayColumnComponent,\n HeaderMenuComponent,\n KeyDisplayPipe,\n FormatFilterValuePipe,\n FormatFilterTypePipe,\n ResizeColumnDirective,\n InFilterComponent,\n InitializationComponent,\n InListFilterComponent,\n SortMenuComponent,\n FilterChipsComponent,\n ],\n providers : [\n SpaceCasePipe,\n DatePipe,\n CurrencyPipe,\n PhoneNumberPipe,\n TableTemplateService,\n ]\n})\nexport class TableBuilderModule {\n static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\n return {\n ngModule: TableBuilderModule,\n providers: [\n MultiSortDirective,\n { provide : TableBuilderConfigToken , useValue: config}\n ]\n };\n }\n}\n","import { isObservable, Observable, of } from 'rxjs';\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\nimport { first, map, switchMap } from 'rxjs/operators';\nimport { mapArray } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\nimport { defaultShareReplay } from '../../rxjs';\n\nexport class TableBuilder<T = any> {\n\n metaData$: Observable<MetaData<T>[]>;\n constructor(private data$: Observable<T[]>, metaData$?: Observable<MetaData<T,any>[]>, settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\n this.data$ = this.data$.pipe(defaultShareReplay());\n this.metaData$ = metaData$ ?\n metaData$.pipe(first(),defaultShareReplay()) :\n data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\n const s = isObservable(settings) ? settings : of(settings);\n this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\n }\n settings : Observable<GeneralTableSettings>;\n getData$(): Observable<any[]> {\n return this.metaData$.pipe(\n switchMap( metaData => this.data$.pipe(\n mapArray( data => this.cleanRecord(data, metaData ) )\n ))\n );\n }\n\n createMetaData(obj: any): MetaData [] {\n return Object.keys(obj ?? {})\n .map( key => ({\n key,\n fieldType: FieldType.Unknown,\n order: -1\n }));\n }\n\n cleanVal(val: any, metaData: MetaData): any {\n switch ( metaData.fieldType ) {\n case FieldType.Currency:\n case FieldType.Number:\n const num = Number( val );\n return isNaN(num) || val == null ? null : num;\n case FieldType.Date:\n const date = Date.parse(val);\n if(isNaN(date)){\n return null;\n }\n const d = new Date(date);\n d.setHours(0,0,0,0);\n return d;\n }\n return val;\n }\n\n cleanRecord( record: T, metadata: MetaData []): T {\n const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\n prev[curr.key] = this.cleanVal(record[curr.key], curr);\n return prev;\n }, {} as T )\n return {...record, ...cleaned};\n }\n}\n\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\n reportDef$ = reportDef$.pipe(defaultShareReplay());\n return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\n};\n","/*\n * Public API Surface of http-request-state\n */\n\nexport * from './http-request-state/directives';\nexport * from './http-request-state/rxjs';\nexport * from './http-request-state';\n\n\nexport * from './table-builder/table-builder.module';\n\nexport * from './table-builder/interfaces/report-def';\n\nexport * from './table-builder/classes/MatTableObservableDataSource';\n\nexport * from './table-builder/classes/table-builder';\n\nexport * from './table-builder/classes/table-builder-general-settings';\n\nexport * from './table-builder/components';\n\nexport * from './table-builder/directives';\n\nexport {FilterType} from './table-builder/enums/filterTypes';\n\n\nexport * from './rxjs'\n\nexport * from './utilities'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","merge","selectors.selectLocalProfileState","selectors.selectLocalProfileKeys","selectors.selectLocalProfileCurrentKey","tableActions.setLocalProfile","tableActions.setLocalProfilesState","tableActions.deleteLocalProfilesState","switchMap","startWith"],"mappings":"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"}
|