@pongrass/utils 1.1.4-v20 → 1.1.5-v20
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/fesm2022/pongrass-utils.mjs +312 -183
- package/fesm2022/pongrass-utils.mjs.map +1 -1
- package/index.d.ts +48 -10
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pongrass-utils.mjs","sources":["../../../projects/utils/src/lib/services/configuration.service.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/color-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/custom-select-filter.component.ts","../../../projects/utils/src/lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component.ts","../../../projects/utils/src/lib/enums/browser-constants.enum.ts","../../../projects/utils/src/lib/enums/jsonrpc-methods.enum.ts","../../../projects/utils/src/lib/services/jsonrpc.service.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.html","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.html","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.ts","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.html","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.ts","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.interface.ts","../../../projects/utils/src/lib/constants/color.constants.ts","../../../projects/utils/src/lib/directives/circular-focus.directive.ts","../../../projects/utils/src/lib/directives/decimal-input.directive.ts","../../../projects/utils/src/lib/directives/show-tooltip-if-truncated.directive.ts","../../../projects/utils/src/lib/directives/multi-select-styler.directive.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.module.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.html","../../../projects/utils/src/lib/enums/grid.enum.ts","../../../projects/utils/src/lib/constants/app.constanta.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.html","../../../projects/utils/src/lib/modules/table-grid/table-grid.module.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.ts","../../../projects/utils/src/lib/directives/background-image.directive.ts","../../../projects/utils/src/lib/helpers/dateTime.helpers.ts","../../../projects/utils/src/lib/enums/export.enum.ts","../../../projects/utils/src/lib/services/utils.service.ts","../../../projects/utils/src/lib/interface/login.interface.ts","../../../projects/utils/src/lib/modules/login/login.component.ts","../../../projects/utils/src/lib/modules/login/login.component.html","../../../projects/utils/src/lib/modules/login/login.module.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/pongrass-utils.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationServiceLib {\n public currentTablePreference: WritableSignal<any>;\n public allConfigValues: WritableSignal<IConfig | null>;\n\n public openFilterModal: WritableSignal<boolean>;\n public utilsAppliedTheme: WritableSignal<string>;\n\n constructor() {\n this.currentTablePreference = signal<any>({});\n this.allConfigValues = signal<IConfig | null>(null);\n\n this.openFilterModal = signal<boolean>(false);\n this.utilsAppliedTheme = signal<string>('');\n }\n\n /* Generate Unique ID as String */\n public generateUniqueId(): string {\n return `${Math.floor(Date.now() / 1000)}`;\n }\n\n public setTablePreference(tableName: string, preference: any): void {\n const allTablePreference = this.currentTablePreference();\n allTablePreference[tableName] = preference;\n this.currentTablePreference.set(allTablePreference);\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { IColorOption } from '../../interface/multi-forms.interface';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'prg-ws-color-cell-renderer',\n template: `\n <div class=\"cell-wrapper align-items-center d-inline-flex gap-2\">\n <span class=\"color-box\" [ngStyle]=\"{ 'background-color': colorCode }\"></span>\n <span class=\"text-truncate\">\n {{ params.value }}\n </span>\n </div>\n `,\n styles: [\n `\n .color-box {\n height: 1.5rem;\n }\n .cell-wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n overflow: hidden; /* Required to enable truncation */\n }\n `\n ]\n})\nexport class ColorCellRendererComponent implements ICellRendererAngularComp {\n public params!: ICellRendererParams;\n public colorsList: IColorOption[] = [];\n public colorCode = '';\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.colorsList = params.colDef?.cellRendererParams?.colorsList ?? [];\n this.setColorCode(this.params?.value);\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n return true;\n }\n\n setColorCode(colorKey: string): void {\n if (this.colorsList && this.colorsList.length > 0 && colorKey) {\n const selectedColor = this.colorsList.find(color => color.color_name === colorKey);\n if (selectedColor) {\n this.colorCode = selectedColor.value as string;\n } else {\n this.colorCode = ''; // Default color if not found\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\nimport { FormsModule } from '@angular/forms';\nimport { ViewChild, ElementRef } from '@angular/core';\n\nimport { FormModule } from '@coreui/angular-pro';\n\n@Component({\n selector: 'prg-ws-custom-set-filter',\n standalone: true,\n imports: [FormsModule, FormModule],\n template: `\n <div class=\"select-filter-container\">\n <input type=\"text\" #searchInput cFormControl [(ngModel)]=\"searchText\" (input)=\"onSearchChange()\" placeholder=\"Search...\" class=\"search-box\" />\n @if (filteredValues.length > 0) {\n <div>\n <label class=\"checkbox-item\">\n <input cFormCheckInput [indeterminate]=\"isIndeterminate\" type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"onSelectAllChanged($event)\" />\n (Select All)\n </label>\n </div>\n } @else {\n <div>\n <label> No matches </label>\n </div>\n }\n\n <div class=\"checkbox-list\">\n @for (value of filteredValues; track value) {\n <label [attr.aria-label]=\"'Select ' + value\" class=\"checkbox-item\">\n <input cFormCheckInput type=\"checkbox\" [value]=\"value\" [checked]=\"isValueSelected(value)\" (change)=\"onValueChanged(value, $event)\" />\n {{ value }}\n </label>\n }\n </div>\n </div>\n `,\n styles: [\n `\n .select-filter-container {\n padding: 10px;\n label {\n display: flex;\n gap: 5px;\n }\n }\n .search-box {\n width: 100%;\n margin-bottom: 5px;\n padding: 4px;\n }\n\n .checkbox-list {\n max-height: 200px;\n overflow-y: auto;\n }\n .checkbox-item {\n padding: 4px 6px;\n cursor: pointer;\n border-radius: 4px;\n }\n .checkbox-item:hover {\n background-color: #f0f0f0;\n }\n `\n ]\n})\nexport class CustomSelectFilterComponent implements IFilterAngularComp {\n params!: IFilterParams;\n uniqueValues: string[] = [];\n filteredValues: string[] = [];\n selectedValues: Set<string> = new Set();\n searchText: string = '';\n isIndeterminate: boolean = false;\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.uniqueValues = this.getUniqueValues();\n this.filteredValues = [...this.uniqueValues];\n this.uniqueValues.forEach(val => this.selectedValues.add(val));\n }\n\n @ViewChild('searchInput') searchInputRef!: ElementRef<HTMLInputElement>;\n\n afterGuiAttached(): void {\n this.searchInputRef?.nativeElement?.focus();\n }\n\n getUniqueValues(): string[] {\n const values = new Set<string>();\n this.params.api.forEachNode(node => {\n values.add(node.data[this.params.colDef.field!]);\n });\n return Array.from(values).sort();\n }\n\n isValueSelected(value: string): boolean {\n return this.selectedValues.has(value);\n }\n\n isAllSelected(): boolean {\n return this.filteredValues.length > 0 && this.filteredValues.every(val => this.selectedValues.has(val));\n }\n\n onSelectAllChanged(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.filteredValues.forEach(val => this.selectedValues.add(val));\n } else {\n this.filteredValues.forEach(val => this.selectedValues.delete(val));\n }\n this.updateIndeterminate();\n this.params.filterChangedCallback();\n }\n\n onValueChanged(value: string, event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectedValues.add(value);\n } else {\n this.selectedValues.delete(value);\n }\n this.updateIndeterminate();\n // If all are now selected, ensure isIndeterminate is false\n if (this.isAllSelected()) {\n this.isIndeterminate = false;\n }\n this.params.filterChangedCallback();\n }\n\n updateIndeterminate(): void {\n // isIndeterminate is true if at least one but not all filteredValues are selected\n const selectedCount = this.filteredValues.filter(val => this.selectedValues.has(val)).length;\n this.isIndeterminate = selectedCount > 0 && selectedCount < this.filteredValues.length;\n }\n\n onSearchChange(): void {\n const lower = this.searchText.toLowerCase();\n this.filteredValues = this.uniqueValues.filter(val => val?.toString().toLowerCase().includes(lower));\n this.updateIndeterminate();\n }\n\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n const value = params.data[this.params.colDef.field!];\n return this.selectedValues.has(value);\n }\n\n isFilterActive(): boolean {\n return this.selectedValues.size !== this.uniqueValues.length;\n }\n\n getModel() {\n return { values: Array.from(this.selectedValues) };\n }\n\n setModel(model: { values?: string[] }): void {\n if (model?.values) {\n this.selectedValues = new Set(model.values);\n } else {\n this.selectedValues = new Set(this.uniqueValues);\n }\n this.filteredValues = [...this.uniqueValues];\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\nimport { FormModule } from '@coreui/angular-pro';\n\n@Component({\n standalone: true,\n imports: [FormModule],\n template: ` <div class=\"d-flex justify-content-start align-items-center h-100 mt-2\">\n <input\n cFormCheckInput\n type=\"checkbox\"\n class=\"me-2 cell-renderer-checkbox\"\n [checked]=\"value\"\n (change)=\"onChangeCheckBox($event)\"\n [disabled]=\"ischeckboxDisabled\" />\n </div>`\n})\nexport class CheckboxCellRendererComponent implements ICellRendererAngularComp {\n public value!: boolean;\n private params!: ICellRendererParams;\n public ischeckboxDisabled = true;\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.ischeckboxDisabled = params.colDef?.cellRendererParams?.data?.disabled ?? true;\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n this.value = params.value === 'Y' || params.value === 1 ? true : false;\n return true;\n }\n\n onChangeCheckBox(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n this.value = checked;\n\n // Emit the change event to the parent via a callback\n if (this.params.colDef?.cellRendererParams?.onCheckboxChange) {\n this.params.colDef.cellRendererParams.onCheckboxChange(this.params.data, checked, this.params.colDef?.field);\n }\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\n\nimport { ButtonModule } from '@coreui/angular-pro';\n\n@Component({\n standalone: true,\n selector: 'prg-ws-comments-button-cell-renderer',\n imports: [ButtonModule],\n template: `\n <div>\n <button cButton [color]=\"params.data?.orders_notes ? 'primary' : 'secondary'\" size=\"sm\" data-action=\"comment-action\" (click)=\"onCommentClick()\">\n Comments\n </button>\n </div>\n `,\n styles: ``\n})\nexport class CommentsButtonCellRendererComponent implements ICellRendererAngularComp {\n public params!: ICellRendererParams;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n return true;\n }\n\n onCommentClick(): void {\n if (this.params?.colDef?.cellRendererParams?.onCommentClick) {\n this.params.colDef.cellRendererParams.onCommentClick(this.params.data);\n }\n }\n}\n","export enum BrowserConstantsEnum {\n sessionid = 'sessionId',\n loginUid = 'uid',\n iframeTabs = 'tabs',\n connectExternalFlag = 'connectExternal',\n lastUserName = 'lastUserName',\n logoutReason = 'logoutReason',\n\n tablePreference = 'table_preference',\n\n cookieSidebarUnfoldable = 'pongrass_sidebar_state',\n cookieTheme = 'pongrass_theme',\n\n menuItems = '_menu_items'\n}\n","export enum JSONRPCMethods {\n getFormsConfig = 'get_form',\n tableSearch = 'table_search',\n tableUpdate = 'table_update',\n tableList = 'table_list',\n generateAccountId = 'generate_accountid',\n updateTablePreference = 'update_form_preference',\n\n listPhotoQueue = 'photo_queue',\n updateFileStatus = 'update_photo_status',\n report = 'report',\n\n adStatusList = 'list_adstatus',\n adApprovedList = 'get_approval_adlist',\n updateApprovedList = 'update_approve_adlist',\n getEditionPublicationList = 'get_edition',\n nationaROPReport = 'national_rop_report',\n nationaInserts = 'national_inserts',\n prodStatusList = 'list_prodstatus',\n updateAdStatus = 'update_ad_status',\n\n ordersNotes = 'orders_notes',\n\n getPageStatus = 'get_page_status',\n listPageStatus = 'list_pagestatus',\n updatePageStatus = 'update_page_status',\n\n markads = 'markads',\n updateReport = 'update_report',\n\n listFileStatus = 'list_filestatus',\n getIndustryList = 'get_industry'\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { lastValueFrom, map, Observable } from 'rxjs';\nimport { IAPIResponse, IConfig } from '../interface/api-response.interface';\nimport { IFormConfig } from '../modules/multi-form/multi-form.interface';\nimport { BrowserConstantsEnum } from '../enums/browser-constants.enum';\nimport { JSONRPCMethods } from '../enums/jsonrpc-methods.enum';\nimport { IAvailableForms } from '../interface/multi-forms.interface';\nimport { ConfigurationServiceLib } from './configuration.service';\nimport { MaintAction } from '../modules/table-grid/table-grid';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JsonrpcServiceLib {\n private readonly httpService = inject(HttpClient);\n private readonly configService = inject(ConfigurationServiceLib);\n\n // JSONRPC POST Request\n public postJsonRpcRequest(method: string, params: any): Observable<any> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n const body = {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.configService.generateUniqueId()\n };\n\n return this.httpService\n .post(((window as any).config as IConfig)?.apiBaseURLWebMaint, body, { headers })\n .pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));\n }\n\n // JSONRPC POST Request With promise\n public async postJsonRpcRequestPromise(method: string, params: any): Promise<any> {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n const body = {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.configService.generateUniqueId()\n };\n\n const request$ = this.httpService.post(((window as any).config as IConfig)?.apiBaseURLWebMaint, body, { headers });\n const response = await lastValueFrom<any>(request$);\n return { ...response, timestamp: new Date().toISOString() };\n }\n\n /**\n *\n * @param formName Form config name\n * @param tableName Table Name\n */\n public async getFormConfig(formName: string, tableName: string): Promise<IFormConfig | null> {\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n form_name: formName,\n table_name: tableName\n };\n\n return this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, params)\n .then((response: IAPIResponse<[IFormConfig]>) => {\n return response.result ? response.result[0] : { rows: [] };\n })\n .finally(() => {});\n }\n\n /**\n *\n * @param formName Report config name\n * @param reportName Table Name\n */\n public async getFormConfigReports(formName: string, reportName: string): Promise<IFormConfig | null> {\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n form_name: formName,\n report_name: reportName\n };\n\n return this.postJsonRpcRequestPromise(JSONRPCMethods.report, params)\n .then((response: IAPIResponse<[IFormConfig]>) => {\n return response.result ? response.result[0] : { rows: [] };\n })\n .finally(() => {});\n }\n\n /** Get available forms */\n public async getTableConfig(tableName: string): Promise<IAvailableForms[]> {\n try {\n const response: IAPIResponse<IAvailableForms[]> = await this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: tableName\n });\n\n if (response.result) {\n return response.result;\n }\n return [];\n } catch (error) {\n return [];\n }\n }\n\n /** Get single row data by their params */\n public async getTableRow(tableName: string, param: any): Promise<any> {\n let params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: tableName\n };\n params = { ...params, ...param };\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableSearch, params);\n }\n\n /**\n *\n * @param tableName Table Name\n * @param param Form values and params needed fo the call\n * @param action 'U' for update and 'N' for create and 'D' for delete\n * @returns Promise<any>\n */\n public async createUpdateDeleteTableRow(tableName: string, requests: any, action?: MaintAction): Promise<any> {\n let params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: tableName,\n maint_action: action\n };\n params = { ...params, ...requests };\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableUpdate, params);\n }\n\n /**\n *\n * @param tableName Table Name\n * @param param Params to get the list of data\n * @returns Array of data\n */\n public async getTableList(tableName: string, param: any): Promise<any> {\n let params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: tableName\n };\n params = { ...params, ...param };\n\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableList, params);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, Input, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MultiSelectModule } from '@coreui/angular-pro';\nimport { NgClass } from '@angular/common';\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\nimport { IEditionPublication } from '../../interface/multi-forms.interface';\nimport { IAPIResponse } from '../../interface/api-response.interface';\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\n\n@Component({\n selector: 'prg-ws-edition-list-grouped',\n imports: [MultiSelectModule, FormsModule, NgClass],\n templateUrl: './edition-list-grouped.component.html',\n styleUrl: './edition-list-grouped.component.scss',\n standalone: true\n})\nexport class EditionListGroupedComponent implements OnInit, OnDestroy {\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\n\n private isActive: boolean;\n\n public editionPublicationList: {\n region: string;\n values: IEditionPublication[];\n }[];\n\n private selectedRegions: string[];\n private selectedEditions: string[];\n\n @Output() selectedEditionsChange = new EventEmitter<string[]>();\n @Input() label: string;\n @Input() multiple: boolean;\n @Input() hasFormError: boolean;\n\n constructor() {\n this.isActive = true;\n this.editionPublicationList = [];\n this.selectedEditions = [];\n this.selectedRegions = [];\n this.label = '';\n this.hasFormError = false;\n this.multiple = true;\n }\n ngOnInit(): void {\n this.getEditionPublicationList();\n }\n\n ngOnDestroy(): void {\n this.isActive = false;\n }\n\n private async getEditionPublicationList(): Promise<void> {\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n for_approval: true\n };\n\n await this.jsonrpcService\n .postJsonRpcRequestPromise(JSONRPCMethods.getEditionPublicationList, params)\n .then((response: IAPIResponse<IEditionPublication[]>) => {\n if (response.result) {\n const result = response.result;\n result.forEach(ed => {\n ed['selected'] = false;\n });\n const groupedByRegion = result.reduce((acc: any, current: IEditionPublication) => {\n const region = current.region;\n if (region) {\n if (!acc[region]) {\n acc[region] = {\n region: region,\n values: []\n };\n }\n acc[region].values.push(current);\n }\n return acc;\n }, {});\n this.editionPublicationList = Object.values(groupedByRegion);\n }\n });\n }\n\n public onEditionSelection(option: IEditionPublication[] | IEditionPublication): void {\n this.selectedEditions = [];\n\n if (Array.isArray(option)) {\n if (option.length > 0) {\n option.forEach(editionData => {\n this.selectedEditions.push(editionData.edname!);\n });\n }\n } else {\n if (option && option.edname) {\n this.selectedEditions.push(option.edname);\n }\n }\n\n this.selectedEditionsChange.emit(this.selectedEditions);\n }\n\n public onSelectEditionGroup(region: string, index: number): void {\n const isSelected = this.selectedRegions.includes(region);\n\n if (isSelected) {\n this.selectedRegions.splice(index, 1);\n } else {\n this.selectedRegions.push(region);\n }\n\n this.editionPublicationList.forEach(element => {\n if (element.region === region) {\n element.values.forEach(regionValues => {\n regionValues.selected = !isSelected;\n });\n }\n });\n }\n\n public onVisibleChange(isActive: boolean): void {\n const elements = document.getElementsByClassName('form-multi-select-cleaner');\n Array.from(elements).forEach((element: Element) => {\n (element as HTMLElement).style.display = isActive ? 'inline-block' : 'none';\n });\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n @if (label) {\n <label for=\"sel-group-edition\">{{ label }}</label>\n }\n <c-multi-select\n [cleaner]=\"true\"\n [selectionType]=\"multiple ? 'counter' : 'text'\"\n [multiple]=\"multiple\"\n clearSearchOnSelect\n [ngClass]=\"{ 'form-invalid': hasFormError }\"\n placeholder=\"All Editions\"\n visibleItems=\"8\"\n (valueChange)=\"onEditionSelection($event)\"\n (visibleChange)=\"onVisibleChange($event)\">\n @for (option of editionPublicationList; track $index + '_' + option.region) {\n <c-multi-select-optgroup>\n <c-multi-select-optgroup-label (click)=\"onSelectEditionGroup(option.region, $index)\" class=\"region-selector cursor-pointer\">{{\n option?.region\n }}</c-multi-select-optgroup-label>\n @for (item of option.values; track item?.description) {\n <c-multi-select-option [value]=\"item\" [selected]=\"item.selected\">{{ '[' + item?.edname + ']' }} {{ item?.description }}</c-multi-select-option>\n }\n </c-multi-select-optgroup>\n }\n </c-multi-select>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { IIndustry } from '../../interface/multi-forms.interface';\n\n@Component({\n selector: 'prg-ws-industry-update-listbox-cell-renderer',\n templateUrl: './industry-update-listbox-cell-renderer.component.html',\n styleUrl: './industry-update-listbox-cell-renderer.component.scss',\n imports: [FormsModule, NgClass],\n standalone: true\n})\nexport class IndustryUpdateListboxCellRendererComponent implements ICellRendererAngularComp {\n public industryList: IIndustry[] = [];\n public selectedIndustry: string | undefined;\n private params!: ICellRendererParams;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.industryList = params.colDef?.cellRendererParams?.data?.industryList ?? [];\n this.selectedIndustry = params.data?.industry;\n\n if (!this.selectedIndustry) {\n this.selectedIndustry = 'select-industry';\n }\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.selectedIndustry = params.data?.industry;\n\n if (!this.selectedIndustry) {\n this.selectedIndustry = 'select-industry';\n }\n return true;\n }\n\n public onIndustryChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (this.params.colDef?.cellRendererParams?.onUpdateIndustry) {\n this.params.colDef.cellRendererParams.onUpdateIndustry(this.params.data, value);\n }\n }\n}\n","<select\n class=\"form-select select-industry\"\n [ngClass]=\"{ 'select-industry-red': selectedIndustry === 'select-industry' }\"\n [(ngModel)]=\"selectedIndustry\"\n (change)=\"onIndustryChange($event)\"\n id=\"sel-industry\"\n name=\"sel-industry\">\n <option value=\"select-industry\" disabled class=\"select-industry-opt\">Select Industry</option>\n @for (industry of industryList; track industry.industry) {\n <option [value]=\"industry?.industry\" class=\"select-industry-opt\">\n {{ industry?.description }}\n </option>\n }\n</select>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormModule } from '@coreui/angular-pro';\nimport { IPageStatusList } from '../../interface/multi-forms.interface';\n\n@Component({\n selector: 'prg-ws-page-status-cell-renderer',\n templateUrl: './page-status-cell-renderer.component.html',\n styleUrl: './page-status-cell-renderer.component.scss',\n imports: [FormsModule, CommonModule, FormModule],\n standalone: true\n})\nexport class PageStatusCellRendererComponent {\n public pageStatusList: IPageStatusList[] = [];\n private params!: ICellRendererParams;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public pageStatus: any | undefined = undefined;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.pageStatusList = params.colDef?.cellRendererParams?.data?.pageStatusList ?? [];\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n this.pageStatus = params.data;\n return true;\n }\n\n public updatePageStatus(value: string): void {\n if (this.params.colDef?.cellRendererParams?.onUpdatePageStatus) {\n this.params.colDef.cellRendererParams.onUpdatePageStatus(this.params.data, value);\n }\n }\n\n public getStatusColor(): string {\n const selectedStatus = this.pageStatusList.find(status => status.page_status_name === this.pageStatus!.page_status_name);\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\n }\n}\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"pageStatus!.page_status_name\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of pageStatusList; track $index) {\n <option [value]=\"status.page_status_name\">\n {{ status.page_status_name }}\n </option>\n }\n </select>\n</div>\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormModule } from '@coreui/angular-pro';\nimport { IProdStatus } from '../../interface/multi-forms.interface';\n\n@Component({\n standalone: true,\n imports: [FormModule, CommonModule, FormsModule],\n selector: 'prg-ws-status-select-cell-renderer',\n templateUrl: './status-select-cell-renderer.component.html',\n styleUrl: './status-select-cell-renderer.component.scss'\n})\nexport class StatusSelectCellRendererComponent implements ICellRendererAngularComp {\n public prodStatusList: IProdStatus[] = [];\n private params!: ICellRendererParams;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public fileStatus: any | undefined = undefined;\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.prodStatusList = params.colDef?.cellRendererParams?.data?.prodStatusList ?? [];\n this.refresh(params);\n }\n\n // Return Cell Value\n refresh(params: ICellRendererParams): boolean {\n this.fileStatus = params.data;\n return true;\n }\n\n public updatePageStatus(value: string): void {\n if (this.params.colDef?.cellRendererParams?.onUpdateFileStatus) {\n this.params.colDef.cellRendererParams.onUpdateFileStatus(this.params.data, value);\n }\n }\n\n public getStatusColor(): string {\n const selectedStatus = this.prodStatusList.find(status => status.statusid === this.fileStatus!.it_prodstatusid);\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\n }\n}\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"this.fileStatus!.it_prodstatusid\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of prodStatusList; track $index) {\n <option [value]=\"status.statusid\">\n {{ status.statusdesc }}\n </option>\n }\n </select>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AbstractControl } from '@angular/forms';\n\nexport enum FormFieldType {\n Text = 'text',\n Email = 'email',\n Number = 'number',\n Select = 'select',\n Textarea = 'textarea',\n Date = 'date',\n Checkbox = 'checkbox',\n Float = 'float',\n Edition = 'edition',\n Separator = 'seperator',\n FormHeader = 'form-header',\n Password = 'password',\n Url = 'url',\n Tel = 'tel'\n}\n\nexport interface IFieldConfig {\n /** Form label */\n label: string;\n\n /** Form field type */\n type: FormFieldType;\n\n /** id or formControlName */\n controlName: string;\n\n /** for selects or multi-selects */\n options?: { value: string; label: string; disabled?: boolean }[];\n\n /** for selects or multi-selects allows create option along with selects */\n allowCreateOptions?: boolean;\n\n /** for selects or multi-selects allows search option */\n allowSearch?: boolean;\n\n /** for selects or multi-selects allows clear option */\n allowCleaner?: boolean;\n\n /** grid column span */\n colspan?: number;\n\n /** Placeholder */\n placeholder?: string;\n\n /** For multi-selects */\n selectionType?: 'text' | 'tags' | 'counter';\n\n /** For textarea rows */\n textareaRows?: number;\n\n /** For textarea columns */\n textareaColumns?: number;\n\n /** Validations */\n validations: IFormValidations;\n\n /** Form Value */\n value?: any;\n\n /** For multi-selects - Allows multiple selection */\n multiple?: boolean;\n\n styles?: IFormStyles;\n\n actionButton?: {\n icon: string;\n tooltip?: string; // Tooltip for the action button\n action: string; // e.g., 'reload', 'generateAccountId'\n };\n}\n\nexport interface IFormConfig {\n formName?: string;\n rows: IFieldConfig[][];\n unique_key?: string[];\n}\n\nexport interface IFormValidations {\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n readonly?: boolean;\n precision?: number; // For float type number\n min?: number; // For number type\n max?: number; // For number type\n defaultAdvance?: 'weekly' | 'monthly' | 'quarterly' | 'halfyearly' | 'yearly';\n}\n\nexport interface IFormSubmissionEmit {\n /** Reflects the validity of the form */\n isValid: boolean;\n\n /** Reflects the values of the form controls */\n values: { [key: string]: any };\n\n /** Reflects the controls of the form */\n controls: { [key: string]: AbstractControl };\n}\n\nexport interface IFormStyles {\n field?: string;\n label?: string;\n}\n","export const ColorsCodes = [\n {\n color_name: 'AliceBlue',\n color_code: '#F0F8FF'\n },\n {\n color_name: 'Aqua',\n color_code: '#00FFFF'\n },\n {\n color_name: 'Aquamarine',\n color_code: '#7FFFD4'\n },\n {\n color_name: 'Beige',\n color_code: '#F5F5DC'\n },\n {\n color_name: 'Black',\n color_code: '#000000'\n },\n {\n color_name: 'Blue',\n color_code: '#0000FF'\n },\n {\n color_name: 'Chartreuse',\n color_code: '#7FFF00'\n },\n {\n color_name: 'Coral',\n color_code: '#FF7F50'\n },\n {\n color_name: 'DarkGray',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGrey',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGreen',\n color_code: '#006400'\n },\n {\n color_name: 'DarkOrange',\n color_code: '#FF8C00'\n },\n {\n color_name: 'Fuchsia',\n color_code: '#FF00FF'\n },\n {\n color_name: 'GoldenRod',\n color_code: '#DAA520'\n },\n {\n color_name: 'Gray',\n color_code: '#808080'\n },\n {\n color_name: 'Grey',\n color_code: '#808080'\n },\n {\n color_name: 'Green',\n color_code: '#008000'\n },\n {\n color_name: 'GreenYellow',\n color_code: '#ADFF2F'\n },\n {\n color_name: 'Khaki',\n color_code: '#F0E68C'\n },\n {\n color_name: 'Lavender',\n color_code: '#E6E6FA'\n },\n {\n color_name: 'LightGray',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGrey',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGreen',\n color_code: '#90EE90'\n },\n {\n color_name: 'LightSalmon',\n color_code: '#FFA07A'\n },\n {\n color_name: 'LightSkyBlue',\n color_code: '#87CEFA'\n },\n {\n color_name: 'Lime',\n color_code: '#00FF00'\n },\n {\n color_name: 'LimeGreen',\n color_code: '#32CD32'\n },\n {\n color_name: 'Magenta',\n color_code: '#FF00FF'\n },\n {\n color_name: 'Maroon',\n color_code: '#800000'\n },\n {\n color_name: 'MediumSpringGreen',\n color_code: '#00FA9A'\n },\n {\n color_name: 'Navy',\n color_code: '#000080'\n },\n {\n color_name: 'Olive',\n color_code: '#808000'\n },\n {\n color_name: 'Orange',\n color_code: '#FFA500'\n },\n {\n color_name: 'OrangeRed',\n color_code: '#FF4500'\n },\n {\n color_name: 'Orchid',\n color_code: '#DA70D6'\n },\n {\n color_name: 'PaleGreen',\n color_code: '#98FB98'\n },\n {\n color_name: 'PaleTurquoise',\n color_code: '#AFEEEE'\n },\n {\n color_name: 'Plum',\n color_code: '#DDA0DD'\n },\n {\n color_name: 'Purple',\n color_code: '#800080'\n },\n {\n color_name: 'Red',\n color_code: '#FF0000'\n },\n {\n color_name: 'Salmon',\n color_code: '#FA8072'\n },\n {\n color_name: 'SandyBrown',\n color_code: '#F4A460'\n },\n {\n color_name: 'Silver',\n color_code: '#C0C0C0'\n },\n {\n color_name: 'SkyBlue',\n color_code: '#87CEEB'\n },\n {\n color_name: 'Teal',\n color_code: '#008080'\n },\n {\n color_name: 'Tomato',\n color_code: '#FF6347'\n },\n {\n color_name: 'Violet',\n color_code: '#EE82EE'\n },\n {\n color_name: 'Wheat',\n color_code: '#F5DEB3'\n },\n {\n color_name: 'White',\n color_code: '#FFFFFF'\n },\n {\n color_name: 'Yellow',\n color_code: '#FFFF00'\n }\n];\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[wsCircularFocus]',\n standalone: true\n})\nexport class CircularFocusDirective implements AfterViewInit, OnDestroy {\n private el = inject(ElementRef);\n\n @Input() formId: string = '';\n @Input() formGroup: FormGroup | null = null;\n\n private focusableElements: HTMLElement[] = [];\n private formSubscription: Subscription | null = null;\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.collectFocusableElements();\n\n // Subscribe to form value changes if formGroup is provided\n if (this.formGroup) {\n this.formSubscription = this.formGroup.valueChanges.subscribe(() => {\n // Wait for DOM to update after form changes\n setTimeout(() => {\n this.collectFocusableElements();\n }, 0);\n });\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n // Clean up subscription when directive is destroyed\n if (this.formSubscription) {\n this.formSubscription.unsubscribe();\n }\n }\n\n private collectFocusableElements(): void {\n if (!this.formId) {\n // If no formId is provided, use the current element\n this.focusableElements = this.getFocusableElements(this.el.nativeElement);\n } else {\n const formElement = document.getElementById(this.formId);\n if (formElement) {\n this.focusableElements = this.getFocusableElements(formElement);\n }\n }\n }\n\n private getFocusableElements(element: HTMLElement): HTMLElement[] {\n return Array.from(\n element.querySelectorAll(\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable]:not([disabled]), c-multi-select:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\n )\n ).filter(el => {\n // Filter out hidden elements\n const element = el as HTMLElement;\n return element.offsetParent !== null; // Check if element is visible\n }) as HTMLElement[];\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n // ToDo: Plan to escape the circular navigation when Escape is pressed\n // if (event.key === 'Escape') {}\n\n // Only handle Tab key events\n if (event.key !== 'Tab') return;\n\n // If no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n const currentElement = document.activeElement as HTMLElement;\n const currentIndex = this.focusableElements.indexOf(currentElement);\n\n // If current element is not in our list, do nothing\n if (currentIndex === -1) return;\n\n // Handle circular navigation\n if (event.shiftKey) {\n // Going backward with Shift+Tab\n if (currentIndex === 0) {\n event.preventDefault();\n const lastElement = this.focusableElements[this.focusableElements.length - 1];\n lastElement.focus();\n }\n } else {\n // Going forward with Tab\n if (currentIndex === this.focusableElements.length - 1) {\n event.preventDefault();\n const firstElement = this.focusableElements[0];\n firstElement.focus();\n }\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[wsDecimalInput]',\n standalone: true\n})\nexport class DecimalInputDirective implements OnInit, OnDestroy {\n private el = inject(ElementRef<HTMLInputElement>);\n private control = inject(NgControl);\n private sub!: Subscription;\n\n @Input() wsDecimalInput: number = 4;\n\n private specialKeys: string[] = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Delete'];\n\n ngOnInit(): void {\n // Only format when value comes from patchValue / setValue (not typing)\n this.sub = this.control.valueChanges?.subscribe(value => {\n const inputEl = this.el.nativeElement;\n // Skip if input element is focused (user typing)\n if (document.activeElement === inputEl) return;\n\n this.formatValue(value);\n }) as Subscription;\n }\n\n ngOnDestroy(): void {\n this.sub?.unsubscribe();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n const input = this.el.nativeElement;\n const value = input.value;\n\n if (this.specialKeys.includes(event.key)) return;\n\n if (event.key === '.' && value.includes('.')) {\n event.preventDefault();\n return;\n }\n\n const cursorPos = input.selectionStart ?? value.length;\n const nextValue = this.getNextValue(value, event.key, cursorPos);\n\n if (!this.isValidInput(nextValue)) {\n event.preventDefault();\n }\n }\n\n @HostListener('blur')\n onBlur() {\n this.formatValue(this.el.nativeElement.value);\n }\n\n private formatValue(value: any): void {\n if (value === null || value === undefined || value === '') return;\n if (isNaN(Number(value))) return;\n\n const [integerPart, decimalPart = ''] = value.toString().split('.');\n let formatted = integerPart + '.' + decimalPart.padEnd(this.wsDecimalInput, '0');\n\n if (decimalPart.length > this.wsDecimalInput) {\n formatted = integerPart + '.' + decimalPart.slice(0, this.wsDecimalInput);\n }\n\n this.control.control?.setValue(formatted, { emitEvent: false });\n this.el.nativeElement.value = formatted;\n }\n\n private isValidInput(value: string): boolean {\n const regex = new RegExp(`^\\\\d*\\\\.?\\\\d{0,${this.wsDecimalInput}}$`);\n return regex.test(value);\n }\n\n private getNextValue(currentValue: string, key: string, cursorPos: number): string {\n return currentValue.slice(0, cursorPos) + key + currentValue.slice(cursorPos);\n }\n}\n","/// <reference path=\"../types/coreui-pro.d.ts\" />\n\nimport { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\n\nimport { Tooltip } from '@coreui/coreui-pro';\n\n@Directive({ selector: '[wsShowTooltipIfTruncated]', standalone: true })\nexport class ShowTooltipIfTruncatedDirective {\n @Input('wsShowTooltipIfTruncated') tooltipText: string = '';\n private el = inject(ElementRef);\n\n constructor() {}\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (!this.isTextTruncated()) {\n return;\n }\n Tooltip.getOrCreateInstance(this.el.nativeElement, {\n trigger: 'manual',\n title: this.tooltipText\n }).show();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n Tooltip.getOrCreateInstance(this.el.nativeElement)?.hide();\n }\n\n private isTextTruncated(): boolean {\n const el = this.el.nativeElement;\n return el.scrollWidth > el.clientWidth;\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MultiSelectComponent } from '@coreui/angular-pro';\nimport { IColorOption } from '../interface/multi-forms.interface';\n\n@Directive({\n selector: '[wsMultiSelectStyler]',\n standalone: true\n})\nexport class MultiSelectStylerDirective implements OnInit, OnDestroy {\n private ngControl = inject(NgControl, { optional: true });\n private renderer = inject(Renderer2);\n private el = inject(ElementRef);\n private mutationObserver?: MutationObserver;\n\n @Input() wsMultiSelectStyler: boolean = true;\n @Input() options: IColorOption[] = [];\n private multiSelect = inject(MultiSelectComponent, { optional: true });\n\n ngOnInit() {\n if (!this.wsMultiSelectStyler) return;\n\n if (!this.ngControl) {\n return;\n }\n\n // Initial update\n setTimeout(() => this.updateSelectedItem(), 0);\n\n // Watch for control value changes\n this.ngControl.valueChanges?.subscribe(() => {\n setTimeout(() => this.updateSelectedItem(), 0);\n });\n\n this.setupMutationObserver();\n }\n\n private setupMutationObserver() {\n const container = this.getSelectionContainer();\n if (!container) return;\n\n this.mutationObserver = new MutationObserver(() => {\n this.updateSelectedItem();\n });\n\n this.mutationObserver.observe(container, {\n childList: true,\n subtree: true\n });\n }\n\n private getSelectionContainer(): HTMLElement | null {\n return this.el.nativeElement.querySelector('.form-multi-select-selection');\n }\n\n private updateSelectedItem() {\n const container = this.getSelectionContainer();\n if (!container) return;\n\n // Clear existing custom element\n const existingItem = container.querySelector('.color-box');\n if (existingItem) {\n existingItem.remove();\n }\n\n const selectedValue = this.ngControl?.value;\n\n if (!selectedValue) return;\n\n const textElement = container.querySelector('.form-multi-select-text');\n if (!textElement) return;\n\n const option = this.options.find(opt => opt.label === selectedValue);\n if (!option) {\n return;\n }\n // const option = { color: 'red'};\n this.renderer.setStyle(container, 'flex-wrap', 'unset');\n this.renderer.addClass(container, 'gap-2');\n\n // Create and insert color box\n const colorBox = this.renderer.createElement('span');\n this.renderer.addClass(colorBox, 'color-box');\n this.renderer.setStyle(colorBox, 'background-color', option.value);\n this.renderer.insertBefore(textElement.parentNode, colorBox, textElement);\n }\n\n ngOnDestroy() {\n this.mutationObserver?.disconnect();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormFieldType, IFieldConfig, IFormConfig, IFormSubmissionEmit, IFormValidations } from './multi-form.interface';\r\nimport Swal from 'sweetalert2';\r\nimport { ColorsCodes } from '../../constants/color.constants';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-multi-form',\r\n templateUrl: './multi-form.component.html',\r\n styleUrl: './multi-form.component.scss',\r\n standalone: false\r\n})\r\nexport class MultiFormComponent implements OnInit, OnChanges {\r\n private readonly formBuilder = inject(FormBuilder);\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n\r\n @Input() config!: IFormConfig;\r\n @Input() showUnsavedFlags: boolean;\r\n @Input() currentTableGridsSelectedIndex!: number;\r\n @Input() formId: string;\r\n\r\n @Output() fieldAction = new EventEmitter<{ action: string; field: IFieldConfig; value?: any }>();\r\n @Output() formSavedUnsavedListen: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectionChangeEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public multiForm: FormGroup;\r\n public isFormSubmitted: boolean;\r\n private initialFormValues: any;\r\n\r\n public isFormSaved: boolean = false;\r\n public isFormSavedModalActive: boolean = false;\r\n private isSelectionChange: boolean = false;\r\n inputType = {\r\n colorSelect: 'color-select'\r\n };\r\n public colorCodes$ = ColorsCodes;\r\n public FormFieldType = FormFieldType;\r\n\r\n constructor() {\r\n this.multiForm = this.formBuilder.group({});\r\n this.isFormSubmitted = false;\r\n this.showUnsavedFlags = false;\r\n this.formId = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildFormControls();\r\n this.saveInitialFormValues();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config'] && !changes['config'].isFirstChange()) {\r\n if (this.showUnsavedFlags) {\r\n if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Do you want to save the changes?',\r\n showDenyButton: true,\r\n confirmButtonText: 'Save',\r\n denyButtonText: `Don't save`\r\n }).then((result: any) => {\r\n if (result.isConfirmed) {\r\n this.proceedToSaveUnsavedForm();\r\n } else if (result.isDenied) {\r\n this.proceedWithoutSavingForm();\r\n }\r\n });\r\n return;\r\n }\r\n this.updateFormControls();\r\n } else {\r\n this.updateFormControls();\r\n }\r\n }\r\n }\r\n\r\n private buildFormControls(): void {\r\n if (this.config?.rows?.length) {\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const validators = this.getValidators(field.validations);\r\n if (field.type === FormFieldType.Checkbox) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: this.getTruthyOrFalsy(field.value) || false, disabled: field.validations?.readonly || false }, validators)\r\n );\r\n } else if (field.type === FormFieldType.Date) {\r\n // If field value is \"\", dont set the default advance date\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '') : '',\r\n disabled: field.validations?.readonly || false\r\n },\r\n validators\r\n )\r\n );\r\n } else {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: field?.value || '', disabled: field.validations?.readonly || false }, validators)\r\n );\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /** Reload the field action */\r\n onClickFieldAction(action: any, field: IFieldConfig) {\r\n this.fieldAction.emit({ action: 'reload', field });\r\n }\r\n\r\n private updateFormControls(): void {\r\n if (!this.config?.rows?.length) return;\r\n\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n const isReadOnly = !!field.validations?.readonly;\r\n const validators = this.getValidators(field.validations);\r\n let control = this.multiForm.get(field.controlName);\r\n\r\n // If control does not exist, add it as enabled\r\n if (!control) {\r\n let initialValue: any = '';\r\n if (field.type === FormFieldType.Checkbox) {\r\n initialValue = this.getTruthyOrFalsy(field.value) || false;\r\n } else if (field.type === FormFieldType.Date) {\r\n initialValue = field?.value ? new Date(field.value) : this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '');\r\n } else {\r\n initialValue = field.value || '';\r\n }\r\n control = this.formBuilder.control(initialValue, { validators, nonNullable: true });\r\n this.multiForm.addControl(field.controlName, control);\r\n }\r\n\r\n // Always enable before setting value\r\n control.enable({ emitEvent: false });\r\n\r\n // Set value\r\n if (field.type === FormFieldType.Checkbox) {\r\n control.setValue(this.getTruthyOrFalsy(field.value) || false, { emitEvent: false });\r\n } else if (field.type === FormFieldType.Date) {\r\n control.setValue(field?.value ? new Date(field.value) : '', { emitEvent: false });\r\n } else {\r\n control.setValue(field.value || '', { emitEvent: false });\r\n }\r\n\r\n // Disable if readonly\r\n if (isReadOnly) {\r\n control.disable({ emitEvent: false });\r\n }\r\n });\r\n });\r\n this.saveInitialFormValues();\r\n this.isFormSaved = false;\r\n this.multiForm.markAsPristine();\r\n }\r\n\r\n public getTruthyOrFalsy(value: any) {\r\n return value === '1' ? true : false;\r\n }\r\n\r\n private getValidators(validations?: IFormValidations) {\r\n const validators: any = [];\r\n\r\n if (validations) {\r\n if (validations.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (validations.minLength) {\r\n validators.push(Validators.minLength(validations.minLength));\r\n }\r\n if (validations.maxLength) {\r\n validators.push(Validators.maxLength(validations.maxLength));\r\n }\r\n if (validations.pattern) {\r\n validators.push(Validators.pattern(validations.pattern));\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n /** Get the form values */\r\n public getFormValues(): IFormSubmissionEmit {\r\n this.isFormSubmitted = true;\r\n this.isFormSaved = true;\r\n const formSubmissionEmit = { isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls };\r\n return formSubmissionEmit;\r\n }\r\n\r\n /** Reset the form */\r\n public resetForm(): void {\r\n this.multiForm.reset();\r\n this.isFormSubmitted = false;\r\n }\r\n\r\n /**Set Value to form */\r\n public setValue(control: string, value: any): void {\r\n this.multiForm.controls[control].setValue(value);\r\n }\r\n\r\n /**Get Value from form */\r\n public getValue(control: string): any {\r\n return this.multiForm.controls[control].value;\r\n }\r\n\r\n /**Get Form Control */\r\n public getFormControl(control: string): any {\r\n return this.multiForm.controls[control];\r\n }\r\n\r\n private hasUnsavedChanges(): boolean {\r\n return JSON.stringify(this.multiForm.getRawValue()) !== JSON.stringify(this.initialFormValues);\r\n }\r\n\r\n private saveInitialFormValues(): void {\r\n this.initialFormValues = this.multiForm.getRawValue();\r\n }\r\n\r\n public proceedToSaveUnsavedForm(): void {\r\n this.formSavedUnsavedListen.emit({ isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls });\r\n }\r\n\r\n public proceedWithoutSavingForm(): void {\r\n this.formSavedUnsavedListen.emit(null);\r\n this.updateFormControls();\r\n }\r\n\r\n public onValueChange(event: any, control: string): void {\r\n this.selectionChangeEvent.emit({ control, value: event });\r\n this.isSelectionChange = true;\r\n }\r\n\r\n public onDateValueChange(value: any, control: string): void {\r\n const stopControl: IFieldConfig = this.findStopControl();\r\n if (stopControl) {\r\n if (control === '@start' && value && stopControl?.validations?.defaultAdvance) {\r\n const startDate = new Date(value);\r\n if (this.multiForm.contains('@stop')) {\r\n this.multiForm.controls['@stop'].setValue(this.setDefaultAdvanceDate(startDate, stopControl?.validations?.defaultAdvance));\r\n }\r\n }\r\n }\r\n }\r\n\r\n public onEditionChange(event: any): void {\r\n const controlNameWithAt = '@edname';\r\n const controlNameWithoutAt = 'edname';\r\n\r\n if (this.multiForm.contains(controlNameWithAt)) {\r\n this.multiForm.controls[controlNameWithAt].setValue(event);\r\n } else if (this.multiForm.contains(controlNameWithoutAt)) {\r\n this.multiForm.controls[controlNameWithoutAt].setValue(event);\r\n } else {\r\n this.multiForm.addControl(controlNameWithAt, this.formBuilder.control(event));\r\n }\r\n }\r\n\r\n public setDefaultAdvanceDate(currentDate: Date, defaultAdvance: string): any {\r\n if (defaultAdvance === 'weekly') {\r\n return this.advanceDate(currentDate, 6);\r\n } else if (defaultAdvance === 'monthly') {\r\n const month = currentDate.getMonth();\r\n const year = currentDate.getFullYear();\r\n\r\n // Get days in current month\r\n const daysInMonth = new Date(year, month + 1, 0).getDate();\r\n\r\n let daysToAdd = 30;\r\n if (daysInMonth === 31) {\r\n daysToAdd = 30;\r\n } else if (daysInMonth === 30) {\r\n daysToAdd = 29;\r\n } else if (month === 1) {\r\n const isLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n daysToAdd = isLeap ? 28 : 27;\r\n }\r\n\r\n return this.advanceDate(currentDate, daysToAdd);\r\n } else if (defaultAdvance === 'quarterly') {\r\n return this.advanceDate(currentDate, 90);\r\n } else if (defaultAdvance === 'halfyearly') {\r\n return this.advanceDate(currentDate, 180);\r\n } else if (defaultAdvance === 'yearly') {\r\n return this.advanceDate(currentDate, 365);\r\n } else {\r\n return this.advanceDate(currentDate, 0);\r\n }\r\n }\r\n\r\n private advanceDate(currentDate: Date, advancedBy: number): any {\r\n if (advancedBy || advancedBy === 0) {\r\n const advanceDate = new Date(currentDate.setDate(currentDate.getDate() + advancedBy));\r\n return advanceDate;\r\n }\r\n }\r\n\r\n private findStopControl(): any {\r\n for (const row of this.config.rows) {\r\n for (const field of row) {\r\n if (field.controlName === '@stop') {\r\n return field;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\n @for (row of config?.rows; track $index; let isLast = $last) {\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\n @for (field of row; track $index) {\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\n @if (multiForm.controls[field.controlName]) {\n <!-- Label -->\n @if (field.label && field.type !== FormFieldType.Checkbox) {\n <label\n [wsShowTooltipIfTruncated]=\"field.label\"\n cLabel\n class=\"mb-1 label-multiform single-line-label\"\n [for]=\"field.controlName\"\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\n [ngStyle]=\"field.styles?.label\"\n >{{ field.label }}\n @if (field?.validations?.required || false) {\n <strong class=\"text-danger\">*</strong>\n }\n </label>\n }\n\n <!-- Text, Email, Number Inputs -->\n @if (\n field.type === FormFieldType.Text ||\n field.type === FormFieldType.Email ||\n field.type === FormFieldType.Number ||\n field.type === FormFieldType.Password ||\n field.type === FormFieldType.Url ||\n field.type === FormFieldType.Tel\n ) {\n <div class=\"position-relative w-100\">\n <input\n [type]=\"field.type\"\n cFormControl\n [formControlName]=\"field.controlName\"\n [id]=\"field.controlName\"\n [placeholder]=\"field.placeholder || ''\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\n 'no-label-margin': !field.label\n }\"\n [min]=\"field.validations?.min\"\n [max]=\"field.validations?.max\"\n [ngStyle]=\"field.styles?.field\" />\n\n @if (field.actionButton) {\n <button\n type=\"button\"\n [cTooltip]=\"field.actionButton?.tooltip\"\n tooltipPlacement=\"top\"\n cButton\n color=\"primary\"\n variant=\"outline\"\n aria-label=\"action\"\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\n (click)=\"onClickFieldAction($event, field)\">\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\n </button>\n }\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\n @if (multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n }\n </div>\n }\n\n <!-- Select Inputs -->\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\n <ng-container>\n <c-multi-select\n [multiple]=\"field?.multiple || false\"\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\n [search]=\"field?.allowCreateOptions || field?.allowSearch || false\"\n [clearSearchOnSelect]=\"true\"\n [selectionType]=\"field?.selectionType || 'tags'\"\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\n [formControlName]=\"field.controlName\"\n [placeholder]=\"field.placeholder || 'Select'\"\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\n [options]=\"colorCodes$\"\n [optionsMaxHeight]=\"400\"\n [ngClass]=\"{\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n (valueChange)=\"onValueChange($event, field.controlName)\"\n [ngStyle]=\"field.styles?.field\">\n @if (field.type === inputType?.colorSelect) {\n @for (option of colorCodes$; track $index) {\n <c-multi-select-option [value]=\"option?.label\">\n <label class=\"d-flex gap-2\">\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\n {{ option.label }}\n </label>\n </c-multi-select-option>\n }\n } @else {\n @for (option of field.options; track $index) {\n <c-multi-select-option [value]=\"option?.value\">\n {{ option.label }}\n </c-multi-select-option>\n }\n }\n </c-multi-select>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n\n <!-- Date input -->\n @else if (field.type === FormFieldType.Date) {\n <ng-container>\n <input\n type=\"text\"\n [placeholder]=\"field?.label || 'Select Date'\"\n class=\"form-control\"\n [ngClass]=\"{\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\n [formControlName]=\"field.controlName\"\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\n [bsConfig]=\"{\n containerClass: 'pongrass-red-datepicker',\n showWeekNumbers: false,\n adaptivePosition: true,\n useUtc: false\n }\"\n bsDatepicker\n [ngStyle]=\"field.styles?.field\" />\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n <!-- Textarea -->\n @else if (field.type === FormFieldType.Textarea) {\n <ng-container>\n <textarea\n cFormControl\n [id]=\"field.controlName\"\n [rows]=\"field?.textareaRows || 4\"\n [columns]=\"field?.textareaColumns || 4\"\n [placeholder]=\"field.placeholder || ''\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n [formControlName]=\"field.controlName\"\n [ngStyle]=\"field.styles?.field\"></textarea>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n </ng-container>\n }\n <!-- Checkbox -->\n @else if (field.type === FormFieldType.Checkbox) {\n <div class=\"no-label-margin\">\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\n </div>\n }\n <!-- Decimal input -->\n @else if (field.type === FormFieldType.Float) {\n <ng-container>\n <input\n cFormControl\n [id]=\"field.controlName\"\n type=\"number\"\n class=\"me-2\"\n [formControlName]=\"field.controlName\"\n [wsDecimalInput]=\"field.validations?.precision || 2\"\n [ngClass]=\"{\n 'form-invalid border-danger border border-2':\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\n }\"\n [min]=\"field.validations?.min\"\n [max]=\"field.validations?.max\"\n [ngStyle]=\"field.styles?.field\" />\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Minimum length {{ field?.validations?.minLength }} characters is required\n </small>\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\n <small class=\"text-danger fst-italic form-invalid-label\">\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\n </small>\n }\n }\n </ng-container>\n } @else if (field.type === FormFieldType.Edition) {\n <ng-container>\n <prg-ws-edition-list-grouped\n (selectedEditionsChange)=\"onEditionChange($event)\"\n [multiple]=\"field?.multiple === false ? false : true\"\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\n </prg-ws-edition-list-grouped>\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\n }\n }\n </ng-container>\n }\n }\n </div>\n }\n\n @if (field?.type === FormFieldType.Separator) {\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\n }\n @if (field?.type === FormFieldType.FormHeader) {\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\n }\n }\n </div>\n }\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule, DatePickerModule, FormModule, InputGroupComponent, ModalModule, MultiSelectModule, TooltipModule } from '@coreui/angular-pro';\nimport { IconModule } from '@coreui/icons-angular';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\n\nimport { MultiFormComponent } from './multi-form.component';\nimport { EditionListGroupedComponent } from '../../components/edition-list-grouped/edition-list-grouped.component';\n\nimport { CircularFocusDirective } from '../../directives/circular-focus.directive';\nimport { DecimalInputDirective } from '../../directives/decimal-input.directive';\nimport { ShowTooltipIfTruncatedDirective } from '../../directives/show-tooltip-if-truncated.directive';\nimport { MultiSelectStylerDirective } from '../../directives/multi-select-styler.directive';\n\n@NgModule({\n declarations: [MultiFormComponent],\n imports: [\n CircularFocusDirective,\n CommonModule,\n ReactiveFormsModule,\n MultiSelectModule,\n FormModule,\n IconModule,\n InputGroupComponent,\n DatePickerModule,\n DecimalInputDirective,\n ShowTooltipIfTruncatedDirective,\n ModalModule,\n TooltipModule,\n ButtonModule,\n BsDatepickerModule,\n EditionListGroupedComponent,\n MultiSelectStylerDirective\n ],\n exports: [MultiFormComponent]\n})\nexport class MultiFormModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, effect, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\nimport { IEmmitedResponse } from './generic-filter-modal.interface';\nimport { MultiFormComponent } from '../../modules/multi-form/multi-form.component';\nimport { IFormConfig } from '../../modules/multi-form/multi-form.interface';\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\nimport { CommonModule } from '@angular/common';\nimport { MultiFormModule } from '../../modules/multi-form/multi-form.module';\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\n\n@Component({\n selector: 'prg-ws-generic-filter-model',\n templateUrl: './generic-filter-model.component.html',\n styleUrl: './generic-filter-model.component.scss',\n standalone: true,\n imports: [CommonModule, MultiFormModule, ModalModule, ButtonModule]\n})\nexport class GenericFilterModelComponent implements OnInit {\n readonly configurationService = inject(ConfigurationServiceLib);\n readonly jsonrpcService = inject(JsonrpcServiceLib);\n\n @Input() filterFormConfiguration: IFormConfig | any = [];\n @Input() tableName: string = '';\n @Output() sendFilteredData: EventEmitter<IEmmitedResponse>;\n\n @ViewChild('filterFormComponent') filterFormComponent!: MultiFormComponent;\n\n public isFilterModalActive: boolean;\n\n constructor() {\n this.isFilterModalActive = false;\n this.sendFilteredData = new EventEmitter<IEmmitedResponse>();\n\n effect(() => {\n this.isFilterModalActive = this.configurationService.openFilterModal();\n });\n }\n\n ngOnInit(): void {\n if (!this.tableName) throw new Error('Table name is required to filter data.');\n }\n\n public handleFilterModal(event: boolean): void {\n this.isFilterModalActive = event;\n this.configurationService.openFilterModal.set(this.isFilterModalActive);\n }\n\n public resetFilter(): void {\n this.filterFormComponent.resetForm();\n this.sendFilteredData.emit({ isReset: true, returnedData: [] });\n }\n\n public async onFilter(): Promise<void> {\n const formValues = this.filterAttributesWithValues(this.filterFormComponent.getFormValues().values);\n if (Object.keys(formValues).length > 0) {\n const tableData = await this.jsonrpcService.getTableList(this.tableName, formValues);\n this.sendFilteredData.emit({ isReset: false, returnedData: tableData.result || [] });\n this.configurationService.openFilterModal.set(false);\n }\n }\n\n private filterAttributesWithValues(object: any): any {\n return Object.keys(object)\n .filter(key => object[key] !== null && object[key] !== '' && object[key] !== undefined)\n .reduce((result: any, key: any) => {\n result[key] = object[key];\n return result;\n }, {});\n }\n\n public close(): void {\n this.configurationService.openFilterModal.set(false);\n }\n}\n","<!-- Filter Modal -->\n<c-modal id=\"generic-filter-modal\" [visible]=\"isFilterModalActive\" (visibleChange)=\"handleFilterModal($event)\" size=\"md\" alignment=\"center\" scrollable>\n <c-modal-header>\n <h5 cModalTitle>Advanced Search</h5>\n <!-- <button (click)=\"commonService.openFilterModal.set(false)\" cButtonClose></button> -->\n </c-modal-header>\n <c-modal-body>\n @if (filterFormConfiguration) {\n <app-multi-form [config]=\"filterFormConfiguration\" #filterFormComponent></app-multi-form>\n }\n </c-modal-body>\n <c-modal-footer>\n <button (click)=\"close()\" cButton color=\"secondary\">Close</button>\n <button (click)=\"resetFilter()\" cButton color=\"primary\">Reset</button>\n <button cButton color=\"primary\" (click)=\"onFilter()\">Search</button>\n </c-modal-footer>\n</c-modal>\n","import { IFilterComp } from '@ag-grid-community/core';\nimport { ICellRendererComp, ICellEditorComp } from '@ag-grid-community/core';\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { CustomSelectFilterComponent } from '../components/ag-grid-renderer/custom-select-filter.component';\n\ntype AgGridComponentClass = { new (): IFilterComp } | { new (): ICellRendererComp } | { new (): IFilterAngularComp } | { new (): ICellEditorComp };\n\nexport enum FilterType {\n SELECT = 'SELECT_FILTER',\n TEXT = 'TEXT_FILTER',\n NUMBER = 'NUMBER_FILTER',\n DATE = 'DATE_FILTER'\n}\n\n// Built-in AG Grid filters\nexport const AgGridFilters: Partial<Record<FilterType, string>> = {\n [FilterType.TEXT]: 'agTextColumnFilter',\n [FilterType.NUMBER]: 'agNumberColumnFilter',\n [FilterType.DATE]: 'agDateColumnFilter'\n};\n\n// Custom filters that can be used in the table grid\nexport const TABLE_GRID_FILTER_COMPONENTS: Partial<Record<FilterType, AgGridComponentClass>> = {\n [FilterType.SELECT]: CustomSelectFilterComponent\n // Add others as needed\n};\n","export const MessageLabel = {\n RowPerPage: 'Rows per page'\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n CellValueChangedEvent,\n ColumnMovedEvent,\n ColumnResizedEvent,\n FirstDataRenderedEvent,\n GridOptions,\n GridReadyEvent,\n IColumnLimit,\n PaginationChangedEvent,\n SortChangedEvent\n} from '@ag-grid-community/core';\nimport { IColumnStateEvent, IFilterChangeEvent, ITableGridConfiguration, ITableGridState } from './table-grid';\nimport { Component, effect, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { FilterType, AgGridFilters, TABLE_GRID_FILTER_COMPONENTS } from '../../enums/grid.enum';\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\nimport { MessageLabel } from '../../constants/app.constanta';\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\nimport { IAPIResponse } from '../../interface/api-response.interface';\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\n\n@Component({\n selector: 'prg-ws-table-grid',\n templateUrl: './table-grid.component.html',\n styleUrl: './table-grid.component.scss',\n standalone: false\n})\nexport class TableGridComponent implements OnInit, OnChanges, OnDestroy {\n private readonly formBuilder = inject(FormBuilder);\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\n private readonly toastrService = inject(ToastrService);\n private readonly configurationService = inject(ConfigurationServiceLib);\n\n @Input() tableConfiguration!: ITableGridConfiguration;\n @Input() columnToolVisible: boolean;\n @Input() initialPageNumber: number;\n\n @Output() tableGridReady: EventEmitter<GridReadyEvent>;\n @Output() tableRowSelection: EventEmitter<any>;\n @Output() tableRowSelectionChanged: EventEmitter<any>;\n @Output() tableRowClicked: EventEmitter<{ event: any; row: any }>;\n @Output() columnStateEvent: EventEmitter<IColumnStateEvent>;\n @Output() pageChange: EventEmitter<PaginationChangedEvent>;\n @Output() filterChanged: EventEmitter<IFilterChangeEvent>;\n @Output() cellValueChanged: EventEmitter<CellValueChangedEvent>;\n\n private gridAPI: GridReadyEvent | undefined;\n public columnsListselectionForm!: FormGroup;\n public tableGridState: ITableGridState[];\n\n autoSizeTrigger$ = new Subject<void>();\n subscribeUntil$ = new Subject<void>();\n\n autoSizeStrategy = {\n type: 'fitCellContents',\n defaultMinWidth: 100\n };\n\n /**\n * Resize all columns to fit the grid width while maintaining their minimum widths.\n * This method collects the current widths of all columns and applies them as limits\n */\n sizeToFit() {\n const columnLimits: IColumnLimit[] = [];\n this.gridAPI?.api.getColumns()!.forEach(column => {\n column.getMaxWidth();\n columnLimits.push({\n key: column.getColId(),\n minWidth: column.getActualWidth()\n });\n });\n this.gridAPI?.api.sizeColumnsToFit({\n columnLimits: columnLimits\n });\n }\n\n /**\n * Automatically resize all columns to fit their content.\n * This method collects the current widths of all columns and applies them as limits\n * to ensure that the columns are resized based on their content.\n */\n autoSizeAll(skipHeader: boolean = false): void {\n this.gridAPI?.api.autoSizeAllColumns(skipHeader);\n this.sizeToFit();\n }\n\n gridOptions: GridOptions = {\n onRowDataUpdated: () => {\n // Trigger auto-size when row data is updated\n // this.autoSizeTrigger$.next();\n },\n localeText: {\n pageSizeSelectorLabel: `${MessageLabel.RowPerPage}:`,\n ariaPageSizeSelectorLabel: `${MessageLabel.RowPerPage}`\n }\n };\n\n constructor() {\n this.tableGridReady = new EventEmitter<GridReadyEvent>();\n this.tableRowSelection = new EventEmitter<any>();\n this.tableRowSelectionChanged = new EventEmitter<any>();\n this.tableRowClicked = new EventEmitter<{ event: any; row: any }>();\n this.columnStateEvent = new EventEmitter<IColumnStateEvent>();\n this.pageChange = new EventEmitter<PaginationChangedEvent>();\n this.filterChanged = new EventEmitter<IFilterChangeEvent>();\n this.cellValueChanged = new EventEmitter<CellValueChangedEvent>();\n\n this.columnToolVisible = false;\n this.initialPageNumber = 0;\n\n this.tableGridState = [];\n\n effect(() => {\n if (this.configurationService.utilsAppliedTheme() === 'dark') {\n this.tableConfiguration.tableTheme = `${this.tableConfiguration.themeClass}-dark`;\n } else {\n this.tableConfiguration.tableTheme = this.tableConfiguration.themeClass;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['tableConfiguration'] && !changes['tableConfiguration'].firstChange) {\n if (this.gridAPI) {\n this.gridAPI.api.refreshClientSideRowModel();\n }\n setTimeout(() => {\n this.createColumnState();\n this.createColumnsListForm();\n }, 0);\n }\n }\n\n ngOnInit(): void {\n this.createColumnsListForm();\n this.gridOptions = {\n ...this.gridOptions,\n ...this.tableConfiguration.defaultGridOptions\n };\n\n this.autoSizeTrigger$.pipe(auditTime(500), takeUntil(this.subscribeUntil$)).subscribe(() => {\n this.autoSizeAll();\n });\n }\n\n /** Send event to parent component when Ag Grid is stabilized*/\n public onGridReady(event: GridReadyEvent) {\n this.gridAPI = event;\n this.createColumnState();\n this.tableGridReady.emit(event);\n }\n\n /** Send event to parent component when a row is selected */\n public onRowSelected(event: any): void {\n const selectedRows = this.gridAPI?.api.getSelectedRows();\n this.tableRowSelection.emit({ event: event, rows: selectedRows });\n }\n\n /** Send event to parent component when a row is clicked */\n onRowClicked(event: any): void {\n this.tableRowClicked.emit({ event: event, row: event.data });\n }\n\n /** Send on checkbox selection event event to parent component when row selection is changed */\n public onRowSelectionChanged(event: any): void {\n if (this.gridAPI) {\n const selectedNodes = this.gridAPI.api.getSelectedNodes();\n const selectedData = selectedNodes.map(node => node.data);\n this.tableRowSelectionChanged.emit(selectedData);\n }\n }\n\n /** Create column state on initialization of table grid */\n private createColumnState(): void {\n if (this.gridAPI) {\n if (this.tableConfiguration.initialState) {\n this.tableGridState = this.tableConfiguration.initialState;\n const initialState = this.tableGridState.map(item => ({\n colId: item.key!,\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\n width: item.width,\n sort: item.sort || null\n }));\n\n this.gridAPI.api.applyColumnState({\n state: initialState,\n defaultState: { sort: null }\n });\n } else {\n const state = this.gridAPI.api.getColumnState();\n state.forEach((columnState: any) => {\n this.tableGridState.push({\n key: columnState.colId,\n visible: columnState.hide ? !columnState.hide : true,\n width: columnState.width,\n sort: columnState.sort\n });\n });\n }\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n }\n\n /** Set visibility of columns and send the event and column form to parent component along with last checkbox event data */\n public getCheckboxStatus(event: Event, field: string): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n const columnIndex = this.tableGridState.findIndex(item => item.key === field);\n\n if (columnIndex > -1) {\n this.tableGridState[columnIndex] = {\n ...this.tableGridState[columnIndex],\n visible: isChecked\n };\n }\n\n if (this.gridAPI) {\n this.gridAPI.api.setColumnsVisible([field], isChecked);\n this.gridAPI.api.autoSizeColumns([field]);\n }\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n\n /** Create form group for column tools menu */\n private createColumnsListForm(): void {\n if (!this.columnToolVisible) return;\n if (!this.tableConfiguration.tablename) {\n throw new Error('Table name is required for columns tools list');\n }\n\n const controls: any = {};\n if (this.tableConfiguration?.columnDefs) {\n this.tableConfiguration.columnDefs.forEach(col => {\n col.filter = this.getAppliedFilter(col.filter);\n });\n this.tableConfiguration.initialState.forEach((col: any) => {\n controls[col.key] = [col.visible === null || col.visible === undefined ? true : col.visible];\n });\n }\n\n if (Object.entries(controls).length > 0) {\n this.columnsListselectionForm = this.formBuilder.group(controls);\n }\n }\n\n private getAppliedFilter(filterType: FilterType | undefined): any {\n if (!filterType) return undefined;\n\n // Ensure it's a valid FilterType\n if (Object.values(FilterType).includes(filterType)) {\n // Check if a custom component exists for this filterType\n const customComponent = TABLE_GRID_FILTER_COMPONENTS[filterType as FilterType];\n return customComponent ?? AgGridFilters[filterType];\n }\n\n return filterType;\n }\n\n /** On resizing columns, update the tableGridState */\n public onColumnResized(event: ColumnResizedEvent | any): void {\n if (event.finished && event.column) {\n const columnId = event.column!.colId;\n const columnWidth = event.column!.actualWidth;\n const columnVisible = event.column!.visible;\n\n const column = this.tableGridState.find(item => item.key === columnId);\n\n if (column) {\n column.width = columnWidth;\n column.visible = columnVisible;\n }\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n }\n\n /** On moving columns, update the tableGridState */\n public onColumnMoved(event: ColumnMovedEvent): void {\n if (event.finished) {\n const { column, toIndex } = event;\n\n if (!column || toIndex === undefined || toIndex === null) {\n return;\n }\n\n const movedColId = column.getColId();\n const currentIndex = this.tableGridState.findIndex((col: any) => col.key === movedColId);\n\n if (currentIndex > -1) {\n const [movedColumn] = this.tableGridState.splice(currentIndex, 1);\n this.tableGridState.splice(toIndex, 0, movedColumn);\n }\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n }\n\n public onSortChanged(event: SortChangedEvent): void {\n if (event.columns) {\n event.columns.forEach((col: any) => {\n const column = this.tableGridState.find(item => item.key === col.colId);\n if (column) {\n column.sort = col.sort || null;\n }\n });\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n }\n\n /** Emit event when pagination is changed */\n public onPaginationChanged(event: PaginationChangedEvent): void {\n this.pageChange.emit(event);\n }\n\n /** Emit event when first data is rendered */\n public onFirstDataRendered(event: FirstDataRenderedEvent) {\n event.api.paginationGoToPage(this.initialPageNumber);\n }\n\n /** Emit event to update table preference */\n public updatetablePreference(): void {\n this.columnStateEvent.emit({\n currentEvent: {},\n currentTableState: this.tableGridState\n });\n }\n\n /** Reset table preference to default state */\n public resetTablePreference(): void {\n if (!this.tableConfiguration.tablename) {\n throw new Error('Table name is required for columns tools list');\n }\n\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: this.tableConfiguration.tablename,\n maint_action: 'D'\n };\n\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\n next: (response: IAPIResponse<any>) => {\n if (response.result) {\n this.tableGridState = [];\n if (response.result.fields_to_display && response.result.fields_to_display.length > 0) {\n this.tableConfiguration.initialState = response.result.fields_to_display;\n }\n\n this.tableConfiguration.initialState.forEach((col: any) => {\n col.visible = col.visible === null || col.visible === undefined ? true : col.visible;\n col.width = 200;\n col.sort = null;\n this.tableGridState.push(col);\n this.columnsListselectionForm.controls[col.key].setValue(true);\n });\n\n if (this.gridAPI) {\n this.gridAPI.api.applyColumnState({\n state: this.tableGridState.map(item => ({\n colId: item.key!,\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\n width: 200,\n sort: item.sort || null,\n flex: 1\n })),\n defaultState: { sort: null },\n applyOrder: true\n });\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n } else {\n this.toastrService.success('Failed to reset table preference');\n }\n }\n });\n }\n\n /** Reset table preference to default state */\n public resetTablePreferenceV2(): void {\n if (!this.tableConfiguration?.tablename) {\n throw new Error('Table name is required for column tools list');\n }\n\n this.tableConfiguration.initialState.forEach((col: any) => {\n col.visible = false;\n delete col.width;\n delete col.sort;\n });\n\n const params = {\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\n table_name: this.tableConfiguration.tablename,\n display_options: this.tableGridState\n };\n\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\n next: (response: IAPIResponse<any>) => {\n if (response?.result) {\n this.handleSuccessfulReset(response.result);\n } else {\n this.toastrService.error('Failed to reset table preference');\n }\n },\n error: () => {\n this.toastrService.error('An error occurred while resetting table preference');\n }\n });\n }\n\n /** Handle successful reset of table preference */\n private handleSuccessfulReset(result: any): void {\n this.tableGridState = [];\n\n const fieldsToDisplay = result.fields_to_display || [];\n if (fieldsToDisplay.length > 0) {\n this.tableConfiguration.initialState = fieldsToDisplay;\n }\n\n this.tableConfiguration.initialState.forEach((col: any) => {\n col.visible = false;\n this.tableGridState.push(col);\n this.columnsListselectionForm.controls[col.key]?.setValue(false);\n });\n\n this.updateGridState();\n }\n\n /** Update grid state based on the current tableGridState */\n private updateGridState(): void {\n if (this.gridAPI) {\n const columnState: any = this.tableGridState.map(item => ({\n colId: item.key,\n hide: true,\n width: 200,\n sort: item.sort || null,\n flex: 1\n }));\n\n this.gridAPI.api.applyColumnState({\n state: columnState,\n defaultState: { sort: null },\n applyOrder: true\n });\n\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\n }\n }\n\n /* Emit event when filter is changed */\n public onFilterChanged(params: any) {\n const filterModel = params.api.getFilterModel();\n const filteredRows: any[] = [];\n params.api.forEachNodeAfterFilter((node: any) => {\n if (node.data) {\n filteredRows.push(node.data);\n }\n });\n const filterChangedParams: IFilterChangeEvent = {\n rows: filteredRows,\n column: params.columns,\n filters: filterModel\n };\n this.filterChanged.emit(filterChangedParams);\n }\n\n /** Emit event when a cell value is changed */\n public onCellValueChanged(event: CellValueChangedEvent): void {\n this.cellValueChanged.emit(event);\n }\n\n ngOnDestroy(): void {\n this.subscribeUntil$.next();\n this.subscribeUntil$.complete();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12 d-md-flex\">\n <div class=\"table-list-wrapper flex-fill\">\n <!-- style=\"width: 100%; height: 567px\" -->\n <ag-grid-angular\n style=\"width: 100%\"\n [rowData]=\"tableConfiguration.rows\"\n [columnDefs]=\"tableConfiguration.columnDefs\"\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\n [pagination]=\"tableConfiguration.pagination.enabled\"\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\n (gridReady)=\"onGridReady($event)\"\n (rowSelected)=\"onRowSelected($event)\"\n (rowClicked)=\"onRowClicked($event)\"\n (columnResized)=\"onColumnResized($event)\"\n (columnMoved)=\"onColumnMoved($event)\"\n (sortChanged)=\"onSortChanged($event)\"\n (paginationChanged)=\"onPaginationChanged($event)\"\n (firstDataRendered)=\"onFirstDataRendered($event)\"\n (filterChanged)=\"onFilterChanged($event)\"\n (cellValueChanged)=\"onCellValueChanged($event)\"\n (selectionChanged)=\"onRowSelectionChanged($event)\" \n [masterDetail]=\"tableConfiguration.masterDetail\"\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\n [enableCellTextSelection]=\"true\"\n [gridOptions]=\"gridOptions\"\n [ensureDomOrder]=\"true\"\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\n </div>\n\n @if (columnToolVisible && columnsListselectionForm) {\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\n <span\n class=\"cursor-pointer text-primary\"\n tooltipPlacement=\"top\"\n cTooltip=\"Column Preference\"\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\n </span>\n\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\n </span>\n </div>\n </div>\n\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\n <c-offcanvas-header>\n <h5 cOffcanvasTitle>Table Column Preference</h5>\n <button\n cButtonClose\n size=\"sm\"\n class=\"text-reset ms-auto\"\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\n aria-label=\"Close\"></button>\n </c-offcanvas-header>\n <c-offcanvas-body>\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\n @for (item of this.tableGridState; track $index) {\n <div class=\"checkbox-item px-1\">\n <c-form-check>\n <input\n (change)=\"getCheckboxStatus($event, item.key)\"\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\n cFormCheckInput\n [id]=\"'cb_' + item.key\"\n type=\"checkbox\"\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\n {{ item?.headerName || item?.label }}</label\n >\n </c-form-check>\n </div>\n }\n </div>\n <div class=\"align d-flex gap-3 justify-content-end\">\n <button\n cButton\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\n color=\"primary\"\n class=\"px-2 mt-auto\"\n variant=\"outline\"\n (click)=\"resetTablePreferenceV2()\">\n Clear\n </button>\n <button\n cButton\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\n color=\"primary\"\n class=\"px-2 mt-auto\"\n variant=\"outline\"\n (click)=\"resetTablePreference()\">\n Reset\n </button>\n <button\n cButton\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\n color=\"primary\"\n class=\"px-2 mt-auto\"\n variant=\"outline\"\n (click)=\"updatetablePreference()\">\n Update\n </button>\n </div>\n </c-offcanvas-body>\n </c-offcanvas>\n }\n </div>\n</div>\n","import { TableGridComponent } from './table-grid.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry, _EditCoreModule } from '@ag-grid-community/core';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nimport { ButtonModule, FormModule, OffcanvasModule, TooltipModule } from '@coreui/angular-pro';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconModule } from '@coreui/icons-angular';\n\nModuleRegistry.registerModules([ClientSideRowModelModule, CsvExportModule, _EditCoreModule]);\n\n@NgModule({\n declarations: [TableGridComponent],\n imports: [CommonModule, AgGridModule, FormModule, ReactiveFormsModule, ButtonModule, OffcanvasModule, TooltipModule, IconModule],\n exports: [TableGridComponent]\n})\nexport class TableGridModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n AgPublicEventType,\n CellValueChangedEvent,\n ColDef,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ICellRendererParams,\n PaginationChangedEvent,\n SelectionColumnDef\n} from '@ag-grid-community/core';\nimport { inject } from '@angular/core';\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\n\nexport class ITableGridConfiguration {\n initialState!: ITableGridState[];\n columnDefs: ColDef[] = [];\n rows: any;\n defaultColDef: ColDef;\n rowSelectionOption: IRowSelectionOptions;\n pagination: ITableGridPagination;\n themeClass: string;\n tableTheme: string;\n tablename: string;\n selectionColumnDef?: SelectionColumnDef;\n tablePreference: { disableRemovecolumn?: boolean; disableResetPreference?: boolean; disableUpdatePreference?: boolean };\n detailCellRendererParams?: any;\n detailCellRenderer?: any;\n frameworkComponents?: { [key: string]: any };\n tooltipShowDelay: number;\n masterDetail: boolean;\n tableClasses: string[] = ['default-ag-layout'];\n defaultGridOptions?: GridOptions;\n\n constructor() {\n this.pagination = new ITableGridPagination();\n this.tablename = '';\n this.tableTheme = '';\n this.defaultColDef = {\n filter: 'agTextColumnFilter',\n floatingFilter: false\n };\n\n this.themeClass = 'ag-theme-quartz';\n this.rowSelectionOption = {\n enableClickSelection: true,\n mode: 'singleRow',\n checkboxes: false\n };\n this.masterDetail = false;\n this.tablePreference = { disableRemovecolumn: false, disableResetPreference: false, disableUpdatePreference: false };\n this.tooltipShowDelay = 100;\n }\n}\n\nexport class ITableGridPagination {\n private configurationService = inject(ConfigurationServiceLib);\n\n enabled: boolean = true;\n paginationPageSize = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSize || 20;\n paginationPageSizeSelector = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSizeSelector || false;\n}\n\nexport interface IRowSelectionOptions {\n enableClickSelection?: boolean | 'enableDeselection' | 'enableSelection';\n mode: string;\n checkboxes: boolean;\n headerCheckbox?: boolean;\n}\n\nexport interface IColumnStateEvent {\n currentEvent: ITableGridState;\n currentTableState: ITableGridState[];\n}\n\nexport interface ITableGridState {\n key?: string;\n width?: number;\n visible?: boolean;\n sort?: 'asc' | 'desc' | null;\n label?: string;\n}\n\nexport interface IFilterChangeEvent {\n rows: any[];\n column: any[];\n filters: any;\n}\n\nexport interface IGridReadyEvent extends GridReadyEvent {\n api: IGridApi;\n}\n\nexport interface ICellValueChangedEvent extends CellValueChangedEvent {\n data: CellValueChangedEvent['data'];\n colDef: CellValueChangedEvent['colDef'];\n}\nexport interface IColDef extends ColDef {}\n\nexport interface IPaginationChangedEvent extends PaginationChangedEvent {\n newPage: PaginationChangedEvent['newPage'];\n animate?: PaginationChangedEvent['animate'];\n keepRenderedRows?: PaginationChangedEvent['keepRenderedRows'];\n newData?: PaginationChangedEvent['newData'];\n newPageSize?: PaginationChangedEvent['newPageSize'];\n api: PaginationChangedEvent['api'];\n}\n\nexport interface PongrassICellRendererAngularComp extends ICellRendererAngularComp {}\n\nexport interface PongrassICellRendererParams extends ICellRendererParams {\n data: ICellRendererParams['data'];\n colDef: ICellRendererParams['colDef'];\n}\n\nexport interface IGridApi extends GridApi<any> {}\n\nexport type IAgPublicEventType = AgPublicEventType;\n\nexport type MaintAction = 'N' | 'D' | 'U';\n","import { Directive, ElementRef, Input, OnInit, inject } from '@angular/core';\n\n@Directive({\n selector: '[wsBackgroundImage]',\n standalone: true\n})\nexport class BackgroundImageDirective implements OnInit {\n private el = inject(ElementRef);\n\n /**\n * Flag to enable random background selection\n * Defaults to false\n */\n @Input() random: boolean = false;\n\n /**\n * Path to the background image (string) or images (string[])\n */\n @Input() backgroundImage: string | string[] = '';\n\n ngOnInit(): void {\n this.setBackgroundImage();\n }\n\n private setBackgroundImage(): void {\n let imageUrl = '';\n\n if (typeof this.backgroundImage === 'string') {\n // Single image path\n imageUrl = this.backgroundImage;\n } else if (Array.isArray(this.backgroundImage) && this.backgroundImage.length > 0) {\n // Array of image paths\n if (this.random) {\n // Select a random image from the array\n const randomIndex = Math.floor(Math.random() * this.backgroundImage.length);\n imageUrl = this.backgroundImage[randomIndex];\n } else {\n // Use the first image in the array\n imageUrl = this.backgroundImage[0];\n }\n }\n\n if (imageUrl) {\n this.el.nativeElement.style.backgroundImage = `url('${imageUrl}')`;\n this.el.nativeElement.style.backgroundSize = 'cover';\n this.el.nativeElement.style.backgroundPosition = 'center';\n this.el.nativeElement.style.backgroundRepeat = 'no-repeat';\n this.el.nativeElement.style.minHeight = '100vh';\n this.el.nativeElement.style.width = '100%';\n this.el.nativeElement.style.margin = '0';\n this.el.nativeElement.style.display = 'block';\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\n\r\n// Output: \"2024-10-02 15:43:58\"\r\nexport function convertToISOnString(date: Date): string {\r\n if (!date) return '';\r\n\r\n const dateString = date instanceof Date ? date.toISOString() : date;\r\n if (dateString.includes('T')) {\r\n return dateString.replace('T', ' ').split('.')[0];\r\n }\r\n return dateString;\r\n}\r\n\r\n// defaultDateFormat = 'DD/MM/YYYY';\r\n// Output: \"02/10/2024\"\r\nexport function regionalDateFormat(date: Date): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n const day = ('0' + date.getDate()).slice(-2);\r\n const year = date.getFullYear();\r\n\r\n switch (config.defaultDateFormat) {\r\n case 'MM/DD/YYYY':\r\n return `${month}/${day}/${year}`;\r\n case 'DD/MM/YYYY':\r\n return `${day}/${month}/${year}`;\r\n case 'YYYY/MM/DD':\r\n return `${year}/${month}/${day}`;\r\n default:\r\n return `${month}/${day}/${year}`;\r\n }\r\n}\r\n\r\n// convertIsoToFormat(date, 'YYYY/MM/DD');\r\n// Output: \"2024/10/02\"\r\nexport function convertIsoToFormat(date: string | Date, dateFormat?: string): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n let format: any;\r\n if (dateFormat) format = dateFormat;\r\n else format = config.defaultDateFormat;\r\n\r\n const dateObj = new Date(date);\r\n\r\n const year = dateObj.getFullYear();\r\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateObj.getDate()).padStart(2, '0');\r\n return format.replace('YYYY', String(year)).replace('MM', month).replace('DD', day);\r\n}\r\n\r\n// Output: 'Oct 2, 2024, 3:43:58 PM'\r\nexport function convertDateShort(dateString: string): string {\r\n if (!dateString) {\r\n return '';\r\n }\r\n const date = new Date(dateString);\r\n return date.toLocaleString('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n hour12: true\r\n });\r\n}\r\n","export enum ExportToExcelNames {\r\n ProdStatusReport = 'Prod_Status_Report',\r\n NationalROPReport = 'National ROP Report',\r\n NationalInserts = 'National Inserts',\r\n ApprovedAdList = 'Approved Ad List',\r\n PageStatusReport = 'Page Status Report',\r\n}\r\n\r\nexport enum ExcelType {\r\n excelBlobType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n xlsxBookType = 'xlsx'\r\n}\r\n\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\nimport { IExcelHeaders, IExportCellConfig, IPrintHeaders } from '../interface/exports.interface';\r\nimport { convertIsoToFormat } from '../helpers/dateTime.helpers';\r\nimport { ExcelType } from '../enums/export.enum';\r\n\r\nimport * as ExcelJS from 'exceljs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n private readonly configurationServiceLib = inject(ConfigurationServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n\r\n readonly allConfigValues: IConfig = this.configurationServiceLib.allConfigValues() || ({} as unknown as IConfig);\r\n\r\n constructor() {}\r\n\r\n public formatToTwoDecimalPlaces(value: any, decimalPlaces?: number): string {\r\n if (value !== undefined && value !== null) {\r\n const numValue = Number(value);\r\n\r\n if (!isNaN(numValue)) {\r\n return numValue.toFixed(decimalPlaces || 2);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n\r\n // Truncate values to precision\r\n public truncateFloat(value: number | string, precision: number): string {\r\n const num = Number(value);\r\n if (isNaN(num)) return '';\r\n const factor = Math.pow(10, precision);\r\n const truncated = Math.trunc(num * factor) / factor;\r\n return truncated.toFixed(precision);\r\n }\r\n\r\n /**\r\n *\r\n * @param excelData Table data to export\r\n * @param columns Array of Column keys and label '{ keys: '_key', label: '_label' }'\r\n * @param excelFileName Name of the excel file 'Example FileName_export_1740978888354'\r\n * @param headers (Optional) Adds Extra headings on top of the columns\r\n * @param showTotalValueCols (Optional) Calculates and shows the total of all the values of that column\r\n * @param columnAlignment (Optional) Aligns the cell value (currently only to right side)\r\n */\r\n public async exportAsExcelFile(\r\n excelData: any[],\r\n columns: any[],\r\n excelFileName: string,\r\n headers?: IExcelHeaders[],\r\n showTotalValueCols?: string[],\r\n columnAlignment?: IExportCellConfig\r\n ): Promise<void> {\r\n // this.loaderService.show();\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(excelFileName);\r\n\r\n // const currentRow = 1;\r\n // if (headers) {\r\n // headers.forEach((header: IExcelHeaders) => {\r\n // worksheet.mergeCells(`A${currentRow}:K${currentRow}`);\r\n // worksheet.getCell(`A${currentRow}`).value = header.heading;\r\n // worksheet.getCell(`A${currentRow}`).alignment = { horizontal: header.alignment, wrapText: true };\r\n // worksheet.getCell(`A${currentRow}`).font = { bold: header.bold, size: header.fontSize || 14 };\r\n // currentRow++;\r\n // });\r\n // worksheet.addRow({});\r\n // }\r\n\r\n const columnLabels = columns.map(col => col.label);\r\n const columnKeys = columns.map(col => col.key);\r\n const headerRow = worksheet.addRow(columnLabels);\r\n headerRow.eachCell(cell => {\r\n cell.font = { bold: true, size: 12 };\r\n });\r\n\r\n // Prepare worksheet data and add it to the worksheet\r\n const worksheetData = this.prepareWorksheetData(excelData, columns);\r\n worksheetData.forEach(dataRow => {\r\n const rowInstance = worksheet.addRow(Object.values(dataRow));\r\n\r\n // Align specific columns based on columnAlignment parameter\r\n if (columnAlignment?.align === 'end' && columnAlignment.headers.length > 0) {\r\n rowInstance.eachCell((cell, colNumber) => {\r\n const columnKey = columnKeys[colNumber - 1]; // Match index with headers\r\n if (columnAlignment.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Calculate total for specified columns\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow: any = {};\r\n\r\n columns.forEach(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n totalRow[col.label] = excelData.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n } else {\r\n totalRow[col.label] = ''; // Empty for non-total columns\r\n }\r\n });\r\n\r\n const totalRowInstance = worksheet.addRow(Object.values(totalRow));\r\n totalRowInstance.eachCell((cell, colNumber) => {\r\n cell.font = { bold: true, color: { argb: '000' }, size: 12 };\r\n cell.alignment = { horizontal: 'left' };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // Apply right alignment for specified total columns\r\n const columnKey = columnKeys[colNumber - 1];\r\n if (columnAlignment?.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n\r\n // Set column widths\r\n columns.forEach((col, index) => {\r\n worksheet.getColumn(index + 1).width = 15;\r\n });\r\n\r\n // Generate Excel file and save\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.saveAsExcelFile(buffer, excelFileName);\r\n }\r\n\r\n /** Prepare Data for Excel Export*/\r\n private prepareWorksheetData(data: any[], columns: any[]): any[] {\r\n const rows = data.map(row => {\r\n const formattedRow: any = {};\r\n columns.forEach(col => {\r\n formattedRow[col.label] = row[col.key];\r\n });\r\n return formattedRow;\r\n });\r\n\r\n return [...rows];\r\n }\r\n\r\n /** Save Buffer File */\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: ExcelType.excelBlobType });\r\n const url = window.URL.createObjectURL(data);\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n const unique = Math.random().toString(36).substring(2, 8).toUpperCase();\r\n link.download = `${fileName}_${convertIsoToFormat(new Date())}_${unique}.${ExcelType.xlsxBookType}`;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n setTimeout(() => {\r\n // this.loaderService.hide();\r\n this.toastrService.success(`${link.download} file downloaded successfully`, 'Success');\r\n }, 500);\r\n }\r\n\r\n /** Print Page Status Report */\r\n public printHTMLTable(columns: any[], data: any[], headers?: IExcelHeaders[], showTotalValueCols?: string[]): void {\r\n let headersAndHeadings = '';\r\n if (headers) {\r\n headersAndHeadings = this.generateHeaderHTML(headers);\r\n }\r\n\r\n const headerHTML = `<tr>${columns\r\n .map(col => `<th style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\">${col.label}</th>`)\r\n .join('')}</tr>`;\r\n\r\n const bodyHTML = data\r\n .map((row, index) => {\r\n const rowStyle = index % 2 === 0 ? 'background-color: #f9f9f9;' : 'background-color: #e9ecef;';\r\n const rowHTML = columns\r\n .map(col => {\r\n const cellBackground = col.key === 'page_status_name' ? `background-color: ${row?.html_color || ''};` : '';\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; ${cellBackground}}\">${row[col.key] !== null ? row[col.key] : ''}</td>`;\r\n })\r\n .join('');\r\n\r\n return `<tr style=\"${rowStyle}\">${rowHTML}</tr>`;\r\n })\r\n .join('');\r\n\r\n // Generate Footer Row with Totals\r\n let footerHTML = '';\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow = columns\r\n .map(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n const total = data.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow; font-weight: bold;\">${this.formatToTwoDecimalPlaces(total)}</td>`;\r\n }\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow;\"></td>`; // Empty but styled\r\n })\r\n .join('');\r\n\r\n footerHTML = `<tr>${totalRow}</tr>`;\r\n }\r\n\r\n const tableHTML = `\r\n <table style=\"width: 100%; border-collapse: collapse;\">\r\n <thead>${headerHTML}</thead>\r\n <tbody>${bodyHTML}</tbody>\r\n <tfoot>${footerHTML}</tfoot>\r\n </table>\r\n `;\r\n\r\n // Create a new window for printing\r\n const printWindow = window.open('', '', 'width=800, height=600');\r\n if (printWindow) {\r\n printWindow.document.write(`\r\n <html>\r\n <head>\r\n <style>\r\n @media print {\r\n @page {\r\n size: landscape; \r\n }\r\n body {\r\n -webkit-print-color-adjust: exact; \r\n print-color-adjust: exact; \r\n }\r\n table { width: 100%; border-collapse: collapse; }\r\n th, td { border: 1px solid black; padding: 10px; }\r\n th { background-color: #f2f2f2; }\r\n p { margin: 0; padding: 0; }\r\n }\r\n </style>\r\n </head>\r\n <body>\r\n <title>Report</title>\r\n ${headersAndHeadings} \r\n ${tableHTML}\r\n <script type=\"text/javascript\">\r\n window.onload = function() {\r\n window.print();\r\n window.onafterprint = window.close();\r\n };\r\n </script>\r\n </body>\r\n </html>\r\n `);\r\n printWindow.document.close();\r\n printWindow.focus();\r\n }\r\n }\r\n\r\n // Function to generate header HTML from headers array\r\n private generateHeaderHTML(headers: IPrintHeaders[]): string {\r\n return headers\r\n .map(header => {\r\n let style = '';\r\n if (header.alignment) {\r\n style += `text-align: ${header.alignment};`;\r\n }\r\n if (header.bold) {\r\n style += 'font-weight: bold;';\r\n }\r\n if (header.fontSize) {\r\n style += `font-size: ${header.fontSize}px;`;\r\n }\r\n if (header.marginBottom) {\r\n style += `margin-bottom: ${header.marginBottom}px;`;\r\n }\r\n if (header.marginTop) {\r\n style += `margin-bottom: ${header.marginTop}px;`;\r\n }\r\n\r\n return `<p style=\"${style}\">${header.heading}</p>`;\r\n })\r\n .join('');\r\n }\r\n}\r\n","export interface ILoginConfig {\r\n /** Heading of Application (e.g., Maintainance Portal) */\r\n title: string;\r\n\r\n /** URL of the logo shown on login screen */\r\n logoUrl: string;\r\n\r\n /** Placeholder text for username/email input */\r\n usernamePlaceholder: string;\r\n\r\n /** Placeholder text for password input */\r\n passwordPlaceholder: string;\r\n\r\n /** Text displayed on the login submit button */\r\n submitButtonText: string;\r\n\r\n /** Background configuration */\r\n backgroundDirective: {\r\n /** Array of background image URLs */\r\n backgroundImages: string[];\r\n\r\n /** If true → pick a random image on each load */\r\n random: boolean;\r\n };\r\n\r\n //** Version info */\r\n version?: {\r\n currentVersion: string;\r\n brandName: string;\r\n copyrightYear: string;\r\n };\r\n}\r\n\r\nexport enum ILOGIN_ACTION {\r\n SUBMIT = 'submit',\r\n BACK_TO_LOGIN = 'backToLogin'\r\n}\r\n","import { Component, output, input, signal, inject, Renderer2, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { ILOGIN_ACTION, ILoginConfig } from '../../interface/login.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-login',\r\n templateUrl: './login.component.html',\r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginComponent implements OnInit {\r\n readonly configService = inject(ConfigurationServiceLib);\r\n private readonly rendererService = inject(Renderer2);\r\n private readonly formBuilder = inject(FormBuilder);\r\n\r\n public config = input.required<ILoginConfig>({});\r\n public showInactivityLogoutMessage = input<boolean>(false);\r\n\r\n public action = output<{ type: string; data?: any }>();\r\n\r\n public isFormSubmitted = signal<boolean>(false);\r\n\r\n loginForm!: FormGroup;\r\n\r\n public contactSupportValue: string;\r\n public forgetPasswordValue: string;\r\n\r\n constructor() {\r\n this.contactSupportValue = '';\r\n this.forgetPasswordValue = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.config()) {\r\n throw new Error('Config is required');\r\n } else if (!this.config().title || !this.config().logoUrl) {\r\n throw new Error('Title and logo URL are required on the LoginForm Card');\r\n }\r\n\r\n this.initializeForm();\r\n this.initializeInitialValues();\r\n\r\n const lastUserName = localStorage.getItem(BrowserConstantsEnum.lastUserName);\r\n if (lastUserName) {\r\n this.loginForm.controls['uid'].setValue(lastUserName);\r\n }\r\n }\r\n\r\n private initializeForm(): void {\r\n this.loginForm = this.formBuilder.group({\r\n uid: ['', [Validators.required]],\r\n pwd: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.isFormSubmitted.set(true);\r\n this.action.emit({ type: ILOGIN_ACTION.SUBMIT, data: this.loginForm });\r\n }\r\n\r\n private initializeInitialValues(): void {\r\n if (this.configService.allConfigValues() && this.configService.allConfigValues()?.contactSupport) {\r\n if (this.configService.allConfigValues()?.contactSupport?.startsWith('http')) {\r\n this.contactSupportValue = this.configService.allConfigValues()?.contactSupport || '';\r\n this.rendererService.setAttribute(document.getElementById('contact-us'), 'target', '_blank');\r\n } else {\r\n this.contactSupportValue = `mailto:${this.configService.allConfigValues()?.contactSupport}`;\r\n }\r\n }\r\n\r\n // if (this.configService.allConfigValues()?.forgetPassword.startsWith('http')) {\r\n // this.forgetPasswordValue = this.configService.allConfigValues()?.forgetPassword;\r\n // this.rendererService.setAttribute(document.getElementById('forget-password'), 'target', '_blank');\r\n // } else {\r\n // this.forgetPasswordValue = `mailto:${this.configService.allConfigValues()?.forgetPassword}`;\r\n // }\r\n }\r\n}\r\n","<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper text-center\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mt-5 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input \r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n <!-- <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none primary-text\" id=\"forget-password\">Forget Password?</a> -->\r\n <!-- <a class=\"text-decoration-none text-white\" id=\"forget-password\" (click)=\"goToForgetPassword()\">Forget Password?</a> -->\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AlertModule, ButtonModule, FormModule, FormPasswordDirective, SpinnerModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { LoginComponent } from './login.component';\r\nimport { BackgroundImageDirective } from '../../directives/background-image.directive';\r\n\r\n@NgModule({\r\n declarations: [LoginComponent],\r\n imports: [\r\n CommonModule,\r\n BackgroundImageDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FormModule,\r\n ButtonModule,\r\n SpinnerModule,\r\n FormPasswordDirective,\r\n IconModule,\r\n AlertModule\r\n ],\r\n exports: [LoginComponent]\r\n})\r\nexport class LoginModule {}\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/services/configuration.service';\r\n\r\nexport * from './lib/components/ag-grid-renderer/color-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/custom-select-filter.component';\r\nexport * from './lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component';\r\nexport * from './lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component';\r\nexport * from './lib/components/edition-list-grouped/edition-list-grouped.component';\r\nexport * from './lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component';\r\nexport * from './lib/components/page-status-cell-renderer/page-status-cell-renderer.component';\r\nexport * from './lib/components/status-select-cell-renderer/status-select-cell-renderer.component';\r\n\r\nexport * from './lib/components/generic-filter-model/generic-filter-modal.interface';\r\nexport * from './lib/components/generic-filter-model/generic-filter-model.component';\r\n\r\nexport * from './lib/modules/multi-form/multi-form.module';\r\nexport * from './lib/modules/multi-form/multi-form.interface';\r\nexport * from './lib/modules/multi-form/multi-form.component';\r\n\r\nexport * from './lib/modules/table-grid/table-grid.module';\r\nexport * from './lib/modules/table-grid/table-grid.component';\r\nexport * from './lib/modules/table-grid/table-grid';\r\n\r\n// Export directives\r\nexport * from './lib/directives/circular-focus.directive';\r\nexport * from './lib/directives/decimal-input.directive';\r\nexport * from './lib/directives/multi-select-styler.directive';\r\nexport * from './lib/directives/show-tooltip-if-truncated.directive';\r\nexport * from './lib/directives/background-image.directive';\r\n\r\n// Export utility functions\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/enums/export.enum';\r\nexport * from './lib/interface/exports.interface';\r\nexport * from './lib/helpers/dateTime.helpers';\r\n\r\nexport * from './lib/modules/login/login.module';\r\nexport * from './lib/modules/login/login.component';\r\nexport * from './lib/interface/login.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CircularFocusDirective","i4","i6.DecimalInputDirective","i7.ShowTooltipIfTruncatedDirective","i9.EditionListGroupedComponent","i10.MultiSelectStylerDirective","i1.BackgroundImageDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pongrass-utils.mjs","sources":["../../../projects/utils/src/lib/services/configuration.service.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/color-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/custom-select-filter.component.ts","../../../projects/utils/src/lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component.ts","../../../projects/utils/src/lib/enums/browser-constants.enum.ts","../../../projects/utils/src/lib/enums/jsonrpc-methods.enum.ts","../../../projects/utils/src/lib/services/jsonrpc.service.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.html","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.html","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.ts","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.html","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.ts","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.interface.ts","../../../projects/utils/src/lib/constants/color.constants.ts","../../../projects/utils/src/lib/directives/circular-focus.directive.ts","../../../projects/utils/src/lib/directives/decimal-input.directive.ts","../../../projects/utils/src/lib/directives/show-tooltip-if-truncated.directive.ts","../../../projects/utils/src/lib/directives/multi-select-styler.directive.ts","../../../projects/utils/src/lib/helpers/dateTime.helpers.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.module.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.html","../../../projects/utils/src/lib/enums/grid.enum.ts","../../../projects/utils/src/lib/constants/app.constanta.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.html","../../../projects/utils/src/lib/modules/table-grid/table-grid.module.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.ts","../../../projects/utils/src/lib/directives/background-image.directive.ts","../../../projects/utils/src/lib/enums/export.enum.ts","../../../projects/utils/src/lib/services/utils.service.ts","../../../projects/utils/src/lib/interface/login.interface.ts","../../../projects/utils/src/lib/modules/login/login.component.ts","../../../projects/utils/src/lib/modules/login/login.component.html","../../../projects/utils/src/lib/modules/login/login.module.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/pongrass-utils.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationServiceLib {\n public currentTablePreference: WritableSignal<any>;\n public allConfigValues: WritableSignal<IConfig | null>;\n\n public openFilterModal: WritableSignal<boolean>;\n public utilsAppliedTheme: WritableSignal<string>;\n\n constructor() {\n this.currentTablePreference = signal<any>({});\n this.allConfigValues = signal<IConfig | null>(null);\n\n this.openFilterModal = signal<boolean>(false);\n this.utilsAppliedTheme = signal<string>('');\n }\n\n /* Generate Unique ID as String */\n public generateUniqueId(): string {\n return `${Math.floor(Date.now() / 1000)}`;\n }\n\n public setTablePreference(tableName: string, preference: any): void {\n const allTablePreference = this.currentTablePreference();\n allTablePreference[tableName] = preference;\n this.currentTablePreference.set(allTablePreference);\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { IColorOption } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule],\r\n selector: 'prg-ws-color-cell-renderer',\r\n template: `\r\n <div class=\"cell-wrapper align-items-center d-inline-flex gap-2\">\r\n <span class=\"color-box\" [ngStyle]=\"{ 'background-color': colorCode }\"></span>\r\n <span class=\"text-truncate\">\r\n {{ params.value }}\r\n </span>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .color-box {\r\n height: 1.5rem;\r\n }\r\n .cell-wrapper {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n width: 100%;\r\n overflow: hidden; /* Required to enable truncation */\r\n }\r\n `\r\n ]\r\n})\r\nexport class ColorCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n public colorsList: IColorOption[] = [];\r\n public colorCode = '';\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.colorsList = params.colDef?.cellRendererParams?.colorsList ?? [];\r\n this.setColorCode(this.params?.value);\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n return true;\r\n }\r\n\r\n setColorCode(colorKey: string): void {\r\n if (this.colorsList && this.colorsList.length > 0 && colorKey) {\r\n const selectedColor = this.colorsList.find(color => color.color_name === colorKey);\r\n if (selectedColor) {\r\n this.colorCode = selectedColor.value as string;\r\n } else {\r\n this.colorCode = ''; // Default color if not found\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ViewChild, ElementRef } from '@angular/core';\r\n\r\nimport { FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-custom-set-filter',\r\n standalone: true,\r\n imports: [FormsModule, FormModule],\r\n template: `\r\n <div class=\"select-filter-container\">\r\n <input type=\"text\" #searchInput cFormControl [(ngModel)]=\"searchText\" (input)=\"onSearchChange()\" placeholder=\"Search...\" class=\"search-box\" />\r\n @if (filteredValues.length > 0) {\r\n <div>\r\n <label class=\"checkbox-item\">\r\n <input cFormCheckInput [indeterminate]=\"isIndeterminate\" type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"onSelectAllChanged($event)\" />\r\n (Select All)\r\n </label>\r\n </div>\r\n } @else {\r\n <div>\r\n <label> No matches </label>\r\n </div>\r\n }\r\n\r\n <div class=\"checkbox-list\">\r\n @for (value of filteredValues; track value) {\r\n <label [attr.aria-label]=\"'Select ' + value\" class=\"checkbox-item\">\r\n <input cFormCheckInput type=\"checkbox\" [value]=\"value\" [checked]=\"isValueSelected(value)\" (change)=\"onValueChanged(value, $event)\" />\r\n {{ value }}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .select-filter-container {\r\n padding: 10px;\r\n label {\r\n display: flex;\r\n gap: 5px;\r\n }\r\n }\r\n .search-box {\r\n width: 100%;\r\n margin-bottom: 5px;\r\n padding: 4px;\r\n }\r\n\r\n .checkbox-list {\r\n max-height: 200px;\r\n overflow-y: auto;\r\n }\r\n .checkbox-item {\r\n padding: 4px 6px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n }\r\n .checkbox-item:hover {\r\n background-color: #f0f0f0;\r\n }\r\n `\r\n ]\r\n})\r\nexport class CustomSelectFilterComponent implements IFilterAngularComp {\r\n params!: IFilterParams;\r\n uniqueValues: string[] = [];\r\n filteredValues: string[] = [];\r\n selectedValues: Set<string> = new Set();\r\n searchText: string = '';\r\n isIndeterminate: boolean = false;\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.uniqueValues = this.getUniqueValues();\r\n this.filteredValues = [...this.uniqueValues];\r\n this.uniqueValues.forEach(val => this.selectedValues.add(val));\r\n }\r\n\r\n @ViewChild('searchInput') searchInputRef!: ElementRef<HTMLInputElement>;\r\n\r\n afterGuiAttached(): void {\r\n this.searchInputRef?.nativeElement?.focus();\r\n }\r\n\r\n getUniqueValues(): string[] {\r\n const values = new Set<string>();\r\n this.params.api.forEachNode(node => {\r\n values.add(node.data[this.params.colDef.field!]);\r\n });\r\n return Array.from(values).sort();\r\n }\r\n\r\n isValueSelected(value: string): boolean {\r\n return this.selectedValues.has(value);\r\n }\r\n\r\n isAllSelected(): boolean {\r\n return this.filteredValues.length > 0 && this.filteredValues.every(val => this.selectedValues.has(val));\r\n }\r\n\r\n onSelectAllChanged(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.filteredValues.forEach(val => this.selectedValues.add(val));\r\n } else {\r\n this.filteredValues.forEach(val => this.selectedValues.delete(val));\r\n }\r\n this.updateIndeterminate();\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onValueChanged(value: string, event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.selectedValues.add(value);\r\n } else {\r\n this.selectedValues.delete(value);\r\n }\r\n this.updateIndeterminate();\r\n // If all are now selected, ensure isIndeterminate is false\r\n if (this.isAllSelected()) {\r\n this.isIndeterminate = false;\r\n }\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n updateIndeterminate(): void {\r\n // isIndeterminate is true if at least one but not all filteredValues are selected\r\n const selectedCount = this.filteredValues.filter(val => this.selectedValues.has(val)).length;\r\n this.isIndeterminate = selectedCount > 0 && selectedCount < this.filteredValues.length;\r\n }\r\n\r\n onSearchChange(): void {\r\n const lower = this.searchText.toLowerCase();\r\n this.filteredValues = this.uniqueValues.filter(val => val?.toString().toLowerCase().includes(lower));\r\n this.updateIndeterminate();\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const value = params.data[this.params.colDef.field!];\r\n return this.selectedValues.has(value);\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.selectedValues.size !== this.uniqueValues.length;\r\n }\r\n\r\n getModel() {\r\n return { values: Array.from(this.selectedValues) };\r\n }\r\n\r\n setModel(model: { values?: string[] }): void {\r\n if (model?.values) {\r\n this.selectedValues = new Set(model.values);\r\n } else {\r\n this.selectedValues = new Set(this.uniqueValues);\r\n }\r\n this.filteredValues = [...this.uniqueValues];\r\n }\r\n}\r\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\nimport { FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule],\r\n template: ` <div class=\"d-flex justify-content-start align-items-center h-100 mt-2\">\r\n <input\r\n cFormCheckInput\r\n type=\"checkbox\"\r\n class=\"me-2 cell-renderer-checkbox\"\r\n [checked]=\"value\"\r\n (change)=\"onChangeCheckBox($event)\"\r\n [disabled]=\"ischeckboxDisabled\" />\r\n </div>`\r\n})\r\nexport class CheckboxCellRendererComponent implements ICellRendererAngularComp {\r\n public value!: boolean;\r\n private params!: ICellRendererParams;\r\n public ischeckboxDisabled = true;\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.ischeckboxDisabled = params.colDef?.cellRendererParams?.data?.disabled ?? true;\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.value = params.value === 'Y' || params.value === 1 ? true : false;\r\n return true;\r\n }\r\n\r\n onChangeCheckBox(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n this.value = checked;\r\n\r\n // Emit the change event to the parent via a callback\r\n if (this.params.colDef?.cellRendererParams?.onCheckboxChange) {\r\n this.params.colDef.cellRendererParams.onCheckboxChange(this.params.data, checked, this.params.colDef?.field);\r\n }\r\n }\r\n}\r\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'prg-ws-comments-button-cell-renderer',\r\n imports: [ButtonModule],\r\n template: `\r\n <div>\r\n <button cButton [color]=\"params.data?.orders_notes ? 'primary' : 'secondary'\" size=\"sm\" data-action=\"comment-action\" (click)=\"onCommentClick()\">\r\n Comments\r\n </button>\r\n </div>\r\n `,\r\n styles: ``\r\n})\r\nexport class CommentsButtonCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.params = params;\r\n return true;\r\n }\r\n\r\n onCommentClick(): void {\r\n if (this.params?.colDef?.cellRendererParams?.onCommentClick) {\r\n this.params.colDef.cellRendererParams.onCommentClick(this.params.data);\r\n }\r\n }\r\n}\r\n","export enum BrowserConstantsEnum {\r\n sessionid = 'sessionId',\r\n loginUid = 'uid',\r\n iframeTabs = 'tabs',\r\n connectExternalFlag = 'connectExternal',\r\n lastUserName = 'lastUserName',\r\n logoutReason = 'logoutReason',\r\n\r\n tablePreference = 'table_preference',\r\n\r\n cookieSidebarUnfoldable = 'pongrass_sidebar_state',\r\n cookieTheme = 'pongrass_theme',\r\n\r\n menuItems = '_menu_items'\r\n}\r\n","export enum JSONRPCMethods {\n getFormsConfig = 'get_form',\n tableSearch = 'table_search',\n tableUpdate = 'table_update',\n tableList = 'table_list',\n generateAccountId = 'generate_accountid',\n updateTablePreference = 'update_form_preference',\n\n listPhotoQueue = 'photo_queue',\n updateFileStatus = 'update_photo_status',\n report = 'report',\n\n adStatusList = 'list_adstatus',\n adApprovedList = 'get_approval_adlist',\n updateApprovedList = 'update_approve_adlist',\n getEditionPublicationList = 'get_edition',\n nationaROPReport = 'national_rop_report',\n nationaInserts = 'national_inserts',\n prodStatusList = 'list_prodstatus',\n updateAdStatus = 'update_ad_status',\n\n ordersNotes = 'orders_notes',\n\n getPageStatus = 'get_page_status',\n listPageStatus = 'list_pagestatus',\n updatePageStatus = 'update_page_status',\n\n markads = 'markads',\n updateReport = 'update_report',\n\n listFileStatus = 'list_filestatus',\n getIndustryList = 'get_industry'\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, lastValueFrom, map, Observable } from 'rxjs';\r\nimport { IAPIResponse, IConfig } from '../interface/api-response.interface';\r\nimport { IFormConfig } from '../modules/multi-form/multi-form.interface';\r\nimport { BrowserConstantsEnum } from '../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../enums/jsonrpc-methods.enum';\r\nimport { IAvailableForms } from '../interface/multi-forms.interface';\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\nimport { MaintAction } from '../modules/table-grid/table-grid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonrpcServiceLib {\r\n private readonly httpService = inject(HttpClient);\r\n private readonly configService = inject(ConfigurationServiceLib);\r\n private readonly baseURL$: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n get baseURL(): string {\r\n return this.baseURL$.value || this.defaultBaseURl;\r\n }\r\n\r\n get defaultBaseURl(): string {\r\n return ((window as any).config as IConfig)?.apiBaseURLWebMaint;\r\n }\r\n\r\n setBaseUrl(url: string): void {\r\n this.baseURL$.next(url);\r\n }\r\n\r\n // JSONRPC POST Request\r\n public postJsonRpcRequest(method: string, params: any): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n return this.httpService\r\n .post(this.baseURL, body, { headers })\r\n .pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));\r\n }\r\n\r\n // JSONRPC POST Request With promise\r\n public async postJsonRpcRequestPromise(method: string, params: any): Promise<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n const request$ = this.httpService.post(this.baseURL, body, { headers });\r\n const response = await lastValueFrom<any>(request$);\r\n return { ...response, timestamp: new Date().toISOString() };\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Form config name\r\n * @param tableName Table Name\r\n */\r\n public async getFormConfig(formName: string, tableName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n table_name: tableName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Report config name\r\n * @param reportName Table Name\r\n */\r\n public async getFormConfigReports(formName: string, reportName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n report_name: reportName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.report, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /** Get available forms */\r\n public async getTableConfig(tableName: string): Promise<IAvailableForms[]> {\r\n try {\r\n const response: IAPIResponse<IAvailableForms[]> = await this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n });\r\n\r\n if (response.result) {\r\n return response.result;\r\n }\r\n return [];\r\n } catch (error) {\r\n return [];\r\n }\r\n }\r\n\r\n /** Get single row data by their params */\r\n public async getTableRow(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableSearch, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Form values and params needed fo the call\r\n * @param action 'U' for update and 'N' for create and 'D' for delete\r\n * @returns Promise<any>\r\n */\r\n public async createUpdateDeleteTableRow(tableName: string, requests: any, action?: MaintAction): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName,\r\n maint_action: action\r\n };\r\n params = { ...params, ...requests };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableUpdate, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Params to get the list of data\r\n * @returns Array of data\r\n */\r\n public async getTableList(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableList, params);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MultiSelectModule } from '@coreui/angular-pro';\r\nimport { NgClass } from '@angular/common';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IEditionPublication } from '../../interface/multi-forms.interface';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-edition-list-grouped',\r\n imports: [MultiSelectModule, FormsModule, NgClass],\r\n templateUrl: './edition-list-grouped.component.html',\r\n styleUrl: './edition-list-grouped.component.scss',\r\n standalone: true\r\n})\r\nexport class EditionListGroupedComponent implements OnInit, OnDestroy {\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n private isActive: boolean;\r\n\r\n public editionPublicationList: {\r\n region: string;\r\n values: IEditionPublication[];\r\n }[];\r\n\r\n private selectedRegions: string[];\r\n private selectedEditions: string[];\r\n\r\n @Output() selectedEditionsChange = new EventEmitter<string[]>();\r\n @Input() label: string;\r\n @Input() multiple: boolean;\r\n @Input() hasFormError: boolean;\r\n\r\n constructor() {\r\n this.isActive = true;\r\n this.editionPublicationList = [];\r\n this.selectedEditions = [];\r\n this.selectedRegions = [];\r\n this.label = '';\r\n this.hasFormError = false;\r\n this.multiple = true;\r\n }\r\n ngOnInit(): void {\r\n this.getEditionPublicationList();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.isActive = false;\r\n }\r\n\r\n private async getEditionPublicationList(): Promise<void> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n for_approval: true\r\n };\r\n\r\n await this.jsonrpcService\r\n .postJsonRpcRequestPromise(JSONRPCMethods.getEditionPublicationList, params)\r\n .then((response: IAPIResponse<IEditionPublication[]>) => {\r\n if (response.result) {\r\n const result = response.result;\r\n result.forEach(ed => {\r\n ed['selected'] = false;\r\n });\r\n const groupedByRegion = result.reduce((acc: any, current: IEditionPublication) => {\r\n const region = current.region;\r\n if (region) {\r\n if (!acc[region]) {\r\n acc[region] = {\r\n region: region,\r\n values: []\r\n };\r\n }\r\n acc[region].values.push(current);\r\n }\r\n return acc;\r\n }, {});\r\n this.editionPublicationList = Object.values(groupedByRegion);\r\n }\r\n });\r\n }\r\n\r\n public onEditionSelection(option: IEditionPublication[] | IEditionPublication): void {\r\n this.selectedEditions = [];\r\n\r\n if (Array.isArray(option)) {\r\n if (option.length > 0) {\r\n option.forEach(editionData => {\r\n this.selectedEditions.push(editionData.edname!);\r\n });\r\n }\r\n } else {\r\n if (option && option.edname) {\r\n this.selectedEditions.push(option.edname);\r\n }\r\n }\r\n\r\n this.selectedEditionsChange.emit(this.selectedEditions);\r\n }\r\n\r\n public onSelectEditionGroup(region: string, index: number): void {\r\n const isSelected = this.selectedRegions.includes(region);\r\n\r\n if (isSelected) {\r\n this.selectedRegions.splice(index, 1);\r\n } else {\r\n this.selectedRegions.push(region);\r\n }\r\n\r\n this.editionPublicationList.forEach(element => {\r\n if (element.region === region) {\r\n element.values.forEach(regionValues => {\r\n regionValues.selected = !isSelected;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public onVisibleChange(isActive: boolean): void {\r\n const elements = document.getElementsByClassName('form-multi-select-cleaner');\r\n Array.from(elements).forEach((element: Element) => {\r\n (element as HTMLElement).style.display = isActive ? 'inline-block' : 'none';\r\n });\r\n }\r\n}\r\n","<div class=\"row\">\n <div class=\"col-12\">\n @if (label) {\n <label for=\"sel-group-edition\">{{ label }}</label>\n }\n <c-multi-select\n [cleaner]=\"true\"\n [selectionType]=\"multiple ? 'counter' : 'text'\"\n [multiple]=\"multiple\"\n clearSearchOnSelect\n [ngClass]=\"{ 'form-invalid': hasFormError }\"\n placeholder=\"All Editions\"\n visibleItems=\"8\"\n (valueChange)=\"onEditionSelection($event)\"\n (visibleChange)=\"onVisibleChange($event)\">\n @for (option of editionPublicationList; track $index + '_' + option.region) {\n <c-multi-select-optgroup>\n <c-multi-select-optgroup-label (click)=\"onSelectEditionGroup(option.region, $index)\" class=\"region-selector cursor-pointer\">{{\n option?.region\n }}</c-multi-select-optgroup-label>\n @for (item of option.values; track item?.description) {\n <c-multi-select-option [value]=\"item\" [selected]=\"item.selected\">{{ '[' + item?.edname + ']' }} {{ item?.description }}</c-multi-select-option>\n }\n </c-multi-select-optgroup>\n }\n </c-multi-select>\n </div>\n</div>\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { IIndustry } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-industry-update-listbox-cell-renderer',\r\n templateUrl: './industry-update-listbox-cell-renderer.component.html',\r\n styleUrl: './industry-update-listbox-cell-renderer.component.scss',\r\n imports: [FormsModule, NgClass],\r\n standalone: true\r\n})\r\nexport class IndustryUpdateListboxCellRendererComponent implements ICellRendererAngularComp {\r\n public industryList: IIndustry[] = [];\r\n public selectedIndustry: string | undefined;\r\n private params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.industryList = params.colDef?.cellRendererParams?.data?.industryList ?? [];\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n return true;\r\n }\r\n\r\n public onIndustryChange(event: Event): void {\r\n const value = (event.target as HTMLSelectElement).value;\r\n if (this.params.colDef?.cellRendererParams?.onUpdateIndustry) {\r\n this.params.colDef.cellRendererParams.onUpdateIndustry(this.params.data, value);\r\n }\r\n }\r\n}\r\n","<select\n class=\"form-select select-industry\"\n [ngClass]=\"{ 'select-industry-red': selectedIndustry === 'select-industry' }\"\n [(ngModel)]=\"selectedIndustry\"\n (change)=\"onIndustryChange($event)\"\n id=\"sel-industry\"\n name=\"sel-industry\">\n <option value=\"select-industry\" disabled class=\"select-industry-opt\">Select Industry</option>\n @for (industry of industryList; track industry.industry) {\n <option [value]=\"industry?.industry\" class=\"select-industry-opt\">\n {{ industry?.description }}\n </option>\n }\n</select>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IPageStatusList } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-page-status-cell-renderer',\r\n templateUrl: './page-status-cell-renderer.component.html',\r\n styleUrl: './page-status-cell-renderer.component.scss',\r\n imports: [FormsModule, CommonModule, FormModule],\r\n standalone: true\r\n})\r\nexport class PageStatusCellRendererComponent {\r\n public pageStatusList: IPageStatusList[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public pageStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.pageStatusList = params.colDef?.cellRendererParams?.data?.pageStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.pageStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdatePageStatus) {\r\n this.params.colDef.cellRendererParams.onUpdatePageStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.pageStatusList.find(status => status.page_status_name === this.pageStatus!.page_status_name);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"pageStatus!.page_status_name\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of pageStatusList; track $index) {\n <option [value]=\"status.page_status_name\">\n {{ status.page_status_name }}\n </option>\n }\n </select>\n</div>\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IProdStatus } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule, CommonModule, FormsModule],\r\n selector: 'prg-ws-status-select-cell-renderer',\r\n templateUrl: './status-select-cell-renderer.component.html',\r\n styleUrl: './status-select-cell-renderer.component.scss'\r\n})\r\nexport class StatusSelectCellRendererComponent implements ICellRendererAngularComp {\r\n public prodStatusList: IProdStatus[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public fileStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.prodStatusList = params.colDef?.cellRendererParams?.data?.prodStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.fileStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdateFileStatus) {\r\n this.params.colDef.cellRendererParams.onUpdateFileStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.prodStatusList.find(status => status.statusid === this.fileStatus!.it_prodstatusid);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"this.fileStatus!.it_prodstatusid\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of prodStatusList; track $index) {\n <option [value]=\"status.statusid\">\n {{ status.statusdesc }}\n </option>\n }\n </select>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\nexport enum FormFieldType {\r\n Text = 'text',\r\n Email = 'email',\r\n Number = 'number',\r\n Select = 'select',\r\n Autosuggest = 'autosuggest',\r\n Textarea = 'textarea',\r\n Date = 'date',\r\n Datetime = 'datetime',\r\n Switch = 'switch',\r\n Checkbox = 'checkbox',\r\n Float = 'float',\r\n Edition = 'edition',\r\n Separator = 'seperator',\r\n FormHeader = 'form-header',\r\n Password = 'password',\r\n Url = 'url',\r\n Tel = 'tel'\r\n}\r\n\r\nexport interface IFieldConfig {\r\n /** Form label */\r\n label: string;\r\n\r\n /** Form field type */\r\n type: FormFieldType;\r\n\r\n /** id or formControlName */\r\n controlName: string;\r\n\r\n /** for selects or multi-selects */\r\n options?: { value: string; label: string; disabled?: boolean }[];\r\n\r\n /** for selects or multi-selects allows create option along with selects */\r\n allowCreateOptions?: boolean;\r\n\r\n /** for selects or multi-selects allows search option */\r\n allowSearch?: boolean;\r\n\r\n /** for selects or multi-selects allows clear option */\r\n allowCleaner?: boolean;\r\n\r\n /** grid column span */\r\n colspan?: number;\r\n\r\n /** Placeholder */\r\n placeholder?: string;\r\n\r\n /** For multi-selects */\r\n selectionType?: 'text' | 'tags' | 'counter';\r\n\r\n /** For textarea rows */\r\n textareaRows?: number;\r\n\r\n /** For textarea columns */\r\n textareaColumns?: number;\r\n\r\n /** Validations */\r\n validations: IFormValidations;\r\n\r\n /** Form Value */\r\n value?: any;\r\n\r\n /** For multi-selects - Allows multiple selection */\r\n multiple?: boolean;\r\n\r\n /** Additional info or description for the field */\r\n info?: string;\r\n\r\n /** Additional configuration for specific field types */\r\n config?: any;\r\n\r\n styles?: IFormStyles;\r\n\r\n actionButton?: {\r\n icon: string;\r\n tooltip?: string; // Tooltip for the action button\r\n action: string; // e.g., 'reload', 'generateAccountId'\r\n };\r\n}\r\n\r\nexport interface IFormConfig {\r\n formName?: string;\r\n rows: IFieldConfig[][];\r\n unique_key?: string[];\r\n}\r\n\r\nexport interface IFormValidations {\r\n required?: boolean;\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: string;\r\n readonly?: boolean;\r\n precision?: number; // For float type number\r\n min?: number; // For number type\r\n max?: number; // For number type\r\n defaultAdvance?: 'weekly' | 'monthly' | 'quarterly' | 'halfyearly' | 'yearly';\r\n}\r\n\r\nexport interface IFormSubmissionEmit {\r\n /** Reflects the validity of the form */\r\n isValid: boolean;\r\n\r\n /** Reflects the values of the form controls */\r\n values: { [key: string]: any };\r\n\r\n /** Reflects the controls of the form */\r\n controls: { [key: string]: AbstractControl };\r\n}\r\n\r\nexport interface IFormStyles {\r\n field?: string;\r\n label?: string;\r\n}\r\n","export const ColorsCodes = [\n {\n color_name: 'AliceBlue',\n color_code: '#F0F8FF'\n },\n {\n color_name: 'Aqua',\n color_code: '#00FFFF'\n },\n {\n color_name: 'Aquamarine',\n color_code: '#7FFFD4'\n },\n {\n color_name: 'Beige',\n color_code: '#F5F5DC'\n },\n {\n color_name: 'Black',\n color_code: '#000000'\n },\n {\n color_name: 'Blue',\n color_code: '#0000FF'\n },\n {\n color_name: 'Chartreuse',\n color_code: '#7FFF00'\n },\n {\n color_name: 'Coral',\n color_code: '#FF7F50'\n },\n {\n color_name: 'DarkGray',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGrey',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGreen',\n color_code: '#006400'\n },\n {\n color_name: 'DarkOrange',\n color_code: '#FF8C00'\n },\n {\n color_name: 'Fuchsia',\n color_code: '#FF00FF'\n },\n {\n color_name: 'GoldenRod',\n color_code: '#DAA520'\n },\n {\n color_name: 'Gray',\n color_code: '#808080'\n },\n {\n color_name: 'Grey',\n color_code: '#808080'\n },\n {\n color_name: 'Green',\n color_code: '#008000'\n },\n {\n color_name: 'GreenYellow',\n color_code: '#ADFF2F'\n },\n {\n color_name: 'Khaki',\n color_code: '#F0E68C'\n },\n {\n color_name: 'Lavender',\n color_code: '#E6E6FA'\n },\n {\n color_name: 'LightGray',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGrey',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGreen',\n color_code: '#90EE90'\n },\n {\n color_name: 'LightSalmon',\n color_code: '#FFA07A'\n },\n {\n color_name: 'LightSkyBlue',\n color_code: '#87CEFA'\n },\n {\n color_name: 'Lime',\n color_code: '#00FF00'\n },\n {\n color_name: 'LimeGreen',\n color_code: '#32CD32'\n },\n {\n color_name: 'Magenta',\n color_code: '#FF00FF'\n },\n {\n color_name: 'Maroon',\n color_code: '#800000'\n },\n {\n color_name: 'MediumSpringGreen',\n color_code: '#00FA9A'\n },\n {\n color_name: 'Navy',\n color_code: '#000080'\n },\n {\n color_name: 'Olive',\n color_code: '#808000'\n },\n {\n color_name: 'Orange',\n color_code: '#FFA500'\n },\n {\n color_name: 'OrangeRed',\n color_code: '#FF4500'\n },\n {\n color_name: 'Orchid',\n color_code: '#DA70D6'\n },\n {\n color_name: 'PaleGreen',\n color_code: '#98FB98'\n },\n {\n color_name: 'PaleTurquoise',\n color_code: '#AFEEEE'\n },\n {\n color_name: 'Plum',\n color_code: '#DDA0DD'\n },\n {\n color_name: 'Purple',\n color_code: '#800080'\n },\n {\n color_name: 'Red',\n color_code: '#FF0000'\n },\n {\n color_name: 'Salmon',\n color_code: '#FA8072'\n },\n {\n color_name: 'SandyBrown',\n color_code: '#F4A460'\n },\n {\n color_name: 'Silver',\n color_code: '#C0C0C0'\n },\n {\n color_name: 'SkyBlue',\n color_code: '#87CEEB'\n },\n {\n color_name: 'Teal',\n color_code: '#008080'\n },\n {\n color_name: 'Tomato',\n color_code: '#FF6347'\n },\n {\n color_name: 'Violet',\n color_code: '#EE82EE'\n },\n {\n color_name: 'Wheat',\n color_code: '#F5DEB3'\n },\n {\n color_name: 'White',\n color_code: '#FFFFFF'\n },\n {\n color_name: 'Yellow',\n color_code: '#FFFF00'\n }\n];\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, inject } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[wsCircularFocus]',\r\n standalone: true\r\n})\r\nexport class CircularFocusDirective implements AfterViewInit, OnDestroy {\r\n private el = inject(ElementRef);\r\n\r\n @Input() formId: string = '';\r\n @Input() formGroup: FormGroup | null = null;\r\n\r\n private focusableElements: HTMLElement[] = [];\r\n private formSubscription: Subscription | null = null;\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n\r\n // Subscribe to form value changes if formGroup is provided\r\n if (this.formGroup) {\r\n this.formSubscription = this.formGroup.valueChanges.subscribe(() => {\r\n // Wait for DOM to update after form changes\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n }, 0);\r\n });\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Clean up subscription when directive is destroyed\r\n if (this.formSubscription) {\r\n this.formSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private collectFocusableElements(): void {\r\n if (!this.formId) {\r\n // If no formId is provided, use the current element\r\n this.focusableElements = this.getFocusableElements(this.el.nativeElement);\r\n } else {\r\n const formElement = document.getElementById(this.formId);\r\n if (formElement) {\r\n this.focusableElements = this.getFocusableElements(formElement);\r\n }\r\n }\r\n }\r\n\r\n private getFocusableElements(element: HTMLElement): HTMLElement[] {\r\n return Array.from(\r\n element.querySelectorAll(\r\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable]:not([disabled]), c-multi-select:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\r\n )\r\n ).filter(el => {\r\n // Filter out hidden elements\r\n const element = el as HTMLElement;\r\n return element.offsetParent !== null; // Check if element is visible\r\n }) as HTMLElement[];\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n // ToDo: Plan to escape the circular navigation when Escape is pressed\r\n // if (event.key === 'Escape') {}\r\n\r\n // Only handle Tab key events\r\n if (event.key !== 'Tab') return;\r\n\r\n // If no focusable elements, do nothing\r\n if (this.focusableElements.length === 0) return;\r\n\r\n const currentElement = document.activeElement as HTMLElement;\r\n const currentIndex = this.focusableElements.indexOf(currentElement);\r\n\r\n // If current element is not in our list, do nothing\r\n if (currentIndex === -1) return;\r\n\r\n // Handle circular navigation\r\n if (event.shiftKey) {\r\n // Going backward with Shift+Tab\r\n if (currentIndex === 0) {\r\n event.preventDefault();\r\n const lastElement = this.focusableElements[this.focusableElements.length - 1];\r\n lastElement.focus();\r\n }\r\n } else {\r\n // Going forward with Tab\r\n if (currentIndex === this.focusableElements.length - 1) {\r\n event.preventDefault();\r\n const firstElement = this.focusableElements[0];\r\n firstElement.focus();\r\n }\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[wsDecimalInput]',\r\n standalone: true\r\n})\r\nexport class DecimalInputDirective implements OnInit, OnDestroy {\r\n private el = inject(ElementRef<HTMLInputElement>);\r\n private control = inject(NgControl);\r\n private sub!: Subscription;\r\n\r\n @Input() wsDecimalInput: number = 4;\r\n\r\n private specialKeys: string[] = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight', 'Delete'];\r\n\r\n ngOnInit(): void {\r\n // Only format when value comes from patchValue / setValue (not typing)\r\n this.sub = this.control.valueChanges?.subscribe(value => {\r\n const inputEl = this.el.nativeElement;\r\n // Skip if input element is focused (user typing)\r\n if (document.activeElement === inputEl) return;\r\n\r\n this.formatValue(value);\r\n }) as Subscription;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub?.unsubscribe();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n if (this.specialKeys.includes(event.key)) return;\r\n\r\n if (event.key === '.' && value.includes('.')) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const cursorPos = input.selectionStart ?? value.length;\r\n const nextValue = this.getNextValue(value, event.key, cursorPos);\r\n\r\n if (!this.isValidInput(nextValue)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this.formatValue(this.el.nativeElement.value);\r\n }\r\n\r\n private formatValue(value: any): void {\r\n if (value === null || value === undefined || value === '') return;\r\n if (isNaN(Number(value))) return;\r\n\r\n const [integerPart, decimalPart = ''] = value.toString().split('.');\r\n let formatted = integerPart + '.' + decimalPart.padEnd(this.wsDecimalInput, '0');\r\n\r\n if (decimalPart.length > this.wsDecimalInput) {\r\n formatted = integerPart + '.' + decimalPart.slice(0, this.wsDecimalInput);\r\n }\r\n\r\n this.control.control?.setValue(formatted, { emitEvent: false });\r\n this.el.nativeElement.value = formatted;\r\n }\r\n\r\n private isValidInput(value: string): boolean {\r\n const regex = new RegExp(`^\\\\d*\\\\.?\\\\d{0,${this.wsDecimalInput}}$`);\r\n return regex.test(value);\r\n }\r\n\r\n private getNextValue(currentValue: string, key: string, cursorPos: number): string {\r\n return currentValue.slice(0, cursorPos) + key + currentValue.slice(cursorPos);\r\n }\r\n}\r\n","/// <reference path=\"../types/coreui-pro.d.ts\" />\r\n\r\nimport { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\r\n\r\nimport { Tooltip } from '@coreui/coreui-pro';\r\n\r\n@Directive({ selector: '[wsShowTooltipIfTruncated]', standalone: true })\r\nexport class ShowTooltipIfTruncatedDirective {\r\n @Input('wsShowTooltipIfTruncated') tooltipText: string = '';\r\n private el = inject(ElementRef);\r\n\r\n constructor() {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (!this.isTextTruncated()) {\r\n return;\r\n }\r\n Tooltip.getOrCreateInstance(this.el.nativeElement, {\r\n trigger: 'manual',\r\n title: this.tooltipText\r\n }).show();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n Tooltip.getOrCreateInstance(this.el.nativeElement)?.hide();\r\n }\r\n\r\n private isTextTruncated(): boolean {\r\n const el = this.el.nativeElement;\r\n return el.scrollWidth > el.clientWidth;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MultiSelectComponent } from '@coreui/angular-pro';\r\nimport { IColorOption } from '../interface/multi-forms.interface';\r\n\r\n@Directive({\r\n selector: '[wsMultiSelectStyler]',\r\n standalone: true\r\n})\r\nexport class MultiSelectStylerDirective implements OnInit, OnDestroy {\r\n private ngControl = inject(NgControl, { optional: true });\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n private mutationObserver?: MutationObserver;\r\n\r\n @Input() wsMultiSelectStyler: boolean = true;\r\n @Input() options: IColorOption[] = [];\r\n private multiSelect = inject(MultiSelectComponent, { optional: true });\r\n\r\n ngOnInit() {\r\n if (!this.wsMultiSelectStyler) return;\r\n\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n // Initial update\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n\r\n // Watch for control value changes\r\n this.ngControl.valueChanges?.subscribe(() => {\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n });\r\n\r\n this.setupMutationObserver();\r\n }\r\n\r\n private setupMutationObserver() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n this.mutationObserver = new MutationObserver(() => {\r\n this.updateSelectedItem();\r\n });\r\n\r\n this.mutationObserver.observe(container, {\r\n childList: true,\r\n subtree: true\r\n });\r\n }\r\n\r\n private getSelectionContainer(): HTMLElement | null {\r\n return this.el.nativeElement.querySelector('.form-multi-select-selection');\r\n }\r\n\r\n private updateSelectedItem() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n // Clear existing custom element\r\n const existingItem = container.querySelector('.color-box');\r\n if (existingItem) {\r\n existingItem.remove();\r\n }\r\n\r\n const selectedValue = this.ngControl?.value;\r\n\r\n if (!selectedValue) return;\r\n\r\n const textElement = container.querySelector('.form-multi-select-text');\r\n if (!textElement) return;\r\n\r\n const option = this.options.find(opt => opt.label === selectedValue);\r\n if (!option) {\r\n return;\r\n }\r\n // const option = { color: 'red'};\r\n this.renderer.setStyle(container, 'flex-wrap', 'unset');\r\n this.renderer.addClass(container, 'gap-2');\r\n\r\n // Create and insert color box\r\n const colorBox = this.renderer.createElement('span');\r\n this.renderer.addClass(colorBox, 'color-box');\r\n this.renderer.setStyle(colorBox, 'background-color', option.value);\r\n this.renderer.insertBefore(textElement.parentNode, colorBox, textElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.mutationObserver?.disconnect();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\n\r\n// Output: \"2024-10-02 15:43:58\"\r\nexport function convertToISOnString(date: Date): string {\r\n if (!date) return '';\r\n\r\n const dateString = date instanceof Date ? date.toISOString() : date;\r\n if (dateString.includes('T')) {\r\n return dateString.replace('T', ' ').split('.')[0];\r\n }\r\n return dateString;\r\n}\r\n\r\n// defaultDateFormat = 'DD/MM/YYYY';\r\n// Output: \"02/10/2024\"\r\nexport function regionalDateFormat(date: Date): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n const day = ('0' + date.getDate()).slice(-2);\r\n const year = date.getFullYear();\r\n\r\n switch (config.defaultDateFormat) {\r\n case 'MM/DD/YYYY':\r\n return `${month}/${day}/${year}`;\r\n case 'DD/MM/YYYY':\r\n return `${day}/${month}/${year}`;\r\n case 'YYYY/MM/DD':\r\n return `${year}/${month}/${day}`;\r\n default:\r\n return `${month}/${day}/${year}`;\r\n }\r\n}\r\n\r\n// convertIsoToFormat(date, 'YYYY/MM/DD');\r\n// Output: \"2024/10/02\"\r\nexport function convertIsoToFormat(date: string | Date, dateFormat?: string): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n let format: any;\r\n if (dateFormat) format = dateFormat;\r\n else format = config.defaultDateFormat;\r\n\r\n const dateObj = new Date(date);\r\n\r\n const year = dateObj.getFullYear();\r\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateObj.getDate()).padStart(2, '0');\r\n return format.replace('YYYY', String(year)).replace('MM', month).replace('DD', day);\r\n}\r\n\r\n// Output: 'Oct 2, 2024, 3:43:58 PM'\r\nexport function convertDateShort(dateString: string): string {\r\n if (!dateString) {\r\n return '';\r\n }\r\n const date = new Date(dateString);\r\n return date.toLocaleString('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n hour12: true\r\n });\r\n}\r\n\r\nexport type TimeOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nexport function generateTimeOptions(): TimeOption[] {\r\n const times: TimeOption[] = [];\r\n\r\n for (let hour = 0; hour < 24; hour++) {\r\n for (let minute = 0; minute < 60; minute += 15) {\r\n\r\n const hour12 = hour % 12 === 0 ? 12 : hour % 12;\r\n const ampm = hour < 12 ? 'am' : 'pm';\r\n \r\n times.push({\r\n value: `${hour},${minute}`,\r\n label: `${hour12}:${minute.toString().padStart(2, '0')}${ampm}`\r\n });\r\n\r\n }\r\n }\r\n\r\n return times;\r\n}","import {\r\n Component,\r\n forwardRef\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\nimport { generateTimeOptions } from '../../../helpers/dateTime.helpers';\r\n\r\n@Component({\r\n selector: 'app-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateTimePickerComponent implements ControlValueAccessor {\r\n\r\n date: Date | null = null;\r\n timeValue: string | null = null;\r\n disabled = false; \r\n\r\n readonly timeDropdwons = generateTimeOptions();\r\n readonly DEFAULT_TIME = '0,0'; // 12:00 AM\r\n\r\n private onChange = (_: Date | null) => {};\r\n private onTouched = () => {};\r\n\r\n writeValue(value: Date | null): void {\r\n if (!value) {\r\n this.date = null;\r\n this.timeValue = null;\r\n return;\r\n }\r\n\r\n const inputDate = value instanceof Date ? value : new Date(value);\r\n\r\n // ********** FIX FOR COREUI DATE PICKER (LOCAL TIME REPRESENTATION) **********\r\n // Get Y, M, D from the UTC value to ensure the correct day is selected, \r\n // then create a new Date object for the start of that day in the LOCAL time zone.\r\n const year = inputDate.getUTCFullYear();\r\n const month = inputDate.getUTCMonth();\r\n const day = inputDate.getUTCDate();\r\n \r\n // this.date must be a NEW Date reference for the picker to recognize the change\r\n this.date = new Date(year, month, day); \r\n // *****************************************************************************\r\n\r\n // FIX for Time (Using UTC getters and normalization)\r\n const h = inputDate.getUTCHours();\r\n let m = inputDate.getUTCMinutes();\r\n \r\n m = Math.round(m / 15) * 15;\r\n if (m === 60) { m = 0; }\r\n\r\n this.timeValue = `${h},${m}`;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onDateChange(date: Date | null) {\r\n if (!date) return;\r\n\r\n this.date = date;\r\n\r\n if (!this.timeValue) {\r\n this.timeValue = this.DEFAULT_TIME;\r\n }\r\n\r\n this.emitValue();\r\n }\r\n\r\n onTimeChange(value: string) {\r\n this.timeValue = value;\r\n this.emitValue();\r\n }\r\n\r\n private emitValue() {\r\n if (!this.date || !this.timeValue) {\r\n this.onChange(null);\r\n return;\r\n }\r\n\r\n const [h, m] = this.timeValue.split(',').map(Number);\r\n \r\n // Create a new Date object based on the selected date (which is a local midnight)\r\n // The key here is to use the UTC setters to apply the time portion \r\n // so the final output is a UTC timestamp as expected by the parent form.\r\n const combined = new Date(this.date);\r\n combined.setUTCHours(h, m, 0, 0);\r\n\r\n this.onChange(combined);\r\n this.onTouched();\r\n }\r\n}","<div class=\"row g-3 align-items-end\">\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <c-date-picker\r\n [date]=\"date\" [disabled]=\"disabled\"\r\n (valueChange)=\"onDateChange($event)\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n [value]=\"date\"\r\n [calendarDate]=\"date\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <select\r\n cSelect\r\n class=\"form-select\"\r\n [value]=\"timeValue\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onTimeChange($any($event.target).value)\">\r\n\r\n <option\r\n *ngIf=\"!date\"\r\n value=\"\">\r\n Select time\r\n </option>\r\n\r\n <option\r\n *ngFor=\"let time of timeDropdwons\"\r\n [value]=\"time.value\">\r\n {{ time.label }}\r\n </option>\r\n\r\n </select>\r\n </div>\r\n\r\n</div>","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormFieldType, IFieldConfig, IFormConfig, IFormSubmissionEmit, IFormValidations } from './multi-form.interface';\r\nimport Swal from 'sweetalert2';\r\nimport { ColorsCodes } from '../../constants/color.constants';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-multi-form',\r\n templateUrl: './multi-form.component.html',\r\n styleUrl: './multi-form.component.scss',\r\n standalone: false\r\n})\r\nexport class MultiFormComponent implements OnInit, OnChanges {\r\n private readonly formBuilder = inject(FormBuilder);\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() config!: IFormConfig;\r\n @Input() showUnsavedFlags: boolean;\r\n @Input() currentTableGridsSelectedIndex!: number;\r\n @Input() formId: string;\r\n\r\n @Output() fieldAction = new EventEmitter<{ action: string; field: IFieldConfig; value?: any }>();\r\n @Output() formSavedUnsavedListen: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectionChangeEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public multiForm: FormGroup;\r\n public isFormSubmitted: boolean;\r\n private initialFormValues: any;\r\n\r\n public isFormSaved: boolean = false;\r\n public isFormSavedModalActive: boolean = false;\r\n private isSelectionChange: boolean = false;\r\n inputType = {\r\n colorSelect: 'color-select'\r\n };\r\n public colorCodes$ = ColorsCodes;\r\n public FormFieldType = FormFieldType;\r\n\r\n constructor() {\r\n this.multiForm = this.formBuilder.group({});\r\n this.isFormSubmitted = false;\r\n this.showUnsavedFlags = false;\r\n this.formId = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildFormControls();\r\n this.saveInitialFormValues();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config'] && !changes['config'].isFirstChange()) {\r\n if (this.showUnsavedFlags) {\r\n if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Do you want to save the changes?',\r\n showDenyButton: true,\r\n confirmButtonText: 'Save',\r\n denyButtonText: `Don't save`\r\n }).then((result: any) => {\r\n if (result.isConfirmed) {\r\n this.proceedToSaveUnsavedForm();\r\n } else if (result.isDenied) {\r\n this.proceedWithoutSavingForm();\r\n }\r\n });\r\n return;\r\n }\r\n this.updateFormControls();\r\n } else {\r\n this.updateFormControls();\r\n }\r\n }\r\n }\r\n\r\n private buildFormControls(): void {\r\n if (this.config?.rows?.length) {\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const validators = this.getValidators(field.validations);\r\n if (field.type === FormFieldType.Checkbox) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: this.getTruthyOrFalsy(field.value) || false, disabled: field.validations?.readonly || false }, validators)\r\n );\r\n } else if (field.type === FormFieldType.Date) {\r\n // If field value is \"\", dont set the default advance date\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '') : '',\r\n disabled: field.validations?.readonly || false\r\n },\r\n validators\r\n )\r\n );\r\n } else {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: field?.value || '', disabled: field.validations?.readonly || false }, validators)\r\n );\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /** Reload the field action */\r\n onClickFieldAction(action: any, field: IFieldConfig) {\r\n this.fieldAction.emit({ action: 'reload', field });\r\n }\r\n\r\n private updateFormControls(): void {\r\n if (!this.config?.rows?.length) return;\r\n\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n const isReadOnly = !!field.validations?.readonly;\r\n const validators = this.getValidators(field.validations);\r\n let control = this.multiForm.get(field.controlName);\r\n\r\n // If control does not exist, add it as enabled\r\n if (!control) {\r\n let initialValue: any = '';\r\n if (field.type === FormFieldType.Checkbox) {\r\n initialValue = this.getTruthyOrFalsy(field.value) || false;\r\n } else if (field.type === FormFieldType.Date) {\r\n initialValue = field?.value ? new Date(field.value) : this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '');\r\n } else {\r\n initialValue = field.value || '';\r\n }\r\n control = this.formBuilder.control(initialValue, { validators, nonNullable: true });\r\n this.multiForm.addControl(field.controlName, control);\r\n }\r\n\r\n // Always enable before setting value\r\n control.enable({ emitEvent: false });\r\n\r\n // Set value\r\n if (field.type === FormFieldType.Checkbox) {\r\n control.setValue(this.getTruthyOrFalsy(field.value) || false, { emitEvent: false });\r\n } else if (field.type === FormFieldType.Date) {\r\n control.setValue(field?.value ? new Date(field.value) : '', { emitEvent: false });\r\n } else {\r\n control.setValue(field.value || '', { emitEvent: false });\r\n }\r\n\r\n // Disable if readonly\r\n if (isReadOnly) {\r\n control.disable({ emitEvent: false });\r\n }\r\n });\r\n });\r\n this.saveInitialFormValues();\r\n this.isFormSaved = false;\r\n this.multiForm.markAsPristine();\r\n }\r\n\r\n public getTruthyOrFalsy(value: any) {\r\n return value === '1' ? true : false;\r\n }\r\n\r\n private getValidators(validations?: IFormValidations) {\r\n const validators: any = [];\r\n\r\n if (validations) {\r\n if (validations.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (validations.minLength) {\r\n validators.push(Validators.minLength(validations.minLength));\r\n }\r\n if (validations.maxLength) {\r\n validators.push(Validators.maxLength(validations.maxLength));\r\n }\r\n if (validations.pattern) {\r\n validators.push(Validators.pattern(validations.pattern));\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n /** Get the form values */\r\n public getFormValues(): IFormSubmissionEmit {\r\n this.isFormSubmitted = true;\r\n this.isFormSaved = true;\r\n const formSubmissionEmit = { isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls };\r\n return formSubmissionEmit;\r\n }\r\n\r\n /** Reset the form */\r\n public resetForm(): void {\r\n this.multiForm.reset();\r\n this.isFormSubmitted = false;\r\n }\r\n\r\n /**Set Value to form */\r\n public setValue(control: string, value: any): void {\r\n this.multiForm.controls[control].setValue(value);\r\n }\r\n\r\n /**Get Value from form */\r\n public getValue(control: string): any {\r\n return this.multiForm.controls[control].value;\r\n }\r\n\r\n /**Get Form Control */\r\n public getFormControl(control: string): any {\r\n return this.multiForm.controls[control];\r\n }\r\n\r\n private hasUnsavedChanges(): boolean {\r\n return JSON.stringify(this.multiForm.getRawValue()) !== JSON.stringify(this.initialFormValues);\r\n }\r\n\r\n private saveInitialFormValues(): void {\r\n this.initialFormValues = this.multiForm.getRawValue();\r\n }\r\n\r\n public proceedToSaveUnsavedForm(): void {\r\n this.formSavedUnsavedListen.emit({ isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls });\r\n }\r\n\r\n public proceedWithoutSavingForm(): void {\r\n this.formSavedUnsavedListen.emit(null);\r\n this.updateFormControls();\r\n }\r\n\r\n public onValueChange(event: any, control: string): void {\r\n this.selectionChangeEvent.emit({ control, value: event });\r\n this.isSelectionChange = true;\r\n }\r\n\r\n public onDateValueChange(value: any, control: string): void {\r\n const stopControl: IFieldConfig = this.findStopControl();\r\n if (stopControl) {\r\n if (control === '@start' && value && stopControl?.validations?.defaultAdvance) {\r\n const startDate = new Date(value);\r\n if (this.multiForm.contains('@stop')) {\r\n this.multiForm.controls['@stop'].setValue(this.setDefaultAdvanceDate(startDate, stopControl?.validations?.defaultAdvance));\r\n }\r\n }\r\n }\r\n }\r\n\r\n public onEditionChange(event: any): void {\r\n const controlNameWithAt = '@edname';\r\n const controlNameWithoutAt = 'edname';\r\n\r\n if (this.multiForm.contains(controlNameWithAt)) {\r\n this.multiForm.controls[controlNameWithAt].setValue(event);\r\n } else if (this.multiForm.contains(controlNameWithoutAt)) {\r\n this.multiForm.controls[controlNameWithoutAt].setValue(event);\r\n } else {\r\n this.multiForm.addControl(controlNameWithAt, this.formBuilder.control(event));\r\n }\r\n }\r\n\r\n public handleSearch(field: IFieldConfig, keyword: any) {\r\n let param = { keyword, userid: 'luke' };\r\n const fieldConfig = field.config;\r\n this.jsonrpcService.postJsonRpcRequest(fieldConfig.method, param).subscribe((response: any) => {\r\n response.result = response.result || [];\r\n });\r\n }\r\n\r\n public setDefaultAdvanceDate(currentDate: Date, defaultAdvance: string): any {\r\n if (defaultAdvance === 'weekly') {\r\n return this.advanceDate(currentDate, 6);\r\n } else if (defaultAdvance === 'monthly') {\r\n const month = currentDate.getMonth();\r\n const year = currentDate.getFullYear();\r\n\r\n // Get days in current month\r\n const daysInMonth = new Date(year, month + 1, 0).getDate();\r\n\r\n let daysToAdd = 30;\r\n if (daysInMonth === 31) {\r\n daysToAdd = 30;\r\n } else if (daysInMonth === 30) {\r\n daysToAdd = 29;\r\n } else if (month === 1) {\r\n const isLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n daysToAdd = isLeap ? 28 : 27;\r\n }\r\n\r\n return this.advanceDate(currentDate, daysToAdd);\r\n } else if (defaultAdvance === 'quarterly') {\r\n return this.advanceDate(currentDate, 90);\r\n } else if (defaultAdvance === 'halfyearly') {\r\n return this.advanceDate(currentDate, 180);\r\n } else if (defaultAdvance === 'yearly') {\r\n return this.advanceDate(currentDate, 365);\r\n } else {\r\n return this.advanceDate(currentDate, 0);\r\n }\r\n }\r\n\r\n private advanceDate(currentDate: Date, advancedBy: number): any {\r\n if (advancedBy || advancedBy === 0) {\r\n const advanceDate = new Date(currentDate.setDate(currentDate.getDate() + advancedBy));\r\n return advanceDate;\r\n }\r\n }\r\n\r\n private findStopControl(): any {\r\n for (const row of this.config.rows) {\r\n for (const field of row) {\r\n if (field.controlName === '@stop') {\r\n return field;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || false\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Autosuggest Inputs -->\r\n @else if (field.type === FormFieldType.Autosuggest) {\r\n <ng-container>\r\n <input\r\n cAutocomplete\r\n [options]=\"field.options\"\r\n [searchNoResultsLabel]=\"'No results found'\"\r\n cleaner highlightOptionsOnSearch indicator\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Type and search...'\"\r\n (inputChange)=\"handleSearch(field, $event)\"\r\n [search]=\"{ external: true, global: true }\"\r\n />\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n }\r\n\r\n @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"field.validations?.precision || 2\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AutocompleteModule, ButtonModule, DatePickerModule, FormCheckInputDirective, FormModule, InputGroupComponent, ModalModule, MultiSelectModule, TooltipModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\n\r\nimport { MultiFormComponent } from './multi-form.component';\r\nimport { EditionListGroupedComponent } from '../../components/edition-list-grouped/edition-list-grouped.component';\r\n\r\nimport { CircularFocusDirective } from '../../directives/circular-focus.directive';\r\nimport { DecimalInputDirective } from '../../directives/decimal-input.directive';\r\nimport { ShowTooltipIfTruncatedDirective } from '../../directives/show-tooltip-if-truncated.directive';\r\nimport { MultiSelectStylerDirective } from '../../directives/multi-select-styler.directive';\r\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\r\n\r\n@NgModule({\r\n declarations: [MultiFormComponent, DateTimePickerComponent],\r\n imports: [\r\n CircularFocusDirective,\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MultiSelectModule,\r\n FormModule,\r\n IconModule,\r\n InputGroupComponent,\r\n DatePickerModule,\r\n DecimalInputDirective,\r\n ShowTooltipIfTruncatedDirective,\r\n ModalModule,\r\n TooltipModule,\r\n ButtonModule,\r\n BsDatepickerModule,\r\n AutocompleteModule,\r\n FormCheckInputDirective,\r\n EditionListGroupedComponent,\r\n MultiSelectStylerDirective\r\n ],\r\n exports: [MultiFormComponent, DateTimePickerComponent]\r\n})\r\nexport class MultiFormModule {}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, effect, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { IEmmitedResponse } from './generic-filter-modal.interface';\r\nimport { MultiFormComponent } from '../../modules/multi-form/multi-form.component';\r\nimport { IFormConfig } from '../../modules/multi-form/multi-form.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MultiFormModule } from '../../modules/multi-form/multi-form.module';\r\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-generic-filter-model',\r\n templateUrl: './generic-filter-model.component.html',\r\n styleUrl: './generic-filter-model.component.scss',\r\n standalone: true,\r\n imports: [CommonModule, MultiFormModule, ModalModule, ButtonModule]\r\n})\r\nexport class GenericFilterModelComponent implements OnInit {\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() filterFormConfiguration: IFormConfig | any = [];\r\n @Input() tableName: string = '';\r\n @Output() sendFilteredData: EventEmitter<IEmmitedResponse>;\r\n\r\n @ViewChild('filterFormComponent') filterFormComponent!: MultiFormComponent;\r\n\r\n public isFilterModalActive: boolean;\r\n\r\n constructor() {\r\n this.isFilterModalActive = false;\r\n this.sendFilteredData = new EventEmitter<IEmmitedResponse>();\r\n\r\n effect(() => {\r\n this.isFilterModalActive = this.configurationService.openFilterModal();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.tableName) throw new Error('Table name is required to filter data.');\r\n }\r\n\r\n public handleFilterModal(event: boolean): void {\r\n this.isFilterModalActive = event;\r\n this.configurationService.openFilterModal.set(this.isFilterModalActive);\r\n }\r\n\r\n public resetFilter(): void {\r\n this.filterFormComponent.resetForm();\r\n this.sendFilteredData.emit({ isReset: true, returnedData: [] });\r\n }\r\n\r\n public async onFilter(): Promise<void> {\r\n const formValues = this.filterAttributesWithValues(this.filterFormComponent.getFormValues().values);\r\n if (Object.keys(formValues).length > 0) {\r\n const tableData = await this.jsonrpcService.getTableList(this.tableName, formValues);\r\n this.sendFilteredData.emit({ isReset: false, returnedData: tableData.result || [] });\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n }\r\n\r\n private filterAttributesWithValues(object: any): any {\r\n return Object.keys(object)\r\n .filter(key => object[key] !== null && object[key] !== '' && object[key] !== undefined)\r\n .reduce((result: any, key: any) => {\r\n result[key] = object[key];\r\n return result;\r\n }, {});\r\n }\r\n\r\n public close(): void {\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n}\r\n","<!-- Filter Modal -->\n<c-modal id=\"generic-filter-modal\" [visible]=\"isFilterModalActive\" (visibleChange)=\"handleFilterModal($event)\" size=\"md\" alignment=\"center\" scrollable>\n <c-modal-header>\n <h5 cModalTitle>Advanced Search</h5>\n <!-- <button (click)=\"commonService.openFilterModal.set(false)\" cButtonClose></button> -->\n </c-modal-header>\n <c-modal-body>\n @if (filterFormConfiguration) {\n <app-multi-form [config]=\"filterFormConfiguration\" #filterFormComponent></app-multi-form>\n }\n </c-modal-body>\n <c-modal-footer>\n <button (click)=\"close()\" cButton color=\"secondary\">Close</button>\n <button (click)=\"resetFilter()\" cButton color=\"primary\">Reset</button>\n <button cButton color=\"primary\" (click)=\"onFilter()\">Search</button>\n </c-modal-footer>\n</c-modal>\n","import { IFilterComp } from '@ag-grid-community/core';\nimport { ICellRendererComp, ICellEditorComp } from '@ag-grid-community/core';\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { CustomSelectFilterComponent } from '../components/ag-grid-renderer/custom-select-filter.component';\n\ntype AgGridComponentClass = { new (): IFilterComp } | { new (): ICellRendererComp } | { new (): IFilterAngularComp } | { new (): ICellEditorComp };\n\nexport enum FilterType {\n SELECT = 'SELECT_FILTER',\n TEXT = 'TEXT_FILTER',\n NUMBER = 'NUMBER_FILTER',\n DATE = 'DATE_FILTER'\n}\n\n// Built-in AG Grid filters\nexport const AgGridFilters: Partial<Record<FilterType, string>> = {\n [FilterType.TEXT]: 'agTextColumnFilter',\n [FilterType.NUMBER]: 'agNumberColumnFilter',\n [FilterType.DATE]: 'agDateColumnFilter'\n};\n\n// Custom filters that can be used in the table grid\nexport const TABLE_GRID_FILTER_COMPONENTS: Partial<Record<FilterType, AgGridComponentClass>> = {\n [FilterType.SELECT]: CustomSelectFilterComponent\n // Add others as needed\n};\n","export const MessageLabel = {\n RowPerPage: 'Rows per page'\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n CellValueChangedEvent,\r\n ColumnMovedEvent,\r\n ColumnResizedEvent,\r\n FirstDataRenderedEvent,\r\n GridOptions,\r\n GridReadyEvent,\r\n IColumnLimit,\r\n PaginationChangedEvent,\r\n SortChangedEvent\r\n} from '@ag-grid-community/core';\r\nimport { IColumnStateEvent, IFilterChangeEvent, ITableGridConfiguration, ITableGridState } from './table-grid';\r\nimport { Component, effect, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { auditTime, takeUntil } from 'rxjs/operators';\r\nimport { FilterType, AgGridFilters, TABLE_GRID_FILTER_COMPONENTS } from '../../enums/grid.enum';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { MessageLabel } from '../../constants/app.constanta';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-table-grid',\r\n templateUrl: './table-grid.component.html',\r\n styleUrl: './table-grid.component.scss',\r\n standalone: false\r\n})\r\nexport class TableGridComponent implements OnInit, OnChanges, OnDestroy {\r\n private readonly formBuilder = inject(FormBuilder);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n private readonly configurationService = inject(ConfigurationServiceLib);\r\n\r\n @Input() tableConfiguration!: ITableGridConfiguration;\r\n @Input() columnToolVisible: boolean;\r\n @Input() initialPageNumber: number;\r\n\r\n @Output() tableGridReady: EventEmitter<GridReadyEvent>;\r\n @Output() tableRowSelection: EventEmitter<any>;\r\n @Output() tableRowSelectionChanged: EventEmitter<any>;\r\n @Output() tableRowClicked: EventEmitter<{ event: any; row: any }>;\r\n @Output() columnStateEvent: EventEmitter<IColumnStateEvent>;\r\n @Output() pageChange: EventEmitter<PaginationChangedEvent>;\r\n @Output() filterChanged: EventEmitter<IFilterChangeEvent>;\r\n @Output() cellValueChanged: EventEmitter<CellValueChangedEvent>;\r\n\r\n private gridAPI: GridReadyEvent | undefined;\r\n public columnsListselectionForm!: FormGroup;\r\n public tableGridState: ITableGridState[];\r\n\r\n autoSizeTrigger$ = new Subject<void>();\r\n subscribeUntil$ = new Subject<void>();\r\n\r\n autoSizeStrategy = {\r\n type: 'fitCellContents',\r\n defaultMinWidth: 100\r\n };\r\n\r\n /**\r\n * Resize all columns to fit the grid width while maintaining their minimum widths.\r\n * This method collects the current widths of all columns and applies them as limits\r\n */\r\n sizeToFit() {\r\n const columnLimits: IColumnLimit[] = [];\r\n this.gridAPI?.api.getColumns()!.forEach(column => {\r\n column.getMaxWidth();\r\n columnLimits.push({\r\n key: column.getColId(),\r\n minWidth: column.getActualWidth()\r\n });\r\n });\r\n this.gridAPI?.api.sizeColumnsToFit({\r\n columnLimits: columnLimits\r\n });\r\n }\r\n\r\n /**\r\n * Automatically resize all columns to fit their content.\r\n * This method collects the current widths of all columns and applies them as limits\r\n * to ensure that the columns are resized based on their content.\r\n */\r\n autoSizeAll(skipHeader: boolean = false): void {\r\n this.gridAPI?.api.autoSizeAllColumns(skipHeader);\r\n this.sizeToFit();\r\n }\r\n\r\n gridOptions: GridOptions = {\r\n onRowDataUpdated: () => {\r\n // Trigger auto-size when row data is updated\r\n // this.autoSizeTrigger$.next();\r\n },\r\n localeText: {\r\n pageSizeSelectorLabel: `${MessageLabel.RowPerPage}:`,\r\n ariaPageSizeSelectorLabel: `${MessageLabel.RowPerPage}`\r\n }\r\n };\r\n\r\n constructor() {\r\n this.tableGridReady = new EventEmitter<GridReadyEvent>();\r\n this.tableRowSelection = new EventEmitter<any>();\r\n this.tableRowSelectionChanged = new EventEmitter<any>();\r\n this.tableRowClicked = new EventEmitter<{ event: any; row: any }>();\r\n this.columnStateEvent = new EventEmitter<IColumnStateEvent>();\r\n this.pageChange = new EventEmitter<PaginationChangedEvent>();\r\n this.filterChanged = new EventEmitter<IFilterChangeEvent>();\r\n this.cellValueChanged = new EventEmitter<CellValueChangedEvent>();\r\n\r\n this.columnToolVisible = false;\r\n this.initialPageNumber = 0;\r\n\r\n this.tableGridState = [];\r\n\r\n effect(() => {\r\n if (this.configurationService.utilsAppliedTheme() === 'dark') {\r\n this.tableConfiguration.tableTheme = `${this.tableConfiguration.themeClass}-dark`;\r\n } else {\r\n this.tableConfiguration.tableTheme = this.tableConfiguration.themeClass;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['tableConfiguration'] && !changes['tableConfiguration'].firstChange) {\r\n if (this.gridAPI) {\r\n this.gridAPI.api.refreshClientSideRowModel();\r\n }\r\n setTimeout(() => {\r\n this.createColumnState();\r\n this.createColumnsListForm();\r\n }, 0);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createColumnsListForm();\r\n this.gridOptions = {\r\n ...this.gridOptions,\r\n ...this.tableConfiguration.defaultGridOptions\r\n };\r\n\r\n this.autoSizeTrigger$.pipe(auditTime(500), takeUntil(this.subscribeUntil$)).subscribe(() => {\r\n this.autoSizeAll();\r\n });\r\n }\r\n\r\n /** Send event to parent component when Ag Grid is stabilized*/\r\n public onGridReady(event: GridReadyEvent) {\r\n this.gridAPI = event;\r\n this.createColumnState();\r\n this.tableGridReady.emit(event);\r\n }\r\n\r\n /** Send event to parent component when a row is selected */\r\n public onRowSelected(event: any): void {\r\n const selectedRows = this.gridAPI?.api.getSelectedRows();\r\n this.tableRowSelection.emit({ event: event, rows: selectedRows });\r\n }\r\n\r\n /** Send event to parent component when a row is clicked */\r\n onRowClicked(event: any): void {\r\n this.tableRowClicked.emit({ event: event, row: event.data });\r\n }\r\n\r\n /** Send on checkbox selection event event to parent component when row selection is changed */\r\n public onRowSelectionChanged(event: any): void {\r\n if (this.gridAPI) {\r\n const selectedNodes = this.gridAPI.api.getSelectedNodes();\r\n const selectedData = selectedNodes.map(node => node.data);\r\n this.tableRowSelectionChanged.emit(selectedData);\r\n }\r\n }\r\n\r\n /** Create column state on initialization of table grid */\r\n private createColumnState(): void {\r\n if (this.gridAPI) {\r\n if (this.tableConfiguration.initialState) {\r\n this.tableGridState = this.tableConfiguration.initialState;\r\n const initialState = this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: item.width,\r\n sort: item.sort || null\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: initialState,\r\n defaultState: { sort: null }\r\n });\r\n } else {\r\n const state = this.gridAPI.api.getColumnState();\r\n state.forEach((columnState: any) => {\r\n this.tableGridState.push({\r\n key: columnState.colId,\r\n visible: columnState.hide ? !columnState.hide : true,\r\n width: columnState.width,\r\n sort: columnState.sort\r\n });\r\n });\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Set visibility of columns and send the event and column form to parent component along with last checkbox event data */\r\n public getCheckboxStatus(event: Event, field: string): void {\r\n const isChecked = (event.target as HTMLInputElement).checked;\r\n const columnIndex = this.tableGridState.findIndex(item => item.key === field);\r\n\r\n if (columnIndex > -1) {\r\n this.tableGridState[columnIndex] = {\r\n ...this.tableGridState[columnIndex],\r\n visible: isChecked\r\n };\r\n }\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.setColumnsVisible([field], isChecked);\r\n this.gridAPI.api.autoSizeColumns([field]);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n\r\n /** Create form group for column tools menu */\r\n private createColumnsListForm(): void {\r\n if (!this.columnToolVisible) return;\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const controls: any = {};\r\n if (this.tableConfiguration?.columnDefs) {\r\n this.tableConfiguration.columnDefs.forEach(col => {\r\n col.filter = this.getAppliedFilter(col.filter);\r\n });\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n controls[col.key] = [col.visible === null || col.visible === undefined ? true : col.visible];\r\n });\r\n }\r\n\r\n if (Object.entries(controls).length > 0) {\r\n this.columnsListselectionForm = this.formBuilder.group(controls);\r\n }\r\n }\r\n\r\n private getAppliedFilter(filterType: FilterType | undefined): any {\r\n if (!filterType) return undefined;\r\n\r\n // Ensure it's a valid FilterType\r\n if (Object.values(FilterType).includes(filterType)) {\r\n // Check if a custom component exists for this filterType\r\n const customComponent = TABLE_GRID_FILTER_COMPONENTS[filterType as FilterType];\r\n return customComponent ?? AgGridFilters[filterType];\r\n }\r\n\r\n return filterType;\r\n }\r\n\r\n /** On resizing columns, update the tableGridState */\r\n public onColumnResized(event: ColumnResizedEvent | any): void {\r\n if (event.finished && event.column) {\r\n const columnId = event.column!.colId;\r\n const columnWidth = event.column!.actualWidth;\r\n const columnVisible = event.column!.visible;\r\n\r\n const column = this.tableGridState.find(item => item.key === columnId);\r\n\r\n if (column) {\r\n column.width = columnWidth;\r\n column.visible = columnVisible;\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** On moving columns, update the tableGridState */\r\n public onColumnMoved(event: ColumnMovedEvent): void {\r\n if (event.finished) {\r\n const { column, toIndex } = event;\r\n\r\n if (!column || toIndex === undefined || toIndex === null) {\r\n return;\r\n }\r\n\r\n const movedColId = column.getColId();\r\n const currentIndex = this.tableGridState.findIndex((col: any) => col.key === movedColId);\r\n\r\n if (currentIndex > -1) {\r\n const [movedColumn] = this.tableGridState.splice(currentIndex, 1);\r\n this.tableGridState.splice(toIndex, 0, movedColumn);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n public onSortChanged(event: SortChangedEvent): void {\r\n if (event.columns) {\r\n event.columns.forEach((col: any) => {\r\n const column = this.tableGridState.find(item => item.key === col.colId);\r\n if (column) {\r\n column.sort = col.sort || null;\r\n }\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Emit event when pagination is changed */\r\n public onPaginationChanged(event: PaginationChangedEvent): void {\r\n this.pageChange.emit(event);\r\n }\r\n\r\n /** Emit event when first data is rendered */\r\n public onFirstDataRendered(event: FirstDataRenderedEvent) {\r\n event.api.paginationGoToPage(this.initialPageNumber);\r\n }\r\n\r\n /** Emit event to update table preference */\r\n public updatetablePreference(): void {\r\n this.columnStateEvent.emit({\r\n currentEvent: {},\r\n currentTableState: this.tableGridState\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreference(): void {\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n maint_action: 'D'\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response.result) {\r\n this.tableGridState = [];\r\n if (response.result.fields_to_display && response.result.fields_to_display.length > 0) {\r\n this.tableConfiguration.initialState = response.result.fields_to_display;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = col.visible === null || col.visible === undefined ? true : col.visible;\r\n col.width = 200;\r\n col.sort = null;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key].setValue(true);\r\n });\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.applyColumnState({\r\n state: this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: 200,\r\n sort: item.sort || null,\r\n flex: 1\r\n })),\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n } else {\r\n this.toastrService.success('Failed to reset table preference');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreferenceV2(): void {\r\n if (!this.tableConfiguration?.tablename) {\r\n throw new Error('Table name is required for column tools list');\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n delete col.width;\r\n delete col.sort;\r\n });\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n display_options: this.tableGridState\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response?.result) {\r\n this.handleSuccessfulReset(response.result);\r\n } else {\r\n this.toastrService.error('Failed to reset table preference');\r\n }\r\n },\r\n error: () => {\r\n this.toastrService.error('An error occurred while resetting table preference');\r\n }\r\n });\r\n }\r\n\r\n /** Handle successful reset of table preference */\r\n private handleSuccessfulReset(result: any): void {\r\n this.tableGridState = [];\r\n\r\n const fieldsToDisplay = result.fields_to_display || [];\r\n if (fieldsToDisplay.length > 0) {\r\n this.tableConfiguration.initialState = fieldsToDisplay;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key]?.setValue(false);\r\n });\r\n\r\n this.updateGridState();\r\n }\r\n\r\n /** Update grid state based on the current tableGridState */\r\n private updateGridState(): void {\r\n if (this.gridAPI) {\r\n const columnState: any = this.tableGridState.map(item => ({\r\n colId: item.key,\r\n hide: true,\r\n width: 200,\r\n sort: item.sort || null,\r\n flex: 1\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: columnState,\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /* Emit event when filter is changed */\r\n public onFilterChanged(params: any) {\r\n const filterModel = params.api.getFilterModel();\r\n const filteredRows: any[] = [];\r\n params.api.forEachNodeAfterFilter((node: any) => {\r\n if (node.data) {\r\n filteredRows.push(node.data);\r\n }\r\n });\r\n const filterChangedParams: IFilterChangeEvent = {\r\n rows: filteredRows,\r\n column: params.columns,\r\n filters: filterModel\r\n };\r\n this.filterChanged.emit(filterChangedParams);\r\n }\r\n\r\n /** Emit event when a cell value is changed */\r\n public onCellValueChanged(event: CellValueChangedEvent): void {\r\n this.cellValueChanged.emit(event);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribeUntil$.next();\r\n this.subscribeUntil$.complete();\r\n }\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\" \r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n","import { TableGridComponent } from './table-grid.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry, _EditCoreModule } from '@ag-grid-community/core';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nimport { ButtonModule, FormModule, OffcanvasModule, TooltipModule } from '@coreui/angular-pro';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconModule } from '@coreui/icons-angular';\n\nModuleRegistry.registerModules([ClientSideRowModelModule, CsvExportModule, _EditCoreModule]);\n\n@NgModule({\n declarations: [TableGridComponent],\n imports: [CommonModule, AgGridModule, FormModule, ReactiveFormsModule, ButtonModule, OffcanvasModule, TooltipModule, IconModule],\n exports: [TableGridComponent]\n})\nexport class TableGridModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n AgPublicEventType,\r\n CellValueChangedEvent,\r\n ColDef,\r\n GridApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n ICellRendererParams,\r\n PaginationChangedEvent,\r\n SelectionColumnDef\r\n} from '@ag-grid-community/core';\r\nimport { inject } from '@angular/core';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\n\r\nexport class ITableGridConfiguration {\r\n initialState!: ITableGridState[];\r\n columnDefs: ColDef[] = [];\r\n rows: any;\r\n defaultColDef: ColDef;\r\n rowSelectionOption: IRowSelectionOptions;\r\n pagination: ITableGridPagination;\r\n themeClass: string;\r\n tableTheme: string;\r\n tablename: string;\r\n selectionColumnDef?: SelectionColumnDef;\r\n tablePreference: { disableRemovecolumn?: boolean; disableResetPreference?: boolean; disableUpdatePreference?: boolean };\r\n detailCellRendererParams?: any;\r\n detailCellRenderer?: any;\r\n frameworkComponents?: { [key: string]: any };\r\n tooltipShowDelay: number;\r\n masterDetail: boolean;\r\n tableClasses: string[] = ['default-ag-layout'];\r\n defaultGridOptions?: GridOptions;\r\n\r\n constructor() {\r\n this.pagination = new ITableGridPagination();\r\n this.tablename = '';\r\n this.tableTheme = '';\r\n this.defaultColDef = {\r\n filter: 'agTextColumnFilter',\r\n floatingFilter: false\r\n };\r\n\r\n this.themeClass = 'ag-theme-quartz';\r\n this.rowSelectionOption = {\r\n enableClickSelection: true,\r\n mode: 'singleRow',\r\n checkboxes: false\r\n };\r\n this.masterDetail = false;\r\n this.tablePreference = { disableRemovecolumn: false, disableResetPreference: false, disableUpdatePreference: false };\r\n this.tooltipShowDelay = 100;\r\n }\r\n}\r\n\r\nexport class ITableGridPagination {\r\n private configurationService = inject(ConfigurationServiceLib);\r\n\r\n enabled: boolean = true;\r\n paginationPageSize = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSize || 20;\r\n paginationPageSizeSelector = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSizeSelector || false;\r\n}\r\n\r\nexport interface IRowSelectionOptions {\r\n enableClickSelection?: boolean | 'enableDeselection' | 'enableSelection';\r\n mode: string;\r\n checkboxes: boolean;\r\n headerCheckbox?: boolean;\r\n}\r\n\r\nexport interface IColumnStateEvent {\r\n currentEvent: ITableGridState;\r\n currentTableState: ITableGridState[];\r\n}\r\n\r\nexport interface ITableGridState {\r\n key?: string;\r\n width?: number;\r\n visible?: boolean;\r\n sort?: 'asc' | 'desc' | null;\r\n label?: string;\r\n}\r\n\r\nexport interface IFilterChangeEvent {\r\n rows: any[];\r\n column: any[];\r\n filters: any;\r\n}\r\n\r\nexport interface IGridReadyEvent extends GridReadyEvent {\r\n api: IGridApi;\r\n}\r\n\r\nexport interface ICellValueChangedEvent extends CellValueChangedEvent {\r\n data: CellValueChangedEvent['data'];\r\n colDef: CellValueChangedEvent['colDef'];\r\n}\r\nexport interface IColDef extends ColDef {}\r\n\r\nexport interface IPaginationChangedEvent extends PaginationChangedEvent {\r\n newPage: PaginationChangedEvent['newPage'];\r\n animate?: PaginationChangedEvent['animate'];\r\n keepRenderedRows?: PaginationChangedEvent['keepRenderedRows'];\r\n newData?: PaginationChangedEvent['newData'];\r\n newPageSize?: PaginationChangedEvent['newPageSize'];\r\n api: PaginationChangedEvent['api'];\r\n}\r\n\r\nexport interface PongrassICellRendererAngularComp extends ICellRendererAngularComp {}\r\n\r\nexport interface PongrassICellRendererParams extends ICellRendererParams {\r\n data: ICellRendererParams['data'];\r\n colDef: ICellRendererParams['colDef'];\r\n}\r\n\r\nexport interface IGridApi extends GridApi<any> {}\r\n\r\nexport type IAgPublicEventType = AgPublicEventType;\r\n\r\nexport type MaintAction = 'N' | 'D' | 'U';\r\n","import { Directive, ElementRef, Input, OnInit, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[wsBackgroundImage]',\r\n standalone: true\r\n})\r\nexport class BackgroundImageDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n\r\n /**\r\n * Flag to enable random background selection\r\n * Defaults to false\r\n */\r\n @Input() random: boolean = false;\r\n\r\n /**\r\n * Path to the background image (string) or images (string[])\r\n */\r\n @Input() backgroundImage: string | string[] = '';\r\n\r\n ngOnInit(): void {\r\n this.setBackgroundImage();\r\n }\r\n\r\n private setBackgroundImage(): void {\r\n let imageUrl = '';\r\n\r\n if (typeof this.backgroundImage === 'string') {\r\n // Single image path\r\n imageUrl = this.backgroundImage;\r\n } else if (Array.isArray(this.backgroundImage) && this.backgroundImage.length > 0) {\r\n // Array of image paths\r\n if (this.random) {\r\n // Select a random image from the array\r\n const randomIndex = Math.floor(Math.random() * this.backgroundImage.length);\r\n imageUrl = this.backgroundImage[randomIndex];\r\n } else {\r\n // Use the first image in the array\r\n imageUrl = this.backgroundImage[0];\r\n }\r\n }\r\n\r\n if (imageUrl) {\r\n this.el.nativeElement.style.backgroundImage = `url('${imageUrl}')`;\r\n this.el.nativeElement.style.backgroundSize = 'cover';\r\n this.el.nativeElement.style.backgroundPosition = 'center';\r\n this.el.nativeElement.style.backgroundRepeat = 'no-repeat';\r\n this.el.nativeElement.style.minHeight = '100vh';\r\n this.el.nativeElement.style.width = '100%';\r\n this.el.nativeElement.style.margin = '0';\r\n this.el.nativeElement.style.display = 'block';\r\n }\r\n }\r\n}\r\n","export enum ExportToExcelNames {\r\n ProdStatusReport = 'Prod_Status_Report',\r\n NationalROPReport = 'National ROP Report',\r\n NationalInserts = 'National Inserts',\r\n ApprovedAdList = 'Approved Ad List',\r\n PageStatusReport = 'Page Status Report',\r\n}\r\n\r\nexport enum ExcelType {\r\n excelBlobType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n xlsxBookType = 'xlsx'\r\n}\r\n\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\nimport { IExcelHeaders, IExportCellConfig, IPrintHeaders } from '../interface/exports.interface';\r\nimport { convertIsoToFormat } from '../helpers/dateTime.helpers';\r\nimport { ExcelType } from '../enums/export.enum';\r\n\r\nimport * as ExcelJS from 'exceljs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n private readonly configurationServiceLib = inject(ConfigurationServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n\r\n readonly allConfigValues: IConfig = this.configurationServiceLib.allConfigValues() || ({} as unknown as IConfig);\r\n\r\n constructor() {}\r\n\r\n public formatToTwoDecimalPlaces(value: any, decimalPlaces?: number): string {\r\n if (value !== undefined && value !== null) {\r\n const numValue = Number(value);\r\n\r\n if (!isNaN(numValue)) {\r\n return numValue.toFixed(decimalPlaces || 2);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n\r\n // Truncate values to precision\r\n public truncateFloat(value: number | string, precision: number): string {\r\n const num = Number(value);\r\n if (isNaN(num)) return '';\r\n const factor = Math.pow(10, precision);\r\n const truncated = Math.trunc(num * factor) / factor;\r\n return truncated.toFixed(precision);\r\n }\r\n\r\n /**\r\n *\r\n * @param excelData Table data to export\r\n * @param columns Array of Column keys and label '{ keys: '_key', label: '_label' }'\r\n * @param excelFileName Name of the excel file 'Example FileName_export_1740978888354'\r\n * @param headers (Optional) Adds Extra headings on top of the columns\r\n * @param showTotalValueCols (Optional) Calculates and shows the total of all the values of that column\r\n * @param columnAlignment (Optional) Aligns the cell value (currently only to right side)\r\n */\r\n public async exportAsExcelFile(\r\n excelData: any[],\r\n columns: any[],\r\n excelFileName: string,\r\n headers?: IExcelHeaders[],\r\n showTotalValueCols?: string[],\r\n columnAlignment?: IExportCellConfig\r\n ): Promise<void> {\r\n // this.loaderService.show();\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(excelFileName);\r\n\r\n // const currentRow = 1;\r\n // if (headers) {\r\n // headers.forEach((header: IExcelHeaders) => {\r\n // worksheet.mergeCells(`A${currentRow}:K${currentRow}`);\r\n // worksheet.getCell(`A${currentRow}`).value = header.heading;\r\n // worksheet.getCell(`A${currentRow}`).alignment = { horizontal: header.alignment, wrapText: true };\r\n // worksheet.getCell(`A${currentRow}`).font = { bold: header.bold, size: header.fontSize || 14 };\r\n // currentRow++;\r\n // });\r\n // worksheet.addRow({});\r\n // }\r\n\r\n const columnLabels = columns.map(col => col.label);\r\n const columnKeys = columns.map(col => col.key);\r\n const headerRow = worksheet.addRow(columnLabels);\r\n headerRow.eachCell(cell => {\r\n cell.font = { bold: true, size: 12 };\r\n });\r\n\r\n // Prepare worksheet data and add it to the worksheet\r\n const worksheetData = this.prepareWorksheetData(excelData, columns);\r\n worksheetData.forEach(dataRow => {\r\n const rowInstance = worksheet.addRow(Object.values(dataRow));\r\n\r\n // Align specific columns based on columnAlignment parameter\r\n if (columnAlignment?.align === 'end' && columnAlignment.headers.length > 0) {\r\n rowInstance.eachCell((cell, colNumber) => {\r\n const columnKey = columnKeys[colNumber - 1]; // Match index with headers\r\n if (columnAlignment.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Calculate total for specified columns\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow: any = {};\r\n\r\n columns.forEach(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n totalRow[col.label] = excelData.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n } else {\r\n totalRow[col.label] = ''; // Empty for non-total columns\r\n }\r\n });\r\n\r\n const totalRowInstance = worksheet.addRow(Object.values(totalRow));\r\n totalRowInstance.eachCell((cell, colNumber) => {\r\n cell.font = { bold: true, color: { argb: '000' }, size: 12 };\r\n cell.alignment = { horizontal: 'left' };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // Apply right alignment for specified total columns\r\n const columnKey = columnKeys[colNumber - 1];\r\n if (columnAlignment?.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n\r\n // Set column widths\r\n columns.forEach((col, index) => {\r\n worksheet.getColumn(index + 1).width = 15;\r\n });\r\n\r\n // Generate Excel file and save\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.saveAsExcelFile(buffer, excelFileName);\r\n }\r\n\r\n /** Prepare Data for Excel Export*/\r\n private prepareWorksheetData(data: any[], columns: any[]): any[] {\r\n const rows = data.map(row => {\r\n const formattedRow: any = {};\r\n columns.forEach(col => {\r\n formattedRow[col.label] = row[col.key];\r\n });\r\n return formattedRow;\r\n });\r\n\r\n return [...rows];\r\n }\r\n\r\n /** Save Buffer File */\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: ExcelType.excelBlobType });\r\n const url = window.URL.createObjectURL(data);\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n const unique = Math.random().toString(36).substring(2, 8).toUpperCase();\r\n link.download = `${fileName}_${convertIsoToFormat(new Date())}_${unique}.${ExcelType.xlsxBookType}`;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n setTimeout(() => {\r\n // this.loaderService.hide();\r\n this.toastrService.success(`${link.download} file downloaded successfully`, 'Success');\r\n }, 500);\r\n }\r\n\r\n /** Print Page Status Report */\r\n public printHTMLTable(columns: any[], data: any[], headers?: IExcelHeaders[], showTotalValueCols?: string[]): void {\r\n let headersAndHeadings = '';\r\n if (headers) {\r\n headersAndHeadings = this.generateHeaderHTML(headers);\r\n }\r\n\r\n const headerHTML = `<tr>${columns\r\n .map(col => `<th style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\">${col.label}</th>`)\r\n .join('')}</tr>`;\r\n\r\n const bodyHTML = data\r\n .map((row, index) => {\r\n const rowStyle = index % 2 === 0 ? 'background-color: #f9f9f9;' : 'background-color: #e9ecef;';\r\n const rowHTML = columns\r\n .map(col => {\r\n const cellBackground = col.key === 'page_status_name' ? `background-color: ${row?.html_color || ''};` : '';\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; ${cellBackground}}\">${row[col.key] !== null ? row[col.key] : ''}</td>`;\r\n })\r\n .join('');\r\n\r\n return `<tr style=\"${rowStyle}\">${rowHTML}</tr>`;\r\n })\r\n .join('');\r\n\r\n // Generate Footer Row with Totals\r\n let footerHTML = '';\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow = columns\r\n .map(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n const total = data.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow; font-weight: bold;\">${this.formatToTwoDecimalPlaces(total)}</td>`;\r\n }\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow;\"></td>`; // Empty but styled\r\n })\r\n .join('');\r\n\r\n footerHTML = `<tr>${totalRow}</tr>`;\r\n }\r\n\r\n const tableHTML = `\r\n <table style=\"width: 100%; border-collapse: collapse;\">\r\n <thead>${headerHTML}</thead>\r\n <tbody>${bodyHTML}</tbody>\r\n <tfoot>${footerHTML}</tfoot>\r\n </table>\r\n `;\r\n\r\n // Create a new window for printing\r\n const printWindow = window.open('', '', 'width=800, height=600');\r\n if (printWindow) {\r\n printWindow.document.write(`\r\n <html>\r\n <head>\r\n <style>\r\n @media print {\r\n @page {\r\n size: landscape; \r\n }\r\n body {\r\n -webkit-print-color-adjust: exact; \r\n print-color-adjust: exact; \r\n }\r\n table { width: 100%; border-collapse: collapse; }\r\n th, td { border: 1px solid black; padding: 10px; }\r\n th { background-color: #f2f2f2; }\r\n p { margin: 0; padding: 0; }\r\n }\r\n </style>\r\n </head>\r\n <body>\r\n <title>Report</title>\r\n ${headersAndHeadings} \r\n ${tableHTML}\r\n <script type=\"text/javascript\">\r\n window.onload = function() {\r\n window.print();\r\n window.onafterprint = window.close();\r\n };\r\n </script>\r\n </body>\r\n </html>\r\n `);\r\n printWindow.document.close();\r\n printWindow.focus();\r\n }\r\n }\r\n\r\n // Function to generate header HTML from headers array\r\n private generateHeaderHTML(headers: IPrintHeaders[]): string {\r\n return headers\r\n .map(header => {\r\n let style = '';\r\n if (header.alignment) {\r\n style += `text-align: ${header.alignment};`;\r\n }\r\n if (header.bold) {\r\n style += 'font-weight: bold;';\r\n }\r\n if (header.fontSize) {\r\n style += `font-size: ${header.fontSize}px;`;\r\n }\r\n if (header.marginBottom) {\r\n style += `margin-bottom: ${header.marginBottom}px;`;\r\n }\r\n if (header.marginTop) {\r\n style += `margin-bottom: ${header.marginTop}px;`;\r\n }\r\n\r\n return `<p style=\"${style}\">${header.heading}</p>`;\r\n })\r\n .join('');\r\n }\r\n}\r\n","export interface ILoginConfig {\r\n /** Heading of Application (e.g., Maintainance Portal) */\r\n title: string;\r\n\r\n /** URL of the logo shown on login screen */\r\n logoUrl: string;\r\n\r\n /** Placeholder text for username/email input */\r\n usernamePlaceholder: string;\r\n\r\n /** Placeholder text for password input */\r\n passwordPlaceholder: string;\r\n\r\n /** Text displayed on the login submit button */\r\n submitButtonText: string;\r\n\r\n /** Background configuration */\r\n backgroundDirective: {\r\n /** Array of background image URLs */\r\n backgroundImages: string[];\r\n\r\n /** If true → pick a random image on each load */\r\n random: boolean;\r\n };\r\n\r\n //** Version info */\r\n version?: {\r\n currentVersion: string;\r\n brandName: string;\r\n copyrightYear: string;\r\n };\r\n}\r\n\r\nexport enum ILOGIN_ACTION {\r\n SUBMIT = 'submit',\r\n BACK_TO_LOGIN = 'backToLogin'\r\n}\r\n","import { Component, output, input, signal, inject, Renderer2, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { ILOGIN_ACTION, ILoginConfig } from '../../interface/login.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-login',\r\n templateUrl: './login.component.html',\r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginComponent implements OnInit {\r\n readonly configService = inject(ConfigurationServiceLib);\r\n private readonly rendererService = inject(Renderer2);\r\n private readonly formBuilder = inject(FormBuilder);\r\n\r\n public config = input.required<ILoginConfig>({});\r\n public showInactivityLogoutMessage = input<boolean>(false);\r\n\r\n public action = output<{ type: string; data?: any }>();\r\n\r\n public isFormSubmitted = signal<boolean>(false);\r\n\r\n loginForm!: FormGroup;\r\n\r\n public contactSupportValue: string;\r\n public forgetPasswordValue: string;\r\n\r\n constructor() {\r\n this.contactSupportValue = '';\r\n this.forgetPasswordValue = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.config()) {\r\n throw new Error('Config is required');\r\n } else if (!this.config().title || !this.config().logoUrl) {\r\n throw new Error('Title and logo URL are required on the LoginForm Card');\r\n }\r\n\r\n this.initializeForm();\r\n this.initializeInitialValues();\r\n\r\n const lastUserName = localStorage.getItem(BrowserConstantsEnum.lastUserName);\r\n if (lastUserName) {\r\n this.loginForm.controls['uid'].setValue(lastUserName);\r\n }\r\n }\r\n\r\n private initializeForm(): void {\r\n this.loginForm = this.formBuilder.group({\r\n uid: ['', [Validators.required]],\r\n pwd: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.isFormSubmitted.set(true);\r\n this.action.emit({ type: ILOGIN_ACTION.SUBMIT, data: this.loginForm });\r\n }\r\n\r\n private initializeInitialValues(): void {\r\n if (this.configService.allConfigValues() && this.configService.allConfigValues()?.contactSupport) {\r\n if (this.configService.allConfigValues()?.contactSupport?.startsWith('http')) {\r\n this.contactSupportValue = this.configService.allConfigValues()?.contactSupport || '';\r\n this.rendererService.setAttribute(document.getElementById('contact-us'), 'target', '_blank');\r\n } else {\r\n this.contactSupportValue = `mailto:${this.configService.allConfigValues()?.contactSupport}`;\r\n }\r\n }\r\n\r\n // if (this.configService.allConfigValues()?.forgetPassword.startsWith('http')) {\r\n // this.forgetPasswordValue = this.configService.allConfigValues()?.forgetPassword;\r\n // this.rendererService.setAttribute(document.getElementById('forget-password'), 'target', '_blank');\r\n // } else {\r\n // this.forgetPasswordValue = `mailto:${this.configService.allConfigValues()?.forgetPassword}`;\r\n // }\r\n }\r\n}\r\n","<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4 \">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input \r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n <!-- <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none primary-text\" id=\"forget-password\">Forget Password?</a>\r\n <a class=\"text-decoration-none text-white\" id=\"forget-password\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n </span>\r\n </div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AlertModule, ButtonModule, FormModule, FormPasswordDirective, SpinnerModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { LoginComponent } from './login.component';\r\nimport { BackgroundImageDirective } from '../../directives/background-image.directive';\r\n\r\n@NgModule({\r\n declarations: [LoginComponent],\r\n imports: [\r\n CommonModule,\r\n BackgroundImageDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FormModule,\r\n ButtonModule,\r\n SpinnerModule,\r\n FormPasswordDirective,\r\n IconModule,\r\n AlertModule\r\n ],\r\n exports: [LoginComponent]\r\n})\r\nexport class LoginModule {}\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/services/configuration.service';\r\n\r\nexport * from './lib/components/ag-grid-renderer/color-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/custom-select-filter.component';\r\nexport * from './lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component';\r\nexport * from './lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component';\r\nexport * from './lib/components/edition-list-grouped/edition-list-grouped.component';\r\nexport * from './lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component';\r\nexport * from './lib/components/page-status-cell-renderer/page-status-cell-renderer.component';\r\nexport * from './lib/components/status-select-cell-renderer/status-select-cell-renderer.component';\r\n\r\nexport * from './lib/components/generic-filter-model/generic-filter-modal.interface';\r\nexport * from './lib/components/generic-filter-model/generic-filter-model.component';\r\n\r\nexport * from './lib/modules/multi-form/multi-form.module';\r\nexport * from './lib/modules/multi-form/multi-form.interface';\r\nexport * from './lib/modules/multi-form/multi-form.component';\r\nexport * from './lib/modules/multi-form/date-time-picker/date-time-picker.component';\r\n\r\nexport * from './lib/modules/table-grid/table-grid.module';\r\nexport * from './lib/modules/table-grid/table-grid.component';\r\nexport * from './lib/modules/table-grid/table-grid';\r\n\r\n// Export directives\r\nexport * from './lib/directives/circular-focus.directive';\r\nexport * from './lib/directives/decimal-input.directive';\r\nexport * from './lib/directives/multi-select-styler.directive';\r\nexport * from './lib/directives/show-tooltip-if-truncated.directive';\r\nexport * from './lib/directives/background-image.directive';\r\n\r\n// Export utility functions\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/jsonrpc.service';\r\nexport * from './lib/enums/export.enum';\r\nexport * from './lib/interface/exports.interface';\r\nexport * from './lib/helpers/dateTime.helpers';\r\n\r\nexport * from './lib/modules/login/login.module';\r\nexport * from './lib/modules/login/login.component';\r\nexport * from './lib/interface/login.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CircularFocusDirective","i6.DecimalInputDirective","i7.ShowTooltipIfTruncatedDirective","i9.EditionListGroupedComponent","i10.MultiSelectStylerDirective","i11.DateTimePickerComponent","i4","i2.BackgroundImageDirective"],"mappings":"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"}
|