{"version":3,"file":"838.98932e7e6dff896b.js","mappings":"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","names":["columnDefinition","key","field","sort","sortOrder","width","visible","canToggleVisibility","ReportGridComponent","constructor","store","reportService","gridService","environmentService","translocoService","this","destroy$","Subject","sorts$","BehaviorSubject","filters$","contextMenuItems$","defaultFilters","gridId","CONSTANTS","GRID_REPORT_LOOKUP","initialized","translate","params","lang","onLazyLoad","event","initialized$","pipe","filter","x","take","subscribe","filters","sorts","entry","Object","entries","matchMode","operator","value","multiSortMeta","sortMeta","order","requestData","first","rows","onRowSelect","selectedRow","dispatch","GridActions","id","selectionType","onRowDetails","ngOnInit","lookupGridPanelHeight$","takeUntil","height","height$","next","payload","remToPx","selectTranslation","translations","generateContextMenuItems","grid","initialize","selectedRow$","data$","data","distinctUntilChanged","a","b","JSON","stringify","filterMetadata","length","updateColumnHeaders","setTimeout","events$","type","onLanguageChange","gridRefresh$","gridLoad$","ngOnDestroy","unsubscribe","undefined","ReportActions","page","getPageNumber","items","push","getCopyRowMenuItem","disabled","getSeparator","getMenuItem","label","title","icon","command","getRefreshMenuItem","getResetMenuItem","getDeveloperMenu","onSelectRow","selectedRows","reportName","displayRunReportDialog$","static","t","i0","i1","i2","i3","i4","core","Xpm","selectors","attrs","_c0","ngContentSelectors","_c2","decls","vars","consts","template","rf","ctx","$event","selectedContext","_c1","_r3","ctx_r2","applyFilters","ctx_r4","reset","ctx_r5","t_r1","ctx_r0","form","folderDropdownList$","FiltersComponent","matchTypes","requestLists","FormGroup","folder","FormControl","get","setValue","onMatchTypeChange","matchType","filtersPanel$","state","FiltersComponent_ng_container_0_Template","SidebarComponent","sidebarExpanded","items$","exportFilename","generateSidebarMenuItems","sidebar$","detailsOnClick","getFilterMenuItem","getColumnsMenuItem","getSaveGridMenuItem","getLoadGridMenuItem","item","separator","_r4","ctx_r3","refreshReports","loading$","ToolbarComponent","eventService","loading","REQUEST_REFRESH","viewQuery","ToolbarComponent_ng_container_0_Template","fieldLabel$","isReadOnly$","ctx_r1","listValues$","allowMultiValue$","allowCustomValues$","_c3","_r10","ctx_r9","filterList","ctx_r11","onBlur","ctx_r12","onKeyUp","_c4","filteredItems$","ctx_r6","dateSelectionMode$","maxDateCount$","ctx_r7","ReportParameterComponent","listService","authService","listValues","booleanOption1Label$","booleanOption1Value$","booleanOption2Label$","booleanOption2Value$","isRequired$","isRange","isRangeOrDiscrete","isItemLookup","allowCustomValues","allowMultiValue","fieldName$","fieldType$","fieldType","parameter","trim","test","column1","column2","customerFieldRegex","RegExp","facilityFieldRegex","debugFieldRegex","toLowerCase","custid","facility","Array","isArray","defaultValue","filtered","i","indexOf","query","tokenInput","target","replace","autoComplete","ReportParameterComponent_input_3_Template","ReportParameterComponent_div_6_Template","ReportParameterComponent_z_combo_box_9_Template","ReportParameterComponent_div_12_Template","ReportParameterComponent_z_decimal_15_Template","ReportParameterComponent_z_money_17_Template","ReportParameterComponent_z_date_19_Template","ReportParameterComponent_z_date_21_Template","i_r13","parameter_r12","_r15","ctx_r14","runReport","RunReportComponent_ng_container_0_div_12_div_4_Template","RunReportComponent_ng_container_0_div_12_div_6_Template","formatDropdownList$","hasNoParameters$","parameters$","controls","_r19","ctx_r18","ctx_r20","close","RunReportComponent_ng_container_0_ng_template_15_p_toolbar_0_Template","getParamsLoading$","reportLoading$","_r23","ctx_r22","onVisibleChange","RunReportComponent_ng_container_0_div_8_Template","RunReportComponent_ng_container_0_div_10_Template","RunReportComponent_ng_container_0_div_12_Template","RunReportComponent_ng_container_0_ng_template_15_Template","style$","display$","RunReportComponent","notificationService","parameterCount$","REQUEST_GET_PARAMS","format","parameters","FormArray","setupFormGroup","parameterCount","clear","field_value","field_required","error","message","fieldName","field_label","field_type","Number","toString","formatted_value","val","formatReportDateTime","Date","formatReportDate","allow_multi_value","reportParameters","required","Validators","allow_custom_current_values","allow_null_value","default_value_display_type","default_values","field_name","field_seq","field_values","initial_values","parameter_type","value_range_kind","all_values","markAsPristine","markAsUntouched","RunReportComponent_ng_container_0_Template","LookupComponent_ng_container_0_ng_container_7_Template","reportAdmin$","routes","path","component","LookupComponent","router","renderer","windowService","screen","group","SCREEN_GROUP","route","url","checkPermission","PERMISSIONS","ngAfterViewInit","gridPanel","document","querySelector","setStyle","calculatePanelHeight","viewportHeight$","toolbar","element","el","toolbarHeight","nativeElement","offsetHeight","viewportHeight","gridPanelHeight","getHeaderDimensions","i5","LookupComponent_ng_container_0_Template","breadcrumb","requiredPermissions","canActivate","AuthGuard","PermissionGuard","runGuardsAndResolvers","LookupRoutingModule","oAB","cJS","RouterModule","forChild","LookupModule","CommonModule","SharedModule","ComponentsModule"],"sourceRoot":"webpack:///","sources":["./client/app/report/lookup/grid/grid.columns.ts","./client/app/report/lookup/grid/grid.component.ts","./client/app/report/lookup/grid/grid.component.html","./client/app/report/lookup/filters/filters.component.html","./client/app/report/lookup/filters/filters.component.ts","./client/app/report/lookup/sidebar/sidebar.component.ts","./client/app/report/lookup/sidebar/sidebar.component.html","./client/app/report/lookup/toolbar/toolbar.component.html","./client/app/report/lookup/toolbar/toolbar.component.ts","./client/app/report/lookup/report-parameter/report-parameter.component.html","./client/app/report/lookup/report-parameter/report-parameter.component.ts","./client/app/report/lookup/run-report/run-report.component.html","./client/app/report/lookup/run-report/run-report.component.ts","./client/app/report/lookup/lookup.component.html","./client/app/report/lookup/lookup-routing.module.ts","./client/app/report/lookup/lookup.component.ts","./client/app/report/lookup/lookup.module.ts"],"sourcesContent":["import { Columns } from '#types/grid';\n\nexport const columnDefinition: Columns = [\n {\n key: 'report.lookup.grid.columns.folder',\n field: 'folder',\n sort: 'asc',\n sortOrder: 1,\n width: 200,\n },\n {\n key: 'report.lookup.grid.columns.name',\n field: 'report_name',\n sort: 'asc',\n sortOrder: 2,\n width: 600,\n },\n\n // hidden fields\n {\n key: 'report.lookup.grid.columns.id',\n field: 'id',\n visible: false,\n canToggleVisibility: false,\n },\n {\n key: 'report.lookup.grid.columns.report_name',\n field: 'name',\n visible: false,\n canToggleVisibility: false,\n },\n];\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { getPageNumber, initialize, onRowSelect } from '@grid';\n\nimport { FilterMetadata, LazyLoadEvent, MenuItem, SortMeta } from 'primeng/api';\n\nimport { EnvironmentService, GridActions, GridService } from '@core/services';\nimport { remToPx } from '@util/layout';\n\nimport { Filters, SelectRowEvent, SelectedRow, Sorts } from '#types/grid';\nimport { ReportLookupResponseRow } from '#types/report';\n\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\nimport { ReportActions } from '@report/state';\n\nimport { columnDefinition } from './grid.columns';\n\n@Component({\n selector: 'div[z-report-grid]',\n templateUrl: './grid.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReportGridComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n\n selectedRow: SelectedRow;\n selectedContext: SelectedRow;\n\n sorts$ = new BehaviorSubject(null);\n filters$ = new BehaviorSubject<{ [s: string]: FilterMetadata | FilterMetadata[] }>(null);\n contextMenuItems$ = new BehaviorSubject([]);\n\n defaultFilters: Filters = {};\n\n gridId = CONSTANTS.GRID_REPORT_LOOKUP;\n\n initialized = false;\n\n translate = (key: string | string[], params?: Record, lang?: string) =>\n this.translocoService.translate(key, params, lang);\n\n constructor(\n private store: Store,\n public reportService: ReportService,\n public gridService: GridService,\n public environmentService: EnvironmentService,\n private translocoService: TranslocoService\n ) {}\n\n ngOnInit() {\n this.reportService.lookupGridPanelHeight$.pipe(takeUntil(this.destroy$)).subscribe((height) => {\n this.gridService.height$.next({ id: this.gridId, payload: `${height - remToPx(6)}px` });\n });\n\n this.translocoService\n .selectTranslation()\n .pipe(take(1))\n .subscribe((translations) => {\n this.generateContextMenuItems();\n\n this.store.dispatch(\n GridActions.Initialize({\n id: this.gridId,\n grid: initialize(columnDefinition, translations, {}, { filters: this.defaultFilters, rows: 250 }),\n })\n );\n });\n\n this.gridService\n .selectedRow$(this.gridId)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedRow) => {\n this.selectedRow = selectedRow;\n this.generateContextMenuItems(selectedRow);\n });\n\n this.gridService\n .initialized$(this.gridId)\n .pipe(\n filter((x) => !!x),\n take(1)\n )\n .subscribe(() => {\n this.gridService\n .data$(this.gridId)\n .pipe(take(1))\n .subscribe((data) => {\n this.gridService\n .sorts$(this.gridId)\n .pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n takeUntil(this.destroy$)\n )\n .subscribe((sorts) => {\n this.sorts$.next(sorts);\n });\n\n this.gridService\n .filters$(this.gridId)\n .pipe(\n filter((x) => !!x),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n takeUntil(this.destroy$)\n )\n .subscribe((filters) => {\n const filterMetadata: { [s: string]: FilterMetadata | FilterMetadata[] } = {};\n\n if (filters) {\n for (const [field, entry] of Object.entries(filters)) {\n filterMetadata[field] = {\n matchMode: entry.matchMode,\n operator: entry.operator,\n value: entry.value,\n };\n }\n }\n\n this.filters$.next(filterMetadata);\n\n if (this.initialized) {\n this.requestData();\n }\n });\n\n if (!data || data.length === 0) {\n this.requestData();\n }\n\n this.gridService.updateColumnHeaders(this.gridId);\n\n setTimeout(() => {\n this.initialized = true;\n }, 0);\n });\n });\n\n this.translocoService.events$\n .pipe(\n filter((event) => event.type === 'langChanged'),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.onLanguageChange();\n });\n\n this.gridService.gridRefresh$\n .pipe(\n filter((id) => this.gridId === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.requestData();\n });\n\n this.gridService.gridLoad$\n .pipe(\n filter((id) => this.gridId === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.gridService\n .sorts$(this.gridId)\n .pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n take(1)\n )\n .subscribe((sorts) => {\n this.sorts$.next(sorts);\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n onLanguageChange() {\n this.translocoService\n .selectTranslation()\n .pipe(take(1))\n .subscribe(() => {\n this.generateContextMenuItems();\n this.gridService.updateColumnHeaders(this.gridId);\n });\n }\n\n requestData(filters?: Filters, sorts?: Sorts, first?: number, rows?: number) {\n if (filters !== undefined && sorts !== undefined && first !== undefined && rows !== undefined) {\n this.store.dispatch(\n ReportActions.LookupRequestDataWithParameters({\n id: this.gridId,\n filters,\n page: getPageNumber(first, rows),\n first,\n rows,\n sorts,\n })\n );\n } else if (filters !== undefined && sorts === undefined && first === undefined && rows === undefined) {\n this.store.dispatch(\n ReportActions.LookupRequestDataWithFilters({\n id: this.gridId,\n filters,\n })\n );\n } else {\n this.store.dispatch(ReportActions.LookupRequestData({ id: this.gridId }));\n }\n }\n\n generateContextMenuItems(selectedRow?: SelectedRow) {\n const items: MenuItem[] = [];\n\n items.push(...this.gridService.getCopyRowMenuItem({ gridId: this.gridId, disabled: !selectedRow?.data ? true : false }));\n items.push(...this.gridService.getSeparator());\n\n items.push(\n ...this.gridService.getMenuItem({\n label: this.translate('report.lookup.grid.context_menu.generate.label'),\n title: this.translate('report.lookup.grid.context_menu.generate.title'),\n icon: 'far fa-download',\n command: () => {\n this.onRowDetails();\n },\n disabled: !this.selectedRow?.data ? true : false,\n })\n );\n\n items.push(...this.gridService.getSeparator());\n items.push(...this.gridService.getRefreshMenuItem(this.gridId));\n items.push(...this.gridService.getResetMenuItem(this.gridId));\n items.push(...this.gridService.getDeveloperMenu(this.gridId));\n\n this.contextMenuItems$.next(items);\n }\n\n onLazyLoad = (event: LazyLoadEvent) => {\n if (!this.initialized) {\n return;\n }\n\n this.gridService\n .initialized$(this.gridId)\n .pipe(\n filter((x) => !!x),\n take(1)\n )\n .subscribe(() => {\n const filters: Filters = {};\n const sorts: Sorts = {};\n\n if (event.filters) {\n for (const [field, entry] of Object.entries(event.filters)) {\n filters[field] = {\n matchMode: entry.matchMode,\n operator: entry.operator,\n value: entry.value,\n };\n }\n }\n\n if (event.multiSortMeta) {\n for (const sortMeta of event.multiSortMeta) {\n sorts[sortMeta.field] = {\n order: sortMeta.order,\n };\n }\n }\n\n this.requestData(filters, sorts, event.first, event.rows);\n });\n };\n\n onSelectRow(event: SelectRowEvent) {\n this.store.dispatch(GridActions.SelectMultipleRows({ id: this.gridId, rows: event.selectedRows }));\n }\n\n onRowSelect = (event: ReportLookupResponseRow) => {\n const selectedRow = onRowSelect(event);\n this.store.dispatch(GridActions.SelectRow({ id: this.gridId, selectedRow }));\n\n if (selectedRow.selectionType === 'double') {\n this.onRowDetails();\n }\n };\n\n onRowDetails() {\n this.gridService\n .selectedRow$(this.gridId)\n .pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n filter((x) => !!x),\n take(1)\n )\n .subscribe((selectedRow) => {\n this.store.dispatch(ReportActions.RequestReportClearParameters());\n\n if (selectedRow?.data?.id) {\n this.store.dispatch(ReportActions.RequestReportGetParameters({ reportName: selectedRow.data.id }));\n this.reportService.displayRunReportDialog$.next(true);\n }\n });\n }\n}\n","\n\n\n \n\n","\n \n \n \n \n\n \n \n \n\n
\n
\n
\n
\n \n
\n\n
\n \n
\n
\n
\n
\n
\n
\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { Store } from '@ngrx/store';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { GridActions, GridService } from '@core/services';\n\nimport { Filters } from '#types/grid';\n\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\n\n@Component({\n selector: 'z-sidebar-filters',\n templateUrl: './filters.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FiltersComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n\n form: FormGroup;\n\n matchTypes: Record = {};\n\n gridId = CONSTANTS.GRID_REPORT_LOOKUP;\n\n translate = (key: string | string[], params?: Record, lang?: string) =>\n this.translocoService.translate(key, params, lang);\n\n constructor(\n private store: Store,\n private gridService: GridService,\n private translocoService: TranslocoService,\n public reportService: ReportService\n ) {}\n\n ngOnInit() {\n this.reportService.requestLists();\n\n this.form = new FormGroup({\n folder: new FormControl(),\n reportName: new FormControl(),\n });\n\n this.gridService\n .filters$(this.gridId)\n .pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n filter((x) => !!x),\n takeUntil(this.destroy$)\n )\n .subscribe((filters) => {\n for (const [field, entry] of Object.entries(filters)) {\n this.form.get(field).setValue(entry.value);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n onMatchTypeChange(field: string, matchType: string) {\n this.matchTypes[field] = matchType;\n }\n\n applyFilters() {\n const filters: Filters = {};\n\n if (this.form.get('folder').value) {\n filters.folder = { value: this.form.get('folder').value };\n }\n\n if (this.form.get('reportName').value) {\n filters.reportName = { value: this.form.get('reportName').value, matchMode: this.matchTypes.reportName ?? 'contains' };\n }\n\n this.gridService.filtersPanel$.pipe(take(1)).subscribe((state) => {\n if (state === 'open') {\n this.store.dispatch(GridActions.closeFilterPanel());\n }\n });\n\n this.store.dispatch(GridActions.SetFilters({ id: this.gridId, filters }));\n }\n\n reset() {\n this.form.setValue({\n folder: null,\n reportName: null,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { MenuItem } from 'primeng/api';\n\nimport { GridService } from '@core/services';\n\nimport { SelectedRow } from '#types/grid';\nimport { ReportLookupResponseRow } from '#types/report';\n\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\nimport { ReportActions } from '@report/state';\n\n@Component({\n selector: 'z-report-sidebar',\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SidebarComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n\n sidebarExpanded: boolean = true;\n\n items$ = new BehaviorSubject([]);\n\n gridId = CONSTANTS.GRID_REPORT_LOOKUP;\n\n exportFilename: string = 'reports';\n\n translate = (key: string | string[], params?: Record, lang?: string) =>\n this.translocoService.translate(key, params, lang);\n\n constructor(\n private store: Store,\n public gridService: GridService,\n private translocoService: TranslocoService,\n private reportService: ReportService\n ) {}\n\n ngOnInit() {\n this.gridService\n .selectedRow$(this.gridId)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedRow) => {\n this.generateSidebarMenuItems(selectedRow);\n });\n\n this.gridService.sidebar$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\n this.sidebarExpanded = state === 'expanded';\n this.generateSidebarMenuItems();\n });\n\n this.generateSidebarMenuItems();\n\n this.translocoService.events$\n .pipe(\n filter((event) => event.type === 'langChanged'),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.onLanguageChange();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n onLanguageChange() {\n this.translocoService\n .selectTranslation()\n .pipe(take(1))\n .subscribe(() => {\n this.generateSidebarMenuItems();\n });\n }\n\n detailsOnClick() {\n this.gridService\n .selectedRow$(this.gridId)\n .pipe(distinctUntilChanged(), take(1))\n .subscribe((selectedRow) => {\n this.store.dispatch(ReportActions.RequestReportClearParameters());\n\n if (selectedRow?.data?.id) {\n this.store.dispatch(ReportActions.RequestReportGetParameters({ reportName: selectedRow.data.id }));\n this.reportService.displayRunReportDialog$.next(true);\n }\n });\n }\n\n generateSidebarMenuItems(selectedRow?: SelectedRow) {\n const disabled = !selectedRow?.data ? true : false;\n\n const items: MenuItem[] = [\n ...this.gridService.getFilterMenuItem(),\n ...this.gridService.getRefreshMenuItem(this.gridId),\n ...this.gridService.getColumnsMenuItem(),\n ...this.gridService.getCopyRowMenuItem({ gridId: this.gridId, disabled }),\n ...this.gridService.getSeparator(),\n ...this.gridService.getMenuItem({\n label: this.translate('report.lookup.sidebar.generate.label'),\n title: this.translate('report.lookup.sidebar.generate.title'),\n icon: 'far fa-download',\n command: () => {\n this.detailsOnClick();\n },\n disabled,\n }),\n ...this.gridService.getSeparator(),\n ...this.gridService.getSaveGridMenuItem(),\n ...this.gridService.getLoadGridMenuItem(),\n ...this.gridService.getSeparator(),\n ...this.gridService.getResetMenuItem(this.gridId),\n ];\n\n if (!this.sidebarExpanded) {\n for (const item of items) {\n if (item.separator) {\n continue;\n }\n\n item.label = '';\n }\n }\n\n this.items$.next(items);\n }\n}\n","\n\n\n\n\n\n\n\n\n","\n \n
\n
\n \n
\n
\n
\n","import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport { Toolbar } from 'primeng/toolbar';\n\nimport { EventService } from '@core/services';\n\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\nimport { ReportActions } from '@report/state';\n\n@Component({\n selector: 'z-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToolbarComponent implements OnInit {\n @ViewChild('toolbar') toolbar: Toolbar;\n\n loading$: Observable;\n\n constructor(\n private store: Store,\n public reportService: ReportService,\n private eventService: EventService\n ) {}\n\n ngOnInit() {\n this.loading$ = this.eventService.loading(CONSTANTS.REQUEST_REFRESH);\n }\n\n refreshReports() {\n this.store.dispatch(ReportActions.RequestReportRefresh());\n }\n}\n","
\n \n\n \n\n
\n \n
\n\n \n \n\n
\n \n\n \n
\n\n \n\n \n\n \n\n \n
\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject, filter, take } from 'rxjs';\n\nimport { AutoComplete } from 'primeng/autocomplete';\n\nimport { DropDownList } from '@core/interfaces';\nimport { ListService } from '@core/services';\n\nimport { AuthService } from '@auth/services';\n\n@Component({\n selector: 'z-report-parameter',\n templateUrl: './report-parameter.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReportParameterComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n\n @Input() parameter: FormGroup;\n @Input() index: number;\n\n listValues: DropDownList = [];\n filteredItems$ = new BehaviorSubject([]);\n items: string[] = [];\n\n booleanOption1Label$ = new BehaviorSubject(null);\n booleanOption1Value$ = new BehaviorSubject(null);\n booleanOption2Label$ = new BehaviorSubject(null);\n booleanOption2Value$ = new BehaviorSubject(null);\n\n isReadOnly$ = new BehaviorSubject(false);\n isRequired$ = new BehaviorSubject(false);\n isRange: boolean = false;\n isRangeOrDiscrete: boolean = false;\n maxDateCount$ = new BehaviorSubject(1);\n\n isItemLookup: boolean = false;\n\n allowCustomValues: boolean = false;\n allowMultiValue: boolean = false;\n\n fieldName$ = new BehaviorSubject(null);\n fieldLabel$ = new BehaviorSubject(null);\n fieldType$ = new BehaviorSubject(null);\n\n listValues$ = new BehaviorSubject(null);\n\n dateSelectionMode$ = new BehaviorSubject<'single' | 'multiple' | 'range'>('single');\n allowCustomValues$ = new BehaviorSubject(false);\n allowMultiValue$ = new BehaviorSubject(false);\n\n @ViewChild('autoComplete') autoComplete: AutoComplete;\n\n constructor(\n public listService: ListService,\n private authService: AuthService,\n private store: Store\n ) {}\n\n ngOnInit() {\n this.fieldName$.next(this.parameter.get('field_name').value.trim());\n this.fieldLabel$.next(this.parameter.get('field_label').value.trim());\n this.fieldType$.next(this.parameter.get('field_type').value);\n\n this.isRequired$.next(this.parameter.get('field_required').value === 'Y');\n\n this.isRange = this.parameter.get('value_range_kind').value === 'Range';\n this.isRangeOrDiscrete = this.parameter.get('value_range_kind').value === 'DiscreteAndRange';\n\n this.allowCustomValues = this.parameter.get('allow_custom_current_values').value === 'Y';\n this.allowMultiValue = this.parameter.get('allow_multi_value').value === 'Y';\n\n // field type\n let fieldType: string;\n\n if (/boolean/gi.test(this.parameter.get('field_type').value)) {\n fieldType = 'list';\n } else if (/^(date|range)$/gi.test(this.parameter.get('field_type').value)) {\n fieldType = 'date';\n } else if (/(datetime)/gi.test(this.parameter.get('field_type').value)) {\n fieldType = 'dateTime';\n } else if (/(number|decimal)/gi.test(this.parameter.get('field_type').value)) {\n fieldType = 'number';\n } else if (/(currency)/gi.test(this.parameter.get('field_type').value)) {\n fieldType = 'currency';\n } else if (this.parameter.get('field_values').value !== null) {\n fieldType = 'list';\n } else {\n fieldType = 'string';\n }\n\n this.fieldType$.next(fieldType);\n\n if (this.isRange) {\n this.dateSelectionMode$.next('range');\n this.maxDateCount$.next(2);\n\n if (fieldType === 'string') {\n this.allowMultiValue = true;\n }\n }\n\n if (this.isRangeOrDiscrete) {\n this.dateSelectionMode$.next('multiple');\n this.maxDateCount$.next(2);\n }\n\n if (fieldType === 'list') {\n if (this.parameter.get('field_values').value) {\n for (const entry of this.parameter.get('field_values').value) {\n const key: string = entry.key;\n const value: string = entry.value;\n\n if (key !== value && key !== 'false' && key !== 'true') {\n this.listValues.push({ column1: key, column2: `${key} - ${value}` });\n } else {\n this.listValues.push({ column1: key, column2: value });\n }\n\n this.items.push(key);\n }\n } else {\n this.listValues.push({ column1: null, column2: null });\n this.items.push(null);\n }\n }\n\n const customerFieldRegex = new RegExp('(cust id|cust_id|in_cust|custid|customer|cust|customer id|customerid)', 'gi');\n const facilityFieldRegex = new RegExp('(facil|in_fac|facility)', 'gi');\n const debugFieldRegex = new RegExp('(in_debug|debug)', 'gi');\n const notCustFacDebugFieldRegex =\n /^(?!(cust\\s*id|cust_id|in_cust|custid|customer|cust|customer\\s*id|customerid|facil|in_fac|facility|in_debug|debug)$)(?=.*\\bcustid\\b)(?=.*\\bfacility\\b).*$/i;\n\n // make customer / facility / debug fields read only\n if (this.parameter.get('field_name').value) {\n if (customerFieldRegex.test(this.parameter.get('field_name').value.toLowerCase())) {\n this.items.push(this.authService.custid);\n this.listValues.push({ column1: this.authService.custid, column2: this.authService.custid });\n\n setTimeout(() => {\n if (this.allowMultiValue) {\n this.parameter.get('field_value').setValue([this.authService.custid]);\n } else {\n this.parameter.get('field_value').setValue(this.authService.custid);\n }\n });\n\n this.fieldType$.next('string');\n this.isReadOnly$.next(true);\n this.isRange = false;\n this.allowCustomValues = false;\n this.allowMultiValue = false;\n }\n\n if (facilityFieldRegex.test(this.parameter.get('field_name').value.toLowerCase())) {\n this.items.push(this.authService.facility);\n this.listValues.push({ column1: this.authService.facility, column2: this.authService.facility });\n\n setTimeout(() => {\n if (this.allowMultiValue) {\n this.parameter.get('field_value').setValue([this.authService.facility]);\n } else {\n this.parameter.get('field_value').setValue(this.authService.facility);\n }\n });\n\n this.fieldType$.next('string');\n this.isReadOnly$.next(true);\n this.isRange = false;\n this.allowCustomValues = false;\n this.allowMultiValue = false;\n }\n\n if (debugFieldRegex.test(this.parameter.get('field_name').value.toLowerCase())) {\n if (this.parameter.get('field_type').value === 'boolean') {\n this.parameter.get('field_value').setValue('True');\n } else {\n this.parameter.get('field_value').setValue('N');\n }\n\n this.isReadOnly$.next(true);\n this.isRequired$.next(false);\n this.isRange = false;\n this.allowCustomValues = false;\n this.allowMultiValue = false;\n }\n\n if (notCustFacDebugFieldRegex.test(this.parameter.get('field_name').value.toLowerCase())) {\n setTimeout(() => {\n if (this.allowMultiValue) {\n if (this.parameter.get('field_name').value && this.parameter.get('field_value').value) {\n this.parameter.get('field_value').setValue([this.parameter.get('field_value').value]);\n }\n } else {\n if (this.parameter.get('field_name').value && this.parameter.get('field_value').value) {\n this.parameter.get('field_value').setValue([this.parameter.get('field_value').value]);\n }\n }\n });\n }\n }\n\n // set the field value to a default initial value if provided\n // and if the field is not set to read only above\n if (\n this.parameter.get('default_values').value &&\n Array.isArray(this.parameter.get('default_values').value) &&\n this.parameter.get('default_values').value.length > 0\n ) {\n const defaultValue = this.parameter.get('default_values').value[0];\n\n this.isReadOnly$\n .pipe(\n filter((x) => !x),\n take(1)\n )\n .subscribe(() => {\n this.parameter.get('field_value').setValue(defaultValue.key);\n });\n }\n\n // finally, clean up extra data so we don't send that back when setting parameters\n this.parameter.get('default_values').setValue(null);\n this.parameter.get('field_values').setValue(null);\n\n if (this.listValues) {\n this.listValues$.next(this.listValues);\n }\n\n this.allowCustomValues$.next(this.allowCustomValues);\n this.allowMultiValue$.next(this.allowMultiValue);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n filterList(event: { originalEvent: Event; query: string }) {\n const filtered: string[] = [];\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n\n if (item === null) {\n continue;\n }\n\n if (item.toLowerCase().indexOf(event.query.toLowerCase()) === 0) {\n filtered.push(item);\n }\n }\n\n this.filteredItems$.next(filtered);\n }\n\n onKeyUp(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ',' || event.key === 'Tab') {\n const tokenInput: any = event.target;\n\n if (tokenInput.value) {\n const value = tokenInput.value.replace(/,$/g, '');\n\n if (this.autoComplete.value && Array.isArray(this.autoComplete.value)) {\n this.autoComplete.value = [...this.autoComplete.value, value];\n } else {\n this.autoComplete.value = [value];\n }\n\n this.parameter.get('field_value').setValue(this.autoComplete.value);\n tokenInput.value = '';\n }\n }\n }\n\n onBlur(event: Event) {\n const tokenInput: any = event.target;\n\n if (tokenInput.value) {\n const value = tokenInput.value.replace(/,$/g, '');\n\n if (this.allowMultiValue) {\n if (this.autoComplete.value && Array.isArray(this.autoComplete.value)) {\n this.autoComplete.value = [...this.autoComplete.value, value];\n } else {\n this.autoComplete.value = [value];\n }\n } else {\n this.autoComplete.value = value;\n }\n\n this.parameter.get('field_value').setValue(this.autoComplete.value);\n tokenInput.value = '';\n }\n }\n}\n","\n \n {{ t('report.run_report.title') }}\n\n
\n \n
\n {{ t('report.run_report.loading_parameters.title') }}\n {{ t('report.run_report.loading_parameters.message') }}\n
\n
\n\n
\n \n
\n {{ t('report.run_report.generating_report.title') }}\n {{ t('report.run_report.generating_report.message') }}\n
\n
\n\n \n
\n \n
\n\n
\n
\n {{ t('report.run_report.no_parameters.message') }}\n
\n
\n\n
\n \n \n \n
\n \n\n \n \n
\n\n
\n \n\n \n
\n \n
\n \n
\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { TranslocoService } from '@ngneat/transloco';\n\nimport { EventService, NotificationService } from '@core/services';\nimport { formatReportDate, formatReportDateTime } from '@util/form';\n\nimport { ReportParameter } from '#types/report';\n\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\nimport { ReportActions } from '@report/state';\n\n@Component({\n selector: 'z-run-report',\n templateUrl: './run-report.component.html',\n styleUrls: ['./run-report.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RunReportComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n\n form: FormGroup;\n\n getParamsLoading$: Observable;\n\n display$ = new BehaviorSubject(false);\n\n parameterCount$ = new BehaviorSubject(1);\n parameters$ = new BehaviorSubject(null);\n\n style$ = new BehaviorSubject({ width: '40rem', height: '30rem' });\n\n translate = (key: string | string[], params?: Record, lang?: string) =>\n this.translocoService.translate(key, params, lang);\n\n constructor(\n private store: Store,\n private translocoService: TranslocoService,\n public reportService: ReportService,\n private eventService: EventService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit() {\n this.getParamsLoading$ = this.eventService.loading(CONSTANTS.REQUEST_GET_PARAMS);\n\n this.form = new FormGroup({\n format: new FormControl('pdf'),\n parameters: new FormArray([]),\n });\n\n this.reportService.displayRunReportDialog$.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n this.display$.next(value);\n\n if (!value) {\n this.form.get('format').setValue('pdf');\n this.setupFormGroup([]);\n }\n });\n\n this.getParamsLoading$.pipe(distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((loading) => {\n if (loading) {\n this.style$.next({\n width: '40rem',\n height: `30rem`,\n });\n }\n });\n\n this.reportService.parameters$.pipe(distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((parameters) => {\n if (parameters) {\n this.setupFormGroup(parameters);\n }\n });\n\n this.parameterCount$.pipe(takeUntil(this.destroy$)).subscribe((parameterCount) => {\n let height = 30;\n\n if (parameterCount > 2) {\n const rows = parameterCount - 2;\n height += rows * 5.5;\n }\n\n if (parameterCount === 0) {\n height = 20;\n } else {\n height += 1;\n }\n\n this.style$.next({\n width: '40rem',\n height: `${height}rem`,\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n onVisibleChange(event: any) {\n if (event === false) {\n this.close();\n }\n }\n\n runReport() {\n this.notificationService.clear();\n\n const parameters = this.form.value.parameters as ReportParameter[];\n const payload: ReportParameter[] = [];\n\n for (const parameter of parameters) {\n let value: string | number | string[] | number[] = parameter.field_value;\n\n // check for required fields\n if (parameter.field_required === 'Y' && !value) {\n this.notificationService.error({\n message: this.translate('report.run_report.error.required_field', { fieldName: parameter.field_label }),\n });\n\n return;\n }\n\n const fieldType = parameter.field_type.toLowerCase();\n\n // parse any numeric values\n if (fieldType === 'decimal' || typeof value === 'number') {\n value = Number(value).toString();\n }\n\n // format dates into a string\n if (fieldType === 'datetime') {\n if (Array.isArray(value)) {\n let formatted_value: string = '';\n\n for (const val of value) {\n formatted_value = formatReportDateTime(val);\n }\n\n value = formatted_value;\n } else {\n value = formatReportDateTime(value);\n }\n } else if (fieldType === 'range' || fieldType === 'date' || parameter.field_value instanceof Date) {\n if (Array.isArray(value)) {\n let formatted_value: string = '';\n\n for (const val of value) {\n formatted_value = formatReportDate(val);\n }\n\n value = formatted_value;\n } else {\n value = formatReportDate(value);\n }\n }\n\n // list fields must return an array, even if we only use a text input\n if (parameter.allow_multi_value === 'Y' && !Array.isArray(value)) {\n value = [value];\n }\n\n payload.push({\n ...parameter,\n field_value: value,\n });\n }\n\n this.store.dispatch(ReportActions.RequestReportSetParameters({ format: this.form.get('format').value, parameters: payload }));\n }\n\n close() {\n this.reportService.displayRunReportDialog$.next(false);\n }\n\n setupFormGroup(reportParameters: ReportParameter[]) {\n const parameters = this.form.get('parameters') as FormArray;\n parameters.clear();\n\n this.parameters$.next(new FormArray([]));\n this.parameterCount$.next(reportParameters.length);\n\n for (let i = 0; i < reportParameters.length; i++) {\n const required = reportParameters[i].field_required === 'Y' ? [Validators.required] : [];\n\n const parameter = new FormGroup({\n allow_custom_current_values: new FormControl(reportParameters[i].allow_custom_current_values),\n allow_multi_value: new FormControl(reportParameters[i].allow_multi_value),\n allow_null_value: new FormControl(reportParameters[i].allow_null_value),\n default_value_display_type: new FormControl(reportParameters[i].default_value_display_type),\n default_values: new FormControl(reportParameters[i].default_values),\n field_label: new FormControl(reportParameters[i].field_label),\n field_name: new FormControl(reportParameters[i].field_name),\n field_required: new FormControl(reportParameters[i].field_required),\n field_seq: new FormControl(reportParameters[i].field_seq),\n field_type: new FormControl(reportParameters[i].field_type),\n field_value: new FormControl(reportParameters[i].field_value, required),\n field_values: new FormControl(reportParameters[i].field_values),\n initial_values: new FormControl(reportParameters[i].initial_values),\n parameter_type: new FormControl(reportParameters[i].parameter_type),\n value_range_kind: new FormControl(reportParameters[i].value_range_kind),\n all_values: new FormControl(),\n });\n\n parameters.push(parameter);\n }\n\n parameters.markAsPristine();\n parameters.markAsUntouched();\n\n this.parameters$.next(parameters);\n }\n}\n","\n
\n \n
\n\n
\n \n \n\n \n \n
\n \n\n \n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { PERMISSIONS } from '@auth/permissions';\nimport { AuthGuard, PermissionGuard } from '@auth/services';\n\nimport { LookupComponent } from './lookup.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: LookupComponent,\n data: {\n breadcrumb: null,\n requiredPermissions: [PERMISSIONS.WSREPORTS],\n },\n canActivate: [AuthGuard, PermissionGuard],\n runGuardsAndResolvers: 'always',\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class LookupRoutingModule {}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Store } from '@ngrx/store';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { Screen } from '@core/interfaces';\nimport { GridService, WindowService } from '@core/services';\nimport { remToPx } from '@util/layout';\n\nimport { PERMISSIONS } from '@auth/permissions';\nimport { AuthService } from '@auth/services';\nimport { CONSTANTS } from '@report/constants';\nimport { ReportService } from '@report/services';\nimport { ReportActions } from '@report/state';\n\nimport { ToolbarComponent } from './toolbar/toolbar.component';\n\n@Component({\n selector: 'z-lookup',\n templateUrl: './lookup.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LookupComponent implements OnInit, OnDestroy, AfterViewInit {\n destroy$ = new Subject();\n\n reportAdmin$ = new BehaviorSubject(false);\n\n gridPanel: HTMLDivElement;\n\n screen: Screen = {\n group: CONSTANTS.SCREEN_GROUP,\n route: this.router.url,\n };\n\n @ViewChild('toolbar') toolbar: ToolbarComponent;\n\n constructor(\n private authService: AuthService,\n private store: Store,\n private router: Router,\n public reportService: ReportService,\n private renderer: Renderer2,\n private windowService: WindowService,\n public gridService: GridService\n ) {}\n\n ngOnInit() {\n this.store.dispatch(\n ReportActions.LookupInitialize({\n screen: this.screen,\n })\n );\n\n if (this.authService.checkPermission(PERMISSIONS.WSREPORTADMIN)) {\n this.reportAdmin$.next(true);\n } else {\n this.reportAdmin$.next(false);\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.unsubscribe();\n }\n\n ngAfterViewInit() {\n this.gridPanel = document.querySelector(`.grid-panel .p-panel-content`);\n this.renderer.setStyle(this.gridPanel, 'transition', `height 0.2s ease-in-out`);\n this.renderer.setStyle(this.gridPanel, 'overflow-y', `hidden`);\n\n // get initial panel height\n this.calculatePanelHeight();\n\n this.windowService.viewportHeight$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.calculatePanelHeight();\n });\n }\n\n calculatePanelHeight() {\n setTimeout(() => {\n if (this.toolbar) {\n const element: ElementRef = (this.toolbar.toolbar as any).el;\n\n const toolbarHeight = element?.nativeElement?.offsetHeight;\n\n if (element?.nativeElement?.offsetHeight) {\n this.windowService.viewportHeight$.pipe(take(1)).subscribe((viewportHeight) => {\n let gridPanelHeight = viewportHeight ?? 0;\n const headerDimensions = this.windowService.getHeaderDimensions();\n\n gridPanelHeight -= headerDimensions.height ?? 0; // header panels\n gridPanelHeight -= toolbarHeight;\n gridPanelHeight -= remToPx(4); // gaps between panels + footer bottom margin\n\n // minimum grid panel height\n if (gridPanelHeight < remToPx(24)) {\n gridPanelHeight = remToPx(24);\n }\n\n this.renderer.setStyle(this.gridPanel, 'height', `${gridPanelHeight}px`);\n this.reportService.lookupGridPanelHeight$.next(gridPanelHeight);\n });\n }\n } else {\n this.windowService.viewportHeight$.pipe(take(1)).subscribe((viewportHeight) => {\n let gridPanelHeight = viewportHeight ?? 0;\n const headerDimensions = this.windowService.getHeaderDimensions();\n\n gridPanelHeight -= headerDimensions.height ?? 0; // header panels\n gridPanelHeight -= remToPx(4); // gaps between panels + footer bottom margin\n\n // minimum grid panel height\n if (gridPanelHeight < remToPx(24)) {\n gridPanelHeight = remToPx(24);\n }\n\n this.renderer.setStyle(this.gridPanel, 'height', `${gridPanelHeight}px`);\n this.reportService.lookupGridPanelHeight$.next(gridPanelHeight);\n });\n }\n }, 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ComponentsModule } from '@core/components/components.module';\nimport { SharedModule } from '@core/shared.module';\n\nimport { FiltersComponent } from './filters/filters.component';\nimport { ReportGridComponent } from './grid/grid.component';\nimport { LookupComponent } from './lookup.component';\nimport { ReportParameterComponent } from './report-parameter/report-parameter.component';\nimport { RunReportComponent } from './run-report/run-report.component';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { ToolbarComponent } from './toolbar/toolbar.component';\n\nimport { LookupRoutingModule } from './lookup-routing.module';\n\n@NgModule({\n declarations: [\n LookupComponent,\n ReportGridComponent,\n SidebarComponent,\n ToolbarComponent,\n FiltersComponent,\n RunReportComponent,\n ReportParameterComponent,\n ],\n imports: [CommonModule, SharedModule, LookupRoutingModule, ComponentsModule],\n})\nexport class LookupModule {}\n"],"x_google_ignoreList":[]}