@churchillliving/se-ui-toolkit 6.53.430 → 6.53.432
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/bundles/churchillliving-se-ui-toolkit.umd.js +5 -4
- package/bundles/churchillliving-se-ui-toolkit.umd.js.map +1 -1
- package/churchillliving-se-ui-toolkit.metadata.json +1 -1
- package/esm2015/lib/components/base/form/form.component.js +2 -2
- package/esm2015/lib/components/base/grid/grid.component.js +4 -3
- package/esm2015/lib/components/shared/global-filters/global-filters.component.js +2 -2
- package/fesm2015/churchillliving-se-ui-toolkit.js +5 -4
- package/fesm2015/churchillliving-se-ui-toolkit.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"churchillliving-se-ui-toolkit.js","sources":["../../../projects/se-ui-toolkit/src/lib/models/grid.model.ts","../../../projects/se-ui-toolkit/src/lib/components/base/alert-pop-up/alert-pop-up.component.ts","../../../projects/se-ui-toolkit/src/lib/services/alert.service.ts","../../../projects/se-ui-toolkit/src/lib/services/request.service.ts","../../../projects/se-ui-toolkit/src/lib/services/dropdown.service.ts","../../../projects/se-ui-toolkit/src/lib/services/hyperlink.service.ts","../../../projects/se-ui-toolkit/src/lib/models/form.model.ts","../../../projects/se-ui-toolkit/src/lib/services/utilities.service.ts","../../../projects/se-ui-toolkit/src/lib/services/grid.service.ts","../../../projects/se-ui-toolkit/src/lib/models/user-info.model.ts","../../../projects/se-ui-toolkit/src/lib/services/authentication.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/iframe/iframe.component.ts","../../../projects/se-ui-toolkit/src/lib/services/page-logger.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid/grid.component.ts","../../../projects/se-ui-toolkit/src/lib/services/form.service.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/notes/notes.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/form/form.component.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/dropdown/dropdown.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/image-gallery/image-gallery.component.ts","../../../projects/se-ui-toolkit/src/lib/directive/add-row.directive.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid/grid.constant.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/filter-menu/filter-menu.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/menu-bar/menu-bar.component.ts","../../../projects/se-ui-toolkit/src/lib/models/sidebar.model.ts","../../../projects/se-ui-toolkit/src/lib/services/sidebar.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/sidebar/sidebar.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/header/header.component.ts","../../../projects/se-ui-toolkit/src/lib/services/loader.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/loader/loader.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/file-upload/file-upload.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/caption/caption.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/cards/card.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/file/file.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/report/report-Filter/report-filter/report-filter.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/global-filters/global-filters.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/filter/filter.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid-row-actions/grid-row-actions.component.ts","../../../projects/se-ui-toolkit/src/lib/se-ui-toolkit.module.ts","../../../projects/se-ui-toolkit/src/lib/models/header.model.ts","../../../projects/se-ui-toolkit/src/lib/services/header.service.ts","../../../projects/se-ui-toolkit/src/lib/services/card.service.ts","../../../projects/se-ui-toolkit/src/public-api.ts","../../../projects/se-ui-toolkit/src/churchillliving-se-ui-toolkit.ts"],"sourcesContent":["import { IPermission } from './user-info.model';\nimport { Type } from '@angular/core';\nimport { IAutoCompleteSave, IDropDownRequest, IReportBtn } from './form.model';\n\nexport interface IGridColumn {\n component?: Type<any>;\n allowSearch?: boolean;\n allowEdit?: boolean;\n allowAutoCompleteSave?:boolean;\n uniqueKey?: IAutoCompleteSave;\n target?: EGridlink;\n header?: string;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n type?: EGridColumnType;\n hidden?: boolean;\n hyperlink?: string;\n sorting?: boolean;\n filtering?: boolean;\n filter?: IGridFilterType;\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\n data?: any;\n style?: string;\n permissions?: IPermission[];\n value?: any;\n filterValue?: any;\n tableAlias?: string;\n linkId?: string;\n params?: {[key: string]: any};\n minutesInterval?: number;\n showTime?: boolean;\n timeOnly?: boolean;\n displayText?: string;\n disabled?: boolean;\n editable?: boolean;\n editLink?: boolean;\n allowSave?: boolean;\n validations?: IGridValidation[];\n errorMessage?: string;\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n}\n\nexport interface IGridLookupControl {\n component?: any;\n data?: IGridLookupData;\n}\n\nexport declare type IGridLookupData = {\n header?: string;\n height?: string;\n width?: string;\n labelProp?: string;\n valueProp?: string;\n data?: {[key: string]: any};\n}\n\nexport enum EGridAggregate {\n SUM = 'sum',\n AVERAGE = 'average',\n COUNT = 'count',\n}\n\nexport interface IGridAggregate {\n type: EGridAggregate;\n caption?: string;\n displayField?: string;\n aggrValue?:string;\n format?: IAggregateFormat;\n}\nexport interface IAggregateFormat {\n type: EAggregateFormat;\n digitsInfo?: number;\n}\n\nexport enum EAggregateFormat {\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n}\n\nexport enum EGridlink {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport interface IGridDataExport {\n rows: any[];\n headings: string[];\n}\n\nexport interface ISelectItem {\n label: string;\n value: string;\n}\n\nexport interface IGridFilterType {\n type?: GridFilterControlType;\n data?: ISelectItem[];\n tableAlias?: string;\n showFilter?: boolean;\n}\n\nexport interface IAlertPopUpBtn {\n buttonLabel: string;\n buttonClass?: string;\n}\n\nexport interface IAlertPopUp {\n message: string;\n header?: string;\n buttons: IAlertPopUpBtn[];\n height?: string;\n width?: string;\n icon?: string;\n}\n\nexport enum EGridFormatter {\n BOOLEAN = 'boolean',\n CHAR = 'char',\n NUMERIC = 'numeric'\n}\n\nexport enum GridFilterControlType {\n INPUT = 'input',\n DROPDOWN = 'dropdown',\n CHECKBOX = 'checkbox',\n CALENDAR = 'calendar',\n CALENDAR_RANGE = 'calender_range',\n MULTISELECT = 'multi-select',\n NUMERICINPUT = 'numeric_input',\n NUMERIC_RANGE = 'numeric_range',\n DATE_RANGE = 'date_range',\n LOOKUP_INPUT = 'lookup_input',\n SPACER = 'spacer'\n}\n\nexport enum EDayRange {\n DAY = 'Day',\n WEEK = 'Week',\n MONTH = 'Month',\n YEAR = 'Year',\n}\n\nexport enum EGridSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum EGridColumnType {\n LINK = 'link',\n IFRAME = 'iframe',\n DIALOG = 'dialog',\n TEXT = 'text',\n NUMERIC = 'numeric',\n DATE = 'date',\n BOOLEAN = 'boolean',\n DROPDOWN = 'dropdown',\n LOOKUP_INPUT = 'lookup_input',\n ADD_BUTTON = 'add_button',\n AUTOCOMPLETE = 'AutoComplete',\n MULTISELECT = 'multi-select',\n REPORT = 'report',\n}\n\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\n displayText?: string;\n onFocusOut?: (value: any) => any;\n onReturn?: (value: any) => any;\n optionLabel?: string;\n optionValue?: string;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n format?: string | EGridFormatType | EGlobalFilterFormatType;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n color?: string;\n validations?: IGridValidation[];\n errorMessage?:string;\n requiredField?: boolean;\n}\n\nexport interface ILookupControlFilter {\n component?: any;\n data?: ILookupFilterData;\n}\n\nexport declare type ILookupFilterData = {\n header: string;\n width?: string;\n labelProp?: string;\n valueProp?: string;\n data: any;\n} & {\n [key: string]: any;\n};\n\nexport interface IPrimeNgSort {\n multisortmeta: { field: string; order: number };\n}\n\nexport interface IPrimeNgFilterItem {\n matchMode: string;\n operator: string;\n value: string | number | boolean | Date | any;\n}\n\nexport interface IPrimeNgFilter {\n filteredValue: any[];\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\n}\n\nexport interface IGridFilter {\n field?: string;\n matchMode?: string;\n operator?: string;\n filtering?: boolean;\n value?: any;\n valueTwo?: any;\n tableAlias?: string;\n column?: string;\n}\n\nexport interface IGridSort {\n field?: string;\n direction?: EGridSortDirection;\n priority: number;\n tableAlias?: string;\n}\n\nexport class IGridServerSideEvent {\n filters?: IGridFilter[];\n sorts?: IGridSort[];\n page?: number;\n pageSize?: number;\n}\n\nexport interface IGridPaginationEvent {\n first: number;\n rows: number;\n}\n\nexport interface IGridColumnAction {\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\n tooltip: string;\n width?: string;\n confirmDialog?: boolean;\n onClick: (row: any) => void;\n}\n\nexport interface IGridRowAction {\n title: string;\n class?: string;\n onClick: (row: any) => void;\n}\n\nexport enum EGridFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'm d, yy',\n PERIOD = 'mm/y',\n LONGDATE = 'mm/dd/yy, h:mm a',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport enum EGlobalFilterFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n}\n\nexport enum EGridSelectionType {\n SINGLE = 'single',\n MULTIPLE = 'multiple',\n}\n\nexport type MenuFilterControls =\n | GridFilterControlType.INPUT\n | GridFilterControlType.NUMERICINPUT\n | GridFilterControlType.CALENDAR;\n\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\n\nexport interface addColumn {\n target?: EGridlink;\n allowEdit?: boolean;\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n showOption?: boolean;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n showTime?: boolean;\n timeOnly?: boolean;\n hidden?: boolean;\n hyperlink?: string;\n allowSearch?: boolean;\n allowAutoCompleteSave?:boolean;\n uniqueKey?:IAutoCompleteSave;\n minutesInterval?: number;\n sorting?: boolean;\n filter?: IGridFilterType;\n tableAlias?: string;\n linkId?: string;\n editable?: boolean;\n editLink?: boolean;\n params?: {[key: string]: any};\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n filterValue?: any;\n}\n\nexport interface IDialogColumn {\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n hidden?: boolean;\n sorting?: boolean;\n aggregate?: IGridAggregate[];\n filter?: IGridFilterType;\n tableAlias?: string;\n filterValue?: any,\n editable?: boolean;\n showOption?: boolean;\n editLink?: boolean;\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (res?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n}\n\nexport interface addFilterColumn {\n control?: GridFilterControlType;\n field?: string;\n header?: string;\n filter?: GridFilterControlType;\n filtering?: boolean;\n hidden?: boolean;\n style?: string;\n showTime?: boolean;\n timeOnly?: boolean;\n format?: string;\n tableAlias?: string;\n validations?: IGridValidation[] | any;\n errorMessage?: string;\n isvalid?: boolean;\n disabled?: boolean;\n allowSave?: boolean;\n permissions?: IPermission[];\n component?: Type<any>;\n type?: EGridColumnType;\n data?: any;\n}\n\nexport interface IGridValidation {\n type: EGridValidator | EFilterValidator;\n expression?: any;\n}\nexport enum EFilterValidator {\n REQUIRED = \"required\",\n}\nexport interface IGridReportBtn extends IReportBtn{\n type?: EGridColumnType.REPORT;\n}\nexport interface IGridRowProp{\n propName: EGridRowPropName | string; //IGridColumnPropName;\n propValue: any;\n field?: string;\n action?: EGridRowAction;\n}\n\nexport enum EGridRowAction {\n DELETEBTN = 'delete_btn',\n EDITBTN = 'edit_btn',\n}\n\nexport enum EGridRowPropName {\n DISPLAYTEXT = 'displayText',\n DISABLED = 'disabled',\n DISPLAYFIELD = 'displayField',\n HIDDEN = 'hidden',\n ICON = 'icon',\n LOOKUPCONTROL='lookupControl', \n HIDEFIELDVALUE='hideFieldValue'\n}\n\nexport enum EGridValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n MAXOPTIONS='maxOptions'\n}\n\nexport interface addGlobalFilter {\n field?: string;\n validations?: IGridValidation[];\n displayText?: string;\n type?: GridFilterControlType;\n data?: any;\n value?: any;\n valueTwo?: any;\n matchMode?: string;\n operator?: string;\n tableAlias?: string;\n optionLabel?: string;\n optionValue?: string;\n format?: EGlobalFilterFormatType | IGridFormat | any;\n column?: string;\n onFocusOut?: (value: any) => any;\n onReturn?: (value: any) => any;\n filtering?: boolean;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n labelText?: string;\n prefix?: boolean;\n hidden?: boolean;\n color?: string;\n}\n\nexport interface IGridFormat {\n type: EGridFormatType;\n formatParams?:\n | IGridFormatParam\n | IGridDateFormatParam\n | IGridNumberFormatParam\n | IGridCurrencyFormatParam\n | IGridallowcalculateFormatParam;\n\n formatter?: (value: any) => any;\n}\n\nexport interface IGridFormatParam {\n locale?: string;\n}\n\nexport interface IGridDateFormatParam extends IGridFormatParam {\n format?: string;\n}\n\nexport interface IGridNumberFormatParam extends IGridFormatParam {\n digitsInfo?: string;\n}\n\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\n currency: string;\n}\n\nexport interface IGridProp {\n name: string;\n value: any;\n field?: string;\n}\n\nexport interface IGridPropFilter {\n field: string;\n value: any;\n}\n\nexport interface IGridFilterInfo {\n [key:string]:any;\n}\n","import { Component, OnInit, Optional } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'lib-alert-pop-up',\n templateUrl: './alert-pop-up.component.html',\n styleUrls: ['./alert-pop-up.component.css']\n})\nexport class AlertPopUpComponent implements OnInit {\n buttons: any[]\n message: string;\n icon: string;\n\n constructor(@Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef,) { }\n\n ngOnInit(): void {\n if(this.config?.data){\n this.message = this.config.data?.alertPopInfo?.message;\n this.buttons = this.config.data?.alertPopInfo?.buttons;\n this.icon = this.config.data?.alertPopInfo?.icon;\n }\n }\n\n clickedBtn(button: any){\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\n if(closeBtn){\n closeBtn?.click();\n this.ref.close(button);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ConfirmationService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\nimport { IAlertPopUp, } from '../models/grid.model';\n\n@Injectable()\nexport class AlertService {\n \n constructor(\n private toastr: ToastrService,\n public dialogService: DialogService,\n private confirmationService: ConfirmationService\n ) { }\n\n success(message: string, time: number = 5000) {\n this.toastr.success(message, \"\", { closeButton: true, timeOut: time });\n }\n\n info(message: string, time: number = 5000) {\n this.toastr.info(message, \"\", { closeButton: true, timeOut: time });\n }\n\n warning(message: string, time: number = 5000) {\n this.toastr.warning(message, \"\", { closeButton: true, timeOut: time });\n }\n\n error(error: string, time: number = 5000, message?: string,) {\n this.toastr.error(error, message, { closeButton: true, timeOut: time });\n }\n\n apiError(error: any, time: number = 5000) {\n if (typeof error === 'string' || typeof error.error === 'string') {\n typeof error.error === 'string' ? this.error(error.error, time) : this.error(error, time);\n } else if (error && error.error && error.error.errorDetails) {\n const [responseError] = error.error.errorDetails;\n this.error(responseError.errorMessage, time);\n }\n else if(error && error.headers && error.status !== 401) {\n this.error('something went wrong during api request', time);\n }\n }\n\n \n confirm({\n message = \"Are you sure that you want to proceed?\",\n header = \"Confirmation\",\n icon = \"pi pi-exclamation-triangle\",\n key= '',\n } = {}): Promise<any> {\n return new Promise(resolve => {\n this.confirmationService.confirm({\n message,\n header,\n icon,\n key,\n accept: () => {\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\n this.confirmationService.close();\n },\n reject: () => {\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\n this.confirmationService.close();\n }\n })\n });\n }\n\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\n return new Promise(resolve => {\n const ref = this.dialogService.open(AlertPopUpComponent, {\n styleClass: 'alertPopUp',\n header: header,\n width: width,\n height: height,\n data: { alertPopInfo: {message, icon, buttons}},\n });\n ref.onClose.subscribe((res) => {\n if (res) {\n resolve(res.buttonLabel);\n }\n });\n });\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Response } from '../models/response.model';\nimport { Environment } from '../models/response.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestService {\n\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \n }\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob', observe: 'response' });\n }\n\n get<T, K>(endpoint: string, data: K, baseUrl: string = this.env.baseUrl): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getRequest<T, K>(endpoint: string) {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\n }\n\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n getCurrentRoute(): any{\n let route = window.location.href;\n if(route && route.includes('/')){\n let currentRoute = route.split('/');\n route = currentRoute[currentRoute.length-1];\n const source = `?source=${route}`;\n return source;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\nimport { ISelectItem } from '../models/grid.model';\nimport { GridService } from './grid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DropdownService {\n constructor(\n private requestService: RequestService,\n ) {}\n\n /**\n * Function to set the values for dropdown\n * @param response array of data\n * @param valueProp property name for value\n * @param labelProp property name for label\n */\n\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\n let dropdownvalues: ISelectItem[] = [];\n return new Promise((resolve, reject) => {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\n if (response) {\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\n return resolve(dropdownvalues);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n })\n });\n }\n\n setDropDown(response: any, valueProp: string, labelProp: string) {\n if (valueProp) valueProp = valueProp.toLowerCase();\n if (labelProp) labelProp = labelProp.toLowerCase();\n let dropdownvalues: ISelectItem[] = [];\n if (response.records) {\n this.setDataFields(response.records).forEach((record: any) => {\n if (\n record.hasOwnProperty(valueProp && labelProp) &&\n record[valueProp] &&\n record[labelProp]\n ) {\n dropdownvalues.push({\n label: record[labelProp].toString().trim(),\n value: record[valueProp].toString().trim(),\n });\n }\n });\n }\n return dropdownvalues;\n }\n\n setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n data.push(result);\n });\n }\n return data;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { EGridColumnType } from '../models/grid.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { RequestService } from './request.service';\nimport { IDynamicForm } from '../models/form.model';\nimport { IDictionary } from '../models/common.model';\n@Injectable({\n providedIn: 'root',\n})\nexport class HyperlinkService {\n constructor(private requestService: RequestService) { }\n\n buildUrl(linkIds: any, params: { [key: string]: string }) {\n return new Promise((resolve, reject) => {\n if (Array.isArray(linkIds)) {\n this.requestService\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\n .subscribe(\n (res: any) => {\n if (res) {\n return resolve(res);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n } else {\n this.requestService\n .getOne<any, any>('/Link/ByLinkId', linkIds)\n .subscribe(\n (response) => {\n if (response) {\n return resolve(this.setUrl(params, response));\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n }\n });\n }\n\n setUrl(params: { [key: string]: string }, response: any) {\n let url: string = response.url;\n for (let paramKey in params) {\n const lowerKey = paramKey.toLowerCase();\n const paramValue = params[paramKey];\n if (\n url &&\n url.search &&\n url.search(lowerKey) > 0 &&\n paramValue &&\n paramValue.length > 0\n ) {\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\n }\n }\n return url;\n }\n\n async addHyperlinks(columns: any) {\n let linkIds: any[] = [];\n let params: any;\n if (columns && Array.isArray(columns)) {\n columns.forEach((column) => {\n if (\n (column.type === EGridColumnType.LINK ||\n column.type === EGridColumnType.IFRAME||\n column.type === EGridColumnType.LOOKUP_INPUT) &&\n column.linkId &&\n column.params\n ) {\n linkIds.push(column.linkId);\n params = column.params;\n }\n });\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n } else if (columns.linkId) {\n linkIds.push(columns.linkId);\n params = columns.params;\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n }\n }\n\n setLinkParamValues(\n { formSections }: IDynamicForm,\n field: string,\n params: any[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n const isLabelLink =\n formField.label && typeof formField.label === 'object';\n if (\n formField.field?.toLowerCase() === field?.toLowerCase() || \n (isLabelLink && formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && typeof formField.label === 'string' && formField.label?.toLowerCase() === field?.toLowerCase())\n ) {\n let newLink: string = isLabelLink\n ? formField.label?.labelControl?.orignalLink\n : formField.orignalLink ? formField.orignalLink : formField.hyperlink?.link;\n \n if (newLink && newLink.length > 0) {\n return params.map((paramObj: IDictionary): any => {\n if (\n (typeof paramObj.value === 'object' && paramObj.value) ||\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\n ) {\n // removing https:// or http:// from hyperlink param value\n if (\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \n (newLink.includes('https://') || newLink.includes('http://')) \n ) {\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\n }\n const paramName: string = paramObj.name.toLowerCase();\n const paramFormat: string = !paramObj.value\n ? '{{' + paramName + '}}'\n : paramName;\n \n if (newLink.localeCompare(paramFormat)) {\n let setLink =\n paramFormat !== '{{' + paramFormat + '}}'\n ? '{{' + paramFormat + '}}'\n : paramFormat;\n \n newLink = newLink.replace(\n new RegExp(setLink, 'ig'),\n (paramObj.value)?.trim()\n );\n // if (newLink && !newLink.startsWith('http'))\n // {\n // newLink = \"http://\" + newLink;\n // }\n }\n return isLabelLink\n ? (formField.label.labelControl.hyperlink.link = newLink)\n : (formField.hyperlink.link = newLink);\n }\n });\n }\n }\n });\n });\n }\n\n setSidebarLink(response: any, sidebar: ISidebar[]) {\n response.forEach((res: any) => {\n sidebar.forEach((item) => {\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\n item.onClick(res.url);\n }\n });\n });\n }\n\n}\n","import { Type } from '@angular/core';\nimport { IGridSort, ISelectItem } from './grid.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IDynamicForm {\n formSections?: IFormSection[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface ILabel {\n name: string;\n disabled?: boolean;\n labelControl?: IFormField;\n onReturn?: (value: any) => void;\n onClick?: () => void;\n}\n\nexport interface IDropDownRequest {\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters?: ISetFilter[]\n sorts?:IGridSort[] \n}\n\nexport interface IAutoCompleteSave {\n name:string,\n values:IAutoCompleteValueSave[],\n}\n\nexport interface IAutoCompleteValueSave{\n name:string,\n value?:any\n}\n\nexport interface ISetFilter {\n field?: string,\n value?: any,\n matchMode?: string,\n operator?: string,\n valueField?: string;\n}\n\nexport interface IFormSection {\n name?: string;\n fields: IFormField[];\n icon?: string;\n class?: string;\n links?: ILabel[];\n permissions?: IPermission[];\n hidden?: boolean;\n accordionDisabled?: boolean;\n showAccordion?: boolean;\n expanded?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n}\n\nexport interface IFormField {\n label?: string | ILabel;\n class?: string;\n card?: IDynamicCard;\n control?: EFormControl;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n value?: any | ILookupInputValue;\n data?: any[];\n validations?: IValidation[];\n errorMessage?: string;\n minutesInterval?: number;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n lookupControl?: ILookupControlField;\n tables?: string[];\n componentControl?: IFormComponentField;\n column?: number;\n row?: number;\n hyperlink?: IHyperlink;\n format?: IFormat;\n permissions?: IPermission[];\n hidden?: boolean;\n optionLabel?: string;\n optionValue?: string;\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?: any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n isvalid?: boolean;\n timeOnly?: boolean\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n requiredField?: boolean;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n isPassword?:boolean\n textType?:string;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n\n icon?: string;\n color?: string;\n uniqueKey?: string;\n azureContainer?: string;\n}\nexport interface IFormButton{\n icon?:string;\n label:string;\n hidden?:boolean;\n func:Function;\n disabled?:boolean;\n}\nexport interface IDynamicCard {\n id?: number;\n name?: string;\n data?: any[];\n orderByField?: string;\n formSections?: IFormSection[];\n onSort?: (value: any) => any;\n allowDelete?: boolean;\n allowDownload?: boolean;\n url?: string;\n caption?: string;\n width?: string;\n height?: string;\n allowEditableCaption?: boolean;\n onCaptionSave?: (value: any) => any;\n onDelete?: (value: any) => any;\n class?: string;\n cardInfo?: IViewCardProp;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\nexport interface IReportBtn{\n reportId: number;\n label?: string;\n control?: EFormControl.REPORT;\n params?: any[];\n showDialog?: boolean;\n}\n\nexport interface IListFilter {\n uniqueKey: string;\n filters?: ISetFilter[];\n sorts?: IGridSort[];\n}\n\nexport interface IFormComponentField {\n component: Type<any>;\n id?:string;\n data?: {\n [key: string]: any;\n };\n handlers?: {\n [key: string]: Function;\n };\n}\n\nexport interface ILookupInputValue {\n text: any;\n value: any;\n}\n\nexport interface ILookupControlField {\n component: any;\n data: ILookupFieldData;\n id?: string;\n}\n\nexport declare type ILookupFieldData = {\n header?: string;\n height?: string;\n width?: string;\n data?: {[key: string]: any};\n labelProp?: string;\n valueProp?: string;\n} \n\nexport interface IValidation {\n type: EValidator;\n expression?: any;\n}\n\nexport enum ESelectFileType {\n EXCEL = '.excel',\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\n DOCUMENT = '.document',\n PDF = '.pdf',\n MRT = '.mrt',\n}\n\nexport enum EValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport enum EFormControl {\n BUTTON = 'button',\n LABEL = 'label',\n INPUT = 'input',\n CHECKBOX = 'checkbox',\n DROPDOWN = 'dropdown',\n CALENDAR = 'calender',\n NUMERIC = 'number',\n MULTISELECT = 'multi-select',\n TEXTAREA = 'text-area',\n HYPERLINK = 'hyperlink',\n LOOKUP_INPUT = 'lookup_input',\n NOTE_FIELD = 'note_field',\n COMPONENT = 'component',\n PASSWORD = 'password',\n AUTOCOMPLETE = 'AutoComplete',\n SPACER = 'spacer',\n SECTION_HEADER = 'section_header',\n FILE_UPLOAD = 'file_upload',\n CARD = 'card',\n DISPLAY_FILE = 'display_file',\n ADD_BUTTON = 'add_button',\n BREAK_LINE = 'break_line',\n SWITCH = 'switch',\n REPORT = 'report'\n}\n\nexport enum EOperator {\n AND = 'and',\n OR = 'or',\n}\n\nexport enum EMatchMode {\n EQUALS = 'equals',\n STARTSWITH = 'startsWith',\n CONTAINS ='contains',\n IN = 'in',\n ENDSWITH = 'endsWith',\n NOTEQUALS = 'notEquals',\n ISNOT = 'isNot',\n DATEISNOT = 'dateIsNot',\n NOTCONTAINS ='notContains',\n LT = 'lt',\n BEFORE = 'before',\n DATEBEFORE = 'datebefore',\n LTE = 'lte',\n GT = 'gt',\n AFTER = 'after',\n DATEAFTER = 'dateAfter',\n GTE = 'gte',\n}\n\nexport interface IFormat {\n type: EFormatType;\n formatParams?:\n | IFormatParam\n | IDateFormatParam\n | INumberFormatParam\n | IallowCalculateFormatParam\n | ICurrencyFormatParam;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParam {\n locale?: string;\n}\n\nexport interface IDateFormatParam extends IFormatParam {\n format?: string;\n}\n\nexport interface IallowCalculateFormatParam extends IFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface INumberFormatParam extends IFormatParam {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParam extends INumberFormatParam {\n currency: string;\n}\n\nexport enum EFormatType {\n SMALLDATE = 'mm/d/y',\n SHORTDATE = 'mm/d/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n MONTHONLY = 'mm/yy',\n PERIOD = 'mm/y',\n BOOLEAN_YN = 'BOOLEAN_YN',\n CUSTOM = 'custom',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport interface IHyperlink {\n target?: EHyperlink;\n link?: string;\n linkId?: string;\n params?: any;\n width?:string;\n height?:string;\n component?: any;\n data?: ILookupFieldData;\n}\n\nexport enum EHyperlink {\n BLANK = '_blank',\n SELF = '_self',\n PARENT = '_parent',\n TOP = '_top',\n IFRAME = '_iframe',\n DIALOG = '_dialog'\n}\n\nexport interface AddFormField {\n control?: EFormControl;\n field?: string;\n class?: string;\n displayField?: string;\n showOption?: boolean;\n label?: string | ILabel;\n value?: string | any;\n format?: IFormat;\n permissions?: IPermission[];\n id?: string;\n hidden?: boolean;\n validations?: IValidation[] | any;\n hyperlink?: IHyperlink;\n lookupControl?: ILookupControlField;\n tables?: string[];\n minutesInterval?: number;\n disabled?: boolean | any;\n disabledText?: boolean;\n column?: number;\n row?: number;\n componentControl?: IFormComponentField;\n data?: ISelectItem[];\n optionLabel?: string;\n optionValue?: string;\n timeOnly?: boolean;\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?:any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n isPassword?:boolean\n textType?:string;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n card?: IDynamicCard;\n}\n","import { formatDate } from '@angular/common';\n\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\nimport {\n EFormatType,\n EFormControl,\n EHyperlink,\n EMatchMode,\n EOperator,\n IDynamicCard,\n IDynamicForm,\n IFormat,\n IFormField,\n IFormSection,\n} from '../models/form.model';\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\nimport { Subject } from 'rxjs';\n\n/* #region public methods */\n\n/**\n *\n * @param value : any\n * Function receives the value and expects the value to be formated.\n * Do not use fat arrow function as they do not preserve the context.\n * this.value refers to the value of IFormField Object\n * Modify this.value directly to receive effect\n */\n\n var formstate = new Subject<any>();\n var cardState = new Subject<any>();\n\n export function changeDynamicFormState(id: any, data: any) {\n formstate.next({ id, data });\n}\n \n export function onDynamicFormStateChange() {\n return formstate.asObservable();\n }\n\n export function onDynamicCardStateChange() {\n return cardState.asObservable();\n }\n\n export function changeDynamicFormState1(data: any) {\n cardState.next({ data });\n}\n\n export function closeIFrame(){\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\n if(close) {\n close.click();\n }\n}\n\nexport function toDecimal(value: any): any {\n if (value) {\n return parseFloat(value.toString()).toFixed(2);\n }\n}\n\nexport function toBoolean(value: any) {\n return value?.toLowerCase() === 'y' ? true : false;\n}\n\nexport function toShortDate(value: any, format?: IFormat) {\n if (value && value !== '') {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function toShortDateTime(value: any, format?: IFormat) {\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function setDialogData(columns:IGridColumn[], fieldName:string, value:any){\n columns?.forEach((column)=>{\n if(column.field?.toLowerCase() === fieldName?.toLowerCase() && column.component){\n let keys=Object.keys(value);\n keys.forEach((key)=>{\n column.data.data={...column.data?.data, [key]:value[key]};\n })\n }\n })\n}\n\nexport function toTrim(text: any) {\n if (typeof text === 'string') {\n return text.trim();\n } else {\n return text;\n }\n}\n\nexport function getMatchKey(obj: any, propName: string): string {\n if (!obj || !propName) {\n return '';\n }\n\n let matchedKey = '';\n if (Array.isArray(obj)) {\n obj.forEach((row) => {\n const keys: any[] = Object.keys(row);\n if (!matchedKey || matchedKey.length === 0) {\n matchedKey = keys.find(\n (x) => x.toLowerCase() === propName.toLowerCase()\n );\n }\n });\n } else {\n const keys: any[] = Object.keys(obj);\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\n }\n\n return matchedKey;\n}\n\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\n let formattedValue: any = value;\n if (formField.format) {\n switch (formField.format.type) {\n case EFormatType.DECIMAL:\n formattedValue = toDecimal(value);\n break;\n case EFormatType.BOOLEAN_YN:\n formattedValue = toBoolean(value);\n break;\n case EFormatType.SHORTDATE:\n formattedValue = toShortDate(value);\n break;\n case EFormatType.CUSTOM:\n if (formField.format.formatter) {\n formattedValue = formField.format.formatter(value);\n }\n break;\n default:\n break;\n }\n }\n return formattedValue;\n}\n\nexport function setFormField (\n { formSections }: IDynamicForm,\n formFieldObj: IFormField\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField: IFormField) => {\n if (\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\n (formField.label && formField.label === formFieldObj.label)\n ) {\n formField = formFieldObj;\n }\n return formField;\n }));\n });\n}\n\nexport function setHyperlinkComponentData (\n { formSections }: IDynamicForm,\n label: string,\n data: any\n){\n formSections?.forEach((section) => {\n let field=section.fields.find((field)=> field.label && field.label===label)\n if(field && field.hyperlink) field.hyperlink.params = data;\n});\n}\n\nexport function setAutoCompleteData(\n values: any[],\n uniqueId: any,\n labelKey: string,\n ValueKey: string,\n){\n if(values?.length > 0){\n values = values?.map((rowValue) => ({[labelKey]: rowValue, [ValueKey]: uniqueId}));\n }\n return values;\n}\n\nexport function setLookupData(\n { formSections }: IDynamicForm,\n field: string,\n data: any\n) {\n formSections?.map((section: IFormSection) => {\n section.fields.map((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data &&\n data\n ) {\n formField.label.labelControl.lookupControl.data.data = data;\n }\n if (formField.lookupControl && formField.lookupControl.data && data) {\n formField.lookupControl.data.data = data;\n }\n }\n });\n });\n return formSections;\n}\n\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\n let newLink: string = link;\n if (params && params.length > 0) {\n params.map((param) => {\n const url = param.name ? '{{' + param.name + '}}' : '';\n if (newLink.localeCompare(url)) {\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\n }\n });\n }\n return newLink;\n}\n\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\n if(section){\n section.fields.push(formField);\n }\n return dynamicForm;\n}\n\nexport function setFormFields(\n { formSections }: IDynamicForm,\n formFields: IFormField[]\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField) => {\n let matchedField = formFields.find(\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\n );\n if (matchedField) {\n formField = matchedField;\n }\n return formField;\n }));\n });\n}\n\nexport function getGlobalFilters(\n globalFilters: addGlobalFilter[],\n field: string,\n) {\n let formFieldObj: any;\n globalFilters.map((filter)=>{\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = filter;\n }\n });\n return formFieldObj;\n}\n\nexport function getFormFields(\n { formSections }: IDynamicForm,\n formControl: EFormControl\n): IFormField[] {\n let formFields: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.control === formControl) {\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\n {\n formField.value = formField.value.text.trim();\n }\n else if (formField.value && typeof(formField.value) === 'string')\n {\n formField.value = formField.value.trim();\n }\n formFields.push(formField);\n }\n });\n });\n return formFields;\n}\n\nexport function getFormField(\n { formSections }: IDynamicForm,\n field: string\n): IFormField {\n let formFieldObj: any;\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = formField;\n }\n });\n });\n return formFieldObj;\n}\n\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\n// exist in the field then always return a displayField value.\nexport function getFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n returnDisplayFieldValue:boolean = false\n) {\n let value;\n for (const section of formSections as any) {\n section.fields.forEach((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\n if (\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\n formField.displayField\n ) {\n value = isValid ? formField.value?.text : formField.value?.value;\n } else {\n value = isValid\n ? formField.value?.text\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\n ? formField.value?.value\n : formField.value;\n }\n }\n });\n }\n return value;\n}\n\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\n let value:any = getFormFieldValue(dynamicForm,field, true);\n if (value){\n value = value.toString();\n }\n return value;\n}\n\nexport function getSectionFieldValue(\n formSections: IFormSection[],\n field: string\n) {\n let form: IDynamicForm = { formSections };\n return getFormFieldValue(form, field, true);\n}\n\nexport function setSaveFormValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let response: any = {};\n if (tables && tables.length > 0) {\n tables.forEach((tableName) => {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n\n sectionFields?.forEach((field) => {\n const table = field.tables?.map((table) => table.toLowerCase());\n\n if (table && table.includes(tableName.toLowerCase())) {\n if (!response[tableName]) {\n response[tableName] = {};\n }\n\n if (field.field && field.field.length > 0) {\n response[tableName][field.field] = formatFormFieldCValue(field);\n }\n }\n });\n });\n });\n } else {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n sectionFields?.forEach((field) => {\n if (field.field && field.field.length > 0) {\n response[field.field] = formatFormFieldCValue(field);\n }\n });\n });\n }\n\n return response;\n}\n\nexport function setSaveCardValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let values: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.card.data) {\n field.card.data.forEach((cardData: any) => {\n if (cardData.dynamicForm.formSections) {\n values.push(\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\n );\n }\n });\n }\n });\n });\n return values;\n}\n\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\n if (data && data.length > 0 && Array.isArray(data)) {\n data.forEach((dataRow) => {\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\n });\n } else {\n setEditFormFieldsInfo(data, dynamicForm);\n }\n}\n\nexport function setFilter(\n field: string,\n value: any,\n matchMode: EMatchMode = EMatchMode.EQUALS,\n operator: EOperator = EOperator.AND,\n) {\n const filter: any = {\n field: field,\n matchMode: matchMode,\n operator: operator,\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\n };\n return filter;\n}\n\nexport function setAndFilter(field: string, value: any) {\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\n}\n\nexport function getOrigDataFieldValue(data: any, propName: string): any {\n let value: any;\n if (data) {\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n value = getPropertyValue(data[i], propName);\n if (value) {\n return value;\n }\n }\n } else {\n value = getPropertyValue(data, propName);\n }\n }\n return value;\n}\n\nexport function getOrigDataFieldValueAsString(\n data: any,\n propName: string\n): string {\n let value = getOrigDataFieldValue(data, propName);\n if (value) {\n return value.toString();\n } else {\n return '';\n }\n}\n\nexport function setSectionPropValues(\n { formSections }: IDynamicForm,\n sectionName: string,\n props: IDictionary[]\n) {\n formSections?.map((section) => {\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\n props.map((prop) => {\n return setPropValue(section, prop);\n });\n }\n });\n}\n\n/* #endregion */\n\n/* #region private methods */\n\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\n if (data.records && data.records.length > 0) {\n data.records.forEach((record: any) => {\n const keys: string[] = Object.keys(record);\n dynamicForm.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField: any) => {\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\n );\n\n if (matchedKey) {\n // set label hyperlink\n setLabelHyperlink(formField, record, keys, allData);\n }\n\n if (\n formField.control === EFormControl.HYPERLINK &&\n formField.hyperlink &&\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\n formField.hyperlink.link)\n ) {\n let params = formField.hyperlink.params;\n let paramKeys: string[] = [];\n\n if (\n !params &&\n formField.hyperlink.link &&\n formField.hyperlink.link.includes('}}')\n ) {\n paramKeys = formField.hyperlink.link.split('}}');\n paramKeys = paramKeys.map((paramKey) => {\n paramKey = paramKey.replace('{{', '').trim();\n return paramKey;\n });\n paramKeys = paramKeys.filter((x) => x.length > 0);\n } else {\n if(params){\n paramKeys = Object.keys(params);\n }\n }\n\n formField.hyperlink.link = setHyperlink(\n keys,\n record,\n formField.hyperlink.link,\n paramKeys,\n formField.hyperlink.params,\n allData\n );\n } else {\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\n ? new Date(record[matchedKey] as string)\n : '';\n } else if (formField.control === EFormControl.CARD) {\n if (formField.card && formField.card.formSections) {\n if (!formField.card.data) {\n formField.card.data = data;\n }\n \n setEditFormFieldsInfo(data, formField.card);\n }\n } else if (\n formField.control === EFormControl.AUTOCOMPLETE &&\n matchedKey\n ) {\n let arrayValue = [];\n if (record[matchedKey] && formField.displayField) {\n arrayValue.push({[formField.displayField] : record[matchedKey]});\n }\n formField.value = arrayValue;\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data\n ) {\n const obj = autoSetLookupData(\n formField.label.labelControl.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.label.labelControl.lookupControl.data.data = obj;\n }\n }\n\n if (\n formField.lookupControl &&\n formField.lookupControl.data &&\n formField.lookupControl.data.data\n ) {\n const obj = autoSetLookupData(\n formField.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.lookupControl.data.data = obj;\n }\n }\n if(record[matchedKey]){\n formField.value = toTrim(record[matchedKey]);\n }\n if (\n formField.displayField &&\n formField.displayField.length > 0\n ) {\n const matchDisplayField = getMatchKey(\n record,\n formField.displayField\n );\n if (matchDisplayField) {\n formField.value = {\n text: toTrim(record[matchDisplayField]),\n value: formField.value?.value,\n };\n }\n\n const matchValueField = getMatchKey(record, formField.field);\n if (matchValueField) {\n formField.value = {\n text: formField.value?.text,\n value: toTrim(record[matchValueField]),\n };\n }\n }\n } else if (\n formField.control === EFormControl.COMPONENT &&\n formField.componentControl?.data\n ) {\n formField.componentControl.data = findKeysAndValue(\n formField.componentControl.data,\n record\n );\n changeDynamicFormState(\n formField.componentControl.id,\n formField.componentControl?.data\n );\n } else if (\n formField.control === EFormControl.NUMERIC &&\n formField.label?.labelControl?.lookupControl?.data?.data\n ) {\n let setData = formField.label.labelControl.lookupControl;\n setData.data.data = findKeysAndValue(setData.data.data, record);\n changeDynamicFormState(setData.id, setData.data.data);\n } else if (formField.control === EFormControl.HYPERLINK \n && formField.hyperlink?.target === EHyperlink.DIALOG \n && formField.hyperlink.params\n ) {\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\n } else if (matchedKey) {\n if (formField.format) {\n formField.value = formatFormFieldValue(\n formField,\n record[matchedKey]\n );\n } else if (formField.control === EFormControl.CHECKBOX) {\n formField.value =\n record[matchedKey] &&\n (record[matchedKey].toString() === '1' ||\n record[matchedKey].toString() === 'true')\n ? true\n : false;\n }else if (formField.control === EFormControl.DROPDOWN) {\n let dropValue = record[matchedKey];\n formField.value = dropValue\n ? dropValue.toString()\n : dropValue;\n } else {\n formField.value = toTrim(record[matchedKey]);\n }\n }\n }\n });\n }\n });\n });\n }\n}\n\n//set hyperlink param value as field value\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\n let keys: string[] = [];\n let link: string ='';\n let paramKeys: string[] = [];\n let param: any;\n let fieldInfo: any;\n dynamicForm.formSections?.forEach((section: any) => {\n section.fields.forEach((formField: any) => {\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\n keys = Object.keys(record);\n if(formField?.label?.labelControl?.orignalLink){\n link = formField.label.labelControl.orignalLink;\n }\n\n if(formField?.label?.labelControl?.hyperlink?.params){\n param = formField.label.labelControl.hyperlink.params;\n paramKeys = Object.keys(param);\n }\n fieldInfo = formField;\n if(record && keys && link && paramKeys && param && fieldInfo){\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\n }\n }\n });\n });\n}\n\nexport function objConvertToLower(obj: any) {\n return Object.keys(obj).reduce((accumulator: any, key) => {\n accumulator[key.toLowerCase()] = obj[key];\n return accumulator;\n }, {});\n}\n\nexport function clickSectionHighlight(value: any) {\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\n allMenuItems?.forEach((menauItem: any) => {\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\n })\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n });\n}\n\nexport function removeActiveIconClass() {\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n if (activeIcon && activeIcon.length > 0) {\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\n });\n }\n}\n\nexport function highlightLeftSidebar(){\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\n\n allIconElements?.forEach((icon: any, index: any) => {\n icon?.setAttribute('tabIndex', 'section' + index);\n });\n removeActiveIconClass();\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\n const currentId = \"section\" + index;\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\n } else{\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \n }\n });\n });\n }\n\nexport function findKeysAndValue(data: any, record: any) {\n let valueKey: string = '';\n Object.keys(data).forEach((dataKey) => {\n let valueContainsKey: boolean = false;\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\n valueContainsKey = true;\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n }\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\n if (key && key.length > 0) {\n data = { ...data, [dataKey]: record[key] };\n }\n });\n return data;\n}\n\nexport function setPropValue(obj: any, prop: IDictionary) {\n const matchedKey: string = getMatchKey(obj, prop.name);\n if (matchedKey) {\n return (obj[matchedKey] = prop.value);\n }\n else{\n return( obj[prop.name]=prop.value)\n }\n}\n\nexport function hasRole(role: string): boolean {\n let storage = localStorage.getItem('CurrentUserInfo');\n if (storage) {\n let currentUser = JSON.parse(storage);\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\n }\n }\n return false;\n}\n\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\n if (\n item.label &&\n item.label.labelControl &&\n item.label.labelControl.hyperlink &&\n item.label.labelControl.hyperlink.params\n ) {\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\n const link = item.label.labelControl.hyperlink.link;\n if (item.label.labelControl.hyperlink.link) {\n item.label.labelControl.hyperlink.link = setHyperlink(\n keys,\n record,\n link,\n paramKeys,\n item.label.labelControl.hyperlink.params,\n allData\n );\n }\n }\n}\n\nexport function setHyperlink(\n keys: string[],\n record: any,\n link: string,\n paramKeys: string[],\n params: any,\n allData: any[] = []\n): string {\n let newLink: string = link;\n record = objConvertToLower(record);\n paramKeys.forEach((paramkey) => {\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\n const isParamMatched = newLink.localeCompare(param);\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\n\n if (isParamMatched) {\n let paramValue = params ? params[paramkey] : null;\n if(paramValue === '' && paramInRecord){\n paramValue = '{'+paramkey+'}';\n }\n if (paramValue) {\n const propName = paramValue.toString().replace('{', '').replace('}', '');\n let propValue = record[propName.toLowerCase()];\n \n // in case of prop not found in record then try to find prop in all data array, to get its value \n if (!propValue && allData && allData.length > 0)\n {\n allData.forEach((data)=>{\n //const value = data.records.find((x)=> x[propName]);\n data.records.forEach((allRecord: any)=>{\n let keys = Object.keys(allRecord);\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\n if (matchKey){\n propValue = allRecord[matchKey];\n }\n });\n });\n }\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\n \n } else {\n // get param value from api response, if param key exists in it\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === paramkey.toLowerCase()\n );\n\n if (matchedKey) {\n paramValue = record[matchedKey];\n if (paramValue) {\n newLink = newLink.replace(\n new RegExp(param, 'ig'),\n toTrim(paramValue)\n );\n } else {\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\n }\n }\n }\n }\n });\n // replace the {{param}} with empty\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\n }\n return newLink;\n}\n\n// its checking if there is no value in hyperlink param then it set key as a paramValue\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\n let paramValue: boolean = false;\n if(allData && allData.length > 0){\n allData.forEach((data: any)=>{\n if(data.records && data.records.length > 0){\n data.records.forEach((allRecord: any) =>{\n if(paramValue === false){\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\n };\n });\n };\n });\n }else{\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\n }\n return paramValue;\n}\n\nfunction getPropertyValue(data: any, propName: string) {\n let propValue: any;\n data.records?.forEach((record: any) => {\n for (const [key, value] of Object.entries(record)) {\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\n propValue = value;\n }\n }\n });\n return propValue;\n}\n\nfunction formatFormFieldCValue(field: any) {\n if (\n field.format?.type === EFormatType.BOOLEAN_YN &&\n field.format?.formatter?.name === 'toBoolean'\n ) {\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\n } else if (\n field.control === EFormControl.CALENDAR &&\n (field.value || field.value === '')\n ) {\n if(field.timeOnly && field.saveAsString){\n field.value = field.value;\n }else{\n field.value =\n field.showTime === true\n ? toShortDateTime(field.value, field.format)\n : toShortDate(field.value, field.format)\n }\n return field.value;\n } else if (\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value == undefined ? null : field.value.value;\n } else if (\n field.label &&\n field.label.labelControl &&\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value;\n } else {\n field.value = field.value == undefined ? null : field.value;\n return field.value;\n }\n}\n\nexport function autoSetLookupData(\n fieldData: any,\n response: any\n) {\n let obj = {};\n let record = setDataFields([response]);\n if (record && record.length > 0) {\n record.forEach((x: any) => {\n record = x;\n });\n }\n if (fieldData && record) {\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\n let rowKeys = Object.keys(record);\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\n let value = rowKeys?.find(\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n );\n if (value && value.length > 0) {\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\n } else if (key && key.length > 0) {\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\n } else {\n obj = { ...obj, [dataKey]: dataValue };\n }\n });\n return obj;\n } else {\n return null;\n }\n}\n\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\n if(obj && obj.lookupControl?.data){\n obj.lookupControl.data.data = data;\n }\n}\n\nexport function setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n\n data.push(result);\n });\n }\n return data;\n}\n\nexport function setDialogResponse(\n formField: any,\n formData: any,\n response: any\n) {\n let value: any;\n if (response) {\n // if selectedValue does not exist then consider valueField as selectedValue\n if (\n formData &&\n formData.data &&\n formData.data.labelProp &&\n !formData.data.valueProp\n ) {\n formData.data.valueProp = formData.data.labelProp;\n }\n else if (\n formData &&\n formData.data &&\n formData.data.valueProp &&\n !formData.data.labelProp\n ) {\n formData.data.labelProp = formData.data.valueProp;\n }\n\n const matchValueKey: string = getMatchKey(\n response,\n formData?.data?.valueProp\n );\n const matchFieldKey: string = getMatchKey(\n response,\n formData?.data?.labelProp\n );\n\n if (\n formData?.data &&\n formData?.data.valueProp &&\n formData?.data.labelProp\n ) {\n let valueProp = response[matchValueKey];\n let matchText = response[matchFieldKey];\n if (typeof valueProp === 'string' && typeof matchText === 'string') {\n valueProp = valueProp.trim();\n matchText = matchText.trim();\n }\n value = { text: matchText, value: valueProp };\n } else {\n const FieldKey: string = getMatchKey(response, formField.field);\n let value = response[FieldKey];\n if (value) {\n value = value?.toString()?.trim();\n }\n }\n }\n return value;\n}\n\nexport function currentUrl():string{\n let currentRoute: string = '';\n let url = window.location.href;\n if(url){\n let arr = url.split('/');\n currentRoute = arr[arr.length-1]\n } \n return currentRoute;\n}\n\nexport function getGridFilters(){\n let filters: any = [];\n let gridFilters = currentUrl();\n if(gridFilters && gridFilters.length > 0){\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\n filters = localFilter?.filters;\n }\n return filters;\n}\n\n//update the hidden or disabled and value based off other global filters.\nexport function setGlobalFilterPropValues(\n globalFilter: IGlobalFilter[],\n field: string,\n props: IFilterDictionary[],\n) {\n return globalFilter.map((filter: any) => {\n if (\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\n (filter.displayText &&\n filter.displayText.toLowerCase() === field?.toLowerCase())\n ) {\n props?.map((prop: IFilterDictionary) => {\n if (filter.hasOwnProperty(prop.propName)) {\n return (filter[prop.propName] = prop.propValue);\n } else if (prop.propValue && prop.propValue.length > 0) {\n return (filter.value = prop.propValue);\n }\n });\n }\n });\n}\n\nexport function setCardFieldsData(form: any) {\n if (form && form.dynamicform) {\n const { dynamicform, ...newData } = form;\n dynamicform?.formSections?.forEach((section: any) => {\n section.fields?.forEach((field: any) => {\n if (newData) {\n setEditFormFields({ records: [newData] }, dynamicform);\n }\n });\n });\n }\n}\n\n// disable Grid EditableRow Column\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let disableObj = { ...obj, disabled: true };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = disableObj;\n }\n return columns;\n}\n\n// enabled Grid EditableRow Column\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field?.toLowerCase());\n let enableObj = { ...obj, disabled: false };\n const index = columns.findIndex((i: any) => i.field?.toLowerCase() === field?.toLowerCase());\n if (index !== -1) columns[index] = enableObj;\n }\n return columns;\n}\n\n // check the Minutes Interval\n export function setMinutesInterval(value: any){\n if (value) {\n const min = value.getMinutes().toString();\n if (min) {\n value = value.setMinutes(0);\n }\n }\n return value;\n}\n\n // update the response records\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\n if(index > -1){\n records[index] = rowData;\n }else{\n records.push(rowData);\n }\n return records;\n}\n\n//convert the time into date\nexport function setTimeInDate(time: any) {\n const convertTime12to24 = (time12h: any) => {\n const [time, modifier] = time12h?.toString()?.split(' ');\n let [hours, minutes] = time?.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (modifier === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n return `${hours}:${minutes}`;\n };\n const date = convertTime12to24(time);\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\n const futureDate = new Date();\n futureDate.setTime(tempDate.getTime());\n return futureDate;\n}\n\n// return the data of the field \nexport function getFieldData({ formSections }: any, field: string){\n let data: any = []\n if(formSections?.length > 0 && field){\n formSections.forEach((section: any)=>{\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\n }\n })\n }\n return data;\n}\n\nexport function setAllFormFieldsValues(\n { formSections }: IDynamicForm,\n props: IFilterDictionary[]\n) {\n formSections?.map((section: IFormSection) => {\n if (section) {\n section.fields.map((formField: any) => {\n return props.map((prop: IFilterDictionary) => {\n if (formField) {\n return (formField[prop.propName] = prop.propValue);\n }\n });\n });\n }\n });\n}\n\n// returns the response header fileName\nexport function getResponseHeaderFileName(response){\n const header = response?.headers?.get('Content-Disposition');\n return header?.split('filename=')?.[1]?.split(\";\")[0]?.replaceAll(/\\\"/g, '');\n}\n\n export function draggableDialog(id:any){\n setTimeout(() => {\n const dialog = document.getElementsByClassName('p-dialog')\n dialog[0]?.setAttribute('id','mydiv' + id)\n const dialogheader = document.getElementsByClassName('p-dialog-header')\n dialogheader[0]?.setAttribute('id','mydivheader' + id)\n const elmnt = document.getElementById('mydiv' + id);\n\n let pos1 = 0,\n pos2 = 0,\n pos3 = 0,\n pos4 = 0;\n \n const dragMouseDown = (e) => {\n e = e || window.event;\n pos3 = e.clientX;\n pos4 = e.clientY;\n document.onmouseup = closeDragElement;\n document.onmousemove = elementDrag;\n };\n \n const elementDrag = (e) => {\n e = e || window.event;\n pos1 = pos3 - e.clientX;\n pos2 = pos4 - e.clientY;\n pos3 = e.clientX;\n pos4 = e.clientY;\n elmnt.style.top = elmnt?.offsetTop - pos2 + 'px';\n elmnt.style.left = elmnt?.offsetLeft - pos1 + 'px';\n };\n \n const closeDragElement = () => {\n document.onmouseup = null;\n document.onmousemove = null;\n };\n \n if (document.getElementById('mydivheader' + id)) {\n document.getElementById('mydivheader' + id).onmousedown = dragMouseDown;\n } else {\n elmnt.onmousedown = dragMouseDown;\n }\n }, 100);\n } \nexport function calenderMinMaxValue(item: any,value: any, index){\n let validation: string = 'equal';\n var validDate = new Date(item.validations[index].expression);\n var currentDate = new Date(value);\n if (validDate.getTime() < currentDate.getTime()){\n validation = 'greater';\n }\n else if (validDate.getTime() > currentDate.getTime()){\n validation = 'minimum';\n }\n return validation;\n}\n/* #endregion */\n","import { Injectable } from '@angular/core';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { IAutoCompleteSave, IDropDownRequest } from '../models/form.model';\nimport { DatePipe } from '@angular/common';\nimport {\n EGridSortDirection,\n GridFilterControlType,\n IGlobalFilter,\n IGridFilter,\n IGridSort,\n EGridColumnType,\n addColumn,\n addFilterColumn,\n addGlobalFilter,\n IGridColumn,\n EGridValidator,\n IGridProp,\n IGridPropFilter,\n IGridRowProp,\n IGridReportBtn,\n EGridRowAction,\n IDialogColumn,\n EGridFormatter,\n} from '../models/grid.model';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { HyperlinkService } from './hyperlink.service';\nimport * as utilities from './utilities.service';\nimport { RequestService } from './request.service';\nimport { IDictionary } from '../models/common.model';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GridService {\n softCachingFilters: any = {};\n applyFilterEvent: boolean = true;\n public columnFocusedOut: boolean = false;\n constructor(\n public datepipe: DatePipe,\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) {}\n\n /**\n *\n * @param event\n * Receives lazy event and returns after proper mapping\n */\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\n const filters = this.mapFilters(event, columns);\n return this.handleMultiFilterField(filters);\n }\n\n /**\n * @param filters\n * Receives filters and returns array after removing duplicates\n * and creating comma separated values for same filters\n */\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\n return filters\n .map((x, i, arr) =>\n arr.some(\n (y, idx) =>\n y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx\n )\n ? {\n ...x,\n value: arr\n .filter(\n (z) => z.field?.toLowerCase() === x.field?.toLowerCase()\n )\n .map((a) => a.value)\n .join(),\n }\n : x\n )\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\n }\n\n // Prepare basic grid filters\n prepareBasicFilters(\n event: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridFilter[] {\n return this.mapFilters(event, columns);\n }\n\n /**\n * Checks if filters has values then converts global filter values type into IGridFilter.\n */\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\n const globalData: IGridFilter[] = [];\n\n globalFilters?.forEach((filter: IGlobalFilter) => {\n if (\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\n filter.value.length) ||\n (typeof filter.value !== 'string' &&\n !Array.isArray(filter.value) &&\n filter.value) ||\n (typeof filter.value === 'boolean' && filter.value !== null) ||\n filter.type === GridFilterControlType.CALENDAR_RANGE\n ) {\n if (\n filter.type === GridFilterControlType.CALENDAR_RANGE &&\n filter.value?.toString()?.includes('|')\n ) {\n // add filter for start date\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n\n // add filter for end date\n globalData.push({\n field: this.setGlobalFilterField(filter, false),\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter, false),\n tableAlias: filter.tableAlias,\n });\n } else if (filter.type !== GridFilterControlType.CALENDAR_RANGE) {\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode:\n filter.type === GridFilterControlType.MULTISELECT\n ? 'in'\n : filter.matchMode,\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n }\n }\n });\n return globalData;\n }\n\n setGlobalFilterField(filter: any, isStartDate: boolean = true): string {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\n if (isStartDate) {\n return filter.fromField;\n } else {\n return filter.toField;\n }\n } else {\n return filter.field;\n }\n }\n\n // set global filter value\n setGlobalFilterValue(\n filter: IGlobalFilter,\n isStartDate: boolean = true\n ): string | number | Date | boolean {\n switch (filter.type) {\n case GridFilterControlType.MULTISELECT:\n return (filter.value as any[]).join(',');\n case GridFilterControlType.CALENDAR:\n return this.getFormattedDate(filter.value as Date);\n case GridFilterControlType.CALENDAR_RANGE:\n let dateValues: string[] = filter.value\n ? filter.value.toString().split('|')\n : [];\n if (dateValues && dateValues.length == 2) {\n let dateValue: Date = isStartDate\n ? new Date(dateValues[0])\n : new Date(dateValues[1]);\n return this.getFormattedDate(dateValue);\n } else {\n return '';\n }\n case GridFilterControlType.CHECKBOX:\n return filter.value ? true : false;\n default:\n return filter.value as string;\n }\n }\n\n checkValidity(columns: IGridColumn[], row: any) {\n let isValid: boolean = true;\n columns.map((item: any) => {\n if (item.validations && !item.disabled) {\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(\n item,\n row[item.field],\n i\n );\n const valid = item.validations && item.header;\n if (\n item.validations[i].type == EGridValidator.REQUIRED &&\n !row[item.field] &&\n !item.hidden &&\n valid\n ) {\n isValid = row[item.field]\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINLENGTH &&\n row[item.field].length < item.validations[i].expression\n ) {\n isValid =\n row[item.field] &&\n row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXLENGTH &&\n row[item.field].length > item.validations[i].expression\n ) {\n isValid =\n row[item.field] &&\n row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } \n else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXOPTIONS \n\n ) {\n var options:number=1;\n var value=row[item.field];\n for (var x = 0; x < value.length - 1; x++) {\n if (value[x] == ';') {\n options++;\n }\n }\n //blue;red;green max=3\n isValid =\n // row[item.field] &&\n options <= item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} maximum ${item.validations[i].expression} option${item.validations[i].expression>1?'s':''}`\n );\n break;\n }\n \n else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINIMUM &&\n isValid\n ) {\n if (item.type === EGridColumnType.DATE) {\n isValid =\n minMaxValidDate === 'minimum'\n ? this.setErrorMessage(\n item,\n `Minimum ${valid} ${item.validations[i].expression}`\n )\n : true;\n } else if (row[item.field] < item.validations[i].expression) {\n isValid =\n row[item.field] &&\n row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXIMUM &&\n isValid\n ) {\n if (item.type === EGridColumnType.DATE) {\n isValid =\n minMaxValidDate === 'greater'\n ? this.setErrorMessage(\n item,\n `Maximum ${valid} ${item.validations[i].expression}`\n )\n : true;\n } else if (row[item.field] > item.validations[i].expression) {\n isValid =\n row[item.field] &&\n row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PATTERN &&\n !row[item.field].match(item.validations[i].expression)\n ) {\n isValid =\n row[item.field] &&\n row[item.field].match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.NUMERIC &&\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PHONE &&\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.DECIMAL &&\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.EMAIL &&\n !row[item.field]\n ?.toString()\n .match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]\n ?.toString()\n .match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n // set basic filter value\n setBasicFilterValue(filter: any): any {\n if (filter instanceof Date) {\n return this.getFormattedDate(filter);\n } else if (typeof filter === 'boolean') {\n return filter ? 1 : 0;\n } else {\n return filter;\n }\n }\n\n /**\n *\n * @param param\n * Receives lazy event and returns sort array\n */\n getGridSorts(\n { multiSortMeta }: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridSort[] {\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\n field,\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\n priority: i + 1,\n tableAlias: this.setTableAlias(field, columns),\n }));\n }\n\n /**\n *\n * @param event\n * Handles default and lookup filters\n */\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\n const filters: IGridFilter[] = [];\n Object.entries(event.filters).forEach(([field, value]: any) => {\n if (Array.isArray(value)) {\n (value as IGridFilter[]).forEach(\n ({ matchMode, operator, value: filter }) => {\n if (filter !== null) {\n filters.push({\n field,\n matchMode,\n operator,\n value: this.setBasicFilterValue(filter),\n tableAlias: this.setTableAlias(field, columns),\n });\n }\n }\n );\n } else {\n if (value.value !== '') {\n switch (typeof value.value) {\n case 'boolean':\n filters.push({\n field,\n matchMode: 'equals',\n operator: 'and',\n value: value.value ? true : false,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'string':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'number':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'object':\n if (value.value instanceof Date) {\n filters.push({\n field,\n matchMode: 'equal',\n operator: 'and',\n value:\n value.value instanceof Date\n ? this.getFormattedDate(value.value)\n : value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n } else {\n (value.value || []).forEach((x: any) => {\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: x.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n });\n }\n break;\n default:\n null;\n }\n }\n }\n });\n return filters;\n }\n\n /**\n *\n * @param event\n * Receives lazy event and returns page number\n */\n getGridPagination(event: any): number {\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\n }\n\n // get formatted date\n getFormattedDate(value: Date): string {\n return new Date(`${value} Z`).toISOString().slice(0, 10);\n }\n\n // change row key and value when using setGridRowPropValue function\n setRowValue(rowData: any) {\n Object.keys(rowData)?.forEach((row) => {\n if(row === EGridRowAction.DELETEBTN || row === EGridRowAction.EDITBTN){\n delete rowData[row];\n }\n else if (\n rowData[row] &&\n typeof(rowData[row]) === 'object'\n ) {\n if(rowData[row]?.action?.field){\n if(rowData[row]?.extraField){\n delete rowData[row];\n } else {\n rowData[row] = rowData[row]?.text;\n }\n }else {\n if(rowData[row].hasOwnProperty('text') && rowData[row].hasOwnProperty('value')){\n rowData[row] = rowData[row]?.value;\n }\n }\n }\n });\n return rowData;\n }\n\n // convert row actions object into simple value\n setGridRowData(rowData){\n if(Array.isArray(rowData)){\n rowData.forEach((row)=>{\n row = this.setRowValue(row);\n })\n } else {\n rowData = this.setRowValue(rowData);\n }\n return rowData;\n }\n\n // get allowSave true row list\n getAllowSaveRowlist(rowsData: any[] = [], columns: IGridColumn[]) {\n rowsData = this.setDataFields(rowsData);\n columns.forEach((column: IGridColumn) => {\n let field = column?.field?.toLowerCase();\n if (column.allowSave === false) {\n rowsData.forEach((row) => {\n let obj = Object.keys(row);\n if (obj?.length > 0) {\n obj.forEach((x) => {\n if (x.includes('_obj') && typeof row[x] === 'object') {\n delete row[x];\n }\n })\n }\n delete row[field];\n row = this.setRowValue(row);\n })\n } else if (column.formatter && column.type === EGridColumnType.BOOLEAN) {\n rowsData.forEach((row) => {\n let value = row[field]\n if (column.formatter === EGridFormatter.CHAR) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? 'Y' : 'N';\n } else if (column.formatter === EGridFormatter.NUMERIC) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? '1' : '0';\n } else if (column.formatter === EGridFormatter.BOOLEAN) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? true : false;\n }\n })\n } else if (column.type === EGridColumnType.DATE) {\n //convert date into time format\n rowsData.forEach((row) => {\n if (column.timeOnly && column.saveAsString) {\n row[field] = this.datepipe.transform(row[field], 'hh:mm a');\n } else if (!column.timeOnly && column.showTime) {\n row[field] = this.datepipe.transform(row[field], 'yyyy-MM-dd HH:mm:ss');\n } else if (row[field] && !column.timeOnly && column.saveAsString) {\n row[field] = row[field].toLocaleDateString();\n }\n })\n }\n })\n return rowsData;\n }\n\n // get allowSave true || undefine row\n getAllowSaveRow(rowInfo: {} = {}, columns: IGridColumn[]) {\n let row = { ...rowInfo };\n row = utilities.objConvertToLower(row);\n row = this.setRowValue(row);\n columns.forEach((column) => {\n let field = column?.field?.toLowerCase();\n if (column.allowSave == false) {\n const keys = Object.keys(row)\n keys.forEach((x) => {\n if (x.includes('_obj') && typeof row[x] === 'object') {\n delete row[x];\n }\n })\n const key = keys.find((x) => x.toLowerCase() === column.field?.toLowerCase());\n if (key) {\n delete row[key];\n }\n } else if (column.formatter && column.type === EGridColumnType.BOOLEAN) {\n let value = row[field]\n if (column.formatter === EGridFormatter.CHAR) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? 'Y' : 'N';\n } else if (column.formatter === EGridFormatter.NUMERIC) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? '1' : '0';\n } else if (column.formatter === EGridFormatter.BOOLEAN) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? true : false;\n }\n } else if (column.type === EGridColumnType.DATE) {\n //convert date into time format\n if (column.timeOnly && column.saveAsString) {\n row[field] = this.datepipe.transform(row[field], 'hh:mm a');\n } else if (!column.timeOnly && column.showTime) {\n row[field] = this.datepipe.transform(row[field], 'yyyy-MM-dd HH:mm:ss');\n } else if (row[field] && !column.timeOnly && column.saveAsString) {\n row[field] = row[field].toLocaleDateString();\n }\n }\n })\n return row;\n }\n\n // add simple grid column without\n addColumn(columnInfo: addColumn): IGridColumn {\n if (columnInfo.type === EGridColumnType.DROPDOWN) {\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n } else if (columnInfo.type === EGridColumnType.DIALOG) {\n if (!columnInfo.filtering && !columnInfo.filter) {\n columnInfo.filtering = false;\n }\n if (columnInfo.params && !columnInfo.data) {\n columnInfo.data = columnInfo.params;\n }\n }\n const column: IGridColumn = {\n allowSearch: columnInfo.allowSearch,\n allowAutoCompleteSave: columnInfo.allowAutoCompleteSave,\n uniqueKey: columnInfo.uniqueKey,\n field: columnInfo.field,\n header: columnInfo.header,\n style: columnInfo.style,\n type: columnInfo.type,\n format: columnInfo.format,\n data: columnInfo.data,\n filterValue:columnInfo.filterValue,\n filtering: columnInfo.filtering,\n hidden: columnInfo.hidden,\n sorting: columnInfo.sorting,\n filter: columnInfo.filter,\n hyperlink: columnInfo.hyperlink,\n tableAlias: columnInfo.tableAlias,\n linkId: columnInfo.linkId,\n minutesInterval: columnInfo.minutesInterval,\n params: columnInfo.params,\n showOption: columnInfo.showOption,\n displayText: columnInfo.displayText,\n target: columnInfo.target,\n disabled: columnInfo.disabled,\n allowSave: columnInfo.allowSave,\n allowEdit: columnInfo.allowEdit,\n editable: columnInfo.editable,\n editLink: columnInfo.editLink,\n saveAsString: columnInfo.saveAsString,\n component: columnInfo.component,\n onClick: columnInfo.onClick,\n onReturn: columnInfo.onReturn,\n onFocusOut: columnInfo.onFocusOut,\n onChange: columnInfo.onChange,\n aggregate: columnInfo.aggregate,\n formatter: columnInfo.formatter,\n permissions: columnInfo.permissions,\n optionLabel: columnInfo.optionLabel,\n optionValue: columnInfo.optionValue,\n dropDownProp: columnInfo.dropDownProp,\n showTime: columnInfo.showTime,\n timeOnly: columnInfo.timeOnly,\n lookupControl: columnInfo.lookupControl,\n displayField: columnInfo.displayField,\n icon: columnInfo.icon,\n color: columnInfo.color,\n id: columnInfo.id,\n value: columnInfo.value,\n validations: columnInfo.validations,\n };\n\n return column;\n }\n\n // Adding Report Button Function for Grid\n addReportBtn(columnInfo: IGridReportBtn) {\n columnInfo.type = EGridColumnType.REPORT;\n return columnInfo;\n }\n\n // add simple input grid column\n addInputColumn(\n filterColumnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n filterColumnInfo.filter = {\n type: GridFilterControlType.INPUT,\n showFilter: this.showFilterIcon(filterColumnInfo),\n };\n }\n return this.addColumn(filterColumnInfo);\n }\n\n // add simple numeric grid column without\n addNumericColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.NUMERICINPUT,\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n columnInfo.type = EGridColumnType.NUMERIC;\n return this.addColumn(columnInfo);\n }\n\n // add simple calendar grid column without\n addCalendarColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.CALENDAR,\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n columnInfo.type = columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\n return this.addColumn(columnInfo);\n }\n\n // add simple boolean grid column without\n addBooleanColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n (columnInfo.type = EGridColumnType.BOOLEAN),\n (columnInfo.filter = {\n type: GridFilterControlType.CHECKBOX,\n showFilter: this.showFilterIcon(columnInfo),\n });\n }\n return this.addColumn(columnInfo);\n }\n\n // add LookUp column for Grid\n addLookUpColumn(columnInfo: IDialogColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\n return this.addColumn(columnInfo);\n}\n\n// add dialog column for Grid\n addDialogColumn(columnInfo: IDialogColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.DIALOG;\n return this.addColumn(columnInfo);\n }\n\n // add Button for grid column\n addButtonColumn(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.ADD_BUTTON;\n if (!columnInfo.field) {\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\n }\n return this.addColumn(columnInfo);\n }\n\n // add AutoComplete for grid column\n addAutoComplete(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\n return this.addColumn(columnInfo);\n }\n\n // Search AutoComplete Data for Grid\n getAutoCompleteData(\n column?: any,\n uniqueKey?: string,\n filters?: any[],\n search: string = ''\n ): any {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters })\n .subscribe((response: any) => {\n if (search) {\n let existInRecord = response.records?.some(\n (record) =>\n record[column.displayField] &&\n record[column.displayField]?.toString()?.toLowerCase() ===\n search?.toLowerCase()\n );\n if (!existInRecord) {\n response.records.unshift({ [column.displayField]: search });\n }\n }\n column.data = this.setDataFields(response.records);\n });\n }\n async addAutoCompleteValue(uniqueKey: IAutoCompleteSave, value:any, column:any, row:any) {\n let newValue = {}\n\n for(var i =0;i<uniqueKey.values.length; i++){\n if(uniqueKey.values[i].name.toLowerCase()==column.field?.toLowerCase()||uniqueKey.values[i].name.toLowerCase()==column.displayField?.toLowerCase()){\n newValue[uniqueKey.values[i].name]=value;\n \n }else{\n newValue[uniqueKey.values[i].name]=this.getSoftCodingValue(uniqueKey.values[i].value, row)\n } \n }\n\n\n this.requestService\n .get<any[], any>('/Data/Save', { uniqueKey:uniqueKey.name, values: newValue })\n .subscribe((response: any) => {\n ({error})=>{\n return error\n }\n return 'success';\n });\n }\n getSoftCodingValue(value, row){\n let returnValue;\n if(value.toString().includes('{')&&value.toString().includes('}')){\n value=value.replace(\"{\",\"\").replace(\"}\",\"\");\n let rowKeys = Object.keys(row);\n let key = rowKeys?.find((x) => x?.toLowerCase() === value?.toString()?.toLowerCase());\n returnValue=row[key];\n }else{\n returnValue=value\n }\n return returnValue;\n }\n\n // add simple dropdown grid column without\n addDropdownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n dropDownProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.type = EGridColumnType.DROPDOWN;\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.DROPDOWN,\n data:\n !columnInfo?.filter?.data && !dropDownProp && columnInfo.data\n ? columnInfo.data\n : columnInfo?.filter?.data\n ? columnInfo?.filter?.data\n : [],\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n if (dropDownProp) {\n columnInfo.dropDownProp = dropDownProp;\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n // add MultiSelectDropDown grid column\n addMultiSelectDropDownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n multiSelectProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n columnInfo.type = EGridColumnType.MULTISELECT;\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.MULTISELECT,\n data:\n !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data\n ? columnInfo.data\n : columnInfo?.filter?.data\n ? columnInfo?.filter?.data\n : [],\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n if (multiSelectProp) {\n columnInfo.dropDownProp = multiSelectProp;\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n\n showFilterIcon(columnInfo: addColumn) {\n if (columnInfo.filter && columnInfo.filter.showFilter) {\n return true;\n } else {\n return false;\n }\n }\n\n setDropdownData(\n column: IGridColumn,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any[],\n row?: { [key: string]: any }\n ): Promise<any> | any {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\n .then((res: any) => {\n if (row) {\n row[column.field + '_data'] = res;\n } else {\n column.data = res;\n if (column.filter && column.filter.type === 'dropdown') {\n column.filter.data = res;\n }\n }\n return this.addColumn(column);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n\n // add grid column with built-in filter\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\n const column: any = {\n field: filterColumnInfo.field,\n header: filterColumnInfo.header,\n filter: { type: filterColumnInfo.filter },\n filtering: filterColumnInfo.filtering,\n hidden: filterColumnInfo.hidden,\n style: filterColumnInfo.style,\n tableAlias: filterColumnInfo.tableAlias,\n permissions: filterColumnInfo.permissions,\n };\n\n return column;\n }\n\n // add date grid column with built-in filter\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\n const column: IGridColumn = {\n field: dateColumnInfo.field,\n header: dateColumnInfo.header,\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\n filtering: dateColumnInfo.filtering,\n filter: { type: GridFilterControlType.CALENDAR },\n format: dateColumnInfo.format,\n style: dateColumnInfo.style,\n tableAlias: dateColumnInfo.tableAlias,\n disabled: dateColumnInfo.disabled,\n allowSave: dateColumnInfo.allowSave,\n permissions: dateColumnInfo.permissions,\n component: dateColumnInfo.component,\n showTime: dateColumnInfo.showTime,\n timeOnly: dateColumnInfo.timeOnly,\n data: dateColumnInfo.data,\n hidden: dateColumnInfo.hidden,\n };\n return column;\n }\n\n setLookUpFilter(column: any, dialogService: any, globalFilterLookup: boolean = false) {\n if (column.lookupControl) {\n let dataValue: any[] = [];\n let dataKey: any[] = [];\n let data = column.lookupControl?.data?.data;\n const keys = Object.keys(data);\n if (data && keys?.length > 0) {\n keys.forEach((key) => {\n if (data[key].toString().includes('{')) {\n dataValue.unshift(data[key]);\n dataKey.unshift(key);\n data[key] = '';\n }\n });\n }\n const ref = dialogService.open(\n column.lookupControl.component,\n column.lookupControl.data\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (column.onReturn) {\n column.onReturn(res);\n }\n if (dataKey?.length > 0 && dataValue?.length > 0) {\n dataKey.forEach((key, keyIndex) => {\n dataValue.forEach((value, valueIndex) => {\n if (keyIndex === valueIndex) {\n data[key] = value;\n }\n });\n });\n }\n if (res) {\n document.getElementById('lookUp_filter')?.focus();\n let field = column.field;\n let value = utilities.setDialogResponse(\n column,\n column?.lookupControl,\n res\n );\n if(globalFilterLookup){\n if(typeof(value) === 'object'){\n column.valueTwo = value; \n }\n column.value = value?.value\n ? value.value\n : res[field.toLowerCase()];\n const globalFilterLookupInput = document.getElementById(column.field);\n globalFilterLookupInput.focus();\n }else{\n column.filterValue = value?.value\n ? value.value\n : res[field.toLowerCase()];\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n // Set Hyperlink field as a param Value\n setFieldAsLinkParam(columns: any, field: string, response: any) {\n if (\n columns &&\n columns.length > 0 &&\n field &&\n response.records &&\n response.records.length > 0\n ) {\n this.setDataFields(response.records).forEach((res: any) => {\n let obj = columns.find((x: any) => x.field === field);\n if (obj && obj.params) {\n const keys = Object.keys(obj.params);\n keys.forEach((key: any) => {\n if (obj.params[key] && obj.params[key].toString().includes('{')) {\n let value = obj.params[key]\n .replace('{', '')\n .replace('}', '')\n .toLowerCase();\n obj.params[key] = res[value];\n }\n });\n }\n });\n }\n }\n\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\n return (\n columns &&\n columns.some(\n (x) =>\n x.type == EGridColumnType.LINK ||\n x.type == EGridColumnType.IFRAME ||\n x.type == EGridColumnType.DIALOG ||\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT)\n )\n );\n }\n\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\n let records: any = [];\n let data =\n fetchResponse && fetchResponse.records.length > 0\n ? this.setDataFields(fetchResponse.records)\n : [];\n let newRow: any;\n\n return this.hyperlinkService\n .addHyperlinks(columns)\n .then((linksResponse: any) => {\n data.forEach((row: any) => {\n newRow = { ...row };\n columns.forEach((col: any) => {\n let keys = Object.keys(row);\n if (col.type === EGridColumnType.DIALOG) {\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n if (col.data && col.data.data) {\n newRow[field].dialogData = utilities.findKeysAndValue(\n col.data.data,\n row\n );\n }\n }\n linksResponse.forEach((linkResponse: any) => {\n if (\n (col.type === EGridColumnType.LINK ||\n col.type === EGridColumnType.IFRAME ||\n col.type === EGridColumnType.LOOKUP_INPUT) &&\n col.linkId &&\n col.params &&\n col.linkId === linkResponse.linkId\n ) {\n const paramKeys: string[] = Object.keys(col.params);\n const link: any = utilities.setHyperlink(\n keys,\n row,\n linkResponse.url,\n paramKeys,\n col.params\n );\n\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].hyperlink = link;\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n }\n });\n });\n records.push(newRow);\n });\n return records;\n });\n }\n\n // add grid global filter with built-in filter\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\n const column: addGlobalFilter = {\n field: globelFilterInfo.field,\n displayText: globelFilterInfo.displayText,\n validations: globelFilterInfo.validations,\n type: globelFilterInfo.type,\n data: globelFilterInfo.data,\n value: globelFilterInfo.value,\n valueTwo: globelFilterInfo.valueTwo,\n matchMode: globelFilterInfo.matchMode,\n operator: globelFilterInfo.operator,\n tableAlias: globelFilterInfo.tableAlias,\n optionLabel: globelFilterInfo.optionLabel,\n optionValue: globelFilterInfo.optionValue,\n onFocusOut: globelFilterInfo.onFocusOut,\n onReturn: globelFilterInfo.onReturn,\n filtering: globelFilterInfo.filtering,\n column: globelFilterInfo.column,\n dayRange: globelFilterInfo.dayRange,\n fromField: globelFilterInfo.fromField,\n toField: globelFilterInfo.toField,\n lookupControl: globelFilterInfo.lookupControl,\n allowSearch: globelFilterInfo.allowSearch,\n disabled: globelFilterInfo.disabled,\n hidden: globelFilterInfo.hidden,\n labelText: globelFilterInfo.labelText,\n prefix: globelFilterInfo.prefix,\n color: globelFilterInfo.color,\n format: globelFilterInfo.format,\n };\n return column;\n }\n\n // add global input filter\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global dropdown filter\n addGlobalDropdownFilter(\n globelFilterInfo: IGlobalFilter,\n dropDownProp?: IDropDownRequest\n ): any {\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n let sorts = dropDownProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else {\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n // add global MultiSelect dropdown filter\n addGlobalMultiSelectDropDownFilter(\n globelFilterInfo: IGlobalFilter,\n multiSelectProp?: IDropDownRequest\n ): any {\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\n if (multiSelectProp) {\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n let sorts = multiSelectProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else {\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n\n getDropdownData(\n fieldInfo: any,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any,\n sorts: IGridSort[] = []\n ) {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters, sorts)\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addGlobalFilter(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addGlobalFilter(fieldInfo);\n });\n }\n \n // add global filter Space Field\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.SPACER;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global boolean filter\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n \n // add Numeric Range Filter for global Filter\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric input for global Filter\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add LookUp Field for global Filter\n addGlobalLookupFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n //add calendar filter for global filter\n addGlobalDateFilter(globalFilterInfo: addGlobalFilter){\n globalFilterInfo.type=GridFilterControlType.CALENDAR;\n return this.addGlobalFilter(globalFilterInfo);\n }\n\n setDataFields(response: any, dataKey: string = \"\") {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n if (Object.keys(x ?? {})?.length > 0) {\n const result: any = Object.keys(x)?.reduce(\n (prev, current) => ({\n ...prev,\n [current.toLowerCase()]: x[current],\n }),\n {}\n );\n if (\n dataKey &&\n dataKey.length > 0 &&\n !Object.keys(result)?.includes(dataKey)\n ) {\n result[dataKey] = index;\n }\n\n data.push(result);\n }\n });\n }\n return data;\n }\n\n setColumnFields(columns: any[]) {\n let column: any = [];\n if (columns && columns.length > 0) {\n columns.map((col: any) => {\n column.push({ ...col, field: col?.field?.toLowerCase() });\n });\n return column;\n }\n }\n\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\n setLinkId(\n columns: IGridColumn[],\n field: string,\n linkId: string,\n record: any,\n users: any,\n params: any = null,\n changeLink: boolean = false\n ): any {\n if (columns && columns.length > 0) {\n columns.forEach((column: any) => {\n if (column.field?.toLowerCase() === field.toLowerCase()) {\n column.linkId = linkId;\n if (params) {\n column.params = params;\n }\n }\n });\n }\n\n this.setHyperlinks({ records: [record] }, columns).then((res: any) => {\n if (changeLink) {\n delete res[0][field.toLowerCase() + '_obj'];\n let index = users.findIndex(\n (i: any) => i[field.toLowerCase()] === record[field.toLowerCase()]\n );\n if (index !== -1) {\n if (users[index][field + '_obj']) {\n users[index][field + '_obj'].hyperlink =\n res[0][field + '_obj'].hyperlink;\n }\n }\n }\n });\n }\n\n // set grid data and set selected row based on selection value\n setDataWithSelectedRow(records: any, configData: any) {\n if ((configData?.valueProp || configData?.labelProp) && configData.data.selection) {\n records.forEach((record: any) => {\n Object.keys(record)?.forEach((key) => {\n if (key.toLowerCase() === configData.labelProp ? configData.labelProp?.toLowerCase() : configData.valueProp?.toLowerCase()) {\n if (\n configData.data.value &&\n record[key] === configData.data.value\n ) {\n record['highlightRow'] = true;\n } else if (record[key]?.toString() === configData.data.selection?.toString()) {\n record['highlightRow'] = true;\n }\n }\n });\n });\n }\n\n return records;\n }\n\n setTableAlias(field: string, columns: IGridColumn[]) {\n if (columns && columns.length > 0) {\n const column = columns.find(\n (x: any) => x.field?.toLowerCase() == field?.toLowerCase()\n );\n\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\n return column.tableAlias;\n }\n }\n\n return '';\n }\n\n setGridPropValues(\n columns: IGridColumn[],\n props: IGridProp[],\n filter?: IGridPropFilter,\n records?: any[]\n ) {\n if (columns && columns.length > 0 && props && props.length > 0) {\n let isMatched: boolean = false;\n if (filter && filter.field && records && records.length > 0) {\n isMatched = records.some(\n (x) =>\n utilities.objConvertToLower(x)[filter.field.toLowerCase()] ===\n filter.value\n );\n }\n props.map((prop: IGridProp) => {\n let col: any = {};\n if (prop.field && !isMatched && !filter?.field) {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === prop.field?.toLowerCase()\n );\n } else if (isMatched) {\n if (prop.field) {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === prop.field?.toLowerCase()\n );\n } else {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === filter?.field?.toLowerCase()\n );\n }\n }\n if (col && col.hasOwnProperty(prop.name)) {\n col[prop.name] = prop.value;\n }\n });\n }\n }\n\n // set grid row propValues\n setGridRowPropValue(row: { [key: string]: any }, props: IGridRowProp[], columns: IGridColumn[] = []) {\n props?.forEach((prop) => {\n if (prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '')) {\n if (prop.field) {\n const fieldName = Object.keys(row)?.find((key) => key?.toLowerCase() === prop?.field?.toLowerCase());\n const fieldNameObj = fieldName+'_obj';\n if (fieldName) {\n if(Object.keys(row)?.includes(fieldNameObj) && !row[fieldNameObj]?.action){\n row[fieldNameObj] = {...row[fieldNameObj], text: row[fieldName], action: { [prop.propName]: prop.propValue }};\n } else if (row[fieldNameObj]?.action) {\n row[fieldNameObj].action = Object.assign(row[fieldNameObj]?.action, { [prop.propName]: prop.propValue });\n } else {\n row[fieldNameObj] = { text: row[fieldName], action: { [prop.propName]: prop.propValue } };\n }\n } else if (columns?.some((column) => column.field?.toLowerCase() === prop?.field?.toLowerCase())) {\n const propField = prop.field?.toLowerCase();\n const propFieldObj = propField+'_obj';\n if(Object.keys(row)?.includes(fieldNameObj)){\n row[propFieldObj] = { ...row[propFieldObj], text: row[prop.field], extraField: true, action: { [prop.propName]: prop.propValue } };\n }else{\n row[propFieldObj] = { text: row[prop.field], extraField: true, action: { [prop.propName]: prop.propValue } };\n }\n };\n } else {\n if (prop?.action === EGridRowAction.DELETEBTN) {\n row[prop.action] = prop.propValue;\n }\n else if (prop?.action === EGridRowAction.EDITBTN) {\n row[prop.action] = prop.propValue;\n }\n }\n }\n });\n return row;\n }\n\n // remove the rowActions from the records\n removeRowActions(records) {\n if (records?.length > 0) {\n records.forEach((row) => {\n if (row.rowAction) {\n delete row['rowAction'];\n }\n });\n }\n return records;\n }\n}","export interface IUserInfo {\n id: number;\n username: string;\n isADUser: boolean;\n token: string;\n activities: string[];\n roles: IUserRole[];\n }\n \n export interface IUserRole {\n id: number;\n code: string;\n name: string;\n description: string;\n }\n \n export interface IPermission {\n type: EPermissionType;\n roles: string[];\n }\n \n export enum EPermissionType {\n EDIT = 'edit',\n VIEW = 'view',\n DELETE = 'delete',\n ADDROW = 'addRow',\n CRUD = 'crud',\n }\n ","import { Injectable } from '@angular/core';\nimport { IUserInfo } from '../models/user-info.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n userInfoKey: string = 'CurrentUserInfo';\n\n login(response: any): boolean {\n if (response) {\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\n return true;\n } else {\n return false;\n }\n }\n\n getUserInfo() {\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\n }\n\n getUserRoles() {\n let roles: any = [];\n let userInfo: IUserInfo = this.getUserInfo();\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\n roles = userInfo.roles.map((x) => x.name);\n }\n return roles;\n }\n\n isAuthenticated(): boolean {\n return this.getUserInfo() ? true : false;\n }\n\n logout() {\n // setting Function for removing the Grid Filters When User logout. \n let keys = Object.keys(localStorage);\n if(keys && keys.length > 0){\n keys.forEach((key)=>{\n if(key.includes('SetFilters-')){\n localStorage.removeItem(key);\n }\n });\n }\n // removing the UserName & Password When User logout.\n localStorage.removeItem(this.userInfoKey);\n }\n}\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-iframe',\n templateUrl: './iframe.component.html',\n styleUrls: ['./iframe.component.scss']\n})\nexport class IframeComponent implements OnInit,OnDestroy {\n url: any;\n id:string='';\n\n constructor(\n private sanitizer: DomSanitizer,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.loadIFrameData();\n }\n\n ngOnDestroy() {\n if(this.id){\n const url: any = document.getElementById(this.id);\n this.ref.close(url.contentWindow.location.href);\n }\n }\n\n loadIFrameData(){\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\n this.config.data.value\n );\n this.id = this.config.data.iFrameId;\n\n }\n }\n\n iframeLoaded(){\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\n\n if(iframeEl){\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\n }\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageLoggerService {\n\n constructor(private requestService: RequestService) { }\n \n // save page logger info\n savePageLoggerInfo(currentRoute, componentName: string = '') {\n this.requestService\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\n .subscribe(\n (data) => {\n return data;\n },\n (error) => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnChanges,\n Optional,\n ElementRef,\n ViewChildren,\n QueryList,\n SimpleChanges,\n ViewChild,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport {\n DynamicDialogRef,\n DynamicDialogConfig,\n DialogService,\n} from 'primeng/dynamicdialog';\nimport { saveAs } from 'file-saver';\nimport jsPDF from 'jspdf';\nimport { GridService } from '../../../services/grid.service';\nimport {\n IGridColumn,\n IGridSort,\n IGridServerSideEvent,\n IGridPaginationEvent,\n IGlobalFilter,\n IGridFilter,\n IGridColumnAction,\n IGridRowAction,\n EGridSelectionType,\n EGridColumnType,\n EGridSortDirection,\n IGridDataExport,\n EGridAggregate,\n EGridFormatType,\n IGridFilterInfo,\n EGridRowAction,\n EGridValidator,\n GridFilterControlType,\n} from '../../../models/grid.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { WorkSheet } from 'xlsx';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport * as utilities from '../../../services/utilities.service';\nimport { Table } from 'primeng/table';\nimport { EFormatType } from '../../../models/form.model';\nimport { Router } from '@angular/router';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription, interval } from 'rxjs';\n\n@Component({\n selector: 'se-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\n @Output() inlineRowCancel = new EventEmitter();\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n serverFilters: IGridServerSideEvent = {};\n rowsData: any[];\n rowsDataCopy: any[] = [];\n roles: string[] = [];\n isColumnHidden: boolean = false;\n rowClickData: IGridColumn;\n componentTableRef: any;\n lookupFilterObj: any;\n checklist: any[] = []\n lookupBlur: boolean = true;\n globalFiltersArray: any[] = [];\n checkAction: boolean = false;\n calenderPreviousValue: string = '';\n gridFilterObj: IGridFilterInfo;\n defaultDate: any;\n gridfilter: any;\n dropDownFilter: any = {};\n dropdownInput: boolean = false;\n saveAllRecord: boolean = false;\n generateRowsDataCopy: boolean = true;\n editAllRecord: boolean = false;\n cancelAllRecords: boolean = false;\n addNewRowCheck: boolean = false;\n inEditMode: boolean = false;\n saveRecordArray: any[] = [];\n disabledSaveBtn: boolean = false;\n isCheckBoxChangeEventCalled: boolean = false;\n isSelectedAllRows: boolean = false;\n Checked: boolean = true\n unChecked: boolean = false\n editModeChecked: boolean = true;\n editModeunCkecked: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setDropdownFilter: boolean = true;\n reloadPage: Subscription;\n setDropdowndataValue: boolean = true;\n \n hideEditAllRowsBtn: boolean = true;\n\n //apply Add/Delete/Edit prop for the grid permission\n addRowPermission: boolean = true;\n deleteRowPermission: boolean = true;\n editRowPermission: boolean = true;\n\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\n setAggregateFooter: string = '';\n\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\n aggregateFooter: boolean = false;\n\n // Maintains previous state of rows being edited\n editRowsRecords: { [key: string]: any } = {};\n\n // Maintains record of rows being edited\n editingRowKeys: { [key: string]: any } = {};\n\n @ViewChild('dt') table: Table;\n\n // Selects items in the grid based on passed on data\n @Input() selectedRows: any = [];\n\n @Input() setGridRefreshTime: number = 0;\n\n @Input() addDataKeyValue = false;\n\n private globalData: IGridFilter[] = [];\n\n sortDisabled: boolean = false;\n\n @Input() public showRefreshBtn: boolean = false;\n\n @Input() public hideRefreshBtn: boolean = true;\n\n // Stores selected columns\n private _selectedColumns: IGridColumn[] = [];\n visibleColumns: IGridColumn[] = [];\n // Boolean prop to allow horizontal Scroll on Table.\n @Input() horizontalScroll: boolean = false;\n\n // Boolean prop to hide the delete row button.\n @Input() hideDeleteBtn = false;\n\n // Boolean prop to hide the edit row button.\n @Input() hideEditBtn = false;\n\n // Boolean prop to hide the add row button.\n @Input() hideAddBtn = false;\n\n // Prop to handle loader of grid\n @Input() public loading = false;\n\n //this property is used to handle server side event by default it is true when it false server side event will not be called\n @Input() autoLoadData: boolean = true;\n\n // Boolean prop to check where selected is allowed or not.\n @Input() allowSelection = false;\n\n // Set column width of selected row.\n @Input() selectionColumnWidth: string = '80px';\n\n // set selection checkBox header\n @Input() allowSelectionHeader: string = '';\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridSaveButton = false;\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridCancelButton = false;\n\n // Boolean prop to allow export to pdf.\n @Input() allowExportToPdf = false;\n\n // Boolean prop to allow export to excel.\n @Input() allowExportToExcel = false;\n\n // Boolean prop to set the action column as first column.\n @Input() setActionColumnAsFirst = false;\n\n // If true, enables options to perform CRUD using inline row functionality\n @Input() useInlineCRUD = false;\n\n // Array of row actions\n @Input() rowActions: IGridRowAction[] = [];\n\n // Sets selection type i.e: single/multiple selection\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\n\n // Unique key requires for built-in row selection of primeNg grid\n @Input() dataKey: string = 'id';\n\n // Flag for clear filter values button\n @Input() clearGridFilter = true;\n\n // Flag for search filter values button\n @Input() searchGridFilter = true;\n\n // Flag in case table is scrollable\n @Input() scrollable = true;\n\n // Sets scroll height for the table\n @Input() scrollHeight = '680px';\n\n // Boolean prop to allow to wrap or unWrap the grid.\n @Input() wordWrap: boolean = false;\n\n @Input() newGridRow: any = {};\n\n @Input() filtering = true;\n\n @Input() reportButtons: any[] = [];\n\n @Input() rowHover: boolean = false;\n\n @Input() hideFilterOptions: boolean = false;\n\n // Sets pagenation for the table Data.\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\n\n // set the change in the rowData\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\n\n /**\n * Stops the loader and sets the data to grid\n * Clears the editing stack\n * Scrolls to selected element if selection found\n */\n @Input() set rows(data: any[]) {\n this.loading = false;\n if (!this.isCheckBoxChangeEventCalled) {\n if (data && data.length > 0) {\n if (!this.dataKey) {\n this.dataKey = 'id';\n }\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\n } else {\n this.rowsData = [];\n }\n\n // Cleaning the editing stack\n // this.editingRowKeys = {};\n this.editRowsRecords = {};\n\n setTimeout(() => {\n if (data && data.length > 0 && this.selectedRows) {\n const selectedElementRef = this.gridRow.find(\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\n );\n selectedElementRef &&\n (\n selectedElementRef.nativeElement as HTMLTableRowElement\n ).scrollIntoView({ behavior: 'smooth' });\n }\n }, 0);\n\n if (this.columns && this.columns.length > 0) {\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN && this.setDropdowndataValue) {\n this.setDropdownValue(column, {}, false);\n }\n });\n }\n //manipulate checkbox string value to true and false.\n this.changeCheckboxStringValue();\n }\n }\n\n // Global filter server request\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\n this.globalData = this.gridService\n .prepareGlobalFilters(globalFilters)\n ?.filter((x) => x?.value !== false);\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = this.serverFilters.filters\n ? this.serverFilters.filters.concat(this.globalData)\n : this.globalData;\n\n if (localStorage.getItem('applyFilter') === 'false') {\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\n : this.globalFiltersArray;\n }\n if (localStorage.getItem('applyFilter') === 'true') {\n globalFilters.forEach((globalFilter) => {\n this.globalFiltersArray.forEach((filterArray) => {\n if (\n filterArray.field === globalFilter.field &&\n globalFilter.value &&\n filterArray.value !== globalFilter.value\n ) {\n filterArray.value = globalFilter.value;\n }\n const findIndex = this.globalFiltersArray.findIndex(\n (index) => index.field === globalFilter.field && !globalFilter.value\n );\n if (findIndex !== -1) {\n this.globalFiltersArray.splice(findIndex, 1);\n }\n });\n });\n\n this.loading = this.autoLoadData;\n // setTimeout(() => {\n if (this.gridService.applyFilterEvent || this.autoLoadData) {\n this.onApplyFilter.emit();\n }\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n serverFilterValues.filters = serverFilterValues.filters.concat(\n this.globalFiltersArray\n );\n }\n serverFilterValues.filters = Array.from(\n new Set(\n serverFilterValues.filters\n .reverse()\n .map((filter: any) => filter.field)\n )\n ).map((field) => {\n return serverFilterValues.filters.find((x: any) => x.field === field);\n });\n serverFilterValues.filters = serverFilterValues.filters.filter(\n (obj: any) =>\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\n );\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = serverFilterValues;\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\n // setting pagination page as first\n serverFilterValues.page = 1;\n this.autoLoadData = true;\n if (this.defaultRows && this.pagination) {\n serverFilterValues.pageSize = this.defaultRows;\n }\n if (this.gridService.applyFilterEvent) {\n this.isCheckBoxChangeEventCalled = false;\n this.onServerSideEventChange.emit(serverFilterValues)\n }\n localStorage.removeItem('applyFilter');\n // setting pagination page number UI\n this.table._first = 0;\n }\n // }, 300);\n }\n }\n\n // Input decorator to receive columns to be displayed in header\n @Input() columns: IGridColumn[] = [];\n\n @Input() permissions: IPermission[] = [];\n\n // Optional prop to handle toggling of columns\n @Input() allowColumnToggle = false;\n\n // Optional prop to hide filtering of columns\n @Input() hideFilter = false;\n\n // Optional prop to handle lookup filters\n @Input() lookupFilters = false;\n\n // Optional prop to handle pagination\n @Input() pagination = false;\n\n // Optional prop to handle show CurrentPage Report\n @Input() showCurrentPageReport = false;\n\n // Displays total number of records\n @Input() totalRecords;\n\n @Input() showconfirmDialog: boolean = true;\n\n @Input() saveAllData: boolean = false;\n\n // Sets number of rows to be shown the grid\n @Input() defaultRows: number;\n\n @Input() columnActions: IGridColumnAction[] = [];\n\n // Decides the grid's behavior either for client side or server side events\n @Input() useServerSideEvents = false;\n\n // Output event to handle row click\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\n\n // Output event emit when click on grid checkbox filter\n @Output() onCheckBoxFilterClick: EventEmitter<any> = new EventEmitter();\n\n // Output event to handle row CheckBox\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\n\n // Output event to trigger on sort change\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\n\n // Output event to trigger on filter change\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\n\n // Output event to invoke the multiSelection click event\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a grid and globalFilters called\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\n\n //set header checkbox value for getting all columns on stay admin\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a lazy event is dispatched\n @Output()\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\n new EventEmitter();\n\n // Output event to trigger on pagination\n @Output()\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\n\n // Dispatch output event trigger on edit row\n @Output() onRowUpdate = new EventEmitter();\n\n // Dispatch output event trigger cancel all rows\n @Output() onCancelAllRows = new EventEmitter();\n\n // Dispatch output event trigger on delete row\n @Output() onRowDelete = new EventEmitter();\n\n //Dispatch output event trigger on add row\n @Output() onRowAdd = new EventEmitter();\n\n //Dispatch output event trigger on add, update and delete row\n @Output() onGridRowActions = new EventEmitter();\n\n // set property allowCaching for LocalStorage\n @Input() allowCaching: boolean;\n\n // set property softCaching for setting the values of gridFilter\n @Input() softCaching: boolean = true;\n\n @Input() editAllRows: boolean = false;\n\n // set the row When Edit the row on Grid\n @Output() onGridRowEdit = new EventEmitter();\n\n // set the row When adding the new Row on Grid\n @Output() onGridRowAdd = new EventEmitter();\n\n isGridHidden: boolean = false;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private alertService: AlertService,\n private authService: AuthenticationService,\n private elementRef: ElementRef,\n public decimalPipe: DecimalPipe,\n private pageLoggerService: PageLoggerService,\n private cd: ChangeDetectorRef,\n private router: Router,\n private datePipe: DatePipe,\n public confirmationService: ConfirmationService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) { }\n\n get selectedColumns(): IGridColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: IGridColumn[]) {\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\n }\n\n // browser close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event: any) {\n if (this.gridService.columnFocusedOut) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n // automatically reload grid after 9 seconds.\n if (this.setGridRefreshTime) {\n this.refreshGrid();\n }\n\n if (this.onRowUpdate?.observers?.length == 0) {\n this.hideEditBtn = true;\n }\n\n if (this.editAllRows && this.onRowDelete.observers.length == 0) {\n this.disabledSaveBtn = true;\n }\n\n this.componentTableRef = this.table;\n setTimeout(() => {\n this.setNumericValues();\n }, 500);\n }\n\n ngOnDestroy() {\n this.refreshGridTerminator()\n }\n\n // apply user role permissions on grid columns\n applyColumnsPermissions() {\n if (this.columns) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.columns.forEach((column: IGridColumn) => {\n let permissions: IPermission[] = column.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n column.disabled = true;\n } else {\n column.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n column.hidden = false;\n column.disabled = false;\n }\n }\n }\n });\n }\n totalFields++;\n if (column.hidden) {\n hiddenFields++;\n }\n });\n\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n // apply global permissions on entire grid\n applyGridPermissions() {\n if (this.permissions && this.permissions.length > 0) {\n let hasValidEditPermission = false;\n\n // check if any column has any permission\n let hasColumnPermissions = this.columns?.some(\n (x) => x?.permissions && x.permissions.length > 0\n );\n\n this.permissions.forEach((permission) => {\n let isValid: boolean = false;\n\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (permission.type === EPermissionType.CRUD && !isValid) {\n this.useInlineCRUD = false;\n }\n else if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n this.useInlineCRUD = true;\n if (!isValid && !hasColumnPermissions) {\n this.isGridHidden = true;\n this.useInlineCRUD = false;\n }\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\n this.isGridHidden = false;\n hasValidEditPermission = true;\n this.editRowPermission = false;\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\n this.deleteRowPermission = false;\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\n this.addRowPermission = false;\n }\n });\n }\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\n }\n\n ngOnChanges(change: SimpleChanges) {\n if (!this.isCheckBoxChangeEventCalled) {\n if (this.allowCaching !== false && this.pagination) {\n this.allowCaching = this.pagination;\n } else if (this.componentTableRef?.id) {\n localStorage.removeItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl());\n }\n // add defaultRow in pagination array\n if (!this.setPaginationLength.includes(this.defaultRows)) {\n this.setPaginationLength.unshift(this.defaultRows);\n }\n const hasColumns: boolean = this.columns && this.columns.length > 0;\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions on grid columns\n this.applyColumnsPermissions();\n\n // apply global permissions on entire grid\n this.applyGridPermissions();\n\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\n this.cd.detectChanges();\n\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n // checking filter exist or not\n const filter = this._selectedColumns.some(\n (column) => column.filtering === undefined || column.filtering === true\n );\n if (filter === false) {\n this.hideFilter = true;\n }\n\n\n this.columns.forEach((column: any) => {\n // set isRequired true for required column to show astric in column header\n if (column.validations?.find(validation => validation.type == EGridValidator.REQUIRED)) {\n column.isRequired = true;\n }\n // set numeric null or undefine data default value\n if ((column.type === EGridColumnType.NUMERIC || column.type === EGridColumnType.BOOLEAN || column.type === EGridColumnType.TEXT || column.type === undefined || column.type === EGridColumnType.DATE || column.type === EGridColumnType.DROPDOWN) && column.value && this.rowsData?.length > 0) {\n this.rowsData.forEach((row) => {\n if (column.value && (row[column.field] === null || row[column.field] === undefined)) {\n row[column.field] = column.value;\n }\n })\n }\n\n // convert string time into the date\n if (column.type === EGridColumnType.DATE) {\n if (column.timeOnly === true) {\n this.rowsData.forEach((row) => {\n if (\n row[column.field] &&\n (row[column.field].toString().includes('PM') ||\n row[column.field].toString().includes('AM'))\n ) {\n row[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n });\n } else if (!column.minutesInterval) {\n this.rowsData.forEach((row: any) => {\n if (row[column.field+'_obj'] && row[column.field+'_obj'].action) {\n row[column.field] = new Date(row[column.field+'_obj']?.text as string);\n } else if (row[column.field]) {\n row[column.field] = new Date(row[column.field] as string);\n }\n });\n\n }\n }\n // set filter value\n if (column.filter && column.filterValue && column.filtering !== false) {\n this.setFilterFocusOut(column);\n }\n // add \"flex-shrink: 0\" for flex-basis Style\n // if (column.style && column.style.includes('flex-basis')) {\n // let style = column.style + ' !important; flex-shrink: 0 !important';\n // column.style = style.includes(';;')\n // ? style.replace(';;', ';')\n // : style;\n // }\n\n // set DisplayText when value is in curly brackets.\n this.setDisplayTextValue(column);\n\n //Aggregate scenario\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n\n let searchFilters;\n if (!this.softCaching && this.componentTableRef?.id) {\n searchFilters = JSON.parse(\n localStorage.getItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl()) as any\n );\n } else if (this.componentTableRef?.id) {\n searchFilters = this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()];\n }\n if (\n !this.hideFilter &&\n searchFilters &&\n searchFilters.filters &&\n searchFilters.filters.length > 0\n ) {\n searchFilters.filters.forEach((x: any) => {\n if (x.field === column.field) { \n if (column?.filter?.type === 'calendar' && x.value) {\n column.filterValue = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\n } else if (column.type === EGridColumnType.BOOLEAN) {\n column.filterValue = x.value;\n } else if (x.value) {\n column.filterValue = x.value;\n }\n }\n });\n }\n // converting displayField toLowercase\n if (column.displayField) {\n column.displayField = column.displayField.toLowerCase();\n }\n // set AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n this.rowsData &&\n this.rowsData.length > 0\n ) {\n this.rowsData.forEach((row) => {\n // convert string that contains comma into arrays\n if(row[column.field]?.toString().includes(';')){\n row[column.field] = row[column.field]\n ?.toString()\n .split(';')\n ?.map((value: any) => ({ [column.displayField?.toLowerCase()]: row[column.displayField],[column.optionLabel?.toLowerCase()]: value, [column.field?.toLowerCase()]: value }));\n }\n const key: any = Object.keys(row).find((x) => x === column.field.toLowerCase());\n // convert simple string into array\n if (!Array.isArray(row[key]) && row[key]) {\n if(column.displayField){\n row[key] = [{ [column.displayField?.toLowerCase()]: row[column.displayField], [column.field?.toLowerCase()]: row[key] }];\n }else{\n if(column.optionLabel){\n row[key] = [{ [column.field?.toLowerCase()]: row[key], [column.optionLabel?.toLowerCase()]: row[key] }];\n }else{\n row[key] = [{ [column.field?.toLowerCase()]: row[key] }];\n }\n }\n }\n });\n }\n\n //when we add a new row, it set the default value\n if(column.value){\n let key = Object.keys(this.newGridRow).find((x)=> x?.toLowerCase() === column.field?.toLowerCase())\n if(!key){\n this.newGridRow[column.field] = column.value;\n }\n }\n });\n\n // Searching scenario\n if (change.rows?.currentValue && change.columns?.currentValue) {\n // Checks either column value is changes (i.e., column hidden scenario)\n if (\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\n JSON.stringify(this.columns).toLowerCase()\n ) {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n } else {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n\n setTimeout(() => {\n const classElement = document.getElementsByClassName('highlighted-row');\n if (classElement.length > 0) {\n classElement[0].scrollIntoView();\n }\n\n if (this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0) {\n this.editAllRowsAtOnce();\n }\n }, 500);\n }\n this.setDropdowndataValue = true;\n const globalSearchbtn = document.getElementById('globalSearchbtn');\n if (globalSearchbtn) {\n this.searchGridFilter = false;\n }\n if (this.rowsData?.length > 0 && this.generateRowsDataCopy) {\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n }\n }\n\n this.isCheckBoxChangeEventCalled = false;\n }\n\n autoCompleteSelectedValue(row: any, column: IGridColumn, value) {\n if (column.optionLabel) {\n const valueKey = column.optionValue ? column.optionValue : column.field;\n row[column.field] = [...row[column.field], {\n [column.optionLabel?.toLowerCase()]: value[column.optionLabel?.toLowerCase()], [valueKey?.toLowerCase()]: value[valueKey?.toLowerCase()],\n [column.field?.toLowerCase()]: value[valueKey?.toLowerCase()]\n }];\n const index = row[column.field]?.findIndex((x) => JSON.stringify(x) === JSON.stringify(value));\n row[column.field].splice(index, 1);\n }\n }\n\n // set DisplayText when value is in curly brackets.\n setDisplayTextValue(column: IGridColumn) {\n this.rowsData?.forEach((row) => {\n if (\n column.type === EGridColumnType.LINK ||\n EGridColumnType.DIALOG ||\n EGridColumnType.IFRAME\n ) {\n const field = row[column.field + '_obj'];\n if (column.displayText && column.displayText.includes('{')) {\n const displayText = column.displayText\n .replace('{', '')\n .replace('}', '');\n if (displayText && field) {\n field.displayText = row[displayText.toLowerCase()];\n }\n } else if (column.displayText && field) {\n field.displayText = column.displayText;\n }\n }\n });\n }\n\n setNumericMinMxFraction(column: any) {\n let digitInfo = '2';\n if (column?.format.type === 'percent' && !column?.format?.formatParams?.digitsInfo) {\n digitInfo = '0'\n } else if (column?.format?.formatParams?.digitsInfo) {\n digitInfo = column.format.formatParams.digitsInfo;\n }\n return digitInfo;\n }\n\n // set the format of currency && number && decimal && percent\n setNumericFormat(column: any, row: any) {\n row = utilities.objConvertToLower(row);\n let value: any = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField.toLowerCase()]\n : (row[column.field?.toLowerCase()+'_obj']?.text || row[column.field?.toLowerCase()+'_obj']?.text === 0 || row[column.field?.toLowerCase()+'_obj']?.text === null)\n ? row[column.field.toLowerCase()+'_obj']?.text : row[column.field.toLowerCase()];\n if (this.typeOf(value) === 'number' && value === 0) {\n value = value.toString();\n }\n let formatParams = column.format?.formatParams;\n let digitsInfo = formatParams?.digitsInfo;\n if (column.format && value) {\n switch (column.format?.type) {\n case EGridFormatType.CURRENCY:\n value = new Intl.NumberFormat(\n formatParams?.locale ? formatParams.locale : 'en-US',\n {\n style: 'currency',\n currency: formatParams?.currency ? formatParams.currency : 'USD',\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\n }\n )?.format(value);\n break;\n case EGridFormatType.DECIMAL:\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\n break;\n case EGridFormatType.PERCENT:\n value = value + '%';\n break;\n }\n }\n return value;\n }\n\n //Change dropdown vlue based on option label and optionvalue\n setDropdownValue(column: IGridColumn, selectedRow?: any, change?: boolean) {\n if (this.rowsData && this.rowsData.length > 0) {\n this.rowsData.forEach((row) => {\n if (Object.keys(row)?.find((key) => key === column.field)) {\n if (column) {\n column.optionLabel = column.optionLabel\n ? column.optionLabel\n : 'label';\n column.optionValue = column.optionValue\n ? column.optionValue\n : 'value';\n }\n const value = column.data?.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\n if (value && editedRow) {\n row[column.field] = value[column.optionValue];\n } else if (value && change === false) {\n row[column.field] = value[column.optionLabel];\n }\n }\n });\n }\n }\n\n //manipulate checkbox string value to true and false.\n changeCheckboxStringValue() {\n if (\n this.columns &&\n this.rowsData &&\n this.rowsData.length > 0 &&\n this.columns.length > 0\n ) {\n this.rowsData.forEach((row) => {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.BOOLEAN) {\n if (\n (typeof (row[column.field] === 'string') &&\n (row[column.field] === '1' || row[column.field] === '0')) ||\n row[column.field] === 'Y' ||\n row[column.field] === 'N'\n ) {\n row[column.field] =\n row[column.field] === '1' || row[column.field] === 'Y'\n ? true\n : false;\n }\n }\n });\n });\n }\n }\n\n /**\n *\n * @param rowData\n * Passes data of clicked row to parent\n */\n handleRowClick(rowData: any) {\n this.rowClickData = rowData;\n if(!this.editAllRows){\n this.onRowClick.emit(rowData);\n }\n }\n\n /**\n *\n * @param columnData\n * Passes sorting information to parent on sort change\n */\n handleSortChange(event: any) {\n let sortDirection = null;\n let sortField: string = '';\n if (event.multisortmeta && event.multisortmeta[0].order) {\n sortDirection =\n event.multisortmeta[0].order == 1\n ? EGridSortDirection.ASC\n : EGridSortDirection.DESC;\n sortField = event.multisortmeta[0].field;\n }\n let sorts: IGridSort = {\n field: sortField,\n direction: sortDirection as EGridSortDirection,\n priority: 0,\n };\n this.onSortChange.emit(sorts);\n }\n\n /**\n *\n * @param event\n * Passes applied filters to parent on filter change\n */\n handleFilterChange(event: any) {\n this.columns.forEach((filter: any) => {\n if (!event.filters[filter.field]?.value && !filter.value) {\n filter.value = '';\n }\n });\n this.onFilterChange.emit(event);\n }\n\n /**\n *\n * @param event : Event\n * @param columnAction : IGridColumnAction\n * @param row : any\n * Stop the click event propagation to parent\n * Callbacks the row data to parent\n */\n\n /**\n * invoke onClick event & open Iframe in grid\n */\n gridIFrame(column: any, rows: any, row: any) {\n this.onClickEvent(column, row);\n const ref = this.dialogService.open(IframeComponent, {\n header: column.header,\n width: '80%',\n height: '80%',\n data: {\n value: rows,\n iFrameId: column.displayText ? column.displayText : column.field,\n },\n });\n const componentName = column.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n } else if (res && column.onChange) {\n column.onChange(res);\n }\n });\n }\n\n addNewRow(row: any, addRow: boolean = false) {\n this.refreshGridTerminator()\n this.componentTableRef = this.table;\n this.columns.forEach((column) => {\n if (\n column.filter &&\n column.component &&\n column.filter.type === 'calendar'\n ) {\n if (addRow) {\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\n } else {\n row[column.field + '_secondType'] = EGridColumnType.DATE;\n }\n }\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n });\n this.rowClickData = row;\n this.addNewRowCheck = true;\n this.dropdownInput = false;\n this.sortDisabled = true;\n this.onGridRowAdd.emit(row);\n }\n\n /**\n * open Dialog in grid\n */\n openGridDialog(column: IGridColumn | any, row: any) {\n var isDisabled = column.disabled\n ? true\n : row[column.field+'_obj']?.action && row[column.field+'_obj'].action.disabled\n ? true\n : false;\n this.onClickEvent(column, row);\n setTimeout(() => {\n this.rowClickData = row;\n if (column.data && column.data.data && row[column.field + '_obj']) {\n column.data.data = row[column.field + '_obj']?.dialogData;\n }\n\n if (column.component && column.data && this.rowClickData && !isDisabled) {\n const data = { ...column.data };\n data.data = utilities.autoSetLookupData(\n column.data.data,\n this.rowClickData\n );\n const ref = this.dialogService.open(column.component, data);\n const componentName = column.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((data: any) => {\n if (data && column.onReturn) {\n column.onReturn(data, this.rowClickData);\n } else if (data) {\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(data);\n }\n }\n });\n }\n }, 10);\n }\n\n browserCloseEvent(event: boolean = false) {\n this.gridService.columnFocusedOut = event;\n }\n\n setMultiSelectData(column: IGridColumn, selectedValue: any) {\n if (selectedValue && column.type == EGridColumnType.MULTISELECT) {\n if (selectedValue && selectedValue?.toString()?.includes(',')) {\n selectedValue = selectedValue?.toString()?.split(',')?.map((value) => column.data?.find((option) => option.value?.toString() === value?.toString())?.label)?.toString();\n } else {\n selectedValue = column.data?.find((option) => option.value?.toString() === selectedValue?.toString())?.label;\n }\n }\n return selectedValue;\n }\n\n setTextBoxReadOnlyValue(row: any, column: any){\n let value : any;\n if(column.displayText){\n value = column.displayText; \n }else if(row[column.field + '_obj']?.action?.displayText){\n value = row[column.field + '_obj']?.action?.displayText;\n }else if(row[column.field + '_obj']?.action?.displayField){\n value = row[row[column.field + '_obj']?.action?.displayField?.toLowerCase()];\n }else if(column.displayField){\n value = row[column.displayField?.toLowerCase()];\n }else {\n value = row[column.field];\n }\n return value;\n }\n\n /**\n * return conditional base value and title\n */\n setConditionBaseValue(row: any, column: any) {\n delete row['undefined'];\n let value: any;\n if (column.type == EGridColumnType.DATE) {\n let newValue: any;\n if (typeof (row[column.field+'_obj']) === \"object\" && row[column.field+'_obj']?.action) {\n newValue = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.field?.toLowerCase()+'_obj']?.text\n } else {\n newValue = row[column.field];\n }\n\n if (newValue) {\n if (column.timeOnly) {\n value = this.setTimeFormat(newValue);\n } else {\n let format = this.setFormat(column);\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\n }\n }\n } else {\n value = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField?.toLowerCase()]\n : row[column.field + '_obj'] &&\n row[column.field + '_obj'].displayText === null\n ? ''\n : row[column.field + '_obj']?.displayText\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ?\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ?\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\n : column.format ? this.datePipe.transform(row[column.field + '_obj'].displayText, this.setFormat(column)) : row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : column.icon ? column.header\n : row[column.field];\n }\n return value;\n }\n\n setFormat(column) {\n let format = '';\n if (column?.format) {\n switch (column.format) {\n case EGridFormatType.SMALLDATE: {\n format = 'MM/dd/yy';\n break;\n }\n case EGridFormatType.SHORTDATE: {\n format = 'MM/dd/yyyy';\n break;\n }\n case EGridFormatType.MEDIUMDATE: {\n format = 'M d, yy';\n break;\n }\n case EGridFormatType.LONGDATE: {\n format = 'MM/dd/YY, h:mm a';\n break;\n }\n case EGridFormatType.PERIOD: {\n format = 'MM/yy';\n break;\n }\n default: {\n format = column.format;\n break;\n }\n }\n }\n return format\n }\n\n setDropdwonReadOnlyValue(row: any, column: any) {\n delete row['undefined'];\n const value = row[column.displayField]\n ? row[column.displayField]\n : column.data?.find(dropdownVal => dropdownVal?.value == row[column.field])\n ? column.data?.find(dropdownVal => dropdownVal?.value == row[column.field])?.label\n : row[column.field];\n return value;\n }\n\n\n /**\n * open Delete Confirmation dialog when click on delete icon in Action column\n */\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\n event.stopPropagation();\n if (columnAction.tooltip.toLowerCase() === 'delete') {\n if (columnAction.confirmDialog === false) {\n columnAction.onClick(row);\n } else {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n columnAction.onClick(row);\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n } else {\n columnAction.onClick(row);\n }\n }\n\n /**\n *\n * @param event : LazyLoadEvent\n * Triggers everytime a server side filter is trigger\n */\n handleServerSideEvents(event: any) {\n this.gridfilter = event;\n setTimeout(() => {\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((x: any) => {\n if (event.filters[x.field]) {\n event.filters[x.field].value = x.filterValue;\n }\n });\n }\n\n this.loading = this.autoLoadData;\n this.serverFilters = {\n filters: this.lookupFilters\n ? this.gridService.getGridFilters(event, this.selectedColumns)\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\n ...(this.pagination && {\n page: this.gridService.getGridPagination(event),\n pageSize: event.rows || 10,\n }),\n };\n\n if (\n this.serverFilters?.filters &&\n this.serverFilters?.filters.length > 0 &&\n (this.allowCaching || this.softCaching)\n ) {\n if (!this.softCaching && this.componentTableRef?.id) {\n localStorage.setItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl(), JSON.stringify(this.serverFilters));\n } else if (this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = this.serverFilters;\n }\n } else {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = {};\n }\n\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\n this.globalData\n );\n this.isCheckBoxChangeEventCalled = false;\n this.onServerSideEventChange.emit(serverFilterValues);\n }, 950);\n }\n\n /**\n * @param event\n * Passes applied pagination to parent on page change\n */\n handleServerSidePagination(event: IGridPaginationEvent) {\n this.onPageChange.emit(event);\n }\n\n selectedRow(row: any) {\n this.onRowCheckBox.emit(row);\n }\n\n // set time format\n setTimeFormat(date: any) {\n let value: any = '';\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\n value = utilities.setTimeInDate(date);\n } else {\n value = this.datePipe.transform(date, 'hh:mm a');\n }\n return value;\n }\n\n //open hyperlink in edit case\n openLink(url: any) {\n if (url) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n }\n\n /**\n *\n * @param row\n * Sets values to editable row\n * Row's data is preseved to prevent mutation\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\n */\n\n refreshGridTerminator() {\n if (this.setGridRefreshTime) {\n this.reloadPage?.unsubscribe();\n }\n }\n\n onRowEditInit(row: any) {\n this.refreshGridTerminator()\n let selectedRow = { ...row };\n Object.entries(selectedRow).forEach(([key, value]: any) => {\n this.columns.forEach((col: any) => {\n if (this.setDropdownFilter) {\n this.setDropdownFilterValue(col, row, key);\n this.setDropdownFilter = false;\n }\n // set the autoComplete Value in edit mode\n if (\n col.type === EGridColumnType.AUTOCOMPLETE &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n value &&\n value.length > 0\n ) {\n if(col.displayField){\n selectedRow[col.field].forEach((row) => {\n row[col.field?.toLowerCase() + '_temp'] = row[col.displayField];\n row[col.displayField] = row[col.field];\n });\n }\n let newValue = value.map((x: any) => x[col.displayField]);\n if (newValue?.toString()?.includes(';')) {\n row[col.field] = newValue\n ?.toString()\n ?.replaceAll(';', ',')\n ?.split(',')\n ?.map((x: any) => ({ [col.displayField ? col.displayField : col.field]: x, [col.field+ '_temp']: value[0][col.field] }));\n }\n }\n\n // set lookup control field based on display field.\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\n if (col.field === key) {\n row[col.field] = {\n text: row[col.displayField],\n value: row[col.field],\n };\n }\n }\n\n if (col.type === EGridColumnType.DROPDOWN) {\n let option = col?.data?.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n if (\n col.field?.toLowerCase() === key?.toLowerCase() &&\n col.type === EGridColumnType.DATE\n ) {\n value = value?.action ? value.text : value;\n if (row[col.field] !== null) {\n if (row[key+'_obj']?.action && Object.keys(row[key+'_obj']?.action)?.length > 0) {\n row[key+'_obj'].text = new Date(value as string);\n } else {\n row[key] = new Date(value as string);\n }\n }\n\n // check the Minutes pattern\n if (\n (col.showTime || col.timeOnly) &&\n col.minutesInterval &&\n row[key]\n ) {\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\n }\n }\n if (\n col.type === EGridColumnType.DIALOG &&\n col.filter?.type === 'calendar' &&\n col.field.toLowerCase() === key.toLowerCase()\n ) {\n if (value === null) {\n row[key] = new Date();\n } else {\n row[col.field] = new Date(value);\n }\n }\n if (\n col.type === EGridColumnType.LINK &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n (col.allowSave === true || col.allowSave === undefined)\n ) {\n if (col.editLink === true) {\n row[key] = row[col.field + '_obj']?.hyperlink;\n } else if (col.editLink === false || col.editLink === undefined) {\n row[key] = value;\n }\n }\n });\n });\n\n this.editRowsRecords[row[this.dataKey]] = { ...row };\n this.editingRowKeys[row[this.dataKey]] = true;\n this.checkAction = true;\n this.dropdownInput = true;\n this.rowClickData = row;\n this.inEditMode = true;\n this.cancelAllRecords = false;\n this.saveAllRecord = false;\n this.sortDisabled = true;\n this.onGridRowEdit.emit(row);\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * set dropdown filter value\n */\n setDropdownFilterValue(col: any, row: any, key: string) {\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\n if (Object.values(col).some((value) => value == key)) {\n let obj = col.dropDownProp;\n let newFilters: any = [];\n if (obj.filters && obj.filters.length > 0) {\n obj.filters.forEach((filter: any) => {\n let newFilter = { ...filter };\n let filterKey = Object.keys(row).find((key) => {\n let matchKey: string = '';\n if (\n filter.value?.includes('{') &&\n key.toLowerCase() ===\n filter.value\n ?.toString()\n ?.toLowerCase()\n .replace('{', '')\n .replace('}', '')\n ) {\n matchKey = key;\n }\n return matchKey;\n });\n if (filterKey) {\n newFilter.value = row[filterKey];\n }\n newFilters.push(newFilter);\n });\n }\n\n this.gridService.setDropdownData(\n col,\n obj.uniqueKey,\n obj.valueProp,\n obj.labelProp,\n newFilters,\n row\n );\n\n let option = col.data.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n }\n }\n\n /**\n *\n * @param row\n * Passes the edited or newly created data to parent\n * In case of newly created data, dataKey and isNew prop is removed\n */\n onRowEditSave(selectedRow: any) {\n let automCompleteTempData = [];\n let lookupInfo: any = {};\n this.selectedColumns.forEach((column: any) => {\n delete selectedRow[column.field + '-data'];\n delete selectedRow[column.field + '_secondType'];\n if (\n column.type === EGridColumnType.LOOKUP_INPUT && selectedRow[column.field + '_obj']?.text\n ) {\n lookupInfo[column.field] = selectedRow[column.field + '_obj'].text;\n }\n\n if (column.formatter) {\n let value: any = selectedRow[column.field];\n if (column.formatter === 'char') {\n value = value === true ? 'Y' : 'N';\n } else if (column.formatter === 'numeric') {\n value = value === true ? '1' : '0';\n }\n selectedRow = { ...selectedRow, [column.field]: value };\n }\n\n //convert date into time format\n if (\n column.type === EGridColumnType.DATE\n ) {\n if (column.timeOnly && column.saveAsString) {\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\n }\n else if (!column.timeOnly && column.showTime) {\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\n } else if (selectedRow[column.field] && !column.timeOnly && column.saveAsString) {\n selectedRow[column.field] = selectedRow[column.field].toLocaleDateString();\n }\n }\n // if allowCalculate=true, divide the percent by 100\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n if (column.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n selectedRow[column.field] = parseFloat((selectedRow[column.field] / 100)?.toString()).toFixed(digitsInfo);\n } else {\n selectedRow[column.field] = selectedRow[column.field] / 100;\n }\n }\n }\n }\n\n //convert multiselect array into string\n if (\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\n ) {\n selectedRow[column.field] = selectedRow[column.field]?.toString();\n }\n\n // Saving AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n column.displayField &&\n selectedRow[column.field]?.length > 0\n ) {\n automCompleteTempData = [...selectedRow[column.field]];\n selectedRow[column.field] = selectedRow[column.field]?.map((row) => column?.optionValue && row[column.optionValue?.toLowerCase()] ?\n row[column.optionValue?.toLowerCase()] : row[column.field?.toLowerCase()])?.toString()?.replaceAll(',', ';');\n }\n });\n\n let row: any = { ...selectedRow };\n let keys = Object.keys(row);\n keys.forEach((key) => {\n if (key.includes('_obj')) {\n if (this.checkAction === false) {\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\n this.checkAction = true;\n }\n let obj: any = row[key];\n if (\n obj &&\n (obj.type === 'link' ||\n obj.type === 'iframe' ||\n obj.type === 'dialog')\n ) {\n delete row[key];\n }\n }\n });\n /**\n * just emit those fields who exist in the table\n */\n row = this.gridService.setRowValue(row);\n let obj: any = {};\n this.columns.forEach((column: any) => {\n if (\n (column.allowSave === true || column.allowSave === undefined || this.saveAllData)\n ) {\n obj[column.field] = row[column.field];\n if (\n column.type === EGridColumnType.DIALOG &&\n column.filter?.type === 'calendar'\n ) {\n obj[column.field] = this.datePipe.transform(\n obj[column.field],\n 'yyyy-MM-ddT00:00:00.000Z'\n );\n }\n\n //Set Decimal Fraction Value\n if (\n column.format &&\n column.format.type === EFormatType.DECIMAL &&\n row[column.field] &&\n !row[column.field].toString().includes('.')\n ) {\n let digitsInfo = '.00';\n let zero = '0';\n const formatParams = column.format?.formatParams;\n const fracDigits = column?.format?.formatParams?.digitsInfo;\n if (fracDigits) {\n for (let i = 1; i < fracDigits; i++) {\n zero = zero + '0';\n }\n digitsInfo = '.' + zero;\n }\n obj[column.field] = row[column.field] + digitsInfo;\n }\n } else if (\n row.isNew &&\n (column.allowSave === false || column.editable === false || !this.saveAllData)\n ) {\n delete row[column.field];\n }\n });\n delete selectedRow['undefined'];\n this.gridService.checkValidity(this.columns, row);\n const isValid = this.gridValidation(this.columns, row);\n if (isValid) {\n // set the grid updated/inserted data\n this.rowActionEvents(selectedRow);\n this.browserCloseEvent(false);\n if (row.isNew || row.isnew) {\n let { isNew, isnew, ...newRowObj } = row;\n if (!this.addDataKeyValue) {\n delete newRowObj[this.dataKey];\n }\n newRowObj = this.setRowsData(newRowObj);\n if (this.saveAllRecord) {\n this.saveRecordArray.push(newRowObj);\n } else {\n this.onRowAdd.emit(newRowObj);\n }\n } else {\n if (this.saveAllRecord) {\n this.saveRecordArray.push(obj);\n } else {\n if (this.checklist.length > 0)\n this.onRowUpdate.emit(this.setRowsData(this.checklist));\n else {\n this.onRowUpdate.emit(obj);\n }\n }\n }\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\n } else {\n this.editingRowKeys[row[this.dataKey]] = true;\n }\n // if all rows in read only mode then show editAllRows button. \n if (Object.values(this.editingRowKeys).every((value) => !value)) {\n this.inEditMode = false;\n this.hideEditAllRowsBtn = true;\n this.sortDisabled = false;\n }\n this.selectedColumns.forEach((column: any) => {\n // convert date into time\n if (\n selectedRow[column.field] &&\n (selectedRow[column.field]?.toString()?.includes('PM') ||\n selectedRow[column.field]?.toString()?.includes('AM'))\n ) {\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n if (column.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n selectedRow[column.field] = parseFloat((selectedRow[column.field] * 100)?.toString()).toFixed(digitsInfo);\n } else {\n selectedRow[column.field] = selectedRow[column.field] * 100;\n }\n }\n }\n } else if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n selectedRow[column.field]\n ) {\n // set autocompelet array data after save row\n selectedRow[column.field] = automCompleteTempData;\n } else if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n selectedRow[column.field]\n ) {\n // set LOOKUP_INPUT data after save row\n if (lookupInfo[column.field]) {\n selectedRow[column.field] = lookupInfo[column.field];\n }\n } else if (\n column.type === EGridColumnType.DROPDOWN &&\n column.optionLabel &&\n column.optionValue\n ) {\n this.setDropdownValue(column, selectedRow);\n }\n });\n this.addNewRowCheck = false;\n if (Object.values(this.editingRowKeys).every((value) => !value) && this.setGridRefreshTime) {\n this.refreshGrid();\n }\n this.isCheckBoxChangeEventCalled = false;\n }\n\n // check the validation of the field\n gridValidation(columns: any, row: any): boolean {\n if (!this.gridService.checkValidity(columns, row)) {\n let errorMessageDetails: string = '';\n columns?.forEach((column) => {\n if (column.errorMessage) {\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + ' , ' + column.errorMessage : column.errorMessage;\n }\n })\n let isRequired = columns.some(\n (column: any) => column.errorMessage && !row[column.field]\n );\n if (isRequired) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n return false;\n } else {\n return true;\n }\n }\n\n /**\n *\n * @param row : any\n * @param index : number\n * Clears out the edit row and replace with readable one\n */\n onRowEditCancel(row: any, index: number) {\n let rowInEditMode: boolean = Object.values(this.editingRowKeys).every((value) => !value);\n if (row?.isNew) {\n this.rowsData.splice(index, 1);\n } else {\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\n delete this.editRowsRecords[row[this.dataKey]];\n }\n delete this.editingRowKeys[row[this.dataKey]];\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, row);\n } else if (column.type === EGridColumnType.LOOKUP_INPUT && column.displayField) {\n this.rowsData[index][column.field] = row[column.field]?.value;\n }\n });\n this.inEditMode = false;\n if (rowInEditMode) {\n this.sortDisabled = false;\n }\n this.addNewRowCheck = false;\n this.inlineRowCancel.emit(row);\n setTimeout(() => {\n if (rowInEditMode && this.setGridRefreshTime) {\n this.refreshGrid();\n }\n }, 50);\n }\n\n /**\n * \n *\n *\n * @param row\n * Sends the row payload to parent for deletions\n */\n\n /**\n *set the gridData on row actions events\n */\n rowActionEvents(rowInfo, deleteRow: boolean = false) {\n let action: string = '';\n let gridRowsData: any[] = [...this.rowsData];\n const index = gridRowsData.findIndex((rowData) => rowInfo[this.dataKey] === rowData[this.dataKey]);\n if (index > -1) {\n if (deleteRow) {\n gridRowsData.splice(index, 1);\n this.rowsData = [...gridRowsData];\n action = 'delete';\n } else {\n if (this.addNewRowCheck) {\n action = 'insert';\n } else {\n action = 'update';\n }\n if (this.onGridRowActions.observers.length !== 0) {\n rowInfo['rowAction'] = action;\n }\n gridRowsData[index] = rowInfo;\n }\n }\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n this.onGridRowActions.emit(gridRowsData);\n }\n\n /**\n * open Delete confirmation dialog when trying to delete row\n */\n deleteRecord(row: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handleInlineCRUD',\n accept: () => {\n if (this.useServerSideEvents) {\n this.loading = true;\n }\n // set the grid deleted data \n this.rowActionEvents(row, true);\n this.onRowDelete.emit(row);\n this.confirmationService.close();\n this.inEditMode = false;\n this.loading = false;\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n /**\n * To set disabled the control\n */\n allowDisabled(column: any, row: any): boolean {\n let value: boolean = false;\n if (typeof (row[column.field + '_obj']) === 'object' && row[column.field + '_obj']?.action) {\n if (\n row[column.field + '_obj']?.action &&\n Object.keys(row[column.field + '_obj'].action)?.includes('disabled') && row[column.field + '_obj']?.action?.disabled === true\n ) {\n value = true;\n }\n } else if (column.disabled) {\n value = true;\n }\n return value;\n }\n\n /**\n * To set aggregate in grid footer\n */\n setAggregateText(column: IGridColumn) {\n if (column?.aggregate) {\n column.aggregate.forEach((col: any) => {\n if (this.rowsData && this.rowsData.length > 0) {\n let columnType: EGridAggregate = col.type;\n if (columnType === EGridAggregate.COUNT) {\n const count = this.rowsData.length;\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\n }\n\n if (\n columnType === EGridAggregate.SUM ||\n columnType === EGridAggregate.AVERAGE\n ) {\n const colValues: number[] = this.getColumnValues(column);\n if (colValues && colValues.length > 0) {\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\n if (columnType === EGridAggregate.SUM) {\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\n }\n if (columnType === EGridAggregate.AVERAGE) {\n const average = sum / colValues.length || 0;\n col.aggrValue = this.setAggregateFooterText(\n col,\n average,\n 'Avg'\n );\n }\n }\n }\n } else {\n col.aggrValue = '';\n }\n });\n }\n }\n\n /**\n * set grid Aggregate values\n */\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\n const digitsInfo = column.format?.digitsInfo;\n const caption: string =\n column.caption?.length > 0 ? column.caption : defaultCaption;\n\n const decimalPoint = isDecimalFormat\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\n : value?.toFixed(0);\n return `${caption} ${decimalPoint\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\n }\n\n /**\n * set decimat and numeric values\n */\n setNumericValues() {\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n this.rowsData.forEach((row) => {\n if (column?.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n row[column.field] = parseFloat((row[column.field] * 100)?.toString()).toFixed(digitsInfo); //THESE COMMENTED OUT LINES SHOULD RUN ON SAVE\n } else {\n row[column.field] = row[column.field] * 100;\n }\n } else if (digitsInfo) {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\n }\n } else if (column?.format?.type === 'decimal') {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\n }\n });\n }\n })\n }\n }\n\n /**\n * get column value based on column field\n */\n getColumnValues(column: IGridColumn) {\n let arr: any = [];\n this.rowsData.forEach((row) => {\n let keys = Object.keys(row);\n keys.map((key) => {\n if (column.field === key) {\n arr.push(row[key]);\n }\n });\n });\n return arr;\n }\n\n /**\n *\n * Export to PDF\n */\n exportPdf() {\n var exportData = this.setExportData([...this.rowsData], true);\n let doc = new jsPDF('p', 'pt');\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\n doc.save('Export.pdf');\n }\n\n /**\n * Sub-function to set rows for export to Pdf, and Excel\n * @rows param for rows\n * @isExcel param for export to excel indication\n */\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\n const headings: any = this.columns.map((column) => column.field);\n rows.forEach((row) => {\n for (var prop in row) {\n if (!headings.includes(prop)) {\n delete row[prop];\n }\n if (isPdf) {\n row[prop] =\n !row[prop] && typeof row[prop] !== 'boolean'\n ? ''\n : row[prop].toString();\n }\n }\n });\n return { rows, headings };\n }\n\n /**\n *\n * Export to Excel\n */\n exportExcel() {\n let exportData: any = this.exportDataToExcel();\n import('xlsx').then((xlsx) => {\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\n let rowIndex = 0;\n exportData.forEach((row: any) => {\n let colIndex = 0;\n this.selectedColumns.forEach((col: any) => {\n const cellValue: string = row[col.header];\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\n const linkText: string = cellValue.split('|')[0];\n let linkUrl: string = cellValue.split('|')[1];\n if (linkUrl && !linkUrl.startsWith('http')) {\n if (!linkUrl.startsWith('/')) {\n linkUrl = '/' + linkUrl;\n }\n linkUrl =\n window.location.protocol +\n '//' +\n window.location.hostname +\n linkUrl;\n }\n const cellAddress = xlsx.utils.encode_cell({\n c: colIndex,\n r: rowIndex + 1,\n });\n\n worksheet[cellAddress] = {\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\n };\n }\n\n colIndex++;\n });\n\n rowIndex++;\n });\n const workbook = {\n Sheets: { sheet1: worksheet },\n SheetNames: ['sheet1'],\n };\n const excelBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array',\n });\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\n });\n }\n\n exportDataToExcel() {\n let arr: any = [];\n this.rowsData.forEach((row: any) => {\n let obj: any = {};\n this.selectedColumns.forEach((column: any) => {\n const gridHeader = column.header;\n if (column.type === EGridColumnType.LINK) {\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\n } else {\n obj[gridHeader] = row[column.field];\n }\n });\n\n arr.push(obj);\n });\n return arr;\n }\n\n /**\n *\n * Export to excel (sub-method)\n */\n saveAsExcelFile(buffer: any, fileName: string): void {\n import('file-saver').then((FileSaver) => {\n let EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\n saveAs(data, fileName);\n });\n }\n\n /**\n *set config data of lookup control dialog\n */\n setLookupDialogConfig(row: any, column: any, data: any) {\n let selection: string = '';\n if (row[column.field] && typeof row[column.field] === 'object') {\n selection = row[column.field].text;\n } else if (column.displayField && row[column.displayField]) {\n selection = row[column.displayField];\n } else {\n selection = row[column.field];\n }\n\n if (column.field && typeof row[column.field] === 'object') {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\n let obj = utilities.autoSetLookupData(data, row);\n row[column.field + '-data'] = obj;\n }\n return {\n rowData: row[column.field + '-data'],\n selection: selection,\n column: column,\n };\n }\n\n /**\n * open link on lookupControl control in read only mode when editLink set true\n */\n openLookupHyperlink(column: IGridColumn, row: any) {\n if (column.editLink === true && column.component) {\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\n obj['component'] = column.component;\n const ref = this.openLookupDialog(obj);\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n }\n });\n }\n }\n\n /**\n * open lookup Dialog\n */\n openLookupDialog(column?: any, row: any = {}) {\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data;\n if (row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl) {\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.header ? columnData.header = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.header : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.width ? columnData.width = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.width : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.height ? columnData.height = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.height : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.valueProp ? columnData.valueProp = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.valueProp : \"\"\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.labelProp ? columnData.labelProp = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.labelProp : \"\"\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.data ? columnData.data = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.data : ''\n }\n const ref = this.dialogService.open(column.component, {\n ...columnData,\n data: {\n selection: column.selection,\n field: column.column.field,\n labelProp: column.column.lookupControl?.data?.labelProp,\n ...column.rowData,\n },\n });\n const componentName = row[column.column.field]?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return ref;\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(column: any, row?: any) {\n this.onClickEvent(column, row);\n let obj: any = this.setLookupDialogConfig(\n row,\n column,\n row[column.field + '_obj']?.action?.lookupControl?.data?.data\n ? row[column.field + '_obj']?.action?.lookupControl?.data?.data : column?.lookupControl?.data?.data\n );\n\n obj['component'] = row[column.field + '_obj']?.action?.lookupControl?.component ? row[column.field + '_obj']?.action?.lookupControl?.component : column.lookupControl?.component;\n const ref = this.openLookupDialog(obj, row);\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe(\n (res) => {\n if (res) {\n let value = utilities.setDialogResponse(\n column,\n column.lookupControl,\n res\n );\n res = utilities.objConvertToLower(res);\n let labelProp = column?.lookupControl?.data?.labelProp?.toLowerCase();\n let valueProp = column?.lookupControl?.data?.valueProp?.toLowerCase();\n let columnField = column?.field?.toLowerCase();\n if (column.displayField) {\n row[columnField] = {\n text: res[labelProp ? labelProp : column.displayField.toLowerCase()],\n value: res[valueProp ? valueProp : columnField],\n }\n row[column.displayField] = row[columnField];\n } else if (value && value.value) {\n value['field'] = columnField;\n if (labelProp || valueProp) {\n row[columnField] = {\n text: res[labelProp ? labelProp : res[labelProp]],\n value: res[valueProp ? valueProp : res[labelProp]],\n };\n } else {\n row[columnField] = value.value;\n }\n } else {\n if (labelProp || valueProp) {\n row[columnField] = {\n text: res[labelProp ? labelProp : valueProp ? valueProp : res[columnField]],\n value: res[valueProp ? valueProp : res[columnField]],\n };\n } else {\n row[columnField] = res[columnField];\n }\n }\n }\n if (typeof (row[column.field]) === \"object\") {\n row[column.field + '_obj'] = {...row[column.field + '_obj'], text: row[column.field]};\n row[column.field] = row[column.field]?.value;\n } else {\n row[column.field + '_obj'] = {...row[column.field + '_obj'], text: {text: res[column.field?.toLowerCase()], value: res[column.field?.toLowerCase()] }};\n }\n if (column.onReturn) {\n column.onReturn(res, row);\n }\n if (row[column.field] !== obj.selection) {\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setFilterLookup(column: any) {\n this.gridService.setLookUpFilter(column, this.dialogService);\n }\n\n // set lookup value that display in readOnlyMode\n setLookupReadOnlyValue(row, column){\n let value = '';\n if(row[column.field+'_obj']?.text ){\n value = row[column.field+'_obj']?.text.text;\n }else if(row[column.displayField]){\n if(typeof (row[column.displayField]) === \"object\"){\n value = row[column.displayField]?.text;\n }else{\n value = row[column.displayField];\n } \n }else{\n value = row[column.field];\n }\n return value;\n }\n\n // Check calender value is changed or not\n calenderChangeEvent(column: any, row: any) {\n let valueChange: boolean = false;\n if (\n column.timeOnly &&\n this.datePipe.transform(row[column.field], 'hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\n ) {\n valueChange = true;\n } else if (\n column.showTime &&\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\n ) {\n valueChange = true;\n } else if (\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\n ) {\n valueChange = true;\n }\n if (valueChange) {\n this.browserCloseEvent(true);\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n this.calenderPreviousValue = '';\n }\n onAutoCompleteFocusOut(e, column, row) {\n if (column.type == EGridColumnType.AUTOCOMPLETE) {\n if (column.allowAutoCompleteSave && e.target.value && !column.data.length) {\n ///check the correct format if data.contains cuz its an array of arrays with objects.\n if (confirm(`Do you want to add ${e.target.value} to the selection?`)) {\n if (column.uniqueKey) {\n var message = this.gridService\n .addAutoCompleteValue(column.uniqueKey, e.target.value, column, row)\n .then(() => {\n\n if (column.onReturn) {\n column.onReturn(e.target.value, column);\n }\n });\n }\n }\n }\n }\n }\n\n onFocusOutEvent(column: IGridColumn, row: any) {\n if (column.type !== EGridColumnType.AUTOCOMPLETE || (!column.allowAutoCompleteSave)) {\n this.gridService.checkValidity([column], row);\n if (column.type === EGridColumnType.DATE) {\n this.calenderChangeEvent(column, row);\n }\n if (column.onFocusOut) {\n column.onFocusOut(row);\n } else if (\n column.onReturn &&\n column.type !== EGridColumnType.LOOKUP_INPUT\n ) {\n column.onReturn(row);\n }\n }\n this.isCheckBoxChangeEventCalled = false;\n }\n\n setFilterFocusOut(col: any, filter?: any, event?: any) {\n if(col?.filter?.type === GridFilterControlType.LOOKUP_INPUT){\n setTimeout(() => {\n this.setGridFilter(col, filter, event);\n },250);\n }else {\n this.setGridFilter(col, filter, event);\n }\n }\n\n setGridFilter(col: IGridColumn, filter?: any, event?: any){\n this.gridFilterObj = { column: col, filter: filter, event: event };\n const newColumn: any = { ...col };\n //change filter calender format\n if (newColumn.type === 'date' && newColumn.filterValue) {\n newColumn.filterValue = this.datePipe.transform(\n col.filterValue.toString().trim(),\n 'yyyy-MM-dd'\n );\n }\n this.filterObj(newColumn);\n localStorage.setItem('applyFilter', JSON.stringify(false));\n }\n\n filterObj(col: any) {\n const obj = {\n field: col.field,\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\n operator: col.operator ? col.operator : 'and',\n tableAlias: col.tableAlias ? col.tableAlias : '',\n value: col.filterValue,\n };\n this.globalFiltersArray.push(obj);\n }\n\n applyEnterEvent(filter: any, event: any, column: any) { \n this.gridService.applyFilterEvent = true;\n this.autoLoadData = true;\n this.onApplyFilter.emit();\n this.filterObj(column);\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\n } else if (filter && column.type === EGridColumnType.BOOLEAN && column?.filter?.type === GridFilterControlType.CHECKBOX && column.filtering !== false) {\n filter(event?.checked);\n } else if (filter) {\n filter(event?.target?.value);\n }\n }\n\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\n if (column.filterValue === null) {\n this.removeNullFilters(column);\n this.setFilterFocusOut(column, filter, event);\n }\n }\n\n backspaceEvent(event: any, column: any) {\n if (\n event.key === 'Backspace' &&\n (column.filterValue?.toString().length === 1 ||\n column.filterValue?.toString() === '' ||\n column.filterValue === null)\n ) {\n this.removeNullFilters(column);\n } else if (column.type === EGridColumnType.DATE && column.filterValue === null) {\n this.removeNullFilters(column);\n }\n }\n\n removeNullFilters(column: any) {\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n let arr = [...this.globalFiltersArray];\n let index = arr.findIndex((i) => i.field === column.field);\n arr.splice(index, 1);\n this.globalFiltersArray = arr;\n }\n }\n\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\n removingFilters(event: any, column: IGridColumn) {\n if (\n (event.key === 'Backspace' || event.key === 'Delete') &&\n column.filterValue?.toString().length === 0\n ) {\n let searchFilters;\n if (!this.softCaching && this.componentTableRef?.id) {\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl()) as any);\n } else if (this.componentTableRef?.id) {\n searchFilters = this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()];\n }\n if (searchFilters && searchFilters.filters) {\n if (searchFilters.filters.length > 0) {\n let index = searchFilters.filters.findIndex(\n (x: any) => x.field === column.field\n );\n if (index > -1) {\n if (searchFilters.filters.length === 1 && this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = [];\n localStorage.removeItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl());\n } else {\n searchFilters.filters.splice(index, 1);\n if (!this.softCaching && this.componentTableRef?.id) {\n localStorage.setItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl(), JSON.stringify(searchFilters));\n } else if (this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = searchFilters;\n }\n }\n }\n }\n }\n }\n }\n\n // Add Click Button Event on Grid.\n onClickButton(column: any, row: any) {\n this.openGridDialog(column, row);\n }\n\n // Invoke onClick Event.\n onClickEvent(column: any, row: any) {\n if (column.type === EGridColumnType.LINK && (column.editLink === false || column.editLink === undefined) && column.editable !== true && column.disabled !== true) {\n if (column && column.onClick && column.disabled !== true && row[column.field + '_obj']?.action?.disabled !== true) {\n column.onClick(row);\n } else {\n let a = document.createElement('a');\n a.href = row[column.field + '_obj']?.hyperlink;\n a.target = column.target ? column.target : '_blank',\n a.click();\n }\n }\n if (column.type === EGridColumnType.DATE && row[column.field]) {\n this.calenderPreviousValue = row[column.field];\n } else if (\n !row[column.field] &&\n column.type === EGridColumnType.DATE &&\n (column.showTime || column.timeOnly) &&\n column.minutesInterval\n ) {\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\n }\n if (column && column.onClick && column.disabled !== true && row[column.field + '_obj']?.action?.disabled !== true) {\n column.onClick(row);\n }\n }\n\n // set the select value of multi-select\n showOption(column, row) {\n if (row[column.field]) {\n if (typeof (row[column.field]) === \"string\" && !row[column.field]?.includes(',')) {\n row[column.field] = [row[column.field]];\n } else if (row[column.field]?.toString()?.includes(',')) {\n row[column.field] = row[column.field]?.split(',');\n }\n }\n }\n\n onClearValue(column, row) {\n if (column?.type === EGridColumnType.DROPDOWN && !row[column.field]) {\n row[column.field] = null;\n }\n }\n\n // Invoke onChange Event\n onChangeEvent(column: any, row: any) {\n // set dropdown displayField value base on optionLabel & optionValue.\n this.displayFieldDropdownValue(column, row);\n this.onClearValue(column, row);\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n this.setDropdowndataValue = false\n this.isCheckBoxChangeEventCalled = false;\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n }\n\n checkBoxChangeEvent(event: any, column: IGridColumn, row) {\n row[column.field] = event;\n if (this.rowsChange.observers?.length) {\n this.isCheckBoxChangeEventCalled = true;\n }\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n }\n\n // set dropdown displayField value base on optionLabel & optionValue.\n displayFieldDropdownValue(column: any, row: any) {\n if (\n column?.type === EGridColumnType.DROPDOWN &&\n column.displayField &&\n column.displayField?.length > 0\n ) {\n const key: any = Object.keys(row)?.find(\n (rowInfo) =>\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\n );\n const displayFieldValue = column.data.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n if (key && displayFieldValue) {\n row[key] = displayFieldValue[column.optionLabel];\n }\n }\n }\n\n // Add autoSearch on Grid.\n autoSearch(event: any, column: any, row: any) {\n if (event && column && row) {\n column.onReturn(event.query, column, row);\n }\n }\n\n // Refresh grid\n refreshGrid() {\n this.reloadPage = interval(this.setGridRefreshTime).subscribe((x) => {\n if (this.gridfilter == undefined) {\n this.gridfilter = { filters: [], sorts: [] };\n }\n if (this.setGridRefreshTime) {\n this.handleServerSideEvents(this.gridfilter);\n }\n });\n }\n\n // Remove FilterValues\n cleargridFiltersValue() {\n const globalFilterClearValueBtn = document.getElementById(\n 'clearGlobalFilterBtn'\n );\n if (globalFilterClearValueBtn) {\n globalFilterClearValueBtn.click();\n }\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((col) => {\n col.filterValue = null;\n this.filterObj(col);\n });\n }\n }\n\n editAllRowsAtOnce() {\n if (this.editRowPermission) {\n if (this.getClassForEditAllRows('editRow')) {\n if (this.selectedColumns.some((column) => column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))) {\n this.editAllRecord = true;\n }\n this.hideEditAllRowsBtn = false;\n this.sortDisabled = true;\n }\n }\n }\n\n saveAllRowsAtOnce() {\n this.getClassForEditAllRows('saveRow');\n }\n\n // reset the grid rowsValue to orignal values\n cancelAllRowsAtOnce() {\n this.rowsData = [...this.rowsDataCopy];\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n this.selectedColumns?.forEach((column) => {\n if (column.type === EGridColumnType.DATE) {\n this.rowsData?.forEach((row) => {\n if (row[column.field]) {\n row[column.field] = new Date(row[column.field]);\n }\n })\n }\n\n });\n if (this.columns?.length) {\n this.columns.forEach((column) => {\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n })\n }\n this.onCancelAllRows.emit(this.rowsData);\n }\n\n getClassForEditAllRows(className: string = '') {\n let success: boolean = false;\n const getBtns: any =\n this.elementRef?.nativeElement?.getElementsByClassName(className);\n if (getBtns && getBtns.length > 0) {\n success = true;\n if (className === 'saveRow') {\n this.editAllRecord = false;\n this.saveAllRecord = true;\n const records$ = [];\n setTimeout(() => {\n for (let item of getBtns) {\n const rowSave = new Promise((resolve, reject) => {\n item.click();\n resolve(item);\n });\n records$.push(rowSave);\n }\n Promise.all(records$).then((response) => {\n if (this.checklist.length > 0) {\n this.onRowUpdate.emit(this.setRowsData(this.checklist));\n }\n else {\n this.generateRowsDataCopy = true;\n this.onRowUpdate.emit(this.saveRecordArray);\n }\n this.saveRecordArray = [];\n });\n }, 20)\n } else {\n this.saveAllRecord = false;\n for (let item of getBtns) {\n if (className == 'cancelRow') {\n setTimeout(() => {\n item.click();\n }, 50);\n } else {\n item.click();\n }\n }\n }\n }\n return success;\n }\n\n //Focused calender input on select date\n selectDate(column: any) {\n document.getElementById(column.field)?.focus();\n }\n\n //apply filter on grid when search btn clicked\n applyGirdFilterBtn() {\n this.isCheckBoxChangeEventCalled = false;\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\n this.applyEnterEvent(\n this.gridFilterObj.filter,\n this.gridFilterObj.event,\n this.gridFilterObj.column\n );\n }\n }\n\n // invoke multiSelection click event\n multiCheckBoxOnclick(rowInfo: any, event: any, singleSelection: boolean = false) {\n if (!singleSelection) {\n if (Array.isArray(rowInfo) && rowInfo?.length > 0 && event?.target?.ariaChecked) {\n this.checklist = [...rowInfo];\n } else if (Array.isArray(rowInfo) && event?.target?.ariaChecked == null) {\n this.checklist = [];\n }\n if (!Array.isArray(rowInfo) && event?.target?.ariaChecked && !this.checklist.some((row) => row.id == rowInfo.id)) {\n this.checklist.push(rowInfo);\n } else if (event?.target?.ariaChecked == null) {\n if (this.checklist.some((row) => row?.id == rowInfo.id)) {\n const index = this.checklist.findIndex((row) => row?.id == rowInfo?.id);\n this.checklist.splice(index, 1);\n }\n }\n this.onMultiSelectionChange.emit(this.setRowsData(this.checklist));\n } else {\n this.checklist = [rowInfo]\n this.onMultiSelectionChange.emit(this.setRowsData(rowInfo));\n }\n }\n\n setRowsData(rowsData) {\n if (Array.isArray(rowsData)) {\n rowsData.forEach((row: any) => {\n row = this.removeRowObj(row);\n row = this.gridService.setRowValue(row);\n })\n } else {\n rowsData = this.removeRowObj(rowsData);\n rowsData = this.gridService.setRowValue(rowsData);\n }\n return rowsData;\n }\n\n removeRowObj(row: any){\n const keys = Object.keys(row);\n if (keys?.length > 0) {\n keys.forEach((key) => {\n if (key.includes('_obj')) {\n delete row[key];\n }\n })\n }\n return row;\n }\n\n applyDropdownFilter(filter: any, event: any) {\n filter(event.target);\n }\n\n searchDropdownFilter(filter: any, event: any, column: any) {\n this.setFilterFocusOut(column, filter, event);\n this.dropDownFilter = { filter: filter, event: event, column: column };\n if (column.allowSearch !== true) {\n this.applyDropdownFilter(filter, event);\n }\n }\n\n lookupClearValue(column: IGridColumn, row?: any) {\n if (row) {\n row[column.field] = '';\n } else {\n column.filterValue = '';\n this.setFilterFocusOut(column);\n }\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n // invoke when click header checkbox filter\n clickCheckBoxFilter(column: IGridColumn) {\n if (this.editAllRecord) {\n if (\n column.type === EGridColumnType.BOOLEAN\n &&\n column?.filter?.type === 'checkbox' && column.filtering != false\n ) {\n this.rowsData.forEach((row) => {\n if (row[column.field+'_obj']?.action?.disabled !== true && !column.disabled) {\n row[column.field] = column.filterValue;\n }\n });\n }\n }\n this.onCheckBoxFilterClick.emit(column);\n }\n //set header checkbox value for getting all columns on stay admin\n setHeaderCheckBoxValue(value: any) {\n this.isIncludedAllColumns.emit(value);\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(column: any, row: any) {\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if (year && year.length === 4) {\n this.calendarFormat = 'mm/dd/yy';\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\n } else if (year && year.length) {\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n}\n\n\n\n","import { Injectable } from '@angular/core';\nimport {\n EValidator,\n IFormField,\n EFormControl,\n AddFormField,\n ISetFilter,\n IDropDownRequest,\n IListFilter,\n IReportBtn,\n IDynamicForm,\n} from '../models/form.model';\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\nimport { HyperlinkService } from '../services/hyperlink.service';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { RequestService } from './request.service';\nimport * as utilities from './utilities.service';\nimport { IDictionary } from '../models/common.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n public fieldFocusedOut:boolean = false;\n constructor(\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) { }\n\n checkValidity(formFields: IFormField[]): boolean {\n let isValid: boolean = true;\n\n formFields.map((item: IFormField) => {\n if (item.validations && !item.disabled) {\n let itemValue = item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object' ? item.value.value : item.value\n // if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\n // item.value = item.value.value;\n // }\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, itemValue, i);\n const valid =\n item.validations && typeof item.label === 'object'\n ? item.label.name\n : item.label;\n if (\n item.validations[i].type == EValidator.REQUIRED &&\n !itemValue &&\n !item.hidden &&\n valid\n ) {\n isValid = itemValue\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MINLENGTH &&\n itemValue.length < item.validations[i].expression\n ) {\n isValid =\n itemValue && itemValue.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MAXLENGTH &&\n itemValue.length > item.validations[i].expression\n ) {\n isValid =\n itemValue && itemValue.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MINIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(itemValue < item.validations[i].expression){\n isValid =\n itemValue && itemValue.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MAXIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(itemValue > item.validations[i].expression){\n isValid =\n itemValue && itemValue.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.PATTERN &&\n !itemValue.match(item.validations[i].expression)\n ) {\n isValid =\n itemValue && itemValue.match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.NUMERIC &&\n !itemValue.toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n itemValue && itemValue?.toString()?.match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.PHONE &&\n !itemValue.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n itemValue && itemValue.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.DECIMAL &&\n !itemValue?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n itemValue && itemValue.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.EMAIL &&\n !itemValue.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n itemValue &&\n itemValue.match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n addFormField(fieldInfo: IFormField): IFormField {\n if (!fieldInfo.label) {\n fieldInfo.label = fieldInfo.field;\n }\n const formField: any = {\n label: fieldInfo.label,\n field: fieldInfo.field,\n displayField: fieldInfo.displayField,\n control: fieldInfo.control,\n showOption: fieldInfo.showOption,\n column: fieldInfo.column,\n row: fieldInfo.row,\n minutesInterval: fieldInfo.minutesInterval,\n value: fieldInfo.value,\n format: fieldInfo.format,\n hidden: fieldInfo.hidden,\n permissions: fieldInfo.permissions,\n validations: fieldInfo.validations,\n id: fieldInfo.id,\n hyperlink: fieldInfo.hyperlink,\n data: fieldInfo.data,\n lookupControl: fieldInfo.lookupControl,\n componentControl: fieldInfo.componentControl,\n optionLabel: fieldInfo.optionLabel,\n optionValue: fieldInfo.optionValue,\n saveAsString: fieldInfo.saveAsString,\n showAllValue: fieldInfo.showAllValue,\n onClick: fieldInfo.onClick,\n onReturn: fieldInfo.onReturn,\n onFocusOut: fieldInfo.onFocusOut,\n onChange: fieldInfo.onChange,\n tables: fieldInfo.tables,\n disabled: fieldInfo.disabled,\n disabledText: fieldInfo.disabledText,\n timeOnly: fieldInfo.timeOnly,\n isPassword: fieldInfo.isPassword,\n textType: fieldInfo.textType,\n monthOnly: fieldInfo.monthOnly,\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\n height: fieldInfo.height,\n showBottomBorder: fieldInfo.showBottomBorder,\n allowSearch: fieldInfo.allowSearch,\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\n SetfileTypes: fieldInfo.SetfileTypes,\n icon: fieldInfo.icon,\n color: fieldInfo.color,\n card: fieldInfo.card,\n uniqueKey: fieldInfo.uniqueKey,\n azureContainer: fieldInfo.azureContainer,\n class: fieldInfo.class\n };\n\n return formField;\n }\n\n addCheckbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CHECKBOX;\n return this.addFormField(fieldInfo);\n }\n\n addTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n fieldInfo.disabled = true;\n fieldInfo.showBottomBorder = true;\n return this.addFormField(fieldInfo);\n }\n\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NUMERIC;\n return this.addFormField(fieldInfo);\n }\n\n addSpaceField(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.SPACER;\n return this.addFormField(fieldInfo);\n }\n\n addNewLine(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.BREAK_LINE;\n return this.addFormField(fieldInfo);\n }\n\n addTextArea(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.TEXTAREA;\n return this.addFormField(fieldInfo);\n }\n \n // Adding Report button for DynamicForm\n addReportBtn(fieldInfo: IReportBtn) {\n fieldInfo.control = EFormControl.REPORT;\n return fieldInfo;\n }\n\n addNoteField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NOTE_FIELD;\n return this.addFormField(fieldInfo);\n }\n\n addHyperlink(fieldInfo: AddFormField) {\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\n fieldInfo.control = EFormControl.HYPERLINK;\n return this.addFormField(fieldInfo);\n }else{return this.hyperlinkService.buildUrl(\n fieldInfo?.hyperlink?.linkId,\n fieldInfo.hyperlink?.params\n ).then((res: any) => {\n const params = fieldInfo?.hyperlink?.params;\n const link = res;\n if(res && params){\n Object.keys(params).forEach((key)=>{\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\n res = res.replace('{{'+key+'}}', params[key])\n } \n })\n }\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\n fieldInfo.hyperlink.link = res;\n }\n fieldInfo.control = EFormControl.HYPERLINK;\n let obj: any = this.addFormField(fieldInfo);\n obj['orignalLink'] = link;\n return obj;\n });\n }\n}\n\n addCalendar(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CALENDAR;\n return this.addFormField(fieldInfo);\n }\n\n // add AutoComplete for Form\n addAutoComplete(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\n return this.addFormField(fieldInfo);\n }\n\n // Search AutoComplete Data for form\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord: boolean = response.records.some((record: any)=> record[formField.displayField] && record[formField.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[formField.displayField]: search});\n }\n }\n formField.data = [...response.records];\n });\n }\n\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\n fieldInfo.control = EFormControl.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\n }\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\n return this.dropdownService\n .setDropDownList(\n uniqueKey,\n valueProp,\n labelProp,\n filters\n )\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addFormField(fieldInfo);\n })\n .catch((error: any) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n addLookUp(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDialog(fieldInfo: AddFormField): IFormField {\n return this.addLookUp(fieldInfo);\n }\n\n addComponent(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.COMPONENT;\n return this.addFormField(fieldInfo);\n }\n\n addHeader(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SECTION_HEADER;\n fieldInfo.class = 'form-header';\n return this.addFormField(fieldInfo);\n }\n\n addMultiSelect(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.MULTISELECT;\n return this.addFormField(fieldInfo);\n }\n\n addFileUpload(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.FILE_UPLOAD;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayFile(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.DISPLAY_FILE;\n return this.addFormField(fieldInfo);\n }\n\n // Adding OnClick Button Function for DynamicForm\n addButton(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.ADD_BUTTON;\n return this.addFormField(fieldInfo);\n }\n\n // Adding Switch Function for DynamicForm\n addSwitch(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SWITCH;\n return this.addFormField(fieldInfo);\n }\n\n // start add new card functionality\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\n fieldInfo.control = EFormControl.CARD;\n if (cardData && cardData.uniqueKey) {\n if(cardData.sorts?.length > 0){\n cardData.sorts.forEach((res) =>{\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\n });\n } \n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\n return this.getCardList(uniqueKey, filters, sorts)\n .then((res: any) => {\n fieldInfo.card.data = res.records;\n return this.addFormField(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n // load component on form\n setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\n formSections?.forEach((section)=>{\n section.fields.forEach((field:any)=>{\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\n let keys = Object.keys(value);\n keys.forEach((key)=>{\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\n });\n utilities.changeDynamicFormState(id, field.componentControl.data);\n };\n });\n });\n }\n\n // set formfield value\n setFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n value: any,\n displayText: string = ''\n ) {\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (displayText && displayText.length > 0) {\n formField.value = { text: displayText, value: value };\n } else {\n formField.value = value;\n }\n }\n });\n });\n }\n\n // set formfield property\n setFormFieldProp(\n { formSections }: IDynamicForm,\n field: string,\n props: IDictionary[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n if (\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\n ) {\n return props.map((prop: any) => {\n if (formField.hasOwnProperty(prop.name)) {\n if(prop.name === 'label' && typeof formField.label === 'object' && !prop.override){\n return (formField[prop.name].name = prop.value);\n }else{\n return (formField[prop.name] = prop.value);\n }\n }\n else{\n return (formField[prop.name] = prop.value);\n \n }\n });\n }\n });\n });\n }\n\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\n return new Promise((resolve, reject) => {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\n .subscribe(\n (response: any) => {\n if (response) {\n return resolve(response);\n } else {\n return resolve([]);\n }\n },\n ({ error }: any) => {\n reject(error);\n }\n );\n });\n }\n // End add new card functionality\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class NotesComponent implements OnInit {\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) { }\n\n public note: string = '';\n public disabledText: boolean = false;\n\n ngOnInit(): void {\n this.note = this.config.data.value ?? '';\n this.disabledText = this.config.data.disabledText;\n }\n\n handleCancel() {\n this.ref.close();\n }\n\n handleOk() {\n this.ref.close(this.note);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\nimport { FormService } from '../../../services/form.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { NotesComponent } from '../../shared/notes/notes.component';\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard, IFormButton } from '../../../models/form.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { IDictionary } from '../../../models/common.model';\nimport { Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DatePipe } from '@angular/common';\nimport { GridService } from '../../../services/grid.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'se-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit {\n @Input() stickyActions: boolean = true;\n @Input() form: IDynamicForm;\n @Input() hideSaveButton: boolean = false;\n @Input() hideCancelButton: boolean = false;\n @Input() formButtons: IFormButton[] = [];\n @Input() loading: boolean = false;\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() sectionClickedEvent: EventEmitter<IFormSection> =\n new EventEmitter();\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer: QueryList<ViewContainerRef>;\n\n dynamicCase = EFormControl;\n permissionType = EPermissionType;\n roles: string[] = [];\n isFormDisabled: boolean = false;\n isFormHidden: boolean = false;\n componentsList: IDictionary[] = [];\n fileUploadUrls: any;\n showfileUploadError: boolean = false;\n cardList: IDynamicCard;\n calenderPreviousValue: string = '';\n defaultDate: string = '';\n lookupFocusOut: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setCardData: boolean = false;\n subscription: Subscription;\n\n // apply checked/unChecked prop for CheckBox of the Form\n checked: boolean = true;\n unChecked: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private formService: FormService,\n private alertService: AlertService,\n private sanitizer: DomSanitizer,\n public dialogService: DialogService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private el: ElementRef,\n private datePipe: DatePipe,\n private gridService: GridService,\n private pageLoggerService: PageLoggerService\n ) {}\n\n ngOnInit(): void {}\n\n // browser tab close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event: any) {\n if (this.formService.fieldFocusedOut || this.gridService.columnFocusedOut) {\n return false;\n } else {\n return true;\n }\n }\n\n ngOnChanges() {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n // start cardList reference break functionality\n let formValues = { ...this.form };\n formValues.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field.isPassword) {\n field.textType = 'password';\n }\n // convert string time into date\n if (field?.control === EFormControl.CALENDAR && field?.onChange) {\n field['previousValue'] = field?.value;\n }\n if (\n field?.control === EFormControl.CALENDAR &&\n field?.timeOnly &&\n (field?.value?.toString().includes('AM') ||\n field?.value?.toString().includes('PM'))\n ) {\n field.value = utilities.setTimeInDate(field.value);\n }\n if (\n field?.control === EFormControl.AUTOCOMPLETE &&\n field?.value &&\n field?.value?.length > 0\n ) {\n const value = field?.value.map(\n (value: any) => value[field?.displayField]\n );\n if (\n value &&\n (value.toString()?.includes(';') ||\n value.toString()?.includes(','))\n ) {\n field.value = value\n .toString()\n .replaceAll(',', ';')\n ?.split(';')\n ?.map((val: any) => ({ [field?.displayField]: val }));\n }\n }\n // convert the multiSelect string value in array\n if (\n field?.control === EFormControl.MULTISELECT &&\n field.value &&\n !Array.isArray(field.value)\n ) {\n if (field.value?.toString()?.includes(',')) {\n field.value = field.value?.toString()?.split(',');\n } else {\n field.value = [field.value];\n }\n }\n if (field?.control === EFormControl.CARD) {\n this.form = {};\n setTimeout(() => {\n field?.card?.data?.forEach((x: any) => {\n if (\n field?.card?.formSections &&\n field?.card?.formSections?.length > 0\n ) {\n x.dynamicForm = {\n formSections: JSON.parse(\n JSON.stringify(field?.card?.formSections)\n ),\n };\n }\n });\n this.form = formValues;\n }, 500);\n }\n // End cardList reference break functionality\n if (field?.control === EFormControl.CHECKBOX) {\n field.value =\n field?.value?.toString()?.toLowerCase() === 'true' ||\n field?.value?.toString()?.toLowerCase() === 'y' ||\n field?.value?.toString() === '1'\n ? true\n : false;\n }\n });\n }\n });\n // apply user role permissions on form\n this.roles = this.authService.getUserRoles();\n this.applyUserPermissions();\n this.applyRequiredFieldValidation();\n this.removeWhiteSpaces();\n this.setHyperlinkComponentRoute();\n setTimeout(() => {\n this.setCalanderWidth();\n }, 3000);\n }\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(formField: IFormField) {\n document\n .getElementsByClassName(formField.field)[0]\n ?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if (year?.length === 4) {\n this.calendarFormat = 'mm/dd/yy';\n formField.value = new Date(val.target.value).toLocaleDateString(\n 'en-US'\n );\n } else if (year?.length) {\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n\n // set percent and decimal values\n setnumericvalues() {\n this.form?.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field?.format?.type === 'percent') {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value * 100)?.toString()\n ).toFixed(digitsInfo);\n } else {\n field.value = field.value * 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n } else if (field?.format?.type === 'decimal') {\n field.value = parseFloat(field.value).toFixed(\n digitsInfo ? digitsInfo : 2\n );\n }\n }\n }\n });\n }\n });\n }\n\n /**\n * Checks if form has any field with dynamic component;\n * Creates component instance using componentFactoryResolver\n * Injects component through viewRef.createComponent()\n * Passes data to component\n * Subscribes to the events passed to the components\n * Finally forces Angular to detech changes\n */\n loadDynamicComponents() {\n this.componentsList = [];\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field: any, fieldIndex) => {\n if (field.control === EFormControl.COMPONENT) {\n const viewRef: any = this.dynamicComponentContainer.find(\n (x) =>\n x.element.nativeElement.id == `${formSection.name}-${fieldIndex}`\n );\n const {\n component: Component,\n data,\n handlers,\n } = field.componentControl;\n const componentFactory: ComponentFactory<any> =\n this.componentFactoryResolver.resolveComponentFactory(Component);\n // Passing data to component\n const componentRef = viewRef?.createComponent(componentFactory);\n if (componentRef) {\n Object.entries(data ?? {}).forEach(([key, value]) => {\n componentRef.instance[key] = value;\n });\n this.componentsList.push({\n name: field.componentControl?.id,\n value: componentRef,\n });\n // Subscribes to the events passed to the components\n if (handlers) {\n Object.entries(handlers).forEach(([event, handler]: any) => {\n (componentRef.instance[event] as EventEmitter<any>)?.subscribe(\n (response) => {\n handler(response);\n }\n );\n });\n }\n }\n // invoke change detection\n this.cdr.detectChanges();\n }\n });\n });\n }\n\n //invoke when file upload OR delete a file\n fileOnchangeEvent() {\n this.setCardData = !this.setCardData;\n // let cardControl: boolean = false;\n // this.form?.formSections?.forEach((formSection)=> {\n // if(formSection?.fields?.some((formField: any)=> formField?.control === EFormControl.CARD)){\n // cardControl = true;\n // }\n // });\n // setTimeout(() => {\n // if(cardControl){\n // this.loadDynamicComponents();\n // }\n // }, 3000);\n }\n\n ngAfterViewInit() {\n // load dynamic components if exist in form\n setTimeout(() => {\n this.setnumericvalues();\n this.onDynamicFormStateChange();\n this.loadDynamicComponents();\n this.setCardResponseId();\n }, 500);\n }\n\n setCardResponseId() {\n utilities.onDynamicCardStateChange().subscribe((res) => {\n this.setCardIds(res.data);\n });\n }\n\n setCardIds(res) {\n res.records = this.gridService.setDataFields(res.records);\n res.records?.forEach((record: any, recordIndex: any) => {\n const matchCard = res.cardsInfo?.find(\n (info, cardIndex) =>\n recordIndex === cardIndex && record[res.fieldName?.toLowerCase()]\n );\n if (matchCard && Object.keys(matchCard)?.length > 0) {\n matchCard[res.fieldName] = record[res.fieldName?.toLowerCase()];\n }\n });\n if (this.form?.formSections?.length > 0) {\n this.form?.formSections.forEach((formSection) => {\n const formField = formSection.fields?.find(\n (field) => field.control === EFormControl.CARD\n );\n if (formField) {\n if (res.cardsInfo?.length > 0) {\n res.cardsInfo?.forEach((cardId) => {\n cardId.id = null;\n });\n }\n formField.card.data = res.cardsInfo;\n }\n });\n }\n this.setCardData = !this.setCardData;\n }\n\n removeWhiteSpaces() {\n this.form?.formSections?.forEach((section) => {\n if (section.class) section.class = section.class.replace(/\\s/g, '');\n });\n }\n\n setHyperlinkComponentRoute() {\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field) => {\n if (\n field.control === EFormControl.HYPERLINK &&\n field.hyperlink?.component\n ) {\n this.router.resetConfig([\n {\n path: 'hyperlink' + field.label,\n component: field.hyperlink.component,\n },\n ...this.router.config,\n ]);\n }\n });\n });\n }\n\n browserTabCloseEvent(event: boolean = false) {\n this.formService.fieldFocusedOut = event;\n }\n\n ngOnDestroy(){\n this.subscription?.unsubscribe();\n }\n\n /**\n * Listens any change in Dynamic Form component State\n */\n onDynamicFormStateChange() {\n this.subscription = utilities.onDynamicFormStateChange().subscribe((response) => {\n if (response.id && response.data) {\n const componentRefObj = this.componentsList.find(\n (x) => x.name === response.id\n );\n if (componentRefObj) {\n Object.entries(response.data ?? {}).forEach(([key, value]) => {\n componentRefObj.value.instance[key] = value;\n });\n componentRefObj.value.instance.ngOnInit();\n }\n }\n });\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.form && this.form.formSections) {\n let totalFields: number = 0;\n let disabledFields: number = 0;\n let hiddenFields: number = 0;\n\n this.form.formSections.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField) => {\n let permissions: any = formField.permissions;\n let sectionPermissions: any = [];\n if (!permissions) sectionPermissions = formSection.permissions;\n if (!permissions) permissions = this.form.permissions;\n let hasValidEditPermission = false;\n\n if (sectionPermissions && sectionPermissions.length > 0) {\n sectionPermissions.forEach((permission: any) => {\n let isValid: boolean = false;\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formSection.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n formField.disabled = false;\n formSection.hidden = false;\n } else {\n formSection.accordionDisabled = true;\n formSection.disabled = true;\n formField.disabled = true;\n }\n }\n });\n });\n } else if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n formField.disabled = false;\n formField.hidden = false;\n } else {\n if (\n formField.permissions &&\n formField.permissions.length > 0\n ) {\n formSection.disabled = false;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n } else {\n formSection.disabled = true;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n }\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (formField.disabled) {\n disabledFields++;\n }\n\n if (formField.hidden) {\n hiddenFields++;\n }\n });\n }\n });\n\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n /**\n * Open IFrame in hyperlink Control\n */\n sectionDisabled(formSection: IFormSection) {\n if (formSection.disabled) {\n formSection.fields.map((field: IFormField) => {\n field.disabled = true;\n });\n return formSection;\n } else {\n return formSection;\n }\n }\n\n loadIFrame(formField: IFormField) {\n this.handleClickEvent(formField);\n const ref = this.dialogService.open(IframeComponent, {\n header: 'Hyperlink',\n width: formField.hyperlink?.width ? formField.hyperlink.width : '90%',\n height: formField.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.hyperlink?.link, iFrameId: formField.label },\n });\n utilities.draggableDialog(formField?.field);\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n\n /**\n * open Dialog in hyperlink Control\n */\n hyperlinkDialog(formField: IFormField) {\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\n var value = formField.hyperlink.params;\n window.open('hyperlink' + formField.label);\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\n this.router.navigate(['hyperlink' + formField.label], {\n queryParams: formField.hyperlink.params,\n });\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\n this.onClickEvent(formField);\n const dialog = this.dialogService.open(formField.hyperlink.component, {\n header: formField.hyperlink.data?.header\n ? formField.hyperlink.data?.header\n : '',\n width: formField.hyperlink.width ? formField.hyperlink.width : '',\n style: formField.hyperlink.width?'': {'max-width':'fit-content'},\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\n data: formField.hyperlink.params \n });\n const componentName = formField.hyperlink?.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n componentName\n );\n }\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n dialog.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n }\n\n /**\n * open Iframe on Label\n */\n loadLabelControlIFrame(formField: any) {\n const ref = this.dialogService.open(IframeComponent, {\n header: formField.label.name,\n width: formField.label.labelControl.hyperlink.width\n ? formField.hyperlink.width\n : '90%',\n height: formField.label.labelControl.hyperlink?.height\n ? formField.hyperlink.height\n : '80%',\n data: {\n value: formField.label.labelControl.hyperlink?.link\n ? formField.label.labelControl.hyperlink.link\n : '',\n iFrameId: formField.label.name,\n },\n });\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n 'IframeComponent'\n );\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n if (formField && formField.onClick) {\n formField.onClick();\n }\n }\n\n /**\n * find the required field in form\n */\n applyRequiredFieldValidation() {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n this.form.formSections.forEach((section) => {\n section.fields.forEach((field) => {\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((valid) => {\n if (valid.type === EValidator.REQUIRED) {\n field.requiredField = true;\n }\n });\n }\n });\n });\n }\n }\n\n setFileUrls(fileUrls: any) {\n if (fileUrls && fileUrls.length > 0) {\n this.fileUploadUrls = fileUrls;\n this.showfileUploadError = false;\n }\n }\n\n onSaveForm() {\n let validity = true;\n let errorMessageDetails = '';\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n if (!this.formService.checkValidity(formSection.fields)) {\n formSection.fields?.forEach((formField: any) => {\n if (formField.errorMessage) {\n errorMessageDetails = errorMessageDetails\n ? errorMessageDetails + ' , ' + formField.errorMessage\n : formField.errorMessage;\n }\n });\n let field = formSection.fields.some(\n (field) => field.requiredField && field.errorMessage && !field.value\n );\n if (validity && field) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n validity = false;\n }\n\n formSection.fields.forEach((field: any) => {\n // set uploadFile URL in FormField in case of FILE_UPLOAD\n if (field.control === EFormControl.FILE_UPLOAD) {\n field.value = this.fileUploadUrls;\n\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((x: any) => {\n if (x.type === EValidator.REQUIRED && !field.value) {\n this.showfileUploadError = true;\n }\n });\n }\n }\n\n if (field.control === EFormControl.CARD) {\n if (field.card && field.card.data?.length > 0) {\n let selectedData = field.card.data.filter(\n (x: any) => x.selectedCard && x.selectedCard.length > 0\n );\n if (selectedData && selectedData.length > 0) {\n field.card.data = selectedData;\n }\n }\n }\n });\n }\n });\n if (validity) {\n // Save grid on formSave Button\n const saveAllGrid = document.getElementById('saveAllGridValues');\n const getBtns: any =\n this.el?.nativeElement?.getElementsByClassName('saveRow');\n let customComponent: boolean = false;\n let tempValue: any = [];\n // set value as 1 or 0 in case of checkbox\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields && validity) {\n formSection.fields.forEach((field: any) => {\n if (field.value === '' || field.value === undefined) {\n field.value = null;\n }\n //convert date into time as string\n if (\n field.control === EFormControl.CALENDAR &&\n field.timeOnly &&\n field.saveAsString &&\n !field.value?.toString()?.includes('AM') &&\n !field.value?.toString()?.includes('PM')\n ) {\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\n }\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field?.format?.type === 'percent') {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value / 100)?.toString()\n ).toFixed(digitsInfo);\n console.log('new value', field.value)\n } else {\n field.value = field.value / 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n }\n }\n }\n\n // set value of autoComplete as strings\n if (\n field.control === EFormControl.AUTOCOMPLETE &&\n !field.showAllValue &&\n field.value &&\n field.value.length > 0\n ) {\n const value = field.value.map(\n (value: any) => value[field.displayField]\n );\n if (\n value &&\n (value.toString()?.includes(';') ||\n value.toString()?.includes(','))\n ) {\n tempValue = value;\n field.value = value.toString().replaceAll(',', ';');\n }\n }\n // convert multiSelect array into string\n if (\n field.control === EFormControl.MULTISELECT &&\n field.value &&\n Array.isArray(field.value) &&\n field.saveAsString !== false\n ) {\n field.value = field.value?.toString();\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value ? 1 : 0;\n }\n // Save grid on formSave Button\n if (field.control === EFormControl.COMPONENT && !customComponent) {\n customComponent = true;\n if (saveAllGrid) {\n saveAllGrid.click();\n } else if (getBtns && getBtns.length > 0) {\n for (let btn of getBtns) {\n btn?.click();\n }\n }\n }\n });\n }\n });\n this.browserTabCloseEvent(false);\n setTimeout(\n () => {\n this.saveForm.emit(this.form.formSections);\n },\n saveAllGrid ? 80 : 0\n );\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (\n field.control === EFormControl.AUTOCOMPLETE &&\n !field.showAllValue\n ) {\n field.value = tempValue\n .toString()\n .replaceAll(',', ';')\n ?.split(';')\n ?.map((val: any) => ({ [field.displayField]: val }));\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value === 1 ? true : false;\n }\n if (field?.format?.type === 'percent') {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value * 100)?.toString()\n ).toFixed(digitsInfo);\n } else {\n field.value = field.value * 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n }\n \n }\n });\n }\n });\n }\n }\n\n onCancelForm() {\n if (this.formService.fieldFocusedOut || this.gridService.columnFocusedOut) {\n this.alertService\n .confirm({\n key: 'cancelButton',\n message: 'You have unsaved changes. Would you like to continue?',\n })\n .then((res) => {\n if (res[0].detail === 'Yes') {\n this.browserTabCloseEvent(false);\n this.gridService.columnFocusedOut = false;\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n });\n } else {\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n }\n\n lookupClearValue(formField: IFormField) {\n if (formField.value) {\n formField.value = '';\n this.browserTabCloseEvent(true);\n }\n if (formField.onChange) {\n formField.onChange(formField);\n }\n this.formService.checkValidity([formField]);\n }\n\n /**\n * set calender width\n */\n setCalanderWidth() {\n const calanderElement = document.querySelectorAll('.p-calendar');\n let form: any = document.querySelector('form');\n let width = form?.clientWidth;\n calanderElement?.forEach((calander: any) => {\n const calanderOfsetLeft = calander.offsetLeft;\n if (calanderOfsetLeft <= width / 2) {\n calander.classList.add('open-right-side');\n }\n });\n }\n\n /**\n * set the dynamic dialog data\n */\n setDialogData(formField: IFormField, data: any): any {\n if (data && formField) {\n let value: any;\n data = utilities.objConvertToLower(data);\n let selection: string = '';\n if (formField.value && typeof formField.value === 'object') {\n if (\n formField.value &&\n formField.value.text &&\n formField.value.text.toString().trim()\n ) {\n selection = formField.value.text?.toString()?.trim();\n if (formField.displayField) {\n value = formField.value?.value?.toString()?.trim();\n }\n }\n } else if (formField.value && formField.value.toString().trim()) {\n selection = formField.value?.toString()?.trim();\n }\n const componentName = data.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n componentName\n );\n }\n return this.dialogService.open(data.component, {\n ...data.data,\n data: {\n selection: selection,\n field: formField.field,\n value: value,\n valueField: data.data?.valueField,\n ...data.data.data,\n },\n });\n }\n }\n\n tabFocusEvent(formField: any) {\n const className = this.el.nativeElement.querySelector(\n '.' + formField.field\n );\n if (className) {\n className.click();\n }\n }\n\n onClickEvent(formField: IFormField) {\n console.log(formField);\n if (formField.onClick && formField.disabled !== true) {\n formField.onClick(formField);\n }\n }\n\n /**\n * open dialog on lookupControl label\n */\n selectLookupLabel(formField: any) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl\n ) {\n const ref: any = this.setDialogData(\n formField,\n formField.label.labelControl.lookupControl\n );\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (res) {\n formField.value = utilities.setDialogResponse(\n formField,\n formField?.label.labelControl.lookupControl,\n res\n );\n }\n this.onFocusOutEvent(formField);\n if (formField.label.onReturn)\n formField.label.onReturn(formField.value);\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n this.onClickEvent(formField);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(formField: IFormField) {\n if (formField.lookupControl) {\n this.lookupFocusOut = true;\n let value = formField.value;\n const ref = this.setDialogData(formField, formField.lookupControl);\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (formField.field) {\n document.getElementById(formField.field)?.focus();\n }\n if (res) {\n formField.value = utilities.setDialogResponse(\n formField,\n formField.lookupControl,\n res\n );\n this.lookupFocusOut = false;\n if (formField.onReturn) formField.onReturn(formField.value, res);\n }\n this.onFocusOutEvent(formField);\n const formFieldValue =\n typeof formField.value === 'object'\n ? formField.value.text\n : formField.value;\n value = typeof value === 'object' ? value.text : value;\n if (formFieldValue !== value) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.onChange(formField);\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n /**\n * onClick event invoked && open Dialog on lookupControl field/label\n */\n handleClickEvent(formField: IFormField) {\n this.onClickEvent(formField);\n if (formField && formField.lookupControl) {\n this.selectLookupLabel(formField);\n this.selectLookupField(formField);\n }\n }\n\n /**\n * set Calender Date Format && set Date Minute interval\n */\n setCalenderDate(formField: IFormField) {\n if (formField.control === EFormControl.CALENDAR) {\n // convert time into date format\n if (\n formField.timeOnly &&\n (formField.value?.toString().includes('AM') ||\n formField.value?.toString().includes('PM'))\n ) {\n formField.value = utilities.setTimeInDate(formField.value);\n }\n if (\n (formField.showTime || formField.timeOnly) &&\n formField.value &&\n formField.minutesInterval\n ) {\n formField.value = new Date(\n utilities.setMinutesInterval(formField.value)\n );\n } else if (\n (formField.showTime || formField.timeOnly) &&\n !formField.value &&\n formField.minutesInterval\n ) {\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\n }\n this.calenderPreviousValue = formField.value;\n }\n }\n calendarChangeValue(formField: any) {\n if (formField.value !== formField.previousValue) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.previousValue = formField.value;\n formField.onChange(formField);\n }\n }\n }\n\n /**\n * invoked section Clicked event\n */\n clickedSection(section: IFormSection) {\n this.sectionClickedEvent.emit(section);\n }\n\n /**\n * open dialog in Note_Field conrtrol\n */\n handleNoteFieldDialog(formfield: IFormField) {\n const dialogRef = this.dialogService.open(NotesComponent, {\n header: formfield.label as string,\n width: '50%',\n data: {\n value: formfield.value,\n disabledText: formfield.disabledText,\n },\n });\n utilities.draggableDialog(\n formfield?.field ? formfield?.field : formfield?.label\n );\n dialogRef.onClose.subscribe(\n (data: any) => {\n if (data && formfield.onReturn) {\n formfield.onReturn(data);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setClassName(formField: IFormField): string {\n if (formField.hidden) return ' hidden';\n else return '';\n }\n\n autoSearch(event: any, formField: any) {\n if (formField && event) {\n formField.onReturn(event.query, formField);\n }\n }\n\n /**\n * invoked onFocusOut Event\n */\n onFocusOutEvent(formField: IFormField) {\n let record: any = {};\n this.form.formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field) {\n record[formField.field] = formField.value;\n }\n });\n });\n utilities.setHyperlinkParamValue(record, this.form);\n this.formService.checkValidity([formField]);\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\n formField.onFocusOut(formField);\n }\n }\n\n onBackSpaceEvent(formField: IFormField) {\n if (typeof formField.value === 'object') {\n formField.value.text = formField.value.text.substring(\n 0,\n formField.value.text.length - 1\n );\n if (formField.value.text.length === 1) {\n formField.value = undefined;\n this.formService.checkValidity([formField]);\n }\n }\n if (formField.value && formField.value.length === 1) {\n formField.value = undefined;\n this.formService.checkValidity([formField]);\n }\n }\n\n /**\n * clear the dropdown value when click on x\n */\n onClearValue(formField: IFormField, event: any) {\n this.formService.checkValidity([formField]);\n this.onChangeEvent(formField);\n this.dropDownChangeEvent.emit(formField);\n if (!event.value) {\n this.onFocusOutEvent(formField);\n }\n }\n\n clearDropdownValue(formField: any) {\n this.onClickEvent(formField);\n }\n\n /**\n * Invoke onChange Event when Value Changed\n */\n onChangeEvent(formField: IFormField) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.onChange(formField);\n }\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * convert unSafe link into safe link\n */\n sanitizeUrl(url: string) {\n let linkUrl: any = url;\n if (linkUrl) {\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\n }\n return linkUrl;\n }\n\n /**\n * invoke on dynamic buttons click\n */\n onNewButtonClick(button) {\n button.func();\n }\n\n selectedCardClickEvent(data: any) {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n this.form.formSections.forEach((section: any) => {\n section.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD) {\n if (field.card && field.card.data?.length > 0) {\n let obj = field.card.data[data.index];\n if (obj) {\n if (obj.selectedCard) {\n delete obj.selectedCard;\n } else {\n obj['selectedCard'] = 'card-active';\n }\n }\n }\n }\n });\n });\n }\n if (data.selectedCard) {\n data['selectedCard'] = '';\n } else {\n data['selectedCard'] = 'card-active';\n }\n }\n\n changePasswordType(formField) {\n if (formField.textType == 'text') {\n formField.textType = 'password';\n } else {\n formField.textType = 'text';\n }\n }\n onLinkClick(link, formSection){\n if(!link.disabled && !formSection.disabled){\n link.onClick();\n }\n }\n}\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ISelectItem } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent implements OnChanges {\n @Input() options: ISelectItem[] = [];\n @Input() value: ISelectItem;\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\n public selectedOption: any;\n\n constructor() { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.options.length) {\n if (this.value) {\n this.selectedOption = changes['value'].currentValue.toString().trim();\n } else {\n this.selectedOption = this.options[0];\n this.valueChange.emit(this.selectedOption.value);\n }\n }\n }\n\n handleValueChange(event: { value: string }) {\n this.valueChange.emit(event.value);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'se-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.css']\n})\nexport class GalleryComponent {\n \n @Input() galleryImage: any;\n @Input() width: string;\n\n responsiveOptions: any[] = [\n {\n breakpoint: '1024px',\n numVisible: 5\n },\n {\n breakpoint: '768px',\n numVisible: 3\n },\n {\n breakpoint: '560px',\n numVisible: 1\n }\n ];\n\n constructor() { }\n}","import { Directive, Input, HostListener } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n selector: '[pAddRow]',\n})\nexport class AddRowDirective {\n @Input() table: Table;\n @Input() newRow: any;\n @Input() id: string;\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n // Insert a new row\n if (this.table && this.table.value) {\n this.table.value.unshift({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n }\n\n // Set the new row in edit mode\n this.table.initRowEdit({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n\n event.preventDefault();\n }\n}\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\n\nexport const MenuFilters: IMenuFilter = {\n [GridFilterControlType.INPUT]: [\n { label: 'Starts with', value: 'startsWith' },\n { label: 'Contains', value: 'contains' },\n { label: 'Not contains', value: 'notContains' },\n { label: 'Ends With', value: 'endsWith' },\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n ],\n [GridFilterControlType.NUMERICINPUT]: [\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n { label: 'Less than', value: 'lt' },\n { label: 'Less than or equal to', value: 'lte' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Greater than or equal to', value: 'gte' },\n ],\n [GridFilterControlType.CALENDAR]: [\n { label: 'Date is', value: 'dateIs' },\n { label: 'Date is not', value: 'dateIsNot' },\n { label: 'Date is before', value: 'dateBefore' },\n { label: 'Date is after', value: 'dateAfter' },\n ],\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\nimport { MenuFilters } from '../../base/grid/grid.constant';\n\n@Component({\n selector: 'se-filter-menu',\n templateUrl: './filter-menu.component.html',\n styleUrls: ['./filter-menu.component.scss'],\n})\nexport class AppFilterMenuComponent implements OnInit {\n public isMenuOpen: boolean = false;\n public filterOptions: ISelectItem[] = [];\n\n @Input() globalFilter: IGlobalFilter;\n constructor() { }\n\n ngOnInit(): void {\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\n }\n\n toggleMenu() {\n this.isMenuOpen = !this.isMenuOpen;\n }\n\n handleFilterSelection({ value }: ISelectItem) {\n this.isMenuOpen = false;\n this.globalFilter.matchMode = value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { IMenu } from '../../../models/menu.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'se-menu-bar',\n templateUrl: './menu-bar.component.html',\n styleUrls: ['./menu-bar.component.scss'],\n})\nexport class MenuBarComponent implements OnInit {\n @Input() hiddenPanelMenu: boolean = true;\n @Input() toolTip: string;\n // @Input() menuBackColor: string;\n @Input() menuItems: IMenu[];\n @Input() menuFooter: string;\n @Input() menuTitle: string;\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\n public menuBarItems: MenuItem[] = [];\n toggleMenu: boolean = false;\n roles: string[] = [];\n isMenubarHidden: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private cookieService: CookieService,\n public router: Router,\n ) { }\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n const toggleMenu = localStorage.getItem('toggleMenu');\n const cookieValue = this.cookieService.get('toggleMenu'); \n\n if (toggleMenu) {\n this.toggleMenu = JSON.parse(toggleMenu);\n }else if(cookieValue){\n this.toggleMenu = JSON.parse(cookieValue);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions\n this.applyUserPermissions();\n\n this.menuBarItems = this.menuItems.map((x) => ({\n ...x,\n style: x.hidden ? { display: 'none' } : x.style,\n }));\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \n }\n\n clickEvent() {\n this.onClickEvent.emit();\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.menuItems) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.menuItems.forEach((menu) => {\n if (menu.items) {\n menu.items.forEach((item) => {\n let permissions: any = item.permissions;\n if (!permissions) permissions = menu.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.hidden = true;\n }\n } \n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n item.style = { display: 'none' };\n hiddenItems++;\n }\n });\n\n // if all items of menu is hidden then hide menu as well\n menu.hidden =\n menu.items.length === menu.items.filter((x) => x.hidden).length;\n }\n });\n\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n}\n\n","import { Type } from '@angular/core';\nimport { IPermission } from './user-info.model';\n\nexport const ESideBar = {\n LEFT: 'left-sidebar',\n RIGHT: 'right-sidebar',\n};\n\nexport interface ISidebar {\n icon: string;\n label?: string;\n action?: string;\n section: string;\n component?: Type<any>;\n data?: IData;\n onReturn?: (data: any) => any;\n onClick?: (value: any) => void;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n id?: string;\n tooltip?: string\n target?: ESidebarTarget;\n iFrame?: IFrame;\n linkId?:string;\n params?:any;\n}\n\nexport enum ESidebarTarget {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport enum ESidebarAction {\n NAVIGATION = 'navigation',\n OPENDIALOG = 'dialog',\n IFRAME = '_iframe',\n}\n\nexport interface IFrame {\n link?: string;\n width?: string;\n height?: string;\n}\n\nexport interface IData {\n header?: string;\n width?: string;\n height?: string;\n data?: any;\n scrollable?: boolean;\n}\n","import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Injectable, Injector } from '@angular/core';\nimport { IMenu } from '../models/menu.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { IDictionary } from '../models/common.model';\nimport * as utilities from './utilities.service';\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideBarService {\n styleSheetElement:any;\n constructor(\n private injector: Injector,\n private componentFactoryResolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef\n ) { }\n\n /**\n * Checks parent menu and expands it if current route exists in its child menus.\n * @param menuLabel\n * @returns {boolean}\n */\n isMenuExpanded(\n currentRoute: string,\n items: IMenu[],\n menuLabel: string\n ): boolean {\n if (items && items.length) {\n // check currentRoute contains loadDataForEdit or not\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\n let detailPage = '';\n if(currentRoute?.toString()?.includes(\"list\")){\n detailPage = currentRoute.replace('list', 'detail');\n } \n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\n let matchedItems = [];\n if(currentIndex > -1){\n matchedItems = items[currentIndex]?.items;\n }\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \n }\n return false;\n }\n\n setSidebarPropValues(\n sidebar: ISidebar[],\n section: string,\n props: IDictionary[]\n ) {\n sidebar.map((sidebarItem: any) => {\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\n props.map((prop) => {\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\n sidebarItem.data.data = prop.value;\n } else {\n utilities.setPropValue(sidebarItem, prop);\n }\n });\n }\n });\n sidebar=[...sidebar]\n return sidebar\n }\n\n createWindowInstance(obj: any, windowInstance: any) {\n if (windowInstance) {\n // Create a PortalOutlet with the body of the new window document\n const outlet = new DomPortalOutlet(windowInstance.document.body, this.componentFactoryResolver, this.applicationRef, this.injector);\n // Copy stylesheet link from parent window\n this.styleSheetElement = this.getStyleSheetElement();\n windowInstance.document.head.appendChild(this.styleSheetElement);\n windowInstance.document.body.innerText = '';\n this.attachComponentContainer(outlet, obj);\n }\n }\n\n attachComponentContainer(outlet: DomPortalOutlet, obj: any) {\n const containerPortal = new ComponentPortal(obj.component, null);\n const containerRef: ComponentRef<any> = outlet.attach(containerPortal);\n containerRef.instance.config = obj.data;\n }\n\n getStyleSheetElement() {\n const styleSheetElement = document.createElement('link');\n document.querySelectorAll('link').forEach(htmlElement => {\n if (htmlElement.rel === 'stylesheet') {\n const absoluteUrl = new URL(htmlElement.href).href;\n styleSheetElement.rel = 'stylesheet';\n styleSheetElement.href = absoluteUrl;\n }\n });\n return styleSheetElement;\n }\n}\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ESidebarAction, ESidebarTarget, ISidebar } from '../../../models/sidebar.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { HyperlinkService } from '../../../services/hyperlink.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport * as utilities from '../../../services/utilities.service';\nimport { SideBarService } from '../../../services/sidebar.service';\n\n@Component({\n selector: 'se-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n})\nexport class SidebarComponent implements OnInit {\n toggleMenu: boolean = false;\n loadComponentName = '';\n openDialogs: any = [];\n @Input() navHidden: boolean = false;\n @Input() collapseSidebar: boolean = false;\n @Input() menuTitle: string;\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\n if (newSidebarItems) {\n this.sidebarItemsList = newSidebarItems;\n this.initializeSideBar();\n }\n }\n\n public sidebarItemsList: ISidebar[] = [];\n public menuItems: MenuItem[] = [];\n roles: string[] = [];\n isSidebarHidden: boolean = false;\n\n constructor(\n private instance: Renderer2,\n private authService: AuthenticationService,\n public dialogService: DialogService,\n private router: Router,\n private pageLoggerService: PageLoggerService,\n private hyperlinkService: HyperlinkService,\n private sidebarService: SideBarService\n ) { }\n\n ngOnInit(): void {\n if(this.router.url.toString()?.includes('component=')){\n const componentName = this.router.url?.split('component=')[1];\n if(componentName){\n this.loadComponentName = componentName;\n }\n }\n if(this.loadComponentName){\n this.openDynamicComponetonLoad()\n }\n }\n\n openDynamicComponetonLoad (){\n this.sidebarItemsList?.forEach((item)=>{\n if(item.action === ESidebarAction.OPENDIALOG && ESidebarTarget.BLANK && item.component.name === this.loadComponentName){\n this.navigateComponentToNewTab(item, false);\n }\n })\n }\n\n initializeSideBar() {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions\n this.applyUserPermissions();\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\n label: x.label,\n icon: x.icon,\n id: x.id,\n section: x.section,\n expanded: x.expanded,\n action: x.action,\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\n title: this.setMenuTitle(x),\n command: ({ item }) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(x, item);\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\n if(x.target && x.target === ESidebarTarget.BLANK){\n this.navigateComponentToNewTab(x);\n }else{\n this.openDialog(x, item);\n }\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\n this.loadIFrame(x, item);\n } else {\n this.handleActiveItem(item);\n }\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: x.hidden ? 'none' : '',\n },\n onClick: x.onClick,\n onReturn: x.onReturn,\n disabled: x.disabled,\n }));\n }\n //ref link: https://medium.com/@saranya.thangaraj/open-angular-component-in-a-new-tab-without-bootstrapping-the-whole-app-again-e329af460e92\n navigateComponentToNewTab(menu: any, onNewTab: boolean = true) {\n let windowRef = window;\n let winRef: any;\n if(onNewTab){\n winRef = window.open();\n if (winRef.location.href === 'about:blank') {\n if(this.router.url && this.router.url?.toString()?.includes('?')){\n winRef.location.href = this.router.url+'&&component='+menu.component.name;\n }else{\n winRef.location.href = `${this.router.url}?component=${menu.component.name}`;\n }\n }\n }\n // Wait for window instance to be created\n if(onNewTab){\n setTimeout(() => {\n this.sidebarService.createWindowInstance(menu, winRef);\n }, 900);\n }else{\n this.sidebarService.createWindowInstance(menu, windowRef);\n }\n \n }\n\n\n setMenuTitle(x: any): string {\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\n }\n\n setMenuItems(x: any): any {\n return x.items.map((menu: any) => ({\n label: menu.label,\n icon: menu.icon,\n id: menu.id,\n section: menu.section,\n expanded: menu.expanded,\n action: menu.action,\n title: this.setMenuTitle(x),\n command: ({ item }: any) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\n this.loadIFrame(menu, x);\n }\n this.handleActiveItem(item);\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: menu.hidden ? 'none' : '',\n },\n onClick: menu.onClick,\n onReturn: menu.onReturn,\n disabled: menu.disabled,\n }))\n }\n\n loadIFrame(menu: ISidebar, item: any) {\n if (menu) {\n const dialogRef = this.dialogService.open(IframeComponent, {\n header: menu.section,\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n this.handleActiveItem(item);\n utilities.draggableDialog(menu.label)\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.sidebarItemsList) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.sidebarItemsList.forEach((item, index) => {\n let permissions: any = item.permissions;\n let hasValidEditPermission = false;\n\n item.id = index.toString();\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n item.disabled = true;\n } else {\n item.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.disabled = true;\n }\n }\n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n hiddenItems++;\n }\n });\n\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n\n /**\n *\n * @ param menu\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n openDialog(menu: ISidebar, item: any): void {\n const menuData:any = menu.data ? menu.data : menu;\n if(menuData.scrollable == false){\n menuData.styleClass = \"small-model\";\n }else{\n menuData.styleClass = \"sidebar-datepicker\";\n }\n if (menu.component) {\n const dialogRef = this.dialogService.open(menu.component, menuData);\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\n this.openDialogs.push(dialogRef);\n this.handleActiveItem(item);\n\n if (this.openDialogs && this.openDialogs.length > 1) {\n this.openDialogs[0].close();\n this.openDialogs.shift();\n }\n utilities.draggableDialog(menu.label)\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n /**\n *\n * @ param x\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n navigateToSection(x: ISidebar, item: any): void {\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\n this.handleActiveItem(item);\n }\n\n /**\n *\n * @param item\n * Passes the event of the menu\n */\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\n this.menuItems = this.menuItems.map((x) =>\n x.icon === icon && closeDialog\n ? { ...x, styleClass: 'active-icon' }\n : {\n ...x,\n styleClass: '',\n style: {\n borderBottom: '1px solid #e9ecef',\n display: x.style?.display === 'none' ? 'none' : '',\n },\n }\n );\n }\n\n clickedMenu(menu: MenuItem[]) {\n menu.map((item: any) => {\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\n if (\n item.styleClass === 'active-icon' &&\n matchedItem &&\n matchedItem.onClick\n ) {\n this.hyperlinkService\n .addHyperlinks(matchedItem)\n .then((response: any) => {\n if (matchedItem.linkId) {\n this.hyperlinkService.setSidebarLink(\n response,\n this.sidebarItemsList\n );\n } else {\n matchedItem.onClick(item);\n }\n });\n }\n });\n }\n \n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { IHeader } from '../../../models/header.model';\nimport { EFormControl } from '../../../models/form.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'se-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit, OnChanges {\n @Input() headers: IHeader;\n\n dynamicCase = EFormControl;\n roles: string[] = [];\n isHeaderHidden: boolean = false;\n\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\n\n ngOnInit(): void {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions on form\n this.applyUserPermissions();\n }\n\n ngOnChanges(): void {\n if(this.headers && this.headers.fields){\n this.headers.fields.forEach((x) => {\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\n }\n if (x.value?.toString().includes(':') && x.timeOnly) {\n const index = x.value.indexOf(':');\n const time = x.value.substring(index - 2, index + 6);\n x.value = time;\n }\n });\n }\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.headers) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.headers.fields.forEach((headerField) => {\n let permissions: any = headerField.permissions;\n if (!permissions) permissions = this.headers.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n headerField.disabled = true;\n } else {\n headerField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n headerField.disabled = false;\n headerField.hidden = false;\n } else {\n headerField.disabled = true;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (headerField.hidden) {\n hiddenFields++;\n }\n });\n\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n loaderState = new Subject<any>();\n\n constructor() {}\n\n /**\n * Shows loader\n */\n showLoader(isDarkBackground = true) {\n this.loaderState.next({ loading: true, isDarkBackground });\n }\n\n /**\n * Hides loader\n */\n hideLoader() {\n this.loaderState.next({ loading: false });\n }\n\n /**\n * Fires on loader state changed.\n * @returns {Observable<any>}\n */\n onLoaderStateChange(): Observable<any> {\n return this.loaderState.asObservable();\n }\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LoaderService } from '../../../services/loader.service';\n\n@Component({\n selector: 'se-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n isLoading = false;\n isDarkBackground = true;\n loaderSubscription$: Subscription = new Subscription();\n\n constructor(\n public loaderService: LoaderService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loaderSubscription$ = this.loaderService\n .onLoaderStateChange()\n .subscribe((state: any) => {\n this.isLoading = state.loading ? true : false;\n this.isDarkBackground = state.isDarkBackground ? true : false;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy() {\n if (this.loaderSubscription$) {\n this.loaderSubscription$.unsubscribe();\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IFormField } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { RequestService } from '../../../services/request.service';\n@Component({\n selector: 'se-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements OnInit {\n @Input() acceptFileTypes: any;\n @Input() allowMultiple: boolean = false;\n @Input() fields: any;\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {}\n\n uploadFile(files: any) {\n let fileData = new FormData(); \n let chooseFile:boolean = false;\n for (let i = 0; i < files.length; i++) {\n if (files[i]) {\n chooseFile = true;\n fileData.append(files[i].name, files[i]);\n }\n }\n\n if (fileData && chooseFile) {\n if (this.fields && this.fields.uniqueKey?.length > 0) {\n fileData.append('uniqueKey', this.fields?.uniqueKey);\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\n fileData.append('azureContainer', this.fields?.azureContainer);\n }\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\n (data: any) => {\n if (data) {\n this.alertService.success('File Upload Successfully.');\n if (this.fields?.onReturn) {\n this.fields.onReturn(data.results);\n this.uploadFileOnReturn.emit();\n }\n this.fileUrl.emit(data.results);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n if (this.fields.onReturn) {\n this.fields.onReturn(error);\n this.uploadFileOnReturn.emit();\n }\n }\n );\n }\n }\n onClickEvent() {\n if (this.fields && this.fields.onClick) {\n this.fields.onClick();\n }\n } \n}\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { FormService } from '../../../services/form.service';\nimport { RequestService } from '../../../services/request.service';\nimport * as utilities from '../../../services/utilities.service';\n\n@Component({\n selector: 'se-caption',\n templateUrl: './caption.component.html',\n styleUrls: ['./caption.component.scss'],\n})\nexport class CaptionComponent implements OnInit {\n dynamicForm: IDynamicForm;\n id: number;\n caption: string;\n\n constructor(\n private formService: FormService,\n private requestService: RequestService,\n private alertService: AlertService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n ngOnInit(): void {\n if (this.config.data) {\n this.id = this.config.data.id;\n this.caption = this.config.data.caption;\n }\n this.initilizeForm();\n }\n\n initilizeForm() {\n this.dynamicForm = {\n formSections: [\n {\n fields: [\n this.formService.addTextbox({\n field: 'fileCaption',\n label: 'Caption',\n value: this.caption,\n column: 12,\n validations: [{ type: EValidator.REQUIRED }]\n }),\n ],\n },\n ],\n };\n }\n\n saveForm(formFiels: any) {\n this.requestService\n .get<any[], any>('/AzureUpload/UpdateCaption', {\n Id: this.id,\n fileCaption: utilities.getFormFieldValue(\n this.dynamicForm,\n 'fileCaption'\n ),\n })\n .subscribe(\n (response: any) => {\n if (response) {\n this.alertService.success('Caption added successfully.');\n this.ref.close(response);\n }\n },\n ({ error }) => {\n this.ref.close();\n this.alertService.apiError(error);\n }\n );\n }\n cancelForm(event: any) {\n //console.log('CancelForm: ', event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { GridService } from '../../../services/grid.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { ConfirmationService } from 'primeng/api';\n\n@Component({\n selector: 'se-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit {\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\n // @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\n @Input() data: any = [];\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() card: any;\n @Input() setCardData: boolean;\n dynamicForm: IDynamicForm;\n showFiles: boolean = false;\n displayCardInfo: IViewCardProp;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n if (this.card) {\n let { data, formSections, cardInfo }: any = this.card;\n if(cardInfo && Object.keys(cardInfo).length){\n this.displayCardInfo = cardInfo;\n data = this.gridService.setDataFields(data);\n const newArr = [];\n data?.forEach((record)=>{\n if(!Object.keys(record)?.includes('azurecontainerid')){\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\n } else {\n newArr.push(record);\n }\n });\n this.data = newArr;\n } else {\n this.data = this.gridService.setDataFields(data);\n }\n this.dynamicForm = { formSections };\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n this.setCardPropValue('allowDownload');\n this.setCardPropValue('allowDelete');\n this.setCardPropValue('allowEditableCaption');\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\n /** In case of when we are using this component for stand alone then if formSection is exist in\n the this.card and then add in the data array.\n */\n if (this.data) {\n this.data.forEach((x: any) => {\n if (!x.dynamicform) {\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\n }\n utilities.setCardFieldsData(x);\n });\n }\n }\n }\n\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n setCardPropValue(prop:string){\n if(!this.card[prop]?.toString()?.length) {\n this.card[prop]= true;\n }\n }\n\n dragAndDrop(event: any) {\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n event.item?.element?.nativeElement;\n this.card.data = this.data;\n this.card['change'] = true;\n if (this.card && this.card.onSort) {\n this.card.onSort(this.data);\n }\n }\n\n deleteImage(event: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this Image?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex(\n (i) => i.blobfileurl === event.blobfileurl\n );\n let obj = arr[index];\n arr.splice(index, 1);\n this.data = [...arr];\n\n if (this.card && this.card.onDelete) {\n obj = this.replacePropName(obj);\n this.card.onDelete(obj);\n // this.onDeleteCard.emit();\n }\n }\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n replacePropName(cardInfo:any){\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\n const cardProp = {...this.displayCardInfo};\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\n return obj;\n } else {\n return cardInfo;\n }\n }\n\n saveCaption(event: any) {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\n let obj = arr[index];\n if (index !== -1) {\n obj.filecaption = event.caption;\n arr.splice(index, 1, obj);\n this.card.data = arr;\n this.card['change'] = true;\n }\n if (this.card && this.card?.onCaptionSave) {\n obj = this.replacePropName(obj);\n this.card.onCaptionSave(obj);\n }\n }\n }\n\n onClickEvent(data: any, index: number){\n data['index'] = index;\n this.selectedCard.emit(data);\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport { ESelectFileType } from '../../../models/form.model';\n\n@Component({\n selector: 'se-file',\n templateUrl: './file.component.html',\n styleUrls: ['./file.component.scss'],\n})\nexport class fileComponent implements OnInit {\n @Input() url: string = '';\n @Input() caption: string = '';\n @Input() width: string = '';\n @Input() height: string = '200px';\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\n @Input() id: number;\n @Input() name: string = '';\n @Input() type: any;\n @Input() allowDownloadFile: boolean = true;\n @Input() allowEditableCaption: boolean = true;\n @Input() allowDeleteFile: boolean = true;\n editableCaption: boolean = false;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n ngOnInit(): void {\n this.checkFileExtension();\n }\n\n checkFileExtension() {\n switch (this.type) {\n case 'png':\n case 'jpeg':\n case 'jfif':\n case 'jpg': {\n this.type = '.image';\n break;\n }\n case 'xlsx':\n case 'xls':\n case 'xlsm':\n case 'txt': {\n this.type = ESelectFileType.EXCEL;\n break;\n }\n case 'pdf':\n case 'html': {\n this.type = ESelectFileType.PDF;\n break;\n }\n case 'doc':\n case 'docx': {\n this.type = ESelectFileType.DOCUMENT;\n break;\n }\n }\n }\n\n downloadFile(url: string) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n\n captionClickEvent() {\n if (this.allowEditableCaption) {\n this.editableCaption = true;\n }\n }\n\n captionSave(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n if(caption !== null){\n this.caption = caption;\n this.editableCaption = false;\n this.onSaveEvent.emit(obj);\n }\n }\n\n onDeleteFile(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n this.onDeleteEvent.emit(obj);\n }\n\n cancel() {\n this.editableCaption = false;\n }\n}\n","import { Component, Input, OnInit, Optional } from '@angular/core';\nimport { RequestService } from '../../../../../services/request.service';\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { FormService } from '../../../../../services/form.service';\n\n\n@Component({\n selector: 'se-report-filter',\n templateUrl: './report-filter.component.html',\n styleUrls: ['./report-filter.component.scss']\n})\nexport class ReportFilterComponent implements OnInit {\n dynamicForm:IDynamicForm;\n formFields: IFormField[] = [];\n\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private formService:FormService, private alertService: AlertService) { }\n\n ngOnInit(): void {\n this.createDynamicFields();\n \n }\n initializeForm(){\n this.dynamicForm = {\n formSections:[\n {\n fields: [\n ...this.formFields,\n {\n label: 'Download Report',\n control: EFormControl.ADD_BUTTON,\n hidden: this.config?.data?.hideGenerateReportBtn,\n onClick: () => {\n this.downloadReport();\n },\n }\n ]\n }\n ]\n \n }\n }\n createDynamicFields() {\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n this.setParamFieldValue();\n this.initializeForm();\n // set dropdown data based on matched field.\n this.setDropDownData(reportJson);\n },\n (error) => {\n this.initializeForm();\n this.alertService.error(error);\n }\n );\n }\n setParamFieldValue(){\n if(this.config.data && this.config.data.param?.length > 0){\n this.config.data.param.forEach((param: any)=>{\n this.formFields.forEach((field)=>{\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\n if(matchKey && matchKey.length > 0){\n field.value = param[matchKey];\n }\n });\n });\n }\n }\n\n setDropDownData(reportJson: any) {\n reportJson.Parameters?.forEach((record: any) => {\n if(record.isuniquekey){\n this.requestService.get<any[], any>('/Data/Fetch', {\n uniqueKey: record.isuniquekey,\n filters: []\n }).subscribe((response:any)=>{\n this.formService.setFormFieldProp(this.dynamicForm, record.paramname, [\n { name: 'data', value: response.records }, \n ]); \n },(error) => {\n this.alertService.apiError(error);\n })\n }\n });\n }\n getFilters(){\n let filters: any = [];\n this.dynamicForm?.formSections?.forEach((section)=>{\n section.fields?.forEach((field)=>{\n if(field && field.value){\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\n };\n });\n }); \n return filters;\n }\n \n downloadReport(){ \n const filters:any = this.getFilters(); \n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response.body], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n const header = response?.headers?.get('Content-Disposition');\n const fileName = header?.split('filename=')?.[1]?.split(\";\")[0]?.replaceAll(/\\\"/g, '');\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n \n }\n );\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IFormField, EFormControl, IDynamicForm } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { RequestService } from '../../../../../services/request.service';\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\nimport * as utilities from '../../../../../services/utilities.service';\n//import { EFormControl, IDynamicForm } from '@churchillliving/se-ui-toolkit';\n\n\n\n@Component({\n selector: 'se-generate-report-btn',\n templateUrl: './generate-report-btn.component.html',\n styleUrls: ['./generate-report-btn.component.scss']\n})\nexport class GenerateReportBtnComponent implements OnInit {\n @Input() repId: any;\n @Input() label: string;\n @Input() params: any;\n @Input() showDialog: boolean;\n @Input() form: IDynamicForm;\n formFields: IFormField[] = [];\n paramsCopy: any = [];\n constructor(\n public dialogService: DialogService,\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {\n this.params.forEach((p) => {\n this.paramsCopy.push(Object.assign({}, p));\n });\n this.createDynamicFields();\n }\n\n reportClickEvent() {\n this.getFormFieldValues();\n if (\n (this.formFields.some((field) => !field.hidden) &&\n this.showDialog === undefined) ||\n this.showDialog === true\n ) {\n this.dialogService.open(ReportFilterComponent, {\n width: '80%',\n height: '100%',\n header: 'Generate Report',\n data: { Id: this.repId, param: this.params },\n });\n } else {\n this.downloadQuickReport();\n }\n }\n\n createDynamicFields() {\n this.requestService\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\n .subscribe(\n (data: any) => {\n if (data) {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n }\n },\n (error) => {\n this.alertService.error(error);\n }\n );\n }\n\n getFilters() {\n let filters: any[] = [];\n this.formFields.forEach((field) => {\n if (field && field.value?.toString()?.length > 0) {\n filters.push({\n field: field.field,\n matchMode: 'equal',\n operator: 'and',\n value: field.value,\n });\n }\n });\n return filters;\n }\n\n getFormFieldValues() {\n if (this.paramsCopy?.length > 0) {\n this.paramsCopy.forEach((paramCopy) => {\n var key = Object.keys(paramCopy)[0];\n if (paramCopy[key] === '' || !paramCopy[key]) {\n this.form?.formSections?.forEach((section) => {\n section.fields.forEach((field) => {\n if (key.toString().toLowerCase() === field.field?.toLowerCase()) {\n this.params.forEach((origParam) => {\n var origKey = Object.keys(origParam)[0];\n if (origKey == key) {\n //origParam[origKey] = field.value;\n if(field.control==EFormControl.CALENDAR){\n origParam[origKey] = field.value?field.value.toLocaleDateString():null;\n }else{\n origParam[origKey] = field.value;\n }\n }\n });\n }\n });\n });\n } else if (\n paramCopy[key].toString().includes('{') &&\n paramCopy[key].toString().includes('}')\n ) {\n var newValue = paramCopy[key].replace('{', '').replace('}', '');\n this.form?.formSections?.forEach((section) => {\n section.fields.forEach((field) => {\n if (\n newValue.toString().toLowerCase() === field.field?.toLowerCase()\n ) {\n this.params.forEach((origParam) => {\n var origKey = Object.keys(origParam)[0];\n if (origKey == key) {\n if(field.control==EFormControl.CALENDAR){\n origParam[origKey] = field.value?field.value.toLocaleDateString():null;\n }else{\n origParam[origKey] = field.value;\n }\n }\n });\n }\n });\n });\n }\n });\n //console.log('new params', this.params);\n }\n }\n \n downloadQuickReport() {\n let filters: any[] = [];\n if (this.params && this.params.length > 0) {\n this.params.forEach((param) => {\n Object.keys(param).map((key) =>\n filters.push({\n field: key,\n matchMode: 'equal',\n operator: 'and',\n value: param[key],\n })\n );\n });\n } else {\n filters = this.getFilters();\n }\n\n this.requestService\n .download('/Report/Generate', { Id: this.repId, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response.body], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n const header = response?.headers?.get('Content-Disposition');\n const fileName = header\n ?.split('filename=')?.[1]\n ?.split(';')[0]\n ?.replaceAll(/\\\"/g, '');\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n }\n );\n }\n}","import { DatePipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\nimport {\n IGlobalFilter,\n GridFilterControlType,\n EGridColumnType,\n addGlobalFilter,\n EDayRange,\n EFilterValidator,\n} from '../../../models/grid.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { GridService } from '../../../services/grid.service';\n\n@Component({\n selector: 'se-global-filters',\n templateUrl: './global-filters.component.html',\n styleUrls: ['./global-filters.component.scss'],\n})\nexport class SeGlobalFilterComponent implements OnInit {\n @ViewChild('rangeCalendar') datePicker: any;\n @Input() globalFilters: IGlobalFilter[] = [];\n @Input() searchGlobalFilterBtn: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n\n public fiterTypes = GridFilterControlType;\n public columnType = EGridColumnType;\n public showDialog: boolean = false;\n public startDate: Date;\n public endDate: Date;\n\n showInput: boolean = false;\n filter: any = '';\n hideClearFilterBtn: boolean = true;\n calendarFormat:string = 'mm/dd/yy';\n\n constructor(\n public datepipe: DatePipe,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig,\n private gridService: GridService,\n public dialogService: DialogService,\n private alertService: AlertService,\n private el: ElementRef,\n ) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n if(this.config && this.config.data){\n this.showDialog = this.config.data.openDialog;\n if(this.config.data.globalFilters){\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\n }\n \n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n // spliting date range value and assign to value and valueTwo in Date_Range Control\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \n dateRangeFilter?.forEach((dateRange)=>{\n if(dateRange.value && dateRange.valueTwo){\n if(typeof(dateRange.value)==='object'){\n dateRange.value=dateRange.value.toLocaleDateString();\n }\n if(typeof(dateRange.valueTwo)==='object'){\n dateRange.valueTwo=dateRange.valueTwo.toLocaleDateString();\n }\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \n this.setDateRangeFilterValue(dateRange);\n } else if(dateRange.value && !dateRange.valueTwo){\n this.matchSameFields(dateRange.fromField,dateRange.value,'gte');\n } else if(!dateRange.value && dateRange.valueTwo){\n this.matchSameFields(dateRange.fromField,dateRange.valueTwo,'gte');\n }\n })\n // Filtring Numeric Range controls on global filter \n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\n numerRangeFilter.forEach((numericRange) =>{\n if(numericRange){\n this.setNumericRangeValueFrom(numericRange);\n this.setNumericRangeValueTwo(numericRange);\n }\n })\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\n (this.globalFilters.some((filter)=> filter.value))\n ){\n this.applyFilters(false);\n }\n }, 500);\n }\n\n setDateRangeFilterValue(dateRange){\n if(dateRange?.value?.length > 1){\n dateRange.value[0] = new Date(dateRange.value[0]);\n dateRange.value[1] = new Date(dateRange.value[1]);\n this.selectDate(dateRange, false);\n }\n }\n \n // change calendar format on run time if user type date on the calendar field.\n calendarFocusEvent(globalFilter:IGlobalFilter, event?: any){\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\n let year = a?.target?.value?.toString()?.split('/')[2];\n year = year?.toString().split(\" \")[0];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n if(globalFilter.type === GridFilterControlType.CALENDAR){\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\n }\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n let yearValue = event?.target?.value?.toString()?.split('/')[4];\n if((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeValue(globalFilter, true);\n }\n }\n\n checkFilterValidation(removeError:boolean = false):boolean{\n let valid:boolean = false;\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\n valid = true;\n filter.errorMessage = filter.displayText+\" is required\";\n filter.requiredField = true;\n } else {\n filter.errorMessage = '';\n }\n })\n }\n return valid;\n }\n\n ngOnChanges(){\n this.checkFilterValidation();\n this.globalFilters?.forEach((filter)=>{\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\n this.applyFiltersEvent(filter);\n }\n })\n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n const girdClearFilterBtn = document.getElementById(\n 'clearGridFilterValuesButton'\n );\n if(girdClearFilterBtn){\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\n this.hideClearFilterBtn = true;\n }else{\n this.hideClearFilterBtn = false;\n }\n }else{\n this.hideClearFilterBtn = true;\n }\n }\n\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\n if(globalFilter.toField){\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\n }\n if(sendRequest){\n this.applyFilters();\n }\n }\n\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\n if(field){\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\n if(digitInfo){\n value = parseFloat(value)?.toFixed(digitInfo);\n }else{\n value = parseFloat(value)?.toFixed(2);\n }\n }\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\n if(index > -1){\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \n } else {\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\n }\n }\n }\n\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\n if(sendRequest){\n this.applyFilters();\n }\n }\n \n }\n\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\n if(globalFilter.value?.length > 0){\n const fromDateValue = this.datepipe.transform(\n globalFilter.value[0],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n const toDateValue = this.datepipe.transform(\n globalFilter.value[1],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\n }\n }else if(clearValue){\n this.matchSameFields(globalFilter.fromField, null, 'gte');\n this.matchSameFields(globalFilter.toField, null, 'lte');\n }\n }\n\n\n onFocusOutEvent(globalFilter: IGlobalFilter){\n if (globalFilter && globalFilter.onFocusOut) {\n globalFilter.onFocusOut(globalFilter);\n }\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.gridService.applyFilterEvent = false;\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n applyFiltersEvent(globalFilter: IGlobalFilter){\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.gridService.applyFilterEvent = false;\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n /**\n * Apply selected filters\n */\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeFilterValue(globalFilter);\n } \n this.gridService.applyFilterEvent = filterEvent;\n const globalFilters = this.globalFilters.filter((x) => x.field);\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\n if(index > -1){\n globalFilters.splice(index, 1);\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (this.showDialog) {\n this.ref.close(globalFilters);\n } else \n if(!this.checkFilterValidation()){\n this.checkFilterValidation(true);\n this.filtersApplied.emit(globalFilters);\n }\n }\n\n // set By Defualt Calender Range \n setDefualtCalendarRange(check: boolean = true){\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\n setTimeout(() => {\n this.showNext(filter, check);\n }, 100);\n }\n });\n }\n }\n\n showNext(filter: IGlobalFilter, check: boolean = true): string {\n let nextValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n nextValue = this.setDayFilter(filter, true);\n break;\n case EDayRange.MONTH:\n nextValue = this.setMonthFilter(filter, true);\n break;\n case EDayRange.YEAR:\n nextValue = this.setYearFilter(filter, true);\n break;\n default:\n // week\n nextValue = this.setWeekFilter(filter, true);\n break;\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.gridService.applyFilterEvent = check;\n this.filtersApplied.emit(this.globalFilters);\n return nextValue;\n }\n\n showPrevious(filter: IGlobalFilter): string {\n let previousValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n previousValue = this.setDayFilter(filter, false);\n break;\n case EDayRange.MONTH:\n previousValue = this.setMonthFilter(filter, false);\n break;\n case EDayRange.YEAR:\n previousValue = this.setYearFilter(filter, false);\n break;\n default:\n // week\n previousValue = this.setWeekFilter(filter, false);\n break;\n }\n this.gridService.applyFilterEvent = true;\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.filtersApplied.emit(this.globalFilters);\n return previousValue;\n }\n\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\n return (filter.value =\n this.datepipe.transform(\n this.startDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ) +\n '|' +\n this.datepipe.transform(\n this.endDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ));\n }\n\n setDateValue(filter: any) {\n let value: Date;\n if (filter.value) {\n value = new Date(filter.value.split('|')[0]);\n return new Date(value.setMonth(value.getMonth()));\n } else {\n return new Date();\n }\n }\n\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n )\n : currentDate;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() - 1\n )\n : currentDate;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\n : firstDateOfYear;\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\n : firstDateOfYear;\n }\n\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfMonth = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n 1\n );\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 1\n )\n : firstDateOfMonth;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() - 1,\n 1\n )\n : firstDateOfMonth;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 0\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\n let currentDate = this.setDateValue(filter);\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() + weekSeconds)\n : new Date(firstDay.getTime());\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() - weekSeconds)\n : new Date(firstDay.getTime() - weekSeconds);\n }\n\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(globalFilters: IGlobalFilter) { \n this.gridService.setLookUpFilter(globalFilters, this.dialogService, true);\n }\n\n /**\n * Clear all filter values\n */\n clearFilters() {\n this.globalFilters.map((item: any) => (item.value = null));\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\n if(clearGridFilter){\n clearGridFilter.click();\n }\n }\n\n /**\n * Clear values of Date Range Filter\n */\n clearDateRangeValue(filter: any){\n this.setDateRangeValue(filter, true)\n }\n\n /**\n * Close dialog without applying filters\n */\n cancel() {\n this.clearFilters();\n this.ref.close();\n }\n rangeDateclose(globalFilter: any) {\n this.datePicker.hideOverlay();\n this.datePicker.overlayVisible = false;\n this.datePicker.datepickerClick = true;\n const id: any = document.getElementById(globalFilter.displayText);\n id.focus();\n this.datePicker.overlayVisible = false;\n this.datePicker.datepickerClick = true;\n\n }\n\n filterInput() {\n this.showInput = !this.showInput;\n }\n\n /**\n * Focused the calender input\n */\n selectDate(globalFilter: any, focused: boolean = false){\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\n this.setDateRangeValue(globalFilter);\n if(focused ==true){\n this.rangeDateclose(globalFilter); \n }\n }\n if(focused){\n document.getElementById(globalFilter.field)?.focus();\n }\n }\n tabFocusEvent(globalFilter: any) {\n const className = this.el.nativeElement.querySelector(\n '.'+globalFilter.field\n );\n if (className) {\n className.click();\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\nimport { IGlobalFilter } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-filter',\n templateUrl: './filter.component.html',\n})\nexport class SeFilterComponent implements OnInit {\n @Input() globalFilters: IGlobalFilter[];\n @Input() showDialogFilter: boolean = false;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Input() searchGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n\n constructor(public dialogService: DialogService) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void { }\n\n /**\n * Opens the filter dialog\n */\n openFilters() {\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\n header: 'Choose Filters',\n width: '70%',\n styleClass: 'global-filter-visible',\n data: { globalFilters: this.globalFilters, openDialog: true},\n });\n\n // Modal response\n ref.onClose.subscribe((res) => {\n if (res) {\n this.filtersApplied.emit(res);\n }\n });\n }\n\n globalFiltersApplied(event: any){\n this.filtersApplied.emit(event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'se-grid-row-actions',\n templateUrl: './grid-row-actions.component.html',\n styleUrls: ['./grid-row-actions.component.scss']\n})\nexport class GridRowActionsComponent implements OnInit {\n @Input() editing: boolean;\n\n @Input() editRowPermission: boolean;\n\n @Input() deleteRowPermission: boolean;\n\n @Input() hideDeleteBtn: boolean = false;\n\n @Input() hideEditBtn: boolean = false;\n\n @Input() editAllRows: boolean = false;\n\n @Input() row: any;\n\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onRowEditInit(row: any) {\n this.onRowEditInitBtn.emit(row);\n }\n\n deleteRecord(row: any) {\n this.deleteRecordBtn.emit(row);\n }\n\n onRowEditSave(row: any) {\n this.onRowEditSaveBtn.emit(row);\n }\n\n onRowEditCancel(row: any) {\n this.onRowEditCancelBtn.emit(row);\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { GridComponent } from './components/base/grid/grid.component';\nimport { FormComponent } from './components/base/form/form.component';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\nimport { IframeComponent } from './components/base/iframe/iframe.component';\n\n// Library\nimport { TableModule } from 'primeng/table';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TabViewModule } from 'primeng/tabview';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { AddRowDirective } from './directive/add-row.directive';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NotesComponent } from './components/shared/notes/notes.component';\nimport { PanelMenuModule } from 'primeng/panelmenu';\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { RequestService } from './services/request.service';\nimport { Environment } from './models/response.model';\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\nimport { HeaderComponent } from './components/base/header/header.component';\nimport { MenuModule } from 'primeng/menu';\nimport { GalleriaModule } from 'primeng/galleria';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { AccordionModule } from 'primeng/accordion';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { LoaderComponent } from './components/base/loader/loader.component';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\nimport {AvatarModule} from 'primeng/avatar';\nimport { CardModule } from 'primeng/card';\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\nimport { CaptionComponent } from './components/base/caption/caption.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CardComponent } from './components/base/cards/card.component';\nimport { fileComponent } from './components/base/file/file.component';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport { AlertService } from './services/alert.service';\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\nimport { SeFilterComponent } from './components/base/filter/filter.component';\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\n\n\nexport const toasterModuleforRoot = ToastrModule.forRoot();\n\n@NgModule({\n declarations: [\n GridComponent,\n GridRowActionsComponent,\n DropdownComponent,\n AddRowDirective,\n FormComponent,\n NotesComponent,\n AppFilterMenuComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n IframeComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeGlobalFilterComponent,\n SeFilterComponent,\n AlertPopUpComponent\n ],\n\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\n imports: [\n CommonModule,\n TableModule,\n PanelMenuModule,\n MenuModule,\n MultiSelectModule,\n FormsModule,\n BrowserAnimationsModule,\n TabViewModule,\n DropdownModule,\n CalendarModule,\n CheckboxModule,\n ButtonModule,\n ProgressSpinnerModule,\n RippleModule,\n InputTextModule,\n TriStateCheckboxModule,\n InputTextareaModule,\n TooltipModule,\n BrowserModule,\n GalleriaModule,\n AutoCompleteModule,\n AccordionModule,\n ConfirmDialogModule,\n MessagesModule,\n InputNumberModule,\n AvatarModule,\n CardModule,\n DragDropModule,\n InputSwitchModule,\n toasterModuleforRoot\n ],\n exports: [\n GridComponent,\n GridRowActionsComponent,\n FormComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeFilterComponent,\n SeGlobalFilterComponent\n ],\n})\nexport class SEToolkitModule {\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\n return {\n ngModule: SEToolkitModule,\n providers: [\n RequestService,\n {\n provide: 'env',\n useValue: environment\n }\n ]\n };\n }\n}\n","import { EFormControl, IHyperlink } from './form.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IHeader {\n fields: IHeaderField[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface IHeaderField {\n label?: string;\n value?: any;\n control?: EFormControl;\n data?: any[];\n onClick?: () => void;\n class?: string;\n column?: number;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport enum EButtonClass {\n NORMAL = 'p-button-sm',\n SUCCESS = 'p-button-success p-button-sm',\n INFO = 'p-button-info p-button-sm',\n WARNING = 'p-button-warning p-button-sm',\n HELP = 'p-button-help p-button-sm',\n DANGER = 'p-button-danger p-button-sm',\n}\n\nexport interface AddHeaderField {\n control?: EFormControl;\n label?: string;\n value?: string;\n column?: number;\n data?: any;\n class?: string;\n onClick?: (() => void) | any;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport interface IHeaderFormat {\n type: EHeaderFormatType | any;\n formatParams?:IFormatParams\n | IDateFormatParams\n | INumberFormatParams\n | ICurrencyFormatParams;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParams {\n locale?: string;\n}\n\nexport interface IDateFormatParams extends IFormatParams {\n format?: string;\n}\n\nexport interface INumberFormatParams extends IFormatParams {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParams extends INumberFormatParams {\n currency: string;\n}\n\nexport enum EHeaderFormatType {\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}","import { Injectable } from '@angular/core';\nimport { EFormControl } from '../models/form.model';\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderService {\n constructor() {}\n\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\n if (!headerInfo.column) {\n headerInfo.column = 3;\n }\n\n const headerField: IHeaderField = {\n label: headerInfo.label,\n control: headerInfo.control,\n value: headerInfo.value,\n column: headerInfo.column,\n data: headerInfo.data,\n class: headerInfo.class,\n onClick: headerInfo.onClick,\n hyperlink: headerInfo.hyperlink,\n disabled: headerInfo.disabled,\n hidden: headerInfo.hidden,\n permissions: headerInfo.permissions,\n format: headerInfo.format,\n showTime: headerInfo.showTime,\n timeOnly: headerInfo.timeOnly,\n };\n return headerField;\n }\n\n addLabel(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.LABEL;\n return this.addHeaderField(headerInfo);\n }\n \n addDropdown(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.DROPDOWN;\n return this.addHeaderField(headerInfo);\n }\n\n addButton(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.BUTTON;\n return this.addHeaderField(headerInfo);\n }\n\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CHECKBOX;\n return this.addHeaderField(headerInfo);\n }\n\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.HYPERLINK;\n return this.addHeaderField(headerInfo);\n }\n\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CALENDAR;\n return this.addHeaderField(headerInfo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl, IDynamicForm } from '../models/form.model';\nimport { AlertService } from './alert.service';\nimport { RequestService } from './request.service';\nimport * as utilities from '../../lib/services/utilities.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CardService {\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) { }\n\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\n let imageToDelete =\n imageInfo.id && imageInfo.id > 0\n ? { RecordId: imageInfo.id }\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\n (response: any) => {\n this.deleteFile(imageInfo, dynamicForm, cardId);\n if (imageInfo.tables) {\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\n } else {\n this.alertService.success('Image deleted successfully.');\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n deleteImageFromTables(tables: any[], uniqueKey: string) {\n this.requestService\n .get('/Data/BulkDelete', {\n UniqueKey: uniqueKey,\n tables: tables,\n })\n .subscribe(\n (response) => {\n this.alertService.success('Image deleted successfully.');\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n getCardData(formSections: any, id: string): any {\n let arr = {};\n formSections?.forEach((formSection: any) => {\n formSection.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\n }\n });\n });\n return arr;\n }\n\n setFileUploadData(response: any, dynamicForm: any, id: string) {\n if (response) {\n dynamicForm.formSections?.forEach((x: any) => {\n x.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\n field.card?.data?.unshift(...response);\n }\n });\n });\n }\n }\n\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\n const fieldInfo = this.getCardData(\n dynamicForm.formSections,\n id\n );\n let cardData = fieldInfo.data;\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\n\n dynamicForm.formSections?.forEach((section) => {\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\n if (card && card.card) {\n card.card.data = cardData;\n }\n });\n }\n\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\n arr = utilities.setDataFields(arr);\n cardInfo = utilities.objConvertToLower(cardInfo);\n \n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\n if (index > -1) {\n arr.splice(index, 1);\n }\n return arr;\n }\n\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\n utilities.changeDynamicFormState1({records: response.records, cardsInfo: cardsInfo, fieldName: fieldName});\n // response.records?.forEach((record: any, recordIndex: any) => {\n // const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record[fieldName]);\n // if(matchCard && Object.keys(matchCard)?.length > 0){\n // matchCard[fieldName] = record[fieldName];\n // }\n // });\n\n // if(dynamicForm && Object.keys(dynamicForm)?.length){\n // dynamicForm.formSections.forEach((section)=>{\n // const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\n // if(formField){\n // if(cardsInfo?.length > 0){\n // cardsInfo?.forEach((cardId)=>{\n // cardId.id = null;\n // })\n // }\n // formField.card.data = cardsInfo;\n // };\n // });\n // }\n }\n\n}\n","/*\n * Public API Surface of se-ui-toolkit\n */\nexport * from 'primeng/api';\n\n/**\n * Exported Modules\n */\n\nexport * from './lib/se-ui-toolkit.module';\n\n/**\n * Exported Components\n */\nexport * from './lib/components/base/form/form.component';\nexport * from './lib/components/base/grid/grid.component';\nexport * from './lib/components/base/menu-bar/menu-bar.component';\nexport * from './lib/components/base/sidebar/sidebar.component';\nexport * from './lib/components/base/header/header.component';\nexport * from './lib/components/base/image-gallery/image-gallery.component';\nexport * from './lib/components/base/iframe/iframe.component';\nexport * from './lib/components/base/loader/loader.component';\nexport * from './lib/components/base/file-upload/file-upload.component';\nexport * from './lib/components/base/caption/caption.component';\nexport * from './lib/components/base/cards/card.component';\nexport * from './lib/components/base/file/file.component';\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nexport * from './lib/components/shared/global-filters/global-filters.component';\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\nexport * from './lib/components/base/filter/filter.component';\n\n/**\n * Exported Type Definitions\n */\nexport * from './lib/models/form.model';\nexport * from './lib/models/grid.model';\nexport * from './lib/models/response.model';\nexport * from './lib/models/request.model';\nexport * from './lib/models/header.model';\nexport * from './lib/models/sidebar.model';\nexport * from './lib/models/user-info.model';\nexport * from './lib/models/menu.model';\nexport * from './lib/models/common.model';\n\n/**\n * Exported Services\n */\nexport * from './lib/services/alert.service';\nexport * from './lib/services/form.service';\nexport * from './lib/services/grid.service';\nexport * from './lib/services/dropdown.service';\nexport * from './lib/services/page-logger.service';\nexport * from './lib/services/authentication.service';\nexport * from './lib/services/utilities.service';\nexport * from './lib/services/request.service';\nexport * from './lib/services/sidebar.service';\nexport * from './lib/services/hyperlink.service';\nexport * from './lib/services/header.service';\nexport * from './lib/services/loader.service';\nexport * from './lib/services/card.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","utilities.calenderMinMaxValue","utilities.objConvertToLower","utilities.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.currentUrl","utilities.setTimeInDate","utilities.draggableDialog","utilities.autoSetLookupData","utilities.setMinutesInterval","utilities.changeDynamicFormState","utilities.onDynamicCardStateChange","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","utilities.setPropValue","utilities.getFormFieldValue","utilities.setCardFieldsData","utilities.setDataFields","utilities.changeDynamicFormState1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"churchillliving-se-ui-toolkit.js","sources":["../../../projects/se-ui-toolkit/src/lib/models/grid.model.ts","../../../projects/se-ui-toolkit/src/lib/components/base/alert-pop-up/alert-pop-up.component.ts","../../../projects/se-ui-toolkit/src/lib/services/alert.service.ts","../../../projects/se-ui-toolkit/src/lib/services/request.service.ts","../../../projects/se-ui-toolkit/src/lib/services/dropdown.service.ts","../../../projects/se-ui-toolkit/src/lib/services/hyperlink.service.ts","../../../projects/se-ui-toolkit/src/lib/models/form.model.ts","../../../projects/se-ui-toolkit/src/lib/services/utilities.service.ts","../../../projects/se-ui-toolkit/src/lib/services/grid.service.ts","../../../projects/se-ui-toolkit/src/lib/models/user-info.model.ts","../../../projects/se-ui-toolkit/src/lib/services/authentication.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/iframe/iframe.component.ts","../../../projects/se-ui-toolkit/src/lib/services/page-logger.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid/grid.component.ts","../../../projects/se-ui-toolkit/src/lib/services/form.service.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/notes/notes.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/form/form.component.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/dropdown/dropdown.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/image-gallery/image-gallery.component.ts","../../../projects/se-ui-toolkit/src/lib/directive/add-row.directive.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid/grid.constant.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/filter-menu/filter-menu.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/menu-bar/menu-bar.component.ts","../../../projects/se-ui-toolkit/src/lib/models/sidebar.model.ts","../../../projects/se-ui-toolkit/src/lib/services/sidebar.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/sidebar/sidebar.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/header/header.component.ts","../../../projects/se-ui-toolkit/src/lib/services/loader.service.ts","../../../projects/se-ui-toolkit/src/lib/components/base/loader/loader.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/file-upload/file-upload.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/caption/caption.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/cards/card.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/file/file.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/report/report-Filter/report-filter/report-filter.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.ts","../../../projects/se-ui-toolkit/src/lib/components/shared/global-filters/global-filters.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/filter/filter.component.ts","../../../projects/se-ui-toolkit/src/lib/components/base/grid-row-actions/grid-row-actions.component.ts","../../../projects/se-ui-toolkit/src/lib/se-ui-toolkit.module.ts","../../../projects/se-ui-toolkit/src/lib/models/header.model.ts","../../../projects/se-ui-toolkit/src/lib/services/header.service.ts","../../../projects/se-ui-toolkit/src/lib/services/card.service.ts","../../../projects/se-ui-toolkit/src/public-api.ts","../../../projects/se-ui-toolkit/src/churchillliving-se-ui-toolkit.ts"],"sourcesContent":["import { IPermission } from './user-info.model';\nimport { Type } from '@angular/core';\nimport { IAutoCompleteSave, IDropDownRequest, IReportBtn } from './form.model';\n\nexport interface IGridColumn {\n component?: Type<any>;\n allowSearch?: boolean;\n allowEdit?: boolean;\n allowAutoCompleteSave?:boolean;\n uniqueKey?: IAutoCompleteSave;\n target?: EGridlink;\n header?: string;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n type?: EGridColumnType;\n hidden?: boolean;\n hyperlink?: string;\n sorting?: boolean;\n filtering?: boolean;\n filter?: IGridFilterType;\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\n data?: any;\n style?: string;\n permissions?: IPermission[];\n value?: any;\n filterValue?: any;\n tableAlias?: string;\n linkId?: string;\n params?: {[key: string]: any};\n minutesInterval?: number;\n showTime?: boolean;\n timeOnly?: boolean;\n displayText?: string;\n disabled?: boolean;\n editable?: boolean;\n editLink?: boolean;\n allowSave?: boolean;\n validations?: IGridValidation[];\n errorMessage?: string;\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n}\n\nexport interface IGridLookupControl {\n component?: any;\n data?: IGridLookupData;\n}\n\nexport declare type IGridLookupData = {\n header?: string;\n height?: string;\n width?: string;\n labelProp?: string;\n valueProp?: string;\n data?: {[key: string]: any};\n}\n\nexport enum EGridAggregate {\n SUM = 'sum',\n AVERAGE = 'average',\n COUNT = 'count',\n}\n\nexport interface IGridAggregate {\n type: EGridAggregate;\n caption?: string;\n displayField?: string;\n aggrValue?:string;\n format?: IAggregateFormat;\n}\nexport interface IAggregateFormat {\n type: EAggregateFormat;\n digitsInfo?: number;\n}\n\nexport enum EAggregateFormat {\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n}\n\nexport enum EGridlink {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport interface IGridDataExport {\n rows: any[];\n headings: string[];\n}\n\nexport interface ISelectItem {\n label: string;\n value: string;\n}\n\nexport interface IGridFilterType {\n type?: GridFilterControlType;\n data?: ISelectItem[];\n tableAlias?: string;\n showFilter?: boolean;\n}\n\nexport interface IAlertPopUpBtn {\n buttonLabel: string;\n buttonClass?: string;\n}\n\nexport interface IAlertPopUp {\n message: string;\n header?: string;\n buttons: IAlertPopUpBtn[];\n height?: string;\n width?: string;\n icon?: string;\n}\n\nexport enum EGridFormatter {\n BOOLEAN = 'boolean',\n CHAR = 'char',\n NUMERIC = 'numeric'\n}\n\nexport enum GridFilterControlType {\n INPUT = 'input',\n DROPDOWN = 'dropdown',\n CHECKBOX = 'checkbox',\n CALENDAR = 'calendar',\n CALENDAR_RANGE = 'calender_range',\n MULTISELECT = 'multi-select',\n NUMERICINPUT = 'numeric_input',\n NUMERIC_RANGE = 'numeric_range',\n DATE_RANGE = 'date_range',\n LOOKUP_INPUT = 'lookup_input',\n SPACER = 'spacer'\n}\n\nexport enum EDayRange {\n DAY = 'Day',\n WEEK = 'Week',\n MONTH = 'Month',\n YEAR = 'Year',\n}\n\nexport enum EGridSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum EGridColumnType {\n LINK = 'link',\n IFRAME = 'iframe',\n DIALOG = 'dialog',\n TEXT = 'text',\n NUMERIC = 'numeric',\n DATE = 'date',\n BOOLEAN = 'boolean',\n DROPDOWN = 'dropdown',\n LOOKUP_INPUT = 'lookup_input',\n ADD_BUTTON = 'add_button',\n AUTOCOMPLETE = 'AutoComplete',\n MULTISELECT = 'multi-select',\n REPORT = 'report',\n}\n\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\n displayText?: string;\n onFocusOut?: (value: any) => any;\n onReturn?: (value: any) => any;\n optionLabel?: string;\n optionValue?: string;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n format?: string | EGridFormatType | EGlobalFilterFormatType;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n color?: string;\n validations?: IGridValidation[];\n errorMessage?:string;\n requiredField?: boolean;\n}\n\nexport interface ILookupControlFilter {\n component?: any;\n data?: ILookupFilterData;\n}\n\nexport declare type ILookupFilterData = {\n header: string;\n width?: string;\n labelProp?: string;\n valueProp?: string;\n data: any;\n} & {\n [key: string]: any;\n};\n\nexport interface IPrimeNgSort {\n multisortmeta: { field: string; order: number };\n}\n\nexport interface IPrimeNgFilterItem {\n matchMode: string;\n operator: string;\n value: string | number | boolean | Date | any;\n}\n\nexport interface IPrimeNgFilter {\n filteredValue: any[];\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\n}\n\nexport interface IGridFilter {\n field?: string;\n matchMode?: string;\n operator?: string;\n filtering?: boolean;\n value?: any;\n valueTwo?: any;\n tableAlias?: string;\n column?: string;\n}\n\nexport interface IGridSort {\n field?: string;\n direction?: EGridSortDirection;\n priority: number;\n tableAlias?: string;\n}\n\nexport class IGridServerSideEvent {\n filters?: IGridFilter[];\n sorts?: IGridSort[];\n page?: number;\n pageSize?: number;\n}\n\nexport interface IGridPaginationEvent {\n first: number;\n rows: number;\n}\n\nexport interface IGridColumnAction {\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\n tooltip: string;\n width?: string;\n confirmDialog?: boolean;\n onClick: (row: any) => void;\n}\n\nexport interface IGridRowAction {\n title: string;\n class?: string;\n onClick: (row: any) => void;\n}\n\nexport enum EGridFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'm d, yy',\n PERIOD = 'mm/y',\n LONGDATE = 'mm/dd/yy, h:mm a',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport enum EGlobalFilterFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n}\n\nexport enum EGridSelectionType {\n SINGLE = 'single',\n MULTIPLE = 'multiple',\n}\n\nexport type MenuFilterControls =\n | GridFilterControlType.INPUT\n | GridFilterControlType.NUMERICINPUT\n | GridFilterControlType.CALENDAR;\n\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\n\nexport interface addColumn {\n target?: EGridlink;\n allowEdit?: boolean;\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n showOption?: boolean;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n showTime?: boolean;\n timeOnly?: boolean;\n hidden?: boolean;\n hyperlink?: string;\n allowSearch?: boolean;\n allowAutoCompleteSave?:boolean;\n uniqueKey?:IAutoCompleteSave;\n minutesInterval?: number;\n sorting?: boolean;\n filter?: IGridFilterType;\n tableAlias?: string;\n linkId?: string;\n editable?: boolean;\n editLink?: boolean;\n params?: {[key: string]: any};\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n filterValue?: any;\n}\n\nexport interface IDialogColumn {\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n hidden?: boolean;\n sorting?: boolean;\n aggregate?: IGridAggregate[];\n filter?: IGridFilterType;\n tableAlias?: string;\n filterValue?: any,\n editable?: boolean;\n showOption?: boolean;\n editLink?: boolean;\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (res?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n}\n\nexport interface addFilterColumn {\n control?: GridFilterControlType;\n field?: string;\n header?: string;\n filter?: GridFilterControlType;\n filtering?: boolean;\n hidden?: boolean;\n style?: string;\n showTime?: boolean;\n timeOnly?: boolean;\n format?: string;\n tableAlias?: string;\n validations?: IGridValidation[] | any;\n errorMessage?: string;\n isvalid?: boolean;\n disabled?: boolean;\n allowSave?: boolean;\n permissions?: IPermission[];\n component?: Type<any>;\n type?: EGridColumnType;\n data?: any;\n}\n\nexport interface IGridValidation {\n type: EGridValidator | EFilterValidator;\n expression?: any;\n}\nexport enum EFilterValidator {\n REQUIRED = \"required\",\n}\nexport interface IGridReportBtn extends IReportBtn{\n type?: EGridColumnType.REPORT;\n}\nexport interface IGridRowProp{\n propName: EGridRowPropName | string; //IGridColumnPropName;\n propValue: any;\n field?: string;\n action?: EGridRowAction;\n}\n\nexport enum EGridRowAction {\n DELETEBTN = 'delete_btn',\n EDITBTN = 'edit_btn',\n}\n\nexport enum EGridRowPropName {\n DISPLAYTEXT = 'displayText',\n DISABLED = 'disabled',\n DISPLAYFIELD = 'displayField',\n HIDDEN = 'hidden',\n ICON = 'icon',\n LOOKUPCONTROL='lookupControl', \n HIDEFIELDVALUE='hideFieldValue'\n}\n\nexport enum EGridValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n MAXOPTIONS='maxOptions'\n}\n\nexport interface addGlobalFilter {\n field?: string;\n validations?: IGridValidation[];\n displayText?: string;\n type?: GridFilterControlType;\n data?: any;\n value?: any;\n valueTwo?: any;\n matchMode?: string;\n operator?: string;\n tableAlias?: string;\n optionLabel?: string;\n optionValue?: string;\n format?: EGlobalFilterFormatType | IGridFormat | any;\n column?: string;\n onFocusOut?: (value: any) => any;\n onReturn?: (value: any) => any;\n filtering?: boolean;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n labelText?: string;\n prefix?: boolean;\n hidden?: boolean;\n color?: string;\n}\n\nexport interface IGridFormat {\n type: EGridFormatType;\n formatParams?:\n | IGridFormatParam\n | IGridDateFormatParam\n | IGridNumberFormatParam\n | IGridCurrencyFormatParam\n | IGridallowcalculateFormatParam;\n\n formatter?: (value: any) => any;\n}\n\nexport interface IGridFormatParam {\n locale?: string;\n}\n\nexport interface IGridDateFormatParam extends IGridFormatParam {\n format?: string;\n}\n\nexport interface IGridNumberFormatParam extends IGridFormatParam {\n digitsInfo?: string;\n}\n\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\n currency: string;\n}\n\nexport interface IGridProp {\n name: string;\n value: any;\n field?: string;\n}\n\nexport interface IGridPropFilter {\n field: string;\n value: any;\n}\n\nexport interface IGridFilterInfo {\n [key:string]:any;\n}\n","import { Component, OnInit, Optional } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'lib-alert-pop-up',\n templateUrl: './alert-pop-up.component.html',\n styleUrls: ['./alert-pop-up.component.css']\n})\nexport class AlertPopUpComponent implements OnInit {\n buttons: any[]\n message: string;\n icon: string;\n\n constructor(@Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef,) { }\n\n ngOnInit(): void {\n if(this.config?.data){\n this.message = this.config.data?.alertPopInfo?.message;\n this.buttons = this.config.data?.alertPopInfo?.buttons;\n this.icon = this.config.data?.alertPopInfo?.icon;\n }\n }\n\n clickedBtn(button: any){\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\n if(closeBtn){\n closeBtn?.click();\n this.ref.close(button);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ConfirmationService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\nimport { IAlertPopUp, } from '../models/grid.model';\n\n@Injectable()\nexport class AlertService {\n \n constructor(\n private toastr: ToastrService,\n public dialogService: DialogService,\n private confirmationService: ConfirmationService\n ) { }\n\n success(message: string, time: number = 5000) {\n this.toastr.success(message, \"\", { closeButton: true, timeOut: time });\n }\n\n info(message: string, time: number = 5000) {\n this.toastr.info(message, \"\", { closeButton: true, timeOut: time });\n }\n\n warning(message: string, time: number = 5000) {\n this.toastr.warning(message, \"\", { closeButton: true, timeOut: time });\n }\n\n error(error: string, time: number = 5000, message?: string,) {\n this.toastr.error(error, message, { closeButton: true, timeOut: time });\n }\n\n apiError(error: any, time: number = 5000) {\n if (typeof error === 'string' || typeof error.error === 'string') {\n typeof error.error === 'string' ? this.error(error.error, time) : this.error(error, time);\n } else if (error && error.error && error.error.errorDetails) {\n const [responseError] = error.error.errorDetails;\n this.error(responseError.errorMessage, time);\n }\n else if(error && error.headers && error.status !== 401) {\n this.error('something went wrong during api request', time);\n }\n }\n\n \n confirm({\n message = \"Are you sure that you want to proceed?\",\n header = \"Confirmation\",\n icon = \"pi pi-exclamation-triangle\",\n key= '',\n } = {}): Promise<any> {\n return new Promise(resolve => {\n this.confirmationService.confirm({\n message,\n header,\n icon,\n key,\n accept: () => {\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\n this.confirmationService.close();\n },\n reject: () => {\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\n this.confirmationService.close();\n }\n })\n });\n }\n\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\n return new Promise(resolve => {\n const ref = this.dialogService.open(AlertPopUpComponent, {\n styleClass: 'alertPopUp',\n header: header,\n width: width,\n height: height,\n data: { alertPopInfo: {message, icon, buttons}},\n });\n ref.onClose.subscribe((res) => {\n if (res) {\n resolve(res.buttonLabel);\n }\n });\n });\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Response } from '../models/response.model';\nimport { Environment } from '../models/response.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestService {\n\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \n }\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob', observe: 'response' });\n }\n\n get<T, K>(endpoint: string, data: K, baseUrl: string = this.env.baseUrl): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getRequest<T, K>(endpoint: string) {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\n }\n\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n getCurrentRoute(): any{\n let route = window.location.href;\n if(route && route.includes('/')){\n let currentRoute = route.split('/');\n route = currentRoute[currentRoute.length-1];\n const source = `?source=${route}`;\n return source;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\nimport { ISelectItem } from '../models/grid.model';\nimport { GridService } from './grid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DropdownService {\n constructor(\n private requestService: RequestService,\n ) {}\n\n /**\n * Function to set the values for dropdown\n * @param response array of data\n * @param valueProp property name for value\n * @param labelProp property name for label\n */\n\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\n let dropdownvalues: ISelectItem[] = [];\n return new Promise((resolve, reject) => {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\n if (response) {\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\n return resolve(dropdownvalues);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n })\n });\n }\n\n setDropDown(response: any, valueProp: string, labelProp: string) {\n if (valueProp) valueProp = valueProp.toLowerCase();\n if (labelProp) labelProp = labelProp.toLowerCase();\n let dropdownvalues: ISelectItem[] = [];\n if (response.records) {\n this.setDataFields(response.records).forEach((record: any) => {\n if (\n record.hasOwnProperty(valueProp && labelProp) &&\n record[valueProp] &&\n record[labelProp]\n ) {\n dropdownvalues.push({\n label: record[labelProp].toString().trim(),\n value: record[valueProp].toString().trim(),\n });\n }\n });\n }\n return dropdownvalues;\n }\n\n setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n data.push(result);\n });\n }\n return data;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { EGridColumnType } from '../models/grid.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { RequestService } from './request.service';\nimport { IDynamicForm } from '../models/form.model';\nimport { IDictionary } from '../models/common.model';\n@Injectable({\n providedIn: 'root',\n})\nexport class HyperlinkService {\n constructor(private requestService: RequestService) { }\n\n buildUrl(linkIds: any, params: { [key: string]: string }) {\n return new Promise((resolve, reject) => {\n if (Array.isArray(linkIds)) {\n this.requestService\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\n .subscribe(\n (res: any) => {\n if (res) {\n return resolve(res);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n } else {\n this.requestService\n .getOne<any, any>('/Link/ByLinkId', linkIds)\n .subscribe(\n (response) => {\n if (response) {\n return resolve(this.setUrl(params, response));\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n }\n });\n }\n\n setUrl(params: { [key: string]: string }, response: any) {\n let url: string = response.url;\n for (let paramKey in params) {\n const lowerKey = paramKey.toLowerCase();\n const paramValue = params[paramKey];\n if (\n url &&\n url.search &&\n url.search(lowerKey) > 0 &&\n paramValue &&\n paramValue.length > 0\n ) {\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\n }\n }\n return url;\n }\n\n async addHyperlinks(columns: any) {\n let linkIds: any[] = [];\n let params: any;\n if (columns && Array.isArray(columns)) {\n columns.forEach((column) => {\n if (\n (column.type === EGridColumnType.LINK ||\n column.type === EGridColumnType.IFRAME||\n column.type === EGridColumnType.LOOKUP_INPUT) &&\n column.linkId &&\n column.params\n ) {\n linkIds.push(column.linkId);\n params = column.params;\n }\n });\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n } else if (columns.linkId) {\n linkIds.push(columns.linkId);\n params = columns.params;\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n }\n }\n\n setLinkParamValues(\n { formSections }: IDynamicForm,\n field: string,\n params: any[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n const isLabelLink =\n formField.label && typeof formField.label === 'object';\n if (\n formField.field?.toLowerCase() === field?.toLowerCase() || \n (isLabelLink && formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && typeof formField.label === 'string' && formField.label?.toLowerCase() === field?.toLowerCase())\n ) {\n let newLink: string = isLabelLink\n ? formField.label?.labelControl?.orignalLink\n : formField.orignalLink ? formField.orignalLink : formField.hyperlink?.link;\n \n if (newLink && newLink.length > 0) {\n return params.map((paramObj: IDictionary): any => {\n if (\n (typeof paramObj.value === 'object' && paramObj.value) ||\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\n ) {\n // removing https:// or http:// from hyperlink param value\n if (\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \n (newLink.includes('https://') || newLink.includes('http://')) \n ) {\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\n }\n const paramName: string = paramObj.name.toLowerCase();\n const paramFormat: string = !paramObj.value\n ? '{{' + paramName + '}}'\n : paramName;\n \n if (newLink.localeCompare(paramFormat)) {\n let setLink =\n paramFormat !== '{{' + paramFormat + '}}'\n ? '{{' + paramFormat + '}}'\n : paramFormat;\n \n newLink = newLink.replace(\n new RegExp(setLink, 'ig'),\n (paramObj.value)?.trim()\n );\n // if (newLink && !newLink.startsWith('http'))\n // {\n // newLink = \"http://\" + newLink;\n // }\n }\n return isLabelLink\n ? (formField.label.labelControl.hyperlink.link = newLink)\n : (formField.hyperlink.link = newLink);\n }\n });\n }\n }\n });\n });\n }\n\n setSidebarLink(response: any, sidebar: ISidebar[]) {\n response.forEach((res: any) => {\n sidebar.forEach((item) => {\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\n item.onClick(res.url);\n }\n });\n });\n }\n\n}\n","import { Type } from '@angular/core';\nimport { IGridSort, ISelectItem } from './grid.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IDynamicForm {\n formSections?: IFormSection[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface ILabel {\n name: string;\n disabled?: boolean;\n labelControl?: IFormField;\n onReturn?: (value: any) => void;\n onClick?: () => void;\n}\n\nexport interface IDropDownRequest {\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters?: ISetFilter[]\n sorts?:IGridSort[] \n}\n\nexport interface IAutoCompleteSave {\n name:string,\n values:IAutoCompleteValueSave[],\n}\n\nexport interface IAutoCompleteValueSave{\n name:string,\n value?:any\n}\n\nexport interface ISetFilter {\n field?: string,\n value?: any,\n matchMode?: string,\n operator?: string,\n valueField?: string;\n}\n\nexport interface IFormSection {\n name?: string;\n fields: IFormField[];\n icon?: string;\n class?: string;\n links?: ILabel[];\n permissions?: IPermission[];\n hidden?: boolean;\n accordionDisabled?: boolean;\n showAccordion?: boolean;\n expanded?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n}\n\nexport interface IFormField {\n label?: string | ILabel;\n class?: string;\n card?: IDynamicCard;\n control?: EFormControl;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n value?: any | ILookupInputValue;\n data?: any[];\n validations?: IValidation[];\n errorMessage?: string;\n minutesInterval?: number;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n lookupControl?: ILookupControlField;\n tables?: string[];\n componentControl?: IFormComponentField;\n column?: number;\n row?: number;\n hyperlink?: IHyperlink;\n format?: IFormat;\n permissions?: IPermission[];\n hidden?: boolean;\n optionLabel?: string;\n optionValue?: string;\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?: any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n isvalid?: boolean;\n timeOnly?: boolean\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n requiredField?: boolean;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n isPassword?:boolean\n textType?:string;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n\n icon?: string;\n color?: string;\n uniqueKey?: string;\n azureContainer?: string;\n}\nexport interface IFormButton{\n icon?:string;\n label:string;\n hidden?:boolean;\n func:Function;\n disabled?:boolean;\n}\nexport interface IDynamicCard {\n id?: number;\n name?: string;\n data?: any[];\n orderByField?: string;\n formSections?: IFormSection[];\n onSort?: (value: any) => any;\n allowDelete?: boolean;\n allowDownload?: boolean;\n url?: string;\n caption?: string;\n width?: string;\n height?: string;\n allowEditableCaption?: boolean;\n onCaptionSave?: (value: any) => any;\n onDelete?: (value: any) => any;\n class?: string;\n cardInfo?: IViewCardProp;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\nexport interface IReportBtn{\n reportId: number;\n label?: string;\n control?: EFormControl.REPORT;\n params?: any[];\n showDialog?: boolean;\n}\n\nexport interface IListFilter {\n uniqueKey: string;\n filters?: ISetFilter[];\n sorts?: IGridSort[];\n}\n\nexport interface IFormComponentField {\n component: Type<any>;\n id?:string;\n data?: {\n [key: string]: any;\n };\n handlers?: {\n [key: string]: Function;\n };\n}\n\nexport interface ILookupInputValue {\n text: any;\n value: any;\n}\n\nexport interface ILookupControlField {\n component: any;\n data: ILookupFieldData;\n id?: string;\n}\n\nexport declare type ILookupFieldData = {\n header?: string;\n height?: string;\n width?: string;\n data?: {[key: string]: any};\n labelProp?: string;\n valueProp?: string;\n} \n\nexport interface IValidation {\n type: EValidator;\n expression?: any;\n}\n\nexport enum ESelectFileType {\n EXCEL = '.excel',\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\n DOCUMENT = '.document',\n PDF = '.pdf',\n MRT = '.mrt',\n}\n\nexport enum EValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport enum EFormControl {\n BUTTON = 'button',\n LABEL = 'label',\n INPUT = 'input',\n CHECKBOX = 'checkbox',\n DROPDOWN = 'dropdown',\n CALENDAR = 'calender',\n NUMERIC = 'number',\n MULTISELECT = 'multi-select',\n TEXTAREA = 'text-area',\n HYPERLINK = 'hyperlink',\n LOOKUP_INPUT = 'lookup_input',\n NOTE_FIELD = 'note_field',\n COMPONENT = 'component',\n PASSWORD = 'password',\n AUTOCOMPLETE = 'AutoComplete',\n SPACER = 'spacer',\n SECTION_HEADER = 'section_header',\n FILE_UPLOAD = 'file_upload',\n CARD = 'card',\n DISPLAY_FILE = 'display_file',\n ADD_BUTTON = 'add_button',\n BREAK_LINE = 'break_line',\n SWITCH = 'switch',\n REPORT = 'report'\n}\n\nexport enum EOperator {\n AND = 'and',\n OR = 'or',\n}\n\nexport enum EMatchMode {\n EQUALS = 'equals',\n STARTSWITH = 'startsWith',\n CONTAINS ='contains',\n IN = 'in',\n ENDSWITH = 'endsWith',\n NOTEQUALS = 'notEquals',\n ISNOT = 'isNot',\n DATEISNOT = 'dateIsNot',\n NOTCONTAINS ='notContains',\n LT = 'lt',\n BEFORE = 'before',\n DATEBEFORE = 'datebefore',\n LTE = 'lte',\n GT = 'gt',\n AFTER = 'after',\n DATEAFTER = 'dateAfter',\n GTE = 'gte',\n}\n\nexport interface IFormat {\n type: EFormatType;\n formatParams?:\n | IFormatParam\n | IDateFormatParam\n | INumberFormatParam\n | IallowCalculateFormatParam\n | ICurrencyFormatParam;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParam {\n locale?: string;\n}\n\nexport interface IDateFormatParam extends IFormatParam {\n format?: string;\n}\n\nexport interface IallowCalculateFormatParam extends IFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface INumberFormatParam extends IFormatParam {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParam extends INumberFormatParam {\n currency: string;\n}\n\nexport enum EFormatType {\n SMALLDATE = 'mm/d/y',\n SHORTDATE = 'mm/d/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n MONTHONLY = 'mm/yy',\n PERIOD = 'mm/y',\n BOOLEAN_YN = 'BOOLEAN_YN',\n CUSTOM = 'custom',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport interface IHyperlink {\n target?: EHyperlink;\n link?: string;\n linkId?: string;\n params?: any;\n width?:string;\n height?:string;\n component?: any;\n data?: ILookupFieldData;\n}\n\nexport enum EHyperlink {\n BLANK = '_blank',\n SELF = '_self',\n PARENT = '_parent',\n TOP = '_top',\n IFRAME = '_iframe',\n DIALOG = '_dialog'\n}\n\nexport interface AddFormField {\n control?: EFormControl;\n field?: string;\n class?: string;\n displayField?: string;\n showOption?: boolean;\n label?: string | ILabel;\n value?: string | any;\n format?: IFormat;\n permissions?: IPermission[];\n id?: string;\n hidden?: boolean;\n validations?: IValidation[] | any;\n hyperlink?: IHyperlink;\n lookupControl?: ILookupControlField;\n tables?: string[];\n minutesInterval?: number;\n disabled?: boolean | any;\n disabledText?: boolean;\n column?: number;\n row?: number;\n componentControl?: IFormComponentField;\n data?: ISelectItem[];\n optionLabel?: string;\n optionValue?: string;\n timeOnly?: boolean;\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?:any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n isPassword?:boolean\n textType?:string;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n card?: IDynamicCard;\n}\n","import { formatDate } from '@angular/common';\n\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\nimport {\n EFormatType,\n EFormControl,\n EHyperlink,\n EMatchMode,\n EOperator,\n IDynamicCard,\n IDynamicForm,\n IFormat,\n IFormField,\n IFormSection,\n} from '../models/form.model';\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\nimport { Subject } from 'rxjs';\n\n/* #region public methods */\n\n/**\n *\n * @param value : any\n * Function receives the value and expects the value to be formated.\n * Do not use fat arrow function as they do not preserve the context.\n * this.value refers to the value of IFormField Object\n * Modify this.value directly to receive effect\n */\n\n var formstate = new Subject<any>();\n var cardState = new Subject<any>();\n\n export function changeDynamicFormState(id: any, data: any) {\n formstate.next({ id, data });\n}\n \n export function onDynamicFormStateChange() {\n return formstate.asObservable();\n }\n\n export function onDynamicCardStateChange() {\n return cardState.asObservable();\n }\n\n export function changeDynamicFormState1(data: any) {\n cardState.next({ data });\n}\n\n export function closeIFrame(){\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\n if(close) {\n close.click();\n }\n}\n\nexport function toDecimal(value: any): any {\n if (value) {\n return parseFloat(value.toString()).toFixed(2);\n }\n}\n\nexport function toBoolean(value: any) {\n return value?.toLowerCase() === 'y' ? true : false;\n}\n\nexport function toShortDate(value: any, format?: IFormat) {\n if (value && value !== '') {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function toShortDateTime(value: any, format?: IFormat) {\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function setDialogData(columns:IGridColumn[], fieldName:string, value:any){\n columns?.forEach((column)=>{\n if(column.field?.toLowerCase() === fieldName?.toLowerCase() && column.component){\n let keys=Object.keys(value);\n keys.forEach((key)=>{\n column.data.data={...column.data?.data, [key]:value[key]};\n })\n }\n })\n}\n\nexport function toTrim(text: any) {\n if (typeof text === 'string') {\n return text.trim();\n } else {\n return text;\n }\n}\n\nexport function getMatchKey(obj: any, propName: string): string {\n if (!obj || !propName) {\n return '';\n }\n\n let matchedKey = '';\n if (Array.isArray(obj)) {\n obj.forEach((row) => {\n const keys: any[] = Object.keys(row);\n if (!matchedKey || matchedKey.length === 0) {\n matchedKey = keys.find(\n (x) => x.toLowerCase() === propName.toLowerCase()\n );\n }\n });\n } else {\n const keys: any[] = Object.keys(obj);\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\n }\n\n return matchedKey;\n}\n\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\n let formattedValue: any = value;\n if (formField.format) {\n switch (formField.format.type) {\n case EFormatType.DECIMAL:\n formattedValue = toDecimal(value);\n break;\n case EFormatType.BOOLEAN_YN:\n formattedValue = toBoolean(value);\n break;\n case EFormatType.SHORTDATE:\n formattedValue = toShortDate(value);\n break;\n case EFormatType.CUSTOM:\n if (formField.format.formatter) {\n formattedValue = formField.format.formatter(value);\n }\n break;\n default:\n break;\n }\n }\n return formattedValue;\n}\n\nexport function setFormField (\n { formSections }: IDynamicForm,\n formFieldObj: IFormField\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField: IFormField) => {\n if (\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\n (formField.label && formField.label === formFieldObj.label)\n ) {\n formField = formFieldObj;\n }\n return formField;\n }));\n });\n}\n\nexport function setHyperlinkComponentData (\n { formSections }: IDynamicForm,\n label: string,\n data: any\n){\n formSections?.forEach((section) => {\n let field=section.fields.find((field)=> field.label && field.label===label)\n if(field && field.hyperlink) field.hyperlink.params = data;\n});\n}\n\nexport function setAutoCompleteData(\n values: any[],\n uniqueId: any,\n labelKey: string,\n ValueKey: string,\n){\n if(values?.length > 0){\n values = values?.map((rowValue) => ({[labelKey]: rowValue, [ValueKey]: uniqueId}));\n }\n return values;\n}\n\nexport function setLookupData(\n { formSections }: IDynamicForm,\n field: string,\n data: any\n) {\n formSections?.map((section: IFormSection) => {\n section.fields.map((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data &&\n data\n ) {\n formField.label.labelControl.lookupControl.data.data = data;\n }\n if (formField.lookupControl && formField.lookupControl.data && data) {\n formField.lookupControl.data.data = data;\n }\n }\n });\n });\n return formSections;\n}\n\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\n let newLink: string = link;\n if (params && params.length > 0) {\n params.map((param) => {\n const url = param.name ? '{{' + param.name + '}}' : '';\n if (newLink.localeCompare(url)) {\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\n }\n });\n }\n return newLink;\n}\n\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\n if(section){\n section.fields.push(formField);\n }\n return dynamicForm;\n}\n\nexport function setFormFields(\n { formSections }: IDynamicForm,\n formFields: IFormField[]\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField) => {\n let matchedField = formFields.find(\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\n );\n if (matchedField) {\n formField = matchedField;\n }\n return formField;\n }));\n });\n}\n\nexport function getGlobalFilters(\n globalFilters: addGlobalFilter[],\n field: string,\n) {\n let formFieldObj: any;\n globalFilters.map((filter)=>{\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = filter;\n }\n });\n return formFieldObj;\n}\n\nexport function getFormFields(\n { formSections }: IDynamicForm,\n formControl: EFormControl\n): IFormField[] {\n let formFields: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.control === formControl) {\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\n {\n formField.value = formField.value.text.trim();\n }\n else if (formField.value && typeof(formField.value) === 'string')\n {\n formField.value = formField.value.trim();\n }\n formFields.push(formField);\n }\n });\n });\n return formFields;\n}\n\nexport function getFormField(\n { formSections }: IDynamicForm,\n field: string\n): IFormField {\n let formFieldObj: any;\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = formField;\n }\n });\n });\n return formFieldObj;\n}\n\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\n// exist in the field then always return a displayField value.\nexport function getFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n returnDisplayFieldValue:boolean = false\n) {\n let value;\n for (const section of formSections as any) {\n section.fields.forEach((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\n if (\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\n formField.displayField\n ) {\n value = isValid ? formField.value?.text : formField.value?.value;\n } else {\n value = isValid\n ? formField.value?.text\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\n ? formField.value?.value\n : formField.value;\n }\n }\n });\n }\n return value;\n}\n\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\n let value:any = getFormFieldValue(dynamicForm,field, true);\n if (value){\n value = value.toString();\n }\n return value;\n}\n\nexport function getSectionFieldValue(\n formSections: IFormSection[],\n field: string\n) {\n let form: IDynamicForm = { formSections };\n return getFormFieldValue(form, field, true);\n}\n\nexport function setSaveFormValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let response: any = {};\n if (tables && tables.length > 0) {\n tables.forEach((tableName) => {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n\n sectionFields?.forEach((field) => {\n const table = field.tables?.map((table) => table.toLowerCase());\n\n if (table && table.includes(tableName.toLowerCase())) {\n if (!response[tableName]) {\n response[tableName] = {};\n }\n\n if (field.field && field.field.length > 0) {\n response[tableName][field.field] = formatFormFieldCValue(field);\n }\n }\n });\n });\n });\n } else {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n sectionFields?.forEach((field) => {\n if (field.field && field.field.length > 0) {\n response[field.field] = formatFormFieldCValue(field);\n }\n });\n });\n }\n\n return response;\n}\n\nexport function setSaveCardValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let values: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.card.data) {\n field.card.data.forEach((cardData: any) => {\n if (cardData.dynamicForm.formSections) {\n values.push(\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\n );\n }\n });\n }\n });\n });\n return values;\n}\n\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\n if (data && data.length > 0 && Array.isArray(data)) {\n data.forEach((dataRow) => {\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\n });\n } else {\n setEditFormFieldsInfo(data, dynamicForm);\n }\n}\n\nexport function setFilter(\n field: string,\n value: any,\n matchMode: EMatchMode = EMatchMode.EQUALS,\n operator: EOperator = EOperator.AND,\n) {\n const filter: any = {\n field: field,\n matchMode: matchMode,\n operator: operator,\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\n };\n return filter;\n}\n\nexport function setAndFilter(field: string, value: any) {\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\n}\n\nexport function getOrigDataFieldValue(data: any, propName: string): any {\n let value: any;\n if (data) {\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n value = getPropertyValue(data[i], propName);\n if (value) {\n return value;\n }\n }\n } else {\n value = getPropertyValue(data, propName);\n }\n }\n return value;\n}\n\nexport function getOrigDataFieldValueAsString(\n data: any,\n propName: string\n): string {\n let value = getOrigDataFieldValue(data, propName);\n if (value) {\n return value.toString();\n } else {\n return '';\n }\n}\n\nexport function setSectionPropValues(\n { formSections }: IDynamicForm,\n sectionName: string,\n props: IDictionary[]\n) {\n formSections?.map((section) => {\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\n props.map((prop) => {\n return setPropValue(section, prop);\n });\n }\n });\n}\n\n/* #endregion */\n\n/* #region private methods */\n\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\n if (data.records && data.records.length > 0) {\n data.records.forEach((record: any) => {\n const keys: string[] = Object.keys(record);\n dynamicForm.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField: any) => {\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\n );\n\n if (matchedKey) {\n // set label hyperlink\n setLabelHyperlink(formField, record, keys, allData);\n }\n\n if (\n formField.control === EFormControl.HYPERLINK &&\n formField.hyperlink &&\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\n formField.hyperlink.link)\n ) {\n let params = formField.hyperlink.params;\n let paramKeys: string[] = [];\n\n if (\n !params &&\n formField.hyperlink.link &&\n formField.hyperlink.link.includes('}}')\n ) {\n paramKeys = formField.hyperlink.link.split('}}');\n paramKeys = paramKeys.map((paramKey) => {\n paramKey = paramKey.replace('{{', '').trim();\n return paramKey;\n });\n paramKeys = paramKeys.filter((x) => x.length > 0);\n } else {\n if(params){\n paramKeys = Object.keys(params);\n }\n }\n\n formField.hyperlink.link = setHyperlink(\n keys,\n record,\n formField.hyperlink.link,\n paramKeys,\n formField.hyperlink.params,\n allData\n );\n } else {\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\n ? new Date(record[matchedKey] as string)\n : '';\n } else if (formField.control === EFormControl.CARD) {\n if (formField.card && formField.card.formSections) {\n if (!formField.card.data) {\n formField.card.data = data;\n }\n \n setEditFormFieldsInfo(data, formField.card);\n }\n } else if (\n formField.control === EFormControl.AUTOCOMPLETE &&\n matchedKey\n ) {\n let arrayValue = [];\n if (record[matchedKey] && formField.displayField) {\n arrayValue.push({[formField.displayField] : record[matchedKey]});\n }\n formField.value = arrayValue;\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data\n ) {\n const obj = autoSetLookupData(\n formField.label.labelControl.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.label.labelControl.lookupControl.data.data = obj;\n }\n }\n\n if (\n formField.lookupControl &&\n formField.lookupControl.data &&\n formField.lookupControl.data.data\n ) {\n const obj = autoSetLookupData(\n formField.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.lookupControl.data.data = obj;\n }\n }\n if(record[matchedKey]){\n formField.value = toTrim(record[matchedKey]);\n }\n if (\n formField.displayField &&\n formField.displayField.length > 0\n ) {\n const matchDisplayField = getMatchKey(\n record,\n formField.displayField\n );\n if (matchDisplayField) {\n formField.value = {\n text: toTrim(record[matchDisplayField]),\n value: formField.value?.value,\n };\n }\n\n const matchValueField = getMatchKey(record, formField.field);\n if (matchValueField) {\n formField.value = {\n text: formField.value?.text,\n value: toTrim(record[matchValueField]),\n };\n }\n }\n } else if (\n formField.control === EFormControl.COMPONENT &&\n formField.componentControl?.data\n ) {\n formField.componentControl.data = findKeysAndValue(\n formField.componentControl.data,\n record\n );\n changeDynamicFormState(\n formField.componentControl.id,\n formField.componentControl?.data\n );\n } else if (\n formField.control === EFormControl.NUMERIC &&\n formField.label?.labelControl?.lookupControl?.data?.data\n ) {\n let setData = formField.label.labelControl.lookupControl;\n setData.data.data = findKeysAndValue(setData.data.data, record);\n changeDynamicFormState(setData.id, setData.data.data);\n } else if (formField.control === EFormControl.HYPERLINK \n && formField.hyperlink?.target === EHyperlink.DIALOG \n && formField.hyperlink.params\n ) {\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\n } else if (matchedKey) {\n if (formField.format) {\n formField.value = formatFormFieldValue(\n formField,\n record[matchedKey]\n );\n } else if (formField.control === EFormControl.CHECKBOX) {\n formField.value =\n record[matchedKey] &&\n (record[matchedKey].toString() === '1' ||\n record[matchedKey].toString() === 'true')\n ? true\n : false;\n }else if (formField.control === EFormControl.DROPDOWN) {\n let dropValue = record[matchedKey];\n formField.value = dropValue\n ? dropValue.toString()\n : dropValue;\n } else {\n formField.value = toTrim(record[matchedKey]);\n }\n }\n }\n });\n }\n });\n });\n }\n}\n\n//set hyperlink param value as field value\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\n let keys: string[] = [];\n let link: string ='';\n let paramKeys: string[] = [];\n let param: any;\n let fieldInfo: any;\n dynamicForm.formSections?.forEach((section: any) => {\n section.fields.forEach((formField: any) => {\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\n keys = Object.keys(record);\n if(formField?.label?.labelControl?.orignalLink){\n link = formField.label.labelControl.orignalLink;\n }\n\n if(formField?.label?.labelControl?.hyperlink?.params){\n param = formField.label.labelControl.hyperlink.params;\n paramKeys = Object.keys(param);\n }\n fieldInfo = formField;\n if(record && keys && link && paramKeys && param && fieldInfo){\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\n }\n }\n });\n });\n}\n\nexport function objConvertToLower(obj: any) {\n return Object.keys(obj).reduce((accumulator: any, key) => {\n accumulator[key.toLowerCase()] = obj[key];\n return accumulator;\n }, {});\n}\n\nexport function clickSectionHighlight(value: any) {\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\n allMenuItems?.forEach((menauItem: any) => {\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\n })\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n });\n}\n\nexport function removeActiveIconClass() {\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n if (activeIcon && activeIcon.length > 0) {\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\n });\n }\n}\n\nexport function highlightLeftSidebar(){\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\n\n allIconElements?.forEach((icon: any, index: any) => {\n icon?.setAttribute('tabIndex', 'section' + index);\n });\n removeActiveIconClass();\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\n const currentId = \"section\" + index;\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\n } else{\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \n }\n });\n });\n }\n\nexport function findKeysAndValue(data: any, record: any) {\n let valueKey: string = '';\n Object.keys(data).forEach((dataKey) => {\n let valueContainsKey: boolean = false;\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\n valueContainsKey = true;\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n }\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\n if (key && key.length > 0) {\n data = { ...data, [dataKey]: record[key] };\n }\n });\n return data;\n}\n\nexport function setPropValue(obj: any, prop: IDictionary) {\n const matchedKey: string = getMatchKey(obj, prop.name);\n if (matchedKey) {\n return (obj[matchedKey] = prop.value);\n }\n else{\n return( obj[prop.name]=prop.value)\n }\n}\n\nexport function hasRole(role: string): boolean {\n let storage = localStorage.getItem('CurrentUserInfo');\n if (storage) {\n let currentUser = JSON.parse(storage);\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\n }\n }\n return false;\n}\n\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\n if (\n item.label &&\n item.label.labelControl &&\n item.label.labelControl.hyperlink &&\n item.label.labelControl.hyperlink.params\n ) {\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\n const link = item.label.labelControl.hyperlink.link;\n if (item.label.labelControl.hyperlink.link) {\n item.label.labelControl.hyperlink.link = setHyperlink(\n keys,\n record,\n link,\n paramKeys,\n item.label.labelControl.hyperlink.params,\n allData\n );\n }\n }\n}\n\nexport function setHyperlink(\n keys: string[],\n record: any,\n link: string,\n paramKeys: string[],\n params: any,\n allData: any[] = []\n): string {\n let newLink: string = link;\n record = objConvertToLower(record);\n paramKeys.forEach((paramkey) => {\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\n const isParamMatched = newLink.localeCompare(param);\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\n\n if (isParamMatched) {\n let paramValue = params ? params[paramkey] : null;\n if(paramValue === '' && paramInRecord){\n paramValue = '{'+paramkey+'}';\n }\n if (paramValue) {\n const propName = paramValue.toString().replace('{', '').replace('}', '');\n let propValue = record[propName.toLowerCase()];\n \n // in case of prop not found in record then try to find prop in all data array, to get its value \n if (!propValue && allData && allData.length > 0)\n {\n allData.forEach((data)=>{\n //const value = data.records.find((x)=> x[propName]);\n data.records.forEach((allRecord: any)=>{\n let keys = Object.keys(allRecord);\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\n if (matchKey){\n propValue = allRecord[matchKey];\n }\n });\n });\n }\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\n \n } else {\n // get param value from api response, if param key exists in it\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === paramkey.toLowerCase()\n );\n\n if (matchedKey) {\n paramValue = record[matchedKey];\n if (paramValue) {\n newLink = newLink.replace(\n new RegExp(param, 'ig'),\n toTrim(paramValue)\n );\n } else {\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\n }\n }\n }\n }\n });\n // replace the {{param}} with empty\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\n }\n return newLink;\n}\n\n// its checking if there is no value in hyperlink param then it set key as a paramValue\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\n let paramValue: boolean = false;\n if(allData && allData.length > 0){\n allData.forEach((data: any)=>{\n if(data.records && data.records.length > 0){\n data.records.forEach((allRecord: any) =>{\n if(paramValue === false){\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\n };\n });\n };\n });\n }else{\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\n }\n return paramValue;\n}\n\nfunction getPropertyValue(data: any, propName: string) {\n let propValue: any;\n data.records?.forEach((record: any) => {\n for (const [key, value] of Object.entries(record)) {\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\n propValue = value;\n }\n }\n });\n return propValue;\n}\n\nfunction formatFormFieldCValue(field: any) {\n if (\n field.format?.type === EFormatType.BOOLEAN_YN &&\n field.format?.formatter?.name === 'toBoolean'\n ) {\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\n } else if (\n field.control === EFormControl.CALENDAR &&\n (field.value || field.value === '')\n ) {\n if(field.timeOnly && field.saveAsString){\n field.value = field.value;\n }else{\n field.value =\n field.showTime === true\n ? toShortDateTime(field.value, field.format)\n : toShortDate(field.value, field.format)\n }\n return field.value;\n } else if (\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value == undefined ? null : field.value.value;\n } else if (\n field.label &&\n field.label.labelControl &&\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value;\n } else {\n field.value = field.value == undefined ? null : field.value;\n return field.value;\n }\n}\n\nexport function autoSetLookupData(\n fieldData: any,\n response: any\n) {\n let obj = {};\n let record = setDataFields([response]);\n if (record && record.length > 0) {\n record.forEach((x: any) => {\n record = x;\n });\n }\n if (fieldData && record) {\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\n let rowKeys = Object.keys(record);\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\n let value = rowKeys?.find(\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n );\n if (value && value.length > 0) {\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\n } else if (key && key.length > 0) {\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\n } else {\n obj = { ...obj, [dataKey]: dataValue };\n }\n });\n return obj;\n } else {\n return null;\n }\n}\n\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\n if(obj && obj.lookupControl?.data){\n obj.lookupControl.data.data = data;\n }\n}\n\nexport function setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n\n data.push(result);\n });\n }\n return data;\n}\n\nexport function setDialogResponse(\n formField: any,\n formData: any,\n response: any\n) {\n let value: any;\n if (response) {\n // if selectedValue does not exist then consider valueField as selectedValue\n if (\n formData &&\n formData.data &&\n formData.data.labelProp &&\n !formData.data.valueProp\n ) {\n formData.data.valueProp = formData.data.labelProp;\n }\n else if (\n formData &&\n formData.data &&\n formData.data.valueProp &&\n !formData.data.labelProp\n ) {\n formData.data.labelProp = formData.data.valueProp;\n }\n\n const matchValueKey: string = getMatchKey(\n response,\n formData?.data?.valueProp\n );\n const matchFieldKey: string = getMatchKey(\n response,\n formData?.data?.labelProp\n );\n\n if (\n formData?.data &&\n formData?.data.valueProp &&\n formData?.data.labelProp\n ) {\n let valueProp = response[matchValueKey];\n let matchText = response[matchFieldKey];\n if (typeof valueProp === 'string' && typeof matchText === 'string') {\n valueProp = valueProp.trim();\n matchText = matchText.trim();\n }\n value = { text: matchText, value: valueProp };\n } else {\n const FieldKey: string = getMatchKey(response, formField.field);\n let value = response[FieldKey];\n if (value) {\n value = value?.toString()?.trim();\n }\n }\n }\n return value;\n}\n\nexport function currentUrl():string{\n let currentRoute: string = '';\n let url = window.location.href;\n if(url){\n let arr = url.split('/');\n currentRoute = arr[arr.length-1]\n } \n return currentRoute;\n}\n\nexport function getGridFilters(){\n let filters: any = [];\n let gridFilters = currentUrl();\n if(gridFilters && gridFilters.length > 0){\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\n filters = localFilter?.filters;\n }\n return filters;\n}\n\n//update the hidden or disabled and value based off other global filters.\nexport function setGlobalFilterPropValues(\n globalFilter: IGlobalFilter[],\n field: string,\n props: IFilterDictionary[],\n) {\n return globalFilter.map((filter: any) => {\n if (\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\n (filter.displayText &&\n filter.displayText.toLowerCase() === field?.toLowerCase())\n ) {\n props?.map((prop: IFilterDictionary) => {\n if (filter.hasOwnProperty(prop.propName)) {\n return (filter[prop.propName] = prop.propValue);\n } else if (prop.propValue && prop.propValue.length > 0) {\n return (filter.value = prop.propValue);\n }\n });\n }\n });\n}\n\nexport function setCardFieldsData(form: any) {\n if (form && form.dynamicform) {\n const { dynamicform, ...newData } = form;\n dynamicform?.formSections?.forEach((section: any) => {\n section.fields?.forEach((field: any) => {\n if (newData) {\n setEditFormFields({ records: [newData] }, dynamicform);\n }\n });\n });\n }\n}\n\n// disable Grid EditableRow Column\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let disableObj = { ...obj, disabled: true };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = disableObj;\n }\n return columns;\n}\n\n// enabled Grid EditableRow Column\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field?.toLowerCase());\n let enableObj = { ...obj, disabled: false };\n const index = columns.findIndex((i: any) => i.field?.toLowerCase() === field?.toLowerCase());\n if (index !== -1) columns[index] = enableObj;\n }\n return columns;\n}\n\n // check the Minutes Interval\n export function setMinutesInterval(value: any){\n if (value) {\n const min = value.getMinutes().toString();\n if (min) {\n value = value.setMinutes(0);\n }\n }\n return value;\n}\n\n // update the response records\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\n if(index > -1){\n records[index] = rowData;\n }else{\n records.push(rowData);\n }\n return records;\n}\n\n//convert the time into date\nexport function setTimeInDate(time: any) {\n const convertTime12to24 = (time12h: any) => {\n const [time, modifier] = time12h?.toString()?.split(' ');\n let [hours, minutes] = time?.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (modifier === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n return `${hours}:${minutes}`;\n };\n const date = convertTime12to24(time);\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\n const futureDate = new Date();\n futureDate.setTime(tempDate.getTime());\n return futureDate;\n}\n\n// return the data of the field \nexport function getFieldData({ formSections }: any, field: string){\n let data: any = []\n if(formSections?.length > 0 && field){\n formSections.forEach((section: any)=>{\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\n }\n })\n }\n return data;\n}\n\nexport function setAllFormFieldsValues(\n { formSections }: IDynamicForm,\n props: IFilterDictionary[]\n) {\n formSections?.map((section: IFormSection) => {\n if (section) {\n section.fields.map((formField: any) => {\n return props.map((prop: IFilterDictionary) => {\n if (formField) {\n return (formField[prop.propName] = prop.propValue);\n }\n });\n });\n }\n });\n}\n\n// returns the response header fileName\nexport function getResponseHeaderFileName(response){\n const header = response?.headers?.get('Content-Disposition');\n return header?.split('filename=')?.[1]?.split(\";\")[0]?.replaceAll(/\\\"/g, '');\n}\n\n export function draggableDialog(id:any){\n setTimeout(() => {\n const dialog = document.getElementsByClassName('p-dialog')\n dialog[0]?.setAttribute('id','mydiv' + id)\n const dialogheader = document.getElementsByClassName('p-dialog-header')\n dialogheader[0]?.setAttribute('id','mydivheader' + id)\n const elmnt = document.getElementById('mydiv' + id);\n\n let pos1 = 0,\n pos2 = 0,\n pos3 = 0,\n pos4 = 0;\n \n const dragMouseDown = (e) => {\n e = e || window.event;\n pos3 = e.clientX;\n pos4 = e.clientY;\n document.onmouseup = closeDragElement;\n document.onmousemove = elementDrag;\n };\n \n const elementDrag = (e) => {\n e = e || window.event;\n pos1 = pos3 - e.clientX;\n pos2 = pos4 - e.clientY;\n pos3 = e.clientX;\n pos4 = e.clientY;\n elmnt.style.top = elmnt?.offsetTop - pos2 + 'px';\n elmnt.style.left = elmnt?.offsetLeft - pos1 + 'px';\n };\n \n const closeDragElement = () => {\n document.onmouseup = null;\n document.onmousemove = null;\n };\n \n if (document.getElementById('mydivheader' + id)) {\n document.getElementById('mydivheader' + id).onmousedown = dragMouseDown;\n } else {\n elmnt.onmousedown = dragMouseDown;\n }\n }, 100);\n } \nexport function calenderMinMaxValue(item: any,value: any, index){\n let validation: string = 'equal';\n var validDate = new Date(item.validations[index].expression);\n var currentDate = new Date(value);\n if (validDate.getTime() < currentDate.getTime()){\n validation = 'greater';\n }\n else if (validDate.getTime() > currentDate.getTime()){\n validation = 'minimum';\n }\n return validation;\n}\n/* #endregion */\n","import { Injectable } from '@angular/core';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { IAutoCompleteSave, IDropDownRequest } from '../models/form.model';\nimport { DatePipe } from '@angular/common';\nimport {\n EGridSortDirection,\n GridFilterControlType,\n IGlobalFilter,\n IGridFilter,\n IGridSort,\n EGridColumnType,\n addColumn,\n addFilterColumn,\n addGlobalFilter,\n IGridColumn,\n EGridValidator,\n IGridProp,\n IGridPropFilter,\n IGridRowProp,\n IGridReportBtn,\n EGridRowAction,\n IDialogColumn,\n EGridFormatter,\n} from '../models/grid.model';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { HyperlinkService } from './hyperlink.service';\nimport * as utilities from './utilities.service';\nimport { RequestService } from './request.service';\nimport { IDictionary } from '../models/common.model';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GridService {\n softCachingFilters: any = {};\n applyFilterEvent: boolean = true;\n public columnFocusedOut: boolean = false;\n constructor(\n public datepipe: DatePipe,\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) {}\n\n /**\n *\n * @param event\n * Receives lazy event and returns after proper mapping\n */\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\n const filters = this.mapFilters(event, columns);\n return this.handleMultiFilterField(filters);\n }\n\n /**\n * @param filters\n * Receives filters and returns array after removing duplicates\n * and creating comma separated values for same filters\n */\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\n return filters\n .map((x, i, arr) =>\n arr.some(\n (y, idx) =>\n y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx\n )\n ? {\n ...x,\n value: arr\n .filter(\n (z) => z.field?.toLowerCase() === x.field?.toLowerCase()\n )\n .map((a) => a.value)\n .join(),\n }\n : x\n )\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\n }\n\n // Prepare basic grid filters\n prepareBasicFilters(\n event: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridFilter[] {\n return this.mapFilters(event, columns);\n }\n\n /**\n * Checks if filters has values then converts global filter values type into IGridFilter.\n */\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\n const globalData: IGridFilter[] = [];\n\n globalFilters?.forEach((filter: IGlobalFilter) => {\n if (\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\n filter.value.length) ||\n (typeof filter.value !== 'string' &&\n !Array.isArray(filter.value) &&\n filter.value) ||\n (typeof filter.value === 'boolean' && filter.value !== null) ||\n filter.type === GridFilterControlType.CALENDAR_RANGE\n ) {\n if (\n filter.type === GridFilterControlType.CALENDAR_RANGE &&\n filter.value?.toString()?.includes('|')\n ) {\n // add filter for start date\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n\n // add filter for end date\n globalData.push({\n field: this.setGlobalFilterField(filter, false),\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter, false),\n tableAlias: filter.tableAlias,\n });\n } else if (filter.type !== GridFilterControlType.CALENDAR_RANGE) {\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode:\n filter.type === GridFilterControlType.MULTISELECT\n ? 'in'\n : filter.matchMode,\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n }\n }\n });\n return globalData;\n }\n\n setGlobalFilterField(filter: any, isStartDate: boolean = true): string {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\n if (isStartDate) {\n return filter.fromField;\n } else {\n return filter.toField;\n }\n } else {\n return filter.field;\n }\n }\n\n // set global filter value\n setGlobalFilterValue(\n filter: IGlobalFilter,\n isStartDate: boolean = true\n ): string | number | Date | boolean {\n switch (filter.type) {\n case GridFilterControlType.MULTISELECT:\n return (filter.value as any[]).join(',');\n case GridFilterControlType.CALENDAR:\n return this.getFormattedDate(filter.value as Date);\n case GridFilterControlType.CALENDAR_RANGE:\n let dateValues: string[] = filter.value\n ? filter.value.toString().split('|')\n : [];\n if (dateValues && dateValues.length == 2) {\n let dateValue: Date = isStartDate\n ? new Date(dateValues[0])\n : new Date(dateValues[1]);\n return this.getFormattedDate(dateValue);\n } else {\n return '';\n }\n case GridFilterControlType.CHECKBOX:\n return filter.value ? true : false;\n default:\n return filter.value as string;\n }\n }\n\n checkValidity(columns: IGridColumn[], row: any) {\n let isValid: boolean = true;\n columns.map((item: any) => {\n if (item.validations && !item.disabled) {\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(\n item,\n row[item.field],\n i\n );\n const valid = item.validations && item.header;\n if (\n item.validations[i].type == EGridValidator.REQUIRED &&\n !row[item.field] &&\n !item.hidden &&\n valid\n ) {\n isValid = row[item.field]\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINLENGTH &&\n row[item.field].length < item.validations[i].expression\n ) {\n isValid =\n row[item.field] &&\n row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXLENGTH &&\n row[item.field].length > item.validations[i].expression\n ) {\n isValid =\n row[item.field] &&\n row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } \n else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXOPTIONS \n\n ) {\n var options:number=1;\n var value=row[item.field];\n for (var x = 0; x < value.length - 1; x++) {\n if (value[x] == ';') {\n options++;\n }\n }\n //blue;red;green max=3\n isValid =\n // row[item.field] &&\n options <= item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} maximum ${item.validations[i].expression} option${item.validations[i].expression>1?'s':''}`\n );\n break;\n }\n \n else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINIMUM &&\n isValid\n ) {\n if (item.type === EGridColumnType.DATE) {\n isValid =\n minMaxValidDate === 'minimum'\n ? this.setErrorMessage(\n item,\n `Minimum ${valid} ${item.validations[i].expression}`\n )\n : true;\n } else if (row[item.field] < item.validations[i].expression) {\n isValid =\n row[item.field] &&\n row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXIMUM &&\n isValid\n ) {\n if (item.type === EGridColumnType.DATE) {\n isValid =\n minMaxValidDate === 'greater'\n ? this.setErrorMessage(\n item,\n `Maximum ${valid} ${item.validations[i].expression}`\n )\n : true;\n } else if (row[item.field] > item.validations[i].expression) {\n isValid =\n row[item.field] &&\n row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PATTERN &&\n !row[item.field].match(item.validations[i].expression)\n ) {\n isValid =\n row[item.field] &&\n row[item.field].match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.NUMERIC &&\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PHONE &&\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.DECIMAL &&\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.EMAIL &&\n !row[item.field]\n ?.toString()\n .match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]\n ?.toString()\n .match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n // set basic filter value\n setBasicFilterValue(filter: any): any {\n if (filter instanceof Date) {\n return this.getFormattedDate(filter);\n } else if (typeof filter === 'boolean') {\n return filter ? 1 : 0;\n } else {\n return filter;\n }\n }\n\n /**\n *\n * @param param\n * Receives lazy event and returns sort array\n */\n getGridSorts(\n { multiSortMeta }: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridSort[] {\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\n field,\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\n priority: i + 1,\n tableAlias: this.setTableAlias(field, columns),\n }));\n }\n\n /**\n *\n * @param event\n * Handles default and lookup filters\n */\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\n const filters: IGridFilter[] = [];\n Object.entries(event.filters).forEach(([field, value]: any) => {\n if (Array.isArray(value)) {\n (value as IGridFilter[]).forEach(\n ({ matchMode, operator, value: filter }) => {\n if (filter !== null) {\n filters.push({\n field,\n matchMode,\n operator,\n value: this.setBasicFilterValue(filter),\n tableAlias: this.setTableAlias(field, columns),\n });\n }\n }\n );\n } else {\n if (value.value !== '') {\n switch (typeof value.value) {\n case 'boolean':\n filters.push({\n field,\n matchMode: 'equals',\n operator: 'and',\n value: value.value ? true : false,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'string':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'number':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'object':\n if (value.value instanceof Date) {\n filters.push({\n field,\n matchMode: 'equal',\n operator: 'and',\n value:\n value.value instanceof Date\n ? this.getFormattedDate(value.value)\n : value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n } else {\n (value.value || []).forEach((x: any) => {\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: x.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n });\n }\n break;\n default:\n null;\n }\n }\n }\n });\n return filters;\n }\n\n /**\n *\n * @param event\n * Receives lazy event and returns page number\n */\n getGridPagination(event: any): number {\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\n }\n\n // get formatted date\n getFormattedDate(value: Date): string {\n return new Date(`${value} Z`).toISOString().slice(0, 10);\n }\n\n // change row key and value when using setGridRowPropValue function\n setRowValue(rowData: any) {\n Object.keys(rowData)?.forEach((row) => {\n if(row === EGridRowAction.DELETEBTN || row === EGridRowAction.EDITBTN){\n delete rowData[row];\n }\n else if (\n rowData[row] &&\n typeof(rowData[row]) === 'object'\n ) {\n if(rowData[row]?.action?.field){\n if(rowData[row]?.extraField){\n delete rowData[row];\n } else {\n rowData[row] = rowData[row]?.text;\n }\n }else {\n if(rowData[row].hasOwnProperty('text') && rowData[row].hasOwnProperty('value')){\n rowData[row] = rowData[row]?.value;\n }\n }\n }\n });\n return rowData;\n }\n\n // convert row actions object into simple value\n setGridRowData(rowData){\n if(Array.isArray(rowData)){\n rowData.forEach((row)=>{\n row = this.setRowValue(row);\n })\n } else {\n rowData = this.setRowValue(rowData);\n }\n return rowData;\n }\n\n // get allowSave true row list\n getAllowSaveRowlist(rowsData: any[] = [], columns: IGridColumn[]) {\n rowsData = this.setDataFields(rowsData);\n columns.forEach((column: IGridColumn) => {\n let field = column?.field?.toLowerCase();\n if (column.allowSave === false) {\n rowsData.forEach((row) => {\n let obj = Object.keys(row);\n if (obj?.length > 0) {\n obj.forEach((x) => {\n if (x.includes('_obj') && typeof row[x] === 'object') {\n delete row[x];\n }\n })\n }\n delete row[field];\n row = this.setRowValue(row);\n })\n } else if (column.formatter && column.type === EGridColumnType.BOOLEAN) {\n rowsData.forEach((row) => {\n let value = row[field]\n if (column.formatter === EGridFormatter.CHAR) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? 'Y' : 'N';\n } else if (column.formatter === EGridFormatter.NUMERIC) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? '1' : '0';\n } else if (column.formatter === EGridFormatter.BOOLEAN) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? true : false;\n }\n })\n } else if (column.type === EGridColumnType.DATE) {\n //convert date into time format\n rowsData.forEach((row) => {\n if (column.timeOnly && column.saveAsString) {\n row[field] = this.datepipe.transform(row[field], 'hh:mm a');\n } else if (!column.timeOnly && column.showTime) {\n row[field] = this.datepipe.transform(row[field], 'yyyy-MM-dd HH:mm:ss');\n } else if (row[field] && !column.timeOnly && column.saveAsString) {\n row[field] = row[field].toLocaleDateString();\n }\n })\n }\n })\n return rowsData;\n }\n\n // get allowSave true || undefine row\n getAllowSaveRow(rowInfo: {} = {}, columns: IGridColumn[]) {\n let row = { ...rowInfo };\n row = utilities.objConvertToLower(row);\n row = this.setRowValue(row);\n columns.forEach((column) => {\n let field = column?.field?.toLowerCase();\n if (column.allowSave == false) {\n const keys = Object.keys(row)\n keys.forEach((x) => {\n if (x.includes('_obj') && typeof row[x] === 'object') {\n delete row[x];\n }\n })\n const key = keys.find((x) => x.toLowerCase() === column.field?.toLowerCase());\n if (key) {\n delete row[key];\n }\n } else if (column.formatter && column.type === EGridColumnType.BOOLEAN) {\n let value = row[field]\n if (column.formatter === EGridFormatter.CHAR) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? 'Y' : 'N';\n } else if (column.formatter === EGridFormatter.NUMERIC) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? '1' : '0';\n } else if (column.formatter === EGridFormatter.BOOLEAN) {\n row[field] = value === true || value?.toString() === 'Y' || value?.toString() === '1' ? true : false;\n }\n } else if (column.type === EGridColumnType.DATE) {\n //convert date into time format\n if (column.timeOnly && column.saveAsString) {\n row[field] = this.datepipe.transform(row[field], 'hh:mm a');\n } else if (!column.timeOnly && column.showTime) {\n row[field] = this.datepipe.transform(row[field], 'yyyy-MM-dd HH:mm:ss');\n } else if (row[field] && !column.timeOnly && column.saveAsString) {\n row[field] = row[field].toLocaleDateString();\n }\n }\n })\n return row;\n }\n\n // add simple grid column without\n addColumn(columnInfo: addColumn): IGridColumn {\n if (columnInfo.type === EGridColumnType.DROPDOWN) {\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n } else if (columnInfo.type === EGridColumnType.DIALOG) {\n if (!columnInfo.filtering && !columnInfo.filter) {\n columnInfo.filtering = false;\n }\n if (columnInfo.params && !columnInfo.data) {\n columnInfo.data = columnInfo.params;\n }\n }\n const column: IGridColumn = {\n allowSearch: columnInfo.allowSearch,\n allowAutoCompleteSave: columnInfo.allowAutoCompleteSave,\n uniqueKey: columnInfo.uniqueKey,\n field: columnInfo.field,\n header: columnInfo.header,\n style: columnInfo.style,\n type: columnInfo.type,\n format: columnInfo.format,\n data: columnInfo.data,\n filterValue:columnInfo.filterValue,\n filtering: columnInfo.filtering,\n hidden: columnInfo.hidden,\n sorting: columnInfo.sorting,\n filter: columnInfo.filter,\n hyperlink: columnInfo.hyperlink,\n tableAlias: columnInfo.tableAlias,\n linkId: columnInfo.linkId,\n minutesInterval: columnInfo.minutesInterval,\n params: columnInfo.params,\n showOption: columnInfo.showOption,\n displayText: columnInfo.displayText,\n target: columnInfo.target,\n disabled: columnInfo.disabled,\n allowSave: columnInfo.allowSave,\n allowEdit: columnInfo.allowEdit,\n editable: columnInfo.editable,\n editLink: columnInfo.editLink,\n saveAsString: columnInfo.saveAsString,\n component: columnInfo.component,\n onClick: columnInfo.onClick,\n onReturn: columnInfo.onReturn,\n onFocusOut: columnInfo.onFocusOut,\n onChange: columnInfo.onChange,\n aggregate: columnInfo.aggregate,\n formatter: columnInfo.formatter,\n permissions: columnInfo.permissions,\n optionLabel: columnInfo.optionLabel,\n optionValue: columnInfo.optionValue,\n dropDownProp: columnInfo.dropDownProp,\n showTime: columnInfo.showTime,\n timeOnly: columnInfo.timeOnly,\n lookupControl: columnInfo.lookupControl,\n displayField: columnInfo.displayField,\n icon: columnInfo.icon,\n color: columnInfo.color,\n id: columnInfo.id,\n value: columnInfo.value,\n validations: columnInfo.validations,\n };\n\n return column;\n }\n\n // Adding Report Button Function for Grid\n addReportBtn(columnInfo: IGridReportBtn) {\n columnInfo.type = EGridColumnType.REPORT;\n return columnInfo;\n }\n\n // add simple input grid column\n addInputColumn(\n filterColumnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n filterColumnInfo.filter = {\n type: GridFilterControlType.INPUT,\n showFilter: this.showFilterIcon(filterColumnInfo),\n };\n }\n return this.addColumn(filterColumnInfo);\n }\n\n // add simple numeric grid column without\n addNumericColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.NUMERICINPUT,\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n columnInfo.type = EGridColumnType.NUMERIC;\n return this.addColumn(columnInfo);\n }\n\n // add simple calendar grid column without\n addCalendarColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.CALENDAR,\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n columnInfo.type = columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\n return this.addColumn(columnInfo);\n }\n\n // add simple boolean grid column without\n addBooleanColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n (columnInfo.type = EGridColumnType.BOOLEAN),\n (columnInfo.filter = {\n type: GridFilterControlType.CHECKBOX,\n showFilter: this.showFilterIcon(columnInfo),\n });\n }\n return this.addColumn(columnInfo);\n }\n\n // add LookUp column for Grid\n addLookUpColumn(columnInfo: IDialogColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\n return this.addColumn(columnInfo);\n}\n\n// add dialog column for Grid\n addDialogColumn(columnInfo: IDialogColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.DIALOG;\n return this.addColumn(columnInfo);\n }\n\n // add Button for grid column\n addButtonColumn(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.ADD_BUTTON;\n if (!columnInfo.field) {\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\n }\n return this.addColumn(columnInfo);\n }\n\n // add AutoComplete for grid column\n addAutoComplete(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\n return this.addColumn(columnInfo);\n }\n\n // Search AutoComplete Data for Grid\n getAutoCompleteData(\n column?: any,\n uniqueKey?: string,\n filters?: any[],\n search: string = ''\n ): any {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters })\n .subscribe((response: any) => {\n if (search) {\n let existInRecord = response.records?.some(\n (record) =>\n record[column.displayField] &&\n record[column.displayField]?.toString()?.toLowerCase() ===\n search?.toLowerCase()\n );\n if (!existInRecord) {\n response.records.unshift({ [column.displayField]: search });\n }\n }\n column.data = this.setDataFields(response.records);\n });\n }\n async addAutoCompleteValue(uniqueKey: IAutoCompleteSave, value:any, column:any, row:any) {\n let newValue = {}\n\n for(var i =0;i<uniqueKey.values.length; i++){\n if(uniqueKey.values[i].name.toLowerCase()==column.field?.toLowerCase()||uniqueKey.values[i].name.toLowerCase()==column.displayField?.toLowerCase()){\n newValue[uniqueKey.values[i].name]=value;\n \n }else{\n newValue[uniqueKey.values[i].name]=this.getSoftCodingValue(uniqueKey.values[i].value, row)\n } \n }\n\n\n this.requestService\n .get<any[], any>('/Data/Save', { uniqueKey:uniqueKey.name, values: newValue })\n .subscribe((response: any) => {\n ({error})=>{\n return error\n }\n return 'success';\n });\n }\n getSoftCodingValue(value, row){\n let returnValue;\n if(value.toString().includes('{')&&value.toString().includes('}')){\n value=value.replace(\"{\",\"\").replace(\"}\",\"\");\n let rowKeys = Object.keys(row);\n let key = rowKeys?.find((x) => x?.toLowerCase() === value?.toString()?.toLowerCase());\n returnValue=row[key];\n }else{\n returnValue=value\n }\n return returnValue;\n }\n\n // add simple dropdown grid column without\n addDropdownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n dropDownProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.type = EGridColumnType.DROPDOWN;\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.DROPDOWN,\n data:\n !columnInfo?.filter?.data && !dropDownProp && columnInfo.data\n ? columnInfo.data\n : columnInfo?.filter?.data\n ? columnInfo?.filter?.data\n : [],\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n if (dropDownProp) {\n columnInfo.dropDownProp = dropDownProp;\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n // add MultiSelectDropDown grid column\n addMultiSelectDropDownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n multiSelectProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.optionLabel = columnInfo.optionLabel\n ? columnInfo.optionLabel\n : 'label';\n columnInfo.optionValue = columnInfo.optionValue\n ? columnInfo.optionValue\n : 'value';\n columnInfo.type = EGridColumnType.MULTISELECT;\n if (showFilter) {\n columnInfo.filter = {\n type: GridFilterControlType.MULTISELECT,\n data:\n !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data\n ? columnInfo.data\n : columnInfo?.filter?.data\n ? columnInfo?.filter?.data\n : [],\n showFilter: this.showFilterIcon(columnInfo),\n };\n }\n if (multiSelectProp) {\n columnInfo.dropDownProp = multiSelectProp;\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n\n showFilterIcon(columnInfo: addColumn) {\n if (columnInfo.filter && columnInfo.filter.showFilter) {\n return true;\n } else {\n return false;\n }\n }\n\n setDropdownData(\n column: IGridColumn,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any[],\n row?: { [key: string]: any }\n ): Promise<any> | any {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\n .then((res: any) => {\n if (row) {\n row[column.field + '_data'] = res;\n } else {\n column.data = res;\n if (column.filter && column.filter.type === 'dropdown') {\n column.filter.data = res;\n }\n }\n return this.addColumn(column);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n\n // add grid column with built-in filter\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\n const column: any = {\n field: filterColumnInfo.field,\n header: filterColumnInfo.header,\n filter: { type: filterColumnInfo.filter },\n filtering: filterColumnInfo.filtering,\n hidden: filterColumnInfo.hidden,\n style: filterColumnInfo.style,\n tableAlias: filterColumnInfo.tableAlias,\n permissions: filterColumnInfo.permissions,\n };\n\n return column;\n }\n\n // add date grid column with built-in filter\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\n const column: IGridColumn = {\n field: dateColumnInfo.field,\n header: dateColumnInfo.header,\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\n filtering: dateColumnInfo.filtering,\n filter: { type: GridFilterControlType.CALENDAR },\n format: dateColumnInfo.format,\n style: dateColumnInfo.style,\n tableAlias: dateColumnInfo.tableAlias,\n disabled: dateColumnInfo.disabled,\n allowSave: dateColumnInfo.allowSave,\n permissions: dateColumnInfo.permissions,\n component: dateColumnInfo.component,\n showTime: dateColumnInfo.showTime,\n timeOnly: dateColumnInfo.timeOnly,\n data: dateColumnInfo.data,\n hidden: dateColumnInfo.hidden,\n };\n return column;\n }\n\n setLookUpFilter(column: any, dialogService: any, globalFilterLookup: boolean = false) {\n if (column.lookupControl) {\n let dataValue: any[] = [];\n let dataKey: any[] = [];\n let data = column.lookupControl?.data?.data;\n const keys = Object.keys(data);\n if (data && keys?.length > 0) {\n keys.forEach((key) => {\n if (data[key].toString().includes('{')) {\n dataValue.unshift(data[key]);\n dataKey.unshift(key);\n data[key] = '';\n }\n });\n }\n const ref = dialogService.open(\n column.lookupControl.component,\n column.lookupControl.data\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (column.onReturn) {\n column.onReturn(res);\n }\n if (dataKey?.length > 0 && dataValue?.length > 0) {\n dataKey.forEach((key, keyIndex) => {\n dataValue.forEach((value, valueIndex) => {\n if (keyIndex === valueIndex) {\n data[key] = value;\n }\n });\n });\n }\n if (res) {\n document.getElementById('lookUp_filter')?.focus();\n let field = column.field;\n let value = utilities.setDialogResponse(\n column,\n column?.lookupControl,\n res\n );\n if(globalFilterLookup){\n if(typeof(value) === 'object'){\n column.valueTwo = value; \n }\n column.value = value?.value\n ? value.value\n : res[field.toLowerCase()];\n const globalFilterLookupInput = document.getElementById(column.field);\n globalFilterLookupInput.focus();\n }else{\n column.filterValue = value?.value\n ? value.value\n : res[field.toLowerCase()];\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n // Set Hyperlink field as a param Value\n setFieldAsLinkParam(columns: any, field: string, response: any) {\n if (\n columns &&\n columns.length > 0 &&\n field &&\n response.records &&\n response.records.length > 0\n ) {\n this.setDataFields(response.records).forEach((res: any) => {\n let obj = columns.find((x: any) => x.field === field);\n if (obj && obj.params) {\n const keys = Object.keys(obj.params);\n keys.forEach((key: any) => {\n if (obj.params[key] && obj.params[key].toString().includes('{')) {\n let value = obj.params[key]\n .replace('{', '')\n .replace('}', '')\n .toLowerCase();\n obj.params[key] = res[value];\n }\n });\n }\n });\n }\n }\n\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\n return (\n columns &&\n columns.some(\n (x) =>\n x.type == EGridColumnType.LINK ||\n x.type == EGridColumnType.IFRAME ||\n x.type == EGridColumnType.DIALOG ||\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT)\n )\n );\n }\n\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\n let records: any = [];\n let data =\n fetchResponse && fetchResponse.records.length > 0\n ? this.setDataFields(fetchResponse.records)\n : [];\n let newRow: any;\n\n return this.hyperlinkService\n .addHyperlinks(columns)\n .then((linksResponse: any) => {\n data.forEach((row: any) => {\n newRow = { ...row };\n columns.forEach((col: any) => {\n let keys = Object.keys(row);\n if (col.type === EGridColumnType.DIALOG) {\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n if (col.data && col.data.data) {\n newRow[field].dialogData = utilities.findKeysAndValue(\n col.data.data,\n row\n );\n }\n }\n linksResponse.forEach((linkResponse: any) => {\n if (\n (col.type === EGridColumnType.LINK ||\n col.type === EGridColumnType.IFRAME ||\n col.type === EGridColumnType.LOOKUP_INPUT) &&\n col.linkId &&\n col.params &&\n col.linkId === linkResponse.linkId\n ) {\n const paramKeys: string[] = Object.keys(col.params);\n const link: any = utilities.setHyperlink(\n keys,\n row,\n linkResponse.url,\n paramKeys,\n col.params\n );\n\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].hyperlink = link;\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n }\n });\n });\n records.push(newRow);\n });\n return records;\n });\n }\n\n // add grid global filter with built-in filter\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\n const column: addGlobalFilter = {\n field: globelFilterInfo.field,\n displayText: globelFilterInfo.displayText,\n validations: globelFilterInfo.validations,\n type: globelFilterInfo.type,\n data: globelFilterInfo.data,\n value: globelFilterInfo.value,\n valueTwo: globelFilterInfo.valueTwo,\n matchMode: globelFilterInfo.matchMode,\n operator: globelFilterInfo.operator,\n tableAlias: globelFilterInfo.tableAlias,\n optionLabel: globelFilterInfo.optionLabel,\n optionValue: globelFilterInfo.optionValue,\n onFocusOut: globelFilterInfo.onFocusOut,\n onReturn: globelFilterInfo.onReturn,\n filtering: globelFilterInfo.filtering,\n column: globelFilterInfo.column,\n dayRange: globelFilterInfo.dayRange,\n fromField: globelFilterInfo.fromField,\n toField: globelFilterInfo.toField,\n lookupControl: globelFilterInfo.lookupControl,\n allowSearch: globelFilterInfo.allowSearch,\n disabled: globelFilterInfo.disabled,\n hidden: globelFilterInfo.hidden,\n labelText: globelFilterInfo.labelText,\n prefix: globelFilterInfo.prefix,\n color: globelFilterInfo.color,\n format: globelFilterInfo.format,\n };\n return column;\n }\n\n // add global input filter\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global dropdown filter\n addGlobalDropdownFilter(\n globelFilterInfo: IGlobalFilter,\n dropDownProp?: IDropDownRequest\n ): any {\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n let sorts = dropDownProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else {\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n // add global MultiSelect dropdown filter\n addGlobalMultiSelectDropDownFilter(\n globelFilterInfo: IGlobalFilter,\n multiSelectProp?: IDropDownRequest\n ): any {\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\n if (multiSelectProp) {\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n let sorts = multiSelectProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else {\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n\n getDropdownData(\n fieldInfo: any,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any,\n sorts: IGridSort[] = []\n ) {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters, sorts)\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addGlobalFilter(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addGlobalFilter(fieldInfo);\n });\n }\n \n // add global filter Space Field\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.SPACER;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global boolean filter\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n \n // add Numeric Range Filter for global Filter\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric input for global Filter\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add LookUp Field for global Filter\n addGlobalLookupFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n //add calendar filter for global filter\n addGlobalDateFilter(globalFilterInfo: addGlobalFilter){\n globalFilterInfo.type=GridFilterControlType.CALENDAR;\n return this.addGlobalFilter(globalFilterInfo);\n }\n\n setDataFields(response: any, dataKey: string = \"\") {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n if (Object.keys(x ?? {})?.length > 0) {\n const result: any = Object.keys(x)?.reduce(\n (prev, current) => ({\n ...prev,\n [current.toLowerCase()]: x[current],\n }),\n {}\n );\n if (\n dataKey &&\n dataKey.length > 0 &&\n !Object.keys(result)?.includes(dataKey)\n ) {\n result[dataKey] = index;\n }\n\n data.push(result);\n }\n });\n }\n return data;\n }\n\n setColumnFields(columns: any[]) {\n let column: any = [];\n if (columns && columns.length > 0) {\n columns.map((col: any) => {\n column.push({ ...col, field: col?.field?.toLowerCase() });\n });\n return column;\n }\n }\n\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\n setLinkId(\n columns: IGridColumn[],\n field: string,\n linkId: string,\n record: any,\n users: any,\n params: any = null,\n changeLink: boolean = false\n ): any {\n if (columns && columns.length > 0) {\n columns.forEach((column: any) => {\n if (column.field?.toLowerCase() === field.toLowerCase()) {\n column.linkId = linkId;\n if (params) {\n column.params = params;\n }\n }\n });\n }\n\n this.setHyperlinks({ records: [record] }, columns).then((res: any) => {\n if (changeLink) {\n delete res[0][field.toLowerCase() + '_obj'];\n let index = users.findIndex(\n (i: any) => i[field.toLowerCase()] === record[field.toLowerCase()]\n );\n if (index !== -1) {\n if (users[index][field + '_obj']) {\n users[index][field + '_obj'].hyperlink =\n res[0][field + '_obj'].hyperlink;\n }\n }\n }\n });\n }\n\n // set grid data and set selected row based on selection value\n setDataWithSelectedRow(records: any, configData: any) {\n if ((configData?.valueProp || configData?.labelProp) && configData.data.selection) {\n records.forEach((record: any) => {\n Object.keys(record)?.forEach((key) => {\n if (key.toLowerCase() === configData.labelProp ? configData.labelProp?.toLowerCase() : configData.valueProp?.toLowerCase()) {\n if (\n configData.data.value &&\n record[key] === configData.data.value\n ) {\n record['highlightRow'] = true;\n } else if (record[key]?.toString() === configData.data.selection?.toString()) {\n record['highlightRow'] = true;\n }\n }\n });\n });\n }\n\n return records;\n }\n\n setTableAlias(field: string, columns: IGridColumn[]) {\n if (columns && columns.length > 0) {\n const column = columns.find(\n (x: any) => x.field?.toLowerCase() == field?.toLowerCase()\n );\n\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\n return column.tableAlias;\n }\n }\n\n return '';\n }\n\n setGridPropValues(\n columns: IGridColumn[],\n props: IGridProp[],\n filter?: IGridPropFilter,\n records?: any[]\n ) {\n if (columns && columns.length > 0 && props && props.length > 0) {\n let isMatched: boolean = false;\n if (filter && filter.field && records && records.length > 0) {\n isMatched = records.some(\n (x) =>\n utilities.objConvertToLower(x)[filter.field.toLowerCase()] ===\n filter.value\n );\n }\n props.map((prop: IGridProp) => {\n let col: any = {};\n if (prop.field && !isMatched && !filter?.field) {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === prop.field?.toLowerCase()\n );\n } else if (isMatched) {\n if (prop.field) {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === prop.field?.toLowerCase()\n );\n } else {\n col = columns.find(\n (column) =>\n column.field?.toLowerCase() === filter?.field?.toLowerCase()\n );\n }\n }\n if (col && col.hasOwnProperty(prop.name)) {\n col[prop.name] = prop.value;\n }\n });\n }\n }\n\n // set grid row propValues\n setGridRowPropValue(row: { [key: string]: any }, props: IGridRowProp[], columns: IGridColumn[] = []) {\n props?.forEach((prop) => {\n if (prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '')) {\n if (prop.field) {\n const fieldName = Object.keys(row)?.find((key) => key?.toLowerCase() === prop?.field?.toLowerCase());\n const fieldNameObj = fieldName+'_obj';\n if (fieldName) {\n if(Object.keys(row)?.includes(fieldNameObj) && !row[fieldNameObj]?.action){\n row[fieldNameObj] = {...row[fieldNameObj], text: row[fieldName], action: { [prop.propName]: prop.propValue }};\n } else if (row[fieldNameObj]?.action) {\n row[fieldNameObj].action = Object.assign(row[fieldNameObj]?.action, { [prop.propName]: prop.propValue });\n } else {\n row[fieldNameObj] = { text: row[fieldName], action: { [prop.propName]: prop.propValue } };\n }\n } else if (columns?.some((column) => column.field?.toLowerCase() === prop?.field?.toLowerCase())) {\n const propField = prop.field?.toLowerCase();\n const propFieldObj = propField+'_obj';\n if(Object.keys(row)?.includes(fieldNameObj)){\n row[propFieldObj] = { ...row[propFieldObj], text: row[prop.field], extraField: true, action: { [prop.propName]: prop.propValue } };\n }else{\n row[propFieldObj] = { text: row[prop.field], extraField: true, action: { [prop.propName]: prop.propValue } };\n }\n };\n } else {\n if (prop?.action === EGridRowAction.DELETEBTN) {\n row[prop.action] = prop.propValue;\n }\n else if (prop?.action === EGridRowAction.EDITBTN) {\n row[prop.action] = prop.propValue;\n }\n }\n }\n });\n return row;\n }\n\n // remove the rowActions from the records\n removeRowActions(records) {\n if (records?.length > 0) {\n records.forEach((row) => {\n if (row.rowAction) {\n delete row['rowAction'];\n }\n });\n }\n return records;\n }\n}","export interface IUserInfo {\n id: number;\n username: string;\n isADUser: boolean;\n token: string;\n activities: string[];\n roles: IUserRole[];\n }\n \n export interface IUserRole {\n id: number;\n code: string;\n name: string;\n description: string;\n }\n \n export interface IPermission {\n type: EPermissionType;\n roles: string[];\n }\n \n export enum EPermissionType {\n EDIT = 'edit',\n VIEW = 'view',\n DELETE = 'delete',\n ADDROW = 'addRow',\n CRUD = 'crud',\n }\n ","import { Injectable } from '@angular/core';\nimport { IUserInfo } from '../models/user-info.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n userInfoKey: string = 'CurrentUserInfo';\n\n login(response: any): boolean {\n if (response) {\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\n return true;\n } else {\n return false;\n }\n }\n\n getUserInfo() {\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\n }\n\n getUserRoles() {\n let roles: any = [];\n let userInfo: IUserInfo = this.getUserInfo();\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\n roles = userInfo.roles.map((x) => x.name);\n }\n return roles;\n }\n\n isAuthenticated(): boolean {\n return this.getUserInfo() ? true : false;\n }\n\n logout() {\n // setting Function for removing the Grid Filters When User logout. \n let keys = Object.keys(localStorage);\n if(keys && keys.length > 0){\n keys.forEach((key)=>{\n if(key.includes('SetFilters-')){\n localStorage.removeItem(key);\n }\n });\n }\n // removing the UserName & Password When User logout.\n localStorage.removeItem(this.userInfoKey);\n }\n}\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-iframe',\n templateUrl: './iframe.component.html',\n styleUrls: ['./iframe.component.scss']\n})\nexport class IframeComponent implements OnInit,OnDestroy {\n url: any;\n id:string='';\n\n constructor(\n private sanitizer: DomSanitizer,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.loadIFrameData();\n }\n\n ngOnDestroy() {\n if(this.id){\n const url: any = document.getElementById(this.id);\n this.ref.close(url.contentWindow.location.href);\n }\n }\n\n loadIFrameData(){\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\n this.config.data.value\n );\n this.id = this.config.data.iFrameId;\n\n }\n }\n\n iframeLoaded(){\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\n\n if(iframeEl){\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\n }\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageLoggerService {\n\n constructor(private requestService: RequestService) { }\n \n // save page logger info\n savePageLoggerInfo(currentRoute, componentName: string = '') {\n this.requestService\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\n .subscribe(\n (data) => {\n return data;\n },\n (error) => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnChanges,\n Optional,\n ElementRef,\n ViewChildren,\n QueryList,\n SimpleChanges,\n ViewChild,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport {\n DynamicDialogRef,\n DynamicDialogConfig,\n DialogService,\n} from 'primeng/dynamicdialog';\nimport { saveAs } from 'file-saver';\nimport jsPDF from 'jspdf';\nimport { GridService } from '../../../services/grid.service';\nimport {\n IGridColumn,\n IGridSort,\n IGridServerSideEvent,\n IGridPaginationEvent,\n IGlobalFilter,\n IGridFilter,\n IGridColumnAction,\n IGridRowAction,\n EGridSelectionType,\n EGridColumnType,\n EGridSortDirection,\n IGridDataExport,\n EGridAggregate,\n EGridFormatType,\n IGridFilterInfo,\n EGridRowAction,\n EGridValidator,\n GridFilterControlType,\n} from '../../../models/grid.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { WorkSheet } from 'xlsx';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport * as utilities from '../../../services/utilities.service';\nimport { Table } from 'primeng/table';\nimport { EFormatType } from '../../../models/form.model';\nimport { Router } from '@angular/router';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription, interval } from 'rxjs';\n\n@Component({\n selector: 'se-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\n @Output() inlineRowCancel = new EventEmitter();\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n serverFilters: IGridServerSideEvent = {};\n rowsData: any[];\n rowsDataCopy: any[] = [];\n roles: string[] = [];\n isColumnHidden: boolean = false;\n rowClickData: IGridColumn;\n componentTableRef: any;\n lookupFilterObj: any;\n checklist: any[] = []\n lookupBlur: boolean = true;\n globalFiltersArray: any[] = [];\n checkAction: boolean = false;\n calenderPreviousValue: string = '';\n gridFilterObj: IGridFilterInfo;\n defaultDate: any;\n gridfilter: any;\n dropDownFilter: any = {};\n dropdownInput: boolean = false;\n saveAllRecord: boolean = false;\n generateRowsDataCopy: boolean = true;\n editAllRecord: boolean = false;\n cancelAllRecords: boolean = false;\n addNewRowCheck: boolean = false;\n inEditMode: boolean = false;\n saveRecordArray: any[] = [];\n disabledSaveBtn: boolean = false;\n isCheckBoxChangeEventCalled: boolean = false;\n isSelectedAllRows: boolean = false;\n Checked: boolean = true\n unChecked: boolean = false\n editModeChecked: boolean = true;\n editModeunCkecked: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setDropdownFilter: boolean = true;\n reloadPage: Subscription;\n setDropdowndataValue: boolean = true;\n \n hideEditAllRowsBtn: boolean = true;\n\n //apply Add/Delete/Edit prop for the grid permission\n addRowPermission: boolean = true;\n deleteRowPermission: boolean = true;\n editRowPermission: boolean = true;\n\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\n setAggregateFooter: string = '';\n\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\n aggregateFooter: boolean = false;\n\n // Maintains previous state of rows being edited\n editRowsRecords: { [key: string]: any } = {};\n\n // Maintains record of rows being edited\n editingRowKeys: { [key: string]: any } = {};\n\n @ViewChild('dt') table: Table;\n\n // Selects items in the grid based on passed on data\n @Input() selectedRows: any = [];\n\n @Input() setGridRefreshTime: number = 0;\n\n @Input() addDataKeyValue = false;\n\n private globalData: IGridFilter[] = [];\n\n sortDisabled: boolean = false;\n\n @Input() public showRefreshBtn: boolean = false;\n\n @Input() public hideRefreshBtn: boolean = true;\n\n // Stores selected columns\n private _selectedColumns: IGridColumn[] = [];\n visibleColumns: IGridColumn[] = [];\n // Boolean prop to allow horizontal Scroll on Table.\n @Input() horizontalScroll: boolean = false;\n\n // Boolean prop to hide the delete row button.\n @Input() hideDeleteBtn = false;\n\n // Boolean prop to hide the edit row button.\n @Input() hideEditBtn = false;\n\n // Boolean prop to hide the add row button.\n @Input() hideAddBtn = false;\n\n // Prop to handle loader of grid\n @Input() public loading = false;\n\n //this property is used to handle server side event by default it is true when it false server side event will not be called\n @Input() autoLoadData: boolean = true;\n\n // Boolean prop to check where selected is allowed or not.\n @Input() allowSelection = false;\n\n // Set column width of selected row.\n @Input() selectionColumnWidth: string = '80px';\n\n // set selection checkBox header\n @Input() allowSelectionHeader: string = '';\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridSaveButton = false;\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridCancelButton = false;\n\n // Boolean prop to allow export to pdf.\n @Input() allowExportToPdf = false;\n\n // Boolean prop to allow export to excel.\n @Input() allowExportToExcel = false;\n\n // Boolean prop to set the action column as first column.\n @Input() setActionColumnAsFirst = false;\n\n // If true, enables options to perform CRUD using inline row functionality\n @Input() useInlineCRUD = false;\n\n // Array of row actions\n @Input() rowActions: IGridRowAction[] = [];\n\n // Sets selection type i.e: single/multiple selection\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\n\n // Unique key requires for built-in row selection of primeNg grid\n @Input() dataKey: string = 'id';\n\n // Flag for clear filter values button\n @Input() clearGridFilter = true;\n\n // Flag for search filter values button\n @Input() searchGridFilter = true;\n\n // Flag in case table is scrollable\n @Input() scrollable = true;\n\n // Sets scroll height for the table\n @Input() scrollHeight = '680px';\n\n // Boolean prop to allow to wrap or unWrap the grid.\n @Input() wordWrap: boolean = false;\n\n @Input() newGridRow: any = {};\n\n @Input() filtering = true;\n\n @Input() reportButtons: any[] = [];\n\n @Input() rowHover: boolean = false;\n\n @Input() hideFilterOptions: boolean = false;\n\n // Sets pagenation for the table Data.\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\n\n // set the change in the rowData\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\n\n /**\n * Stops the loader and sets the data to grid\n * Clears the editing stack\n * Scrolls to selected element if selection found\n */\n @Input() set rows(data: any[]) {\n this.loading = false;\n if (!this.isCheckBoxChangeEventCalled) {\n if (data && data.length > 0) {\n if (!this.dataKey) {\n this.dataKey = 'id';\n }\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\n } else {\n this.rowsData = [];\n }\n\n // Cleaning the editing stack\n // this.editingRowKeys = {};\n this.editRowsRecords = {};\n\n setTimeout(() => {\n if (data && data.length > 0 && this.selectedRows) {\n const selectedElementRef = this.gridRow.find(\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\n );\n selectedElementRef &&\n (\n selectedElementRef.nativeElement as HTMLTableRowElement\n ).scrollIntoView({ behavior: 'smooth' });\n }\n }, 0);\n\n if (this.columns && this.columns.length > 0) {\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN && this.setDropdowndataValue) {\n this.setDropdownValue(column, {}, false);\n }\n });\n }\n //manipulate checkbox string value to true and false.\n this.changeCheckboxStringValue();\n }\n }\n\n // Global filter server request\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\n this.globalData = this.gridService\n .prepareGlobalFilters(globalFilters)\n ?.filter((x) => x?.value !== false);\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = this.serverFilters.filters\n ? this.serverFilters.filters.concat(this.globalData)\n : this.globalData;\n\n if (localStorage.getItem('applyFilter') === 'false') {\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\n : this.globalFiltersArray;\n }\n if (localStorage.getItem('applyFilter') === 'true') {\n globalFilters.forEach((globalFilter) => {\n this.globalFiltersArray.forEach((filterArray) => {\n if (\n filterArray.field === globalFilter.field &&\n globalFilter.value &&\n filterArray.value !== globalFilter.value\n ) {\n filterArray.value = globalFilter.value;\n }\n const findIndex = this.globalFiltersArray.findIndex(\n (index) => index.field === globalFilter.field && !globalFilter.value\n );\n if (findIndex !== -1) {\n this.globalFiltersArray.splice(findIndex, 1);\n }\n });\n });\n\n this.loading = this.autoLoadData;\n // setTimeout(() => {\n if (this.gridService.applyFilterEvent || this.autoLoadData) {\n this.onApplyFilter.emit();\n }\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n serverFilterValues.filters = serverFilterValues.filters.concat(\n this.globalFiltersArray\n );\n }\n serverFilterValues.filters = Array.from(\n new Set(\n serverFilterValues.filters\n .reverse()\n .map((filter: any) => filter.field)\n )\n ).map((field) => {\n return serverFilterValues.filters.find((x: any) => x.field === field);\n });\n serverFilterValues.filters = serverFilterValues.filters.filter(\n (obj: any) =>\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\n );\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = serverFilterValues;\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\n // setting pagination page as first\n serverFilterValues.page = 1;\n this.autoLoadData = true;\n if (this.defaultRows && this.pagination) {\n serverFilterValues.pageSize = this.defaultRows;\n }\n if (this.gridService.applyFilterEvent) {\n this.isCheckBoxChangeEventCalled = false;\n this.onServerSideEventChange.emit(serverFilterValues)\n }\n localStorage.removeItem('applyFilter');\n // setting pagination page number UI\n this.table._first = 0;\n }\n // }, 300);\n }\n }\n\n // Input decorator to receive columns to be displayed in header\n @Input() columns: IGridColumn[] = [];\n\n @Input() permissions: IPermission[] = [];\n\n // Optional prop to handle toggling of columns\n @Input() allowColumnToggle = false;\n\n // Optional prop to hide filtering of columns\n @Input() hideFilter = false;\n\n // Optional prop to handle lookup filters\n @Input() lookupFilters = false;\n\n // Optional prop to handle pagination\n @Input() pagination = false;\n\n // Optional prop to handle show CurrentPage Report\n @Input() showCurrentPageReport = false;\n\n // Displays total number of records\n @Input() totalRecords;\n\n @Input() showconfirmDialog: boolean = true;\n\n @Input() saveAllData: boolean = false;\n\n // Sets number of rows to be shown the grid\n @Input() defaultRows: number;\n\n @Input() columnActions: IGridColumnAction[] = [];\n\n // Decides the grid's behavior either for client side or server side events\n @Input() useServerSideEvents = false;\n\n // Output event to handle row click\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\n\n // Output event emit when click on grid checkbox filter\n @Output() onCheckBoxFilterClick: EventEmitter<any> = new EventEmitter();\n\n // Output event to handle row CheckBox\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\n\n // Output event to trigger on sort change\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\n\n // Output event to trigger on filter change\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\n\n // Output event to invoke the multiSelection click event\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a grid and globalFilters called\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\n\n //set header checkbox value for getting all columns on stay admin\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a lazy event is dispatched\n @Output()\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\n new EventEmitter();\n\n // Output event to trigger on pagination\n @Output()\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\n\n // Dispatch output event trigger on edit row\n @Output() onRowUpdate = new EventEmitter();\n\n // Dispatch output event trigger cancel all rows\n @Output() onCancelAllRows = new EventEmitter();\n\n // Dispatch output event trigger on delete row\n @Output() onRowDelete = new EventEmitter();\n\n //Dispatch output event trigger on add row\n @Output() onRowAdd = new EventEmitter();\n\n //Dispatch output event trigger on add, update and delete row\n @Output() onGridRowActions = new EventEmitter();\n\n // set property allowCaching for LocalStorage\n @Input() allowCaching: boolean;\n\n // set property softCaching for setting the values of gridFilter\n @Input() softCaching: boolean = true;\n\n @Input() editAllRows: boolean = false;\n\n // set the row When Edit the row on Grid\n @Output() onGridRowEdit = new EventEmitter();\n\n // set the row When adding the new Row on Grid\n @Output() onGridRowAdd = new EventEmitter();\n\n isGridHidden: boolean = false;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private alertService: AlertService,\n private authService: AuthenticationService,\n private elementRef: ElementRef,\n public decimalPipe: DecimalPipe,\n private pageLoggerService: PageLoggerService,\n private cd: ChangeDetectorRef,\n private router: Router,\n private datePipe: DatePipe,\n public confirmationService: ConfirmationService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) { }\n\n get selectedColumns(): IGridColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: IGridColumn[]) {\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\n }\n\n // browser close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event: any) {\n if (this.gridService.columnFocusedOut) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n // automatically reload grid after 9 seconds.\n if (this.setGridRefreshTime) {\n this.refreshGrid();\n }\n\n if (this.onRowUpdate?.observers?.length == 0) {\n this.hideEditBtn = true;\n }\n\n if (this.editAllRows && this.onRowDelete.observers.length == 0) {\n this.disabledSaveBtn = true;\n }\n\n this.componentTableRef = this.table;\n setTimeout(() => {\n this.setNumericValues();\n }, 500);\n }\n\n ngOnDestroy() {\n this.refreshGridTerminator()\n }\n\n // apply user role permissions on grid columns\n applyColumnsPermissions() {\n if (this.columns) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.columns.forEach((column: IGridColumn) => {\n let permissions: IPermission[] = column.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n column.disabled = true;\n } else {\n column.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n column.hidden = false;\n column.disabled = false;\n }\n }\n }\n });\n }\n totalFields++;\n if (column.hidden) {\n hiddenFields++;\n }\n });\n\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n // apply global permissions on entire grid\n applyGridPermissions() {\n if (this.permissions && this.permissions.length > 0) {\n let hasValidEditPermission = false;\n\n // check if any column has any permission\n let hasColumnPermissions = this.columns?.some(\n (x) => x?.permissions && x.permissions.length > 0\n );\n\n this.permissions.forEach((permission) => {\n let isValid: boolean = false;\n\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (permission.type === EPermissionType.CRUD && !isValid) {\n this.useInlineCRUD = false;\n }\n else if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n this.useInlineCRUD = true;\n if (!isValid && !hasColumnPermissions) {\n this.isGridHidden = true;\n this.useInlineCRUD = false;\n }\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\n this.isGridHidden = false;\n hasValidEditPermission = true;\n this.editRowPermission = false;\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\n this.deleteRowPermission = false;\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\n this.addRowPermission = false;\n }\n });\n }\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\n }\n\n ngOnChanges(change: SimpleChanges) {\n if (!this.isCheckBoxChangeEventCalled) {\n if (this.allowCaching !== false && this.pagination) {\n this.allowCaching = this.pagination;\n } else if (this.componentTableRef?.id) {\n localStorage.removeItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl());\n }\n // add defaultRow in pagination array\n if (!this.setPaginationLength.includes(this.defaultRows)) {\n this.setPaginationLength.unshift(this.defaultRows);\n }\n const hasColumns: boolean = this.columns && this.columns.length > 0;\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions on grid columns\n this.applyColumnsPermissions();\n\n // apply global permissions on entire grid\n this.applyGridPermissions();\n\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\n this.cd.detectChanges();\n\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n // checking filter exist or not\n const filter = this._selectedColumns.some(\n (column) => column.filtering === undefined || column.filtering === true\n );\n if (filter === false) {\n this.hideFilter = true;\n }\n\n\n this.columns.forEach((column: any) => {\n // set isRequired true for required column to show astric in column header\n if (column.validations?.find(validation => validation.type == EGridValidator.REQUIRED)) {\n column.isRequired = true;\n }\n // set numeric null or undefine data default value\n if ((column.type === EGridColumnType.NUMERIC || column.type === EGridColumnType.BOOLEAN || column.type === EGridColumnType.TEXT || column.type === undefined || column.type === EGridColumnType.DATE || column.type === EGridColumnType.DROPDOWN) && column.value && this.rowsData?.length > 0) {\n this.rowsData.forEach((row) => {\n if (column.value && (row[column.field] === null || row[column.field] === undefined)) {\n row[column.field] = column.value;\n }\n })\n }\n\n // convert string time into the date\n if (column.type === EGridColumnType.DATE) {\n if (column.timeOnly === true) {\n this.rowsData.forEach((row) => {\n if (\n row[column.field] &&\n (row[column.field].toString().includes('PM') ||\n row[column.field].toString().includes('AM'))\n ) {\n row[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n });\n } else if (!column.minutesInterval) {\n this.rowsData.forEach((row: any) => {\n if (row[column.field+'_obj'] && row[column.field+'_obj'].action) {\n row[column.field] = new Date(row[column.field+'_obj']?.text as string);\n } else if (row[column.field]) {\n row[column.field] = new Date(row[column.field] as string);\n }\n });\n\n }\n }\n // set filter value\n if (column.filter && column.filterValue && column.filtering !== false) {\n this.setFilterFocusOut(column);\n }\n // add \"flex-shrink: 0\" for flex-basis Style\n // if (column.style && column.style.includes('flex-basis')) {\n // let style = column.style + ' !important; flex-shrink: 0 !important';\n // column.style = style.includes(';;')\n // ? style.replace(';;', ';')\n // : style;\n // }\n\n // set DisplayText when value is in curly brackets.\n this.setDisplayTextValue(column);\n\n //Aggregate scenario\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n\n let searchFilters;\n if (!this.softCaching && this.componentTableRef?.id) {\n searchFilters = JSON.parse(\n localStorage.getItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl()) as any\n );\n } else if (this.componentTableRef?.id) {\n searchFilters = this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()];\n }\n if (\n !this.hideFilter &&\n searchFilters &&\n searchFilters.filters &&\n searchFilters.filters.length > 0\n ) {\n searchFilters.filters.forEach((x: any) => {\n if (x.field === column.field) { \n if (column?.filter?.type === 'calendar' && x.value) {\n column.filterValue = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\n } else if (column.type === EGridColumnType.BOOLEAN) {\n column.filterValue = x.value;\n } else if (x.value) {\n column.filterValue = x.value;\n }\n }\n });\n }\n // converting displayField toLowercase\n if (column.displayField) {\n column.displayField = column.displayField.toLowerCase();\n }\n // set AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n this.rowsData &&\n this.rowsData.length > 0\n ) {\n this.rowsData.forEach((row) => {\n // convert string that contains comma into arrays\n if(row[column.field]?.toString().includes(';')){\n row[column.field] = row[column.field]\n ?.toString()\n .split(';')\n ?.map((value: any) => ({ [column.displayField?.toLowerCase()]: row[column.displayField],[column.optionLabel?.toLowerCase()]: value, [column.field?.toLowerCase()]: value }));\n }\n const key: any = Object.keys(row).find((x) => x === column.field.toLowerCase());\n // convert simple string into array\n if (!Array.isArray(row[key]) && row[key]) {\n if(column.displayField){\n row[key] = [{ [column.displayField?.toLowerCase()]: row[column.displayField], [column.field?.toLowerCase()]: row[key] }];\n }else{\n if(column.optionLabel){\n row[key] = [{ [column.field?.toLowerCase()]: row[key], [column.optionLabel?.toLowerCase()]: row[key] }];\n }else{\n row[key] = [{ [column.field?.toLowerCase()]: row[key] }];\n }\n }\n }\n });\n }\n\n //when we add a new row, it set the default value\n if(column.value){\n let key = Object.keys(this.newGridRow).find((x)=> x?.toLowerCase() === column.field?.toLowerCase())\n if(!key){\n this.newGridRow[column.field] = column.value;\n }\n }\n });\n\n // Searching scenario\n if (change.rows?.currentValue && change.columns?.currentValue) {\n // Checks either column value is changes (i.e., column hidden scenario)\n if (\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\n JSON.stringify(this.columns).toLowerCase()\n ) {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n } else {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n\n setTimeout(() => {\n const classElement = document.getElementsByClassName('highlighted-row');\n if (classElement.length > 0) {\n classElement[0].scrollIntoView();\n }\n\n if (this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0) {\n this.editAllRowsAtOnce();\n }\n }, 500);\n }\n this.setDropdowndataValue = true;\n const globalSearchbtn = document.getElementById('globalSearchbtn');\n if (globalSearchbtn) {\n this.searchGridFilter = false;\n }\n if (this.rowsData?.length > 0 && this.generateRowsDataCopy) {\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n }\n }\n\n this.isCheckBoxChangeEventCalled = false;\n }\n\n autoCompleteSelectedValue(row: any, column: IGridColumn, value) {\n if (column.optionLabel) {\n const valueKey = column.optionValue ? column.optionValue : column.field;\n row[column.field] = [...row[column.field], {\n [column.optionLabel?.toLowerCase()]: value[column.optionLabel?.toLowerCase()], [valueKey?.toLowerCase()]: value[valueKey?.toLowerCase()],\n [column.field?.toLowerCase()]: value[valueKey?.toLowerCase()]\n }];\n const index = row[column.field]?.findIndex((x) => JSON.stringify(x) === JSON.stringify(value));\n row[column.field].splice(index, 1);\n }\n }\n\n // set DisplayText when value is in curly brackets.\n setDisplayTextValue(column: IGridColumn) {\n this.rowsData?.forEach((row) => {\n if (\n column.type === EGridColumnType.LINK ||\n EGridColumnType.DIALOG ||\n EGridColumnType.IFRAME\n ) {\n const field = row[column.field + '_obj'];\n if (column.displayText && column.displayText.includes('{')) {\n const displayText = column.displayText\n .replace('{', '')\n .replace('}', '');\n if (displayText && field) {\n field.displayText = row[displayText.toLowerCase()];\n }\n } else if (column.displayText && field) {\n field.displayText = column.displayText;\n }\n }\n });\n }\n\n setNumericMinMxFraction(column: any) {\n let digitInfo = '2';\n if (column?.format.type === 'percent' && !column?.format?.formatParams?.digitsInfo) {\n digitInfo = '0'\n } else if (column?.format?.formatParams?.digitsInfo) {\n digitInfo = column.format.formatParams.digitsInfo;\n }\n return digitInfo;\n }\n\n // set the format of currency && number && decimal && percent\n setNumericFormat(column: any, row: any) {\n row = utilities.objConvertToLower(row);\n let value: any = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField.toLowerCase()]\n : (row[column.field?.toLowerCase()+'_obj']?.text || row[column.field?.toLowerCase()+'_obj']?.text === 0 || row[column.field?.toLowerCase()+'_obj']?.text === null)\n ? row[column.field.toLowerCase()+'_obj']?.text : row[column.field.toLowerCase()];\n if (this.typeOf(value) === 'number' && value === 0) {\n value = value.toString();\n }\n let formatParams = column.format?.formatParams;\n let digitsInfo = formatParams?.digitsInfo;\n if (column.format && value) {\n switch (column.format?.type) {\n case EGridFormatType.CURRENCY:\n value = new Intl.NumberFormat(\n formatParams?.locale ? formatParams.locale : 'en-US',\n {\n style: 'currency',\n currency: formatParams?.currency ? formatParams.currency : 'USD',\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\n }\n )?.format(value);\n break;\n case EGridFormatType.DECIMAL:\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\n break;\n case EGridFormatType.PERCENT:\n value = value + '%';\n break;\n }\n }\n return value;\n }\n\n //Change dropdown vlue based on option label and optionvalue\n setDropdownValue(column: IGridColumn, selectedRow?: any, change?: boolean) {\n if (this.rowsData && this.rowsData.length > 0) {\n this.rowsData.forEach((row) => {\n if (Object.keys(row)?.find((key) => key === column.field)) {\n if (column) {\n column.optionLabel = column.optionLabel\n ? column.optionLabel\n : 'label';\n column.optionValue = column.optionValue\n ? column.optionValue\n : 'value';\n }\n const value = column.data?.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\n if (value && editedRow) {\n row[column.field] = value[column.optionValue];\n } else if (value && change === false) {\n row[column.field] = value[column.optionLabel];\n }\n }\n });\n }\n }\n\n //manipulate checkbox string value to true and false.\n changeCheckboxStringValue() {\n if (\n this.columns &&\n this.rowsData &&\n this.rowsData.length > 0 &&\n this.columns.length > 0\n ) {\n this.rowsData.forEach((row) => {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.BOOLEAN) {\n if (\n (typeof (row[column.field] === 'string') &&\n (row[column.field] === '1' || row[column.field] === '0')) ||\n row[column.field] === 'Y' ||\n row[column.field] === 'N'\n ) {\n row[column.field] =\n row[column.field] === '1' || row[column.field] === 'Y'\n ? true\n : false;\n }\n }\n });\n });\n }\n }\n\n /**\n *\n * @param rowData\n * Passes data of clicked row to parent\n */\n handleRowClick(rowData: any) {\n this.rowClickData = rowData;\n if(!this.editAllRows){\n this.onRowClick.emit(rowData);\n }\n }\n\n /**\n *\n * @param columnData\n * Passes sorting information to parent on sort change\n */\n handleSortChange(event: any) {\n let sortDirection = null;\n let sortField: string = '';\n if (event.multisortmeta && event.multisortmeta[0].order) {\n sortDirection =\n event.multisortmeta[0].order == 1\n ? EGridSortDirection.ASC\n : EGridSortDirection.DESC;\n sortField = event.multisortmeta[0].field;\n }\n let sorts: IGridSort = {\n field: sortField,\n direction: sortDirection as EGridSortDirection,\n priority: 0,\n };\n this.onSortChange.emit(sorts);\n }\n\n /**\n *\n * @param event\n * Passes applied filters to parent on filter change\n */\n handleFilterChange(event: any) {\n this.columns.forEach((filter: any) => {\n if (!event.filters[filter.field]?.value && !filter.value) {\n filter.value = '';\n }\n });\n this.onFilterChange.emit(event);\n }\n\n /**\n *\n * @param event : Event\n * @param columnAction : IGridColumnAction\n * @param row : any\n * Stop the click event propagation to parent\n * Callbacks the row data to parent\n */\n\n /**\n * invoke onClick event & open Iframe in grid\n */\n gridIFrame(column: any, rows: any, row: any) {\n this.onClickEvent(column, row);\n const ref = this.dialogService.open(IframeComponent, {\n header: column.header,\n width: '80%',\n height: '80%',\n data: {\n value: rows,\n iFrameId: column.displayText ? column.displayText : column.field,\n },\n });\n const componentName = column.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n } else if (res && column.onChange) {\n column.onChange(res);\n }\n });\n }\n\n addNewRow(row: any, addRow: boolean = false) {\n this.refreshGridTerminator()\n this.componentTableRef = this.table;\n this.columns.forEach((column) => {\n if (\n column.filter &&\n column.component &&\n column.filter.type === 'calendar'\n ) {\n if (addRow) {\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\n } else {\n row[column.field + '_secondType'] = EGridColumnType.DATE;\n }\n }\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n });\n this.rowClickData = row;\n this.addNewRowCheck = true;\n this.dropdownInput = false;\n this.sortDisabled = true;\n this.onGridRowAdd.emit(row);\n }\n\n /**\n * open Dialog in grid\n */\n openGridDialog(column: IGridColumn | any, row: any) {\n var isDisabled = column.disabled\n ? true\n : row[column.field+'_obj']?.action && row[column.field+'_obj'].action.disabled\n ? true\n : false;\n this.onClickEvent(column, row);\n setTimeout(() => {\n this.rowClickData = row;\n if (column.data && column.data.data && row[column.field + '_obj']) {\n column.data.data = row[column.field + '_obj']?.dialogData;\n }\n\n if (column.component && column.data && this.rowClickData && !isDisabled) {\n const data = { ...column.data };\n data.data = utilities.autoSetLookupData(\n column.data.data,\n this.rowClickData\n );\n const ref = this.dialogService.open(column.component, data);\n const componentName = column.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((data: any) => {\n if (data && column.onReturn) {\n column.onReturn(data, this.rowClickData);\n } else if (data) {\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(data);\n }\n }\n });\n }\n }, 10);\n }\n\n browserCloseEvent(event: boolean = false) {\n this.gridService.columnFocusedOut = event;\n }\n\n setMultiSelectData(column: IGridColumn, selectedValue: any) {\n if (selectedValue && column.type == EGridColumnType.MULTISELECT) {\n if (selectedValue && selectedValue?.toString()?.includes(',')) {\n selectedValue = selectedValue?.toString()?.split(',')?.map((value) => column.data?.find((option) => option.value?.toString() === value?.toString())?.label)?.toString();\n } else {\n selectedValue = column.data?.find((option) => option.value?.toString() === selectedValue?.toString())?.label;\n }\n }\n return selectedValue;\n }\n\n setTextBoxReadOnlyValue(row: any, column: any){\n let value : any;\n if(column.displayText){\n value = column.displayText; \n }else if(row[column.field + '_obj']?.action?.displayText){\n value = row[column.field + '_obj']?.action?.displayText;\n }else if(row[column.field + '_obj']?.action?.displayField){\n value = row[row[column.field + '_obj']?.action?.displayField?.toLowerCase()];\n }else if(column.displayField){\n value = row[column.displayField?.toLowerCase()];\n }else {\n value = row[column.field];\n }\n return value;\n }\n\n /**\n * return conditional base value and title\n */\n setConditionBaseValue(row: any, column: any) {\n delete row['undefined'];\n let value: any;\n if (column.type == EGridColumnType.DATE) {\n let newValue: any;\n if (typeof (row[column.field+'_obj']) === \"object\" && row[column.field+'_obj']?.action) {\n newValue = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.field?.toLowerCase()+'_obj']?.text\n } else {\n newValue = row[column.field];\n }\n\n if (newValue) {\n if (column.timeOnly) {\n value = this.setTimeFormat(newValue);\n } else {\n let format = this.setFormat(column);\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\n }\n }\n } else {\n value = row[column.field+'_obj']?.action?.displayText\n ? row[column.field+'_obj']?.action?.displayText\n : row[column.field+'_obj']?.action?.displayField?.toLowerCase()\n ? row[row[column.field+'_obj']?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField?.toLowerCase()]\n : row[column.field + '_obj'] &&\n row[column.field + '_obj'].displayText === null\n ? ''\n : row[column.field + '_obj']?.displayText\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ?\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ?\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\n : column.format ? this.datePipe.transform(row[column.field + '_obj'].displayText, this.setFormat(column)) : row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : column.icon ? column.header\n : row[column.field];\n }\n return value;\n }\n\n setFormat(column) {\n let format = '';\n if (column?.format) {\n switch (column.format) {\n case EGridFormatType.SMALLDATE: {\n format = 'MM/dd/yy';\n break;\n }\n case EGridFormatType.SHORTDATE: {\n format = 'MM/dd/yyyy';\n break;\n }\n case EGridFormatType.MEDIUMDATE: {\n format = 'M d, yy';\n break;\n }\n case EGridFormatType.LONGDATE: {\n format = 'MM/dd/YY, h:mm a';\n break;\n }\n case EGridFormatType.PERIOD: {\n format = 'MM/yy';\n break;\n }\n default: {\n format = column.format;\n break;\n }\n }\n }\n return format\n }\n\n setDropdwonReadOnlyValue(row: any, column: any) {\n delete row['undefined'];\n const value = row[column.displayField]\n ? row[column.displayField]\n : column.data?.find(dropdownVal => dropdownVal?.value == row[column.field])\n ? column.data?.find(dropdownVal => dropdownVal?.value == row[column.field])?.label\n : row[column.field];\n return value;\n }\n\n\n /**\n * open Delete Confirmation dialog when click on delete icon in Action column\n */\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\n event.stopPropagation();\n if (columnAction.tooltip.toLowerCase() === 'delete') {\n if (columnAction.confirmDialog === false) {\n columnAction.onClick(row);\n } else {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n columnAction.onClick(row);\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n } else {\n columnAction.onClick(row);\n }\n }\n\n /**\n *\n * @param event : LazyLoadEvent\n * Triggers everytime a server side filter is trigger\n */\n handleServerSideEvents(event: any) {\n this.gridfilter = event;\n setTimeout(() => {\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((x: any) => {\n if (event.filters[x.field]) {\n event.filters[x.field].value = x.filterValue;\n }\n });\n }\n\n this.loading = this.autoLoadData;\n this.serverFilters = {\n filters: this.lookupFilters\n ? this.gridService.getGridFilters(event, this.selectedColumns)\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\n ...(this.pagination && {\n page: this.gridService.getGridPagination(event),\n pageSize: event.rows || 10,\n }),\n };\n\n if (\n this.serverFilters?.filters &&\n this.serverFilters?.filters.length > 0 &&\n (this.allowCaching || this.softCaching)\n ) {\n if (!this.softCaching && this.componentTableRef?.id) {\n localStorage.setItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl(), JSON.stringify(this.serverFilters));\n } else if (this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = this.serverFilters;\n }\n } else {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = {};\n }\n\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\n this.globalData\n );\n this.isCheckBoxChangeEventCalled = false;\n this.onServerSideEventChange.emit(serverFilterValues);\n }, 950);\n }\n\n /**\n * @param event\n * Passes applied pagination to parent on page change\n */\n handleServerSidePagination(event: IGridPaginationEvent) {\n this.onPageChange.emit(event);\n }\n\n selectedRow(row: any) {\n this.onRowCheckBox.emit(row);\n }\n\n // set time format\n setTimeFormat(date: any) {\n let value: any = '';\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\n value = utilities.setTimeInDate(date);\n } else {\n value = this.datePipe.transform(date, 'hh:mm a');\n }\n return value;\n }\n\n //open hyperlink in edit case\n openLink(url: any) {\n if (url) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n }\n\n /**\n *\n * @param row\n * Sets values to editable row\n * Row's data is preseved to prevent mutation\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\n */\n\n refreshGridTerminator() {\n if (this.setGridRefreshTime) {\n this.reloadPage?.unsubscribe();\n }\n }\n\n onRowEditInit(row: any) {\n this.refreshGridTerminator()\n let selectedRow = { ...row };\n Object.entries(selectedRow).forEach(([key, value]: any) => {\n this.columns.forEach((col: any) => {\n if (this.setDropdownFilter) {\n this.setDropdownFilterValue(col, row, key);\n this.setDropdownFilter = false;\n }\n // set the autoComplete Value in edit mode\n if (\n col.type === EGridColumnType.AUTOCOMPLETE &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n value &&\n value.length > 0\n ) {\n if(col.displayField){\n selectedRow[col.field].forEach((row) => {\n row[col.field?.toLowerCase() + '_temp'] = row[col.displayField];\n row[col.displayField] = row[col.field];\n });\n }\n let newValue = value.map((x: any) => x[col.displayField]);\n if (newValue?.toString()?.includes(';')) {\n row[col.field] = newValue\n ?.toString()\n ?.replaceAll(';', ',')\n ?.split(',')\n ?.map((x: any) => ({ [col.displayField ? col.displayField : col.field]: x, [col.field+ '_temp']: value[0][col.field] }));\n }\n }\n\n // set lookup control field based on display field.\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\n if (col.field === key) {\n row[col.field] = {\n text: row[col.displayField],\n value: row[col.field],\n };\n }\n }\n\n if (col.type === EGridColumnType.DROPDOWN) {\n let option = col?.data?.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n if (\n col.field?.toLowerCase() === key?.toLowerCase() &&\n col.type === EGridColumnType.DATE\n ) {\n value = value?.action ? value.text : value;\n if (row[col.field] !== null) {\n if (row[key+'_obj']?.action && Object.keys(row[key+'_obj']?.action)?.length > 0) {\n row[key+'_obj'].text = new Date(value as string);\n } else {\n row[key] = new Date(value as string);\n }\n }\n\n // check the Minutes pattern\n if (\n (col.showTime || col.timeOnly) &&\n col.minutesInterval &&\n row[key]\n ) {\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\n }\n }\n if (\n col.type === EGridColumnType.DIALOG &&\n col.filter?.type === 'calendar' &&\n col.field.toLowerCase() === key.toLowerCase()\n ) {\n if (value === null) {\n row[key] = new Date();\n } else {\n row[col.field] = new Date(value);\n }\n }\n if (\n col.type === EGridColumnType.LINK &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n (col.allowSave === true || col.allowSave === undefined)\n ) {\n if (col.editLink === true) {\n row[key] = row[col.field + '_obj']?.hyperlink;\n } else if (col.editLink === false || col.editLink === undefined) {\n row[key] = value;\n }\n }\n });\n });\n\n this.editRowsRecords[row[this.dataKey]] = { ...row };\n this.editingRowKeys[row[this.dataKey]] = true;\n this.checkAction = true;\n this.dropdownInput = true;\n this.rowClickData = row;\n this.inEditMode = true;\n this.cancelAllRecords = false;\n this.saveAllRecord = false;\n this.sortDisabled = true;\n this.onGridRowEdit.emit(row);\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * set dropdown filter value\n */\n setDropdownFilterValue(col: any, row: any, key: string) {\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\n if (Object.values(col).some((value) => value == key)) {\n let obj = col.dropDownProp;\n let newFilters: any = [];\n if (obj.filters && obj.filters.length > 0) {\n obj.filters.forEach((filter: any) => {\n let newFilter = { ...filter };\n let filterKey = Object.keys(row).find((key) => {\n let matchKey: string = '';\n if (\n filter.value?.includes('{') &&\n key.toLowerCase() ===\n filter.value\n ?.toString()\n ?.toLowerCase()\n .replace('{', '')\n .replace('}', '')\n ) {\n matchKey = key;\n }\n return matchKey;\n });\n if (filterKey) {\n newFilter.value = row[filterKey];\n }\n newFilters.push(newFilter);\n });\n }\n\n this.gridService.setDropdownData(\n col,\n obj.uniqueKey,\n obj.valueProp,\n obj.labelProp,\n newFilters,\n row\n );\n\n let option = col.data.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n }\n }\n\n /**\n *\n * @param row\n * Passes the edited or newly created data to parent\n * In case of newly created data, dataKey and isNew prop is removed\n */\n onRowEditSave(selectedRow: any) {\n let automCompleteTempData = [];\n let lookupInfo: any = {};\n this.selectedColumns.forEach((column: any) => {\n delete selectedRow[column.field + '-data'];\n delete selectedRow[column.field + '_secondType'];\n if (\n column.type === EGridColumnType.LOOKUP_INPUT && selectedRow[column.field + '_obj']?.text &&\n (column.allowSave === true || column.allowSave === undefined)\n ) {\n lookupInfo[column.field] = selectedRow[column.field + '_obj'].text;\n }\n\n if (column.formatter) {\n let value: any = selectedRow[column.field];\n if (column.formatter === 'char') {\n value = value === true ? 'Y' : 'N';\n } else if (column.formatter === 'numeric') {\n value = value === true ? '1' : '0';\n }\n selectedRow = { ...selectedRow, [column.field]: value };\n }\n\n //convert date into time format\n if (\n column.type === EGridColumnType.DATE\n ) {\n if (column.timeOnly && column.saveAsString) {\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\n }\n else if (!column.timeOnly && column.showTime) {\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\n } else if (selectedRow[column.field] && !column.timeOnly && column.saveAsString) {\n selectedRow[column.field] = selectedRow[column.field].toLocaleDateString();\n }\n }\n // if allowCalculate=true, divide the percent by 100\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n if (column.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n selectedRow[column.field] = parseFloat((selectedRow[column.field] / 100)?.toString()).toFixed(digitsInfo);\n } else {\n selectedRow[column.field] = selectedRow[column.field] / 100;\n }\n }\n }\n }\n\n //convert multiselect array into string\n if (\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\n ) {\n selectedRow[column.field] = selectedRow[column.field]?.toString();\n }\n\n // Saving AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n column.displayField &&\n selectedRow[column.field]?.length > 0\n ) {\n automCompleteTempData = [...selectedRow[column.field]];\n selectedRow[column.field] = selectedRow[column.field]?.map((row) => column?.optionValue && row[column.optionValue?.toLowerCase()] ?\n row[column.optionValue?.toLowerCase()] : row[column.field?.toLowerCase()])?.toString()?.replaceAll(',', ';');\n }\n });\n\n let row: any = { ...selectedRow };\n let keys = Object.keys(row);\n keys.forEach((key) => {\n if (key.includes('_obj')) {\n if (this.checkAction === false) {\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\n this.checkAction = true;\n }\n let obj: any = row[key];\n if (\n obj &&\n (obj.type === 'link' ||\n obj.type === 'iframe' ||\n obj.type === 'dialog')\n ) {\n delete row[key];\n }\n }\n });\n /**\n * just emit those fields who exist in the table\n */\n row = this.gridService.setRowValue(row);\n let obj: any = {};\n this.columns.forEach((column: any) => {\n if (\n (column.allowSave === true || column.allowSave === undefined || this.saveAllData)\n ) {\n obj[column.field] = row[column.field];\n if (\n column.type === EGridColumnType.DIALOG &&\n column.filter?.type === 'calendar'\n ) {\n obj[column.field] = this.datePipe.transform(\n obj[column.field],\n 'yyyy-MM-ddT00:00:00.000Z'\n );\n }\n\n //Set Decimal Fraction Value\n if (\n column.format &&\n column.format.type === EFormatType.DECIMAL &&\n row[column.field] &&\n !row[column.field].toString().includes('.')\n ) {\n let digitsInfo = '.00';\n let zero = '0';\n const formatParams = column.format?.formatParams;\n const fracDigits = column?.format?.formatParams?.digitsInfo;\n if (fracDigits) {\n for (let i = 1; i < fracDigits; i++) {\n zero = zero + '0';\n }\n digitsInfo = '.' + zero;\n }\n obj[column.field] = row[column.field] + digitsInfo;\n }\n } else if (\n row.isNew &&\n (column.allowSave === false || column.editable === false || !this.saveAllData)\n ) {\n delete row[column.field];\n }\n });\n delete selectedRow['undefined'];\n this.gridService.checkValidity(this.columns, row);\n const isValid = this.gridValidation(this.columns, row);\n if (isValid) {\n // set the grid updated/inserted data\n this.rowActionEvents(selectedRow);\n this.browserCloseEvent(false);\n if (row.isNew || row.isnew) {\n let { isNew, isnew, ...newRowObj } = row;\n if (!this.addDataKeyValue) {\n delete newRowObj[this.dataKey];\n }\n newRowObj = this.setRowsData(newRowObj);\n if (this.saveAllRecord) {\n this.saveRecordArray.push(newRowObj);\n } else {\n this.onRowAdd.emit(newRowObj);\n }\n } else {\n if (this.saveAllRecord) {\n this.saveRecordArray.push(obj);\n } else {\n if (this.checklist.length > 0)\n this.onRowUpdate.emit(this.setRowsData(this.checklist));\n else {\n this.onRowUpdate.emit(obj);\n }\n }\n }\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\n } else {\n this.editingRowKeys[row[this.dataKey]] = true;\n }\n // if all rows in read only mode then show editAllRows button. \n if (Object.values(this.editingRowKeys).every((value) => !value)) {\n this.inEditMode = false;\n this.hideEditAllRowsBtn = true;\n this.sortDisabled = false;\n }\n this.selectedColumns.forEach((column: any) => {\n // convert date into time\n if (\n selectedRow[column.field] &&\n (selectedRow[column.field]?.toString()?.includes('PM') ||\n selectedRow[column.field]?.toString()?.includes('AM'))\n ) {\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n if (column.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n selectedRow[column.field] = parseFloat((selectedRow[column.field] * 100)?.toString()).toFixed(digitsInfo);\n } else {\n selectedRow[column.field] = selectedRow[column.field] * 100;\n }\n }\n }\n } else if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n selectedRow[column.field]\n ) {\n // set autocompelet array data after save row\n selectedRow[column.field] = automCompleteTempData;\n } else if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n selectedRow[column.field] && (column.allowSave === true || column.allowSave === undefined)\n ) {\n // set LOOKUP_INPUT data after save row\n if (lookupInfo[column.field]) {\n selectedRow[column.field] = lookupInfo[column.field];\n }\n } else if (\n column.type === EGridColumnType.DROPDOWN &&\n column.optionLabel &&\n column.optionValue\n ) {\n this.setDropdownValue(column, selectedRow);\n }\n });\n this.addNewRowCheck = false;\n if (Object.values(this.editingRowKeys).every((value) => !value) && this.setGridRefreshTime) {\n this.refreshGrid();\n }\n this.isCheckBoxChangeEventCalled = false;\n }\n\n // check the validation of the field\n gridValidation(columns: any, row: any): boolean {\n if (!this.gridService.checkValidity(columns, row)) {\n let errorMessageDetails: string = '';\n columns?.forEach((column) => {\n if (column.errorMessage) {\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + ' , ' + column.errorMessage : column.errorMessage;\n }\n })\n let isRequired = columns.some(\n (column: any) => column.errorMessage && !row[column.field]\n );\n if (isRequired) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n return false;\n } else {\n return true;\n }\n }\n\n /**\n *\n * @param row : any\n * @param index : number\n * Clears out the edit row and replace with readable one\n */\n onRowEditCancel(row: any, index: number) {\n let rowInEditMode: boolean = Object.values(this.editingRowKeys).every((value) => !value);\n if (row?.isNew) {\n this.rowsData.splice(index, 1);\n } else {\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\n delete this.editRowsRecords[row[this.dataKey]];\n }\n delete this.editingRowKeys[row[this.dataKey]];\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, row);\n } else if (column.type === EGridColumnType.LOOKUP_INPUT && column.displayField) {\n this.rowsData[index][column.field] = row[column.field]?.value;\n }\n });\n this.inEditMode = false;\n if (rowInEditMode) {\n this.sortDisabled = false;\n }\n this.addNewRowCheck = false;\n this.inlineRowCancel.emit(row);\n setTimeout(() => {\n if (rowInEditMode && this.setGridRefreshTime) {\n this.refreshGrid();\n }\n }, 50);\n }\n\n /**\n * \n *\n *\n * @param row\n * Sends the row payload to parent for deletions\n */\n\n /**\n *set the gridData on row actions events\n */\n rowActionEvents(rowInfo, deleteRow: boolean = false) {\n let action: string = '';\n let gridRowsData: any[] = [...this.rowsData];\n const index = gridRowsData.findIndex((rowData) => rowInfo[this.dataKey] === rowData[this.dataKey]);\n if (index > -1) {\n if (deleteRow) {\n gridRowsData.splice(index, 1);\n this.rowsData = [...gridRowsData];\n action = 'delete';\n } else {\n if (this.addNewRowCheck) {\n action = 'insert';\n } else {\n action = 'update';\n }\n if (this.onGridRowActions.observers.length !== 0) {\n rowInfo['rowAction'] = action;\n }\n gridRowsData[index] = rowInfo;\n }\n }\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n this.onGridRowActions.emit(gridRowsData);\n }\n\n /**\n * open Delete confirmation dialog when trying to delete row\n */\n deleteRecord(row: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handleInlineCRUD',\n accept: () => {\n if (this.useServerSideEvents) {\n this.loading = true;\n }\n // set the grid deleted data \n this.rowActionEvents(row, true);\n this.onRowDelete.emit(row);\n this.confirmationService.close();\n this.inEditMode = false;\n this.loading = false;\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n /**\n * To set disabled the control\n */\n allowDisabled(column: any, row: any): boolean {\n let value: boolean = false;\n if (typeof (row[column.field + '_obj']) === 'object' && row[column.field + '_obj']?.action) {\n if (\n row[column.field + '_obj']?.action &&\n Object.keys(row[column.field + '_obj'].action)?.includes('disabled') && row[column.field + '_obj']?.action?.disabled === true\n ) {\n value = true;\n }\n } else if (column.disabled) {\n value = true;\n }\n return value;\n }\n\n /**\n * To set aggregate in grid footer\n */\n setAggregateText(column: IGridColumn) {\n if (column?.aggregate) {\n column.aggregate.forEach((col: any) => {\n if (this.rowsData && this.rowsData.length > 0) {\n let columnType: EGridAggregate = col.type;\n if (columnType === EGridAggregate.COUNT) {\n const count = this.rowsData.length;\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\n }\n\n if (\n columnType === EGridAggregate.SUM ||\n columnType === EGridAggregate.AVERAGE\n ) {\n const colValues: number[] = this.getColumnValues(column);\n if (colValues && colValues.length > 0) {\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\n if (columnType === EGridAggregate.SUM) {\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\n }\n if (columnType === EGridAggregate.AVERAGE) {\n const average = sum / colValues.length || 0;\n col.aggrValue = this.setAggregateFooterText(\n col,\n average,\n 'Avg'\n );\n }\n }\n }\n } else {\n col.aggrValue = '';\n }\n });\n }\n }\n\n /**\n * set grid Aggregate values\n */\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\n const digitsInfo = column.format?.digitsInfo;\n const caption: string =\n column.caption?.length > 0 ? column.caption : defaultCaption;\n\n const decimalPoint = isDecimalFormat\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\n : value?.toFixed(0);\n return `${caption} ${decimalPoint\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\n }\n\n /**\n * set decimat and numeric values\n */\n setNumericValues() {\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n this.rowsData.forEach((row) => {\n if (column?.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n row[column.field] = parseFloat((row[column.field] * 100)?.toString()).toFixed(digitsInfo); //THESE COMMENTED OUT LINES SHOULD RUN ON SAVE\n } else {\n row[column.field] = row[column.field] * 100;\n }\n } else if (digitsInfo) {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\n }\n } else if (column?.format?.type === 'decimal') {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\n }\n });\n }\n })\n }\n }\n\n /**\n * get column value based on column field\n */\n getColumnValues(column: IGridColumn) {\n let arr: any = [];\n this.rowsData.forEach((row) => {\n let keys = Object.keys(row);\n keys.map((key) => {\n if (column.field === key) {\n arr.push(row[key]);\n }\n });\n });\n return arr;\n }\n\n /**\n *\n * Export to PDF\n */\n exportPdf() {\n var exportData = this.setExportData([...this.rowsData], true);\n let doc = new jsPDF('p', 'pt');\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\n doc.save('Export.pdf');\n }\n\n /**\n * Sub-function to set rows for export to Pdf, and Excel\n * @rows param for rows\n * @isExcel param for export to excel indication\n */\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\n const headings: any = this.columns.map((column) => column.field);\n rows.forEach((row) => {\n for (var prop in row) {\n if (!headings.includes(prop)) {\n delete row[prop];\n }\n if (isPdf) {\n row[prop] =\n !row[prop] && typeof row[prop] !== 'boolean'\n ? ''\n : row[prop].toString();\n }\n }\n });\n return { rows, headings };\n }\n\n /**\n *\n * Export to Excel\n */\n exportExcel() {\n let exportData: any = this.exportDataToExcel();\n import('xlsx').then((xlsx) => {\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\n let rowIndex = 0;\n exportData.forEach((row: any) => {\n let colIndex = 0;\n this.selectedColumns.forEach((col: any) => {\n const cellValue: string = row[col.header];\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\n const linkText: string = cellValue.split('|')[0];\n let linkUrl: string = cellValue.split('|')[1];\n if (linkUrl && !linkUrl.startsWith('http')) {\n if (!linkUrl.startsWith('/')) {\n linkUrl = '/' + linkUrl;\n }\n linkUrl =\n window.location.protocol +\n '//' +\n window.location.hostname +\n linkUrl;\n }\n const cellAddress = xlsx.utils.encode_cell({\n c: colIndex,\n r: rowIndex + 1,\n });\n\n worksheet[cellAddress] = {\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\n };\n }\n\n colIndex++;\n });\n\n rowIndex++;\n });\n const workbook = {\n Sheets: { sheet1: worksheet },\n SheetNames: ['sheet1'],\n };\n const excelBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array',\n });\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\n });\n }\n\n exportDataToExcel() {\n let arr: any = [];\n this.rowsData.forEach((row: any) => {\n let obj: any = {};\n this.selectedColumns.forEach((column: any) => {\n const gridHeader = column.header;\n if (column.type === EGridColumnType.LINK) {\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\n } else {\n obj[gridHeader] = row[column.field];\n }\n });\n\n arr.push(obj);\n });\n return arr;\n }\n\n /**\n *\n * Export to excel (sub-method)\n */\n saveAsExcelFile(buffer: any, fileName: string): void {\n import('file-saver').then((FileSaver) => {\n let EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\n saveAs(data, fileName);\n });\n }\n\n /**\n *set config data of lookup control dialog\n */\n setLookupDialogConfig(row: any, column: any, data: any) {\n let selection: string = '';\n if (row[column.field] && typeof row[column.field] === 'object') {\n selection = row[column.field].text;\n } else if (column.displayField && row[column.displayField]) {\n selection = row[column.displayField];\n } else {\n selection = row[column.field];\n }\n\n if (column.field && typeof row[column.field] === 'object') {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\n let obj = utilities.autoSetLookupData(data, row);\n row[column.field + '-data'] = obj;\n }\n return {\n rowData: row[column.field + '-data'],\n selection: selection,\n column: column,\n };\n }\n\n /**\n * open link on lookupControl control in read only mode when editLink set true\n */\n openLookupHyperlink(column: IGridColumn, row: any) {\n if (column.editLink === true && column.component) {\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\n obj['component'] = column.component;\n const ref = this.openLookupDialog(obj);\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n }\n });\n }\n }\n\n /**\n * open lookup Dialog\n */\n openLookupDialog(column?: any, row: any = {}) {\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data;\n if (row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl) {\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.header ? columnData.header = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.header : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.width ? columnData.width = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.width : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.height ? columnData.height = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.height : ''\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.valueProp ? columnData.valueProp = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.valueProp : \"\"\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.labelProp ? columnData.labelProp = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.labelProp : \"\"\n row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.data ? columnData.data = row[column.column.field?.toLowerCase() + '_obj']?.action?.lookupControl?.data?.data : ''\n }\n const ref = this.dialogService.open(column.component, {\n ...columnData,\n data: {\n selection: column.selection,\n field: column.column.field,\n labelProp: column.column.lookupControl?.data?.labelProp,\n ...column.rowData,\n },\n });\n const componentName = row[column.column.field]?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return ref;\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(column: any, row?: any) {\n this.onClickEvent(column, row);\n let obj: any = this.setLookupDialogConfig(\n row,\n column,\n row[column.field + '_obj']?.action?.lookupControl?.data?.data\n ? row[column.field + '_obj']?.action?.lookupControl?.data?.data : column?.lookupControl?.data?.data\n );\n\n obj['component'] = row[column.field + '_obj']?.action?.lookupControl?.component ? row[column.field + '_obj']?.action?.lookupControl?.component : column.lookupControl?.component;\n const ref = this.openLookupDialog(obj, row);\n utilities.draggableDialog(column?.field ? column?.field : column?.header)\n ref.onClose.subscribe(\n (res) => {\n if (res) {\n let value = utilities.setDialogResponse(\n column,\n column.lookupControl,\n res\n );\n res = utilities.objConvertToLower(res);\n let labelProp = column?.lookupControl?.data?.labelProp?.toLowerCase();\n let valueProp = column?.lookupControl?.data?.valueProp?.toLowerCase();\n let columnField = column?.field?.toLowerCase();\n if (column.displayField) {\n row[columnField] = {\n text: res[labelProp ? labelProp : column.displayField.toLowerCase()],\n value: res[valueProp ? valueProp : columnField],\n }\n row[column.displayField] = row[columnField];\n } else if (value && value.value) {\n value['field'] = columnField;\n if (labelProp || valueProp) {\n row[columnField] = {\n text: res[labelProp ? labelProp : res[labelProp]],\n value: res[valueProp ? valueProp : res[labelProp]],\n };\n } else {\n row[columnField] = value.value;\n }\n } else {\n if (labelProp || valueProp) {\n row[columnField] = {\n text: res[labelProp ? labelProp : valueProp ? valueProp : res[columnField]],\n value: res[valueProp ? valueProp : res[columnField]],\n };\n } else {\n row[columnField] = res[columnField];\n }\n }\n }\n if (typeof (row[column.field]) === \"object\") {\n row[column.field + '_obj'] = {...row[column.field + '_obj'], text: row[column.field]};\n row[column.field] = row[column.field]?.value;\n } else {\n row[column.field + '_obj'] = {...row[column.field + '_obj'], text: {text: res[column.field?.toLowerCase()], value: res[column.field?.toLowerCase()] }};\n }\n if (column.onReturn) {\n column.onReturn(res, row);\n }\n if (row[column.field] !== obj.selection) {\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setFilterLookup(column: any) {\n this.gridService.setLookUpFilter(column, this.dialogService);\n }\n\n // set lookup value that display in readOnlyMode\n setLookupReadOnlyValue(row, column){\n let value = '';\n if(row[column.field+'_obj']?.text ){\n value = row[column.field+'_obj']?.text.text;\n }else if(row[column.displayField]){\n if(typeof (row[column.displayField]) === \"object\"){\n value = row[column.displayField]?.text;\n }else{\n value = row[column.displayField];\n } \n }else{\n value = row[column.field];\n }\n return value;\n }\n\n // Check calender value is changed or not\n calenderChangeEvent(column: any, row: any) {\n let valueChange: boolean = false;\n if (\n column.timeOnly &&\n this.datePipe.transform(row[column.field], 'hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\n ) {\n valueChange = true;\n } else if (\n column.showTime &&\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\n ) {\n valueChange = true;\n } else if (\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\n ) {\n valueChange = true;\n }\n if (valueChange) {\n this.browserCloseEvent(true);\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n this.calenderPreviousValue = '';\n }\n onAutoCompleteFocusOut(e, column, row) {\n if (column.type == EGridColumnType.AUTOCOMPLETE) {\n if (column.allowAutoCompleteSave && e.target.value && !column.data.length) {\n ///check the correct format if data.contains cuz its an array of arrays with objects.\n if (confirm(`Do you want to add ${e.target.value} to the selection?`)) {\n if (column.uniqueKey) {\n var message = this.gridService\n .addAutoCompleteValue(column.uniqueKey, e.target.value, column, row)\n .then(() => {\n\n if (column.onReturn) {\n column.onReturn(e.target.value, column);\n }\n });\n }\n }\n }\n }\n }\n\n onFocusOutEvent(column: IGridColumn, row: any) {\n if (column.type !== EGridColumnType.AUTOCOMPLETE || (!column.allowAutoCompleteSave)) {\n this.gridService.checkValidity([column], row);\n if (column.type === EGridColumnType.DATE) {\n this.calenderChangeEvent(column, row);\n }\n if (column.onFocusOut) {\n column.onFocusOut(row);\n } else if (\n column.onReturn &&\n column.type !== EGridColumnType.LOOKUP_INPUT\n ) {\n column.onReturn(row);\n }\n }\n this.isCheckBoxChangeEventCalled = false;\n }\n\n setFilterFocusOut(col: any, filter?: any, event?: any) {\n if(col?.filter?.type === GridFilterControlType.LOOKUP_INPUT){\n setTimeout(() => {\n this.setGridFilter(col, filter, event);\n },250);\n }else {\n this.setGridFilter(col, filter, event);\n }\n }\n\n setGridFilter(col: IGridColumn, filter?: any, event?: any){\n this.gridFilterObj = { column: col, filter: filter, event: event };\n const newColumn: any = { ...col };\n //change filter calender format\n if (newColumn.type === 'date' && newColumn.filterValue) {\n newColumn.filterValue = this.datePipe.transform(\n col.filterValue.toString().trim(),\n 'yyyy-MM-dd'\n );\n }\n this.filterObj(newColumn);\n localStorage.setItem('applyFilter', JSON.stringify(false));\n }\n\n filterObj(col: any) {\n const obj = {\n field: col.field,\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\n operator: col.operator ? col.operator : 'and',\n tableAlias: col.tableAlias ? col.tableAlias : '',\n value: col.filterValue,\n };\n this.globalFiltersArray.push(obj);\n }\n\n applyEnterEvent(filter: any, event: any, column: any) { \n this.gridService.applyFilterEvent = true;\n this.autoLoadData = true;\n this.onApplyFilter.emit();\n this.filterObj(column);\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\n } else if (filter && column.type === EGridColumnType.BOOLEAN && column?.filter?.type === GridFilterControlType.CHECKBOX && column.filtering !== false) {\n filter(event?.checked);\n } else if (filter) {\n filter(event?.target?.value);\n }\n }\n\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\n if (column.filterValue === null) {\n this.removeNullFilters(column);\n this.setFilterFocusOut(column, filter, event);\n }\n }\n\n backspaceEvent(event: any, column: any) {\n if (\n event.key === 'Backspace' &&\n (column.filterValue?.toString().length === 1 ||\n column.filterValue?.toString() === '' ||\n column.filterValue === null)\n ) {\n this.removeNullFilters(column);\n } else if (column.type === EGridColumnType.DATE && column.filterValue === null) {\n this.removeNullFilters(column);\n }\n }\n\n removeNullFilters(column: any) {\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n let arr = [...this.globalFiltersArray];\n let index = arr.findIndex((i) => i.field === column.field);\n arr.splice(index, 1);\n this.globalFiltersArray = arr;\n }\n }\n\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\n removingFilters(event: any, column: IGridColumn) {\n if (\n (event.key === 'Backspace' || event.key === 'Delete') &&\n column.filterValue?.toString().length === 0\n ) {\n let searchFilters;\n if (!this.softCaching && this.componentTableRef?.id) {\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl()) as any);\n } else if (this.componentTableRef?.id) {\n searchFilters = this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()];\n }\n if (searchFilters && searchFilters.filters) {\n if (searchFilters.filters.length > 0) {\n let index = searchFilters.filters.findIndex(\n (x: any) => x.field === column.field\n );\n if (index > -1) {\n if (searchFilters.filters.length === 1 && this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = [];\n localStorage.removeItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl());\n } else {\n searchFilters.filters.splice(index, 1);\n if (!this.softCaching && this.componentTableRef?.id) {\n localStorage.setItem('SetFilters-' + this.componentTableRef?.id + utilities.currentUrl(), JSON.stringify(searchFilters));\n } else if (this.componentTableRef?.id) {\n this.gridService.softCachingFilters[this.componentTableRef?.id + utilities.currentUrl()] = searchFilters;\n }\n }\n }\n }\n }\n }\n }\n\n // Add Click Button Event on Grid.\n onClickButton(column: any, row: any) {\n this.openGridDialog(column, row);\n }\n\n // Invoke onClick Event.\n onClickEvent(column: any, row: any) {\n if (column.type === EGridColumnType.LINK && (column.editLink === false || column.editLink === undefined) && column.editable !== true && column.disabled !== true) {\n if (column && column.onClick && column.disabled !== true && row[column.field + '_obj']?.action?.disabled !== true) {\n column.onClick(row);\n } else {\n let a = document.createElement('a');\n a.href = row[column.field + '_obj']?.hyperlink;\n a.target = column.target ? column.target : '_blank',\n a.click();\n }\n }\n if (column.type === EGridColumnType.DATE && row[column.field]) {\n this.calenderPreviousValue = row[column.field];\n } else if (\n !row[column.field] &&\n column.type === EGridColumnType.DATE &&\n (column.showTime || column.timeOnly) &&\n column.minutesInterval\n ) {\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\n }\n if (column && column.onClick && column.disabled !== true && row[column.field + '_obj']?.action?.disabled !== true) {\n column.onClick(row);\n }\n }\n\n // set the select value of multi-select\n showOption(column, row) {\n if (row[column.field]) {\n if (typeof (row[column.field]) === \"string\" && !row[column.field]?.includes(',')) {\n row[column.field] = [row[column.field]];\n } else if (row[column.field]?.toString()?.includes(',')) {\n row[column.field] = row[column.field]?.split(',');\n }\n }\n }\n\n onClearValue(column, row) {\n if (column?.type === EGridColumnType.DROPDOWN && !row[column.field]) {\n row[column.field] = null;\n }\n }\n\n // Invoke onChange Event\n onChangeEvent(column: any, row: any) {\n // set dropdown displayField value base on optionLabel & optionValue.\n this.displayFieldDropdownValue(column, row);\n this.onClearValue(column, row);\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n this.setDropdowndataValue = false\n this.isCheckBoxChangeEventCalled = false;\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n }\n\n checkBoxChangeEvent(event: any, column: IGridColumn, row) {\n row[column.field] = event;\n if (this.rowsChange.observers?.length) {\n this.isCheckBoxChangeEventCalled = true;\n }\n this.generateRowsDataCopy=false\n this.rowsChange.emit(this.rowsData);\n }\n\n // set dropdown displayField value base on optionLabel & optionValue.\n displayFieldDropdownValue(column: any, row: any) {\n if (\n column?.type === EGridColumnType.DROPDOWN &&\n column.displayField &&\n column.displayField?.length > 0\n ) {\n const key: any = Object.keys(row)?.find(\n (rowInfo) =>\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\n );\n const displayFieldValue = column.data.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n if (key && displayFieldValue) {\n row[key] = displayFieldValue[column.optionLabel];\n }\n }\n }\n\n // Add autoSearch on Grid.\n autoSearch(event: any, column: any, row: any) {\n if (event && column && row) {\n column.onReturn(event.query, column, row);\n }\n }\n\n // Refresh grid\n refreshGrid() {\n this.reloadPage = interval(this.setGridRefreshTime).subscribe((x) => {\n if (this.gridfilter == undefined) {\n this.gridfilter = { filters: [], sorts: [] };\n }\n if (this.setGridRefreshTime) {\n this.handleServerSideEvents(this.gridfilter);\n }\n });\n }\n\n // Remove FilterValues\n cleargridFiltersValue() {\n const globalFilterClearValueBtn = document.getElementById(\n 'clearGlobalFilterBtn'\n );\n if (globalFilterClearValueBtn) {\n globalFilterClearValueBtn.click();\n }\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((col) => {\n col.filterValue = null;\n this.filterObj(col);\n });\n }\n }\n\n editAllRowsAtOnce() {\n if (this.editRowPermission) {\n if (this.getClassForEditAllRows('editRow')) {\n if (this.selectedColumns.some((column) => column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))) {\n this.editAllRecord = true;\n }\n this.hideEditAllRowsBtn = false;\n this.sortDisabled = true;\n }\n }\n }\n\n saveAllRowsAtOnce() {\n this.getClassForEditAllRows('saveRow');\n }\n\n // reset the grid rowsValue to orignal values\n cancelAllRowsAtOnce() {\n this.rowsData = [...this.rowsDataCopy];\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n this.selectedColumns?.forEach((column) => {\n if (column.type === EGridColumnType.DATE) {\n this.rowsData?.forEach((row) => {\n if (row[column.field]) {\n row[column.field] = new Date(row[column.field]);\n }\n })\n }\n\n });\n if (this.columns?.length) {\n this.columns.forEach((column) => {\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n })\n }\n this.onCancelAllRows.emit(this.rowsData);\n }\n\n getClassForEditAllRows(className: string = '') {\n let success: boolean = false;\n const getBtns: any =\n this.elementRef?.nativeElement?.getElementsByClassName(className);\n if (getBtns && getBtns.length > 0) {\n success = true;\n if (className === 'saveRow') {\n this.editAllRecord = false;\n this.saveAllRecord = true;\n const records$ = [];\n setTimeout(() => {\n for (let item of getBtns) {\n const rowSave = new Promise((resolve, reject) => {\n item.click();\n resolve(item);\n });\n records$.push(rowSave);\n }\n Promise.all(records$).then((response) => {\n if (this.checklist.length > 0) {\n this.onRowUpdate.emit(this.setRowsData(this.checklist));\n }\n else {\n this.generateRowsDataCopy = true;\n this.onRowUpdate.emit(this.saveRecordArray);\n }\n this.saveRecordArray = [];\n });\n }, 20)\n } else {\n this.saveAllRecord = false;\n for (let item of getBtns) {\n if (className == 'cancelRow') {\n setTimeout(() => {\n item.click();\n }, 50);\n } else {\n item.click();\n }\n }\n }\n }\n return success;\n }\n\n //Focused calender input on select date\n selectDate(column: any) {\n document.getElementById(column.field)?.focus();\n }\n\n //apply filter on grid when search btn clicked\n applyGirdFilterBtn() {\n this.isCheckBoxChangeEventCalled = false;\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\n this.applyEnterEvent(\n this.gridFilterObj.filter,\n this.gridFilterObj.event,\n this.gridFilterObj.column\n );\n }\n }\n\n // invoke multiSelection click event\n multiCheckBoxOnclick(rowInfo: any, event: any, singleSelection: boolean = false) {\n if (!singleSelection) {\n if (Array.isArray(rowInfo) && rowInfo?.length > 0 && event?.target?.ariaChecked) {\n this.checklist = [...rowInfo];\n } else if (Array.isArray(rowInfo) && event?.target?.ariaChecked == null) {\n this.checklist = [];\n }\n if (!Array.isArray(rowInfo) && event?.target?.ariaChecked && !this.checklist.some((row) => row.id == rowInfo.id)) {\n this.checklist.push(rowInfo);\n } else if (event?.target?.ariaChecked == null) {\n if (this.checklist.some((row) => row?.id == rowInfo.id)) {\n const index = this.checklist.findIndex((row) => row?.id == rowInfo?.id);\n this.checklist.splice(index, 1);\n }\n }\n this.onMultiSelectionChange.emit(this.setRowsData(this.checklist));\n } else {\n this.checklist = [rowInfo]\n this.onMultiSelectionChange.emit(this.setRowsData(rowInfo));\n }\n }\n\n setRowsData(rowsData) {\n if (Array.isArray(rowsData)) {\n rowsData.forEach((row: any) => {\n row = this.removeRowObj(row);\n row = this.gridService.setRowValue(row);\n })\n } else {\n rowsData = this.removeRowObj(rowsData);\n rowsData = this.gridService.setRowValue(rowsData);\n }\n return rowsData;\n }\n\n removeRowObj(row: any){\n const keys = Object.keys(row);\n if (keys?.length > 0) {\n keys.forEach((key) => {\n if (key.includes('_obj')) {\n delete row[key];\n }\n })\n }\n return row;\n }\n\n applyDropdownFilter(filter: any, event: any) {\n filter(event.target);\n }\n\n searchDropdownFilter(filter: any, event: any, column: any) {\n this.setFilterFocusOut(column, filter, event);\n this.dropDownFilter = { filter: filter, event: event, column: column };\n if (column.allowSearch !== true) {\n this.applyDropdownFilter(filter, event);\n }\n }\n\n lookupClearValue(column: IGridColumn, row?: any) {\n if (row) {\n row[column.field] = '';\n } else {\n column.filterValue = '';\n this.setFilterFocusOut(column);\n }\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n // invoke when click header checkbox filter\n clickCheckBoxFilter(column: IGridColumn) {\n if (this.editAllRecord) {\n if (\n column.type === EGridColumnType.BOOLEAN\n &&\n column?.filter?.type === 'checkbox' && column.filtering != false\n ) {\n this.rowsData.forEach((row) => {\n if (row[column.field+'_obj']?.action?.disabled !== true && !column.disabled) {\n row[column.field] = column.filterValue;\n }\n });\n }\n }\n this.onCheckBoxFilterClick.emit(column);\n }\n //set header checkbox value for getting all columns on stay admin\n setHeaderCheckBoxValue(value: any) {\n this.isIncludedAllColumns.emit(value);\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(column: any, row: any) {\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if (year && year.length === 4) {\n this.calendarFormat = 'mm/dd/yy';\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\n } else if (year && year.length) {\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n}\n\n\n\n","import { Injectable } from '@angular/core';\nimport {\n EValidator,\n IFormField,\n EFormControl,\n AddFormField,\n ISetFilter,\n IDropDownRequest,\n IListFilter,\n IReportBtn,\n IDynamicForm,\n} from '../models/form.model';\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\nimport { HyperlinkService } from '../services/hyperlink.service';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { RequestService } from './request.service';\nimport * as utilities from './utilities.service';\nimport { IDictionary } from '../models/common.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n public fieldFocusedOut:boolean = false;\n constructor(\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) { }\n\n checkValidity(formFields: IFormField[]): boolean {\n let isValid: boolean = true;\n\n formFields.map((item: IFormField) => {\n if (item.validations && !item.disabled) {\n let itemValue = item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object' ? item.value.value : item.value\n // if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\n // item.value = item.value.value;\n // }\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, itemValue, i);\n const valid =\n item.validations && typeof item.label === 'object'\n ? item.label.name\n : item.label;\n if (\n item.validations[i].type == EValidator.REQUIRED &&\n !itemValue &&\n !item.hidden &&\n valid\n ) {\n isValid = itemValue\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MINLENGTH &&\n itemValue.length < item.validations[i].expression\n ) {\n isValid =\n itemValue && itemValue.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MAXLENGTH &&\n itemValue.length > item.validations[i].expression\n ) {\n isValid =\n itemValue && itemValue.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MINIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(itemValue < item.validations[i].expression){\n isValid =\n itemValue && itemValue.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.MAXIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(itemValue > item.validations[i].expression){\n isValid =\n itemValue && itemValue.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.PATTERN &&\n !itemValue.match(item.validations[i].expression)\n ) {\n isValid =\n itemValue && itemValue.match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.NUMERIC &&\n !itemValue.toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n itemValue && itemValue?.toString()?.match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.PHONE &&\n !itemValue.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n itemValue && itemValue.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.DECIMAL &&\n !itemValue?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n itemValue && itemValue.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n itemValue &&\n item.validations[i].type == EValidator.EMAIL &&\n !itemValue.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n itemValue &&\n itemValue.match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n addFormField(fieldInfo: IFormField): IFormField {\n if (!fieldInfo.label) {\n fieldInfo.label = fieldInfo.field;\n }\n const formField: any = {\n label: fieldInfo.label,\n field: fieldInfo.field,\n displayField: fieldInfo.displayField,\n control: fieldInfo.control,\n showOption: fieldInfo.showOption,\n column: fieldInfo.column,\n row: fieldInfo.row,\n minutesInterval: fieldInfo.minutesInterval,\n value: fieldInfo.value,\n format: fieldInfo.format,\n hidden: fieldInfo.hidden,\n permissions: fieldInfo.permissions,\n validations: fieldInfo.validations,\n id: fieldInfo.id,\n hyperlink: fieldInfo.hyperlink,\n data: fieldInfo.data,\n lookupControl: fieldInfo.lookupControl,\n componentControl: fieldInfo.componentControl,\n optionLabel: fieldInfo.optionLabel,\n optionValue: fieldInfo.optionValue,\n saveAsString: fieldInfo.saveAsString,\n showAllValue: fieldInfo.showAllValue,\n onClick: fieldInfo.onClick,\n onReturn: fieldInfo.onReturn,\n onFocusOut: fieldInfo.onFocusOut,\n onChange: fieldInfo.onChange,\n tables: fieldInfo.tables,\n disabled: fieldInfo.disabled,\n disabledText: fieldInfo.disabledText,\n timeOnly: fieldInfo.timeOnly,\n isPassword: fieldInfo.isPassword,\n textType: fieldInfo.textType,\n monthOnly: fieldInfo.monthOnly,\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\n height: fieldInfo.height,\n showBottomBorder: fieldInfo.showBottomBorder,\n allowSearch: fieldInfo.allowSearch,\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\n SetfileTypes: fieldInfo.SetfileTypes,\n icon: fieldInfo.icon,\n color: fieldInfo.color,\n card: fieldInfo.card,\n uniqueKey: fieldInfo.uniqueKey,\n azureContainer: fieldInfo.azureContainer,\n class: fieldInfo.class\n };\n\n return formField;\n }\n\n addCheckbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CHECKBOX;\n return this.addFormField(fieldInfo);\n }\n\n addTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n fieldInfo.disabled = true;\n fieldInfo.showBottomBorder = true;\n return this.addFormField(fieldInfo);\n }\n\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NUMERIC;\n return this.addFormField(fieldInfo);\n }\n\n addSpaceField(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.SPACER;\n return this.addFormField(fieldInfo);\n }\n\n addNewLine(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.BREAK_LINE;\n return this.addFormField(fieldInfo);\n }\n\n addTextArea(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.TEXTAREA;\n return this.addFormField(fieldInfo);\n }\n \n // Adding Report button for DynamicForm\n addReportBtn(fieldInfo: IReportBtn) {\n fieldInfo.control = EFormControl.REPORT;\n return fieldInfo;\n }\n\n addNoteField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NOTE_FIELD;\n return this.addFormField(fieldInfo);\n }\n\n addHyperlink(fieldInfo: AddFormField) {\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\n fieldInfo.control = EFormControl.HYPERLINK;\n return this.addFormField(fieldInfo);\n }else{return this.hyperlinkService.buildUrl(\n fieldInfo?.hyperlink?.linkId,\n fieldInfo.hyperlink?.params\n ).then((res: any) => {\n const params = fieldInfo?.hyperlink?.params;\n const link = res;\n if(res && params){\n Object.keys(params).forEach((key)=>{\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\n res = res.replace('{{'+key+'}}', params[key])\n } \n })\n }\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\n fieldInfo.hyperlink.link = res;\n }\n fieldInfo.control = EFormControl.HYPERLINK;\n let obj: any = this.addFormField(fieldInfo);\n obj['orignalLink'] = link;\n return obj;\n });\n }\n}\n\n addCalendar(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CALENDAR;\n return this.addFormField(fieldInfo);\n }\n\n // add AutoComplete for Form\n addAutoComplete(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\n return this.addFormField(fieldInfo);\n }\n\n // Search AutoComplete Data for form\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord: boolean = response.records.some((record: any)=> record[formField.displayField] && record[formField.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[formField.displayField]: search});\n }\n }\n formField.data = [...response.records];\n });\n }\n\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\n fieldInfo.control = EFormControl.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\n }\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\n return this.dropdownService\n .setDropDownList(\n uniqueKey,\n valueProp,\n labelProp,\n filters\n )\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addFormField(fieldInfo);\n })\n .catch((error: any) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n addLookUp(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDialog(fieldInfo: AddFormField): IFormField {\n return this.addLookUp(fieldInfo);\n }\n\n addComponent(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.COMPONENT;\n return this.addFormField(fieldInfo);\n }\n\n addHeader(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SECTION_HEADER;\n fieldInfo.class = 'form-header';\n return this.addFormField(fieldInfo);\n }\n\n addMultiSelect(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.MULTISELECT;\n return this.addFormField(fieldInfo);\n }\n\n addFileUpload(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.FILE_UPLOAD;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayFile(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.DISPLAY_FILE;\n return this.addFormField(fieldInfo);\n }\n\n // Adding OnClick Button Function for DynamicForm\n addButton(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.ADD_BUTTON;\n return this.addFormField(fieldInfo);\n }\n\n // Adding Switch Function for DynamicForm\n addSwitch(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SWITCH;\n return this.addFormField(fieldInfo);\n }\n\n // start add new card functionality\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\n fieldInfo.control = EFormControl.CARD;\n if (cardData && cardData.uniqueKey) {\n if(cardData.sorts?.length > 0){\n cardData.sorts.forEach((res) =>{\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\n });\n } \n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\n return this.getCardList(uniqueKey, filters, sorts)\n .then((res: any) => {\n fieldInfo.card.data = res.records;\n return this.addFormField(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n // load component on form\n setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\n formSections?.forEach((section)=>{\n section.fields.forEach((field:any)=>{\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\n let keys = Object.keys(value);\n keys.forEach((key)=>{\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\n });\n utilities.changeDynamicFormState(id, field.componentControl.data);\n };\n });\n });\n }\n\n // set formfield value\n setFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n value: any,\n displayText: string = ''\n ) {\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (displayText && displayText.length > 0) {\n formField.value = { text: displayText, value: value };\n } else {\n formField.value = value;\n }\n }\n });\n });\n }\n\n // set formfield property\n setFormFieldProp(\n { formSections }: IDynamicForm,\n field: string,\n props: IDictionary[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n if (\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\n ) {\n return props.map((prop: any) => {\n if (formField.hasOwnProperty(prop.name)) {\n if(prop.name === 'label' && typeof formField.label === 'object' && !prop.override){\n return (formField[prop.name].name = prop.value);\n }else{\n return (formField[prop.name] = prop.value);\n }\n }\n else{\n return (formField[prop.name] = prop.value);\n \n }\n });\n }\n });\n });\n }\n\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\n return new Promise((resolve, reject) => {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\n .subscribe(\n (response: any) => {\n if (response) {\n return resolve(response);\n } else {\n return resolve([]);\n }\n },\n ({ error }: any) => {\n reject(error);\n }\n );\n });\n }\n // End add new card functionality\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class NotesComponent implements OnInit {\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) { }\n\n public note: string = '';\n public disabledText: boolean = false;\n\n ngOnInit(): void {\n this.note = this.config.data.value ?? '';\n this.disabledText = this.config.data.disabledText;\n }\n\n handleCancel() {\n this.ref.close();\n }\n\n handleOk() {\n this.ref.close(this.note);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\nimport { FormService } from '../../../services/form.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { NotesComponent } from '../../shared/notes/notes.component';\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard, IFormButton } from '../../../models/form.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { IDictionary } from '../../../models/common.model';\nimport { Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DatePipe } from '@angular/common';\nimport { GridService } from '../../../services/grid.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'se-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit {\n @Input() stickyActions: boolean = true;\n @Input() form: IDynamicForm;\n @Input() hideSaveButton: boolean = false;\n @Input() hideCancelButton: boolean = false;\n @Input() formButtons: IFormButton[] = [];\n @Input() loading: boolean = false;\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() sectionClickedEvent: EventEmitter<IFormSection> =\n new EventEmitter();\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer: QueryList<ViewContainerRef>;\n\n dynamicCase = EFormControl;\n permissionType = EPermissionType;\n roles: string[] = [];\n isFormDisabled: boolean = false;\n isFormHidden: boolean = false;\n componentsList: IDictionary[] = [];\n fileUploadUrls: any;\n showfileUploadError: boolean = false;\n cardList: IDynamicCard;\n calenderPreviousValue: string = '';\n defaultDate: string = '';\n lookupFocusOut: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setCardData: boolean = false;\n subscription: Subscription;\n\n // apply checked/unChecked prop for CheckBox of the Form\n checked: boolean = true;\n unChecked: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private formService: FormService,\n private alertService: AlertService,\n private sanitizer: DomSanitizer,\n public dialogService: DialogService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private el: ElementRef,\n private datePipe: DatePipe,\n private gridService: GridService,\n private pageLoggerService: PageLoggerService\n ) {}\n\n ngOnInit(): void {}\n\n // browser tab close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event: any) {\n if (this.formService.fieldFocusedOut || this.gridService.columnFocusedOut) {\n return false;\n } else {\n return true;\n }\n }\n\n ngOnChanges() {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n // start cardList reference break functionality\n let formValues = { ...this.form };\n formValues.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field.isPassword) {\n field.textType = 'password';\n }\n // convert string time into date\n if (field?.control === EFormControl.CALENDAR && field?.onChange) {\n field['previousValue'] = field?.value;\n }\n if (\n field?.control === EFormControl.CALENDAR &&\n field?.timeOnly &&\n (field?.value?.toString().includes('AM') ||\n field?.value?.toString().includes('PM'))\n ) {\n field.value = utilities.setTimeInDate(field.value);\n }\n if (\n field?.control === EFormControl.AUTOCOMPLETE &&\n field?.value &&\n field?.value?.length > 0\n ) {\n const value = field?.value.map(\n (value: any) => value[field?.displayField]\n );\n if (\n value &&\n (value.toString()?.includes(';') ||\n value.toString()?.includes(','))\n ) {\n field.value = value\n .toString()\n .replaceAll(',', ';')\n ?.split(';')\n ?.map((val: any) => ({ [field?.displayField]: val }));\n }\n }\n // convert the multiSelect string value in array\n if (\n field?.control === EFormControl.MULTISELECT &&\n field.value &&\n !Array.isArray(field.value)\n ) {\n if (field.value?.toString()?.includes(',')) {\n field.value = field.value?.toString()?.split(',');\n } else {\n field.value = [field.value];\n }\n }\n if (field?.control === EFormControl.CARD) {\n this.form = {};\n setTimeout(() => {\n field?.card?.data?.forEach((x: any) => {\n if (\n field?.card?.formSections &&\n field?.card?.formSections?.length > 0\n ) {\n x.dynamicForm = {\n formSections: JSON.parse(\n JSON.stringify(field?.card?.formSections)\n ),\n };\n }\n });\n this.form = formValues;\n }, 500);\n }\n // End cardList reference break functionality\n if (field?.control === EFormControl.CHECKBOX) {\n field.value =\n field?.value?.toString()?.toLowerCase() === 'true' ||\n field?.value?.toString()?.toLowerCase() === 'y' ||\n field?.value?.toString() === '1'\n ? true\n : false;\n }\n });\n }\n });\n // apply user role permissions on form\n this.roles = this.authService.getUserRoles();\n this.applyUserPermissions();\n this.applyRequiredFieldValidation();\n this.removeWhiteSpaces();\n this.setHyperlinkComponentRoute();\n setTimeout(() => {\n this.setCalanderWidth();\n }, 3000);\n }\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(formField: IFormField) {\n document\n .getElementsByClassName(formField.field)[0]\n ?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if (year?.length === 4) {\n this.calendarFormat = 'mm/dd/yy';\n formField.value = new Date(val.target.value).toLocaleDateString(\n 'en-US'\n );\n } else if (year?.length) {\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n\n // set percent and decimal values\n setnumericvalues() {\n this.form?.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field?.format?.type === 'percent') {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value * 100)?.toString()\n ).toFixed(digitsInfo);\n } else {\n field.value = field.value * 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n } else if (field?.format?.type === 'decimal') {\n field.value = parseFloat(field.value).toFixed(\n digitsInfo ? digitsInfo : 2\n );\n }\n }\n }\n });\n }\n });\n }\n\n /**\n * Checks if form has any field with dynamic component;\n * Creates component instance using componentFactoryResolver\n * Injects component through viewRef.createComponent()\n * Passes data to component\n * Subscribes to the events passed to the components\n * Finally forces Angular to detech changes\n */\n loadDynamicComponents() {\n this.componentsList = [];\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field: any, fieldIndex) => {\n if (field.control === EFormControl.COMPONENT) {\n const viewRef: any = this.dynamicComponentContainer.find(\n (x) =>\n x.element.nativeElement.id == `${formSection.name}-${fieldIndex}`\n );\n const {\n component: Component,\n data,\n handlers,\n } = field.componentControl;\n const componentFactory: ComponentFactory<any> =\n this.componentFactoryResolver.resolveComponentFactory(Component);\n // Passing data to component\n const componentRef = viewRef?.createComponent(componentFactory);\n if (componentRef) {\n Object.entries(data ?? {}).forEach(([key, value]) => {\n componentRef.instance[key] = value;\n });\n this.componentsList.push({\n name: field.componentControl?.id,\n value: componentRef,\n });\n // Subscribes to the events passed to the components\n if (handlers) {\n Object.entries(handlers).forEach(([event, handler]: any) => {\n (componentRef.instance[event] as EventEmitter<any>)?.subscribe(\n (response) => {\n handler(response);\n }\n );\n });\n }\n }\n // invoke change detection\n this.cdr.detectChanges();\n }\n });\n });\n }\n\n //invoke when file upload OR delete a file\n fileOnchangeEvent() {\n this.setCardData = !this.setCardData;\n // let cardControl: boolean = false;\n // this.form?.formSections?.forEach((formSection)=> {\n // if(formSection?.fields?.some((formField: any)=> formField?.control === EFormControl.CARD)){\n // cardControl = true;\n // }\n // });\n // setTimeout(() => {\n // if(cardControl){\n // this.loadDynamicComponents();\n // }\n // }, 3000);\n }\n\n ngAfterViewInit() {\n // load dynamic components if exist in form\n setTimeout(() => {\n this.setnumericvalues();\n this.onDynamicFormStateChange();\n this.loadDynamicComponents();\n this.setCardResponseId();\n }, 500);\n }\n\n setCardResponseId() {\n utilities.onDynamicCardStateChange().subscribe((res) => {\n this.setCardIds(res.data);\n });\n }\n\n setCardIds(res) {\n res.records = this.gridService.setDataFields(res.records);\n res.records?.forEach((record: any, recordIndex: any) => {\n const matchCard = res.cardsInfo?.find(\n (info, cardIndex) =>\n recordIndex === cardIndex && record[res.fieldName?.toLowerCase()]\n );\n if (matchCard && Object.keys(matchCard)?.length > 0) {\n matchCard[res.fieldName] = record[res.fieldName?.toLowerCase()];\n }\n });\n if (this.form?.formSections?.length > 0) {\n this.form?.formSections.forEach((formSection) => {\n const formField = formSection.fields?.find(\n (field) => field.control === EFormControl.CARD\n );\n if (formField) {\n if (res.cardsInfo?.length > 0) {\n res.cardsInfo?.forEach((cardId) => {\n cardId.id = null;\n });\n }\n formField.card.data = res.cardsInfo;\n }\n });\n }\n this.setCardData = !this.setCardData;\n }\n\n removeWhiteSpaces() {\n this.form?.formSections?.forEach((section) => {\n if (section.class) section.class = section.class.replace(/\\s/g, '');\n });\n }\n\n setHyperlinkComponentRoute() {\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field) => {\n if (\n field.control === EFormControl.HYPERLINK &&\n field.hyperlink?.component\n ) {\n this.router.resetConfig([\n {\n path: 'hyperlink' + field.label,\n component: field.hyperlink.component,\n },\n ...this.router.config,\n ]);\n }\n });\n });\n }\n\n browserTabCloseEvent(event: boolean = false) {\n this.formService.fieldFocusedOut = event;\n }\n\n ngOnDestroy(){\n this.subscription?.unsubscribe();\n }\n\n /**\n * Listens any change in Dynamic Form component State\n */\n onDynamicFormStateChange() {\n this.subscription = utilities.onDynamicFormStateChange().subscribe((response) => {\n if (response.id && response.data) {\n const componentRefObj = this.componentsList.find(\n (x) => x.name === response.id\n );\n if (componentRefObj) {\n Object.entries(response.data ?? {}).forEach(([key, value]) => {\n componentRefObj.value.instance[key] = value;\n });\n componentRefObj.value.instance.ngOnInit();\n }\n }\n });\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.form && this.form.formSections) {\n let totalFields: number = 0;\n let disabledFields: number = 0;\n let hiddenFields: number = 0;\n\n this.form.formSections.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField) => {\n let permissions: any = formField.permissions;\n let sectionPermissions: any = [];\n if (!permissions) sectionPermissions = formSection.permissions;\n if (!permissions) permissions = this.form.permissions;\n let hasValidEditPermission = false;\n\n if (sectionPermissions && sectionPermissions.length > 0) {\n sectionPermissions.forEach((permission: any) => {\n let isValid: boolean = false;\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formSection.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n formField.disabled = false;\n formSection.hidden = false;\n } else {\n formSection.accordionDisabled = true;\n formSection.disabled = true;\n formField.disabled = true;\n }\n }\n });\n });\n } else if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n formField.disabled = false;\n formField.hidden = false;\n } else {\n if (\n formField.permissions &&\n formField.permissions.length > 0\n ) {\n formSection.disabled = false;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n } else {\n formSection.disabled = true;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n }\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (formField.disabled) {\n disabledFields++;\n }\n\n if (formField.hidden) {\n hiddenFields++;\n }\n });\n }\n });\n\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n /**\n * Open IFrame in hyperlink Control\n */\n sectionDisabled(formSection: IFormSection) {\n if (formSection.disabled) {\n formSection.fields.map((field: IFormField) => {\n field.disabled = true;\n });\n return formSection;\n } else {\n return formSection;\n }\n }\n\n loadIFrame(formField: IFormField) {\n this.handleClickEvent(formField);\n const ref = this.dialogService.open(IframeComponent, {\n header: 'Hyperlink',\n width: formField.hyperlink?.width ? formField.hyperlink.width : '90%',\n height: formField.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.hyperlink?.link, iFrameId: formField.label },\n });\n utilities.draggableDialog(formField?.field);\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n\n /**\n * open Dialog in hyperlink Control\n */\n hyperlinkDialog(formField: IFormField) {\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\n var value = formField.hyperlink.params;\n window.open('hyperlink' + formField.label);\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\n this.router.navigate(['hyperlink' + formField.label], {\n queryParams: formField.hyperlink.params,\n });\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\n this.onClickEvent(formField);\n const dialog = this.dialogService.open(formField.hyperlink.component, {\n header: formField.hyperlink.data?.header\n ? formField.hyperlink.data?.header\n : '',\n width: formField.hyperlink.width ? formField.hyperlink.width : '',\n style: formField.hyperlink.width?'': {'max-width':'fit-content'},\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\n data: formField.hyperlink.params \n });\n const componentName = formField.hyperlink?.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n componentName\n );\n }\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n dialog.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n }\n\n /**\n * open Iframe on Label\n */\n loadLabelControlIFrame(formField: any) {\n const ref = this.dialogService.open(IframeComponent, {\n header: formField.label.name,\n width: formField.label.labelControl.hyperlink.width\n ? formField.hyperlink.width\n : '90%',\n height: formField.label.labelControl.hyperlink?.height\n ? formField.hyperlink.height\n : '80%',\n data: {\n value: formField.label.labelControl.hyperlink?.link\n ? formField.label.labelControl.hyperlink.link\n : '',\n iFrameId: formField.label.name,\n },\n });\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n 'IframeComponent'\n );\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n if (formField && formField.onClick) {\n formField.onClick();\n }\n }\n\n /**\n * find the required field in form\n */\n applyRequiredFieldValidation() {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n this.form.formSections.forEach((section) => {\n section.fields.forEach((field) => {\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((valid) => {\n if (valid.type === EValidator.REQUIRED) {\n field.requiredField = true;\n }\n });\n }\n });\n });\n }\n }\n\n setFileUrls(fileUrls: any) {\n if (fileUrls && fileUrls.length > 0) {\n this.fileUploadUrls = fileUrls;\n this.showfileUploadError = false;\n }\n }\n\n onSaveForm() {\n let validity = true;\n let errorMessageDetails = '';\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n if (!this.formService.checkValidity(formSection.fields)) {\n formSection.fields?.forEach((formField: any) => {\n if (formField.errorMessage) {\n errorMessageDetails = errorMessageDetails\n ? errorMessageDetails + ' , ' + formField.errorMessage\n : formField.errorMessage;\n }\n });\n let field = formSection.fields.some(\n (field) => field.requiredField && field.errorMessage && !field.value\n );\n if (validity && field) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n validity = false;\n }\n\n formSection.fields.forEach((field: any) => {\n // set uploadFile URL in FormField in case of FILE_UPLOAD\n if (field.control === EFormControl.FILE_UPLOAD) {\n field.value = this.fileUploadUrls;\n\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((x: any) => {\n if (x.type === EValidator.REQUIRED && !field.value) {\n this.showfileUploadError = true;\n }\n });\n }\n }\n\n if (field.control === EFormControl.CARD) {\n if (field.card && field.card.data?.length > 0) {\n let selectedData = field.card.data.filter(\n (x: any) => x.selectedCard && x.selectedCard.length > 0\n );\n if (selectedData && selectedData.length > 0) {\n field.card.data = selectedData;\n }\n }\n }\n });\n }\n });\n if (validity) {\n // Save grid on formSave Button\n const saveAllGrid = document.getElementById('saveAllGridValues');\n const getBtns: any =\n this.el?.nativeElement?.getElementsByClassName('saveRow');\n let customComponent: boolean = false;\n let tempValue: any = [];\n // set value as 1 or 0 in case of checkbox\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields && validity) {\n formSection.fields.forEach((field: any) => {\n if (field.value === '' || field.value === undefined) {\n field.value = null;\n }\n //convert date into time as string\n if (\n field.control === EFormControl.CALENDAR &&\n field.timeOnly &&\n field.saveAsString &&\n !field.value?.toString()?.includes('AM') &&\n !field.value?.toString()?.includes('PM')\n ) {\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\n }\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field?.format?.type === 'percent') {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value / 100)?.toString()\n ).toFixed(digitsInfo);\n console.log('new value', field.value)\n } else {\n field.value = field.value / 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n }\n }\n }\n\n // set value of autoComplete as strings\n if (\n field.control === EFormControl.AUTOCOMPLETE &&\n !field.showAllValue &&\n field.value &&\n field.value.length > 0\n ) {\n const value = field.value.map(\n (value: any) => value[field.displayField]\n );\n if (\n value &&\n (value.toString()?.includes(';') ||\n value.toString()?.includes(','))\n ) {\n tempValue = value;\n field.value = value.toString().replaceAll(',', ';');\n }\n }\n // convert multiSelect array into string\n if (\n field.control === EFormControl.MULTISELECT &&\n field.value &&\n Array.isArray(field.value) &&\n field.saveAsString !== false\n ) {\n field.value = field.value?.toString();\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value ? 1 : 0;\n }\n // Save grid on formSave Button\n if (field.control === EFormControl.COMPONENT && !customComponent) {\n customComponent = true;\n if (saveAllGrid) {\n saveAllGrid.click();\n } else if (getBtns && getBtns.length > 0) {\n for (let btn of getBtns) {\n btn?.click();\n }\n }\n }\n });\n }\n });\n this.browserTabCloseEvent(false);\n setTimeout(\n () => {\n this.saveForm.emit(this.form.formSections);\n },\n saveAllGrid ? 80 : 0\n );\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (\n field.control === EFormControl.AUTOCOMPLETE &&\n !field.showAllValue\n ) {\n field.value = tempValue\n .toString()\n .replaceAll(',', ';')\n ?.split(';')\n ?.map((val: any) => ({ [field.displayField]: val }));\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value === 1 ? true : false;\n }\n if (field?.format?.type === 'percent') {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field.value) {\n if (field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat(\n (field.value * 100)?.toString()\n ).toFixed(digitsInfo);\n } else {\n field.value = field.value * 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n }\n \n }\n });\n }\n });\n }\n }\n\n onCancelForm() {\n if (this.formService.fieldFocusedOut || this.gridService.columnFocusedOut) {\n this.alertService\n .confirm({\n key: 'cancelButton',\n message: 'You have unsaved changes. Would you like to continue?',\n })\n .then((res) => {\n if (res[0].detail === 'Yes') {\n this.browserTabCloseEvent(false);\n this.gridService.columnFocusedOut = false;\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n });\n } else {\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n }\n\n lookupClearValue(formField: IFormField) {\n if (formField.value) {\n formField.value = '';\n this.browserTabCloseEvent(true);\n }\n if (formField.onChange) {\n formField.onChange(formField);\n }\n this.formService.checkValidity([formField]);\n }\n\n /**\n * set calender width\n */\n setCalanderWidth() {\n const calanderElement = document.querySelectorAll('.p-calendar');\n let form: any = document.querySelector('form');\n let width = form?.clientWidth;\n calanderElement?.forEach((calander: any) => {\n const calanderOfsetLeft = calander.offsetLeft;\n if (calanderOfsetLeft <= width / 2) {\n calander.classList.add('open-right-side');\n }\n });\n }\n\n /**\n * set the dynamic dialog data\n */\n setDialogData(formField: IFormField, data: any): any {\n if (data && formField) {\n let value: any;\n data = utilities.objConvertToLower(data);\n let selection: string = '';\n if (formField.value && typeof formField.value === 'object') {\n if (\n formField.value &&\n formField.value.text &&\n formField.value.text.toString().trim()\n ) {\n selection = formField.value.text?.toString()?.trim();\n if (formField.displayField) {\n value = formField.value?.value?.toString()?.trim();\n }\n }\n } else if (formField.value && formField.value.toString().trim()) {\n selection = formField.value?.toString()?.trim();\n }\n const componentName = data.component?.name;\n if (componentName) {\n this.pageLoggerService.savePageLoggerInfo(\n this.router.url?.substring(1),\n componentName\n );\n }\n return this.dialogService.open(data.component, {\n ...data.data,\n data: {\n selection: selection,\n field: formField.field,\n value: value,\n valueField: data.data?.valueField,\n ...data.data.data,\n },\n });\n }\n }\n\n tabFocusEvent(formField: any) {\n const className = this.el.nativeElement.querySelector(\n '.' + formField.field\n );\n if (className) {\n className.click();\n }\n }\n\n onClickEvent(formField: IFormField) {\n console.log(formField);\n if (formField.onClick && formField.disabled !== true) {\n formField.onClick(formField);\n }\n }\n\n /**\n * open dialog on lookupControl label\n */\n selectLookupLabel(formField: any) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl\n ) {\n const ref: any = this.setDialogData(\n formField,\n formField.label.labelControl.lookupControl\n );\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (res) {\n formField.value = utilities.setDialogResponse(\n formField,\n formField?.label.labelControl.lookupControl,\n res\n );\n }\n this.onFocusOutEvent(formField);\n if (formField.label.onReturn)\n formField.label.onReturn(formField.value);\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n this.onClickEvent(formField);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(formField: IFormField) {\n if (formField.lookupControl) {\n this.lookupFocusOut = true;\n let value = formField.value;\n const ref = this.setDialogData(formField, formField.lookupControl);\n utilities.draggableDialog(\n formField?.field ? formField?.field : formField?.label\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (formField.field) {\n document.getElementById(formField.field)?.focus();\n }\n if (res) {\n formField.value = utilities.setDialogResponse(\n formField,\n formField.lookupControl,\n res\n );\n this.lookupFocusOut = false;\n if (formField.onReturn) formField.onReturn(formField.value, res);\n }\n this.onFocusOutEvent(formField);\n const formFieldValue =\n typeof formField.value === 'object'\n ? formField.value.text\n : formField.value;\n value = typeof value === 'object' ? value.text : value;\n if (formFieldValue !== value) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.onChange(formField);\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n /**\n * onClick event invoked && open Dialog on lookupControl field/label\n */\n handleClickEvent(formField: IFormField) {\n this.onClickEvent(formField);\n if (formField && formField.lookupControl) {\n this.selectLookupLabel(formField);\n this.selectLookupField(formField);\n }\n }\n\n /**\n * set Calender Date Format && set Date Minute interval\n */\n setCalenderDate(formField: IFormField) {\n if (formField.control === EFormControl.CALENDAR) {\n // convert time into date format\n if (\n formField.timeOnly &&\n (formField.value?.toString().includes('AM') ||\n formField.value?.toString().includes('PM'))\n ) {\n formField.value = utilities.setTimeInDate(formField.value);\n }\n if (\n (formField.showTime || formField.timeOnly) &&\n formField.value &&\n formField.minutesInterval\n ) {\n formField.value = new Date(\n utilities.setMinutesInterval(formField.value)\n );\n } else if (\n (formField.showTime || formField.timeOnly) &&\n !formField.value &&\n formField.minutesInterval\n ) {\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\n }\n this.calenderPreviousValue = formField.value;\n }\n }\n calendarChangeValue(formField: any) {\n if (formField.value !== formField.previousValue) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.previousValue = formField.value;\n formField.onChange(formField);\n }\n }\n }\n\n /**\n * invoked section Clicked event\n */\n clickedSection(section: IFormSection) {\n this.sectionClickedEvent.emit(section);\n }\n\n /**\n * open dialog in Note_Field conrtrol\n */\n handleNoteFieldDialog(formfield: IFormField) {\n const dialogRef = this.dialogService.open(NotesComponent, {\n header: formfield.label as string,\n width: '50%',\n data: {\n value: formfield.value,\n disabledText: formfield.disabledText,\n },\n });\n utilities.draggableDialog(\n formfield?.field ? formfield?.field : formfield?.label\n );\n dialogRef.onClose.subscribe(\n (data: any) => {\n if (data && formfield.onReturn) {\n formfield.onReturn(data);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setClassName(formField: IFormField): string {\n if (formField.hidden) return ' hidden';\n else return '';\n }\n\n autoSearch(event: any, formField: any) {\n if (formField && event) {\n formField.onReturn(event.query, formField);\n }\n }\n\n /**\n * invoked onFocusOut Event\n */\n onFocusOutEvent(formField: IFormField) {\n let record: any = {};\n this.form.formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field) {\n record[formField.field] = formField.value;\n }\n });\n });\n utilities.setHyperlinkParamValue(record, this.form);\n this.formService.checkValidity([formField]);\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\n formField.onFocusOut(formField);\n }\n }\n\n onBackSpaceEvent(formField: IFormField) {\n if (typeof formField.value === 'object') {\n formField.value.text = formField.value.text.substring(\n 0,\n formField.value.text.length - 1\n );\n if (formField.value.text.length === 1) {\n formField.value = undefined;\n this.formService.checkValidity([formField]);\n }\n }\n if (formField.value && formField.value.length === 1) {\n formField.value = undefined;\n this.formService.checkValidity([formField]);\n }\n }\n\n /**\n * clear the dropdown value when click on x\n */\n onClearValue(formField: IFormField, event: any) {\n this.formService.checkValidity([formField]);\n this.onChangeEvent(formField);\n this.dropDownChangeEvent.emit(formField);\n if (!event.value) {\n this.onFocusOutEvent(formField);\n }\n }\n\n clearDropdownValue(formField: any) {\n this.onClickEvent(formField);\n }\n\n /**\n * Invoke onChange Event when Value Changed\n */\n onChangeEvent(formField: IFormField) {\n this.browserTabCloseEvent(true);\n if (formField.onChange) {\n formField.onChange(formField);\n }\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * convert unSafe link into safe link\n */\n sanitizeUrl(url: string) {\n let linkUrl: any = url;\n if (linkUrl) {\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\n }\n return linkUrl;\n }\n\n /**\n * invoke on dynamic buttons click\n */\n onNewButtonClick(button) {\n button.func();\n }\n\n selectedCardClickEvent(data: any) {\n if (\n this.form &&\n this.form.formSections &&\n this.form.formSections.length > 0\n ) {\n this.form.formSections.forEach((section: any) => {\n section.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD) {\n if (field.card && field.card.data?.length > 0) {\n let obj = field.card.data[data.index];\n if (obj) {\n if (obj.selectedCard) {\n delete obj.selectedCard;\n } else {\n obj['selectedCard'] = 'card-active';\n }\n }\n }\n }\n });\n });\n }\n if (data.selectedCard) {\n data['selectedCard'] = '';\n } else {\n data['selectedCard'] = 'card-active';\n }\n }\n\n changePasswordType(formField) {\n if (formField.textType == 'text') {\n formField.textType = 'password';\n } else {\n formField.textType = 'text';\n }\n }\n onLinkClick(link, formSection){\n if(!link.disabled && !formSection.disabled){\n link.onClick();\n }\n }\n}\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ISelectItem } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent implements OnChanges {\n @Input() options: ISelectItem[] = [];\n @Input() value: ISelectItem;\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\n public selectedOption: any;\n\n constructor() { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.options.length) {\n if (this.value) {\n this.selectedOption = changes['value'].currentValue.toString().trim();\n } else {\n this.selectedOption = this.options[0];\n this.valueChange.emit(this.selectedOption.value);\n }\n }\n }\n\n handleValueChange(event: { value: string }) {\n this.valueChange.emit(event.value);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'se-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.css']\n})\nexport class GalleryComponent {\n \n @Input() galleryImage: any;\n @Input() width: string;\n\n responsiveOptions: any[] = [\n {\n breakpoint: '1024px',\n numVisible: 5\n },\n {\n breakpoint: '768px',\n numVisible: 3\n },\n {\n breakpoint: '560px',\n numVisible: 1\n }\n ];\n\n constructor() { }\n}","import { Directive, Input, HostListener } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n selector: '[pAddRow]',\n})\nexport class AddRowDirective {\n @Input() table: Table;\n @Input() newRow: any;\n @Input() id: string;\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n // Insert a new row\n if (this.table && this.table.value) {\n this.table.value.unshift({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n }\n\n // Set the new row in edit mode\n this.table.initRowEdit({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n\n event.preventDefault();\n }\n}\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\n\nexport const MenuFilters: IMenuFilter = {\n [GridFilterControlType.INPUT]: [\n { label: 'Starts with', value: 'startsWith' },\n { label: 'Contains', value: 'contains' },\n { label: 'Not contains', value: 'notContains' },\n { label: 'Ends With', value: 'endsWith' },\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n ],\n [GridFilterControlType.NUMERICINPUT]: [\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n { label: 'Less than', value: 'lt' },\n { label: 'Less than or equal to', value: 'lte' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Greater than or equal to', value: 'gte' },\n ],\n [GridFilterControlType.CALENDAR]: [\n { label: 'Date is', value: 'dateIs' },\n { label: 'Date is not', value: 'dateIsNot' },\n { label: 'Date is before', value: 'dateBefore' },\n { label: 'Date is after', value: 'dateAfter' },\n ],\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\nimport { MenuFilters } from '../../base/grid/grid.constant';\n\n@Component({\n selector: 'se-filter-menu',\n templateUrl: './filter-menu.component.html',\n styleUrls: ['./filter-menu.component.scss'],\n})\nexport class AppFilterMenuComponent implements OnInit {\n public isMenuOpen: boolean = false;\n public filterOptions: ISelectItem[] = [];\n\n @Input() globalFilter: IGlobalFilter;\n constructor() { }\n\n ngOnInit(): void {\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\n }\n\n toggleMenu() {\n this.isMenuOpen = !this.isMenuOpen;\n }\n\n handleFilterSelection({ value }: ISelectItem) {\n this.isMenuOpen = false;\n this.globalFilter.matchMode = value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { IMenu } from '../../../models/menu.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'se-menu-bar',\n templateUrl: './menu-bar.component.html',\n styleUrls: ['./menu-bar.component.scss'],\n})\nexport class MenuBarComponent implements OnInit {\n @Input() hiddenPanelMenu: boolean = true;\n @Input() toolTip: string;\n // @Input() menuBackColor: string;\n @Input() menuItems: IMenu[];\n @Input() menuFooter: string;\n @Input() menuTitle: string;\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\n public menuBarItems: MenuItem[] = [];\n toggleMenu: boolean = false;\n roles: string[] = [];\n isMenubarHidden: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private cookieService: CookieService,\n public router: Router,\n ) { }\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n const toggleMenu = localStorage.getItem('toggleMenu');\n const cookieValue = this.cookieService.get('toggleMenu'); \n\n if (toggleMenu) {\n this.toggleMenu = JSON.parse(toggleMenu);\n }else if(cookieValue){\n this.toggleMenu = JSON.parse(cookieValue);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions\n this.applyUserPermissions();\n\n this.menuBarItems = this.menuItems.map((x) => ({\n ...x,\n style: x.hidden ? { display: 'none' } : x.style,\n }));\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \n }\n\n clickEvent() {\n this.onClickEvent.emit();\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.menuItems) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.menuItems.forEach((menu) => {\n if (menu.items) {\n menu.items.forEach((item) => {\n let permissions: any = item.permissions;\n if (!permissions) permissions = menu.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.hidden = true;\n }\n } \n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n item.style = { display: 'none' };\n hiddenItems++;\n }\n });\n\n // if all items of menu is hidden then hide menu as well\n menu.hidden =\n menu.items.length === menu.items.filter((x) => x.hidden).length;\n }\n });\n\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n}\n\n","import { Type } from '@angular/core';\nimport { IPermission } from './user-info.model';\n\nexport const ESideBar = {\n LEFT: 'left-sidebar',\n RIGHT: 'right-sidebar',\n};\n\nexport interface ISidebar {\n icon: string;\n label?: string;\n action?: string;\n section: string;\n component?: Type<any>;\n data?: IData;\n onReturn?: (data: any) => any;\n onClick?: (value: any) => void;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n id?: string;\n tooltip?: string\n target?: ESidebarTarget;\n iFrame?: IFrame;\n linkId?:string;\n params?:any;\n}\n\nexport enum ESidebarTarget {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport enum ESidebarAction {\n NAVIGATION = 'navigation',\n OPENDIALOG = 'dialog',\n IFRAME = '_iframe',\n}\n\nexport interface IFrame {\n link?: string;\n width?: string;\n height?: string;\n}\n\nexport interface IData {\n header?: string;\n width?: string;\n height?: string;\n data?: any;\n scrollable?: boolean;\n}\n","import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Injectable, Injector } from '@angular/core';\nimport { IMenu } from '../models/menu.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { IDictionary } from '../models/common.model';\nimport * as utilities from './utilities.service';\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideBarService {\n styleSheetElement:any;\n constructor(\n private injector: Injector,\n private componentFactoryResolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef\n ) { }\n\n /**\n * Checks parent menu and expands it if current route exists in its child menus.\n * @param menuLabel\n * @returns {boolean}\n */\n isMenuExpanded(\n currentRoute: string,\n items: IMenu[],\n menuLabel: string\n ): boolean {\n if (items && items.length) {\n // check currentRoute contains loadDataForEdit or not\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\n let detailPage = '';\n if(currentRoute?.toString()?.includes(\"list\")){\n detailPage = currentRoute.replace('list', 'detail');\n } \n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\n let matchedItems = [];\n if(currentIndex > -1){\n matchedItems = items[currentIndex]?.items;\n }\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \n }\n return false;\n }\n\n setSidebarPropValues(\n sidebar: ISidebar[],\n section: string,\n props: IDictionary[]\n ) {\n sidebar.map((sidebarItem: any) => {\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\n props.map((prop) => {\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\n sidebarItem.data.data = prop.value;\n } else {\n utilities.setPropValue(sidebarItem, prop);\n }\n });\n }\n });\n sidebar=[...sidebar]\n return sidebar\n }\n\n createWindowInstance(obj: any, windowInstance: any) {\n if (windowInstance) {\n // Create a PortalOutlet with the body of the new window document\n const outlet = new DomPortalOutlet(windowInstance.document.body, this.componentFactoryResolver, this.applicationRef, this.injector);\n // Copy stylesheet link from parent window\n this.styleSheetElement = this.getStyleSheetElement();\n windowInstance.document.head.appendChild(this.styleSheetElement);\n windowInstance.document.body.innerText = '';\n this.attachComponentContainer(outlet, obj);\n }\n }\n\n attachComponentContainer(outlet: DomPortalOutlet, obj: any) {\n const containerPortal = new ComponentPortal(obj.component, null);\n const containerRef: ComponentRef<any> = outlet.attach(containerPortal);\n containerRef.instance.config = obj.data;\n }\n\n getStyleSheetElement() {\n const styleSheetElement = document.createElement('link');\n document.querySelectorAll('link').forEach(htmlElement => {\n if (htmlElement.rel === 'stylesheet') {\n const absoluteUrl = new URL(htmlElement.href).href;\n styleSheetElement.rel = 'stylesheet';\n styleSheetElement.href = absoluteUrl;\n }\n });\n return styleSheetElement;\n }\n}\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ESidebarAction, ESidebarTarget, ISidebar } from '../../../models/sidebar.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { HyperlinkService } from '../../../services/hyperlink.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport * as utilities from '../../../services/utilities.service';\nimport { SideBarService } from '../../../services/sidebar.service';\n\n@Component({\n selector: 'se-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n})\nexport class SidebarComponent implements OnInit {\n toggleMenu: boolean = false;\n loadComponentName = '';\n openDialogs: any = [];\n @Input() navHidden: boolean = false;\n @Input() collapseSidebar: boolean = false;\n @Input() menuTitle: string;\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\n if (newSidebarItems) {\n this.sidebarItemsList = newSidebarItems;\n this.initializeSideBar();\n }\n }\n\n public sidebarItemsList: ISidebar[] = [];\n public menuItems: MenuItem[] = [];\n roles: string[] = [];\n isSidebarHidden: boolean = false;\n\n constructor(\n private instance: Renderer2,\n private authService: AuthenticationService,\n public dialogService: DialogService,\n private router: Router,\n private pageLoggerService: PageLoggerService,\n private hyperlinkService: HyperlinkService,\n private sidebarService: SideBarService\n ) { }\n\n ngOnInit(): void {\n if(this.router.url.toString()?.includes('component=')){\n const componentName = this.router.url?.split('component=')[1];\n if(componentName){\n this.loadComponentName = componentName;\n }\n }\n if(this.loadComponentName){\n this.openDynamicComponetonLoad()\n }\n }\n\n openDynamicComponetonLoad (){\n this.sidebarItemsList?.forEach((item)=>{\n if(item.action === ESidebarAction.OPENDIALOG && ESidebarTarget.BLANK && item.component.name === this.loadComponentName){\n this.navigateComponentToNewTab(item, false);\n }\n })\n }\n\n initializeSideBar() {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions\n this.applyUserPermissions();\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\n label: x.label,\n icon: x.icon,\n id: x.id,\n section: x.section,\n expanded: x.expanded,\n action: x.action,\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\n title: this.setMenuTitle(x),\n command: ({ item }) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(x, item);\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\n if(x.target && x.target === ESidebarTarget.BLANK){\n this.navigateComponentToNewTab(x);\n }else{\n this.openDialog(x, item);\n }\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\n this.loadIFrame(x, item);\n } else {\n this.handleActiveItem(item);\n }\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: x.hidden ? 'none' : '',\n },\n onClick: x.onClick,\n onReturn: x.onReturn,\n disabled: x.disabled,\n }));\n }\n //ref link: https://medium.com/@saranya.thangaraj/open-angular-component-in-a-new-tab-without-bootstrapping-the-whole-app-again-e329af460e92\n navigateComponentToNewTab(menu: any, onNewTab: boolean = true) {\n let windowRef = window;\n let winRef: any;\n if(onNewTab){\n winRef = window.open();\n if (winRef.location.href === 'about:blank') {\n if(this.router.url && this.router.url?.toString()?.includes('?')){\n winRef.location.href = this.router.url+'&&component='+menu.component.name;\n }else{\n winRef.location.href = `${this.router.url}?component=${menu.component.name}`;\n }\n }\n }\n // Wait for window instance to be created\n if(onNewTab){\n setTimeout(() => {\n this.sidebarService.createWindowInstance(menu, winRef);\n }, 900);\n }else{\n this.sidebarService.createWindowInstance(menu, windowRef);\n }\n \n }\n\n\n setMenuTitle(x: any): string {\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\n }\n\n setMenuItems(x: any): any {\n return x.items.map((menu: any) => ({\n label: menu.label,\n icon: menu.icon,\n id: menu.id,\n section: menu.section,\n expanded: menu.expanded,\n action: menu.action,\n title: this.setMenuTitle(x),\n command: ({ item }: any) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\n this.loadIFrame(menu, x);\n }\n this.handleActiveItem(item);\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: menu.hidden ? 'none' : '',\n },\n onClick: menu.onClick,\n onReturn: menu.onReturn,\n disabled: menu.disabled,\n }))\n }\n\n loadIFrame(menu: ISidebar, item: any) {\n if (menu) {\n const dialogRef = this.dialogService.open(IframeComponent, {\n header: menu.section,\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n this.handleActiveItem(item);\n utilities.draggableDialog(menu.label)\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.sidebarItemsList) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.sidebarItemsList.forEach((item, index) => {\n let permissions: any = item.permissions;\n let hasValidEditPermission = false;\n\n item.id = index.toString();\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n item.disabled = true;\n } else {\n item.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.disabled = true;\n }\n }\n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n hiddenItems++;\n }\n });\n\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n\n /**\n *\n * @ param menu\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n openDialog(menu: ISidebar, item: any): void {\n const menuData:any = menu.data ? menu.data : menu;\n if(menuData.scrollable == false){\n menuData.styleClass = \"small-model\";\n }else{\n menuData.styleClass = \"sidebar-datepicker\";\n }\n if (menu.component) {\n const dialogRef = this.dialogService.open(menu.component, menuData);\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\n this.openDialogs.push(dialogRef);\n this.handleActiveItem(item);\n\n if (this.openDialogs && this.openDialogs.length > 1) {\n this.openDialogs[0].close();\n this.openDialogs.shift();\n }\n utilities.draggableDialog(menu.label)\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n /**\n *\n * @ param x\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n navigateToSection(x: ISidebar, item: any): void {\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\n this.handleActiveItem(item);\n }\n\n /**\n *\n * @param item\n * Passes the event of the menu\n */\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\n this.menuItems = this.menuItems.map((x) =>\n x.icon === icon && closeDialog\n ? { ...x, styleClass: 'active-icon' }\n : {\n ...x,\n styleClass: '',\n style: {\n borderBottom: '1px solid #e9ecef',\n display: x.style?.display === 'none' ? 'none' : '',\n },\n }\n );\n }\n\n clickedMenu(menu: MenuItem[]) {\n menu.map((item: any) => {\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\n if (\n item.styleClass === 'active-icon' &&\n matchedItem &&\n matchedItem.onClick\n ) {\n this.hyperlinkService\n .addHyperlinks(matchedItem)\n .then((response: any) => {\n if (matchedItem.linkId) {\n this.hyperlinkService.setSidebarLink(\n response,\n this.sidebarItemsList\n );\n } else {\n matchedItem.onClick(item);\n }\n });\n }\n });\n }\n \n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { IHeader } from '../../../models/header.model';\nimport { EFormControl } from '../../../models/form.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'se-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit, OnChanges {\n @Input() headers: IHeader;\n\n dynamicCase = EFormControl;\n roles: string[] = [];\n isHeaderHidden: boolean = false;\n\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\n\n ngOnInit(): void {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions on form\n this.applyUserPermissions();\n }\n\n ngOnChanges(): void {\n if(this.headers && this.headers.fields){\n this.headers.fields.forEach((x) => {\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\n }\n if (x.value?.toString().includes(':') && x.timeOnly) {\n const index = x.value.indexOf(':');\n const time = x.value.substring(index - 2, index + 6);\n x.value = time;\n }\n });\n }\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.headers) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.headers.fields.forEach((headerField) => {\n let permissions: any = headerField.permissions;\n if (!permissions) permissions = this.headers.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n headerField.disabled = true;\n } else {\n headerField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n headerField.disabled = false;\n headerField.hidden = false;\n } else {\n headerField.disabled = true;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (headerField.hidden) {\n hiddenFields++;\n }\n });\n\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n loaderState = new Subject<any>();\n\n constructor() {}\n\n /**\n * Shows loader\n */\n showLoader(isDarkBackground = true) {\n this.loaderState.next({ loading: true, isDarkBackground });\n }\n\n /**\n * Hides loader\n */\n hideLoader() {\n this.loaderState.next({ loading: false });\n }\n\n /**\n * Fires on loader state changed.\n * @returns {Observable<any>}\n */\n onLoaderStateChange(): Observable<any> {\n return this.loaderState.asObservable();\n }\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LoaderService } from '../../../services/loader.service';\n\n@Component({\n selector: 'se-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n isLoading = false;\n isDarkBackground = true;\n loaderSubscription$: Subscription = new Subscription();\n\n constructor(\n public loaderService: LoaderService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loaderSubscription$ = this.loaderService\n .onLoaderStateChange()\n .subscribe((state: any) => {\n this.isLoading = state.loading ? true : false;\n this.isDarkBackground = state.isDarkBackground ? true : false;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy() {\n if (this.loaderSubscription$) {\n this.loaderSubscription$.unsubscribe();\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IFormField } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { RequestService } from '../../../services/request.service';\n@Component({\n selector: 'se-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements OnInit {\n @Input() acceptFileTypes: any;\n @Input() allowMultiple: boolean = false;\n @Input() fields: any;\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {}\n\n uploadFile(files: any) {\n let fileData = new FormData(); \n let chooseFile:boolean = false;\n for (let i = 0; i < files.length; i++) {\n if (files[i]) {\n chooseFile = true;\n fileData.append(files[i].name, files[i]);\n }\n }\n\n if (fileData && chooseFile) {\n if (this.fields && this.fields.uniqueKey?.length > 0) {\n fileData.append('uniqueKey', this.fields?.uniqueKey);\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\n fileData.append('azureContainer', this.fields?.azureContainer);\n }\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\n (data: any) => {\n if (data) {\n this.alertService.success('File Upload Successfully.');\n if (this.fields?.onReturn) {\n this.fields.onReturn(data.results);\n this.uploadFileOnReturn.emit();\n }\n this.fileUrl.emit(data.results);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n if (this.fields.onReturn) {\n this.fields.onReturn(error);\n this.uploadFileOnReturn.emit();\n }\n }\n );\n }\n }\n onClickEvent() {\n if (this.fields && this.fields.onClick) {\n this.fields.onClick();\n }\n } \n}\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { FormService } from '../../../services/form.service';\nimport { RequestService } from '../../../services/request.service';\nimport * as utilities from '../../../services/utilities.service';\n\n@Component({\n selector: 'se-caption',\n templateUrl: './caption.component.html',\n styleUrls: ['./caption.component.scss'],\n})\nexport class CaptionComponent implements OnInit {\n dynamicForm: IDynamicForm;\n id: number;\n caption: string;\n\n constructor(\n private formService: FormService,\n private requestService: RequestService,\n private alertService: AlertService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n ngOnInit(): void {\n if (this.config.data) {\n this.id = this.config.data.id;\n this.caption = this.config.data.caption;\n }\n this.initilizeForm();\n }\n\n initilizeForm() {\n this.dynamicForm = {\n formSections: [\n {\n fields: [\n this.formService.addTextbox({\n field: 'fileCaption',\n label: 'Caption',\n value: this.caption,\n column: 12,\n validations: [{ type: EValidator.REQUIRED }]\n }),\n ],\n },\n ],\n };\n }\n\n saveForm(formFiels: any) {\n this.requestService\n .get<any[], any>('/AzureUpload/UpdateCaption', {\n Id: this.id,\n fileCaption: utilities.getFormFieldValue(\n this.dynamicForm,\n 'fileCaption'\n ),\n })\n .subscribe(\n (response: any) => {\n if (response) {\n this.alertService.success('Caption added successfully.');\n this.ref.close(response);\n }\n },\n ({ error }) => {\n this.ref.close();\n this.alertService.apiError(error);\n }\n );\n }\n cancelForm(event: any) {\n //console.log('CancelForm: ', event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { GridService } from '../../../services/grid.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { ConfirmationService } from 'primeng/api';\n\n@Component({\n selector: 'se-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit {\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\n // @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\n @Input() data: any = [];\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() card: any;\n @Input() setCardData: boolean;\n dynamicForm: IDynamicForm;\n showFiles: boolean = false;\n displayCardInfo: IViewCardProp;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n if (this.card) {\n let { data, formSections, cardInfo }: any = this.card;\n if(cardInfo && Object.keys(cardInfo).length){\n this.displayCardInfo = cardInfo;\n data = this.gridService.setDataFields(data);\n const newArr = [];\n data?.forEach((record)=>{\n if(!Object.keys(record)?.includes('azurecontainerid')){\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\n } else {\n newArr.push(record);\n }\n });\n this.data = newArr;\n } else {\n this.data = this.gridService.setDataFields(data);\n }\n this.dynamicForm = { formSections };\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n this.setCardPropValue('allowDownload');\n this.setCardPropValue('allowDelete');\n this.setCardPropValue('allowEditableCaption');\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\n /** In case of when we are using this component for stand alone then if formSection is exist in\n the this.card and then add in the data array.\n */\n if (this.data) {\n this.data.forEach((x: any) => {\n if (!x.dynamicform) {\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\n }\n utilities.setCardFieldsData(x);\n });\n }\n }\n }\n\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n setCardPropValue(prop:string){\n if(!this.card[prop]?.toString()?.length) {\n this.card[prop]= true;\n }\n }\n\n dragAndDrop(event: any) {\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n event.item?.element?.nativeElement;\n this.card.data = this.data;\n this.card['change'] = true;\n if (this.card && this.card.onSort) {\n this.card.onSort(this.data);\n }\n }\n\n deleteImage(event: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this Image?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex(\n (i) => i.blobfileurl === event.blobfileurl\n );\n let obj = arr[index];\n arr.splice(index, 1);\n this.data = [...arr];\n\n if (this.card && this.card.onDelete) {\n obj = this.replacePropName(obj);\n this.card.onDelete(obj);\n // this.onDeleteCard.emit();\n }\n }\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n replacePropName(cardInfo:any){\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\n const cardProp = {...this.displayCardInfo};\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\n return obj;\n } else {\n return cardInfo;\n }\n }\n\n saveCaption(event: any) {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\n let obj = arr[index];\n if (index !== -1) {\n obj.filecaption = event.caption;\n arr.splice(index, 1, obj);\n this.card.data = arr;\n this.card['change'] = true;\n }\n if (this.card && this.card?.onCaptionSave) {\n obj = this.replacePropName(obj);\n this.card.onCaptionSave(obj);\n }\n }\n }\n\n onClickEvent(data: any, index: number){\n data['index'] = index;\n this.selectedCard.emit(data);\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport { ESelectFileType } from '../../../models/form.model';\n\n@Component({\n selector: 'se-file',\n templateUrl: './file.component.html',\n styleUrls: ['./file.component.scss'],\n})\nexport class fileComponent implements OnInit {\n @Input() url: string = '';\n @Input() caption: string = '';\n @Input() width: string = '';\n @Input() height: string = '200px';\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\n @Input() id: number;\n @Input() name: string = '';\n @Input() type: any;\n @Input() allowDownloadFile: boolean = true;\n @Input() allowEditableCaption: boolean = true;\n @Input() allowDeleteFile: boolean = true;\n editableCaption: boolean = false;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n ngOnInit(): void {\n this.checkFileExtension();\n }\n\n checkFileExtension() {\n switch (this.type) {\n case 'png':\n case 'jpeg':\n case 'jfif':\n case 'jpg': {\n this.type = '.image';\n break;\n }\n case 'xlsx':\n case 'xls':\n case 'xlsm':\n case 'txt': {\n this.type = ESelectFileType.EXCEL;\n break;\n }\n case 'pdf':\n case 'html': {\n this.type = ESelectFileType.PDF;\n break;\n }\n case 'doc':\n case 'docx': {\n this.type = ESelectFileType.DOCUMENT;\n break;\n }\n }\n }\n\n downloadFile(url: string) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n\n captionClickEvent() {\n if (this.allowEditableCaption) {\n this.editableCaption = true;\n }\n }\n\n captionSave(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n if(caption !== null){\n this.caption = caption;\n this.editableCaption = false;\n this.onSaveEvent.emit(obj);\n }\n }\n\n onDeleteFile(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n this.onDeleteEvent.emit(obj);\n }\n\n cancel() {\n this.editableCaption = false;\n }\n}\n","import { Component, Input, OnInit, Optional } from '@angular/core';\nimport { RequestService } from '../../../../../services/request.service';\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { FormService } from '../../../../../services/form.service';\n\n\n@Component({\n selector: 'se-report-filter',\n templateUrl: './report-filter.component.html',\n styleUrls: ['./report-filter.component.scss']\n})\nexport class ReportFilterComponent implements OnInit {\n dynamicForm:IDynamicForm;\n formFields: IFormField[] = [];\n\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private formService:FormService, private alertService: AlertService) { }\n\n ngOnInit(): void {\n this.createDynamicFields();\n \n }\n initializeForm(){\n this.dynamicForm = {\n formSections:[\n {\n fields: [\n ...this.formFields,\n {\n label: 'Download Report',\n control: EFormControl.ADD_BUTTON,\n hidden: this.config?.data?.hideGenerateReportBtn,\n onClick: () => {\n this.downloadReport();\n },\n }\n ]\n }\n ]\n \n }\n }\n createDynamicFields() {\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n this.setParamFieldValue();\n this.initializeForm();\n // set dropdown data based on matched field.\n this.setDropDownData(reportJson);\n },\n (error) => {\n this.initializeForm();\n this.alertService.error(error);\n }\n );\n }\n setParamFieldValue(){\n if(this.config.data && this.config.data.param?.length > 0){\n this.config.data.param.forEach((param: any)=>{\n this.formFields.forEach((field)=>{\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\n if(matchKey && matchKey.length > 0){\n field.value = param[matchKey];\n }\n });\n });\n }\n }\n\n setDropDownData(reportJson: any) {\n reportJson.Parameters?.forEach((record: any) => {\n if(record.isuniquekey){\n this.requestService.get<any[], any>('/Data/Fetch', {\n uniqueKey: record.isuniquekey,\n filters: []\n }).subscribe((response:any)=>{\n this.formService.setFormFieldProp(this.dynamicForm, record.paramname, [\n { name: 'data', value: response.records }, \n ]); \n },(error) => {\n this.alertService.apiError(error);\n })\n }\n });\n }\n getFilters(){\n let filters: any = [];\n this.dynamicForm?.formSections?.forEach((section)=>{\n section.fields?.forEach((field)=>{\n if(field && field.value){\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\n };\n });\n }); \n return filters;\n }\n \n downloadReport(){ \n const filters:any = this.getFilters(); \n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response.body], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n const header = response?.headers?.get('Content-Disposition');\n const fileName = header?.split('filename=')?.[1]?.split(\";\")[0]?.replaceAll(/\\\"/g, '');\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n \n }\n );\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IFormField, EFormControl, IDynamicForm } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { RequestService } from '../../../../../services/request.service';\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\nimport * as utilities from '../../../../../services/utilities.service';\n//import { EFormControl, IDynamicForm } from '@churchillliving/se-ui-toolkit';\n\n\n\n@Component({\n selector: 'se-generate-report-btn',\n templateUrl: './generate-report-btn.component.html',\n styleUrls: ['./generate-report-btn.component.scss']\n})\nexport class GenerateReportBtnComponent implements OnInit {\n @Input() repId: any;\n @Input() label: string;\n @Input() params: any;\n @Input() showDialog: boolean;\n @Input() form: IDynamicForm;\n formFields: IFormField[] = [];\n paramsCopy: any = [];\n constructor(\n public dialogService: DialogService,\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {\n this.params.forEach((p) => {\n this.paramsCopy.push(Object.assign({}, p));\n });\n this.createDynamicFields();\n }\n\n reportClickEvent() {\n this.getFormFieldValues();\n if (\n (this.formFields.some((field) => !field.hidden) &&\n this.showDialog === undefined) ||\n this.showDialog === true\n ) {\n this.dialogService.open(ReportFilterComponent, {\n width: '80%',\n height: '100%',\n header: 'Generate Report',\n data: { Id: this.repId, param: this.params },\n });\n } else {\n this.downloadQuickReport();\n }\n }\n\n createDynamicFields() {\n this.requestService\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\n .subscribe(\n (data: any) => {\n if (data) {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n }\n },\n (error) => {\n this.alertService.error(error);\n }\n );\n }\n\n getFilters() {\n let filters: any[] = [];\n this.formFields.forEach((field) => {\n if (field && field.value?.toString()?.length > 0) {\n filters.push({\n field: field.field,\n matchMode: 'equal',\n operator: 'and',\n value: field.value,\n });\n }\n });\n return filters;\n }\n\n getFormFieldValues() {\n if (this.paramsCopy?.length > 0) {\n this.paramsCopy.forEach((paramCopy) => {\n var key = Object.keys(paramCopy)[0];\n if (paramCopy[key] === '' || !paramCopy[key]) {\n this.form?.formSections?.forEach((section) => {\n section.fields.forEach((field) => {\n if (key.toString().toLowerCase() === field.field?.toLowerCase()) {\n this.params.forEach((origParam) => {\n var origKey = Object.keys(origParam)[0];\n if (origKey == key) {\n //origParam[origKey] = field.value;\n if(field.control==EFormControl.CALENDAR){\n origParam[origKey] = field.value?field.value.toLocaleDateString():null;\n }else{\n origParam[origKey] = field.value;\n }\n }\n });\n }\n });\n });\n } else if (\n paramCopy[key].toString().includes('{') &&\n paramCopy[key].toString().includes('}')\n ) {\n var newValue = paramCopy[key].replace('{', '').replace('}', '');\n this.form?.formSections?.forEach((section) => {\n section.fields.forEach((field) => {\n if (\n newValue.toString().toLowerCase() === field.field?.toLowerCase()\n ) {\n this.params.forEach((origParam) => {\n var origKey = Object.keys(origParam)[0];\n if (origKey == key) {\n if(field.control==EFormControl.CALENDAR){\n origParam[origKey] = field.value?field.value.toLocaleDateString():null;\n }else{\n origParam[origKey] = field.value;\n }\n }\n });\n }\n });\n });\n }\n });\n //console.log('new params', this.params);\n }\n }\n \n downloadQuickReport() {\n let filters: any[] = [];\n if (this.params && this.params.length > 0) {\n this.params.forEach((param) => {\n Object.keys(param).map((key) =>\n filters.push({\n field: key,\n matchMode: 'equal',\n operator: 'and',\n value: param[key],\n })\n );\n });\n } else {\n filters = this.getFilters();\n }\n\n this.requestService\n .download('/Report/Generate', { Id: this.repId, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response.body], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n const header = response?.headers?.get('Content-Disposition');\n const fileName = header\n ?.split('filename=')?.[1]\n ?.split(';')[0]\n ?.replaceAll(/\\\"/g, '');\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n }\n );\n }\n}","import { DatePipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\nimport {\n IGlobalFilter,\n GridFilterControlType,\n EGridColumnType,\n addGlobalFilter,\n EDayRange,\n EFilterValidator,\n} from '../../../models/grid.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { GridService } from '../../../services/grid.service';\n\n@Component({\n selector: 'se-global-filters',\n templateUrl: './global-filters.component.html',\n styleUrls: ['./global-filters.component.scss'],\n})\nexport class SeGlobalFilterComponent implements OnInit {\n @ViewChild('rangeCalendar') datePicker: any;\n @Input() globalFilters: IGlobalFilter[] = [];\n @Input() searchGlobalFilterBtn: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n\n public fiterTypes = GridFilterControlType;\n public columnType = EGridColumnType;\n public showDialog: boolean = false;\n public startDate: Date;\n public endDate: Date;\n\n showInput: boolean = false;\n filter: any = '';\n hideClearFilterBtn: boolean = true;\n calendarFormat:string = 'mm/dd/yy';\n\n constructor(\n public datepipe: DatePipe,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig,\n private gridService: GridService,\n public dialogService: DialogService,\n private alertService: AlertService,\n private el: ElementRef,\n ) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n if(this.config && this.config.data){\n this.showDialog = this.config.data.openDialog;\n if(this.config.data.globalFilters){\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\n }\n \n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n // spliting date range value and assign to value and valueTwo in Date_Range Control\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \n dateRangeFilter?.forEach((dateRange)=>{\n if(dateRange.value && dateRange.valueTwo){\n if(typeof(dateRange.value)==='object'){\n dateRange.value=dateRange.value.toLocaleDateString();\n }\n if(typeof(dateRange.valueTwo)==='object'){\n dateRange.valueTwo=dateRange.valueTwo.toLocaleDateString();\n }\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \n this.setDateRangeFilterValue(dateRange);\n } else if(dateRange.value && !dateRange.valueTwo){\n this.matchSameFields(dateRange.fromField,dateRange.value,'gte');\n } else if(!dateRange.value && dateRange.valueTwo){\n this.matchSameFields(dateRange.fromField,dateRange.valueTwo,'gte');\n }\n })\n // Filtring Numeric Range controls on global filter \n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\n numerRangeFilter.forEach((numericRange) =>{\n if(numericRange){\n this.setNumericRangeValueFrom(numericRange);\n this.setNumericRangeValueTwo(numericRange);\n }\n })\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\n (this.globalFilters.some((filter)=> filter.value))\n ){\n this.applyFilters(false);\n }\n }, 500);\n }\n\n setDateRangeFilterValue(dateRange){\n if(dateRange?.value?.length > 1){\n dateRange.value[0] = new Date(dateRange.value[0]);\n dateRange.value[1] = new Date(dateRange.value[1]);\n this.selectDate(dateRange, false);\n }\n }\n \n // change calendar format on run time if user type date on the calendar field.\n calendarFocusEvent(globalFilter:IGlobalFilter, event?: any){\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\n let year = a?.target?.value?.toString()?.split('/')[2];\n year = year?.toString().split(\" \")[0];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n if(globalFilter.type === GridFilterControlType.CALENDAR){\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\n }\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n let yearValue = event?.target?.value?.toString()?.split('/')[4];\n if((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeValue(globalFilter, true);\n }\n }\n\n checkFilterValidation(removeError:boolean = false):boolean{\n let valid:boolean = false;\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\n valid = true;\n filter.errorMessage = filter.displayText+\" is required\";\n filter.requiredField = true;\n } else {\n filter.errorMessage = '';\n }\n })\n }\n return valid;\n }\n\n ngOnChanges(){\n this.checkFilterValidation();\n this.globalFilters?.forEach((filter)=>{\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\n this.applyFiltersEvent(filter);\n }\n })\n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n const girdClearFilterBtn = document.getElementById(\n 'clearGridFilterValuesButton'\n );\n if(girdClearFilterBtn){\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\n this.hideClearFilterBtn = true;\n }else{\n this.hideClearFilterBtn = false;\n }\n }else{\n this.hideClearFilterBtn = true;\n }\n }\n\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\n if(globalFilter.toField){\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\n }\n if(sendRequest){\n this.applyFilters();\n }\n }\n\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\n if(field){\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\n if(digitInfo){\n value = parseFloat(value)?.toFixed(digitInfo);\n }else{\n value = parseFloat(value)?.toFixed(2);\n }\n }\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\n if(index > -1){\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \n } else {\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\n }\n }\n }\n\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\n if(sendRequest){\n this.applyFilters();\n }\n }\n \n }\n\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\n if(globalFilter.value?.length > 0){\n const fromDateValue = this.datepipe.transform(\n globalFilter.value[0],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n const toDateValue = this.datepipe.transform(\n globalFilter.value[1],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\n }\n }else if(clearValue){\n this.matchSameFields(globalFilter.fromField, null, 'gte');\n this.matchSameFields(globalFilter.toField, null, 'lte');\n }\n }\n\n\n onFocusOutEvent(globalFilter: IGlobalFilter){\n if (globalFilter && globalFilter.onFocusOut) {\n globalFilter.onFocusOut(globalFilter);\n }\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.gridService.applyFilterEvent = false;\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n applyFiltersEvent(globalFilter: IGlobalFilter){\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.gridService.applyFilterEvent = false;\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n /**\n * Apply selected filters\n */\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeFilterValue(globalFilter);\n } \n this.gridService.applyFilterEvent = filterEvent;\n const globalFilters = this.globalFilters.filter((x) => x.field);\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\n if(index > -1){\n globalFilters.splice(index, 1);\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (this.showDialog) {\n this.ref.close(globalFilters);\n } else \n if(!this.checkFilterValidation()){\n this.checkFilterValidation(true);\n this.filtersApplied.emit(globalFilters);\n }\n }\n\n // set By Defualt Calender Range \n setDefualtCalendarRange(check: boolean = true){\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\n setTimeout(() => {\n this.showNext(filter, check);\n }, 100);\n }\n });\n }\n }\n\n showNext(filter: IGlobalFilter, check: boolean = true): string {\n let nextValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n nextValue = this.setDayFilter(filter, true);\n break;\n case EDayRange.MONTH:\n nextValue = this.setMonthFilter(filter, true);\n break;\n case EDayRange.YEAR:\n nextValue = this.setYearFilter(filter, true);\n break;\n default:\n // week\n nextValue = this.setWeekFilter(filter, true);\n break;\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.gridService.applyFilterEvent = check;\n this.filtersApplied.emit(this.globalFilters);\n return nextValue;\n }\n\n showPrevious(filter: IGlobalFilter): string {\n let previousValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n previousValue = this.setDayFilter(filter, false);\n break;\n case EDayRange.MONTH:\n previousValue = this.setMonthFilter(filter, false);\n break;\n case EDayRange.YEAR:\n previousValue = this.setYearFilter(filter, false);\n break;\n default:\n // week\n previousValue = this.setWeekFilter(filter, false);\n break;\n }\n this.gridService.applyFilterEvent = true;\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.filtersApplied.emit(this.globalFilters);\n return previousValue;\n }\n\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\n return (filter.value =\n this.datepipe.transform(\n this.startDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ) +\n '|' +\n this.datepipe.transform(\n this.endDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ));\n }\n\n setDateValue(filter: any) {\n let value: Date;\n if (filter.value) {\n value = new Date(filter.value.split('|')[0]);\n return new Date(value.setMonth(value.getMonth()));\n } else {\n return new Date();\n }\n }\n\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n )\n : currentDate;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() - 1\n )\n : currentDate;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\n : firstDateOfYear;\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\n : firstDateOfYear;\n }\n\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfMonth = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n 1\n );\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 1\n )\n : firstDateOfMonth;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() - 1,\n 1\n )\n : firstDateOfMonth;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 0\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\n let currentDate = this.setDateValue(filter);\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() + weekSeconds)\n : new Date(firstDay.getTime());\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() - weekSeconds)\n : new Date(firstDay.getTime() - weekSeconds);\n }\n\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(globalFilters: IGlobalFilter) { \n this.gridService.setLookUpFilter(globalFilters, this.dialogService, true);\n }\n\n /**\n * Clear all filter values\n */\n clearFilters() {\n this.globalFilters.map((item: any) => (item.value = null));\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\n if(clearGridFilter){\n clearGridFilter.click();\n }\n }\n\n /**\n * Clear values of Date Range Filter\n */\n clearDateRangeValue(filter: any){\n this.setDateRangeValue(filter, true)\n }\n\n /**\n * Close dialog without applying filters\n */\n cancel() {\n this.clearFilters();\n this.ref.close();\n }\n rangeDateclose(globalFilter: any) {\n this.datePicker.hideOverlay();\n this.datePicker.overlayVisible = false;\n this.datePicker.datepickerClick = true;\n const id: any = document.getElementById(globalFilter.displayText);\n id.focus();\n this.datePicker.overlayVisible = false;\n this.datePicker.datepickerClick = true;\n\n }\n\n filterInput() {\n this.showInput = !this.showInput;\n }\n\n /**\n * Focused the calender input\n */\n selectDate(globalFilter: any, focused: boolean = false){\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\n this.setDateRangeValue(globalFilter);\n if(focused ==true){\n this.rangeDateclose(globalFilter); \n }\n }\n if(focused){\n document.getElementById(globalFilter.field)?.focus();\n }\n }\n tabFocusEvent(globalFilter: any) {\n const className = this.el.nativeElement.querySelector(\n '.'+globalFilter.field\n );\n if (className) {\n className.click();\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\nimport { IGlobalFilter } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-filter',\n templateUrl: './filter.component.html',\n})\nexport class SeFilterComponent implements OnInit {\n @Input() globalFilters: IGlobalFilter[];\n @Input() showDialogFilter: boolean = false;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Input() searchGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n\n constructor(public dialogService: DialogService) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void { }\n\n /**\n * Opens the filter dialog\n */\n openFilters() {\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\n header: 'Choose Filters',\n width: '70%',\n styleClass: 'global-filter-visible',\n data: { globalFilters: this.globalFilters, openDialog: true},\n });\n\n // Modal response\n ref.onClose.subscribe((res) => {\n if (res) {\n this.filtersApplied.emit(res);\n }\n });\n }\n\n globalFiltersApplied(event: any){\n this.filtersApplied.emit(event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'se-grid-row-actions',\n templateUrl: './grid-row-actions.component.html',\n styleUrls: ['./grid-row-actions.component.scss']\n})\nexport class GridRowActionsComponent implements OnInit {\n @Input() editing: boolean;\n\n @Input() editRowPermission: boolean;\n\n @Input() deleteRowPermission: boolean;\n\n @Input() hideDeleteBtn: boolean = false;\n\n @Input() hideEditBtn: boolean = false;\n\n @Input() editAllRows: boolean = false;\n\n @Input() row: any;\n\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onRowEditInit(row: any) {\n this.onRowEditInitBtn.emit(row);\n }\n\n deleteRecord(row: any) {\n this.deleteRecordBtn.emit(row);\n }\n\n onRowEditSave(row: any) {\n this.onRowEditSaveBtn.emit(row);\n }\n\n onRowEditCancel(row: any) {\n this.onRowEditCancelBtn.emit(row);\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { GridComponent } from './components/base/grid/grid.component';\nimport { FormComponent } from './components/base/form/form.component';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\nimport { IframeComponent } from './components/base/iframe/iframe.component';\n\n// Library\nimport { TableModule } from 'primeng/table';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TabViewModule } from 'primeng/tabview';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { AddRowDirective } from './directive/add-row.directive';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NotesComponent } from './components/shared/notes/notes.component';\nimport { PanelMenuModule } from 'primeng/panelmenu';\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { RequestService } from './services/request.service';\nimport { Environment } from './models/response.model';\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\nimport { HeaderComponent } from './components/base/header/header.component';\nimport { MenuModule } from 'primeng/menu';\nimport { GalleriaModule } from 'primeng/galleria';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { AccordionModule } from 'primeng/accordion';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { LoaderComponent } from './components/base/loader/loader.component';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\nimport {AvatarModule} from 'primeng/avatar';\nimport { CardModule } from 'primeng/card';\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\nimport { CaptionComponent } from './components/base/caption/caption.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CardComponent } from './components/base/cards/card.component';\nimport { fileComponent } from './components/base/file/file.component';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport { AlertService } from './services/alert.service';\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\nimport { SeFilterComponent } from './components/base/filter/filter.component';\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\n\n\nexport const toasterModuleforRoot = ToastrModule.forRoot();\n\n@NgModule({\n declarations: [\n GridComponent,\n GridRowActionsComponent,\n DropdownComponent,\n AddRowDirective,\n FormComponent,\n NotesComponent,\n AppFilterMenuComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n IframeComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeGlobalFilterComponent,\n SeFilterComponent,\n AlertPopUpComponent\n ],\n\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\n imports: [\n CommonModule,\n TableModule,\n PanelMenuModule,\n MenuModule,\n MultiSelectModule,\n FormsModule,\n BrowserAnimationsModule,\n TabViewModule,\n DropdownModule,\n CalendarModule,\n CheckboxModule,\n ButtonModule,\n ProgressSpinnerModule,\n RippleModule,\n InputTextModule,\n TriStateCheckboxModule,\n InputTextareaModule,\n TooltipModule,\n BrowserModule,\n GalleriaModule,\n AutoCompleteModule,\n AccordionModule,\n ConfirmDialogModule,\n MessagesModule,\n InputNumberModule,\n AvatarModule,\n CardModule,\n DragDropModule,\n InputSwitchModule,\n toasterModuleforRoot\n ],\n exports: [\n GridComponent,\n GridRowActionsComponent,\n FormComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeFilterComponent,\n SeGlobalFilterComponent\n ],\n})\nexport class SEToolkitModule {\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\n return {\n ngModule: SEToolkitModule,\n providers: [\n RequestService,\n {\n provide: 'env',\n useValue: environment\n }\n ]\n };\n }\n}\n","import { EFormControl, IHyperlink } from './form.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IHeader {\n fields: IHeaderField[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface IHeaderField {\n label?: string;\n value?: any;\n control?: EFormControl;\n data?: any[];\n onClick?: () => void;\n class?: string;\n column?: number;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport enum EButtonClass {\n NORMAL = 'p-button-sm',\n SUCCESS = 'p-button-success p-button-sm',\n INFO = 'p-button-info p-button-sm',\n WARNING = 'p-button-warning p-button-sm',\n HELP = 'p-button-help p-button-sm',\n DANGER = 'p-button-danger p-button-sm',\n}\n\nexport interface AddHeaderField {\n control?: EFormControl;\n label?: string;\n value?: string;\n column?: number;\n data?: any;\n class?: string;\n onClick?: (() => void) | any;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport interface IHeaderFormat {\n type: EHeaderFormatType | any;\n formatParams?:IFormatParams\n | IDateFormatParams\n | INumberFormatParams\n | ICurrencyFormatParams;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParams {\n locale?: string;\n}\n\nexport interface IDateFormatParams extends IFormatParams {\n format?: string;\n}\n\nexport interface INumberFormatParams extends IFormatParams {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParams extends INumberFormatParams {\n currency: string;\n}\n\nexport enum EHeaderFormatType {\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}","import { Injectable } from '@angular/core';\nimport { EFormControl } from '../models/form.model';\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderService {\n constructor() {}\n\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\n if (!headerInfo.column) {\n headerInfo.column = 3;\n }\n\n const headerField: IHeaderField = {\n label: headerInfo.label,\n control: headerInfo.control,\n value: headerInfo.value,\n column: headerInfo.column,\n data: headerInfo.data,\n class: headerInfo.class,\n onClick: headerInfo.onClick,\n hyperlink: headerInfo.hyperlink,\n disabled: headerInfo.disabled,\n hidden: headerInfo.hidden,\n permissions: headerInfo.permissions,\n format: headerInfo.format,\n showTime: headerInfo.showTime,\n timeOnly: headerInfo.timeOnly,\n };\n return headerField;\n }\n\n addLabel(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.LABEL;\n return this.addHeaderField(headerInfo);\n }\n \n addDropdown(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.DROPDOWN;\n return this.addHeaderField(headerInfo);\n }\n\n addButton(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.BUTTON;\n return this.addHeaderField(headerInfo);\n }\n\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CHECKBOX;\n return this.addHeaderField(headerInfo);\n }\n\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.HYPERLINK;\n return this.addHeaderField(headerInfo);\n }\n\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CALENDAR;\n return this.addHeaderField(headerInfo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl, IDynamicForm } from '../models/form.model';\nimport { AlertService } from './alert.service';\nimport { RequestService } from './request.service';\nimport * as utilities from '../../lib/services/utilities.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CardService {\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) { }\n\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\n let imageToDelete =\n imageInfo.id && imageInfo.id > 0\n ? { RecordId: imageInfo.id }\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\n (response: any) => {\n this.deleteFile(imageInfo, dynamicForm, cardId);\n if (imageInfo.tables) {\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\n } else {\n this.alertService.success('Image deleted successfully.');\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n deleteImageFromTables(tables: any[], uniqueKey: string) {\n this.requestService\n .get('/Data/BulkDelete', {\n UniqueKey: uniqueKey,\n tables: tables,\n })\n .subscribe(\n (response) => {\n this.alertService.success('Image deleted successfully.');\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n getCardData(formSections: any, id: string): any {\n let arr = {};\n formSections?.forEach((formSection: any) => {\n formSection.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\n }\n });\n });\n return arr;\n }\n\n setFileUploadData(response: any, dynamicForm: any, id: string) {\n if (response) {\n dynamicForm.formSections?.forEach((x: any) => {\n x.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\n field.card?.data?.unshift(...response);\n }\n });\n });\n }\n }\n\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\n const fieldInfo = this.getCardData(\n dynamicForm.formSections,\n id\n );\n let cardData = fieldInfo.data;\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\n\n dynamicForm.formSections?.forEach((section) => {\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\n if (card && card.card) {\n card.card.data = cardData;\n }\n });\n }\n\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\n arr = utilities.setDataFields(arr);\n cardInfo = utilities.objConvertToLower(cardInfo);\n \n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\n if (index > -1) {\n arr.splice(index, 1);\n }\n return arr;\n }\n\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\n utilities.changeDynamicFormState1({records: response.records, cardsInfo: cardsInfo, fieldName: fieldName});\n // response.records?.forEach((record: any, recordIndex: any) => {\n // const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record[fieldName]);\n // if(matchCard && Object.keys(matchCard)?.length > 0){\n // matchCard[fieldName] = record[fieldName];\n // }\n // });\n\n // if(dynamicForm && Object.keys(dynamicForm)?.length){\n // dynamicForm.formSections.forEach((section)=>{\n // const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\n // if(formField){\n // if(cardsInfo?.length > 0){\n // cardsInfo?.forEach((cardId)=>{\n // cardId.id = null;\n // })\n // }\n // formField.card.data = cardsInfo;\n // };\n // });\n // }\n }\n\n}\n","/*\n * Public API Surface of se-ui-toolkit\n */\nexport * from 'primeng/api';\n\n/**\n * Exported Modules\n */\n\nexport * from './lib/se-ui-toolkit.module';\n\n/**\n * Exported Components\n */\nexport * from './lib/components/base/form/form.component';\nexport * from './lib/components/base/grid/grid.component';\nexport * from './lib/components/base/menu-bar/menu-bar.component';\nexport * from './lib/components/base/sidebar/sidebar.component';\nexport * from './lib/components/base/header/header.component';\nexport * from './lib/components/base/image-gallery/image-gallery.component';\nexport * from './lib/components/base/iframe/iframe.component';\nexport * from './lib/components/base/loader/loader.component';\nexport * from './lib/components/base/file-upload/file-upload.component';\nexport * from './lib/components/base/caption/caption.component';\nexport * from './lib/components/base/cards/card.component';\nexport * from './lib/components/base/file/file.component';\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nexport * from './lib/components/shared/global-filters/global-filters.component';\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\nexport * from './lib/components/base/filter/filter.component';\n\n/**\n * Exported Type Definitions\n */\nexport * from './lib/models/form.model';\nexport * from './lib/models/grid.model';\nexport * from './lib/models/response.model';\nexport * from './lib/models/request.model';\nexport * from './lib/models/header.model';\nexport * from './lib/models/sidebar.model';\nexport * from './lib/models/user-info.model';\nexport * from './lib/models/menu.model';\nexport * from './lib/models/common.model';\n\n/**\n * Exported Services\n */\nexport * from './lib/services/alert.service';\nexport * from './lib/services/form.service';\nexport * from './lib/services/grid.service';\nexport * from './lib/services/dropdown.service';\nexport * from './lib/services/page-logger.service';\nexport * from './lib/services/authentication.service';\nexport * from './lib/services/utilities.service';\nexport * from './lib/services/request.service';\nexport * from './lib/services/sidebar.service';\nexport * from './lib/services/hyperlink.service';\nexport * from './lib/services/header.service';\nexport * from './lib/services/loader.service';\nexport * from './lib/services/card.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","utilities.calenderMinMaxValue","utilities.objConvertToLower","utilities.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.currentUrl","utilities.setTimeInDate","utilities.draggableDialog","utilities.autoSetLookupData","utilities.setMinutesInterval","utilities.changeDynamicFormState","utilities.onDynamicCardStateChange","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","utilities.setPropValue","utilities.getFormFieldValue","utilities.setCardFieldsData","utilities.setDataFields","utilities.changeDynamicFormState1"],"mappings":"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"}
|