@churchillliving/se-ui-toolkit 6.53.2 → 6.53.3
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 +3 -1
- package/bundles/churchillliving-se-ui-toolkit.umd.js.map +1 -1
- package/esm2015/lib/components/base/grid/grid.component.js +4 -2
- package/fesm2015/churchillliving-se-ui-toolkit.js +3 -1
- 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/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/sidebar.service.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';\r\nimport { Type } from '@angular/core';\r\nimport { IDropDownRequest, IReportBtn } from './form.model';\r\n\r\nexport interface IGridColumn {\r\n component?: Type<any>;\r\n allowSearch?: boolean;\r\n target?: EGridlink;\r\n header?: string;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n type?: EGridColumnType;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n sorting?: boolean;\r\n filtering?: boolean;\r\n filter?: IGridFilterType;\r\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\r\n data?: any;\r\n style?: string;\r\n permissions?: IPermission[];\r\n value?: any;\r\n tableAlias?: string;\r\n linkId?: string;\r\n params?: {[key: string]: any};\r\n minutesInterval?: number;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n displayText?: string;\r\n disabled?: boolean;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n allowSave?: boolean;\r\n validations?: IGridValidation[];\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n}\r\n\r\nexport interface IGridLookupControl {\r\n component?: any;\r\n data?: IGridLookupData;\r\n}\r\n\r\nexport declare type IGridLookupData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n valueField?: string;\r\n selectedValue?: string;\r\n data?: {[key: string]: any};\r\n}\r\n\r\nexport interface ILookupValue {\r\n text: string;\r\n value: string;\r\n field?:string\r\n}\r\n\r\nexport enum EGridAggregate {\r\n SUM = 'sum',\r\n AVERAGE = 'average',\r\n COUNT = 'count',\r\n}\r\n\r\nexport interface IGridAggregate {\r\n type: EGridAggregate;\r\n caption?: string;\r\n displayField?: string;\r\n aggrValue?:string;\r\n format?: IAggregateFormat;\r\n}\r\nexport interface IAggregateFormat {\r\n type: EAggregateFormat;\r\n digitsInfo?: number;\r\n}\r\n\r\nexport enum EAggregateFormat {\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGridlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n}\r\n\r\nexport interface IGridDataExport {\r\n rows: any[];\r\n headings: string[];\r\n}\r\n\r\nexport interface ISelectItem {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface IGridFilterType {\r\n type?: GridFilterControlType;\r\n data?: ISelectItem[];\r\n tableAlias?: string;\r\n showFilter?: boolean;\r\n}\r\n\r\nexport interface IAlertPopUpBtn {\r\n buttonLabel: string;\r\n buttonClass?: string;\r\n}\r\n\r\nexport interface IAlertPopUp {\r\n message: string;\r\n header?: string;\r\n buttons: IAlertPopUpBtn[];\r\n height?: string;\r\n width?: string;\r\n icon?: string;\r\n}\r\n\r\nexport enum EGridFormatter {\r\n BOOLEAN = 'boolean',\r\n CHAR = 'char',\r\n NUMERIC = 'numeric'\r\n}\r\n\r\nexport enum GridFilterControlType {\r\n INPUT = 'input',\r\n DROPDOWN = 'dropdown',\r\n CHECKBOX = 'checkbox',\r\n CALENDAR = 'calendar',\r\n CALENDAR_RANGE = 'calender_range',\r\n MULTISELECT = 'multi-select',\r\n NUMERICINPUT = 'numeric_input',\r\n NUMERIC_RANGE = 'numeric_range',\r\n DATE_RANGE = 'date_range',\r\n LOOKUP_INPUT = 'lookup_input',\r\n SPACER = 'spacer'\r\n}\r\n\r\nexport enum EDayRange {\r\n DAY = 'Day',\r\n WEEK = 'Week',\r\n MONTH = 'Month',\r\n YEAR = 'Year',\r\n}\r\n\r\nexport enum EGridSortDirection {\r\n ASC = 'asc',\r\n DESC = 'desc',\r\n}\r\n\r\nexport enum EGridColumnType {\r\n LINK = 'link',\r\n IFRAME = 'iframe',\r\n DIALOG = 'dialog',\r\n TEXT = 'text',\r\n NUMERIC = 'numeric',\r\n DATE = 'date',\r\n BOOLEAN = 'boolean',\r\n DROPDOWN = 'dropdown',\r\n LOOKUP_INPUT = 'lookup_input',\r\n ADD_BUTTON = 'add_button',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n MULTISELECT = 'multi-select',\r\n REPORT = 'report'\r\n}\r\n\r\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\r\n displayText?: string;\r\n onFocusOut?: (value: any) => any;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n format?: string | EGridFormatType | EGlobalFilterFormatType;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n validations?: IGridValidation[];\r\n errorMessage?:string;\r\n requiredField?: boolean;\r\n}\r\n\r\nexport interface ILookupControlFilter {\r\n component?: any;\r\n data?: ILookupFilterData;\r\n}\r\n\r\nexport declare type ILookupFilterData = {\r\n header: string;\r\n width?: string;\r\n data: any;\r\n} & {\r\n [key: string]: any;\r\n};\r\n\r\nexport interface IPrimeNgSort {\r\n multisortmeta: { field: string; order: number };\r\n}\r\n\r\nexport interface IPrimeNgFilterItem {\r\n matchMode: string;\r\n operator: string;\r\n value: string | number | boolean | Date | any;\r\n}\r\n\r\nexport interface IPrimeNgFilter {\r\n filteredValue: any[];\r\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\r\n}\r\n\r\nexport interface IGridFilter {\r\n field?: string;\r\n matchMode?: string;\r\n operator?: string;\r\n filtering?: boolean;\r\n value?: any;\r\n valueTwo?: any;\r\n tableAlias?: string;\r\n column?: string;\r\n}\r\n\r\nexport interface IGridSort {\r\n field?: string;\r\n direction?: EGridSortDirection;\r\n priority: number;\r\n tableAlias?: string;\r\n}\r\n\r\nexport class IGridServerSideEvent {\r\n filters?: IGridFilter[];\r\n sorts?: IGridSort[];\r\n page?: number;\r\n pageSize?: number;\r\n}\r\n\r\nexport interface IGridPaginationEvent {\r\n first: number;\r\n rows: number;\r\n}\r\n\r\nexport interface IGridColumnAction {\r\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\r\n tooltip: string;\r\n width?: string;\r\n confirmDialog?: boolean;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport interface IGridRowAction {\r\n title: string;\r\n class?: string;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport enum EGridFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n PERIOD = 'MM/yy',\r\n LONGDATE = 'MM/dd/YY, h:mm a',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGlobalFilterFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n}\r\n\r\nexport enum EGridSelectionType {\r\n SINGLE = 'single',\r\n MULTIPLE = 'multiple',\r\n}\r\n\r\nexport type MenuFilterControls =\r\n | GridFilterControlType.INPUT\r\n | GridFilterControlType.NUMERICINPUT\r\n | GridFilterControlType.CALENDAR;\r\n\r\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\r\n\r\nexport interface addColumn {\r\n target?: EGridlink;\r\n component?: Type<any>;\r\n control?: EGridColumnType;\r\n field?: string;\r\n displayField?: string;\r\n header?: string;\r\n showOption?: boolean;\r\n style?: string;\r\n type?: EGridColumnType;\r\n format?: string | EGridFormatType | IGridFormat;\r\n data?: any;\r\n filtering?: boolean;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n allowSearch?: boolean;\r\n minutesInterval?: number;\r\n sorting?: boolean;\r\n filter?: IGridFilterType;\r\n tableAlias?: string;\r\n linkId?: string;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n params?: {[key: string]: any};\r\n displayText?: string;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n errorMessage?: string;\r\n validations?: IGridValidation[];\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n permissions?: IPermission[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n value?: any;\r\n}\r\n\r\nexport interface addFilterColumn {\r\n control?: GridFilterControlType;\r\n field?: string;\r\n header?: string;\r\n filter?: GridFilterControlType;\r\n filtering?: boolean;\r\n hidden?: boolean;\r\n style?: string;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n format?: string;\r\n tableAlias?: string;\r\n validations?: IGridValidation[] | any;\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n permissions?: IPermission[];\r\n component?: Type<any>;\r\n type?: EGridColumnType;\r\n data?: any;\r\n}\r\n\r\nexport interface IGridValidation {\r\n type: EGridValidator | EFilterValidator;\r\n expression?: any;\r\n}\r\nexport enum EFilterValidator {\r\n REQUIRED = \"required\",\r\n}\r\nexport interface IGridReportBtn extends IReportBtn{\r\n type?: EGridColumnType.REPORT;\r\n}\r\nexport interface IGridRowProp{\r\n propName: EGridRowPropName | string; //IGridColumnPropName;\r\n propValue: any;\r\n field: string;\r\n}\r\n\r\nexport enum EGridRowPropName {\r\n DISPLAYTEXT = 'displayText',\r\n DISABLED = 'disabled',\r\n DISPLAYFIELD = 'displayField',\r\n HIDDEN = 'hidden',\r\n ICON = 'icon',\r\n}\r\n\r\nexport enum EGridValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport interface addGlobalFilter {\r\n field?: string;\r\n validations?: IGridValidation[];\r\n displayText?: string;\r\n type?: GridFilterControlType;\r\n data?: any;\r\n value?: any;\r\n valueTwo?: any;\r\n matchMode?: string;\r\n operator?: string;\r\n tableAlias?: string;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n format?: EGlobalFilterFormatType | IGridFormat | any;\r\n column?: string;\r\n onFocusOut?: (value: any) => any;\r\n filtering?: boolean;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n labelText?: string;\r\n prefix?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n}\r\n\r\nexport interface IGridFormat {\r\n type: EGridFormatType;\r\n formatParams?:\r\n | IGridFormatParam\r\n | IGridDateFormatParam\r\n | IGridNumberFormatParam\r\n | IGridCurrencyFormatParam\r\n | IGridallowcalculateFormatParam;\r\n\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IGridFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IGridDateFormatParam extends IGridFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IGridNumberFormatParam extends IGridFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport interface IGridProp {\r\n name: string;\r\n value: any;\r\n field?: string;\r\n}\r\n\r\nexport interface IGridPropFilter {\r\n field: string;\r\n value: any;\r\n}\r\n\r\nexport interface IGridFilterInfo {\r\n [key:string]:any;\r\n}\r\n","import { Component, OnInit, Optional } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'lib-alert-pop-up',\r\n templateUrl: './alert-pop-up.component.html',\r\n styleUrls: ['./alert-pop-up.component.css']\r\n})\r\nexport class AlertPopUpComponent implements OnInit {\r\n buttons: any[]\r\n message: string;\r\n icon: string;\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef,) { }\r\n\r\n ngOnInit(): void {\r\n if(this.config?.data){\r\n this.message = this.config.data?.alertPopInfo?.message;\r\n this.buttons = this.config.data?.alertPopInfo?.buttons;\r\n this.icon = this.config.data?.alertPopInfo?.icon;\r\n }\r\n }\r\n\r\n clickedBtn(button: any){\r\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\r\n if(closeBtn){\r\n closeBtn?.click();\r\n this.ref.close(button);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\r\nimport { IAlertPopUp, } from '../models/grid.model';\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n \r\n constructor(\r\n private toastr: ToastrService,\r\n public dialogService: DialogService,\r\n private confirmationService: ConfirmationService\r\n ) { }\r\n\r\n success(message: string) {\r\n this.toastr.success(message, \"\", { closeButton: true });\r\n }\r\n\r\n info(message: string) {\r\n this.toastr.info(message, \"\", { closeButton: true });\r\n }\r\n\r\n warning(message: string) {\r\n this.toastr.warning(message, \"\", { closeButton: true });\r\n }\r\n\r\n error(error: string, message?: string) {\r\n this.toastr.error(error, message, { closeButton: true });\r\n }\r\n\r\n apiError(error: any) {\r\n if (typeof error === 'string' || typeof error.error === 'string') {\r\n typeof error.error === 'string' ? this.error(error.error) : this.error(error);\r\n } else if (error && error.error && error.error.errorDetails) {\r\n const [responseError] = error.error.errorDetails;\r\n this.error(responseError.errorMessage);\r\n }\r\n else if(error && error.headers && error.status !== 401) {\r\n this.error('something went wrong during api request');\r\n }\r\n }\r\n\r\n \r\n confirm({\r\n message = \"Are you sure that you want to proceed?\",\r\n header = \"Confirmation\",\r\n icon = \"pi pi-exclamation-triangle\",\r\n key= '',\r\n } = {}): Promise<any> {\r\n return new Promise(resolve => {\r\n this.confirmationService.confirm({\r\n message,\r\n header,\r\n icon,\r\n key,\r\n accept: () => {\r\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\r\n this.confirmationService.close();\r\n }\r\n })\r\n });\r\n }\r\n\r\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\r\n return new Promise(resolve => {\r\n const ref = this.dialogService.open(AlertPopUpComponent, {\r\n styleClass: 'alertPopUp',\r\n header: header,\r\n width: width,\r\n height: height,\r\n data: { alertPopInfo: {message, icon, buttons}},\r\n });\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n resolve(res.buttonLabel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '../models/response.model';\r\nimport { Environment } from '../models/response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestService {\r\n\r\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \r\n }\r\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\r\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\r\n }\r\n\r\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getRequest<T, K>(endpoint: string) {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\r\n }\r\n\r\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\r\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n getCurrentRoute(): any{\r\n let route = window.location.href;\r\n if(route && route.includes('/')){\r\n let currentRoute = route.split('/');\r\n route = currentRoute[currentRoute.length-1];\r\n const source = `?source=${route}`;\r\n return source;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\nimport { ISelectItem } from '../models/grid.model';\r\nimport { GridService } from './grid.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DropdownService {\r\n constructor(\r\n private requestService: RequestService,\r\n ) {}\r\n\r\n /**\r\n * Function to set the values for dropdown\r\n * @param response array of data\r\n * @param valueProp property name for value\r\n * @param labelProp property name for label\r\n */\r\n\r\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\r\n let dropdownvalues: ISelectItem[] = [];\r\n return new Promise((resolve, reject) => {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\r\n if (response) {\r\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\r\n return resolve(dropdownvalues);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n })\r\n });\r\n }\r\n\r\n setDropDown(response: any, valueProp: string, labelProp: string) {\r\n if (valueProp) valueProp = valueProp.toLowerCase();\r\n if (labelProp) labelProp = labelProp.toLowerCase();\r\n let dropdownvalues: ISelectItem[] = [];\r\n if (response.records) {\r\n this.setDataFields(response.records).forEach((record: any) => {\r\n if (\r\n record.hasOwnProperty(valueProp && labelProp) &&\r\n record[valueProp] &&\r\n record[labelProp]\r\n ) {\r\n dropdownvalues.push({\r\n label: record[labelProp].toString().trim(),\r\n value: record[valueProp].toString().trim(),\r\n });\r\n }\r\n });\r\n }\r\n return dropdownvalues;\r\n }\r\n\r\n setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EGridColumnType } from '../models/grid.model';\r\nimport { ISidebar } from '../models/sidebar.model';\r\nimport { RequestService } from './request.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HyperlinkService {\r\n constructor(private requestService: RequestService) { }\r\n\r\n buildUrl(linkIds: any, params: { [key: string]: string }) {\r\n return new Promise((resolve, reject) => {\r\n if (Array.isArray(linkIds)) {\r\n this.requestService\r\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\r\n .subscribe(\r\n (res: any) => {\r\n if (res) {\r\n return resolve(res);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n } else {\r\n this.requestService\r\n .getOne<any, any>('/Link/ByLinkId', linkIds)\r\n .subscribe(\r\n (response) => {\r\n if (response) {\r\n return resolve(this.setUrl(params, response));\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n setUrl(params: { [key: string]: string }, response: any) {\r\n let url: string = response.url;\r\n for (let paramKey in params) {\r\n const lowerKey = paramKey.toLowerCase();\r\n const paramValue = params[paramKey];\r\n if (\r\n url &&\r\n url.search &&\r\n url.search(lowerKey) > 0 &&\r\n paramValue &&\r\n paramValue.length > 0\r\n ) {\r\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n async addHyperlinks(columns: any) {\r\n let linkIds: any[] = [];\r\n let params: any;\r\n if (columns && Array.isArray(columns)) {\r\n columns.forEach((column) => {\r\n if (\r\n (column.type === EGridColumnType.LINK ||\r\n column.type === EGridColumnType.IFRAME||\r\n column.type === EGridColumnType.LOOKUP_INPUT) &&\r\n column.linkId &&\r\n column.params\r\n ) {\r\n linkIds.push(column.linkId);\r\n params = column.params;\r\n }\r\n });\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n } else if (columns.linkId) {\r\n linkIds.push(columns.linkId);\r\n params = columns.params;\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n setSidebarLink(response: any, sidebar: ISidebar[]) {\r\n response.forEach((res: any) => {\r\n sidebar.forEach((item) => {\r\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\r\n item.onClick(res.url);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { IGridSort, ISelectItem } from './grid.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IDynamicForm {\r\n formSections?: IFormSection[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface ILabel {\r\n name: string;\r\n disabled?: boolean;\r\n labelControl?: IFormField;\r\n onReturn?: (value: any) => void;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface IDropDownRequest {\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters?: ISetFilter[]\r\n sorts?:IGridSort[] \r\n}\r\n\r\nexport interface ISetFilter {\r\n field?: string,\r\n value?: any,\r\n matchMode?: string,\r\n operator?: string,\r\n valueField?: string;\r\n}\r\n\r\nexport interface IFormSection {\r\n name?: string;\r\n fields: IFormField[];\r\n icon?: string;\r\n class?: string;\r\n links?: ILabel[];\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n accordionDisabled?: boolean;\r\n showAccordion?: boolean;\r\n expanded?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n}\r\n\r\nexport interface IFormField {\r\n label?: string | ILabel;\r\n class?: string;\r\n card?: IDynamicCard;\r\n control?: EFormControl;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n value?: any | ILookupInputValue;\r\n data?: any[];\r\n validations?: IValidation[];\r\n errorMessage?: string;\r\n minutesInterval?: number;\r\n id?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n componentControl?: IFormComponentField;\r\n column?: number;\r\n row?: number;\r\n hyperlink?: IHyperlink;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?: any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n isvalid?: boolean;\r\n timeOnly?: boolean\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n requiredField?: boolean;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n uniqueKey?: string;\r\n azureContainer?: string;\r\n}\r\n\r\nexport interface IDynamicCard {\r\n id?: number;\r\n name?: string;\r\n data?: any[];\r\n orderByField?: string;\r\n formSections?: IFormSection[];\r\n onSort?: (value: any) => any;\r\n allowDelete?: boolean;\r\n allowDownload?: boolean;\r\n url?: string;\r\n caption?: string;\r\n width?: string;\r\n height?: string;\r\n allowEditableCaption?: boolean;\r\n onCaptionSave?: (value: any) => any;\r\n onDelete?: (value: any) => any;\r\n class?: string;\r\n cardInfo?: IViewCardProp;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\nexport interface IReportBtn{\r\n reportId: number;\r\n control?: EFormControl.REPORT;\r\n params?: any[];\r\n showDialog?: boolean;\r\n}\r\n\r\nexport interface IListFilter {\r\n uniqueKey: string;\r\n filters?: ISetFilter[];\r\n sorts?: IGridSort[];\r\n}\r\n\r\nexport interface IFormComponentField {\r\n component: Type<any>;\r\n id?:string;\r\n data?: {\r\n [key: string]: any;\r\n };\r\n handlers?: {\r\n [key: string]: Function;\r\n };\r\n}\r\n\r\nexport interface ILookupInputValue {\r\n text: any;\r\n value: any;\r\n}\r\n\r\nexport interface ILookupControlField {\r\n component: any;\r\n data: ILookupFieldData;\r\n id?: string;\r\n}\r\n\r\nexport declare type ILookupFieldData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n data?: {[key: string]: any};\r\n valueField?: string;\r\n selectedValue?: string;\r\n} \r\n\r\nexport interface IValidation {\r\n type: EValidator;\r\n expression?: any;\r\n}\r\n\r\nexport enum ESelectFileType {\r\n EXCEL = '.excel',\r\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\r\n DOCUMENT = '.document',\r\n PDF = '.pdf',\r\n MRT = '.mrt',\r\n}\r\n\r\nexport enum EValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport enum EFormControl {\r\n BUTTON = 'button',\r\n LABEL = 'label',\r\n INPUT = 'input',\r\n CHECKBOX = 'checkbox',\r\n DROPDOWN = 'dropdown',\r\n CALENDAR = 'calender',\r\n NUMERIC = 'number',\r\n MULTISELECT = 'multi-select',\r\n TEXTAREA = 'text-area',\r\n HYPERLINK = 'hyperlink',\r\n LOOKUP_INPUT = 'lookup_input',\r\n NOTE_FIELD = 'note_field',\r\n COMPONENT = 'component',\r\n PASSWORD = 'password',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n SPACER = 'spacer',\r\n SECTION_HEADER = 'section_header',\r\n FILE_UPLOAD = 'file_upload',\r\n CARD = 'card',\r\n DISPLAY_FILE = 'display_file',\r\n ADD_BUTTON = 'add_button',\r\n SWITCH = 'switch',\r\n REPORT = 'report'\r\n}\r\n\r\nexport enum EOperator {\r\n AND = 'and',\r\n OR = 'or',\r\n}\r\n\r\nexport enum EMatchMode {\r\n EQUALS = 'equals',\r\n STARTSWITH = 'startsWith',\r\n CONTAINS ='contains',\r\n IN = 'in',\r\n ENDSWITH = 'endsWith',\r\n NOTEQUALS = 'notEquals',\r\n ISNOT = 'isNot',\r\n DATEISNOT = 'dateIsNot',\r\n NOTCONTAINS ='notContains',\r\n LT = 'lt',\r\n BEFORE = 'before',\r\n DATEBEFORE = 'datebefore',\r\n LTE = 'lte',\r\n GT = 'gt',\r\n AFTER = 'after',\r\n DATEAFTER = 'dateAfter',\r\n GTE = 'gte',\r\n}\r\n\r\nexport interface IFormat {\r\n type: EFormatType;\r\n formatParams?:\r\n | IFormatParam\r\n | IDateFormatParam\r\n | INumberFormatParam\r\n | IallowCalculateFormatParam\r\n | ICurrencyFormatParam;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParam extends IFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IallowCalculateFormatParam extends IFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface INumberFormatParam extends IFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParam extends INumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport enum EFormatType {\r\n SMALLDATE = 'mm/d/y',\r\n SHORTDATE = 'mm/d/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n MONTHONLY = 'mm/yy',\r\n PERIOD = 'mm/y',\r\n BOOLEAN_YN = 'BOOLEAN_YN',\r\n CUSTOM = 'custom',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport interface IHyperlink {\r\n target?: EHyperlink;\r\n link?: string;\r\n linkId?: string;\r\n params?: any;\r\n width?:string;\r\n height?:string;\r\n component?: any;\r\n data?: ILookupFieldData;\r\n}\r\n\r\nexport enum EHyperlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n PARENT = '_parent',\r\n TOP = '_top',\r\n IFRAME = '_iframe',\r\n DIALOG = '_dialog'\r\n}\r\n\r\nexport interface AddFormField {\r\n control?: EFormControl;\r\n field?: string;\r\n class?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n label?: string | ILabel;\r\n value?: string | any;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n id?: string;\r\n hidden?: boolean;\r\n validations?: IValidation[] | any;\r\n hyperlink?: IHyperlink;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n minutesInterval?: number;\r\n disabled?: boolean | any;\r\n disabledText?: boolean;\r\n column?: number;\r\n row?: number;\r\n componentControl?: IFormComponentField;\r\n data?: ISelectItem[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n timeOnly?: boolean;\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?:any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n card?: IDynamicCard;\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { ISidebar } from '../../public-api';\r\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\r\nimport {\r\n EFormatType,\r\n EFormControl,\r\n EHyperlink,\r\n EMatchMode,\r\n EOperator,\r\n IDynamicCard,\r\n IDynamicForm,\r\n IFormat,\r\n IFormField,\r\n IFormSection,\r\n} from '../models/form.model';\r\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\r\nimport { Subject } from 'rxjs';\r\n\r\n/* #region public methods */\r\n\r\n/**\r\n *\r\n * @param value : any\r\n * Function receives the value and expects the value to be formated.\r\n * Do not use fat arrow function as they do not preserve the context.\r\n * this.value refers to the value of IFormField Object\r\n * Modify this.value directly to receive effect\r\n */\r\n\r\n var formstate = new Subject<any>();\r\n\r\n export function changeDynamicFormState(id: any, data: any) {\r\n formstate.next({ id, data });\r\n}\r\n \r\n export function onDynamicFormStateChange() {\r\n return formstate.asObservable();\r\n }\r\n\r\n export function closeIFrame(){\r\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\r\n if(close) {\r\n close.click();\r\n }\r\n}\r\n\r\n export function setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\r\n formSections?.forEach((section)=>{\r\n section.fields.forEach((field:any)=>{\r\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\r\n let keys = Object.keys(value);\r\n keys.forEach((key)=>{\r\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\r\n });\r\n changeDynamicFormState(id, field.componentControl.data);\r\n };\r\n });\r\n });\r\n}\r\n\r\nexport function toDecimal(value: any): any {\r\n if (value) {\r\n return parseFloat(value.toString()).toFixed(2);\r\n }\r\n}\r\n\r\nexport function toBoolean(value: any) {\r\n return value === 'Y' ? true : false;\r\n}\r\n\r\nexport function toShortDate(value: any, format?: IFormat) {\r\n if (value && value !== '') {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toShortDateTime(value: any, format?: IFormat) {\r\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toTrim(text: any) {\r\n if (typeof text === 'string') {\r\n return text.trim();\r\n } else {\r\n return text;\r\n }\r\n}\r\n\r\nexport function getMatchKey(obj: any, propName: string): string {\r\n if (!obj || !propName) {\r\n return '';\r\n }\r\n\r\n let matchedKey = '';\r\n if (Array.isArray(obj)) {\r\n obj.forEach((row) => {\r\n const keys: any[] = Object.keys(row);\r\n if (!matchedKey || matchedKey.length === 0) {\r\n matchedKey = keys.find(\r\n (x) => x.toLowerCase() === propName.toLowerCase()\r\n );\r\n }\r\n });\r\n } else {\r\n const keys: any[] = Object.keys(obj);\r\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\r\n }\r\n\r\n return matchedKey;\r\n}\r\n\r\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\r\n let formattedValue: any = value;\r\n if (formField.format) {\r\n switch (formField.format.type) {\r\n case EFormatType.DECIMAL:\r\n formattedValue = toDecimal(value);\r\n break;\r\n case EFormatType.BOOLEAN_YN:\r\n formattedValue = toBoolean(value);\r\n break;\r\n case EFormatType.SHORTDATE:\r\n formattedValue = toShortDate(value);\r\n break;\r\n case EFormatType.CUSTOM:\r\n if (formField.format.formatter) {\r\n formattedValue = formField.format.formatter(value);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return formattedValue;\r\n}\r\n\r\nexport function setFormField(\r\n { formSections }: IDynamicForm,\r\n formFieldObj: IFormField\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField: IFormField) => {\r\n if (\r\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\r\n (formField.label && formField.label === formFieldObj.label)\r\n ) {\r\n formField = formFieldObj;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function setHyperlinkComponentData(\r\n { formSections }: IDynamicForm,\r\n label: string,\r\n data: any\r\n){\r\n formSections?.forEach((section) => {\r\n let field=section.fields.find((field)=> field.label && field.label===label)\r\n if(field && field.hyperlink) field.hyperlink.params = data;\r\n});\r\n}\r\n\r\nexport function setLookupData(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n data: any\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n section.fields.map((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data &&\r\n data\r\n ) {\r\n formField.label.labelControl.lookupControl.data.data = data;\r\n }\r\n if (formField.lookupControl && formField.lookupControl.data && data) {\r\n formField.lookupControl.data.data = data;\r\n }\r\n }\r\n });\r\n });\r\n return formSections;\r\n}\r\n\r\nexport function setLinkParamValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n params: any[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n const isLabelLink =\r\n formField.label && typeof formField.label === 'object';\r\n if (\r\n formField.field?.toLowerCase() === field?.toLowerCase() ||\r\n (isLabelLink &&\r\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label &&\r\n typeof formField.label === 'string' &&\r\n formField.label?.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n let newLink: string = isLabelLink\r\n ? formField.label?.labelControl?.orignalLink\r\n : formField.hyperlink?.link;\r\n\r\n if (newLink && newLink.length > 0) {\r\n return params.map((paramObj: IDictionary): any => {\r\n if (\r\n (typeof paramObj.value === 'object' && paramObj.value) ||\r\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\r\n ) {\r\n // removing https:// or http:// from hyperlink param value\r\n if (\r\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \r\n (newLink.includes('https://') || newLink.includes('http://')) \r\n ) {\r\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\r\n }\r\n const paramName: string = paramObj.name.toLowerCase();\r\n const paramFormat: string = !paramObj.value\r\n ? '{{' + paramName + '}}'\r\n : paramName;\r\n\r\n if (newLink.localeCompare(paramFormat)) {\r\n let setLink =\r\n paramFormat !== '{{' + paramFormat + '}}'\r\n ? '{{' + paramFormat + '}}'\r\n : paramFormat;\r\n\r\n newLink = newLink.replace(\r\n new RegExp(setLink, 'ig'),\r\n toTrim(paramObj.value)\r\n );\r\n if (newLink && !newLink.startsWith('http'))\r\n {\r\n newLink = \"http://\" + newLink;\r\n }\r\n }\r\n return isLabelLink\r\n ? (formField.label.labelControl.hyperlink.link = newLink)\r\n : (formField.hyperlink.link = newLink);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\r\n let newLink: string = link;\r\n if (params && params.length > 0) {\r\n params.map((param) => {\r\n const url = param.name ? '{{' + param.name + '}}' : '';\r\n if (newLink.localeCompare(url)) {\r\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\r\n }\r\n });\r\n }\r\n return newLink;\r\n}\r\n\r\nexport function setFormPropValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n props: IDictionary[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n if (\r\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\r\n ) {\r\n return props.map((prop: IDictionary) => {\r\n if (formField.hasOwnProperty(prop.name)) {\r\n return (formField[prop.name] = prop.value);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\r\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\r\n if(section){\r\n section.fields.push(formField);\r\n }\r\n return dynamicForm;\r\n}\r\n\r\nexport function setFormFields(\r\n { formSections }: IDynamicForm,\r\n formFields: IFormField[]\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField) => {\r\n let matchedField = formFields.find(\r\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\r\n );\r\n if (matchedField) {\r\n formField = matchedField;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function getGlobalFilters(\r\n globalFilters: addGlobalFilter[],\r\n field: string,\r\n) {\r\n let formFieldObj: any;\r\n globalFilters.map((filter)=>{\r\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = filter;\r\n }\r\n });\r\n return formFieldObj;\r\n}\r\n\r\nexport function setFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n value: any,\r\n displayText: string = ''\r\n) {\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (displayText && displayText.length > 0) {\r\n formField.value = { text: displayText, value: value };\r\n } else {\r\n formField.value = value;\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function getFormFields(\r\n { formSections }: IDynamicForm,\r\n formControl: EFormControl\r\n): IFormField[] {\r\n let formFields: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.control === formControl) {\r\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\r\n {\r\n formField.value = formField.value.text.trim();\r\n }\r\n else if (formField.value && typeof(formField.value) === 'string')\r\n {\r\n formField.value = formField.value.trim();\r\n }\r\n formFields.push(formField);\r\n }\r\n });\r\n });\r\n return formFields;\r\n}\r\n\r\nexport function getFormField(\r\n { formSections }: IDynamicForm,\r\n field: string\r\n): IFormField {\r\n let formFieldObj: any;\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = formField;\r\n }\r\n });\r\n });\r\n return formFieldObj;\r\n}\r\n\r\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\r\n// exist in the field then always return a displayField value.\r\nexport function getFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n returnDisplayFieldValue:boolean = false\r\n) {\r\n let value;\r\n for (const section of formSections as any) {\r\n section.fields.forEach((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\r\n if (\r\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\r\n formField.displayField\r\n ) {\r\n value = isValid ? formField.value?.text : formField.value?.value;\r\n } else {\r\n value = isValid\r\n ? formField.value?.text\r\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\r\n ? formField.value?.value\r\n : formField.value;\r\n }\r\n }\r\n });\r\n }\r\n return value;\r\n}\r\n\r\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\r\n let value:any = getFormFieldValue(dynamicForm,field, true);\r\n if (value){\r\n value = value.toString();\r\n }\r\n return value;\r\n}\r\n\r\nexport function getSectionFieldValue(\r\n formSections: IFormSection[],\r\n field: string\r\n) {\r\n let form: IDynamicForm = { formSections };\r\n return getFormFieldValue(form, field, true);\r\n}\r\n\r\nexport function setSaveFormValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let response: any = {};\r\n if (tables && tables.length > 0) {\r\n tables.forEach((tableName) => {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n\r\n sectionFields?.forEach((field) => {\r\n const table = field.tables?.map((table) => table.toLowerCase());\r\n\r\n if (table && table.includes(tableName.toLowerCase())) {\r\n if (!response[tableName]) {\r\n response[tableName] = {};\r\n }\r\n\r\n if (field.field && field.field.length > 0) {\r\n response[tableName][field.field] = formatFormFieldCValue(field);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n sectionFields?.forEach((field) => {\r\n if (field.field && field.field.length > 0) {\r\n response[field.field] = formatFormFieldCValue(field);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function setSaveCardValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let values: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.card.data) {\r\n field.card.data.forEach((cardData: any) => {\r\n if (cardData.dynamicForm.formSections) {\r\n values.push(\r\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\r\n );\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return values;\r\n}\r\n\r\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\r\n if (data && data.length > 0 && Array.isArray(data)) {\r\n data.forEach((dataRow) => {\r\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\r\n });\r\n } else {\r\n setEditFormFieldsInfo(data, dynamicForm);\r\n }\r\n}\r\n\r\nexport function setFilter(\r\n field: string,\r\n value: any,\r\n matchMode: EMatchMode = EMatchMode.EQUALS,\r\n operator: EOperator = EOperator.AND,\r\n) {\r\n const filter: any = {\r\n field: field,\r\n matchMode: matchMode,\r\n operator: operator,\r\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\r\n };\r\n return filter;\r\n}\r\n\r\nexport function setAndFilter(field: string, value: any) {\r\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\r\n}\r\n\r\nexport function getOrigDataFieldValue(data: any, propName: string): any {\r\n let value: any;\r\n if (data) {\r\n if (Array.isArray(data)) {\r\n for (let i = 0; i < data.length; i++) {\r\n value = getPropertyValue(data[i], propName);\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n } else {\r\n value = getPropertyValue(data, propName);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function getOrigDataFieldValueAsString(\r\n data: any,\r\n propName: string\r\n): string {\r\n let value = getOrigDataFieldValue(data, propName);\r\n if (value) {\r\n return value.toString();\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport function setSidebarPropValues(\r\n sidebar: ISidebar[],\r\n section: string,\r\n props: IDictionary[]\r\n) {\r\n sidebar.map((sidebarItem: any) => {\r\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\r\n props.map((prop) => {\r\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\r\n sidebarItem.data.data = prop.value;\r\n } else {\r\n return setPropValue(sidebarItem, prop);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setSectionPropValues(\r\n { formSections }: IDynamicForm,\r\n sectionName: string,\r\n props: IDictionary[]\r\n) {\r\n formSections?.map((section) => {\r\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\r\n props.map((prop) => {\r\n return setPropValue(section, prop);\r\n });\r\n }\r\n });\r\n}\r\n\r\n/* #endregion */\r\n\r\n/* #region private methods */\r\n\r\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\r\n if (data.records && data.records.length > 0) {\r\n data.records.forEach((record: any) => {\r\n const keys: string[] = Object.keys(record);\r\n dynamicForm.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField: any) => {\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n // set label hyperlink\r\n setLabelHyperlink(formField, record, keys, allData);\r\n }\r\n\r\n if (\r\n formField.control === EFormControl.HYPERLINK &&\r\n formField.hyperlink &&\r\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\r\n formField.hyperlink.link)\r\n ) {\r\n let params = formField.hyperlink.params;\r\n let paramKeys: string[] = [];\r\n\r\n if (\r\n !params &&\r\n formField.hyperlink.link &&\r\n formField.hyperlink.link.includes('}}')\r\n ) {\r\n paramKeys = formField.hyperlink.link.split('}}');\r\n paramKeys = paramKeys.map((paramKey) => {\r\n paramKey = paramKey.replace('{{', '').trim();\r\n return paramKey;\r\n });\r\n paramKeys = paramKeys.filter((x) => x.length > 0);\r\n } else {\r\n if(params){\r\n paramKeys = Object.keys(params);\r\n }\r\n }\r\n\r\n formField.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n formField.hyperlink.link,\r\n paramKeys,\r\n formField.hyperlink.params,\r\n allData\r\n );\r\n } else {\r\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\r\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\r\n ? new Date(record[matchedKey] as string)\r\n : '';\r\n } else if (formField.control === EFormControl.CARD) {\r\n if (formField.card && formField.card.formSections) {\r\n if (!formField.card.data) {\r\n formField.card.data = data;\r\n }\r\n \r\n setEditFormFieldsInfo(data, formField.card);\r\n }\r\n } else if (\r\n formField.control === EFormControl.AUTOCOMPLETE &&\r\n matchedKey\r\n ) {\r\n let arrayValue = [];\r\n if (record[matchedKey] && formField.displayField) {\r\n arrayValue.push({[formField.displayField] : record[matchedKey]});\r\n }\r\n formField.value = arrayValue;\r\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.label.labelControl.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.label.labelControl.lookupControl.data.data = obj;\r\n }\r\n }\r\n\r\n if (\r\n formField.lookupControl &&\r\n formField.lookupControl.data &&\r\n formField.lookupControl.data.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.lookupControl.data.data = obj;\r\n }\r\n }\r\n if(record[matchedKey]){\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n if (\r\n formField.displayField &&\r\n formField.displayField.length > 0\r\n ) {\r\n const matchDisplayField = getMatchKey(\r\n record,\r\n formField.displayField\r\n );\r\n if (matchDisplayField) {\r\n formField.value = {\r\n text: toTrim(record[matchDisplayField]),\r\n value: formField.value?.value,\r\n };\r\n }\r\n\r\n const matchValueField = getMatchKey(record, formField.field);\r\n if (matchValueField) {\r\n formField.value = {\r\n text: formField.value?.text,\r\n value: toTrim(record[matchValueField]),\r\n };\r\n }\r\n }\r\n } else if (\r\n formField.control === EFormControl.COMPONENT &&\r\n formField.componentControl?.data\r\n ) {\r\n formField.componentControl.data = findKeysAndValue(\r\n formField.componentControl.data,\r\n record\r\n );\r\n changeDynamicFormState(\r\n formField.componentControl.id,\r\n formField.componentControl?.data\r\n );\r\n } else if (\r\n formField.control === EFormControl.NUMERIC &&\r\n formField.label?.labelControl?.lookupControl?.data?.data\r\n ) {\r\n let setData = formField.label.labelControl.lookupControl;\r\n setData.data.data = findKeysAndValue(setData.data.data, record);\r\n changeDynamicFormState(setData.id, setData.data.data);\r\n } else if (formField.control === EFormControl.HYPERLINK \r\n && formField.hyperlink?.target === EHyperlink.DIALOG \r\n && formField.hyperlink.params\r\n ) {\r\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\r\n } else if (matchedKey) {\r\n if (formField.format) {\r\n formField.value = formatFormFieldValue(\r\n formField,\r\n record[matchedKey]\r\n );\r\n } else if (formField.control === EFormControl.CHECKBOX) {\r\n formField.value =\r\n record[matchedKey] &&\r\n (record[matchedKey].toString() === '1' ||\r\n record[matchedKey].toString() === 'true')\r\n ? true\r\n : false;\r\n }else if (formField.control === EFormControl.DROPDOWN) {\r\n let dropValue = record[matchedKey];\r\n formField.value = dropValue\r\n ? dropValue.toString()\r\n : dropValue;\r\n } else {\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n//set hyperlink param value as field value\r\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\r\n let keys: string[] = [];\r\n let link: string ='';\r\n let paramKeys: string[] = [];\r\n let param: any;\r\n let fieldInfo: any;\r\n dynamicForm.formSections?.forEach((section: any) => {\r\n section.fields.forEach((formField: any) => {\r\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\r\n keys = Object.keys(record);\r\n if(formField?.label?.labelControl?.orignalLink){\r\n link = formField.label.labelControl.orignalLink;\r\n }\r\n\r\n if(formField?.label?.labelControl?.hyperlink?.params){\r\n param = formField.label.labelControl.hyperlink.params;\r\n paramKeys = Object.keys(param);\r\n }\r\n fieldInfo = formField;\r\n if(record && keys && link && paramKeys && param && fieldInfo){\r\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function objConvertToLower(obj: any) {\r\n return Object.keys(obj).reduce((accumulator: any, key) => {\r\n accumulator[key.toLowerCase()] = obj[key];\r\n return accumulator;\r\n }, {});\r\n}\r\n\r\nexport function clickSectionHighlight(value: any) {\r\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\r\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\r\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\r\n allMenuItems?.forEach((menauItem: any) => {\r\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\r\n })\r\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\r\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n}\r\n\r\nexport function removeActiveIconClass() {\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n if (activeIcon && activeIcon.length > 0) {\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n }\r\n}\r\n\r\nexport function highlightLeftSidebar(){\r\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\r\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\r\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\r\n\r\n allIconElements?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('tabIndex', 'section' + index);\r\n });\r\n removeActiveIconClass();\r\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\r\n const currentId = \"section\" + index;\r\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\r\n } else{\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \r\n }\r\n });\r\n });\r\n }\r\n\r\nexport function findKeysAndValue(data: any, record: any) {\r\n let valueKey: string = '';\r\n Object.keys(data).forEach((dataKey) => {\r\n let valueContainsKey: boolean = false;\r\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\r\n valueContainsKey = true;\r\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n }\r\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\r\n if (key && key.length > 0) {\r\n data = { ...data, [dataKey]: record[key] };\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction setPropValue(obj: any, prop: IDictionary) {\r\n const matchedKey: string = getMatchKey(obj, prop.name);\r\n if (matchedKey) {\r\n return (obj[matchedKey] = prop.value);\r\n }\r\n}\r\n\r\nexport function hasRole(role: string): boolean {\r\n let storage = localStorage.getItem('CurrentUserInfo');\r\n if (storage) {\r\n let currentUser = JSON.parse(storage);\r\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\r\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\r\n if (\r\n item.label &&\r\n item.label.labelControl &&\r\n item.label.labelControl.hyperlink &&\r\n item.label.labelControl.hyperlink.params\r\n ) {\r\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\r\n const link = item.label.labelControl.hyperlink.link;\r\n if (item.label.labelControl.hyperlink.link) {\r\n item.label.labelControl.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n link,\r\n paramKeys,\r\n item.label.labelControl.hyperlink.params,\r\n allData\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function setHyperlink(\r\n keys: string[],\r\n record: any,\r\n link: string,\r\n paramKeys: string[],\r\n params: any,\r\n allData: any[] = []\r\n): string {\r\n let newLink: string = link;\r\n record = objConvertToLower(record);\r\n paramKeys.forEach((paramkey) => {\r\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\r\n const isParamMatched = newLink.localeCompare(param);\r\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\r\n\r\n if (isParamMatched) {\r\n let paramValue = params ? params[paramkey] : null;\r\n if(paramValue === '' && paramInRecord){\r\n paramValue = '{'+paramkey+'}';\r\n }\r\n if (paramValue) {\r\n const propName = paramValue.toString().replace('{', '').replace('}', '');\r\n let propValue = record[propName.toLowerCase()];\r\n \r\n // in case of prop not found in record then try to find prop in all data array, to get its value \r\n if (!propValue && allData && allData.length > 0)\r\n {\r\n allData.forEach((data)=>{\r\n //const value = data.records.find((x)=> x[propName]);\r\n data.records.forEach((allRecord: any)=>{\r\n let keys = Object.keys(allRecord);\r\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\r\n if (matchKey){\r\n propValue = allRecord[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\r\n \r\n } else {\r\n // get param value from api response, if param key exists in it\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === paramkey.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n paramValue = record[matchedKey];\r\n if (paramValue) {\r\n newLink = newLink.replace(\r\n new RegExp(param, 'ig'),\r\n toTrim(paramValue)\r\n );\r\n } else {\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n // replace the {{param}} with empty\r\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\r\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\r\n }\r\n return newLink;\r\n}\r\n\r\n// its checking if there is no value in hyperlink param then it set key as a paramValue\r\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\r\n let paramValue: boolean = false;\r\n if(allData && allData.length > 0){\r\n allData.forEach((data: any)=>{\r\n if(data.records && data.records.length > 0){\r\n data.records.forEach((allRecord: any) =>{\r\n if(paramValue === false){\r\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\r\n };\r\n });\r\n };\r\n });\r\n }else{\r\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\r\n }\r\n return paramValue;\r\n}\r\n\r\nfunction getPropertyValue(data: any, propName: string) {\r\n let propValue: any;\r\n data.records?.forEach((record: any) => {\r\n for (const [key, value] of Object.entries(record)) {\r\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\r\n propValue = value;\r\n }\r\n }\r\n });\r\n return propValue;\r\n}\r\n\r\nfunction formatFormFieldCValue(field: any) {\r\n if (\r\n field.format?.type === EFormatType.BOOLEAN_YN &&\r\n field.format?.formatter?.name === 'toBoolean'\r\n ) {\r\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\r\n } else if (\r\n field.control === EFormControl.CALENDAR &&\r\n (field.value || field.value === '')\r\n ) {\r\n if(field.timeOnly && field.saveAsString){\r\n field.value = field.value;\r\n }else{\r\n field.value =\r\n field.showTime === true\r\n ? toShortDateTime(field.value, field.format)\r\n : toShortDate(field.value, field.format)\r\n }\r\n return field.value;\r\n } else if (\r\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value == undefined ? null : field.value.value;\r\n } else if (\r\n field.label &&\r\n field.label.labelControl &&\r\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value;\r\n } else {\r\n field.value = field.value == undefined ? null : field.value;\r\n return field.value;\r\n }\r\n}\r\n\r\nexport function autoSetLookupData(\r\n fieldData: any,\r\n response: any\r\n) {\r\n let obj = {};\r\n let record = setDataFields([response]);\r\n if (record && record.length > 0) {\r\n record.forEach((x: any) => {\r\n record = x;\r\n });\r\n }\r\n if (fieldData && record) {\r\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\r\n let rowKeys = Object.keys(record);\r\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\r\n let value = rowKeys?.find(\r\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n );\r\n if (value && value.length > 0) {\r\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\r\n } else if (key && key.length > 0) {\r\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\r\n } else {\r\n obj = { ...obj, [dataKey]: dataValue };\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\r\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\r\n if(obj && obj.lookupControl?.data){\r\n obj.lookupControl.data.data = data;\r\n }\r\n}\r\n\r\nexport function setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n}\r\n\r\nexport function setDialogResponse(\r\n formField: any,\r\n formData: any,\r\n response: any\r\n) {\r\n let value: any;\r\n if (response) {\r\n // if selectedValue does not exist then consider valueField as selectedValue\r\n if (\r\n formData &&\r\n formData.data &&\r\n formData.data.valueField &&\r\n !formData.data.selectedValue\r\n ) {\r\n formData.data.selectedValue = formData.data.valueField;\r\n }\r\n\r\n const matchValueKey: string = getMatchKey(\r\n response,\r\n formData?.data?.selectedValue\r\n );\r\n const matchFieldKey: string = getMatchKey(\r\n response,\r\n formData?.data?.valueField\r\n );\r\n\r\n if (\r\n formData?.data &&\r\n formData?.data.selectedValue &&\r\n formData?.data.valueField\r\n ) {\r\n let selectedValue = response[matchValueKey];\r\n let matchText = response[matchFieldKey];\r\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\r\n selectedValue = selectedValue.trim();\r\n matchText = matchText.trim();\r\n }\r\n value = { text: matchText, value: selectedValue };\r\n } else {\r\n const FieldKey: string = getMatchKey(response, formField.field);\r\n let value = response[FieldKey];\r\n if (value) {\r\n value = value.trim();\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function currentUrl():string{\r\n let currentRoute: string = '';\r\n let url = window.location.href;\r\n if(url){\r\n let arr = url.split('/');\r\n currentRoute = arr[arr.length-1]\r\n } \r\n return currentRoute;\r\n}\r\n\r\nexport function getGridFilters(){\r\n let filters: any = [];\r\n let gridFilters = currentUrl();\r\n if(gridFilters && gridFilters.length > 0){\r\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\r\n filters = localFilter?.filters;\r\n }\r\n return filters;\r\n}\r\n\r\n//update the hidden or disabled and value based off other global filters.\r\nexport function setGlobalFilterPropValues(\r\n globalFilter: IGlobalFilter[],\r\n field: string,\r\n props: IFilterDictionary[],\r\n) {\r\n return globalFilter.map((filter: any) => {\r\n if (\r\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\r\n (filter.displayText &&\r\n filter.displayText.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n props?.map((prop: IFilterDictionary) => {\r\n if (filter.hasOwnProperty(prop.propName)) {\r\n return (filter[prop.propName] = prop.propValue);\r\n } else if (prop.propValue && prop.propValue.length > 0) {\r\n return (filter.value = prop.propValue);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setCardFieldsData(form: any) {\r\n if (form && form.dynamicform) {\r\n const { dynamicform, ...newData } = form;\r\n dynamicform?.formSections?.forEach((section: any) => {\r\n section.fields?.forEach((field: any) => {\r\n if (newData) {\r\n setEditFormFields({ records: [newData] }, dynamicform);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n// disable Grid EditableRow Column\r\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let disableObj = { ...obj, disabled: true };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = disableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n// enabled Grid EditableRow Column\r\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let enableObj = { ...obj, disabled: false };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = enableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n // check the Minutes Interval\r\n export function setMinutesInterval(value: any){\r\n if (value) {\r\n const min = value.getMinutes().toString();\r\n if (min) {\r\n value = value.setMinutes(0);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\n // update the response records\r\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\r\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\r\n if(index > -1){\r\n records[index] = rowData;\r\n }else{\r\n records.push(rowData);\r\n }\r\n return records;\r\n}\r\n\r\n//convert the time into date\r\nexport function setTimeInDate(time: any) {\r\n const convertTime12to24 = (time12h: any) => {\r\n const [time, modifier] = time12h?.toString()?.split(' ');\r\n let [hours, minutes] = time?.split(':');\r\n if (hours === '12') {\r\n hours = '00';\r\n }\r\n if (modifier === 'PM') {\r\n hours = parseInt(hours, 10) + 12;\r\n }\r\n return `${hours}:${minutes}`;\r\n };\r\n const date = convertTime12to24(time);\r\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\r\n const futureDate = new Date();\r\n futureDate.setTime(tempDate.getTime());\r\n return futureDate;\r\n}\r\n\r\n// return the data of the field \r\nexport function getFieldData({ formSections }: any, field: string){\r\n let data: any = []\r\n if(formSections?.length > 0 && field){\r\n formSections.forEach((section: any)=>{\r\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\r\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\r\n }\r\n })\r\n }\r\n return data;\r\n}\r\n\r\nexport function setAllFormFieldsValues(\r\n { formSections }: IDynamicForm,\r\n props: IFilterDictionary[]\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n if (section) {\r\n section.fields.map((formField: any) => {\r\n return props.map((prop: IFilterDictionary) => {\r\n if (formField) {\r\n return (formField[prop.propName] = prop.propValue);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function calenderMinMaxValue(item: any,value: any, index){\r\n let validation: string = 'equal';\r\n var validDate = new Date(item.validations[index].expression);\r\n var currentDate = new Date(value);\r\n if (validDate.getTime() < currentDate.getTime()){\r\n validation = 'greater';\r\n }\r\n else if (validDate.getTime() > currentDate.getTime()){\r\n validation = 'minimum';\r\n }\r\n return validation;\r\n}\r\n/* #endregion */\r\n","import { Injectable } from '@angular/core';\r\nimport { LazyLoadEvent } from 'primeng/api';\r\nimport { IDropDownRequest } from '../models/form.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport {\r\n EGridSortDirection,\r\n GridFilterControlType,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridSort,\r\n EGridColumnType,\r\n addColumn,\r\n addFilterColumn,\r\n addGlobalFilter,\r\n IGridColumn,\r\n EGridValidator,\r\n IGridProp,\r\n IGridPropFilter,\r\n IGridRowProp,\r\n IGridReportBtn,\r\n} from '../models/grid.model';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { HyperlinkService } from './hyperlink.service';\r\nimport * as utilities from './utilities.service';\r\nimport { RequestService } from './request.service';\r\nimport { IDictionary } from '../models/common.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridService {\r\n softCachingFilters: any = {};\r\n applyFilterEvent: boolean = true;\r\n public columnFocusedOut:boolean = false;\r\n constructor(\r\n public datepipe: DatePipe,\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService:DropdownService,\r\n private alertService:AlertService,\r\n private requestService: RequestService\r\n ) {}\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns after proper mapping\r\n */\r\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\r\n const filters = this.mapFilters(event, columns);\r\n return this.handleMultiFilterField(filters);\r\n }\r\n\r\n /**\r\n * @param filters\r\n * Receives filters and returns array after removing duplicates\r\n * and creating comma separated values for same filters\r\n */\r\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\r\n return filters\r\n .map((x, i, arr) =>\r\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\r\n ? {\r\n ...x,\r\n value: arr\r\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\r\n .map((a) => a.value)\r\n .join(),\r\n }\r\n : x\r\n )\r\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\r\n }\r\n\r\n // Prepare basic grid filters\r\n prepareBasicFilters(\r\n event: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridFilter[] {\r\n return this.mapFilters(event, columns);\r\n }\r\n\r\n /**\r\n * Checks if filters has values then converts global filter values type into IGridFilter.\r\n */\r\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\r\n const globalData: IGridFilter[] = [];\r\n\r\n globalFilters?.forEach((filter: IGlobalFilter) => {\r\n if (\r\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\r\n filter.value.length) ||\r\n (typeof filter.value !== 'string' &&\r\n !Array.isArray(filter.value) &&\r\n filter.value) ||\r\n (typeof filter.value === 'boolean' && filter.value !== null) ||\r\n filter.type === GridFilterControlType.CALENDAR_RANGE\r\n ) {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\r\n // add filter for start date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n\r\n // add filter for end date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter, false),\r\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter, false),\r\n tableAlias: filter.tableAlias,\r\n });\r\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode:\r\n filter.type === GridFilterControlType.MULTISELECT\r\n ? 'in'\r\n : filter.matchMode,\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n }\r\n }\r\n });\r\n return globalData;\r\n }\r\n\r\n setGlobalFilterField(\r\n filter: any,\r\n isStartDate: boolean = true\r\n ): string {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\r\n if (isStartDate) {\r\n return filter.fromField;\r\n } else {\r\n return filter.toField;\r\n }\r\n } else {\r\n return filter.field;\r\n }\r\n }\r\n\r\n // set global filter value\r\n setGlobalFilterValue(\r\n filter: IGlobalFilter,\r\n isStartDate: boolean = true\r\n ): string | number | Date | boolean {\r\n switch (filter.type) {\r\n case GridFilterControlType.MULTISELECT:\r\n return (filter.value as any[]).join(',');\r\n case GridFilterControlType.CALENDAR:\r\n return this.getFormattedDate(filter.value as Date);\r\n case GridFilterControlType.CALENDAR_RANGE:\r\n let dateValues: string[] = filter.value\r\n ? filter.value.toString().split('|')\r\n : [];\r\n if (dateValues && dateValues.length == 2) {\r\n let dateValue: Date = isStartDate\r\n ? new Date(dateValues[0])\r\n : new Date(dateValues[1]);\r\n return this.getFormattedDate(dateValue);\r\n } else {\r\n return '';\r\n }\r\n case GridFilterControlType.CHECKBOX:\r\n return filter.value ? true : false;\r\n default:\r\n return filter.value as string;\r\n }\r\n }\r\n\r\n checkValidity(columns: IGridColumn[], row: any){\r\n let isValid: boolean = true;\r\n columns.map((item: any) => {\r\n if (item.validations && !item.disabled) {\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\r\n const valid = item.validations && item.header\r\n if (\r\n item.validations[i].type == EGridValidator.REQUIRED &&\r\n !row[item.field] &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = row[item.field]\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINLENGTH &&\r\n row[item.field].length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXLENGTH &&\r\n row[item.field].length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] < item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXIMUM &&\r\n isValid \r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] > item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PATTERN &&\r\n !row[item.field].match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.NUMERIC &&\r\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PHONE &&\r\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.DECIMAL &&\r\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.EMAIL &&\r\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n row[item.field] &&\r\n row[item.field]?.toString().match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n // set basic filter value\r\n setBasicFilterValue(filter: any): any {\r\n if (filter instanceof Date) {\r\n return this.getFormattedDate(filter);\r\n } else if (typeof filter === 'boolean') {\r\n return filter ? 1 : 0;\r\n } else {\r\n return filter;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param param\r\n * Receives lazy event and returns sort array\r\n */\r\n getGridSorts(\r\n { multiSortMeta }: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridSort[] {\r\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\r\n field,\r\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\r\n priority: i + 1,\r\n tableAlias: this.setTableAlias(field, columns),\r\n }));\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Handles default and lookup filters\r\n */\r\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\r\n const filters: IGridFilter[] = [];\r\n Object.entries(event.filters).forEach(([field, value]: any) => {\r\n if (Array.isArray(value)) {\r\n (value as IGridFilter[]).forEach(\r\n ({ matchMode, operator, value: filter }) => {\r\n if (filter !== null) {\r\n filters.push({\r\n field,\r\n matchMode,\r\n operator,\r\n value: this.setBasicFilterValue(filter),\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n if (value.value !== '') {\r\n switch (typeof value.value) {\r\n case 'boolean':\r\n filters.push({\r\n field,\r\n matchMode: 'equals',\r\n operator: 'and',\r\n value: value.value ? 1 : 0,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'string':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'number':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'object':\r\n if (value.value instanceof Date) {\r\n filters.push({\r\n field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value:\r\n value.value instanceof Date\r\n ? this.getFormattedDate(value.value)\r\n : value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n } else {\r\n (value.value || []).forEach((x: any) => {\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: x.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n });\r\n }\r\n break;\r\n default:\r\n null;\r\n }\r\n }\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns page number\r\n */\r\n getGridPagination(event: any): number {\r\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\r\n }\r\n\r\n // get formatted date\r\n getFormattedDate(value: Date): string {\r\n return new Date(`${value} Z`).toISOString().slice(0, 10);\r\n }\r\n\r\n // add simple grid column without\r\n addColumn(columnInfo: addColumn): IGridColumn {\r\n if(columnInfo.type === EGridColumnType.DROPDOWN){\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n }\r\n const column: IGridColumn = {\r\n allowSearch: columnInfo.allowSearch,\r\n field: columnInfo.field,\r\n header: columnInfo.header,\r\n style: columnInfo.style,\r\n type: columnInfo.type,\r\n format: columnInfo.format,\r\n data: columnInfo.data,\r\n filtering: columnInfo.filtering,\r\n hidden: columnInfo.hidden,\r\n sorting: columnInfo.sorting,\r\n filter: columnInfo.filter,\r\n hyperlink: columnInfo.hyperlink,\r\n tableAlias: columnInfo.tableAlias,\r\n linkId: columnInfo.linkId,\r\n minutesInterval: columnInfo.minutesInterval,\r\n params: columnInfo.params,\r\n showOption: columnInfo.showOption,\r\n displayText: columnInfo.displayText,\r\n target: columnInfo.target,\r\n disabled: columnInfo.disabled,\r\n allowSave: columnInfo.allowSave,\r\n editable: columnInfo.editable, \r\n editLink: columnInfo.editLink,\r\n saveAsString: columnInfo.saveAsString,\r\n component: columnInfo.component,\r\n onClick: columnInfo.onClick,\r\n onReturn: columnInfo.onReturn,\r\n onFocusOut: columnInfo.onFocusOut,\r\n onChange: columnInfo.onChange,\r\n aggregate: columnInfo.aggregate,\r\n formatter: columnInfo.formatter,\r\n permissions: columnInfo.permissions,\r\n optionLabel: columnInfo.optionLabel,\r\n optionValue: columnInfo.optionValue,\r\n dropDownProp: columnInfo.dropDownProp,\r\n showTime: columnInfo.showTime,\r\n timeOnly: columnInfo.timeOnly,\r\n lookupControl: columnInfo.lookupControl,\r\n displayField: columnInfo.displayField,\r\n icon: columnInfo.icon,\r\n color: columnInfo.color,\r\n id: columnInfo.id,\r\n value: columnInfo.value,\r\n validations: columnInfo.validations,\r\n };\r\n\r\n return column;\r\n }\r\n \r\n // Adding Report Button Function for Grid\r\n addReportBtn(columnInfo: IGridReportBtn){ \r\n columnInfo.type = EGridColumnType.REPORT;\r\n return columnInfo;\r\n}\r\n\r\n // add simple input grid column\r\n addInputColumn(\r\n filterColumnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\r\n }\r\n return this.addColumn(filterColumnInfo);\r\n }\r\n\r\n // add simple numeric grid column without\r\n addNumericColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.NUMERIC;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple calendar grid column without\r\n addCalendarColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple boolean grid column without\r\n addBooleanColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.type = EGridColumnType.BOOLEAN,\r\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add LookUp Field for Grid\r\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add Button for grid column\r\n addButtonColumn(\r\n columnInfo: addColumn,\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.ADD_BUTTON;\r\n if (!columnInfo.field) {\r\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add AutoComplete for grid column\r\n addAutoComplete(columnInfo: addColumn): IGridColumn {\r\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // Search AutoComplete Data for Grid\r\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n column.data = this.setDataFields(response.records);\r\n });\r\n }\r\n\r\n\r\n // add simple dropdown grid column without\r\n addDropdownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n dropDownProp?: IDropDownRequest\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.DROPDOWN;\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\r\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (dropDownProp) {\r\n columnInfo.dropDownProp = dropDownProp;\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n }\r\n// add MultiSelectDropDown grid column\r\naddMultiSelectDropDownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n multiSelectProp?: IDropDownRequest\r\n): IGridColumn {\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n columnInfo.type = EGridColumnType.MULTISELECT;\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\r\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (multiSelectProp) {\r\n columnInfo.dropDownProp = multiSelectProp;\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n}\r\n\r\n showFilterIcon(columnInfo: addColumn){\r\n if(columnInfo.filter && columnInfo.filter.showFilter){\r\n return true; \r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n setDropdownData(\r\n column: IGridColumn,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any[],\r\n row?: {[key: string]: any}\r\n ): Promise <any> | any{\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\r\n .then((res: any) => {\r\n if(row){\r\n row[column.field+'_data'] = res;\r\n }else{\r\n column.data=res;\r\n if(column.filter && column.filter.type === \"dropdown\"){\r\n column.filter.data = res;\r\n }\r\n }\r\n return this.addColumn(column);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n\r\n // add grid column with built-in filter\r\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\r\n const column: any = {\r\n field: filterColumnInfo.field,\r\n header: filterColumnInfo.header,\r\n filter: { type: filterColumnInfo.filter },\r\n filtering: filterColumnInfo.filtering,\r\n hidden: filterColumnInfo.hidden,\r\n style: filterColumnInfo.style,\r\n tableAlias: filterColumnInfo.tableAlias,\r\n permissions: filterColumnInfo.permissions\r\n };\r\n\r\n return column;\r\n }\r\n\r\n // add date grid column with built-in filter\r\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\r\n const column: IGridColumn = {\r\n field: dateColumnInfo.field,\r\n header: dateColumnInfo.header,\r\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\r\n filtering: dateColumnInfo.filtering,\r\n filter: { type: GridFilterControlType.CALENDAR },\r\n format: dateColumnInfo.format,\r\n style: dateColumnInfo.style,\r\n tableAlias: dateColumnInfo.tableAlias,\r\n disabled: dateColumnInfo.disabled,\r\n allowSave: dateColumnInfo.allowSave,\r\n permissions: dateColumnInfo.permissions,\r\n component: dateColumnInfo.component,\r\n showTime: dateColumnInfo.showTime,\r\n timeOnly: dateColumnInfo.timeOnly,\r\n data: dateColumnInfo.data,\r\n hidden: dateColumnInfo.hidden,\r\n };\r\n return column;\r\n }\r\n\r\n setLookUpFilter(column: any, dialogService: any) {\r\n if (column.lookupControl) {\r\n let dataValue: any[]= [];\r\n let dataKey: any[] = [];\r\n let data = column.lookupControl?.data?.data;\r\n const keys = Object.keys(data);\r\n if (data && keys?.length > 0) {\r\n keys.forEach((key) => {\r\n if (data[key].toString().includes('{')) {\r\n dataValue.unshift(data[key]);\r\n dataKey.unshift(key);\r\n data[key] = '';\r\n }\r\n });\r\n }\r\n const ref = dialogService.open(\r\n column.lookupControl.component,\r\n column.lookupControl.data\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if (column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n if(dataKey?.length > 0 && dataValue?.length > 0){\r\n dataKey.forEach((key,keyIndex)=>{\r\n dataValue.forEach((value, valueIndex)=>{\r\n if(keyIndex === valueIndex){\r\n data[key] = value;\r\n }\r\n });\r\n });\r\n }\r\n if (res) {\r\n document.getElementById('lookUp_filter')?.focus();\r\n let field = column.field;\r\n let value =utilities.setDialogResponse(\r\n column,\r\n column?.lookupControl,\r\n res\r\n );\r\n column.value = value?.value ? value.value : res[field.toLowerCase()];\r\n }\r\n },\r\n ({ error }:any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n // Set Hyperlink field as a param Value\r\n setFieldAsLinkParam(columns: any, field: string, response: any) {\r\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\r\n this.setDataFields(response.records).forEach((res: any) => {\r\n let obj = columns.find((x: any)=> x.field === field);\r\n if(obj && obj.params){\r\n const keys = Object.keys(obj.params)\r\n keys.forEach((key: any)=>{\r\n if(obj.params[key] && obj.params[key].toString().includes('{')){\r\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\r\n obj.params[key] = res[value];\r\n }\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\r\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \r\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\r\n }\r\n\r\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\r\n columns.forEach((column)=>{\r\n if(column.type === EGridColumnType.DIALOG && !column.data){\r\n this.alertService.error(`\"Data\" property is missing for \"${column.header}\" column`);\r\n }\r\n })\r\n let records: any = [];\r\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\r\n let newRow:any;\r\n\r\n return this.hyperlinkService\r\n .addHyperlinks(columns).then((linksResponse: any) => {\r\n data.forEach((row: any) => {\r\n newRow = { ...row };\r\n columns.forEach((col: any) => {\r\n let keys = Object.keys(row);\r\n if(col.type === EGridColumnType.DIALOG){\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n if(col.format && newRow[field].displayText){\r\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\r\n }\r\n if (col.data && col.data.data){\r\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\r\n }\r\n }\r\n linksResponse.forEach((linkResponse: any) => {\r\n if (\r\n (col.type === EGridColumnType.LINK ||\r\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\r\n col.linkId &&\r\n col.params &&\r\n col.linkId === linkResponse.linkId\r\n ) {\r\n const paramKeys: string[] = Object.keys(col.params);\r\n const link: any = utilities.setHyperlink(\r\n keys,\r\n row,\r\n linkResponse.url,\r\n paramKeys,\r\n col.params\r\n );\r\n\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].hyperlink = link;\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n }\r\n });\r\n });\r\n records.push(newRow);\r\n });\r\n return records;\r\n });\r\n }\r\n\r\n // add grid global filter with built-in filter\r\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\r\n const column: addGlobalFilter = {\r\n field: globelFilterInfo.field,\r\n displayText: globelFilterInfo.displayText,\r\n validations: globelFilterInfo.validations,\r\n type: globelFilterInfo.type,\r\n data: globelFilterInfo.data,\r\n value: globelFilterInfo.value,\r\n valueTwo: globelFilterInfo.valueTwo,\r\n matchMode: globelFilterInfo.matchMode,\r\n operator: globelFilterInfo.operator,\r\n tableAlias: globelFilterInfo.tableAlias,\r\n optionLabel: globelFilterInfo.optionLabel,\r\n optionValue: globelFilterInfo.optionValue,\r\n onFocusOut: globelFilterInfo.onFocusOut,\r\n filtering: globelFilterInfo.filtering,\r\n column: globelFilterInfo.column,\r\n dayRange: globelFilterInfo.dayRange,\r\n fromField: globelFilterInfo.fromField,\r\n toField:globelFilterInfo.toField,\r\n lookupControl: globelFilterInfo.lookupControl,\r\n allowSearch: globelFilterInfo.allowSearch,\r\n disabled: globelFilterInfo.disabled,\r\n hidden: globelFilterInfo.hidden,\r\n labelText: globelFilterInfo.labelText,\r\n prefix: globelFilterInfo.prefix,\r\n color: globelFilterInfo.color,\r\n format: globelFilterInfo.format,\r\n };\r\n return column;\r\n }\r\n\r\n // add global input filter\r\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add global dropdown filter\r\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n let sorts= dropDownProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n // add global MultiSelect dropdown filter\r\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\r\n if (multiSelectProp) {\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n let sorts = multiSelectProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n \r\n \r\n\r\n\r\n getDropdownData(\r\n fieldInfo: any,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any,\r\n sorts: IGridSort[] = []\r\n ) {\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addGlobalFilter(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n // add global filter Space Field\r\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.SPACER;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n}\r\n\r\n // add global boolean filter\r\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric Range Filter for global Filter\r\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric input for global Filter\r\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\r\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add LookUp Field for global Filter\r\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n setDataFields(response: any, dataKey: string = \"\") {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n if(Object.keys(x ?? {})?.length > 0){\r\n const result:any = Object.keys(x)?.reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\r\n {\r\n result[dataKey] = index;\r\n }\r\n \r\n data.push(result);\r\n }\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n setColumnFields(columns: any[]) {\r\n let column: any = [];\r\n if (columns && columns.length > 0) {\r\n columns.map((col: any) => {\r\n column.push({ ...col, field: col?.field?.toLowerCase() });\r\n });\r\n return column;\r\n }\r\n }\r\n\r\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\r\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\r\n if (columns && columns.length > 0) {\r\n columns.forEach((column: any) => {\r\n if (column.field?.toLowerCase() === field.toLowerCase()) {\r\n column.linkId = linkId;\r\n if(params){\r\n column.params = params;\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\r\n if(changeLink){\r\n delete res[0][field.toLowerCase()+'_obj'];\r\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\r\n if(index !== -1){\r\n if(users[index][field+'_obj']){\r\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\r\n }\r\n }\r\n } \r\n });\r\n }\r\n\r\n // set grid data and set selected row based on selection value\r\n setDataWithSelectedRow(records: any, configData: any) {\r\n if (configData?.selectedValue && configData.data.selection) {\r\n records.forEach((record: any) => {\r\n Object.keys(record)?.forEach((key) => {\r\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\r\n if(configData.data.value && record[key] === configData.data.value){\r\n record['highlightRow'] = true;\r\n } else if(record[key] === configData.data.selection){\r\n record['highlightRow'] = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return records;\r\n }\r\n\r\n setTableAlias(field: string, columns: IGridColumn[]) {\r\n if (columns && columns.length > 0) {\r\n const column = columns.find(\r\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\r\n );\r\n\r\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\r\n return column.tableAlias;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n setGridPropValues(\r\n columns: IGridColumn[],\r\n props: IGridProp[],\r\n filter?: IGridPropFilter,\r\n records?: any[],\r\n ) {\r\n if (columns && columns.length > 0 && props && props.length > 0) {\r\n let isMatched: boolean = false;\r\n if (filter && filter.field && records && records.length > 0) {\r\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\r\n }\r\n props.map((prop: IGridProp) => {\r\n let col: any = {};\r\n if (prop.field && !isMatched && !filter?.field) {\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n } else if (isMatched) {\r\n if(prop.field){\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n }else {\r\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\r\n }\r\n }\r\n if (col && col.hasOwnProperty(prop.name)) {\r\n col[prop.name] = prop.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // set grid row propValues\r\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\r\n props?.forEach((prop)=>{\r\n if(prop.propName && (prop.propValue || prop.propValue === false) && prop.field){\r\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\r\n if(fieldName){\r\n if(row[fieldName]?.action){\r\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\r\n }else{\r\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\r\n }\r\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\r\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\r\n };\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n // remove the rowActions from the records\r\n removeRowActions(records){\r\n if(records?.length > 0){\r\n records.forEach((row)=>{\r\n if(row.rowAction){\r\n delete row['rowAction'];\r\n }\r\n })\r\n }\r\n return records;\r\n }\r\n}","export interface IUserInfo {\r\n id: number;\r\n username: string;\r\n isADUser: boolean;\r\n token: string;\r\n activities: string[];\r\n roles: IUserRole[];\r\n }\r\n \r\n export interface IUserRole {\r\n id: number;\r\n code: string;\r\n name: string;\r\n description: string;\r\n }\r\n \r\n export interface IPermission {\r\n type: EPermissionType;\r\n roles: string[];\r\n }\r\n \r\n export enum EPermissionType {\r\n EDIT = 'edit',\r\n VIEW = 'view',\r\n DELETE = 'delete',\r\n ADDROW = 'addRow',\r\n }\r\n ","import { Injectable } from '@angular/core';\r\nimport { IUserInfo } from '../models/user-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n userInfoKey: string = 'CurrentUserInfo';\r\n\r\n login(response: any): boolean {\r\n if (response) {\r\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getUserInfo() {\r\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\r\n }\r\n\r\n getUserRoles() {\r\n let roles: any = [];\r\n let userInfo: IUserInfo = this.getUserInfo();\r\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\r\n roles = userInfo.roles.map((x) => x.name);\r\n }\r\n return roles;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.getUserInfo() ? true : false;\r\n }\r\n\r\n logout() {\r\n // setting Function for removing the Grid Filters When User logout. \r\n let keys = Object.keys(localStorage);\r\n if(keys && keys.length > 0){\r\n keys.forEach((key)=>{\r\n if(key.includes('SetFilters-')){\r\n localStorage.removeItem(key);\r\n }\r\n });\r\n }\r\n // removing the UserName & Password When User logout.\r\n localStorage.removeItem(this.userInfoKey);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-iframe',\r\n templateUrl: './iframe.component.html',\r\n styleUrls: ['./iframe.component.scss']\r\n})\r\nexport class IframeComponent implements OnInit,OnDestroy {\r\n url: any;\r\n id:string='';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadIFrameData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.id){\r\n const url: any = document.getElementById(this.id);\r\n this.ref.close(url.contentWindow.location.href);\r\n }\r\n }\r\n\r\n loadIFrameData(){\r\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.config.data.value\r\n );\r\n this.id = this.config.data.iFrameId;\r\n\r\n }\r\n }\r\n\r\n iframeLoaded(){\r\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\r\n\r\n if(iframeEl){\r\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\r\n }\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageLoggerService {\r\n\r\n constructor(private requestService: RequestService) { }\r\n \r\n // save page logger info\r\n savePageLoggerInfo(currentRoute, componentName: string = '') {\r\n this.requestService\r\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\r\n .subscribe(\r\n (data) => {\r\n return data;\r\n },\r\n (error) => {}\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n Optional,\r\n ElementRef,\r\n ViewChildren,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport {\r\n DynamicDialogRef,\r\n DynamicDialogConfig,\r\n DialogService,\r\n} from 'primeng/dynamicdialog';\r\nimport { saveAs } from 'file-saver';\r\nimport jsPDF from 'jspdf';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport {\r\n IGridColumn,\r\n IGridSort,\r\n IGridServerSideEvent,\r\n IGridPaginationEvent,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridColumnAction,\r\n IGridRowAction,\r\n EGridSelectionType,\r\n EGridColumnType,\r\n EGridSortDirection,\r\n IGridDataExport,\r\n EGridAggregate,\r\n ILookupValue,\r\n EGridFormatType,\r\n IGridFilterInfo,\r\n} from '../../../models/grid.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { Table } from 'primeng/table';\r\nimport { EFormatType } from '../../../models/form.model';\r\nimport { Router } from '@angular/router';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n})\r\nexport class GridComponent implements OnInit, OnChanges {\r\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\r\n @Output() inlineRowCancel = new EventEmitter();\r\n @Input() set activeTestMode(val: any) {\r\n if (val === true) {\r\n debugger;\r\n }\r\n }\r\n serverFilters: IGridServerSideEvent = {};\r\n rowsData: any[];\r\n rowsDataCopy: any[] = [];\r\n roles: string[] = [];\r\n isColumnHidden: boolean = false;\r\n rowClickData: IGridColumn;\r\n componentTableRef: any;\r\n lookupObject: ILookupValue;\r\n lookupFilterObj: any;\r\n lookupBlur: boolean = true;\r\n globalFiltersArray: any[] = [];\r\n checkAction: boolean = false;\r\n calenderPreviousValue: string = '';\r\n gridFilterObj: IGridFilterInfo;\r\n defaultDate: any;\r\n dropDownFilter: any = {};\r\n dropdownInput: boolean = false;\r\n saveAllRecord: boolean = false;\r\n editAllRecord: boolean = false;\r\n cancelAllRecords: boolean = false;\r\n addNewRowCheck: boolean = false;\r\n inEditMode: boolean = false;\r\n saveRecordArray: any[] = [];\r\n disabledSaveBtn:boolean = false;\r\n\r\n editModeChecked: boolean = true;\r\n editModeunCkecked: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Table\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n hideEditAllRowsBtn: boolean = true;\r\n\r\n //apply Add/Delete/Edit prop for the grid permission\r\n addRowPermission: boolean = true;\r\n deleteRowPermission: boolean = true;\r\n editRowPermission: boolean = true;\r\n\r\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\r\n setAggregateFooter: string = '';\r\n\r\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\r\n aggregateFooter: boolean = false;\r\n\r\n // Maintains previous state of rows being edited\r\n editRowsRecords: { [key: string]: any } = {};\r\n\r\n // Maintains record of rows being edited\r\n editingRowKeys: { [key: string]: any } = {};\r\n\r\n @ViewChild('dt') table: Table;\r\n\r\n // Selects items in the grid based on passed on data\r\n @Input() selectedRows: any = [];\r\n\r\n private globalData: IGridFilter[] = [];\r\n\r\n sortDisabled: boolean = false;\r\n\r\n // Stores selected columns\r\n private _selectedColumns: IGridColumn[] = [];\r\n\r\n // Boolean prop to allow horizontal Scroll on Table.\r\n @Input() horizontalScroll: boolean = false;\r\n\r\n // Prop to handle loader of grid\r\n @Input() public loading = false;\r\n\r\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\r\n @Input() autoLoadData: boolean = true;\r\n\r\n // Boolean prop to check where selected is allowed or not.\r\n @Input() allowSelection = false;\r\n\r\n // Set column width of selected row.\r\n @Input() selectionColumnWidth: string = '80px';\r\n \r\n // Boolean prop to hide the add row button.\r\n @Input() hideOnRowAddBtn = false;\r\n\r\n // Boolean prop to allow export to pdf.\r\n @Input() allowExportToPdf = false;\r\n\r\n // Boolean prop to allow export to excel.\r\n @Input() allowExportToExcel = false;\r\n \r\n // Boolean prop to set the action column as first column.\r\n @Input() setActionColumnAsFirst = false;\r\n\r\n // If true, enables options to perform CRUD using inline row functionality\r\n @Input() useInlineCRUD = false;\r\n\r\n // Array of row actions\r\n @Input() rowActions: IGridRowAction[] = [];\r\n\r\n // Sets selection type i.e: single/multiple selection\r\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\r\n\r\n // Unique key requires for built-in row selection of primeNg grid\r\n @Input() dataKey: string = 'id';\r\n\r\n // Flag for clear filter values button\r\n @Input() clearGridFilter = true;\r\n\r\n // Flag for search filter values button\r\n @Input() searchGridFilter = true;\r\n\r\n // Flag in case table is scrollable\r\n @Input() scrollable = true;\r\n\r\n // Sets scroll height for the table\r\n @Input() scrollHeight = '680px';\r\n\r\n // Boolean prop to allow to wrap or unWrap the grid.\r\n @Input() wordWrap: boolean = false;\r\n\r\n @Input() newGridRow: any = {};\r\n\r\n @Input() filtering = true;\r\n\r\n @Input() rowHover: boolean = false;\r\n\r\n @Input() hideFilterOptions: boolean = false;\r\n\r\n // Sets pagenation for the table Data.\r\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\r\n\r\n // set the change in the rowData\r\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Stops the loader and sets the data to grid\r\n * Clears the editing stack\r\n * Scrolls to selected element if selection found\r\n */\r\n @Input() set rows(data: any[]) {\r\n this.loading = false;\r\n if (data && data.length > 0) {\r\n if (!this.dataKey) {\r\n this.dataKey = 'id';\r\n }\r\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\r\n } else {\r\n this.rowsData = [];\r\n }\r\n\r\n // Cleaning the editing stack\r\n this.editingRowKeys = {};\r\n this.editRowsRecords = {};\r\n\r\n setTimeout(() => {\r\n if (data && data.length > 0 && this.selectedRows) {\r\n const selectedElementRef = this.gridRow.find(\r\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\r\n );\r\n selectedElementRef &&\r\n (\r\n selectedElementRef.nativeElement as HTMLTableRowElement\r\n ).scrollIntoView({ behavior: 'smooth' });\r\n }\r\n }, 0);\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, {}, false);\r\n }\r\n });\r\n }\r\n //manipulate checkbox string value to true and false.\r\n this.changeCheckboxStringValue();\r\n }\r\n\r\n // Global filter server request\r\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\r\n this.globalData = this.gridService\r\n .prepareGlobalFilters(globalFilters)\r\n ?.filter((x) => x?.value !== false);\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = this.serverFilters.filters\r\n ? this.serverFilters.filters.concat(this.globalData)\r\n : this.globalData;\r\n\r\n if (localStorage.getItem('applyFilter') === 'false') {\r\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\r\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\r\n : this.globalFiltersArray;\r\n }\r\n if (localStorage.getItem('applyFilter') === 'true') {\r\n globalFilters.forEach((globalFilter) => {\r\n this.globalFiltersArray.forEach((filterArray) => {\r\n if (\r\n filterArray.field === globalFilter.field &&\r\n globalFilter.value &&\r\n filterArray.value !== globalFilter.value\r\n ) {\r\n filterArray.value = globalFilter.value;\r\n }\r\n const findIndex = this.globalFiltersArray.findIndex(\r\n (index) => index.field === globalFilter.field && !globalFilter.value\r\n );\r\n if (findIndex !== -1) {\r\n this.globalFiltersArray.splice(findIndex, 1);\r\n }\r\n });\r\n });\r\n\r\n this.loading = this.autoLoadData;\r\n setTimeout(() => {\r\n if(this.gridService.applyFilterEvent || this.autoLoadData){\r\n this.onApplyFilter.emit();\r\n }\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n serverFilterValues.filters = serverFilterValues.filters.concat(\r\n this.globalFiltersArray\r\n );\r\n }\r\n serverFilterValues.filters = Array.from(\r\n new Set(\r\n serverFilterValues.filters\r\n .reverse()\r\n .map((filter: any) => filter.field)\r\n )\r\n ).map((field) => {\r\n return serverFilterValues.filters.find((x: any) => x.field === field);\r\n });\r\n serverFilterValues.filters = serverFilterValues.filters.filter(\r\n (obj: any) =>\r\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\r\n );\r\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\r\n // setting pagination page as first\r\n serverFilterValues.page = 1;\r\n if(this.defaultRows && this.pagination){ \r\n serverFilterValues.pageSize = this.defaultRows;\r\n }\r\n if(this.gridService.applyFilterEvent){\r\n this.onServerSideEventChange.emit(serverFilterValues)\r\n }\r\n localStorage.removeItem('applyFilter');\r\n // setting pagination page number UI\r\n this.table._first = 0;\r\n }\r\n }, 300);\r\n }\r\n }\r\n\r\n // Input decorator to receive columns to be displayed in header\r\n @Input() columns: IGridColumn[] = [];\r\n\r\n @Input() permissions: IPermission[] = [];\r\n\r\n // Optional prop to handle toggling of columns\r\n @Input() allowColumnToggle = false;\r\n\r\n // Optional prop to hide filtering of columns\r\n @Input() hideFilter = false;\r\n\r\n // Optional prop to handle lookup filters\r\n @Input() lookupFilters = false;\r\n\r\n // Optional prop to handle pagination\r\n @Input() pagination = false;\r\n\r\n // Optional prop to handle show CurrentPage Report\r\n @Input() showCurrentPageReport = false;\r\n\r\n // Displays total number of records\r\n @Input() totalRecords = 0;\r\n\r\n @Input() showconfirmDialog: boolean = true;\r\n\r\n // Sets number of rows to be shown the grid\r\n @Input() defaultRows: number;\r\n\r\n @Input() columnActions: IGridColumnAction[] = [];\r\n\r\n // Decides the grid's behavior either for client side or server side events\r\n @Input() useServerSideEvents = false;\r\n\r\n // Output event to handle row click\r\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to handle row CheckBox\r\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to trigger on sort change\r\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\r\n\r\n // Output event to trigger on filter change\r\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to invoke the multiSelection click event\r\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a grid and globalFilters called\r\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\r\n\r\n //set header checkbox value for getting all columns on stay admin\r\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a lazy event is dispatched\r\n @Output()\r\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\r\n new EventEmitter();\r\n\r\n // Output event to trigger on pagination\r\n @Output()\r\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\r\n\r\n // Dispatch output event trigger on edit row\r\n @Output() onRowUpdate = new EventEmitter();\r\n\r\n // Dispatch output event trigger cancel all rows\r\n @Output() onCancelAllRows = new EventEmitter();\r\n\r\n // Dispatch output event trigger on delete row\r\n @Output() onRowDelete = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add row\r\n @Output() onRowAdd = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add, update and delete row\r\n @Output() onGridRowActions = new EventEmitter();\r\n\r\n // set property allowCaching for LocalStorage\r\n @Input() allowCaching: boolean;\r\n\r\n // set property softCaching for setting the values of gridFilter\r\n @Input() softCaching: boolean = true;\r\n \r\n @Input() editAllRows: boolean = false;\r\n\r\n // set the row When Edit the row on Grid\r\n @Output() onGridRowEdit = new EventEmitter();\r\n\r\n // set the row When adding the new Row on Grid\r\n @Output() onGridRowAdd = new EventEmitter();\r\n\r\n isGridHidden: boolean = false;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private alertService: AlertService,\r\n private authService: AuthenticationService,\r\n private elementRef: ElementRef,\r\n public decimalPipe: DecimalPipe,\r\n private pageLoggerService: PageLoggerService,\r\n private cd: ChangeDetectorRef,\r\n private router: Router,\r\n private datePipe: DatePipe,\r\n public confirmationService: ConfirmationService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n get selectedColumns(): IGridColumn[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: IGridColumn[]) {\r\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\r\n }\r\n\r\n // browser close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.editAllRows){\r\n this.disabledSaveBtn = true;\r\n }\r\n \r\n this.componentTableRef = this.table;\r\n setTimeout(() => {\r\n this.setNumericValues();\r\n }, 500);\r\n }\r\n\r\n // apply user role permissions on grid columns\r\n applyColumnsPermissions() {\r\n if (this.columns) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.columns.forEach((column: any) => {\r\n let permissions: IPermission[] = column.permissions;\r\n // if (!permissions) permissions = this.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n // else {\r\n // let index = this.columns.findIndex(\r\n // (i) => i.field === column.field\r\n // );\r\n // if (index !== -1) {\r\n // this.columns.splice(index, 1);\r\n // }\r\n // }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n column.disabled = true;\r\n } else {\r\n column.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n column.hidden = false;\r\n column.disabled = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (column.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n // apply global permissions on entire grid\r\n applyGridPermissions() {\r\n if (this.permissions && this.permissions.length > 0) {\r\n let hasValidEditPermission = false;\r\n\r\n // check if any column has any permission\r\n let hasColumnPermissions = this.columns?.some(\r\n (x) => x?.permissions && x.permissions.length > 0\r\n );\r\n\r\n this.permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n this.useInlineCRUD = true;\r\n if (!isValid && !hasColumnPermissions) {\r\n this.isGridHidden = true;\r\n this.useInlineCRUD = false;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\r\n this.isGridHidden = false;\r\n hasValidEditPermission = true;\r\n this.editRowPermission = false;\r\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\r\n this.deleteRowPermission = false;\r\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\r\n this.addRowPermission = false;\r\n }\r\n });\r\n }\r\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\r\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\r\n }\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.allowCaching !== false && this.pagination) {\r\n this.allowCaching = this.pagination;\r\n } else {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n }\r\n // add defaultRow in pagination array\r\n if (!this.setPaginationLength.includes(this.defaultRows)) {\r\n this.setPaginationLength.unshift(this.defaultRows);\r\n }\r\n const hasColumns: boolean = this.columns && this.columns.length > 0;\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions on grid columns\r\n this.applyColumnsPermissions();\r\n\r\n // apply global permissions on entire grid\r\n this.applyGridPermissions();\r\n\r\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\r\n this.cd.detectChanges();\r\n\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n // checking filter exist or not\r\n const filter = this._selectedColumns.some(\r\n (column) => column.filtering === undefined || column.filtering === true\r\n );\r\n if (filter === false) {\r\n this.hideFilter = true;\r\n }\r\n\r\n this.columns.forEach((column: any) => {\r\n // convert string time into the date\r\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\r\n this.rowsData.forEach((row) => {\r\n if (\r\n row[column.field] &&\r\n (row[column.field].toString().includes('PM') ||\r\n row[column.field].toString().includes('AM'))\r\n ) {\r\n row[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n });\r\n }\r\n // set filter value\r\n if (column.filter && column.value && column.filtering !== false) {\r\n this.setFilterFocusOut(column);\r\n }\r\n // add \"flex-shrink: 0\" for flex-basis Style\r\n if (column.style && column.style.includes('flex-basis')) {\r\n let style = column.style + ' !important; flex-shrink: 0 !important';\r\n column.style = style.includes(';;')\r\n ? style.replace(';;', ';')\r\n : style;\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n this.setDisplayTextValue(column);\r\n\r\n //Aggregate scenario\r\n if (column.aggregate && column.aggregate.length > 0) {\r\n this.aggregateFooter = true;\r\n this.setAggregateText(column);\r\n }\r\n\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(\r\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\r\n );\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (\r\n !this.hideFilter &&\r\n searchFilters &&\r\n searchFilters.filters &&\r\n searchFilters.filters.length > 0\r\n ) {\r\n searchFilters.filters.forEach((x: any) => {\r\n if (x.value && x.field === column.field) {\r\n if(column?.filter?.type === 'calendar'){\r\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\r\n }else{\r\n column.value = x.value;\r\n }\r\n }\r\n });\r\n }\r\n // converting displayField toLowercase\r\n if (column.displayField) {\r\n column.displayField = column.displayField.toLowerCase();\r\n }\r\n // set AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n this.rowsData &&\r\n this.rowsData.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n // convert string that contains comma into arrays\r\n if (\r\n row[column.field] &&\r\n row[column.field]?.toString().includes(',')\r\n ) {\r\n row[column.field] = row[column.field]\r\n ?.toString()\r\n .split(',')\r\n ?.map((value: any) => ({ [column.displayField]: value }));\r\n }\r\n\r\n const key: any = Object.keys(row).find(\r\n (x) => x === column.field.toLowerCase()\r\n );\r\n // convert simple string into array\r\n if (!Array.isArray(row[key]) && row[key]) {\r\n row[key] = [{ [column.displayField]: row[key] }];\r\n }\r\n });\r\n }\r\n\r\n //when we add a new row, it set the default value\r\n if (column.value && Object.keys(this.newGridRow).length > 0) {\r\n const key = Object.keys(this.newGridRow).find(\r\n (x) => x === column.field\r\n );\r\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\r\n this.newGridRow[key] = column.value;\r\n }\r\n }\r\n });\r\n\r\n // Searching scenario\r\n if (change.rows?.currentValue && change.columns?.currentValue) {\r\n // Checks either column value is changes (i.e., column hidden scenario)\r\n if (\r\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\r\n JSON.stringify(this.columns).toLowerCase()\r\n ) {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n } else {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const classElement = document.getElementsByClassName('highlighted-row');\r\n if (classElement.length > 0) {\r\n classElement[0].scrollIntoView();\r\n }\r\n\r\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \r\n this.editAllRowsAtOnce();\r\n }\r\n }, 500);\r\n }\r\n const globalSearchbtn = document.getElementById('globalSearchbtn');\r\n if (globalSearchbtn) {\r\n this.searchGridFilter = false;\r\n }\r\n if(this.rowsData?.length > 0){\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n }\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n setDisplayTextValue(column: IGridColumn) {\r\n this.rowsData?.forEach((row) => {\r\n if (\r\n column.type === EGridColumnType.LINK ||\r\n EGridColumnType.DIALOG ||\r\n EGridColumnType.IFRAME\r\n ) {\r\n const field = row[column.field + '_obj'];\r\n if (column.displayText && column.displayText.includes('{')) {\r\n const displayText = column.displayText\r\n .replace('{', '')\r\n .replace('}', '');\r\n if (displayText && field) {\r\n field.displayText = row[displayText.toLowerCase()];\r\n }\r\n } else if (column.displayText && field) {\r\n field.displayText = column.displayText;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // change row key and value when using setGridRowPropValue function\r\n setRowValue(rowData: any) {\r\n Object.keys(rowData)?.forEach((row) => {\r\n if (\r\n rowData[row] &&\r\n this.typeOf(rowData[row]) === 'object' &&\r\n rowData[row]?.action?.field\r\n ) {\r\n if(rowData[row]?.extraField){\r\n delete rowData[row];\r\n } else {\r\n rowData[row] = rowData[row]?.text;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setNumericMinMxFraction(column: any) {\r\n let digitInfo = '2';\r\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\r\n digitInfo = '0'\r\n }else if(column?.format?.formatParams?.digitsInfo){\r\n digitInfo = column.format.formatParams.digitsInfo;\r\n }\r\n return digitInfo;\r\n }\r\n\r\n // set the format of currency && number && decimal && percent\r\n setNumericFormat(column: any, row: any) {\r\n row = utilities.objConvertToLower(row);\r\n let value: any = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField.toLowerCase()]\r\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \r\n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\r\n if (this.typeOf(value) === 'number' && value === 0) {\r\n value = value.toString();\r\n }\r\n let formatParams = column.format?.formatParams;\r\n let digitsInfo = formatParams?.digitsInfo;\r\n if (column.format && value) {\r\n switch (column.format?.type) {\r\n case EGridFormatType.CURRENCY:\r\n value = new Intl.NumberFormat(\r\n formatParams?.locale ? formatParams.locale : 'en-US',\r\n {\r\n style: 'currency',\r\n currency: formatParams?.currency ? formatParams.currency : 'USD',\r\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\r\n }\r\n )?.format(value);\r\n break;\r\n case EGridFormatType.DECIMAL:\r\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\r\n break;\r\n case EGridFormatType.PERCENT:\r\n if(!column.format?.formatParams?.allowCalculate){\r\n value = value+'%';\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n //Change dropdown vlue based on option label and optionvalue\r\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n this.rowsData.forEach((row) => {\r\n if (Object.keys(row)?.find((key) => key === column.field)) {\r\n if (column) {\r\n column.optionLabel = column.optionLabel\r\n ? column.optionLabel\r\n : 'label';\r\n column.optionValue = column.optionValue\r\n ? column.optionValue\r\n : 'value';\r\n }\r\n const value = column.data?.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\r\n if (value && editedRow) {\r\n row[column.field] = value[column.optionLabel];\r\n }else if(value && change === false){\r\n row[column.field] = value[column.optionLabel];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //manipulate checkbox string value to true and false.\r\n changeCheckboxStringValue() {\r\n if (\r\n this.columns &&\r\n this.rowsData &&\r\n this.rowsData.length > 0 &&\r\n this.columns.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.BOOLEAN) {\r\n if (\r\n (typeof (row[column.field] === 'string') &&\r\n (row[column.field] === '1' || row[column.field] === '0')) ||\r\n row[column.field] === 'Y' ||\r\n row[column.field] === 'N'\r\n ) {\r\n row[column.field] =\r\n row[column.field] === '1' || row[column.field] === 'Y'\r\n ? true\r\n : false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowData\r\n * Passes data of clicked row to parent\r\n */\r\n handleRowClick(rowData: any) {\r\n this.rowClickData = rowData;\r\n this.onRowClick.emit(rowData);\r\n }\r\n\r\n /**\r\n *\r\n * @param columnData\r\n * Passes sorting information to parent on sort change\r\n */\r\n handleSortChange(event: any) {\r\n let sortDirection = null;\r\n let sortField: string = '';\r\n if (event.multisortmeta && event.multisortmeta[0].order) {\r\n sortDirection =\r\n event.multisortmeta[0].order == 1\r\n ? EGridSortDirection.ASC\r\n : EGridSortDirection.DESC;\r\n sortField = event.multisortmeta[0].field;\r\n }\r\n let sorts: IGridSort = {\r\n field: sortField,\r\n direction: sortDirection as EGridSortDirection,\r\n priority: 0,\r\n };\r\n this.onSortChange.emit(sorts);\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Passes applied filters to parent on filter change\r\n */\r\n handleFilterChange(event: any) {\r\n this.columns.forEach((filter: any) => {\r\n if (!event.filters[filter.field]?.value) {\r\n filter.value = '';\r\n }\r\n });\r\n this.onFilterChange.emit(event);\r\n }\r\n\r\n /**\r\n *\r\n * @param event : Event\r\n * @param columnAction : IGridColumnAction\r\n * @param row : any\r\n * Stop the click event propagation to parent\r\n * Callbacks the row data to parent\r\n */\r\n\r\n /**\r\n * invoke onClick event & open Iframe in grid\r\n */\r\n gridIFrame(column: any, rows: any, row: any) {\r\n this.onClickEvent(column, row);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: column.header,\r\n width: '80%',\r\n height: '80%',\r\n data: {\r\n value: rows,\r\n iFrameId: column.displayText ? column.displayText : column.field,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n } else if (res && column.onChange) {\r\n column.onChange(res);\r\n }\r\n });\r\n }\r\n\r\n addNewRow(row: any, addRow: boolean = false) {\r\n this.componentTableRef = this.table;\r\n this.columns.forEach((column) => {\r\n if (\r\n column.filter &&\r\n column.component &&\r\n column.filter.type === 'calendar'\r\n ) {\r\n if (addRow) {\r\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\r\n } else {\r\n row[column.field + '_secondType'] = EGridColumnType.DATE;\r\n }\r\n }\r\n });\r\n this.rowClickData = row;\r\n this.addNewRowCheck = true;\r\n this.dropdownInput = false;\r\n this.sortDisabled = true;\r\n this.onGridRowAdd.emit(row);\r\n }\r\n\r\n /**\r\n * open Dialog in grid\r\n */\r\n openGridDialog(column: IGridColumn, row: any) {\r\n this.onClickEvent(column, row);\r\n setTimeout(() => {\r\n column.data.data = row[column.field + '_obj']?.dialogData ?? row[column.field + '_obj'];\r\n if (column.component && column.data && this.rowClickData) {\r\n const keys = Object.keys(this.rowClickData);\r\n column.data.data = utilities.autoSetLookupData(\r\n column.data.data,\r\n this.rowClickData\r\n );\r\n const ref = this.dialogService.open(column.component, column.data);\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((data: any) => {\r\n if (data && column.onReturn) {\r\n column.onReturn(data, this.rowClickData);\r\n } else if (data) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(data);\r\n }\r\n }\r\n });\r\n }\r\n }, 10);\r\n }\r\n\r\n browserCloseEvent(event: boolean = false){\r\n this.gridService.columnFocusedOut = event;\r\n }\r\n\r\n setMultiSelectData(column: IGridColumn, selectedValue:any){\r\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\r\n if(selectedValue && selectedValue?.toString()?.includes(',')){\r\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\r\n }else{\r\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\r\n }\r\n }\r\n return selectedValue;\r\n }\r\n\r\n /**\r\n * return conditional base value and title\r\n */\r\n setConditionBaseValue(row: any, column: any) {\r\n delete row['undefined'];\r\n let value:any;\r\n if(column.type == EGridColumnType.DATE){\r\n let newValue:any;\r\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\r\n newValue = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.field?.toLowerCase()]?.text\r\n } else {\r\n newValue = row[column.field];\r\n }\r\n\r\n if(newValue){\r\n if(column.timeOnly){\r\n value = this.setTimeFormat(newValue);\r\n } else {\r\n let format = '';\r\n if(column.format){\r\n if(column.format === EGridFormatType.SMALLDATE){\r\n format = 'MM/dd/yy';\r\n }else if(column.format === EGridFormatType.SHORTDATE){\r\n format = 'MM/dd/yyyy';\r\n }\r\n }\r\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\r\n }\r\n }\r\n } else {\r\n value = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField?.toLowerCase()]\r\n : row[column.field + '_obj'] &&\r\n row[column.field + '_obj'].displayText === null\r\n ? ''\r\n : row[column.field + '_obj']?.displayText\r\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \r\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \r\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\r\n : row[column.field + '_obj'].displayText\r\n : column.displayText\r\n ? column.displayText\r\n : row[column.field];\r\n }\r\n \r\n return value;\r\n }\r\n\r\n setDropdwonReadOnlyValue(row: any, column: any){\r\n delete row['undefined'];\r\n const value = row[column.displayField]\r\n ? row[column.displayField]\r\n : row[column.field];\r\n return value;\r\n }\r\n\r\n /**\r\n * open Delete Confirmation dialog when click on delete icon in Action column\r\n */\r\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\r\n event.stopPropagation();\r\n if (columnAction.tooltip.toLowerCase() === 'delete') {\r\n if (columnAction.confirmDialog === false) {\r\n columnAction.onClick(row);\r\n } else {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n columnAction.onClick(row);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n } else {\r\n columnAction.onClick(row);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param event : LazyLoadEvent\r\n * Triggers everytime a server side filter is trigger\r\n */\r\n handleServerSideEvents(event: any) {\r\n setTimeout(() => {\r\n if(this.selectedColumns && this.selectedColumns.length > 0){\r\n this.selectedColumns.forEach((x: any) => {\r\n if (event.filters[x.field]) {\r\n event.filters[x.field].value = x.value;\r\n }\r\n });\r\n }\r\n \r\n this.loading = this.autoLoadData;\r\n this.serverFilters = {\r\n filters: this.lookupFilters\r\n ? this.gridService.getGridFilters(event, this.selectedColumns)\r\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\r\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\r\n ...(this.pagination && {\r\n page: this.gridService.getGridPagination(event),\r\n pageSize: event.rows || 10,\r\n }),\r\n };\r\n\r\n if (\r\n this.serverFilters?.filters &&\r\n this.serverFilters?.filters.length > 0 &&\r\n (this.allowCaching || this.softCaching)\r\n ) {\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\r\n }\r\n }\r\n\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\r\n this.globalData\r\n );\r\n this.onServerSideEventChange.emit(serverFilterValues);\r\n }, 950);\r\n }\r\n\r\n /**\r\n * @param event\r\n * Passes applied pagination to parent on page change\r\n */\r\n handleServerSidePagination(event: IGridPaginationEvent) {\r\n this.onPageChange.emit(event);\r\n }\r\n\r\n selectedRow(row: any) {\r\n this.onRowCheckBox.emit(row);\r\n }\r\n\r\n // set time format\r\n setTimeFormat(date: any) {\r\n let value: any = '';\r\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\r\n value = utilities.setTimeInDate(date);\r\n } else {\r\n value = this.datePipe.transform(date, 'hh:mm a');\r\n }\r\n return value;\r\n }\r\n\r\n //open hyperlink in edit case\r\n openLink(url: any) {\r\n if (url) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n }\r\n\r\n setFormat(column: any, row: any) {\r\n let value: any = '';\r\n if (column.format) {\r\n value = this.datePipe.transform(\r\n column.displayText ? column.displayText : row[column.field],\r\n column.format\r\n );\r\n } else {\r\n value = column.displayText ? column.displayText : row[column.field];\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sets values to editable row\r\n * Row's data is preseved to prevent mutation\r\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\r\n */\r\n\r\n onRowEditInit(row: any) {\r\n let selectedRow = { ...row };\r\n Object.entries(selectedRow).forEach(([key, value]: any) => {\r\n this.columns.forEach((col: any) => {\r\n this.setDropdownFilterValue(col, row, key);\r\n\r\n // set the autoComplete Value in edit mode\r\n if (\r\n col.type === EGridColumnType.AUTOCOMPLETE &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n value &&\r\n value.length > 0\r\n ) {\r\n let newValue = value.map((x: any) => x[col.displayField]);\r\n if (newValue?.toString()?.includes(';')) {\r\n row[col.field] = newValue\r\n ?.toString()\r\n ?.replaceAll(';', ',')\r\n ?.split(',')\r\n ?.map((x: any) => ({ [col.displayField]: x }));\r\n }\r\n }\r\n\r\n // set lookup control field based on display field.\r\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\r\n if (col.field === key) {\r\n row[col.field] = {\r\n text: row[col.displayField],\r\n value: row[col.field],\r\n };\r\n }\r\n }\r\n\r\n if (col.type === EGridColumnType.DROPDOWN) {\r\n let option = col?.data?.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n if (\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n col.type === EGridColumnType.DATE\r\n ) {\r\n value = value?.action ? value.text : value;\r\n if (row[col.field] !== null) {\r\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\r\n row[key].text = new Date(value as string);\r\n }else{\r\n row[key] = new Date(value as string);\r\n }\r\n }\r\n\r\n // check the Minutes pattern\r\n if (\r\n (col.showTime || col.timeOnly) &&\r\n col.minutesInterval &&\r\n row[key]\r\n ) {\r\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.DIALOG &&\r\n col.filter?.type === 'calendar' &&\r\n col.field.toLowerCase() === key.toLowerCase()\r\n ) {\r\n if (value === null) {\r\n row[key] = new Date();\r\n } else {\r\n row[col.field] = new Date(value);\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.LINK &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n (col.allowSave === true || col.allowSave === undefined)\r\n ) {\r\n if (col.editLink === true) {\r\n row[key] = row[col.field + '_obj']?.hyperlink;\r\n } else if (col.editLink === false || col.editLink === undefined) {\r\n row[key] = value;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.editRowsRecords[row[this.dataKey]] = { ...row };\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n this.checkAction = true;\r\n this.dropdownInput = true;\r\n this.rowClickData = row;\r\n this.inEditMode = true;\r\n this.cancelAllRecords = false;\r\n this.saveAllRecord = false;\r\n this.sortDisabled = true;\r\n this.onGridRowEdit.emit(row);\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * set dropdown filter value\r\n */\r\n setDropdownFilterValue(col: any, row: any, key: string) {\r\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\r\n if (Object.values(col).some((value) => value == key)) {\r\n let obj = col.dropDownProp;\r\n let newFilters: any = [];\r\n\r\n if (obj.filters && obj.filters.length > 0) {\r\n obj.filters.forEach((filter: any) => {\r\n let newFilter = { ...filter };\r\n let filterKey = Object.keys(row).find((key) => {\r\n let matchKey: string = '';\r\n if (\r\n filter.value?.includes('{') &&\r\n key.toLowerCase() ===\r\n filter.value\r\n ?.toString()\r\n ?.toLowerCase()\r\n .replace('{', '')\r\n .replace('}', '')\r\n ) {\r\n matchKey = key;\r\n }\r\n return matchKey;\r\n });\r\n if (filterKey) {\r\n newFilter.value = row[filterKey];\r\n }\r\n newFilters.push(newFilter);\r\n });\r\n }\r\n\r\n this.gridService.setDropdownData(\r\n col,\r\n obj.uniqueKey,\r\n obj.valueProp,\r\n obj.labelProp,\r\n newFilters,\r\n row\r\n );\r\n\r\n let option = col.data.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Passes the edited or newly created data to parent\r\n * In case of newly created data, dataKey and isNew prop is removed\r\n */\r\n onRowEditSave(selectedRow: any) {\r\n this.selectedColumns.forEach((column: any) => {\r\n delete selectedRow[column.field + '-data'];\r\n delete selectedRow[column.field + '_secondType'];\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.displayField &&\r\n this.lookupObject\r\n ) {\r\n selectedRow[column.field] = this.lookupObject.value;\r\n }\r\n\r\n if (column.formatter) {\r\n let value: any = selectedRow[column.field];\r\n if (column.formatter === 'char') {\r\n value = value === true ? 'Y' : 'N';\r\n } else if (column.formatter === 'numeric') {\r\n value = value === true ? '1' : '0';\r\n }\r\n selectedRow = { ...selectedRow, [column.field]: value };\r\n }\r\n\r\n //convert date into time format\r\n if (\r\n column.type === EGridColumnType.DATE\r\n ) {\r\n if( column.timeOnly && column.saveAsString){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\r\n }\r\n else if(!column.timeOnly && column.showTime){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\r\n }\r\n }\r\n //convert multiselect array into string\r\n if (\r\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\r\n ) {\r\n selectedRow[column.field] = selectedRow[column.field]?.toString();\r\n }\r\n\r\n // Saving AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n column.displayField &&\r\n selectedRow[column.field]?.length > 0\r\n ) {\r\n let arr: any = [];\r\n selectedRow[column.field].forEach((row: any) => {\r\n if (row[column.displayField]) {\r\n arr.push(row[column.displayField]);\r\n }\r\n });\r\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\r\n }\r\n });\r\n\r\n let row: any = { ...selectedRow };\r\n let keys = Object.keys(row);\r\n keys.forEach((key) => {\r\n if (this.lookupObject && this.lookupObject.field) {\r\n row[this.lookupObject.field] = this.lookupObject.value;\r\n }\r\n if (key.includes('_obj')) {\r\n if (this.checkAction === false) {\r\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\r\n this.checkAction = true;\r\n }\r\n let obj: any = row[key];\r\n if (\r\n obj &&\r\n (obj.type === 'link' ||\r\n obj.type === 'iframe' ||\r\n obj.type === 'dialog')\r\n ) {\r\n delete row[key];\r\n }\r\n }\r\n });\r\n /**\r\n * just emit those fields who exist in the tabel\r\n */\r\n this.setRowValue(row);\r\n let obj: any = {};\r\n this.columns.forEach((column: any) => {\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.field &&\r\n typeof row[column.field] === 'object'\r\n ) {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n if (\r\n (column.allowSave === true || column.allowSave === undefined) &&\r\n (column.editable === true || column.editable === undefined)\r\n ) {\r\n obj[column.field] = row[column.field];\r\n if (\r\n column.type === EGridColumnType.DIALOG &&\r\n column.filter?.type === 'calendar'\r\n ) {\r\n obj[column.field] = this.datePipe.transform(\r\n obj[column.field],\r\n 'yyyy-MM-ddT00:00:00.000Z'\r\n );\r\n }\r\n\r\n //Set Decimal Fraction Value\r\n if (\r\n column.format &&\r\n column.format.type === EFormatType.DECIMAL &&\r\n row[column.field] &&\r\n !row[column.field].toString().includes('.')\r\n ) {\r\n let digitsInfo = '.00';\r\n let zero = '0';\r\n const formatParams = column.format?.formatParams;\r\n const fracDigits = column?.format?.formatParams?.digitsInfo;\r\n if (fracDigits) {\r\n for (let i = 1; i < fracDigits; i++) {\r\n zero = zero + '0';\r\n }\r\n digitsInfo = '.' + zero;\r\n }\r\n obj[column.field] = row[column.field] + digitsInfo;\r\n }\r\n } else if (\r\n row.isNew &&\r\n (column.allowSave === false || column.editable === false)\r\n ) {\r\n delete row[column.field];\r\n }\r\n });\r\n delete selectedRow['undefined'];\r\n this.gridService.checkValidity(this.columns, row);\r\n const isValid = this.gridValidation(this.columns, row);\r\n if (isValid) {\r\n // set the grid updated/inserted data\r\n this.rowActionEvents(selectedRow);\r\n this.browserCloseEvent(false);\r\n if (row.isNew) {\r\n const { isNew, ...newRowObj } = row;\r\n delete newRowObj[this.dataKey];\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(newRowObj);\r\n }else{\r\n this.onRowAdd.emit(newRowObj);\r\n }\r\n } else {\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(obj);\r\n } else {\r\n this.onRowUpdate.emit(obj);\r\n }\r\n }\r\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\r\n } else {\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n }\r\n // if all rows in read only mode then show editAllRows button. \r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.inEditMode = false;\r\n this.hideEditAllRowsBtn = true;\r\n this.sortDisabled = false;\r\n }\r\n this.selectedColumns.forEach((column: any) => {\r\n // convert date into time\r\n if (\r\n selectedRow[column.field] &&\r\n (selectedRow[column.field]?.toString()?.includes('PM') ||\r\n selectedRow[column.field]?.toString()?.includes('AM'))\r\n ) {\r\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n if (\r\n column.type === EGridColumnType.DROPDOWN &&\r\n column.optionLabel &&\r\n column.optionValue\r\n ) {\r\n this.setDropdownValue(column, selectedRow);\r\n }\r\n });\r\n this.addNewRowCheck = false;\r\n }\r\n\r\n // check the validation of the field\r\n gridValidation(columns: any, row: any): boolean {\r\n if (!this.gridService.checkValidity(columns, row)) {\r\n let isRequired = columns.some(\r\n (column: any) => column.errorMessage && !row[column.field]\r\n );\r\n if (isRequired) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else {\r\n this.alertService.error('Some fields are invalid', 'INVALID FIELD');\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row : any\r\n * @param index : number\r\n * Clears out the edit row and replace with readable one\r\n */\r\n onRowEditCancel(row: any, index: number) {\r\n if (row.isNew) {\r\n this.rowsData.splice(index, 1);\r\n } else {\r\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\r\n delete this.editRowsRecords[row[this.dataKey]];\r\n }\r\n delete this.editingRowKeys[row[this.dataKey]];\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, row);\r\n }\r\n });\r\n this.inEditMode = false;\r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.sortDisabled = false;\r\n } \r\n this.addNewRowCheck = false;\r\n this.inlineRowCancel.emit(row);\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sends the row payload to parent for deletion\r\n */\r\n\r\n /**\r\n *set the gridData on row actions events\r\n */\r\n rowActionEvents(rowInfo, deleteRow: boolean = false){\r\n let action: string = '';\r\n let gridRowsData: any[] = [...this.rowsData];\r\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\r\n if(index > -1){\r\n if(deleteRow){ \r\n gridRowsData.splice(index, 1);\r\n this.rowsData = [...gridRowsData];\r\n action = 'delete';\r\n } else {\r\n if(this.addNewRowCheck){\r\n action = 'insert';\r\n }else{\r\n action = 'update';\r\n }\r\n if(this.onGridRowActions.observers.length !== 0){\r\n rowInfo['rowAction']= action;\r\n }\r\n gridRowsData[index] = rowInfo;\r\n }\r\n }\r\n this.rowsChange.emit(this.rowsData);\r\n this.onGridRowActions.emit(gridRowsData);\r\n }\r\n\r\n /**\r\n * open Delete confirmation dialog when trying to delete row\r\n */\r\n deleteRecord(row: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handleInlineCRUD',\r\n accept: () => {\r\n if (this.useServerSideEvents) {\r\n this.loading = true;\r\n }\r\n // set the grid deleted data \r\n this.rowActionEvents(row, true);\r\n this.onRowDelete.emit(row);\r\n this.confirmationService.close();\r\n this.inEditMode = false;\r\n this.loading = false;\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * To set disabled the control\r\n */\r\n allowDisabled(column: any, row: any): boolean {\r\n let value: boolean = false;\r\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\r\n if (\r\n row[column.field]?.action &&\r\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\r\n ) {\r\n value = true;\r\n }\r\n } else if (column.disabled || column.editable === false) {\r\n value = true;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * To set aggregate in grid footer\r\n */\r\n setAggregateText(column: IGridColumn) {\r\n if (column?.aggregate) {\r\n column.aggregate.forEach((col: any) => {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n let columnType: EGridAggregate = col.type;\r\n if (columnType === EGridAggregate.COUNT) {\r\n const count = this.rowsData.length;\r\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\r\n }\r\n\r\n if (\r\n columnType === EGridAggregate.SUM ||\r\n columnType === EGridAggregate.AVERAGE\r\n ) {\r\n const colValues: number[] = this.getColumnValues(column);\r\n if (colValues && colValues.length > 0) {\r\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\r\n if (columnType === EGridAggregate.SUM) {\r\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\r\n }\r\n if (columnType === EGridAggregate.AVERAGE) {\r\n const average = sum / colValues.length || 0;\r\n col.aggrValue = this.setAggregateFooterText(\r\n col,\r\n average,\r\n 'Avg'\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n col.aggrValue = '';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * set grid Aggregate values\r\n */\r\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\r\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\r\n const digitsInfo = column.format?.digitsInfo;\r\n const caption: string =\r\n column.caption?.length > 0 ? column.caption : defaultCaption;\r\n\r\n const decimalPoint = isDecimalFormat\r\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\r\n : value?.toFixed(0);\r\n return `${caption} ${decimalPoint\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\r\n }\r\n\r\n /**\r\n * set decimat and numeric values\r\n */\r\n setNumericValues() {\r\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.NUMERIC) {\r\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\r\n this.rowsData.forEach((row) => {\r\n if (column?.format?.type === 'percent') {\r\n if (column.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n row[column.field] = row[column.field] / 100;\r\n }\r\n } else if (digitsInfo) {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\r\n }\r\n } else if (column?.format?.type === 'decimal') {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * get column value based on column field\r\n */\r\n getColumnValues(column: IGridColumn) {\r\n let arr: any = [];\r\n this.rowsData.forEach((row) => {\r\n let keys = Object.keys(row);\r\n keys.map((key) => {\r\n if (column.field === key) {\r\n arr.push(row[key]);\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to PDF\r\n */\r\n exportPdf() {\r\n var exportData = this.setExportData([...this.rowsData], true);\r\n let doc = new jsPDF('p', 'pt');\r\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\r\n doc.save('Export.pdf');\r\n }\r\n\r\n /**\r\n * Sub-function to set rows for export to Pdf, and Excel\r\n * @rows param for rows\r\n * @isExcel param for export to excel indication\r\n */\r\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\r\n const headings: any = this.columns.map((column) => column.field);\r\n rows.forEach((row) => {\r\n for (var prop in row) {\r\n if (!headings.includes(prop)) {\r\n delete row[prop];\r\n }\r\n if (isPdf) {\r\n row[prop] =\r\n !row[prop] && typeof row[prop] !== 'boolean'\r\n ? ''\r\n : row[prop].toString();\r\n }\r\n }\r\n });\r\n return { rows, headings };\r\n }\r\n\r\n /**\r\n *\r\n * Export to Excel\r\n */\r\n exportExcel() {\r\n let exportData: any = this.exportDataToExcel();\r\n import('xlsx').then((xlsx) => {\r\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\r\n\r\n let rowIndex = 0;\r\n exportData.forEach((row: any) => {\r\n let colIndex = 0;\r\n this.selectedColumns.forEach((col: any) => {\r\n const cellValue: string = row[col.header];\r\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\r\n const linkText: string = cellValue.split('|')[0];\r\n let linkUrl: string = cellValue.split('|')[1];\r\n if (linkUrl && !linkUrl.startsWith('http')) {\r\n if (!linkUrl.startsWith('/')) {\r\n linkUrl = '/' + linkUrl;\r\n }\r\n\r\n linkUrl =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n linkUrl;\r\n }\r\n\r\n const cellAddress = xlsx.utils.encode_cell({\r\n c: colIndex,\r\n r: rowIndex + 1,\r\n });\r\n\r\n worksheet[cellAddress] = {\r\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\r\n };\r\n }\r\n\r\n colIndex++;\r\n });\r\n\r\n rowIndex++;\r\n });\r\n\r\n const workbook = {\r\n Sheets: { sheet1: worksheet },\r\n SheetNames: ['sheet1'],\r\n };\r\n const excelBuffer: any = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array',\r\n });\r\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\r\n });\r\n }\r\n\r\n exportDataToExcel() {\r\n let arr: any = [];\r\n this.rowsData.forEach((row: any) => {\r\n let obj: any = {};\r\n this.selectedColumns.forEach((column: any) => {\r\n const gridHeader = column.header;\r\n if (column.type === EGridColumnType.LINK) {\r\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\r\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\r\n } else {\r\n obj[gridHeader] = row[column.field];\r\n }\r\n });\r\n\r\n arr.push(obj);\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to excel (sub-method)\r\n */\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import('file-saver').then((FileSaver) => {\r\n let EXCEL_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\r\n saveAs(data, fileName);\r\n });\r\n }\r\n\r\n /**\r\n *set config data of lookup control dialog\r\n */\r\n setLookupDialogConfig(row: any, column: any, data: any) {\r\n let selection: string = '';\r\n if (row[column.field] && typeof row[column.field] === 'object') {\r\n selection = row[column.field].text;\r\n } else if (column.displayField && row[column.displayField]) {\r\n selection = row[column.displayField];\r\n } else {\r\n selection = row[column.field];\r\n }\r\n\r\n if (column.field && typeof row[column.field] === 'object') {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n\r\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\r\n let obj = utilities.autoSetLookupData(data, row);\r\n row[column.field + '-data'] = obj;\r\n }\r\n return {\r\n rowData: row[column.field + '-data'],\r\n selection: selection,\r\n column: column,\r\n };\r\n }\r\n\r\n /**\r\n * open link on lookupControl control in read only mode when editLink set true\r\n */\r\n openLookupHyperlink(column: IGridColumn, row: any) {\r\n if (column.editLink === true && column.component) {\r\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\r\n obj['component'] = column.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open lookup Dialog\r\n */\r\n openLookupDialog(column: any) {\r\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\r\n const ref = this.dialogService.open(column.component, {\r\n ...columnData,\r\n data: {\r\n selection: column.selection,\r\n field: column.column.field,\r\n valueField: column.column.lookupControl?.data?.valueField,\r\n ...column.rowData,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return ref;\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(column: any, row?: any) {\r\n this.onClickEvent(column, row);\r\n this.lookupObject = { text: '', value: '', field: '' };\r\n if (column.lookupControl) {\r\n let obj: any = this.setLookupDialogConfig(\r\n row,\r\n column,\r\n column.lookupControl.data?.data\r\n );\r\n obj['component'] = column.lookupControl.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe(\r\n (res) => {\r\n if (column.onReturn) {\r\n column.onReturn(res, row);\r\n }\r\n if (res) {\r\n let value = utilities.setDialogResponse(\r\n column,\r\n column.lookupControl,\r\n res\r\n );\r\n if (column.displayField) {\r\n row[column.field] = {\r\n text: res[column.displayField.toLowerCase()],\r\n value: res[column.field.toLowerCase()],\r\n };\r\n this.lookupObject = row[column.field];\r\n } else if (value && value.value) {\r\n value['field'] = column.field;\r\n row[column.field] = value.value;\r\n } else {\r\n row[column.field] = res[column.field.toLowerCase()];\r\n }\r\n }\r\n if (row[column.field] !== obj.selection) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n setFilterLookup(column: any) {\r\n this.gridService.setLookUpFilter(column, this.dialogService);\r\n }\r\n\r\n // Check calender value is changed or not\r\n calenderChangeEvent(column: any, row: any) {\r\n let valueChange: boolean = false;\r\n if (\r\n column.timeOnly &&\r\n this.datePipe.transform(row[column.field], 'hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n column.showTime &&\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\r\n ) {\r\n valueChange = true;\r\n }\r\n if(valueChange){\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n this.calenderPreviousValue = '';\r\n }\r\n\r\n onFocusOutEvent(column: IGridColumn, row: any) {\r\n this.gridService.checkValidity([column], row);\r\n if (column.type === EGridColumnType.DATE) {\r\n this.calenderChangeEvent(column, row);\r\n }\r\n if (column.onFocusOut) {\r\n column.onFocusOut(row);\r\n } else if (\r\n column.onReturn &&\r\n column.type !== EGridColumnType.LOOKUP_INPUT\r\n ) {\r\n column.onReturn(row);\r\n }\r\n }\r\n\r\n setFilterFocusOut(col: any, filter?: any, event?: any) {\r\n this.gridFilterObj = { column: col, filter: filter, event: event };\r\n const newColumn: any = { ...col };\r\n //change filter calender format\r\n if (newColumn.type === 'date' && newColumn.value) {\r\n newColumn.value = this.datePipe.transform(\r\n col.value.toString().trim(),\r\n 'yyyy-MM-dd'\r\n );\r\n }\r\n setTimeout(\r\n () => {\r\n this.filterObj(newColumn);\r\n },\r\n newColumn.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\r\n );\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n }\r\n\r\n filterObj(col: any) {\r\n const obj = {\r\n field: col.field,\r\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\r\n operator: col.operator ? col.operator : 'and',\r\n tableAlias: col.tableAlias ? col.tableAlias : '',\r\n value: col.value,\r\n };\r\n this.globalFiltersArray.push(obj);\r\n }\r\n\r\n applyEnterEvent(filter: any, event: any, column: any) {\r\n this.gridService.applyFilterEvent = true;\r\n this.autoLoadData = true;\r\n this.onApplyFilter.emit();\r\n this.filterObj(column);\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\r\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\r\n } else {\r\n filter(event.target.value);\r\n }\r\n }\r\n\r\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\r\n if (column.value === null) {\r\n this.removeNullFilters(column);\r\n this.setFilterFocusOut(column, filter, event);\r\n }\r\n }\r\n\r\n backspaceEvent(event: any, column: any) {\r\n if (\r\n event.key === 'Backspace' &&\r\n (column.value?.toString().length === 1 ||\r\n column.value?.toString() === '' ||\r\n column.value === null)\r\n ) {\r\n this.removeNullFilters(column);\r\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\r\n this.removeNullFilters(column);\r\n }\r\n }\r\n\r\n removeNullFilters(column: any) {\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n let arr = [...this.globalFiltersArray];\r\n let index = arr.findIndex((i) => i.field === column.field);\r\n arr.splice(index, 1);\r\n this.globalFiltersArray = arr;\r\n }\r\n }\r\n\r\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\r\n removingFilters(event: any, column: IGridColumn) {\r\n if (\r\n (event.key === 'Backspace' || event.key === 'Delete') &&\r\n column.value?.toString().length === 0\r\n ) {\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (searchFilters && searchFilters.filters) {\r\n if (searchFilters.filters.length > 0) {\r\n let index = searchFilters.filters.findIndex(\r\n (x: any) => x.field === column.field\r\n );\r\n if (index !== -1) {\r\n if (searchFilters.filters.length === 1) {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n } else {\r\n searchFilters.filters.splice(index, 1);\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Add Click Button Event on Grid.\r\n onClickButton(column: any, row: any) {\r\n this.openGridDialog(column, row);\r\n }\r\n\r\n // Invoke onClick Event.\r\n onClickEvent(column: any, row: any) {\r\n if (column.type === EGridColumnType.DATE && row[column.field]) {\r\n this.calenderPreviousValue = row[column.field];\r\n } else if (\r\n !row[column.field] &&\r\n column.type === EGridColumnType.DATE &&\r\n (column.showTime || column.timeOnly) &&\r\n column.minutesInterval\r\n ) {\r\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n if (column && column.onClick) {\r\n column.onClick(row);\r\n }\r\n }\r\n\r\n // set the select value of multi-select\r\n showOption(column, row){\r\n if(row[column.field]){\r\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\r\n row[column.field] = [row[column.field]];\r\n } else if(row[column.field].includes(',')){\r\n row[column.field] = row[column.field].split(',');\r\n }\r\n }\r\n }\r\n\r\n onClearValue(column, row){\r\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\r\n row[column.field] = null;\r\n }\r\n }\r\n\r\n // Invoke onChange Event\r\n onChangeEvent(column: any, row: any) {\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n this.displayFieldDropdownValue(column, row);\r\n this.onClearValue(column, row);\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\r\n row[column.field] = event;\r\n }\r\n\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n displayFieldDropdownValue(column: any, row: any) {\r\n if (\r\n column?.type === EGridColumnType.DROPDOWN &&\r\n column.displayField &&\r\n column.displayField?.length > 0\r\n ) {\r\n const key: any = Object.keys(row)?.find(\r\n (rowInfo) =>\r\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\r\n );\r\n const displayFieldValue = column.data.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n if (key && displayFieldValue) {\r\n row[key] = displayFieldValue[column.optionLabel];\r\n }\r\n }\r\n }\r\n\r\n // Add autoSearch on Grid.\r\n autoSearch(event: any, column: any, row: any) {\r\n if (event && column && row) {\r\n column.onReturn(event.query, column, row);\r\n }\r\n }\r\n\r\n // Remove FilterValues\r\n cleargridFiltersValue() {\r\n const globalFilterClearValueBtn = document.getElementById(\r\n 'clearGlobalFilterBtn'\r\n );\r\n if (globalFilterClearValueBtn) {\r\n globalFilterClearValueBtn.click();\r\n }\r\n if (this.selectedColumns && this.selectedColumns.length > 0) {\r\n this.selectedColumns.forEach((col) => {\r\n col.value = null;\r\n this.filterObj(col);\r\n });\r\n }\r\n }\r\n\r\n editAllRowsAtOnce() {\r\n if(this.editRowPermission){\r\n if (this.getClassForEditAllRows('editRow')) {\r\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\r\n this.editAllRecord = true;\r\n }\r\n this.hideEditAllRowsBtn = false;\r\n this.sortDisabled = true;\r\n }\r\n }\r\n }\r\n\r\n saveAllRowsAtOnce() {\r\n this.getClassForEditAllRows('saveRow');\r\n }\r\n\r\n // reset the grid rowsValue to orignal values\r\n cancelAllRowsAtOnce() {\r\n this.rowsData = [...this.rowsDataCopy];\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n this.selectedColumns?.forEach((column)=>{\r\n if(column.type === EGridColumnType.DATE){\r\n this.rowsData?.forEach((row)=>{\r\n if(row[column.field]){\r\n row[column.field]= new Date(row[column.field]);\r\n }\r\n })\r\n }\r\n });\r\n this.onCancelAllRows.emit(this.rowsData);\r\n }\r\n\r\n getClassForEditAllRows(className: string = '') {\r\n let success: boolean = false;\r\n const getBtns: any =\r\n this.elementRef?.nativeElement?.getElementsByClassName(className);\r\n if (getBtns && getBtns.length > 0) {\r\n success = true;\r\n if (className === 'saveRow') {\r\n this.editAllRecord = false;\r\n this.saveAllRecord = true;\r\n const records$ = [];\r\n setTimeout(()=>{\r\n for (let item of getBtns) {\r\n const rowSave = new Promise((resolve, reject) => { \r\n item.click();\r\n resolve(item);\r\n });\r\n records$.push(rowSave);\r\n }\r\n Promise.all(records$).then((response) => {\r\n console.log(\"AAAA\");\r\n this.onRowUpdate.emit(this.saveRecordArray);\r\n this.saveRecordArray = [];\r\n });\r\n },20)\r\n } else {\r\n this.saveAllRecord = false;\r\n for (let item of getBtns) {\r\n if(className == 'cancelRow'){\r\n setTimeout(() => {\r\n item.click();\r\n }, 50);\r\n }else{\r\n item.click();\r\n }\r\n }\r\n }\r\n }\r\n return success;\r\n }\r\n\r\n //Focused calender input on select date\r\n selectDate(column: any) {\r\n document.getElementById(column.field)?.focus();\r\n }\r\n\r\n //apply filter on grid when search btn clicked\r\n applyGirdFilterBtn() {\r\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\r\n this.applyEnterEvent(\r\n this.gridFilterObj.filter,\r\n this.gridFilterObj.event,\r\n this.gridFilterObj.column\r\n );\r\n }\r\n }\r\n\r\n // invoke multiSelection click event\r\n multiCheckBoxOnclick(rowInfo: any) {\r\n if (rowInfo) {\r\n this.onMultiSelectionChange.emit(rowInfo);\r\n }\r\n }\r\n\r\n applyDropdownFilter(filter: any, event: any) {\r\n filter(event.target);\r\n }\r\n\r\n searchDropdownFilter(filter: any, event: any, column: any) {\r\n this.setFilterFocusOut(column, filter, event);\r\n this.dropDownFilter = { filter: filter, event: event, column: column };\r\n if (column.allowSearch !== true) {\r\n this.applyDropdownFilter(filter, event);\r\n }\r\n }\r\n\r\n lookupClearValue(column: any, row?: any) {\r\n if (row) {\r\n row[column.field] = '';\r\n } else {\r\n column.value = '';\r\n this.setFilterFocusOut(column);\r\n }\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n // invoke when click header checkbox filter\r\n clickCheckBoxFilter(column: IGridColumn) {\r\n if (this.editAllRecord) {\r\n if (\r\n column.type === EGridColumnType.BOOLEAN &&\r\n column?.filter?.type === 'checkbox' && column.filtering != false\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n row[column.field] = column.value;\r\n });\r\n }\r\n }\r\n }\r\n //set header checkbox value for getting all columns on stay admin\r\n setHeaderCheckBoxValue(value: any){\r\n this.isIncludedAllColumns.emit(value);\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(column: any, row: any){\r\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if( year && year.length === 4){\r\n this.calendarFormat= 'mm/dd/yy';\r\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\r\n } else if(year && year.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EValidator,\r\n IFormField,\r\n EFormControl,\r\n AddFormField,\r\n ISetFilter,\r\n IDropDownRequest,\r\n IListFilter,\r\n IReportBtn,\r\n} from '../models/form.model';\r\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\r\nimport { HyperlinkService } from '../services/hyperlink.service';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from './utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormService {\r\n public fieldFocusedOut:boolean = false;\r\n constructor(\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService: DropdownService,\r\n private alertService: AlertService,\r\n private requestService: RequestService\r\n ) { }\r\n\r\n checkValidity(formFields: IFormField[]): boolean {\r\n let isValid: boolean = true;\r\n\r\n formFields.map((item: IFormField) => {\r\n if (item.validations && !item.disabled) {\r\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\r\n item.value = item.value.value;\r\n }\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\r\n const valid =\r\n item.validations && typeof item.label === 'object'\r\n ? item.label.name\r\n : item.label;\r\n if (\r\n item.validations[i].type == EValidator.REQUIRED &&\r\n !item.value &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = item.value\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINLENGTH &&\r\n item.value.length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXLENGTH &&\r\n item.value.length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value < item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value > item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PATTERN &&\r\n !item.value.match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.NUMERIC &&\r\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PHONE &&\r\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.DECIMAL &&\r\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.EMAIL &&\r\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n item.value &&\r\n item.value.match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n addFormField(fieldInfo: IFormField): IFormField {\r\n if (!fieldInfo.label) {\r\n fieldInfo.label = fieldInfo.field;\r\n }\r\n\r\n const formField: any = {\r\n label: fieldInfo.label,\r\n field: fieldInfo.field,\r\n displayField: fieldInfo.displayField,\r\n control: fieldInfo.control,\r\n showOption: fieldInfo.showOption,\r\n column: fieldInfo.column,\r\n row: fieldInfo.row,\r\n minutesInterval: fieldInfo.minutesInterval,\r\n value: fieldInfo.value,\r\n format: fieldInfo.format,\r\n hidden: fieldInfo.hidden,\r\n permissions: fieldInfo.permissions,\r\n validations: fieldInfo.validations,\r\n id: fieldInfo.id,\r\n hyperlink: fieldInfo.hyperlink,\r\n data: fieldInfo.data,\r\n lookupControl: fieldInfo.lookupControl,\r\n componentControl: fieldInfo.componentControl,\r\n optionLabel: fieldInfo.optionLabel,\r\n optionValue: fieldInfo.optionValue,\r\n saveAsString: fieldInfo.saveAsString,\r\n showAllValue: fieldInfo.showAllValue,\r\n onClick: fieldInfo.onClick,\r\n onReturn: fieldInfo.onReturn,\r\n onFocusOut: fieldInfo.onFocusOut,\r\n onChange: fieldInfo.onChange,\r\n tables: fieldInfo.tables,\r\n disabled: fieldInfo.disabled,\r\n disabledText: fieldInfo.disabledText,\r\n timeOnly: fieldInfo.timeOnly,\r\n monthOnly: fieldInfo.monthOnly,\r\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\r\n height: fieldInfo.height,\r\n showBottomBorder: fieldInfo.showBottomBorder,\r\n allowSearch: fieldInfo.allowSearch,\r\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\r\n SetfileTypes: fieldInfo.SetfileTypes,\r\n icon: fieldInfo.icon,\r\n color: fieldInfo.color,\r\n card: fieldInfo.card,\r\n uniqueKey: fieldInfo.uniqueKey,\r\n azureContainer: fieldInfo.azureContainer,\r\n class: fieldInfo.class\r\n };\r\n\r\n return formField;\r\n }\r\n\r\n addCheckbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CHECKBOX;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n fieldInfo.disabled = true;\r\n fieldInfo.showBottomBorder = true;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NUMERIC;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addSpaceField(fieldInfo: AddFormField): IFormField{\r\n fieldInfo.control = EFormControl.SPACER;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextArea(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.TEXTAREA;\r\n return this.addFormField(fieldInfo);\r\n }\r\n \r\n // Adding Report button for DynamicForm\r\n addReportBtn(fieldInfo: IReportBtn) {\r\n fieldInfo.control = EFormControl.REPORT;\r\n return fieldInfo;\r\n }\r\n\r\n addNoteField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NOTE_FIELD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHyperlink(fieldInfo: AddFormField) {\r\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n return this.addFormField(fieldInfo);\r\n }else{return this.hyperlinkService.buildUrl(\r\n fieldInfo?.hyperlink?.linkId,\r\n fieldInfo.hyperlink?.params\r\n ).then((res: any) => {\r\n const params = fieldInfo?.hyperlink?.params;\r\n const link = res;\r\n if(res && params){\r\n Object.keys(params).forEach((key)=>{\r\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\r\n res = res.replace('{{'+key+'}}', params[key])\r\n } \r\n })\r\n }\r\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\r\n fieldInfo.hyperlink.link = res;\r\n }\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n let obj: any = this.addFormField(fieldInfo);\r\n obj['orignalLink'] = link;\r\n return obj;\r\n });\r\n }\r\n}\r\n\r\n addCalendar(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CALENDAR;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // add AutoComplete for Form\r\n addAutoComplete(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Search AutoComplete Data for form\r\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n formField.data = [...response.records];\r\n });\r\n }\r\n\r\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\r\n fieldInfo.control = EFormControl.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\r\n }\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\r\n return this.dropdownService\r\n .setDropDownList(\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n )\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error: any) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n addLookUp(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDialog(fieldInfo: AddFormField): IFormField {\r\n return this.addLookUp(fieldInfo);\r\n }\r\n\r\n addComponent(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.COMPONENT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHeader(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SECTION_HEADER;\r\n fieldInfo.class = 'form-header';\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addMultiSelect(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.MULTISELECT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addFileUpload(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.FILE_UPLOAD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayFile(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.DISPLAY_FILE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding OnClick Button Function for DynamicForm\r\n addButton(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.ADD_BUTTON;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding Switch Function for DynamicForm\r\n addSwitch(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SWITCH;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // start add new card functionality\r\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\r\n fieldInfo.control = EFormControl.CARD;\r\n if (cardData && cardData.uniqueKey) {\r\n if(cardData.sorts?.length > 0){\r\n cardData.sorts.forEach((res) =>{\r\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\r\n });\r\n } \r\n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\r\n return this.getCardList(uniqueKey, filters, sorts)\r\n .then((res: any) => {\r\n fieldInfo.card.data = res.records;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\r\n return new Promise((resolve, reject) => {\r\n this.requestService\r\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n return resolve(response);\r\n } else {\r\n return resolve([]);\r\n }\r\n },\r\n ({ error }: any) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n }\r\n // End add new card functionality\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss'],\r\n})\r\nexport class NotesComponent implements OnInit {\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) { }\r\n\r\n public note: string = '';\r\n public disabledText: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.note = this.config.data.value ?? '';\r\n this.disabledText = this.config.data.disabledText;\r\n }\r\n\r\n handleCancel() {\r\n this.ref.close();\r\n }\r\n\r\n handleOk() {\r\n this.ref.close(this.note);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { NotesComponent } from '../../shared/notes/notes.component';\r\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { IDictionary } from '../../../models/common.model';\r\nimport { Router } from '@angular/router';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DatePipe } from '@angular/common';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss']\r\n})\r\nexport class FormComponent implements OnInit {\r\n @Input() stickyActions: boolean = true;\r\n @Input() form: IDynamicForm;\r\n @Input() hideSaveButton: boolean = false;\r\n @Input() hideCancelButton: boolean = false;\r\n @Input() loading:boolean = false;\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\r\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\r\n dynamicComponentContainer: QueryList<ViewContainerRef>;\r\n\r\n dynamicCase = EFormControl;\r\n permissionType = EPermissionType;\r\n roles: string[] = [];\r\n isFormDisabled: boolean = false;\r\n isFormHidden: boolean = false;\r\n componentsList: IDictionary[] = [];\r\n fileUploadUrls: any;\r\n showfileUploadError: boolean = false;\r\n cardList: IDynamicCard;\r\n calenderPreviousValue: string = '';\r\n defaultDate: string = '';\r\n lookupFocusOut: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Form\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private formService: FormService,\r\n private alertService: AlertService,\r\n private sanitizer: DomSanitizer,\r\n public dialogService: DialogService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private el: ElementRef,\r\n private datePipe: DatePipe,\r\n private gridService: GridService,\r\n private pageLoggerService: PageLoggerService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n \r\n // browser tab close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n // start cardList reference break functionality\r\n let formValues = { ...this.form };\r\n formValues.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field:any) => {\r\n\t // convert string time into date\r\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\r\n field['previousValue'] = field?.value;\r\n }\r\n if(field?.control === EFormControl.CALENDAR &&\r\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\r\n field.value = utilities.setTimeInDate(field.value);\r\n }\r\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\r\n const value = field?.value.map((value: any)=> value[field?.displayField]);\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\r\n }\r\n }\r\n // convert the multiSelect string value in array\r\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\r\n if(field.value?.toString()?.includes(\",\")){\r\n field.value = field.value?.toString()?.split(\",\");\r\n }else {\r\n field.value = [field.value];\r\n }\r\n }\r\n if (field?.control === EFormControl.CARD) {\r\n this.form = {};\r\n setTimeout(() => {\r\n field?.card?.data?.forEach((x: any) => {\r\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\r\n x.dynamicForm = {\r\n formSections: JSON.parse(\r\n JSON.stringify(field?.card?.formSections)\r\n ),\r\n };\r\n };\r\n });\r\n this.form = formValues;\r\n }, 500);\r\n }\r\n // End cardList reference break functionality\r\n if (field?.control === EFormControl.CHECKBOX) {\r\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\r\n }\r\n });\r\n }\r\n });\r\n // apply user role permissions on form\r\n this.roles = this.authService.getUserRoles();\r\n this.applyUserPermissions();\r\n this.applyRequiredFieldValidation();\r\n this.removeWhiteSpaces();\r\n this.setHyperlinkComponentRoute();\r\n setTimeout(() => {this.setCalanderWidth();}, 3000);\r\n }\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(formField: IFormField){\r\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n}\r\n\r\n// set percent and decimal values\r\n setnumericvalues() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if (field?.control === EFormControl.NUMERIC) {\r\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\r\n if (field?.format?.type === 'percent') {\r\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n field.value = field.value / 100;\r\n }\r\n } else if (digitsInfo) {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo);\r\n }\r\n } else if (field?.format?.type === 'decimal') {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Checks if form has any field with dynamic component;\r\n * Creates component instance using componentFactoryResolver\r\n * Injects component through viewRef.createComponent()\r\n * Passes data to component\r\n * Subscribes to the events passed to the components\r\n * Finally forces Angular to detech changes\r\n */\r\n loadDynamicComponents() {\r\n this.componentsList = [];\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field:any, fieldIndex) => {\r\n if (field.control === EFormControl.COMPONENT) {\r\n const viewRef:any = this.dynamicComponentContainer.find(\r\n (x) =>\r\n x.element.nativeElement.id ==\r\n `${formSection.name}-${fieldIndex}`\r\n );\r\n const {\r\n component: Component,\r\n data,\r\n handlers,\r\n } = field.componentControl;\r\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\r\n Component\r\n );\r\n // Passing data to component\r\n const componentRef = viewRef?.createComponent(componentFactory);\r\n if(componentRef){\r\n Object.entries(data ?? {}).forEach(([key, value]) => {\r\n componentRef.instance[key] = value;\r\n });\r\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\r\n // Subscribes to the events passed to the components\r\n if (handlers) {\r\n Object.entries(handlers).forEach(([event, handler]:any) => {\r\n (componentRef.instance[\r\n event\r\n ] as EventEmitter<any>)?.subscribe((response) => {\r\n handler(response);\r\n });\r\n });\r\n }\r\n }\r\n // invoke change detection\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n\r\n //invoke when file upload OR delete a file\r\n fileOnchangeEvent(){\r\n setTimeout(() => {\r\n this.loadDynamicComponents();\r\n }, 1000);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // load dynamic components if exist in form\r\n setTimeout(() => {\r\n this.setnumericvalues()\r\n this.onDynamicFormStateChange();\r\n this.loadDynamicComponents();\r\n }, 500);\r\n }\r\n\r\n removeWhiteSpaces(){\r\n this.form?.formSections?.forEach((section) =>{\r\n if(section.class) section.class = section.class.replace(/\\s/g, '');\r\n })\r\n }\r\n\r\n setHyperlinkComponentRoute() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field) => {\r\n if (\r\n field.control === EFormControl.HYPERLINK &&\r\n field.hyperlink?.component\r\n ) {\r\n this.router.resetConfig([\r\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\r\n ...this.router.config,\r\n ]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n browserTabCloseEvent(event: boolean = false){\r\n this.formService.fieldFocusedOut = event;\r\n }\r\n\r\n /**\r\n * Listens any change in Dynamic Form component State\r\n */\r\n onDynamicFormStateChange() {\r\n utilities.onDynamicFormStateChange().subscribe((response) => {\r\n if (response.id && response.data) {\r\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\r\n if (componentRefObj){\r\n Object.entries(response.data ?? {}).forEach(\r\n ([key, value]) => {\r\n componentRefObj.value.instance[key] = value;\r\n }\r\n );\r\n componentRefObj.value.instance.ngOnInit();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.form && this.form.formSections) {\r\n let totalFields: number = 0;\r\n let disabledFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.form.formSections.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField) => {\r\n let permissions: any = formField.permissions;\r\n let sectionPermissions: any = [];\r\n if (!permissions) sectionPermissions = formSection.permissions;\r\n if (!permissions) permissions = this.form.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (sectionPermissions && sectionPermissions.length > 0) {\r\n sectionPermissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formSection.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n formField.disabled = false;\r\n formSection.hidden = false;\r\n } else {\r\n formSection.accordionDisabled = true;\r\n formSection.disabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n } else if (permissions && permissions.length > 0){\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n formField.disabled = false;\r\n formField.hidden = false;\r\n } else {\r\n if (\r\n formField.permissions &&\r\n formField.permissions.length > 0\r\n ) {\r\n formSection.disabled = false;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n } else {\r\n formSection.disabled = true;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (formField.disabled) {\r\n disabledFields++;\r\n }\r\n\r\n if (formField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\r\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n /**\r\n * Open IFrame in hyperlink Control\r\n */\r\n sectionDisabled(formSection:IFormSection){\r\n if( formSection.disabled ) {\r\n formSection.fields.map((field:IFormField) => {\r\n field.disabled=true;\r\n });\r\n return formSection;\r\n } else {\r\n return formSection;\r\n }\r\n }\r\n\r\n loadIFrame(formField: IFormField){\r\n this.handleClickEvent(formField);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: 'Hyperlink',\r\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\r\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\r\n });\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if(formField.onReturn){\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * open Dialog in hyperlink Control\r\n */\r\n hyperlinkDialog(formField: IFormField) {\r\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\r\n var value = formField.hyperlink.params;\r\n window.open('hyperlink'+formField.label);\r\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\r\n this.router.navigate(['hyperlink'+formField.label], {\r\n queryParams: formField.hyperlink.params,\r\n });\r\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\r\n this.onClickEvent(formField);\r\n const dialog = this.dialogService.open(formField.hyperlink.component, {\r\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\r\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\r\n data: formField.hyperlink.params,\r\n });\r\n const componentName = formField.hyperlink?.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n dialog.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open Iframe on Label\r\n */\r\n loadLabelControlIFrame(formField:any){\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: formField.label.name,\r\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n\r\n if (formField && formField.onClick) {\r\n formField.onClick();\r\n };\r\n }\r\n\r\n /**\r\n * find the required field in form\r\n */\r\n applyRequiredFieldValidation() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section) => {\r\n section.fields.forEach((field) => {\r\n if (field.validations && field.validations.length > 0) {\r\n field.validations.forEach((valid) => {\r\n if (valid.type === EValidator.REQUIRED) {\r\n field.requiredField = true;\r\n }\r\n })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n\r\n setFileUrls(fileUrls: any){\r\n if(fileUrls && fileUrls.length > 0){\r\n this.fileUploadUrls = fileUrls;\r\n this.showfileUploadError = false;\r\n }\r\n }\r\n\r\n onSaveForm() {\r\n let validity = true;\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n if (!this.formService.checkValidity(formSection.fields)) {\r\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\r\n if (validity && field) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else{\r\n this.alertService.error(\r\n 'Some fields are invalid',\r\n 'INVALID FIELD'\r\n );\r\n }\r\n validity = false;\r\n }\r\n\r\n formSection.fields.forEach((field: any)=>{\r\n // set uploadFile URL in FormField in case of FILE_UPLOAD\r\n if (field.control === EFormControl.FILE_UPLOAD) {\r\n field.value = this.fileUploadUrls;\r\n \r\n if(field.validations && field.validations.length > 0){\r\n field.validations.forEach((x:any)=>{\r\n if(x.type === EValidator.REQUIRED && !field.value){\r\n this.showfileUploadError = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\r\n if(selectedData && selectedData.length > 0){\r\n field.card.data = selectedData;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n if (validity) {\r\n let tempValue: any = []\r\n // set value as 1 or 0 in case of checkbox\r\n this.form.formSections?.forEach((formSection)=>{\r\n if (formSection.fields && validity) {\r\n formSection.fields.forEach((field: any) => {\r\n if ((field.value === '') || (field.value === undefined)) {\r\n field.value = null;\r\n }\r\n //convert date into time as string\r\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\r\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\r\n }\r\n // set value of autoComplete as strings\r\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\r\n const value = field.value.map((value: any)=> value[field.displayField])\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n tempValue = value;\r\n field.value = value.toString().replaceAll(\",\",\";\");\r\n }\r\n }\r\n // convert multiSelect array into string\r\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\r\n field.value = field.value?.toString();\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value ? 1 : 0;\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Save grid on formSave Button\r\n const saveAllGrid = document.getElementById('saveAllGridValues');\r\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\r\n if (saveAllGrid) {\r\n saveAllGrid.click();\r\n } else if (getBtns && getBtns.length > 0) {\r\n for (let btn of getBtns) {\r\n btn?.click();\r\n }\r\n }\r\n this.browserTabCloseEvent(false)\r\n this.saveForm.emit(this.form.formSections);\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\r\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value === 1 ? true : false;\r\n }\r\n\r\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\r\n this.fileOnchangeEvent();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancelForm() {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\r\n if(res[0].detail === \"Yes\"){\r\n this.browserTabCloseEvent(false);\r\n this.gridService.columnFocusedOut = false;\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n })\r\n }else{\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n }\r\n \r\n lookupClearValue(formField: IFormField){\r\n if(formField.value) {\r\n formField.value = ''; \r\n this.browserTabCloseEvent(true);\r\n }\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set calender width\r\n */\r\n setCalanderWidth() {\r\n const calanderElement = document.querySelectorAll(\".p-calendar\");\r\n let form: any = document.querySelector(\"form\");\r\n let width = form?.clientWidth;\r\n calanderElement?.forEach((calander:any) => {\r\n const calanderOfsetLeft = calander.offsetLeft;\r\n if(calanderOfsetLeft <= (width / 2)){\r\n calander.classList.add('open-right-side');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * set the dynamic dialog data\r\n */\r\n setDialogData(formField: IFormField, data: any): any {\r\n if (data && formField) {\r\n let value: any;\r\n data = utilities.objConvertToLower(data);\r\n let selection: string = '';\r\n if (formField.value && typeof formField.value === 'object') {\r\n if (\r\n formField.value &&\r\n formField.value.text &&\r\n formField.value.text.toString().trim()\r\n ) {\r\n selection = formField.value.text?.toString()?.trim();\r\n if(formField.displayField){\r\n value = formField.value?.value?.toString()?.trim();\r\n }\r\n }\r\n } else if (formField.value && formField.value.toString().trim()) {\r\n selection = formField.value?.toString()?.trim();\r\n }\r\n const componentName = data.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return this.dialogService.open(data.component, {\r\n ...data.data,\r\n data: {\r\n selection: selection,\r\n field: formField.field,\r\n value: value,\r\n valueField: data.data?.valueField,\r\n ...data.data.data,\r\n },\r\n });\r\n }\r\n }\r\n \r\n tabFocusEvent(formField: any) {\r\n const className = this.el.nativeElement.querySelector('.'+formField.field);\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n\r\n onClickEvent(formField: IFormField) {\r\n if (formField.onClick) {\r\n formField.onClick(formField);\r\n }\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl label\r\n */\r\n selectLookupLabel(formField: any) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl\r\n ) {\r\n const ref: any = this.setDialogData(\r\n formField,\r\n formField.label.labelControl.lookupControl\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(res){\r\n formField.value = utilities.setDialogResponse(\r\n formField,\r\n formField?.label.labelControl.lookupControl,\r\n res\r\n );\r\n }\r\n this.onFocusOutEvent(formField);\r\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(formField: IFormField) {\r\n if(formField.lookupControl) {\r\n this.lookupFocusOut = true;\r\n let value = formField.value;\r\n const ref = this.setDialogData(formField, formField.lookupControl);\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(formField.field){\r\n document.getElementById(formField.field)?.focus();\r\n }\r\n if(res){\r\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\r\n this.lookupFocusOut = false;\r\n this.onFocusOutEvent(formField);\r\n if (formField.onReturn) formField.onReturn(formField.value, res);\r\n }\r\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\r\n value = typeof value === 'object' ? value.text : value;\r\n if (formFieldValue !== value) {\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * onClick event invoked && open Dialog on lookupControl field/label\r\n */\r\n handleClickEvent(formField: IFormField) {\r\n this.onClickEvent(formField);\r\n\r\n if (formField && formField.lookupControl) {\r\n this.selectLookupLabel(formField);\r\n this.selectLookupField(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set Calender Date Format && set Date Minute interval\r\n */\r\n setCalenderDate(formField: IFormField){\r\n if (formField.control === EFormControl.CALENDAR) {\r\n // convert time into date format\r\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\r\n formField.value = utilities.setTimeInDate(formField.value);\r\n }\r\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\r\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n this.calenderPreviousValue = formField.value;\r\n }\r\n }\r\n calendarChangeValue(formField: any){\r\n if(formField.value !== formField.previousValue){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.previousValue = formField.value;\r\n formField.onChange(formField);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * invoked section Clicked event\r\n */\r\n clickedSection(section:IFormSection){\r\n this.sectionClickedEvent.emit(section);\r\n }\r\n\r\n /**\r\n * open dialog in Note_Field conrtrol\r\n */\r\n handleNoteFieldDialog(formfield: IFormField) {\r\n const dialogRef = this.dialogService.open(NotesComponent, {\r\n header: formfield.label as string,\r\n width: '50%',\r\n data: {\r\n value: formfield.value,\r\n disabledText: formfield.disabledText,\r\n },\r\n });\r\n\r\n dialogRef.onClose.subscribe(\r\n (data: any) => {\r\n if (data && formfield.onReturn) {\r\n formfield.onReturn(data);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n setClassName(formField: IFormField): string {\r\n if (formField.hidden) return ' hidden';\r\n else return '';\r\n }\r\n\r\n autoSearch(event: any, formField: any) {\r\n if(formField && event){\r\n formField.onReturn(event.query, formField);\r\n }\r\n }\r\n\r\n /**\r\n * invoked onFocusOut Event\r\n */\r\n onFocusOutEvent(formField: IFormField) {\r\n let record: any = {};\r\n this.form.formSections?.forEach((section)=>{\r\n section.fields.forEach((formField)=>{\r\n if(formField.field){\r\n record[formField.field] = formField.value;\r\n }\r\n });\r\n });\r\n utilities.setHyperlinkParamValue(record, this.form);\r\n this.formService.checkValidity([formField]);\r\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\r\n formField.onFocusOut(formField);\r\n }\r\n }\r\n\r\n onBackSpaceEvent(formField:IFormField){\r\n if(typeof(formField.value)==='object'){\r\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\r\n if(formField.value.text.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n if(formField.value && formField.value.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n\r\n /**\r\n * clear the dropdown value when click on x\r\n */\r\n onClearValue(formField: IFormField, event: any) {\r\n this.formService.checkValidity([formField]);\r\n this.onChangeEvent(formField);\r\n this.dropDownChangeEvent.emit(formField);\r\n if (!event.value) {\r\n this.onFocusOutEvent(formField);\r\n }\r\n }\r\n\r\n clearDropdownValue(formField:any){\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /** \r\n * Invoke onChange Event when Value Changed\r\n */\r\n onChangeEvent(formField: IFormField){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * convert unSafe link into safe link\r\n */\r\n sanitizeUrl(url: string){\r\n let linkUrl:any = url; \r\n if(linkUrl){\r\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\r\n }\r\n return linkUrl;\r\n }\r\n\r\n selectedCardClickEvent(data: any){\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section: any)=>{\r\n section.fields.forEach((field: any)=>{\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let obj = field.card.data[data.index];\r\n if(obj) {\r\n if(obj.selectedCard){\r\n delete obj.selectedCard;\r\n } else {\r\n obj['selectedCard'] = 'card-active';\r\n }\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n if(data.selectedCard){\r\n data['selectedCard'] = '';\r\n } else {\r\n data['selectedCard'] = 'card-active';\r\n }\r\n }\r\n\r\n}\r\n\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { ISelectItem } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\nexport class DropdownComponent implements OnChanges {\r\n @Input() options: ISelectItem[] = [];\r\n @Input() value: ISelectItem;\r\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\r\n public selectedOption: any;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.options.length) {\r\n if (this.value) {\r\n this.selectedOption = changes['value'].currentValue.toString().trim();\r\n } else {\r\n this.selectedOption = this.options[0];\r\n this.valueChange.emit(this.selectedOption.value);\r\n }\r\n }\r\n }\r\n\r\n handleValueChange(event: { value: string }) {\r\n this.valueChange.emit(event.value);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.css']\r\n})\r\nexport class GalleryComponent {\r\n \r\n @Input() galleryImage: any;\r\n @Input() width: string;\r\n\r\n responsiveOptions: any[] = [\r\n {\r\n breakpoint: '1024px',\r\n numVisible: 5\r\n },\r\n {\r\n breakpoint: '768px',\r\n numVisible: 3\r\n },\r\n {\r\n breakpoint: '560px',\r\n numVisible: 1\r\n }\r\n ];\r\n\r\n constructor() { }\r\n}","import { Directive, Input, HostListener } from '@angular/core';\r\nimport { Table } from 'primeng/table';\r\n\r\n@Directive({\r\n selector: '[pAddRow]',\r\n})\r\nexport class AddRowDirective {\r\n @Input() table: Table;\r\n @Input() newRow: any;\r\n @Input() id: string;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event) {\r\n // Insert a new row\r\n if (this.table && this.table.value) {\r\n this.table.value.unshift({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n }\r\n\r\n // Set the new row in edit mode\r\n this.table.initRowEdit({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n}\r\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\r\n\r\nexport const MenuFilters: IMenuFilter = {\r\n [GridFilterControlType.INPUT]: [\r\n { label: 'Starts with', value: 'startsWith' },\r\n { label: 'Contains', value: 'contains' },\r\n { label: 'Not contains', value: 'notContains' },\r\n { label: 'Ends With', value: 'endsWith' },\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n ],\r\n [GridFilterControlType.NUMERICINPUT]: [\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n { label: 'Less than', value: 'lt' },\r\n { label: 'Less than or equal to', value: 'lte' },\r\n { label: 'Greater than', value: 'gt' },\r\n { label: 'Greater than or equal to', value: 'gte' },\r\n ],\r\n [GridFilterControlType.CALENDAR]: [\r\n { label: 'Date is', value: 'dateIs' },\r\n { label: 'Date is not', value: 'dateIsNot' },\r\n { label: 'Date is before', value: 'dateBefore' },\r\n { label: 'Date is after', value: 'dateAfter' },\r\n ],\r\n};\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\r\nimport { MenuFilters } from '../../base/grid/grid.constant';\r\n\r\n@Component({\r\n selector: 'se-filter-menu',\r\n templateUrl: './filter-menu.component.html',\r\n styleUrls: ['./filter-menu.component.scss'],\r\n})\r\nexport class AppFilterMenuComponent implements OnInit {\r\n public isMenuOpen: boolean = false;\r\n public filterOptions: ISelectItem[] = [];\r\n\r\n @Input() globalFilter: IGlobalFilter;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\r\n }\r\n\r\n toggleMenu() {\r\n this.isMenuOpen = !this.isMenuOpen;\r\n }\r\n\r\n handleFilterSelection({ value }: ISelectItem) {\r\n this.isMenuOpen = false;\r\n this.globalFilter.matchMode = value;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { IMenu } from '../../../models/menu.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'se-menu-bar',\r\n templateUrl: './menu-bar.component.html',\r\n styleUrls: ['./menu-bar.component.scss'],\r\n})\r\nexport class MenuBarComponent implements OnInit {\r\n @Input() hiddenPanelMenu: boolean = true;\r\n @Input() toolTip: string;\r\n @Input() menuBackColor: string;\r\n @Input() menuItems: IMenu[];\r\n @Input() menuFooter: string;\r\n @Input() menuTitle: string;\r\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\r\n public menuBarItems: MenuItem[] = [];\r\n toggleMenu: boolean = false;\r\n roles: string[] = [];\r\n isMenubarHidden: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private cookieService: CookieService,\r\n public router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n const toggleMenu = localStorage.getItem('toggleMenu');\r\n const cookieValue = this.cookieService.get('toggleMenu'); \r\n\r\n if (toggleMenu) {\r\n this.toggleMenu = JSON.parse(toggleMenu);\r\n }else if(cookieValue){\r\n this.toggleMenu = JSON.parse(cookieValue);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n\r\n this.menuBarItems = this.menuItems.map((x) => ({\r\n ...x,\r\n style: x.hidden ? { display: 'none' } : x.style,\r\n }));\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \r\n }\r\n\r\n clickEvent() {\r\n this.onClickEvent.emit();\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.menuItems) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.menuItems.forEach((menu) => {\r\n if (menu.items) {\r\n menu.items.forEach((item) => {\r\n let permissions: any = item.permissions;\r\n if (!permissions) permissions = menu.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } \r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n item.style = { display: 'none' };\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n // if all items of menu is hidden then hide menu as well\r\n menu.hidden =\r\n menu.items.length === menu.items.filter((x) => x.hidden).length;\r\n }\r\n });\r\n\r\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n}\r\n\r\n","import { Type } from '@angular/core';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport const ESideBar = {\r\n LEFT: 'left-sidebar',\r\n RIGHT: 'right-sidebar',\r\n};\r\n\r\nexport interface ISidebar {\r\n icon: string;\r\n action?: string;\r\n section: string;\r\n component?: Type<any>;\r\n [key: string]: any;\r\n data?: IData;\r\n onReturn?: (data: any) => any;\r\n onClick?: (value: any) => void;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n id?: string;\r\n tooltip?: string\r\n iFrame?: IFrame;\r\n linkId?:string;\r\n params?:any;\r\n}\r\n\r\nexport enum ESidebarAction {\r\n NAVIGATION = 'navigation',\r\n OPENDIALOG = 'dialog',\r\n IFRAME = '_iframe',\r\n}\r\n\r\nexport interface IFrame {\r\n link?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface IData {\r\n header?: string;\r\n width?: string;\r\n height?: string;\r\n data?: any;\r\n scrollable?: boolean;\r\n}\r\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { HyperlinkService } from '../../../services/hyperlink.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\n@Component({\r\n selector: 'se-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent implements OnInit {\r\n toggleMenu: boolean = false;\r\n openDialogs: any = [];\r\n @Input() navHidden: boolean = false;\r\n @Input() collapseSidebar: boolean = false;\r\n @Input() menuTitle: string;\r\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\r\n if (newSidebarItems) {\r\n this.sidebarItemsList = newSidebarItems;\r\n this.initializeSideBar();\r\n }\r\n }\r\n\r\n public sidebarItemsList: ISidebar[] = [];\r\n public menuItems: MenuItem[] = [];\r\n roles: string[] = [];\r\n isSidebarHidden: boolean = false;\r\n\r\n constructor(\r\n private instance: Renderer2,\r\n private authService: AuthenticationService,\r\n public dialogService: DialogService,\r\n private router: Router,\r\n private pageLoggerService: PageLoggerService,\r\n private hyperlinkService: HyperlinkService\r\n ) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n initializeSideBar() {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\r\n label: x.label,\r\n icon: x.icon,\r\n id: x.id,\r\n section: x.section,\r\n expanded: x.expanded,\r\n action: x.action,\r\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\r\n title: this.setMenuTitle(x),\r\n command: ({ item }) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(x, item);\r\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(x, item);\r\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(x, item);\r\n } else {\r\n this.handleActiveItem(item);\r\n }\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: x.hidden ? 'none' : '',\r\n },\r\n onClick: x.onClick,\r\n onReturn: x.onReturn,\r\n disabled: x.disabled,\r\n }));\r\n }\r\n\r\n setMenuTitle(x: any): string {\r\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\r\n }\r\n\r\n setMenuItems(x: ISidebar): any {\r\n return x.items.map((menu: any) => ({\r\n label: menu.label,\r\n icon: menu.icon,\r\n id: menu.id,\r\n section: menu.section,\r\n expanded: menu.expanded,\r\n action: menu.action,\r\n title: this.setMenuTitle(x),\r\n command: ({ item }: any) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(menu, x);\r\n }\r\n this.handleActiveItem(item);\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: menu.hidden ? 'none' : '',\r\n },\r\n onClick: menu.onClick,\r\n onReturn: menu.onReturn,\r\n disabled: menu.disabled,\r\n }))\r\n }\r\n\r\n loadIFrame(menu: ISidebar, item: any) {\r\n if (menu) {\r\n const dialogRef = this.dialogService.open(IframeComponent, {\r\n header: menu.section,\r\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\r\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\r\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n this.handleActiveItem(item);\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.sidebarItemsList) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.sidebarItemsList.forEach((item, index) => {\r\n let permissions: any = item.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n item.id = index.toString();\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n item.disabled = true;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param menu\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n openDialog(menu: ISidebar, item: any): void {\r\n const menuData:any = menu.data ? menu.data : menu;\r\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\r\n if (menu.component) {\r\n const dialogRef = this.dialogService.open(menu.component, menuData);\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\r\n this.openDialogs.push(dialogRef);\r\n this.handleActiveItem(item);\r\n\r\n if (this.openDialogs && this.openDialogs.length > 1) {\r\n this.openDialogs[0].close();\r\n this.openDialogs.shift();\r\n }\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param x\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n navigateToSection(x: ISidebar, item: any): void {\r\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\r\n this.handleActiveItem(item);\r\n }\r\n\r\n /**\r\n *\r\n * @param item\r\n * Passes the event of the menu\r\n */\r\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\r\n this.menuItems = this.menuItems.map((x) =>\r\n x.icon === icon && closeDialog\r\n ? { ...x, styleClass: 'active-icon' }\r\n : {\r\n ...x,\r\n styleClass: '',\r\n style: {\r\n borderBottom: '1px solid #e9ecef',\r\n display: x.style?.display === 'none' ? 'none' : '',\r\n },\r\n }\r\n );\r\n }\r\n\r\n clickedMenu(menu: MenuItem[]) {\r\n menu.map((item: any) => {\r\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\r\n if (\r\n item.styleClass === 'active-icon' &&\r\n matchedItem &&\r\n matchedItem.onClick\r\n ) {\r\n this.hyperlinkService\r\n .addHyperlinks(matchedItem)\r\n .then((response: any) => {\r\n if (matchedItem.linkId) {\r\n this.hyperlinkService.setSidebarLink(\r\n response,\r\n this.sidebarItemsList\r\n );\r\n } else {\r\n matchedItem.onClick(item);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { IHeader } from '../../../models/header.model';\r\nimport { EFormControl } from '../../../models/form.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'se-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnChanges {\r\n @Input() headers: IHeader;\r\n\r\n dynamicCase = EFormControl;\r\n roles: string[] = [];\r\n isHeaderHidden: boolean = false;\r\n\r\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\r\n\r\n ngOnInit(): void {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions on form\r\n this.applyUserPermissions();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if(this.headers && this.headers.fields){\r\n this.headers.fields.forEach((x) => {\r\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\r\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\r\n }\r\n if (x.value?.toString().includes(':') && x.timeOnly) {\r\n const index = x.value.indexOf(':');\r\n const time = x.value.substring(index - 2, index + 6);\r\n x.value = time;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.headers) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.headers.fields.forEach((headerField) => {\r\n let permissions: any = headerField.permissions;\r\n if (!permissions) permissions = this.headers.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n headerField.disabled = true;\r\n } else {\r\n headerField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n headerField.disabled = false;\r\n headerField.hidden = false;\r\n } else {\r\n headerField.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (headerField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n loaderState = new Subject<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Shows loader\r\n */\r\n showLoader(isDarkBackground = true) {\r\n this.loaderState.next({ loading: true, isDarkBackground });\r\n }\r\n\r\n /**\r\n * Hides loader\r\n */\r\n hideLoader() {\r\n this.loaderState.next({ loading: false });\r\n }\r\n\r\n /**\r\n * Fires on loader state changed.\r\n * @returns {Observable<any>}\r\n */\r\n onLoaderStateChange(): Observable<any> {\r\n return this.loaderState.asObservable();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoaderService } from '../../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'se-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent implements OnInit, OnDestroy {\r\n isLoading = false;\r\n isDarkBackground = true;\r\n loaderSubscription$: Subscription = new Subscription();\r\n\r\n constructor(\r\n public loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loaderSubscription$ = this.loaderService\r\n .onLoaderStateChange()\r\n .subscribe((state: any) => {\r\n this.isLoading = state.loading ? true : false;\r\n this.isDarkBackground = state.isDarkBackground ? true : false;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.loaderSubscription$) {\r\n this.loaderSubscription$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IFormField } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { RequestService } from '../../../services/request.service';\r\n@Component({\r\n selector: 'se-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @Input() acceptFileTypes: any;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() fields: any;\r\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\r\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n uploadFile(files: any) {\r\n let fileData = new FormData(); \r\n let chooseFile:boolean = false;\r\n for (let i = 0; i < files.length; i++) {\r\n if (files[i]) {\r\n chooseFile = true;\r\n fileData.append(files[i].name, files[i]);\r\n }\r\n }\r\n\r\n if (fileData && chooseFile) {\r\n if (this.fields && this.fields.uniqueKey?.length > 0) {\r\n fileData.append('uniqueKey', this.fields?.uniqueKey);\r\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\r\n fileData.append('azureContainer', this.fields?.azureContainer);\r\n }\r\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\r\n (data: any) => {\r\n if (data) {\r\n this.alertService.success('File Upload Successfully.');\r\n if (this.fields?.onReturn) {\r\n this.fields.onReturn(data.results);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n this.fileUrl.emit(data.results);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n if (this.fields.onReturn) {\r\n this.fields.onReturn(error);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n onClickEvent() {\r\n if (this.fields && this.fields.onClick) {\r\n this.fields.onClick();\r\n console.log('this.fields: ', this.fields);\r\n }\r\n } \r\n}\r\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { RequestService } from '../../../services/request.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\n\r\n@Component({\r\n selector: 'se-caption',\r\n templateUrl: './caption.component.html',\r\n styleUrls: ['./caption.component.scss'],\r\n})\r\nexport class CaptionComponent implements OnInit {\r\n dynamicForm: IDynamicForm;\r\n id: number;\r\n caption: string;\r\n\r\n constructor(\r\n private formService: FormService,\r\n private requestService: RequestService,\r\n private alertService: AlertService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.config.data) {\r\n this.id = this.config.data.id;\r\n this.caption = this.config.data.caption;\r\n }\r\n this.initilizeForm();\r\n }\r\n\r\n initilizeForm() {\r\n this.dynamicForm = {\r\n formSections: [\r\n {\r\n fields: [\r\n this.formService.addTextbox({\r\n field: 'fileCaption',\r\n label: 'Caption',\r\n value: this.caption,\r\n column: 12,\r\n validations: [{ type: EValidator.REQUIRED }]\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n saveForm(formFiels: any) {\r\n this.requestService\r\n .get<any[], any>('/AzureUpload/UpdateCaption', {\r\n Id: this.id,\r\n fileCaption: utilities.getFormFieldValue(\r\n this.dynamicForm,\r\n 'fileCaption'\r\n ),\r\n })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.alertService.success('Caption added successfully.');\r\n this.ref.close(response);\r\n }\r\n },\r\n ({ error }) => {\r\n this.ref.close();\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n cancelForm(event: any) {\r\n console.log('CancelForm: ', event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'se-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n})\r\nexport class CardComponent implements OnInit {\r\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\r\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\r\n @Input() data: any = [];\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n @Input() card: any;\r\n dynamicForm: IDynamicForm;\r\n showFiles: boolean = false;\r\n displayCardInfo: IViewCardProp;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private confirmationService: ConfirmationService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n if (this.card) {\r\n let { data, formSections, cardInfo }: any = this.card;\r\n if(cardInfo && Object.keys(cardInfo).length){\r\n this.displayCardInfo = cardInfo;\r\n data = this.gridService.setDataFields(data);\r\n const newArr = [];\r\n data?.forEach((record)=>{\r\n if(!Object.keys(record)?.includes('azurecontainerid')){\r\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\r\n } else {\r\n newArr.push(record);\r\n }\r\n });\r\n this.data = newArr;\r\n } else {\r\n this.data = this.gridService.setDataFields(data);\r\n }\r\n this.dynamicForm = { formSections };\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n this.setCardPropValue('allowDownload');\r\n this.setCardPropValue('allowDelete');\r\n this.setCardPropValue('allowEditableCaption');\r\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\r\n /** In case of when we are using this component for stand alone then if formSection is exist in\r\n the this.card and then add in the data array.\r\n */\r\n if (this.data) {\r\n this.data.forEach((x: any) => {\r\n if (!x.dynamicform) {\r\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\r\n }\r\n utilities.setCardFieldsData(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n setCardPropValue(prop:string){\r\n if(!this.card[prop]?.toString()?.length) {\r\n this.card[prop]= true;\r\n }\r\n }\r\n\r\n dragAndDrop(event: any) {\r\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\r\n event.item?.element?.nativeElement;\r\n this.card.data = this.data;\r\n this.card['change'] = true;\r\n if (this.card && this.card.onSort) {\r\n this.card.onSort(this.data);\r\n }\r\n }\r\n\r\n deleteImage(event: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this Image?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex(\r\n (i) => i.blobfileurl === event.blobfileurl\r\n );\r\n let obj = arr[index];\r\n arr.splice(index, 1);\r\n this.data = [...arr];\r\n\r\n if (this.card && this.card.onDelete) {\r\n obj = this.replacePropName(obj);\r\n this.card.onDelete(obj);\r\n this.onDeleteCard.emit();\r\n }\r\n }\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n replacePropName(cardInfo:any){\r\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\r\n const cardProp = {...this.displayCardInfo};\r\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\r\n return obj;\r\n } else {\r\n return cardInfo;\r\n }\r\n }\r\n\r\n saveCaption(event: any) {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\r\n let obj = arr[index];\r\n if (index !== -1) {\r\n obj.filecaption = event.caption;\r\n arr.splice(index, 1, obj);\r\n this.card.data = arr;\r\n this.card['change'] = true;\r\n }\r\n if (this.card && this.card?.onCaptionSave) {\r\n obj = this.replacePropName(obj);\r\n this.card.onCaptionSave(obj);\r\n }\r\n }\r\n }\r\n\r\n onClickEvent(data: any, index: number){\r\n data['index'] = index;\r\n this.selectedCard.emit(data);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ESelectFileType } from '../../../models/form.model';\r\n\r\n@Component({\r\n selector: 'se-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n})\r\nexport class fileComponent implements OnInit {\r\n @Input() url: string = '';\r\n @Input() caption: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '200px';\r\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\r\n @Input() id: number;\r\n @Input() name: string = '';\r\n @Input() type: any;\r\n @Input() allowDownloadFile: boolean = true;\r\n @Input() allowEditableCaption: boolean = true;\r\n @Input() allowDeleteFile: boolean = true;\r\n editableCaption: boolean = false;\r\n\r\n constructor(private confirmationService: ConfirmationService) {}\r\n\r\n ngOnInit(): void {\r\n this.checkFileExtension();\r\n }\r\n\r\n checkFileExtension() {\r\n switch (this.type) {\r\n case 'png':\r\n case 'jpeg':\r\n case 'jfif':\r\n case 'jpg': {\r\n this.type = '.image';\r\n break;\r\n }\r\n case 'xlsx':\r\n case 'xls':\r\n case 'xlsm':\r\n case 'txt': {\r\n this.type = ESelectFileType.EXCEL;\r\n break;\r\n }\r\n case 'pdf':\r\n case 'html': {\r\n this.type = ESelectFileType.PDF;\r\n break;\r\n }\r\n case 'doc':\r\n case 'docx': {\r\n this.type = ESelectFileType.DOCUMENT;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n downloadFile(url: string) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n\r\n captionClickEvent() {\r\n if (this.allowEditableCaption) {\r\n this.editableCaption = true;\r\n }\r\n }\r\n\r\n captionSave(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n if(caption !== null){\r\n this.caption = caption;\r\n this.editableCaption = false;\r\n this.onSaveEvent.emit(obj);\r\n }\r\n }\r\n\r\n onDeleteFile(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n this.onDeleteEvent.emit(obj);\r\n }\r\n\r\n cancel() {\r\n this.editableCaption = false;\r\n }\r\n}\r\n","import { Component, Input, OnInit, Optional } from '@angular/core';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport * as utilities from '../../../../../services/utilities.service';\r\n\r\n\r\n@Component({\r\n selector: 'se-report-filter',\r\n templateUrl: './report-filter.component.html',\r\n styleUrls: ['./report-filter.component.scss']\r\n})\r\nexport class ReportFilterComponent implements OnInit {\r\n dynamicForm:IDynamicForm;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n \r\n }\r\n initializeForm(){\r\n this.dynamicForm = {\r\n formSections:[\r\n {\r\n fields: [\r\n ...this.formFields,\r\n {\r\n label: 'Download Report',\r\n control: EFormControl.ADD_BUTTON,\r\n hidden: this.config?.data?.hideGenerateReportBtn,\r\n onClick: () => {\r\n this.downloadReport();\r\n },\r\n }\r\n ]\r\n }\r\n ]\r\n \r\n }\r\n }\r\n createDynamicFields() {\r\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n this.setParamFieldValue();\r\n this.initializeForm();\r\n // set dropdown data based on matched field.\r\n this.setDropDownData(reportJson);\r\n },\r\n (error) => {\r\n this.initializeForm();\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n setParamFieldValue(){\r\n if(this.config.data && this.config.data.param?.length > 0){\r\n this.config.data.param.forEach((param: any)=>{\r\n this.formFields.forEach((field)=>{\r\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\r\n if(matchKey && matchKey.length > 0){\r\n field.value = param[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n setDropDownData(reportJson: any) {\r\n reportJson.Parameters?.forEach((record: any) => {\r\n if(record.isuniquekey){\r\n this.requestService.get<any[], any>('/Data/Fetch', {\r\n uniqueKey: record.isuniquekey,\r\n filters: []\r\n }).subscribe((response:any)=>{\r\n utilities.setFormPropValues(this.dynamicForm, record.paramname, [\r\n { name: 'data', value: response.records }, \r\n ]); \r\n },(error) => {\r\n this.alertService.apiError(error);\r\n })\r\n }\r\n });\r\n }\r\n getFilters(){\r\n let filters: any = [];\r\n this.dynamicForm?.formSections?.forEach((section)=>{\r\n section.fields?.forEach((field)=>{\r\n if(field && field.value){\r\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\r\n };\r\n });\r\n }); \r\n return filters;\r\n }\r\n \r\n downloadReport(){ \r\n const filters:any = this.getFilters(); \r\n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n \r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\r\n\r\n@Component({\r\n selector: 'se-generate-report-btn',\r\n templateUrl: './generate-report-btn.component.html',\r\n styleUrls: ['./generate-report-btn.component.scss']\r\n})\r\nexport class GenerateReportBtnComponent implements OnInit {\r\n @Input() repId: any;\r\n @Input() params: any;\r\n @Input() showDialog: boolean;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n }\r\n\r\n reportClickEvent() {\r\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\r\n this.dialogService.open(ReportFilterComponent, {\r\n width: '80%',\r\n height: '100%',\r\n header: 'Generate Report',\r\n data: { Id: this.repId, param: this.params },\r\n });\r\n } else {\r\n this.downloadQuickReport();\r\n }\r\n }\r\n\r\n createDynamicFields() {\r\n this.requestService\r\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\r\n .subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n },\r\n (error) => {\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n\r\n getFilters() {\r\n let filters: any[] = [];\r\n this.formFields.forEach((field) => {\r\n if (field && field.value?.toString()?.length > 0) {\r\n filters.push({\r\n field: field.field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value: field.value,\r\n });\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n downloadQuickReport() {\r\n let filters: any[] = [];\r\n if(this.params && this.params.length > 0){\r\n this.params.forEach((param)=>{\r\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\r\n });\r\n } else {\r\n filters = this.getFilters();\r\n }\r\n \r\n this.requestService\r\n .download('/Report/Generate', { Id: this.repId, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\r\nimport {\r\n IGlobalFilter,\r\n GridFilterControlType,\r\n EGridColumnType,\r\n addGlobalFilter,\r\n EDayRange,\r\n EFilterValidator,\r\n} from '../../../models/grid.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { GridService } from '../../../services/grid.service';\r\n\r\n@Component({\r\n selector: 'se-global-filters',\r\n templateUrl: './global-filters.component.html',\r\n styleUrls: ['./global-filters.component.scss'],\r\n})\r\nexport class SeGlobalFilterComponent implements OnInit {\r\n @ViewChild('rangeCalendar') datePicker: any;\r\n @Input() globalFilters: IGlobalFilter[] = [];\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n\r\n public fiterTypes = GridFilterControlType;\r\n public columnType = EGridColumnType;\r\n public showDialog: boolean = false;\r\n public startDate: Date;\r\n public endDate: Date;\r\n\r\n showInput: boolean = false;\r\n filter: any = '';\r\n hideClearFilterBtn: boolean = true;\r\n calendarFormat:string = 'mm/dd/yy';\r\n\r\n constructor(\r\n public datepipe: DatePipe,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n private gridService: GridService,\r\n public dialogService: DialogService,\r\n private alertService: AlertService,\r\n private el: ElementRef,\r\n ) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.config && this.config.data){\r\n this.showDialog = this.config.data.openDialog;\r\n if(this.config.data.globalFilters){\r\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\r\n }\r\n \r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n // spliting date range value and assign to value and valueTwo in Date_Range Control\r\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \r\n dateRangeFilter.forEach((dateRange)=>{\r\n if(dateRange.value && dateRange.valueTwo){\r\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \r\n this.setDateRangeFilterValue(dateRange);\r\n }\r\n })\r\n // Filtring Numeric Range controls on global filter \r\n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\r\n numerRangeFilter.forEach((numericRange) =>{\r\n if(numericRange){\r\n this.setNumericRangeValueFrom(numericRange);\r\n this.setNumericRangeValueTwo(numericRange);\r\n }\r\n })\r\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\r\n (this.globalFilters.some((filter)=> filter.value))\r\n ){\r\n this.applyFilters(false);\r\n }\r\n }, 500);\r\n }\r\n\r\n setDateRangeFilterValue(dateRange){\r\n if(dateRange?.value?.length > 1){\r\n dateRange.value[0] = new Date(dateRange.value[0]);\r\n dateRange.value[1] = new Date(dateRange.value[1]);\r\n this.selectDate(dateRange, false);\r\n }\r\n }\r\n \r\n // change calendar format on run time if user type date on the calendar field.\r\n calendarFocusEvent(globalFilter:IGlobalFilter){\r\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\r\n let year = a?.target?.value?.toString()?.split('/')[2];\r\n year = year?.toString().split(\" \")[0];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n if(globalFilter.type === GridFilterControlType.CALENDAR){\r\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\r\n }\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n\r\n checkFilterValidation(removeError:boolean = false):boolean{\r\n let valid:boolean = false;\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\r\n valid = true;\r\n filter.errorMessage = filter.displayText+\" is required\";\r\n filter.requiredField = true;\r\n } else {\r\n filter.errorMessage = '';\r\n }\r\n })\r\n }\r\n return valid;\r\n }\r\n\r\n ngOnChanges(){\r\n this.checkFilterValidation();\r\n this.globalFilters?.forEach((filter)=>{\r\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\r\n this.onFocusOutEvent(filter);\r\n }\r\n })\r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n const girdClearFilterBtn = document.getElementById(\r\n 'clearGridFilterValuesButton'\r\n );\r\n if(girdClearFilterBtn){\r\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\r\n this.hideClearFilterBtn = true;\r\n }else{\r\n this.hideClearFilterBtn = false;\r\n }\r\n }else{\r\n this.hideClearFilterBtn = true;\r\n }\r\n }\r\n\r\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\r\n if(globalFilter.toField){\r\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\r\n }\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n\r\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\r\n if(field){\r\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\r\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\r\n if(digitInfo){\r\n value = parseFloat(value)?.toFixed(digitInfo);\r\n }else{\r\n value = parseFloat(value)?.toFixed(2);\r\n }\r\n }\r\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\r\n if(index > -1){\r\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \r\n } else {\r\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\r\n }\r\n }\r\n }\r\n\r\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\r\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \r\n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n \r\n }\r\n\r\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\r\n if(globalFilter.value?.length > 0){\r\n const fromDateValue = this.datepipe.transform(\r\n globalFilter.value[0],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n const toDateValue = this.datepipe.transform(\r\n globalFilter.value[1],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\r\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\r\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\r\n }\r\n }else if(clearValue){\r\n this.matchSameFields(globalFilter.fromField, null, 'gte');\r\n this.matchSameFields(globalFilter.toField, null, 'lte');\r\n }\r\n }\r\n\r\n\r\n onFocusOutEvent(globalFilter: IGlobalFilter){\r\n if (globalFilter && globalFilter.onFocusOut) {\r\n globalFilter.onFocusOut(globalFilter);\r\n }\r\n setTimeout(() => {\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n this.filtersApplied.emit(this.globalFilters);\r\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\r\n }\r\n\r\n /**\r\n * Apply selected filters\r\n */\r\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\r\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\r\n this.setDateRangeFilterValue(globalFilter);\r\n } \r\n this.gridService.applyFilterEvent = filterEvent;\r\n const globalFilters = this.globalFilters.filter((x) => x.field);\r\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\r\n if(index > -1){\r\n globalFilters.splice(index, 1);\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (this.showDialog) {\r\n this.ref.close(globalFilters);\r\n } else \r\n if(!this.checkFilterValidation()){\r\n this.checkFilterValidation(true);\r\n this.filtersApplied.emit(globalFilters);\r\n }\r\n }\r\n\r\n // set By Defualt Calender Range \r\n setDefualtCalendarRange(check: boolean = true){\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\r\n setTimeout(() => {\r\n this.showNext(filter, check);\r\n }, 100);\r\n }\r\n });\r\n }\r\n }\r\n\r\n showNext(filter: IGlobalFilter, check: boolean = true): string {\r\n let nextValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n nextValue = this.setDayFilter(filter, true);\r\n break;\r\n case EDayRange.MONTH:\r\n nextValue = this.setMonthFilter(filter, true);\r\n break;\r\n case EDayRange.YEAR:\r\n nextValue = this.setYearFilter(filter, true);\r\n break;\r\n default:\r\n // week\r\n nextValue = this.setWeekFilter(filter, true);\r\n break;\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.gridService.applyFilterEvent = check;\r\n this.filtersApplied.emit(this.globalFilters);\r\n return nextValue;\r\n }\r\n\r\n showPrevious(filter: IGlobalFilter): string {\r\n let previousValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n previousValue = this.setDayFilter(filter, false);\r\n break;\r\n case EDayRange.MONTH:\r\n previousValue = this.setMonthFilter(filter, false);\r\n break;\r\n case EDayRange.YEAR:\r\n previousValue = this.setYearFilter(filter, false);\r\n break;\r\n default:\r\n // week\r\n previousValue = this.setWeekFilter(filter, false);\r\n break;\r\n }\r\n this.gridService.applyFilterEvent = true;\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.filtersApplied.emit(this.globalFilters);\r\n return previousValue;\r\n }\r\n\r\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\r\n return (filter.value =\r\n this.datepipe.transform(\r\n this.startDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ) +\r\n '|' +\r\n this.datepipe.transform(\r\n this.endDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ));\r\n }\r\n\r\n setDateValue(filter: any) {\r\n let value: Date;\r\n if (filter.value) {\r\n value = new Date(filter.value.split('|')[0]);\r\n return new Date(value.setMonth(value.getMonth()));\r\n } else {\r\n return new Date();\r\n }\r\n }\r\n\r\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n )\r\n : currentDate;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() - 1\r\n )\r\n : currentDate;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\r\n : firstDateOfYear;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\r\n : firstDateOfYear;\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfMonth = new Date(\r\n currentDate.getFullYear(),\r\n currentDate.getMonth(),\r\n 1\r\n );\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() - 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 0\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n let currentDate = this.setDateValue(filter);\r\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\r\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() + weekSeconds)\r\n : new Date(firstDay.getTime());\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() - weekSeconds)\r\n : new Date(firstDay.getTime() - weekSeconds);\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(globalFilters: IGlobalFilter) { \r\n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\r\n }\r\n\r\n /**\r\n * Clear all filter values\r\n */\r\n clearFilters() {\r\n this.globalFilters.map((item: any) => (item.value = null));\r\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\r\n if(clearGridFilter){\r\n clearGridFilter.click();\r\n }\r\n }\r\n\r\n /**\r\n * Clear values of Date Range Filter\r\n */\r\n clearDateRangeValue(filter: any){\r\n this.setDateRangeValue(filter, true)\r\n }\r\n\r\n /**\r\n * Close dialog without applying filters\r\n */\r\n cancel() {\r\n this.clearFilters();\r\n this.ref.close();\r\n }\r\n rangeDateclose(globalFilter: any) {\r\n this.datePicker.hideOverlay();\r\n const id: any = document.getElementById(globalFilter.displayText);\r\n id.focus();\r\n }\r\n\r\n filterInput() {\r\n this.showInput = !this.showInput;\r\n }\r\n\r\n /**\r\n * Focused the calender input\r\n */\r\n selectDate(globalFilter: any, focused: boolean = false){\r\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\r\n this.setDateRangeValue(globalFilter);\r\n if(focused ==true){\r\n this.rangeDateclose(globalFilter); \r\n }\r\n }\r\n if(focused){\r\n document.getElementById(globalFilter.field)?.focus();\r\n }\r\n }\r\n tabFocusEvent(globalFilter: any) {\r\n const className = this.el.nativeElement.querySelector(\r\n '.'+globalFilter.field\r\n );\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\r\nimport { IGlobalFilter } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-filter',\r\n templateUrl: './filter.component.html',\r\n})\r\nexport class SeFilterComponent implements OnInit {\r\n @Input() globalFilters: IGlobalFilter[];\r\n @Input() showDialogFilter: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public dialogService: DialogService) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void { }\r\n\r\n /**\r\n * Opens the filter dialog\r\n */\r\n openFilters() {\r\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\r\n header: 'Choose Filters',\r\n width: '70%',\r\n styleClass: 'global-filter-visible',\r\n data: { globalFilters: this.globalFilters, openDialog: true},\r\n });\r\n\r\n // Modal response\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n this.filtersApplied.emit(res);\r\n }\r\n });\r\n }\r\n\r\n globalFiltersApplied(event: any){\r\n this.filtersApplied.emit(event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-grid-row-actions',\r\n templateUrl: './grid-row-actions.component.html',\r\n styleUrls: ['./grid-row-actions.component.scss']\r\n})\r\nexport class GridRowActionsComponent implements OnInit {\r\n @Input() editing: boolean;\r\n\r\n @Input() editRowPermission: boolean;\r\n\r\n @Input() deleteRowPermission: boolean;\r\n\r\n @Input() editAllRows: boolean = false;\r\n\r\n @Input() row: any;\r\n\r\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onRowEditInit(row: any) {\r\n this.onRowEditInitBtn.emit(row);\r\n }\r\n\r\n deleteRecord(row: any) {\r\n this.deleteRecordBtn.emit(row);\r\n }\r\n\r\n onRowEditSave(row: any) {\r\n this.onRowEditSaveBtn.emit(row);\r\n }\r\n\r\n onRowEditCancel(row: any) {\r\n this.onRowEditCancelBtn.emit(row);\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { GridComponent } from './components/base/grid/grid.component';\r\nimport { FormComponent } from './components/base/form/form.component';\r\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\r\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\r\nimport { IframeComponent } from './components/base/iframe/iframe.component';\r\n\r\n// Library\r\nimport { TableModule } from 'primeng/table';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { AddRowDirective } from './directive/add-row.directive';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NotesComponent } from './components/shared/notes/notes.component';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { RequestService } from './services/request.service';\r\nimport { Environment } from './models/response.model';\r\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\r\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\r\nimport { HeaderComponent } from './components/base/header/header.component';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { LoaderComponent } from './components/base/loader/loader.component';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport {AvatarModule} from 'primeng/avatar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\r\nimport { CaptionComponent } from './components/base/caption/caption.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CardComponent } from './components/base/cards/card.component';\r\nimport { fileComponent } from './components/base/file/file.component';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { AlertService } from '../public-api';\r\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\r\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\r\nimport { SeFilterComponent } from './components/base/filter/filter.component';\r\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\r\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\r\n\r\n\r\nexport const toasterModuleforRoot = ToastrModule.forRoot();\r\n\r\n@NgModule({\r\n declarations: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n DropdownComponent,\r\n AddRowDirective,\r\n FormComponent,\r\n NotesComponent,\r\n AppFilterMenuComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n IframeComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeGlobalFilterComponent,\r\n SeFilterComponent,\r\n AlertPopUpComponent\r\n ],\r\n\r\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\r\n imports: [\r\n TableModule,\r\n PanelMenuModule,\r\n MenuModule,\r\n MultiSelectModule,\r\n FormsModule,\r\n BrowserAnimationsModule,\r\n TabViewModule,\r\n DropdownModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ButtonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n InputTextModule,\r\n TriStateCheckboxModule,\r\n InputTextareaModule,\r\n TooltipModule,\r\n BrowserModule,\r\n GalleriaModule,\r\n AutoCompleteModule,\r\n AccordionModule,\r\n ConfirmDialogModule,\r\n MessagesModule,\r\n InputNumberModule,\r\n AvatarModule,\r\n CardModule,\r\n DragDropModule,\r\n InputSwitchModule,\r\n toasterModuleforRoot\r\n ],\r\n exports: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n FormComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeFilterComponent,\r\n SeGlobalFilterComponent\r\n ],\r\n})\r\nexport class SEToolkitModule {\r\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\r\n return {\r\n ngModule: SEToolkitModule,\r\n providers: [\r\n RequestService,\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { EFormControl, IHyperlink } from './form.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IHeader {\r\n fields: IHeaderField[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface IHeaderField {\r\n label?: string;\r\n value?: any;\r\n control?: EFormControl;\r\n data?: any[];\r\n onClick?: () => void;\r\n class?: string;\r\n column?: number;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport enum EButtonClass {\r\n NORMAL = 'p-button-sm',\r\n SUCCESS = 'p-button-success p-button-sm',\r\n INFO = 'p-button-info p-button-sm',\r\n WARNING = 'p-button-warning p-button-sm',\r\n HELP = 'p-button-help p-button-sm',\r\n DANGER = 'p-button-danger p-button-sm',\r\n}\r\n\r\nexport interface AddHeaderField {\r\n control?: EFormControl;\r\n label?: string;\r\n value?: string;\r\n column?: number;\r\n data?: any;\r\n class?: string;\r\n onClick?: (() => void) | any;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport interface IHeaderFormat {\r\n type: EHeaderFormatType | any;\r\n formatParams?:IFormatParams\r\n | IDateFormatParams\r\n | INumberFormatParams\r\n | ICurrencyFormatParams;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParams {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParams extends IFormatParams {\r\n format?: string;\r\n}\r\n\r\nexport interface INumberFormatParams extends IFormatParams {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParams extends INumberFormatParams {\r\n currency: string;\r\n}\r\n\r\nexport enum EHeaderFormatType {\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}","import { Injectable } from '@angular/core';\r\nimport { IMenu } from '../models/menu.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SideBarService {\r\n constructor() { }\r\n\r\n /**\r\n * Checks parent menu and expands it if current route exists in its child menus.\r\n * @param menuLabel\r\n * @returns {boolean}\r\n */\r\n isMenuExpanded(\r\n currentRoute: string,\r\n items: IMenu[],\r\n menuLabel: string\r\n ): boolean {\r\n if (items && items.length) {\r\n // check currentRoute contains loadDataForEdit or not\r\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\r\n let detailPage = '';\r\n if(currentRoute?.toString()?.includes(\"list\")){\r\n detailPage = currentRoute.replace('list', 'detail');\r\n } \r\n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\r\n let matchedItems = [];\r\n if(currentIndex > -1){\r\n matchedItems = items[currentIndex]?.items;\r\n }\r\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl } from '../models/form.model';\r\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HeaderService {\r\n constructor() {}\r\n\r\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\r\n if (!headerInfo.column) {\r\n headerInfo.column = 3;\r\n }\r\n\r\n const headerField: IHeaderField = {\r\n label: headerInfo.label,\r\n control: headerInfo.control,\r\n value: headerInfo.value,\r\n column: headerInfo.column,\r\n data: headerInfo.data,\r\n class: headerInfo.class,\r\n onClick: headerInfo.onClick,\r\n hyperlink: headerInfo.hyperlink,\r\n disabled: headerInfo.disabled,\r\n hidden: headerInfo.hidden,\r\n permissions: headerInfo.permissions,\r\n format: headerInfo.format,\r\n showTime: headerInfo.showTime,\r\n timeOnly: headerInfo.timeOnly,\r\n };\r\n return headerField;\r\n }\r\n\r\n addLabel(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.LABEL;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n \r\n addDropdown(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.DROPDOWN;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addButton(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.BUTTON;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CHECKBOX;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.HYPERLINK;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CALENDAR;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl, IDynamicForm } from '../models/form.model';\r\nimport { AlertService } from './alert.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from '../../lib/services/utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CardService {\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\r\n let imageToDelete =\r\n imageInfo.id && imageInfo.id > 0\r\n ? { RecordId: imageInfo.id }\r\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\r\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\r\n (response: any) => {\r\n this.deleteFile(imageInfo, dynamicForm, cardId);\r\n if (imageInfo.tables) {\r\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\r\n } else {\r\n this.alertService.success('Image deleted successfully.');\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n deleteImageFromTables(tables: any[], uniqueKey: string) {\r\n this.requestService\r\n .get('/Data/BulkDelete', {\r\n UniqueKey: uniqueKey,\r\n tables: tables,\r\n })\r\n .subscribe(\r\n (response) => {\r\n this.alertService.success('Image deleted successfully.');\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n getCardData(formSections: any, id: string): any {\r\n let arr = {};\r\n formSections?.forEach((formSection: any) => {\r\n formSection.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\r\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n setFileUploadData(response: any, dynamicForm: any, id: string) {\r\n if (response) {\r\n dynamicForm.formSections?.forEach((x: any) => {\r\n x.fields.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\r\n field.card?.data?.unshift(...response);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\r\n const fieldInfo = this.getCardData(\r\n dynamicForm.formSections,\r\n id\r\n );\r\n let cardData = fieldInfo.data;\r\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\r\n\r\n dynamicForm.formSections?.forEach((section) => {\r\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\r\n if (card && card.card) {\r\n card.card.data = cardData;\r\n }\r\n });\r\n }\r\n\r\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\r\n arr = utilities.setDataFields(arr);\r\n cardInfo = utilities.objConvertToLower(cardInfo);\r\n \r\n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n }\r\n\r\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\r\n response.records?.forEach((record: any, recordIndex: any) => {\r\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\r\n if(matchCard && Object.keys(matchCard)?.length > 0){\r\n matchCard[fieldName] = record.Id;\r\n }\r\n });\r\n\r\n if(dynamicForm && Object.keys(dynamicForm)?.length){\r\n dynamicForm.formSections.forEach((section)=>{\r\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\r\n if(formField){\r\n if(cardsInfo?.length > 0){\r\n cardsInfo?.forEach((cardId)=>{\r\n cardId.id = null;\r\n })\r\n }\r\n formField.card.data = cardsInfo;\r\n };\r\n });\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of se-ui-toolkit\r\n */\r\nexport * from 'primeng/api';\r\n\r\n/**\r\n * Exported Modules\r\n */\r\n\r\nexport * from './lib/se-ui-toolkit.module';\r\n\r\n/**\r\n * Exported Components\r\n */\r\nexport * from './lib/components/base/form/form.component';\r\nexport * from \"./lib/components/base/grid/grid.component\"\r\nexport * from './lib/components/base/menu-bar/menu-bar.component';\r\nexport * from './lib/components/base/sidebar/sidebar.component';\r\nexport * from './lib/components/base/header/header.component';\r\nexport * from './lib/components/base/image-gallery/image-gallery.component';\r\nexport * from './lib/components/base/iframe/iframe.component';\r\nexport * from './lib/components/base/loader/loader.component';\r\nexport * from './lib/components/base/file-upload/file-upload.component';\r\nexport * from './lib/components/base/caption/caption.component';\r\nexport * from './lib/components/base/cards/card.component';\r\nexport * from './lib/components/base/file/file.component';\r\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\r\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nexport * from './lib/components/shared/global-filters/global-filters.component';\r\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\r\nexport * from './lib/components/base/filter/filter.component';\r\n\r\n\r\n/**\r\n * Exported Type Definitions\r\n */\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/grid.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/models/request.model';\r\nexport * from './lib/models/header.model';\r\nexport * from './lib/models/sidebar.model';\r\nexport * from './lib/models/user-info.model';\r\nexport * from './lib/models/menu.model';\r\nexport * from './lib/models/common.model'\r\n\r\n/**\r\n * Exported Services\r\n */\r\nexport * from './lib/services/alert.service';\r\nexport * from './lib/services/form.service';\r\nexport * from './lib/services/grid.service';\r\nexport * from './lib/services/dropdown.service';\r\nexport * from './lib/services/page-logger.service';\r\nexport * from './lib/services/authentication.service';\r\nexport * from './lib/services/utilities.service';\r\nexport * from './lib/services/request.service';\r\nexport * from './lib/services/sidebar.service';\r\nexport * from './lib/services/hyperlink.service';\r\nexport * from './lib/services/header.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/card.service';\r\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.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.objConvertToLower","utilities.currentUrl","utilities.setTimeInDate","utilities.autoSetLookupData","utilities.setMinutesInterval","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","utilities.getFormFieldValue","utilities.setCardFieldsData","utilities.setFormPropValues","utilities.setDataFields"],"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/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/sidebar.service.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';\r\nimport { Type } from '@angular/core';\r\nimport { IDropDownRequest, IReportBtn } from './form.model';\r\n\r\nexport interface IGridColumn {\r\n component?: Type<any>;\r\n allowSearch?: boolean;\r\n target?: EGridlink;\r\n header?: string;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n type?: EGridColumnType;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n sorting?: boolean;\r\n filtering?: boolean;\r\n filter?: IGridFilterType;\r\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\r\n data?: any;\r\n style?: string;\r\n permissions?: IPermission[];\r\n value?: any;\r\n tableAlias?: string;\r\n linkId?: string;\r\n params?: {[key: string]: any};\r\n minutesInterval?: number;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n displayText?: string;\r\n disabled?: boolean;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n allowSave?: boolean;\r\n validations?: IGridValidation[];\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n}\r\n\r\nexport interface IGridLookupControl {\r\n component?: any;\r\n data?: IGridLookupData;\r\n}\r\n\r\nexport declare type IGridLookupData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n valueField?: string;\r\n selectedValue?: string;\r\n data?: {[key: string]: any};\r\n}\r\n\r\nexport interface ILookupValue {\r\n text: string;\r\n value: string;\r\n field?:string\r\n}\r\n\r\nexport enum EGridAggregate {\r\n SUM = 'sum',\r\n AVERAGE = 'average',\r\n COUNT = 'count',\r\n}\r\n\r\nexport interface IGridAggregate {\r\n type: EGridAggregate;\r\n caption?: string;\r\n displayField?: string;\r\n aggrValue?:string;\r\n format?: IAggregateFormat;\r\n}\r\nexport interface IAggregateFormat {\r\n type: EAggregateFormat;\r\n digitsInfo?: number;\r\n}\r\n\r\nexport enum EAggregateFormat {\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGridlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n}\r\n\r\nexport interface IGridDataExport {\r\n rows: any[];\r\n headings: string[];\r\n}\r\n\r\nexport interface ISelectItem {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface IGridFilterType {\r\n type?: GridFilterControlType;\r\n data?: ISelectItem[];\r\n tableAlias?: string;\r\n showFilter?: boolean;\r\n}\r\n\r\nexport interface IAlertPopUpBtn {\r\n buttonLabel: string;\r\n buttonClass?: string;\r\n}\r\n\r\nexport interface IAlertPopUp {\r\n message: string;\r\n header?: string;\r\n buttons: IAlertPopUpBtn[];\r\n height?: string;\r\n width?: string;\r\n icon?: string;\r\n}\r\n\r\nexport enum EGridFormatter {\r\n BOOLEAN = 'boolean',\r\n CHAR = 'char',\r\n NUMERIC = 'numeric'\r\n}\r\n\r\nexport enum GridFilterControlType {\r\n INPUT = 'input',\r\n DROPDOWN = 'dropdown',\r\n CHECKBOX = 'checkbox',\r\n CALENDAR = 'calendar',\r\n CALENDAR_RANGE = 'calender_range',\r\n MULTISELECT = 'multi-select',\r\n NUMERICINPUT = 'numeric_input',\r\n NUMERIC_RANGE = 'numeric_range',\r\n DATE_RANGE = 'date_range',\r\n LOOKUP_INPUT = 'lookup_input',\r\n SPACER = 'spacer'\r\n}\r\n\r\nexport enum EDayRange {\r\n DAY = 'Day',\r\n WEEK = 'Week',\r\n MONTH = 'Month',\r\n YEAR = 'Year',\r\n}\r\n\r\nexport enum EGridSortDirection {\r\n ASC = 'asc',\r\n DESC = 'desc',\r\n}\r\n\r\nexport enum EGridColumnType {\r\n LINK = 'link',\r\n IFRAME = 'iframe',\r\n DIALOG = 'dialog',\r\n TEXT = 'text',\r\n NUMERIC = 'numeric',\r\n DATE = 'date',\r\n BOOLEAN = 'boolean',\r\n DROPDOWN = 'dropdown',\r\n LOOKUP_INPUT = 'lookup_input',\r\n ADD_BUTTON = 'add_button',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n MULTISELECT = 'multi-select',\r\n REPORT = 'report'\r\n}\r\n\r\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\r\n displayText?: string;\r\n onFocusOut?: (value: any) => any;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n format?: string | EGridFormatType | EGlobalFilterFormatType;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n validations?: IGridValidation[];\r\n errorMessage?:string;\r\n requiredField?: boolean;\r\n}\r\n\r\nexport interface ILookupControlFilter {\r\n component?: any;\r\n data?: ILookupFilterData;\r\n}\r\n\r\nexport declare type ILookupFilterData = {\r\n header: string;\r\n width?: string;\r\n data: any;\r\n} & {\r\n [key: string]: any;\r\n};\r\n\r\nexport interface IPrimeNgSort {\r\n multisortmeta: { field: string; order: number };\r\n}\r\n\r\nexport interface IPrimeNgFilterItem {\r\n matchMode: string;\r\n operator: string;\r\n value: string | number | boolean | Date | any;\r\n}\r\n\r\nexport interface IPrimeNgFilter {\r\n filteredValue: any[];\r\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\r\n}\r\n\r\nexport interface IGridFilter {\r\n field?: string;\r\n matchMode?: string;\r\n operator?: string;\r\n filtering?: boolean;\r\n value?: any;\r\n valueTwo?: any;\r\n tableAlias?: string;\r\n column?: string;\r\n}\r\n\r\nexport interface IGridSort {\r\n field?: string;\r\n direction?: EGridSortDirection;\r\n priority: number;\r\n tableAlias?: string;\r\n}\r\n\r\nexport class IGridServerSideEvent {\r\n filters?: IGridFilter[];\r\n sorts?: IGridSort[];\r\n page?: number;\r\n pageSize?: number;\r\n}\r\n\r\nexport interface IGridPaginationEvent {\r\n first: number;\r\n rows: number;\r\n}\r\n\r\nexport interface IGridColumnAction {\r\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\r\n tooltip: string;\r\n width?: string;\r\n confirmDialog?: boolean;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport interface IGridRowAction {\r\n title: string;\r\n class?: string;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport enum EGridFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n PERIOD = 'MM/yy',\r\n LONGDATE = 'MM/dd/YY, h:mm a',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGlobalFilterFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n}\r\n\r\nexport enum EGridSelectionType {\r\n SINGLE = 'single',\r\n MULTIPLE = 'multiple',\r\n}\r\n\r\nexport type MenuFilterControls =\r\n | GridFilterControlType.INPUT\r\n | GridFilterControlType.NUMERICINPUT\r\n | GridFilterControlType.CALENDAR;\r\n\r\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\r\n\r\nexport interface addColumn {\r\n target?: EGridlink;\r\n component?: Type<any>;\r\n control?: EGridColumnType;\r\n field?: string;\r\n displayField?: string;\r\n header?: string;\r\n showOption?: boolean;\r\n style?: string;\r\n type?: EGridColumnType;\r\n format?: string | EGridFormatType | IGridFormat;\r\n data?: any;\r\n filtering?: boolean;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n allowSearch?: boolean;\r\n minutesInterval?: number;\r\n sorting?: boolean;\r\n filter?: IGridFilterType;\r\n tableAlias?: string;\r\n linkId?: string;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n params?: {[key: string]: any};\r\n displayText?: string;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n errorMessage?: string;\r\n validations?: IGridValidation[];\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n permissions?: IPermission[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n value?: any;\r\n}\r\n\r\nexport interface addFilterColumn {\r\n control?: GridFilterControlType;\r\n field?: string;\r\n header?: string;\r\n filter?: GridFilterControlType;\r\n filtering?: boolean;\r\n hidden?: boolean;\r\n style?: string;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n format?: string;\r\n tableAlias?: string;\r\n validations?: IGridValidation[] | any;\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n permissions?: IPermission[];\r\n component?: Type<any>;\r\n type?: EGridColumnType;\r\n data?: any;\r\n}\r\n\r\nexport interface IGridValidation {\r\n type: EGridValidator | EFilterValidator;\r\n expression?: any;\r\n}\r\nexport enum EFilterValidator {\r\n REQUIRED = \"required\",\r\n}\r\nexport interface IGridReportBtn extends IReportBtn{\r\n type?: EGridColumnType.REPORT;\r\n}\r\nexport interface IGridRowProp{\r\n propName: EGridRowPropName | string; //IGridColumnPropName;\r\n propValue: any;\r\n field: string;\r\n}\r\n\r\nexport enum EGridRowPropName {\r\n DISPLAYTEXT = 'displayText',\r\n DISABLED = 'disabled',\r\n DISPLAYFIELD = 'displayField',\r\n HIDDEN = 'hidden',\r\n ICON = 'icon',\r\n}\r\n\r\nexport enum EGridValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport interface addGlobalFilter {\r\n field?: string;\r\n validations?: IGridValidation[];\r\n displayText?: string;\r\n type?: GridFilterControlType;\r\n data?: any;\r\n value?: any;\r\n valueTwo?: any;\r\n matchMode?: string;\r\n operator?: string;\r\n tableAlias?: string;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n format?: EGlobalFilterFormatType | IGridFormat | any;\r\n column?: string;\r\n onFocusOut?: (value: any) => any;\r\n filtering?: boolean;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n labelText?: string;\r\n prefix?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n}\r\n\r\nexport interface IGridFormat {\r\n type: EGridFormatType;\r\n formatParams?:\r\n | IGridFormatParam\r\n | IGridDateFormatParam\r\n | IGridNumberFormatParam\r\n | IGridCurrencyFormatParam\r\n | IGridallowcalculateFormatParam;\r\n\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IGridFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IGridDateFormatParam extends IGridFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IGridNumberFormatParam extends IGridFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport interface IGridProp {\r\n name: string;\r\n value: any;\r\n field?: string;\r\n}\r\n\r\nexport interface IGridPropFilter {\r\n field: string;\r\n value: any;\r\n}\r\n\r\nexport interface IGridFilterInfo {\r\n [key:string]:any;\r\n}\r\n","import { Component, OnInit, Optional } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'lib-alert-pop-up',\r\n templateUrl: './alert-pop-up.component.html',\r\n styleUrls: ['./alert-pop-up.component.css']\r\n})\r\nexport class AlertPopUpComponent implements OnInit {\r\n buttons: any[]\r\n message: string;\r\n icon: string;\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef,) { }\r\n\r\n ngOnInit(): void {\r\n if(this.config?.data){\r\n this.message = this.config.data?.alertPopInfo?.message;\r\n this.buttons = this.config.data?.alertPopInfo?.buttons;\r\n this.icon = this.config.data?.alertPopInfo?.icon;\r\n }\r\n }\r\n\r\n clickedBtn(button: any){\r\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\r\n if(closeBtn){\r\n closeBtn?.click();\r\n this.ref.close(button);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\r\nimport { IAlertPopUp, } from '../models/grid.model';\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n \r\n constructor(\r\n private toastr: ToastrService,\r\n public dialogService: DialogService,\r\n private confirmationService: ConfirmationService\r\n ) { }\r\n\r\n success(message: string) {\r\n this.toastr.success(message, \"\", { closeButton: true });\r\n }\r\n\r\n info(message: string) {\r\n this.toastr.info(message, \"\", { closeButton: true });\r\n }\r\n\r\n warning(message: string) {\r\n this.toastr.warning(message, \"\", { closeButton: true });\r\n }\r\n\r\n error(error: string, message?: string) {\r\n this.toastr.error(error, message, { closeButton: true });\r\n }\r\n\r\n apiError(error: any) {\r\n if (typeof error === 'string' || typeof error.error === 'string') {\r\n typeof error.error === 'string' ? this.error(error.error) : this.error(error);\r\n } else if (error && error.error && error.error.errorDetails) {\r\n const [responseError] = error.error.errorDetails;\r\n this.error(responseError.errorMessage);\r\n }\r\n else if(error && error.headers && error.status !== 401) {\r\n this.error('something went wrong during api request');\r\n }\r\n }\r\n\r\n \r\n confirm({\r\n message = \"Are you sure that you want to proceed?\",\r\n header = \"Confirmation\",\r\n icon = \"pi pi-exclamation-triangle\",\r\n key= '',\r\n } = {}): Promise<any> {\r\n return new Promise(resolve => {\r\n this.confirmationService.confirm({\r\n message,\r\n header,\r\n icon,\r\n key,\r\n accept: () => {\r\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\r\n this.confirmationService.close();\r\n }\r\n })\r\n });\r\n }\r\n\r\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\r\n return new Promise(resolve => {\r\n const ref = this.dialogService.open(AlertPopUpComponent, {\r\n styleClass: 'alertPopUp',\r\n header: header,\r\n width: width,\r\n height: height,\r\n data: { alertPopInfo: {message, icon, buttons}},\r\n });\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n resolve(res.buttonLabel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '../models/response.model';\r\nimport { Environment } from '../models/response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestService {\r\n\r\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \r\n }\r\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\r\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\r\n }\r\n\r\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getRequest<T, K>(endpoint: string) {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\r\n }\r\n\r\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\r\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n getCurrentRoute(): any{\r\n let route = window.location.href;\r\n if(route && route.includes('/')){\r\n let currentRoute = route.split('/');\r\n route = currentRoute[currentRoute.length-1];\r\n const source = `?source=${route}`;\r\n return source;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\nimport { ISelectItem } from '../models/grid.model';\r\nimport { GridService } from './grid.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DropdownService {\r\n constructor(\r\n private requestService: RequestService,\r\n ) {}\r\n\r\n /**\r\n * Function to set the values for dropdown\r\n * @param response array of data\r\n * @param valueProp property name for value\r\n * @param labelProp property name for label\r\n */\r\n\r\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\r\n let dropdownvalues: ISelectItem[] = [];\r\n return new Promise((resolve, reject) => {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\r\n if (response) {\r\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\r\n return resolve(dropdownvalues);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n })\r\n });\r\n }\r\n\r\n setDropDown(response: any, valueProp: string, labelProp: string) {\r\n if (valueProp) valueProp = valueProp.toLowerCase();\r\n if (labelProp) labelProp = labelProp.toLowerCase();\r\n let dropdownvalues: ISelectItem[] = [];\r\n if (response.records) {\r\n this.setDataFields(response.records).forEach((record: any) => {\r\n if (\r\n record.hasOwnProperty(valueProp && labelProp) &&\r\n record[valueProp] &&\r\n record[labelProp]\r\n ) {\r\n dropdownvalues.push({\r\n label: record[labelProp].toString().trim(),\r\n value: record[valueProp].toString().trim(),\r\n });\r\n }\r\n });\r\n }\r\n return dropdownvalues;\r\n }\r\n\r\n setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EGridColumnType } from '../models/grid.model';\r\nimport { ISidebar } from '../models/sidebar.model';\r\nimport { RequestService } from './request.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HyperlinkService {\r\n constructor(private requestService: RequestService) { }\r\n\r\n buildUrl(linkIds: any, params: { [key: string]: string }) {\r\n return new Promise((resolve, reject) => {\r\n if (Array.isArray(linkIds)) {\r\n this.requestService\r\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\r\n .subscribe(\r\n (res: any) => {\r\n if (res) {\r\n return resolve(res);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n } else {\r\n this.requestService\r\n .getOne<any, any>('/Link/ByLinkId', linkIds)\r\n .subscribe(\r\n (response) => {\r\n if (response) {\r\n return resolve(this.setUrl(params, response));\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n setUrl(params: { [key: string]: string }, response: any) {\r\n let url: string = response.url;\r\n for (let paramKey in params) {\r\n const lowerKey = paramKey.toLowerCase();\r\n const paramValue = params[paramKey];\r\n if (\r\n url &&\r\n url.search &&\r\n url.search(lowerKey) > 0 &&\r\n paramValue &&\r\n paramValue.length > 0\r\n ) {\r\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n async addHyperlinks(columns: any) {\r\n let linkIds: any[] = [];\r\n let params: any;\r\n if (columns && Array.isArray(columns)) {\r\n columns.forEach((column) => {\r\n if (\r\n (column.type === EGridColumnType.LINK ||\r\n column.type === EGridColumnType.IFRAME||\r\n column.type === EGridColumnType.LOOKUP_INPUT) &&\r\n column.linkId &&\r\n column.params\r\n ) {\r\n linkIds.push(column.linkId);\r\n params = column.params;\r\n }\r\n });\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n } else if (columns.linkId) {\r\n linkIds.push(columns.linkId);\r\n params = columns.params;\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n setSidebarLink(response: any, sidebar: ISidebar[]) {\r\n response.forEach((res: any) => {\r\n sidebar.forEach((item) => {\r\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\r\n item.onClick(res.url);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { IGridSort, ISelectItem } from './grid.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IDynamicForm {\r\n formSections?: IFormSection[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface ILabel {\r\n name: string;\r\n disabled?: boolean;\r\n labelControl?: IFormField;\r\n onReturn?: (value: any) => void;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface IDropDownRequest {\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters?: ISetFilter[]\r\n sorts?:IGridSort[] \r\n}\r\n\r\nexport interface ISetFilter {\r\n field?: string,\r\n value?: any,\r\n matchMode?: string,\r\n operator?: string,\r\n valueField?: string;\r\n}\r\n\r\nexport interface IFormSection {\r\n name?: string;\r\n fields: IFormField[];\r\n icon?: string;\r\n class?: string;\r\n links?: ILabel[];\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n accordionDisabled?: boolean;\r\n showAccordion?: boolean;\r\n expanded?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n}\r\n\r\nexport interface IFormField {\r\n label?: string | ILabel;\r\n class?: string;\r\n card?: IDynamicCard;\r\n control?: EFormControl;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n value?: any | ILookupInputValue;\r\n data?: any[];\r\n validations?: IValidation[];\r\n errorMessage?: string;\r\n minutesInterval?: number;\r\n id?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n componentControl?: IFormComponentField;\r\n column?: number;\r\n row?: number;\r\n hyperlink?: IHyperlink;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?: any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n isvalid?: boolean;\r\n timeOnly?: boolean\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n requiredField?: boolean;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n uniqueKey?: string;\r\n azureContainer?: string;\r\n}\r\n\r\nexport interface IDynamicCard {\r\n id?: number;\r\n name?: string;\r\n data?: any[];\r\n orderByField?: string;\r\n formSections?: IFormSection[];\r\n onSort?: (value: any) => any;\r\n allowDelete?: boolean;\r\n allowDownload?: boolean;\r\n url?: string;\r\n caption?: string;\r\n width?: string;\r\n height?: string;\r\n allowEditableCaption?: boolean;\r\n onCaptionSave?: (value: any) => any;\r\n onDelete?: (value: any) => any;\r\n class?: string;\r\n cardInfo?: IViewCardProp;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\nexport interface IReportBtn{\r\n reportId: number;\r\n control?: EFormControl.REPORT;\r\n params?: any[];\r\n showDialog?: boolean;\r\n}\r\n\r\nexport interface IListFilter {\r\n uniqueKey: string;\r\n filters?: ISetFilter[];\r\n sorts?: IGridSort[];\r\n}\r\n\r\nexport interface IFormComponentField {\r\n component: Type<any>;\r\n id?:string;\r\n data?: {\r\n [key: string]: any;\r\n };\r\n handlers?: {\r\n [key: string]: Function;\r\n };\r\n}\r\n\r\nexport interface ILookupInputValue {\r\n text: any;\r\n value: any;\r\n}\r\n\r\nexport interface ILookupControlField {\r\n component: any;\r\n data: ILookupFieldData;\r\n id?: string;\r\n}\r\n\r\nexport declare type ILookupFieldData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n data?: {[key: string]: any};\r\n valueField?: string;\r\n selectedValue?: string;\r\n} \r\n\r\nexport interface IValidation {\r\n type: EValidator;\r\n expression?: any;\r\n}\r\n\r\nexport enum ESelectFileType {\r\n EXCEL = '.excel',\r\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\r\n DOCUMENT = '.document',\r\n PDF = '.pdf',\r\n MRT = '.mrt',\r\n}\r\n\r\nexport enum EValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport enum EFormControl {\r\n BUTTON = 'button',\r\n LABEL = 'label',\r\n INPUT = 'input',\r\n CHECKBOX = 'checkbox',\r\n DROPDOWN = 'dropdown',\r\n CALENDAR = 'calender',\r\n NUMERIC = 'number',\r\n MULTISELECT = 'multi-select',\r\n TEXTAREA = 'text-area',\r\n HYPERLINK = 'hyperlink',\r\n LOOKUP_INPUT = 'lookup_input',\r\n NOTE_FIELD = 'note_field',\r\n COMPONENT = 'component',\r\n PASSWORD = 'password',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n SPACER = 'spacer',\r\n SECTION_HEADER = 'section_header',\r\n FILE_UPLOAD = 'file_upload',\r\n CARD = 'card',\r\n DISPLAY_FILE = 'display_file',\r\n ADD_BUTTON = 'add_button',\r\n SWITCH = 'switch',\r\n REPORT = 'report'\r\n}\r\n\r\nexport enum EOperator {\r\n AND = 'and',\r\n OR = 'or',\r\n}\r\n\r\nexport enum EMatchMode {\r\n EQUALS = 'equals',\r\n STARTSWITH = 'startsWith',\r\n CONTAINS ='contains',\r\n IN = 'in',\r\n ENDSWITH = 'endsWith',\r\n NOTEQUALS = 'notEquals',\r\n ISNOT = 'isNot',\r\n DATEISNOT = 'dateIsNot',\r\n NOTCONTAINS ='notContains',\r\n LT = 'lt',\r\n BEFORE = 'before',\r\n DATEBEFORE = 'datebefore',\r\n LTE = 'lte',\r\n GT = 'gt',\r\n AFTER = 'after',\r\n DATEAFTER = 'dateAfter',\r\n GTE = 'gte',\r\n}\r\n\r\nexport interface IFormat {\r\n type: EFormatType;\r\n formatParams?:\r\n | IFormatParam\r\n | IDateFormatParam\r\n | INumberFormatParam\r\n | IallowCalculateFormatParam\r\n | ICurrencyFormatParam;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParam extends IFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IallowCalculateFormatParam extends IFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface INumberFormatParam extends IFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParam extends INumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport enum EFormatType {\r\n SMALLDATE = 'mm/d/y',\r\n SHORTDATE = 'mm/d/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n MONTHONLY = 'mm/yy',\r\n PERIOD = 'mm/y',\r\n BOOLEAN_YN = 'BOOLEAN_YN',\r\n CUSTOM = 'custom',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport interface IHyperlink {\r\n target?: EHyperlink;\r\n link?: string;\r\n linkId?: string;\r\n params?: any;\r\n width?:string;\r\n height?:string;\r\n component?: any;\r\n data?: ILookupFieldData;\r\n}\r\n\r\nexport enum EHyperlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n PARENT = '_parent',\r\n TOP = '_top',\r\n IFRAME = '_iframe',\r\n DIALOG = '_dialog'\r\n}\r\n\r\nexport interface AddFormField {\r\n control?: EFormControl;\r\n field?: string;\r\n class?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n label?: string | ILabel;\r\n value?: string | any;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n id?: string;\r\n hidden?: boolean;\r\n validations?: IValidation[] | any;\r\n hyperlink?: IHyperlink;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n minutesInterval?: number;\r\n disabled?: boolean | any;\r\n disabledText?: boolean;\r\n column?: number;\r\n row?: number;\r\n componentControl?: IFormComponentField;\r\n data?: ISelectItem[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n timeOnly?: boolean;\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?:any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n card?: IDynamicCard;\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { ISidebar } from '../../public-api';\r\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\r\nimport {\r\n EFormatType,\r\n EFormControl,\r\n EHyperlink,\r\n EMatchMode,\r\n EOperator,\r\n IDynamicCard,\r\n IDynamicForm,\r\n IFormat,\r\n IFormField,\r\n IFormSection,\r\n} from '../models/form.model';\r\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\r\nimport { Subject } from 'rxjs';\r\n\r\n/* #region public methods */\r\n\r\n/**\r\n *\r\n * @param value : any\r\n * Function receives the value and expects the value to be formated.\r\n * Do not use fat arrow function as they do not preserve the context.\r\n * this.value refers to the value of IFormField Object\r\n * Modify this.value directly to receive effect\r\n */\r\n\r\n var formstate = new Subject<any>();\r\n\r\n export function changeDynamicFormState(id: any, data: any) {\r\n formstate.next({ id, data });\r\n}\r\n \r\n export function onDynamicFormStateChange() {\r\n return formstate.asObservable();\r\n }\r\n\r\n export function closeIFrame(){\r\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\r\n if(close) {\r\n close.click();\r\n }\r\n}\r\n\r\n export function setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\r\n formSections?.forEach((section)=>{\r\n section.fields.forEach((field:any)=>{\r\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\r\n let keys = Object.keys(value);\r\n keys.forEach((key)=>{\r\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\r\n });\r\n changeDynamicFormState(id, field.componentControl.data);\r\n };\r\n });\r\n });\r\n}\r\n\r\nexport function toDecimal(value: any): any {\r\n if (value) {\r\n return parseFloat(value.toString()).toFixed(2);\r\n }\r\n}\r\n\r\nexport function toBoolean(value: any) {\r\n return value === 'Y' ? true : false;\r\n}\r\n\r\nexport function toShortDate(value: any, format?: IFormat) {\r\n if (value && value !== '') {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toShortDateTime(value: any, format?: IFormat) {\r\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toTrim(text: any) {\r\n if (typeof text === 'string') {\r\n return text.trim();\r\n } else {\r\n return text;\r\n }\r\n}\r\n\r\nexport function getMatchKey(obj: any, propName: string): string {\r\n if (!obj || !propName) {\r\n return '';\r\n }\r\n\r\n let matchedKey = '';\r\n if (Array.isArray(obj)) {\r\n obj.forEach((row) => {\r\n const keys: any[] = Object.keys(row);\r\n if (!matchedKey || matchedKey.length === 0) {\r\n matchedKey = keys.find(\r\n (x) => x.toLowerCase() === propName.toLowerCase()\r\n );\r\n }\r\n });\r\n } else {\r\n const keys: any[] = Object.keys(obj);\r\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\r\n }\r\n\r\n return matchedKey;\r\n}\r\n\r\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\r\n let formattedValue: any = value;\r\n if (formField.format) {\r\n switch (formField.format.type) {\r\n case EFormatType.DECIMAL:\r\n formattedValue = toDecimal(value);\r\n break;\r\n case EFormatType.BOOLEAN_YN:\r\n formattedValue = toBoolean(value);\r\n break;\r\n case EFormatType.SHORTDATE:\r\n formattedValue = toShortDate(value);\r\n break;\r\n case EFormatType.CUSTOM:\r\n if (formField.format.formatter) {\r\n formattedValue = formField.format.formatter(value);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return formattedValue;\r\n}\r\n\r\nexport function setFormField(\r\n { formSections }: IDynamicForm,\r\n formFieldObj: IFormField\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField: IFormField) => {\r\n if (\r\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\r\n (formField.label && formField.label === formFieldObj.label)\r\n ) {\r\n formField = formFieldObj;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function setHyperlinkComponentData(\r\n { formSections }: IDynamicForm,\r\n label: string,\r\n data: any\r\n){\r\n formSections?.forEach((section) => {\r\n let field=section.fields.find((field)=> field.label && field.label===label)\r\n if(field && field.hyperlink) field.hyperlink.params = data;\r\n});\r\n}\r\n\r\nexport function setLookupData(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n data: any\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n section.fields.map((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data &&\r\n data\r\n ) {\r\n formField.label.labelControl.lookupControl.data.data = data;\r\n }\r\n if (formField.lookupControl && formField.lookupControl.data && data) {\r\n formField.lookupControl.data.data = data;\r\n }\r\n }\r\n });\r\n });\r\n return formSections;\r\n}\r\n\r\nexport function setLinkParamValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n params: any[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n const isLabelLink =\r\n formField.label && typeof formField.label === 'object';\r\n if (\r\n formField.field?.toLowerCase() === field?.toLowerCase() ||\r\n (isLabelLink &&\r\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label &&\r\n typeof formField.label === 'string' &&\r\n formField.label?.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n let newLink: string = isLabelLink\r\n ? formField.label?.labelControl?.orignalLink\r\n : formField.hyperlink?.link;\r\n\r\n if (newLink && newLink.length > 0) {\r\n return params.map((paramObj: IDictionary): any => {\r\n if (\r\n (typeof paramObj.value === 'object' && paramObj.value) ||\r\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\r\n ) {\r\n // removing https:// or http:// from hyperlink param value\r\n if (\r\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \r\n (newLink.includes('https://') || newLink.includes('http://')) \r\n ) {\r\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\r\n }\r\n const paramName: string = paramObj.name.toLowerCase();\r\n const paramFormat: string = !paramObj.value\r\n ? '{{' + paramName + '}}'\r\n : paramName;\r\n\r\n if (newLink.localeCompare(paramFormat)) {\r\n let setLink =\r\n paramFormat !== '{{' + paramFormat + '}}'\r\n ? '{{' + paramFormat + '}}'\r\n : paramFormat;\r\n\r\n newLink = newLink.replace(\r\n new RegExp(setLink, 'ig'),\r\n toTrim(paramObj.value)\r\n );\r\n if (newLink && !newLink.startsWith('http'))\r\n {\r\n newLink = \"http://\" + newLink;\r\n }\r\n }\r\n return isLabelLink\r\n ? (formField.label.labelControl.hyperlink.link = newLink)\r\n : (formField.hyperlink.link = newLink);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\r\n let newLink: string = link;\r\n if (params && params.length > 0) {\r\n params.map((param) => {\r\n const url = param.name ? '{{' + param.name + '}}' : '';\r\n if (newLink.localeCompare(url)) {\r\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\r\n }\r\n });\r\n }\r\n return newLink;\r\n}\r\n\r\nexport function setFormPropValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n props: IDictionary[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n if (\r\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\r\n ) {\r\n return props.map((prop: IDictionary) => {\r\n if (formField.hasOwnProperty(prop.name)) {\r\n return (formField[prop.name] = prop.value);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\r\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\r\n if(section){\r\n section.fields.push(formField);\r\n }\r\n return dynamicForm;\r\n}\r\n\r\nexport function setFormFields(\r\n { formSections }: IDynamicForm,\r\n formFields: IFormField[]\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField) => {\r\n let matchedField = formFields.find(\r\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\r\n );\r\n if (matchedField) {\r\n formField = matchedField;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function getGlobalFilters(\r\n globalFilters: addGlobalFilter[],\r\n field: string,\r\n) {\r\n let formFieldObj: any;\r\n globalFilters.map((filter)=>{\r\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = filter;\r\n }\r\n });\r\n return formFieldObj;\r\n}\r\n\r\nexport function setFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n value: any,\r\n displayText: string = ''\r\n) {\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (displayText && displayText.length > 0) {\r\n formField.value = { text: displayText, value: value };\r\n } else {\r\n formField.value = value;\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function getFormFields(\r\n { formSections }: IDynamicForm,\r\n formControl: EFormControl\r\n): IFormField[] {\r\n let formFields: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.control === formControl) {\r\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\r\n {\r\n formField.value = formField.value.text.trim();\r\n }\r\n else if (formField.value && typeof(formField.value) === 'string')\r\n {\r\n formField.value = formField.value.trim();\r\n }\r\n formFields.push(formField);\r\n }\r\n });\r\n });\r\n return formFields;\r\n}\r\n\r\nexport function getFormField(\r\n { formSections }: IDynamicForm,\r\n field: string\r\n): IFormField {\r\n let formFieldObj: any;\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = formField;\r\n }\r\n });\r\n });\r\n return formFieldObj;\r\n}\r\n\r\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\r\n// exist in the field then always return a displayField value.\r\nexport function getFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n returnDisplayFieldValue:boolean = false\r\n) {\r\n let value;\r\n for (const section of formSections as any) {\r\n section.fields.forEach((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\r\n if (\r\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\r\n formField.displayField\r\n ) {\r\n value = isValid ? formField.value?.text : formField.value?.value;\r\n } else {\r\n value = isValid\r\n ? formField.value?.text\r\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\r\n ? formField.value?.value\r\n : formField.value;\r\n }\r\n }\r\n });\r\n }\r\n return value;\r\n}\r\n\r\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\r\n let value:any = getFormFieldValue(dynamicForm,field, true);\r\n if (value){\r\n value = value.toString();\r\n }\r\n return value;\r\n}\r\n\r\nexport function getSectionFieldValue(\r\n formSections: IFormSection[],\r\n field: string\r\n) {\r\n let form: IDynamicForm = { formSections };\r\n return getFormFieldValue(form, field, true);\r\n}\r\n\r\nexport function setSaveFormValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let response: any = {};\r\n if (tables && tables.length > 0) {\r\n tables.forEach((tableName) => {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n\r\n sectionFields?.forEach((field) => {\r\n const table = field.tables?.map((table) => table.toLowerCase());\r\n\r\n if (table && table.includes(tableName.toLowerCase())) {\r\n if (!response[tableName]) {\r\n response[tableName] = {};\r\n }\r\n\r\n if (field.field && field.field.length > 0) {\r\n response[tableName][field.field] = formatFormFieldCValue(field);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n sectionFields?.forEach((field) => {\r\n if (field.field && field.field.length > 0) {\r\n response[field.field] = formatFormFieldCValue(field);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function setSaveCardValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let values: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.card.data) {\r\n field.card.data.forEach((cardData: any) => {\r\n if (cardData.dynamicForm.formSections) {\r\n values.push(\r\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\r\n );\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return values;\r\n}\r\n\r\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\r\n if (data && data.length > 0 && Array.isArray(data)) {\r\n data.forEach((dataRow) => {\r\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\r\n });\r\n } else {\r\n setEditFormFieldsInfo(data, dynamicForm);\r\n }\r\n}\r\n\r\nexport function setFilter(\r\n field: string,\r\n value: any,\r\n matchMode: EMatchMode = EMatchMode.EQUALS,\r\n operator: EOperator = EOperator.AND,\r\n) {\r\n const filter: any = {\r\n field: field,\r\n matchMode: matchMode,\r\n operator: operator,\r\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\r\n };\r\n return filter;\r\n}\r\n\r\nexport function setAndFilter(field: string, value: any) {\r\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\r\n}\r\n\r\nexport function getOrigDataFieldValue(data: any, propName: string): any {\r\n let value: any;\r\n if (data) {\r\n if (Array.isArray(data)) {\r\n for (let i = 0; i < data.length; i++) {\r\n value = getPropertyValue(data[i], propName);\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n } else {\r\n value = getPropertyValue(data, propName);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function getOrigDataFieldValueAsString(\r\n data: any,\r\n propName: string\r\n): string {\r\n let value = getOrigDataFieldValue(data, propName);\r\n if (value) {\r\n return value.toString();\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport function setSidebarPropValues(\r\n sidebar: ISidebar[],\r\n section: string,\r\n props: IDictionary[]\r\n) {\r\n sidebar.map((sidebarItem: any) => {\r\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\r\n props.map((prop) => {\r\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\r\n sidebarItem.data.data = prop.value;\r\n } else {\r\n return setPropValue(sidebarItem, prop);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setSectionPropValues(\r\n { formSections }: IDynamicForm,\r\n sectionName: string,\r\n props: IDictionary[]\r\n) {\r\n formSections?.map((section) => {\r\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\r\n props.map((prop) => {\r\n return setPropValue(section, prop);\r\n });\r\n }\r\n });\r\n}\r\n\r\n/* #endregion */\r\n\r\n/* #region private methods */\r\n\r\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\r\n if (data.records && data.records.length > 0) {\r\n data.records.forEach((record: any) => {\r\n const keys: string[] = Object.keys(record);\r\n dynamicForm.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField: any) => {\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n // set label hyperlink\r\n setLabelHyperlink(formField, record, keys, allData);\r\n }\r\n\r\n if (\r\n formField.control === EFormControl.HYPERLINK &&\r\n formField.hyperlink &&\r\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\r\n formField.hyperlink.link)\r\n ) {\r\n let params = formField.hyperlink.params;\r\n let paramKeys: string[] = [];\r\n\r\n if (\r\n !params &&\r\n formField.hyperlink.link &&\r\n formField.hyperlink.link.includes('}}')\r\n ) {\r\n paramKeys = formField.hyperlink.link.split('}}');\r\n paramKeys = paramKeys.map((paramKey) => {\r\n paramKey = paramKey.replace('{{', '').trim();\r\n return paramKey;\r\n });\r\n paramKeys = paramKeys.filter((x) => x.length > 0);\r\n } else {\r\n if(params){\r\n paramKeys = Object.keys(params);\r\n }\r\n }\r\n\r\n formField.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n formField.hyperlink.link,\r\n paramKeys,\r\n formField.hyperlink.params,\r\n allData\r\n );\r\n } else {\r\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\r\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\r\n ? new Date(record[matchedKey] as string)\r\n : '';\r\n } else if (formField.control === EFormControl.CARD) {\r\n if (formField.card && formField.card.formSections) {\r\n if (!formField.card.data) {\r\n formField.card.data = data;\r\n }\r\n \r\n setEditFormFieldsInfo(data, formField.card);\r\n }\r\n } else if (\r\n formField.control === EFormControl.AUTOCOMPLETE &&\r\n matchedKey\r\n ) {\r\n let arrayValue = [];\r\n if (record[matchedKey] && formField.displayField) {\r\n arrayValue.push({[formField.displayField] : record[matchedKey]});\r\n }\r\n formField.value = arrayValue;\r\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.label.labelControl.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.label.labelControl.lookupControl.data.data = obj;\r\n }\r\n }\r\n\r\n if (\r\n formField.lookupControl &&\r\n formField.lookupControl.data &&\r\n formField.lookupControl.data.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.lookupControl.data.data = obj;\r\n }\r\n }\r\n if(record[matchedKey]){\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n if (\r\n formField.displayField &&\r\n formField.displayField.length > 0\r\n ) {\r\n const matchDisplayField = getMatchKey(\r\n record,\r\n formField.displayField\r\n );\r\n if (matchDisplayField) {\r\n formField.value = {\r\n text: toTrim(record[matchDisplayField]),\r\n value: formField.value?.value,\r\n };\r\n }\r\n\r\n const matchValueField = getMatchKey(record, formField.field);\r\n if (matchValueField) {\r\n formField.value = {\r\n text: formField.value?.text,\r\n value: toTrim(record[matchValueField]),\r\n };\r\n }\r\n }\r\n } else if (\r\n formField.control === EFormControl.COMPONENT &&\r\n formField.componentControl?.data\r\n ) {\r\n formField.componentControl.data = findKeysAndValue(\r\n formField.componentControl.data,\r\n record\r\n );\r\n changeDynamicFormState(\r\n formField.componentControl.id,\r\n formField.componentControl?.data\r\n );\r\n } else if (\r\n formField.control === EFormControl.NUMERIC &&\r\n formField.label?.labelControl?.lookupControl?.data?.data\r\n ) {\r\n let setData = formField.label.labelControl.lookupControl;\r\n setData.data.data = findKeysAndValue(setData.data.data, record);\r\n changeDynamicFormState(setData.id, setData.data.data);\r\n } else if (formField.control === EFormControl.HYPERLINK \r\n && formField.hyperlink?.target === EHyperlink.DIALOG \r\n && formField.hyperlink.params\r\n ) {\r\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\r\n } else if (matchedKey) {\r\n if (formField.format) {\r\n formField.value = formatFormFieldValue(\r\n formField,\r\n record[matchedKey]\r\n );\r\n } else if (formField.control === EFormControl.CHECKBOX) {\r\n formField.value =\r\n record[matchedKey] &&\r\n (record[matchedKey].toString() === '1' ||\r\n record[matchedKey].toString() === 'true')\r\n ? true\r\n : false;\r\n }else if (formField.control === EFormControl.DROPDOWN) {\r\n let dropValue = record[matchedKey];\r\n formField.value = dropValue\r\n ? dropValue.toString()\r\n : dropValue;\r\n } else {\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n//set hyperlink param value as field value\r\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\r\n let keys: string[] = [];\r\n let link: string ='';\r\n let paramKeys: string[] = [];\r\n let param: any;\r\n let fieldInfo: any;\r\n dynamicForm.formSections?.forEach((section: any) => {\r\n section.fields.forEach((formField: any) => {\r\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\r\n keys = Object.keys(record);\r\n if(formField?.label?.labelControl?.orignalLink){\r\n link = formField.label.labelControl.orignalLink;\r\n }\r\n\r\n if(formField?.label?.labelControl?.hyperlink?.params){\r\n param = formField.label.labelControl.hyperlink.params;\r\n paramKeys = Object.keys(param);\r\n }\r\n fieldInfo = formField;\r\n if(record && keys && link && paramKeys && param && fieldInfo){\r\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function objConvertToLower(obj: any) {\r\n return Object.keys(obj).reduce((accumulator: any, key) => {\r\n accumulator[key.toLowerCase()] = obj[key];\r\n return accumulator;\r\n }, {});\r\n}\r\n\r\nexport function clickSectionHighlight(value: any) {\r\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\r\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\r\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\r\n allMenuItems?.forEach((menauItem: any) => {\r\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\r\n })\r\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\r\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n}\r\n\r\nexport function removeActiveIconClass() {\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n if (activeIcon && activeIcon.length > 0) {\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n }\r\n}\r\n\r\nexport function highlightLeftSidebar(){\r\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\r\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\r\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\r\n\r\n allIconElements?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('tabIndex', 'section' + index);\r\n });\r\n removeActiveIconClass();\r\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\r\n const currentId = \"section\" + index;\r\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\r\n } else{\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \r\n }\r\n });\r\n });\r\n }\r\n\r\nexport function findKeysAndValue(data: any, record: any) {\r\n let valueKey: string = '';\r\n Object.keys(data).forEach((dataKey) => {\r\n let valueContainsKey: boolean = false;\r\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\r\n valueContainsKey = true;\r\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n }\r\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\r\n if (key && key.length > 0) {\r\n data = { ...data, [dataKey]: record[key] };\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction setPropValue(obj: any, prop: IDictionary) {\r\n const matchedKey: string = getMatchKey(obj, prop.name);\r\n if (matchedKey) {\r\n return (obj[matchedKey] = prop.value);\r\n }\r\n}\r\n\r\nexport function hasRole(role: string): boolean {\r\n let storage = localStorage.getItem('CurrentUserInfo');\r\n if (storage) {\r\n let currentUser = JSON.parse(storage);\r\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\r\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\r\n if (\r\n item.label &&\r\n item.label.labelControl &&\r\n item.label.labelControl.hyperlink &&\r\n item.label.labelControl.hyperlink.params\r\n ) {\r\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\r\n const link = item.label.labelControl.hyperlink.link;\r\n if (item.label.labelControl.hyperlink.link) {\r\n item.label.labelControl.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n link,\r\n paramKeys,\r\n item.label.labelControl.hyperlink.params,\r\n allData\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function setHyperlink(\r\n keys: string[],\r\n record: any,\r\n link: string,\r\n paramKeys: string[],\r\n params: any,\r\n allData: any[] = []\r\n): string {\r\n let newLink: string = link;\r\n record = objConvertToLower(record);\r\n paramKeys.forEach((paramkey) => {\r\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\r\n const isParamMatched = newLink.localeCompare(param);\r\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\r\n\r\n if (isParamMatched) {\r\n let paramValue = params ? params[paramkey] : null;\r\n if(paramValue === '' && paramInRecord){\r\n paramValue = '{'+paramkey+'}';\r\n }\r\n if (paramValue) {\r\n const propName = paramValue.toString().replace('{', '').replace('}', '');\r\n let propValue = record[propName.toLowerCase()];\r\n \r\n // in case of prop not found in record then try to find prop in all data array, to get its value \r\n if (!propValue && allData && allData.length > 0)\r\n {\r\n allData.forEach((data)=>{\r\n //const value = data.records.find((x)=> x[propName]);\r\n data.records.forEach((allRecord: any)=>{\r\n let keys = Object.keys(allRecord);\r\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\r\n if (matchKey){\r\n propValue = allRecord[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\r\n \r\n } else {\r\n // get param value from api response, if param key exists in it\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === paramkey.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n paramValue = record[matchedKey];\r\n if (paramValue) {\r\n newLink = newLink.replace(\r\n new RegExp(param, 'ig'),\r\n toTrim(paramValue)\r\n );\r\n } else {\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n // replace the {{param}} with empty\r\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\r\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\r\n }\r\n return newLink;\r\n}\r\n\r\n// its checking if there is no value in hyperlink param then it set key as a paramValue\r\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\r\n let paramValue: boolean = false;\r\n if(allData && allData.length > 0){\r\n allData.forEach((data: any)=>{\r\n if(data.records && data.records.length > 0){\r\n data.records.forEach((allRecord: any) =>{\r\n if(paramValue === false){\r\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\r\n };\r\n });\r\n };\r\n });\r\n }else{\r\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\r\n }\r\n return paramValue;\r\n}\r\n\r\nfunction getPropertyValue(data: any, propName: string) {\r\n let propValue: any;\r\n data.records?.forEach((record: any) => {\r\n for (const [key, value] of Object.entries(record)) {\r\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\r\n propValue = value;\r\n }\r\n }\r\n });\r\n return propValue;\r\n}\r\n\r\nfunction formatFormFieldCValue(field: any) {\r\n if (\r\n field.format?.type === EFormatType.BOOLEAN_YN &&\r\n field.format?.formatter?.name === 'toBoolean'\r\n ) {\r\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\r\n } else if (\r\n field.control === EFormControl.CALENDAR &&\r\n (field.value || field.value === '')\r\n ) {\r\n if(field.timeOnly && field.saveAsString){\r\n field.value = field.value;\r\n }else{\r\n field.value =\r\n field.showTime === true\r\n ? toShortDateTime(field.value, field.format)\r\n : toShortDate(field.value, field.format)\r\n }\r\n return field.value;\r\n } else if (\r\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value == undefined ? null : field.value.value;\r\n } else if (\r\n field.label &&\r\n field.label.labelControl &&\r\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value;\r\n } else {\r\n field.value = field.value == undefined ? null : field.value;\r\n return field.value;\r\n }\r\n}\r\n\r\nexport function autoSetLookupData(\r\n fieldData: any,\r\n response: any\r\n) {\r\n let obj = {};\r\n let record = setDataFields([response]);\r\n if (record && record.length > 0) {\r\n record.forEach((x: any) => {\r\n record = x;\r\n });\r\n }\r\n if (fieldData && record) {\r\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\r\n let rowKeys = Object.keys(record);\r\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\r\n let value = rowKeys?.find(\r\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n );\r\n if (value && value.length > 0) {\r\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\r\n } else if (key && key.length > 0) {\r\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\r\n } else {\r\n obj = { ...obj, [dataKey]: dataValue };\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\r\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\r\n if(obj && obj.lookupControl?.data){\r\n obj.lookupControl.data.data = data;\r\n }\r\n}\r\n\r\nexport function setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n}\r\n\r\nexport function setDialogResponse(\r\n formField: any,\r\n formData: any,\r\n response: any\r\n) {\r\n let value: any;\r\n if (response) {\r\n // if selectedValue does not exist then consider valueField as selectedValue\r\n if (\r\n formData &&\r\n formData.data &&\r\n formData.data.valueField &&\r\n !formData.data.selectedValue\r\n ) {\r\n formData.data.selectedValue = formData.data.valueField;\r\n }\r\n\r\n const matchValueKey: string = getMatchKey(\r\n response,\r\n formData?.data?.selectedValue\r\n );\r\n const matchFieldKey: string = getMatchKey(\r\n response,\r\n formData?.data?.valueField\r\n );\r\n\r\n if (\r\n formData?.data &&\r\n formData?.data.selectedValue &&\r\n formData?.data.valueField\r\n ) {\r\n let selectedValue = response[matchValueKey];\r\n let matchText = response[matchFieldKey];\r\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\r\n selectedValue = selectedValue.trim();\r\n matchText = matchText.trim();\r\n }\r\n value = { text: matchText, value: selectedValue };\r\n } else {\r\n const FieldKey: string = getMatchKey(response, formField.field);\r\n let value = response[FieldKey];\r\n if (value) {\r\n value = value.trim();\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function currentUrl():string{\r\n let currentRoute: string = '';\r\n let url = window.location.href;\r\n if(url){\r\n let arr = url.split('/');\r\n currentRoute = arr[arr.length-1]\r\n } \r\n return currentRoute;\r\n}\r\n\r\nexport function getGridFilters(){\r\n let filters: any = [];\r\n let gridFilters = currentUrl();\r\n if(gridFilters && gridFilters.length > 0){\r\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\r\n filters = localFilter?.filters;\r\n }\r\n return filters;\r\n}\r\n\r\n//update the hidden or disabled and value based off other global filters.\r\nexport function setGlobalFilterPropValues(\r\n globalFilter: IGlobalFilter[],\r\n field: string,\r\n props: IFilterDictionary[],\r\n) {\r\n return globalFilter.map((filter: any) => {\r\n if (\r\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\r\n (filter.displayText &&\r\n filter.displayText.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n props?.map((prop: IFilterDictionary) => {\r\n if (filter.hasOwnProperty(prop.propName)) {\r\n return (filter[prop.propName] = prop.propValue);\r\n } else if (prop.propValue && prop.propValue.length > 0) {\r\n return (filter.value = prop.propValue);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setCardFieldsData(form: any) {\r\n if (form && form.dynamicform) {\r\n const { dynamicform, ...newData } = form;\r\n dynamicform?.formSections?.forEach((section: any) => {\r\n section.fields?.forEach((field: any) => {\r\n if (newData) {\r\n setEditFormFields({ records: [newData] }, dynamicform);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n// disable Grid EditableRow Column\r\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let disableObj = { ...obj, disabled: true };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = disableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n// enabled Grid EditableRow Column\r\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let enableObj = { ...obj, disabled: false };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = enableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n // check the Minutes Interval\r\n export function setMinutesInterval(value: any){\r\n if (value) {\r\n const min = value.getMinutes().toString();\r\n if (min) {\r\n value = value.setMinutes(0);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\n // update the response records\r\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\r\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\r\n if(index > -1){\r\n records[index] = rowData;\r\n }else{\r\n records.push(rowData);\r\n }\r\n return records;\r\n}\r\n\r\n//convert the time into date\r\nexport function setTimeInDate(time: any) {\r\n const convertTime12to24 = (time12h: any) => {\r\n const [time, modifier] = time12h?.toString()?.split(' ');\r\n let [hours, minutes] = time?.split(':');\r\n if (hours === '12') {\r\n hours = '00';\r\n }\r\n if (modifier === 'PM') {\r\n hours = parseInt(hours, 10) + 12;\r\n }\r\n return `${hours}:${minutes}`;\r\n };\r\n const date = convertTime12to24(time);\r\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\r\n const futureDate = new Date();\r\n futureDate.setTime(tempDate.getTime());\r\n return futureDate;\r\n}\r\n\r\n// return the data of the field \r\nexport function getFieldData({ formSections }: any, field: string){\r\n let data: any = []\r\n if(formSections?.length > 0 && field){\r\n formSections.forEach((section: any)=>{\r\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\r\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\r\n }\r\n })\r\n }\r\n return data;\r\n}\r\n\r\nexport function setAllFormFieldsValues(\r\n { formSections }: IDynamicForm,\r\n props: IFilterDictionary[]\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n if (section) {\r\n section.fields.map((formField: any) => {\r\n return props.map((prop: IFilterDictionary) => {\r\n if (formField) {\r\n return (formField[prop.propName] = prop.propValue);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function calenderMinMaxValue(item: any,value: any, index){\r\n let validation: string = 'equal';\r\n var validDate = new Date(item.validations[index].expression);\r\n var currentDate = new Date(value);\r\n if (validDate.getTime() < currentDate.getTime()){\r\n validation = 'greater';\r\n }\r\n else if (validDate.getTime() > currentDate.getTime()){\r\n validation = 'minimum';\r\n }\r\n return validation;\r\n}\r\n/* #endregion */\r\n","import { Injectable } from '@angular/core';\r\nimport { LazyLoadEvent } from 'primeng/api';\r\nimport { IDropDownRequest } from '../models/form.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport {\r\n EGridSortDirection,\r\n GridFilterControlType,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridSort,\r\n EGridColumnType,\r\n addColumn,\r\n addFilterColumn,\r\n addGlobalFilter,\r\n IGridColumn,\r\n EGridValidator,\r\n IGridProp,\r\n IGridPropFilter,\r\n IGridRowProp,\r\n IGridReportBtn,\r\n} from '../models/grid.model';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { HyperlinkService } from './hyperlink.service';\r\nimport * as utilities from './utilities.service';\r\nimport { RequestService } from './request.service';\r\nimport { IDictionary } from '../models/common.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridService {\r\n softCachingFilters: any = {};\r\n applyFilterEvent: boolean = true;\r\n public columnFocusedOut:boolean = false;\r\n constructor(\r\n public datepipe: DatePipe,\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService:DropdownService,\r\n private alertService:AlertService,\r\n private requestService: RequestService\r\n ) {}\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns after proper mapping\r\n */\r\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\r\n const filters = this.mapFilters(event, columns);\r\n return this.handleMultiFilterField(filters);\r\n }\r\n\r\n /**\r\n * @param filters\r\n * Receives filters and returns array after removing duplicates\r\n * and creating comma separated values for same filters\r\n */\r\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\r\n return filters\r\n .map((x, i, arr) =>\r\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\r\n ? {\r\n ...x,\r\n value: arr\r\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\r\n .map((a) => a.value)\r\n .join(),\r\n }\r\n : x\r\n )\r\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\r\n }\r\n\r\n // Prepare basic grid filters\r\n prepareBasicFilters(\r\n event: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridFilter[] {\r\n return this.mapFilters(event, columns);\r\n }\r\n\r\n /**\r\n * Checks if filters has values then converts global filter values type into IGridFilter.\r\n */\r\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\r\n const globalData: IGridFilter[] = [];\r\n\r\n globalFilters?.forEach((filter: IGlobalFilter) => {\r\n if (\r\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\r\n filter.value.length) ||\r\n (typeof filter.value !== 'string' &&\r\n !Array.isArray(filter.value) &&\r\n filter.value) ||\r\n (typeof filter.value === 'boolean' && filter.value !== null) ||\r\n filter.type === GridFilterControlType.CALENDAR_RANGE\r\n ) {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\r\n // add filter for start date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n\r\n // add filter for end date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter, false),\r\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter, false),\r\n tableAlias: filter.tableAlias,\r\n });\r\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode:\r\n filter.type === GridFilterControlType.MULTISELECT\r\n ? 'in'\r\n : filter.matchMode,\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n }\r\n }\r\n });\r\n return globalData;\r\n }\r\n\r\n setGlobalFilterField(\r\n filter: any,\r\n isStartDate: boolean = true\r\n ): string {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\r\n if (isStartDate) {\r\n return filter.fromField;\r\n } else {\r\n return filter.toField;\r\n }\r\n } else {\r\n return filter.field;\r\n }\r\n }\r\n\r\n // set global filter value\r\n setGlobalFilterValue(\r\n filter: IGlobalFilter,\r\n isStartDate: boolean = true\r\n ): string | number | Date | boolean {\r\n switch (filter.type) {\r\n case GridFilterControlType.MULTISELECT:\r\n return (filter.value as any[]).join(',');\r\n case GridFilterControlType.CALENDAR:\r\n return this.getFormattedDate(filter.value as Date);\r\n case GridFilterControlType.CALENDAR_RANGE:\r\n let dateValues: string[] = filter.value\r\n ? filter.value.toString().split('|')\r\n : [];\r\n if (dateValues && dateValues.length == 2) {\r\n let dateValue: Date = isStartDate\r\n ? new Date(dateValues[0])\r\n : new Date(dateValues[1]);\r\n return this.getFormattedDate(dateValue);\r\n } else {\r\n return '';\r\n }\r\n case GridFilterControlType.CHECKBOX:\r\n return filter.value ? true : false;\r\n default:\r\n return filter.value as string;\r\n }\r\n }\r\n\r\n checkValidity(columns: IGridColumn[], row: any){\r\n let isValid: boolean = true;\r\n columns.map((item: any) => {\r\n if (item.validations && !item.disabled) {\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\r\n const valid = item.validations && item.header\r\n if (\r\n item.validations[i].type == EGridValidator.REQUIRED &&\r\n !row[item.field] &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = row[item.field]\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINLENGTH &&\r\n row[item.field].length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXLENGTH &&\r\n row[item.field].length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] < item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXIMUM &&\r\n isValid \r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] > item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PATTERN &&\r\n !row[item.field].match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.NUMERIC &&\r\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PHONE &&\r\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.DECIMAL &&\r\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.EMAIL &&\r\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n row[item.field] &&\r\n row[item.field]?.toString().match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n // set basic filter value\r\n setBasicFilterValue(filter: any): any {\r\n if (filter instanceof Date) {\r\n return this.getFormattedDate(filter);\r\n } else if (typeof filter === 'boolean') {\r\n return filter ? 1 : 0;\r\n } else {\r\n return filter;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param param\r\n * Receives lazy event and returns sort array\r\n */\r\n getGridSorts(\r\n { multiSortMeta }: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridSort[] {\r\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\r\n field,\r\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\r\n priority: i + 1,\r\n tableAlias: this.setTableAlias(field, columns),\r\n }));\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Handles default and lookup filters\r\n */\r\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\r\n const filters: IGridFilter[] = [];\r\n Object.entries(event.filters).forEach(([field, value]: any) => {\r\n if (Array.isArray(value)) {\r\n (value as IGridFilter[]).forEach(\r\n ({ matchMode, operator, value: filter }) => {\r\n if (filter !== null) {\r\n filters.push({\r\n field,\r\n matchMode,\r\n operator,\r\n value: this.setBasicFilterValue(filter),\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n if (value.value !== '') {\r\n switch (typeof value.value) {\r\n case 'boolean':\r\n filters.push({\r\n field,\r\n matchMode: 'equals',\r\n operator: 'and',\r\n value: value.value ? 1 : 0,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'string':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'number':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'object':\r\n if (value.value instanceof Date) {\r\n filters.push({\r\n field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value:\r\n value.value instanceof Date\r\n ? this.getFormattedDate(value.value)\r\n : value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n } else {\r\n (value.value || []).forEach((x: any) => {\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: x.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n });\r\n }\r\n break;\r\n default:\r\n null;\r\n }\r\n }\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns page number\r\n */\r\n getGridPagination(event: any): number {\r\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\r\n }\r\n\r\n // get formatted date\r\n getFormattedDate(value: Date): string {\r\n return new Date(`${value} Z`).toISOString().slice(0, 10);\r\n }\r\n\r\n // add simple grid column without\r\n addColumn(columnInfo: addColumn): IGridColumn {\r\n if(columnInfo.type === EGridColumnType.DROPDOWN){\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n }\r\n const column: IGridColumn = {\r\n allowSearch: columnInfo.allowSearch,\r\n field: columnInfo.field,\r\n header: columnInfo.header,\r\n style: columnInfo.style,\r\n type: columnInfo.type,\r\n format: columnInfo.format,\r\n data: columnInfo.data,\r\n filtering: columnInfo.filtering,\r\n hidden: columnInfo.hidden,\r\n sorting: columnInfo.sorting,\r\n filter: columnInfo.filter,\r\n hyperlink: columnInfo.hyperlink,\r\n tableAlias: columnInfo.tableAlias,\r\n linkId: columnInfo.linkId,\r\n minutesInterval: columnInfo.minutesInterval,\r\n params: columnInfo.params,\r\n showOption: columnInfo.showOption,\r\n displayText: columnInfo.displayText,\r\n target: columnInfo.target,\r\n disabled: columnInfo.disabled,\r\n allowSave: columnInfo.allowSave,\r\n editable: columnInfo.editable, \r\n editLink: columnInfo.editLink,\r\n saveAsString: columnInfo.saveAsString,\r\n component: columnInfo.component,\r\n onClick: columnInfo.onClick,\r\n onReturn: columnInfo.onReturn,\r\n onFocusOut: columnInfo.onFocusOut,\r\n onChange: columnInfo.onChange,\r\n aggregate: columnInfo.aggregate,\r\n formatter: columnInfo.formatter,\r\n permissions: columnInfo.permissions,\r\n optionLabel: columnInfo.optionLabel,\r\n optionValue: columnInfo.optionValue,\r\n dropDownProp: columnInfo.dropDownProp,\r\n showTime: columnInfo.showTime,\r\n timeOnly: columnInfo.timeOnly,\r\n lookupControl: columnInfo.lookupControl,\r\n displayField: columnInfo.displayField,\r\n icon: columnInfo.icon,\r\n color: columnInfo.color,\r\n id: columnInfo.id,\r\n value: columnInfo.value,\r\n validations: columnInfo.validations,\r\n };\r\n\r\n return column;\r\n }\r\n \r\n // Adding Report Button Function for Grid\r\n addReportBtn(columnInfo: IGridReportBtn){ \r\n columnInfo.type = EGridColumnType.REPORT;\r\n return columnInfo;\r\n}\r\n\r\n // add simple input grid column\r\n addInputColumn(\r\n filterColumnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\r\n }\r\n return this.addColumn(filterColumnInfo);\r\n }\r\n\r\n // add simple numeric grid column without\r\n addNumericColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.NUMERIC;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple calendar grid column without\r\n addCalendarColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple boolean grid column without\r\n addBooleanColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.type = EGridColumnType.BOOLEAN,\r\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add LookUp Field for Grid\r\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add Button for grid column\r\n addButtonColumn(\r\n columnInfo: addColumn,\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.ADD_BUTTON;\r\n if (!columnInfo.field) {\r\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add AutoComplete for grid column\r\n addAutoComplete(columnInfo: addColumn): IGridColumn {\r\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // Search AutoComplete Data for Grid\r\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n column.data = this.setDataFields(response.records);\r\n });\r\n }\r\n\r\n\r\n // add simple dropdown grid column without\r\n addDropdownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n dropDownProp?: IDropDownRequest\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.DROPDOWN;\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\r\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (dropDownProp) {\r\n columnInfo.dropDownProp = dropDownProp;\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n }\r\n// add MultiSelectDropDown grid column\r\naddMultiSelectDropDownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n multiSelectProp?: IDropDownRequest\r\n): IGridColumn {\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n columnInfo.type = EGridColumnType.MULTISELECT;\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\r\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (multiSelectProp) {\r\n columnInfo.dropDownProp = multiSelectProp;\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n}\r\n\r\n showFilterIcon(columnInfo: addColumn){\r\n if(columnInfo.filter && columnInfo.filter.showFilter){\r\n return true; \r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n setDropdownData(\r\n column: IGridColumn,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any[],\r\n row?: {[key: string]: any}\r\n ): Promise <any> | any{\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\r\n .then((res: any) => {\r\n if(row){\r\n row[column.field+'_data'] = res;\r\n }else{\r\n column.data=res;\r\n if(column.filter && column.filter.type === \"dropdown\"){\r\n column.filter.data = res;\r\n }\r\n }\r\n return this.addColumn(column);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n\r\n // add grid column with built-in filter\r\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\r\n const column: any = {\r\n field: filterColumnInfo.field,\r\n header: filterColumnInfo.header,\r\n filter: { type: filterColumnInfo.filter },\r\n filtering: filterColumnInfo.filtering,\r\n hidden: filterColumnInfo.hidden,\r\n style: filterColumnInfo.style,\r\n tableAlias: filterColumnInfo.tableAlias,\r\n permissions: filterColumnInfo.permissions\r\n };\r\n\r\n return column;\r\n }\r\n\r\n // add date grid column with built-in filter\r\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\r\n const column: IGridColumn = {\r\n field: dateColumnInfo.field,\r\n header: dateColumnInfo.header,\r\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\r\n filtering: dateColumnInfo.filtering,\r\n filter: { type: GridFilterControlType.CALENDAR },\r\n format: dateColumnInfo.format,\r\n style: dateColumnInfo.style,\r\n tableAlias: dateColumnInfo.tableAlias,\r\n disabled: dateColumnInfo.disabled,\r\n allowSave: dateColumnInfo.allowSave,\r\n permissions: dateColumnInfo.permissions,\r\n component: dateColumnInfo.component,\r\n showTime: dateColumnInfo.showTime,\r\n timeOnly: dateColumnInfo.timeOnly,\r\n data: dateColumnInfo.data,\r\n hidden: dateColumnInfo.hidden,\r\n };\r\n return column;\r\n }\r\n\r\n setLookUpFilter(column: any, dialogService: any) {\r\n if (column.lookupControl) {\r\n let dataValue: any[]= [];\r\n let dataKey: any[] = [];\r\n let data = column.lookupControl?.data?.data;\r\n const keys = Object.keys(data);\r\n if (data && keys?.length > 0) {\r\n keys.forEach((key) => {\r\n if (data[key].toString().includes('{')) {\r\n dataValue.unshift(data[key]);\r\n dataKey.unshift(key);\r\n data[key] = '';\r\n }\r\n });\r\n }\r\n const ref = dialogService.open(\r\n column.lookupControl.component,\r\n column.lookupControl.data\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if (column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n if(dataKey?.length > 0 && dataValue?.length > 0){\r\n dataKey.forEach((key,keyIndex)=>{\r\n dataValue.forEach((value, valueIndex)=>{\r\n if(keyIndex === valueIndex){\r\n data[key] = value;\r\n }\r\n });\r\n });\r\n }\r\n if (res) {\r\n document.getElementById('lookUp_filter')?.focus();\r\n let field = column.field;\r\n let value =utilities.setDialogResponse(\r\n column,\r\n column?.lookupControl,\r\n res\r\n );\r\n column.value = value?.value ? value.value : res[field.toLowerCase()];\r\n }\r\n },\r\n ({ error }:any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n // Set Hyperlink field as a param Value\r\n setFieldAsLinkParam(columns: any, field: string, response: any) {\r\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\r\n this.setDataFields(response.records).forEach((res: any) => {\r\n let obj = columns.find((x: any)=> x.field === field);\r\n if(obj && obj.params){\r\n const keys = Object.keys(obj.params)\r\n keys.forEach((key: any)=>{\r\n if(obj.params[key] && obj.params[key].toString().includes('{')){\r\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\r\n obj.params[key] = res[value];\r\n }\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\r\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \r\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\r\n }\r\n\r\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\r\n columns.forEach((column)=>{\r\n if(column.type === EGridColumnType.DIALOG && !column.data){\r\n this.alertService.error(`\"Data\" property is missing for \"${column.header}\" column`);\r\n }\r\n })\r\n let records: any = [];\r\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\r\n let newRow:any;\r\n\r\n return this.hyperlinkService\r\n .addHyperlinks(columns).then((linksResponse: any) => {\r\n data.forEach((row: any) => {\r\n newRow = { ...row };\r\n columns.forEach((col: any) => {\r\n let keys = Object.keys(row);\r\n if(col.type === EGridColumnType.DIALOG){\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n if(col.format && newRow[field].displayText){\r\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\r\n }\r\n if (col.data && col.data.data){\r\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\r\n }\r\n }\r\n linksResponse.forEach((linkResponse: any) => {\r\n if (\r\n (col.type === EGridColumnType.LINK ||\r\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\r\n col.linkId &&\r\n col.params &&\r\n col.linkId === linkResponse.linkId\r\n ) {\r\n const paramKeys: string[] = Object.keys(col.params);\r\n const link: any = utilities.setHyperlink(\r\n keys,\r\n row,\r\n linkResponse.url,\r\n paramKeys,\r\n col.params\r\n );\r\n\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].hyperlink = link;\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n }\r\n });\r\n });\r\n records.push(newRow);\r\n });\r\n return records;\r\n });\r\n }\r\n\r\n // add grid global filter with built-in filter\r\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\r\n const column: addGlobalFilter = {\r\n field: globelFilterInfo.field,\r\n displayText: globelFilterInfo.displayText,\r\n validations: globelFilterInfo.validations,\r\n type: globelFilterInfo.type,\r\n data: globelFilterInfo.data,\r\n value: globelFilterInfo.value,\r\n valueTwo: globelFilterInfo.valueTwo,\r\n matchMode: globelFilterInfo.matchMode,\r\n operator: globelFilterInfo.operator,\r\n tableAlias: globelFilterInfo.tableAlias,\r\n optionLabel: globelFilterInfo.optionLabel,\r\n optionValue: globelFilterInfo.optionValue,\r\n onFocusOut: globelFilterInfo.onFocusOut,\r\n filtering: globelFilterInfo.filtering,\r\n column: globelFilterInfo.column,\r\n dayRange: globelFilterInfo.dayRange,\r\n fromField: globelFilterInfo.fromField,\r\n toField:globelFilterInfo.toField,\r\n lookupControl: globelFilterInfo.lookupControl,\r\n allowSearch: globelFilterInfo.allowSearch,\r\n disabled: globelFilterInfo.disabled,\r\n hidden: globelFilterInfo.hidden,\r\n labelText: globelFilterInfo.labelText,\r\n prefix: globelFilterInfo.prefix,\r\n color: globelFilterInfo.color,\r\n format: globelFilterInfo.format,\r\n };\r\n return column;\r\n }\r\n\r\n // add global input filter\r\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add global dropdown filter\r\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n let sorts= dropDownProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n // add global MultiSelect dropdown filter\r\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\r\n if (multiSelectProp) {\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n let sorts = multiSelectProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n \r\n \r\n\r\n\r\n getDropdownData(\r\n fieldInfo: any,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any,\r\n sorts: IGridSort[] = []\r\n ) {\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addGlobalFilter(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n // add global filter Space Field\r\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.SPACER;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n}\r\n\r\n // add global boolean filter\r\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric Range Filter for global Filter\r\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric input for global Filter\r\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\r\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add LookUp Field for global Filter\r\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n setDataFields(response: any, dataKey: string = \"\") {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n if(Object.keys(x ?? {})?.length > 0){\r\n const result:any = Object.keys(x)?.reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\r\n {\r\n result[dataKey] = index;\r\n }\r\n \r\n data.push(result);\r\n }\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n setColumnFields(columns: any[]) {\r\n let column: any = [];\r\n if (columns && columns.length > 0) {\r\n columns.map((col: any) => {\r\n column.push({ ...col, field: col?.field?.toLowerCase() });\r\n });\r\n return column;\r\n }\r\n }\r\n\r\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\r\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\r\n if (columns && columns.length > 0) {\r\n columns.forEach((column: any) => {\r\n if (column.field?.toLowerCase() === field.toLowerCase()) {\r\n column.linkId = linkId;\r\n if(params){\r\n column.params = params;\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\r\n if(changeLink){\r\n delete res[0][field.toLowerCase()+'_obj'];\r\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\r\n if(index !== -1){\r\n if(users[index][field+'_obj']){\r\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\r\n }\r\n }\r\n } \r\n });\r\n }\r\n\r\n // set grid data and set selected row based on selection value\r\n setDataWithSelectedRow(records: any, configData: any) {\r\n if (configData?.selectedValue && configData.data.selection) {\r\n records.forEach((record: any) => {\r\n Object.keys(record)?.forEach((key) => {\r\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\r\n if(configData.data.value && record[key] === configData.data.value){\r\n record['highlightRow'] = true;\r\n } else if(record[key] === configData.data.selection){\r\n record['highlightRow'] = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return records;\r\n }\r\n\r\n setTableAlias(field: string, columns: IGridColumn[]) {\r\n if (columns && columns.length > 0) {\r\n const column = columns.find(\r\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\r\n );\r\n\r\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\r\n return column.tableAlias;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n setGridPropValues(\r\n columns: IGridColumn[],\r\n props: IGridProp[],\r\n filter?: IGridPropFilter,\r\n records?: any[],\r\n ) {\r\n if (columns && columns.length > 0 && props && props.length > 0) {\r\n let isMatched: boolean = false;\r\n if (filter && filter.field && records && records.length > 0) {\r\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\r\n }\r\n props.map((prop: IGridProp) => {\r\n let col: any = {};\r\n if (prop.field && !isMatched && !filter?.field) {\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n } else if (isMatched) {\r\n if(prop.field){\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n }else {\r\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\r\n }\r\n }\r\n if (col && col.hasOwnProperty(prop.name)) {\r\n col[prop.name] = prop.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // set grid row propValues\r\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\r\n props?.forEach((prop)=>{\r\n if(prop.propName && (prop.propValue || prop.propValue === false) && prop.field){\r\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\r\n if(fieldName){\r\n if(row[fieldName]?.action){\r\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\r\n }else{\r\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\r\n }\r\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\r\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\r\n };\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n // remove the rowActions from the records\r\n removeRowActions(records){\r\n if(records?.length > 0){\r\n records.forEach((row)=>{\r\n if(row.rowAction){\r\n delete row['rowAction'];\r\n }\r\n })\r\n }\r\n return records;\r\n }\r\n}","export interface IUserInfo {\r\n id: number;\r\n username: string;\r\n isADUser: boolean;\r\n token: string;\r\n activities: string[];\r\n roles: IUserRole[];\r\n }\r\n \r\n export interface IUserRole {\r\n id: number;\r\n code: string;\r\n name: string;\r\n description: string;\r\n }\r\n \r\n export interface IPermission {\r\n type: EPermissionType;\r\n roles: string[];\r\n }\r\n \r\n export enum EPermissionType {\r\n EDIT = 'edit',\r\n VIEW = 'view',\r\n DELETE = 'delete',\r\n ADDROW = 'addRow',\r\n }\r\n ","import { Injectable } from '@angular/core';\r\nimport { IUserInfo } from '../models/user-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n userInfoKey: string = 'CurrentUserInfo';\r\n\r\n login(response: any): boolean {\r\n if (response) {\r\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getUserInfo() {\r\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\r\n }\r\n\r\n getUserRoles() {\r\n let roles: any = [];\r\n let userInfo: IUserInfo = this.getUserInfo();\r\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\r\n roles = userInfo.roles.map((x) => x.name);\r\n }\r\n return roles;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.getUserInfo() ? true : false;\r\n }\r\n\r\n logout() {\r\n // setting Function for removing the Grid Filters When User logout. \r\n let keys = Object.keys(localStorage);\r\n if(keys && keys.length > 0){\r\n keys.forEach((key)=>{\r\n if(key.includes('SetFilters-')){\r\n localStorage.removeItem(key);\r\n }\r\n });\r\n }\r\n // removing the UserName & Password When User logout.\r\n localStorage.removeItem(this.userInfoKey);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-iframe',\r\n templateUrl: './iframe.component.html',\r\n styleUrls: ['./iframe.component.scss']\r\n})\r\nexport class IframeComponent implements OnInit,OnDestroy {\r\n url: any;\r\n id:string='';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadIFrameData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.id){\r\n const url: any = document.getElementById(this.id);\r\n this.ref.close(url.contentWindow.location.href);\r\n }\r\n }\r\n\r\n loadIFrameData(){\r\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.config.data.value\r\n );\r\n this.id = this.config.data.iFrameId;\r\n\r\n }\r\n }\r\n\r\n iframeLoaded(){\r\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\r\n\r\n if(iframeEl){\r\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\r\n }\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageLoggerService {\r\n\r\n constructor(private requestService: RequestService) { }\r\n \r\n // save page logger info\r\n savePageLoggerInfo(currentRoute, componentName: string = '') {\r\n this.requestService\r\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\r\n .subscribe(\r\n (data) => {\r\n return data;\r\n },\r\n (error) => {}\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n Optional,\r\n ElementRef,\r\n ViewChildren,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport {\r\n DynamicDialogRef,\r\n DynamicDialogConfig,\r\n DialogService,\r\n} from 'primeng/dynamicdialog';\r\nimport { saveAs } from 'file-saver';\r\nimport jsPDF from 'jspdf';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport {\r\n IGridColumn,\r\n IGridSort,\r\n IGridServerSideEvent,\r\n IGridPaginationEvent,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridColumnAction,\r\n IGridRowAction,\r\n EGridSelectionType,\r\n EGridColumnType,\r\n EGridSortDirection,\r\n IGridDataExport,\r\n EGridAggregate,\r\n ILookupValue,\r\n EGridFormatType,\r\n IGridFilterInfo,\r\n} from '../../../models/grid.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { Table } from 'primeng/table';\r\nimport { EFormatType } from '../../../models/form.model';\r\nimport { Router } from '@angular/router';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n})\r\nexport class GridComponent implements OnInit, OnChanges {\r\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\r\n @Output() inlineRowCancel = new EventEmitter();\r\n @Input() set activeTestMode(val: any) {\r\n if (val === true) {\r\n debugger;\r\n }\r\n }\r\n serverFilters: IGridServerSideEvent = {};\r\n rowsData: any[];\r\n rowsDataCopy: any[] = [];\r\n roles: string[] = [];\r\n isColumnHidden: boolean = false;\r\n rowClickData: IGridColumn;\r\n componentTableRef: any;\r\n lookupObject: ILookupValue;\r\n lookupFilterObj: any;\r\n lookupBlur: boolean = true;\r\n globalFiltersArray: any[] = [];\r\n checkAction: boolean = false;\r\n calenderPreviousValue: string = '';\r\n gridFilterObj: IGridFilterInfo;\r\n defaultDate: any;\r\n dropDownFilter: any = {};\r\n dropdownInput: boolean = false;\r\n saveAllRecord: boolean = false;\r\n editAllRecord: boolean = false;\r\n cancelAllRecords: boolean = false;\r\n addNewRowCheck: boolean = false;\r\n inEditMode: boolean = false;\r\n saveRecordArray: any[] = [];\r\n disabledSaveBtn:boolean = false;\r\n\r\n editModeChecked: boolean = true;\r\n editModeunCkecked: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Table\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n hideEditAllRowsBtn: boolean = true;\r\n\r\n //apply Add/Delete/Edit prop for the grid permission\r\n addRowPermission: boolean = true;\r\n deleteRowPermission: boolean = true;\r\n editRowPermission: boolean = true;\r\n\r\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\r\n setAggregateFooter: string = '';\r\n\r\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\r\n aggregateFooter: boolean = false;\r\n\r\n // Maintains previous state of rows being edited\r\n editRowsRecords: { [key: string]: any } = {};\r\n\r\n // Maintains record of rows being edited\r\n editingRowKeys: { [key: string]: any } = {};\r\n\r\n @ViewChild('dt') table: Table;\r\n\r\n // Selects items in the grid based on passed on data\r\n @Input() selectedRows: any = [];\r\n\r\n private globalData: IGridFilter[] = [];\r\n\r\n sortDisabled: boolean = false;\r\n\r\n // Stores selected columns\r\n private _selectedColumns: IGridColumn[] = [];\r\n\r\n // Boolean prop to allow horizontal Scroll on Table.\r\n @Input() horizontalScroll: boolean = false;\r\n\r\n // Prop to handle loader of grid\r\n @Input() public loading = false;\r\n\r\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\r\n @Input() autoLoadData: boolean = true;\r\n\r\n // Boolean prop to check where selected is allowed or not.\r\n @Input() allowSelection = false;\r\n\r\n // Set column width of selected row.\r\n @Input() selectionColumnWidth: string = '80px';\r\n \r\n // Boolean prop to hide the add row button.\r\n @Input() hideOnRowAddBtn = false;\r\n\r\n // Boolean prop to allow export to pdf.\r\n @Input() allowExportToPdf = false;\r\n\r\n // Boolean prop to allow export to excel.\r\n @Input() allowExportToExcel = false;\r\n \r\n // Boolean prop to set the action column as first column.\r\n @Input() setActionColumnAsFirst = false;\r\n\r\n // If true, enables options to perform CRUD using inline row functionality\r\n @Input() useInlineCRUD = false;\r\n\r\n // Array of row actions\r\n @Input() rowActions: IGridRowAction[] = [];\r\n\r\n // Sets selection type i.e: single/multiple selection\r\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\r\n\r\n // Unique key requires for built-in row selection of primeNg grid\r\n @Input() dataKey: string = 'id';\r\n\r\n // Flag for clear filter values button\r\n @Input() clearGridFilter = true;\r\n\r\n // Flag for search filter values button\r\n @Input() searchGridFilter = true;\r\n\r\n // Flag in case table is scrollable\r\n @Input() scrollable = true;\r\n\r\n // Sets scroll height for the table\r\n @Input() scrollHeight = '680px';\r\n\r\n // Boolean prop to allow to wrap or unWrap the grid.\r\n @Input() wordWrap: boolean = false;\r\n\r\n @Input() newGridRow: any = {};\r\n\r\n @Input() filtering = true;\r\n\r\n @Input() rowHover: boolean = false;\r\n\r\n @Input() hideFilterOptions: boolean = false;\r\n\r\n // Sets pagenation for the table Data.\r\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\r\n\r\n // set the change in the rowData\r\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Stops the loader and sets the data to grid\r\n * Clears the editing stack\r\n * Scrolls to selected element if selection found\r\n */\r\n @Input() set rows(data: any[]) {\r\n this.loading = false;\r\n if (data && data.length > 0) {\r\n if (!this.dataKey) {\r\n this.dataKey = 'id';\r\n }\r\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\r\n } else {\r\n this.rowsData = [];\r\n }\r\n\r\n // Cleaning the editing stack\r\n this.editingRowKeys = {};\r\n this.editRowsRecords = {};\r\n\r\n setTimeout(() => {\r\n if (data && data.length > 0 && this.selectedRows) {\r\n const selectedElementRef = this.gridRow.find(\r\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\r\n );\r\n selectedElementRef &&\r\n (\r\n selectedElementRef.nativeElement as HTMLTableRowElement\r\n ).scrollIntoView({ behavior: 'smooth' });\r\n }\r\n }, 0);\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, {}, false);\r\n }\r\n });\r\n }\r\n //manipulate checkbox string value to true and false.\r\n this.changeCheckboxStringValue();\r\n }\r\n\r\n // Global filter server request\r\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\r\n this.globalData = this.gridService\r\n .prepareGlobalFilters(globalFilters)\r\n ?.filter((x) => x?.value !== false);\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = this.serverFilters.filters\r\n ? this.serverFilters.filters.concat(this.globalData)\r\n : this.globalData;\r\n\r\n if (localStorage.getItem('applyFilter') === 'false') {\r\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\r\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\r\n : this.globalFiltersArray;\r\n }\r\n if (localStorage.getItem('applyFilter') === 'true') {\r\n globalFilters.forEach((globalFilter) => {\r\n this.globalFiltersArray.forEach((filterArray) => {\r\n if (\r\n filterArray.field === globalFilter.field &&\r\n globalFilter.value &&\r\n filterArray.value !== globalFilter.value\r\n ) {\r\n filterArray.value = globalFilter.value;\r\n }\r\n const findIndex = this.globalFiltersArray.findIndex(\r\n (index) => index.field === globalFilter.field && !globalFilter.value\r\n );\r\n if (findIndex !== -1) {\r\n this.globalFiltersArray.splice(findIndex, 1);\r\n }\r\n });\r\n });\r\n\r\n this.loading = this.autoLoadData;\r\n setTimeout(() => {\r\n if(this.gridService.applyFilterEvent || this.autoLoadData){\r\n this.onApplyFilter.emit();\r\n }\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n serverFilterValues.filters = serverFilterValues.filters.concat(\r\n this.globalFiltersArray\r\n );\r\n }\r\n serverFilterValues.filters = Array.from(\r\n new Set(\r\n serverFilterValues.filters\r\n .reverse()\r\n .map((filter: any) => filter.field)\r\n )\r\n ).map((field) => {\r\n return serverFilterValues.filters.find((x: any) => x.field === field);\r\n });\r\n serverFilterValues.filters = serverFilterValues.filters.filter(\r\n (obj: any) =>\r\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\r\n );\r\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\r\n // setting pagination page as first\r\n serverFilterValues.page = 1;\r\n if(this.defaultRows && this.pagination){ \r\n serverFilterValues.pageSize = this.defaultRows;\r\n }\r\n if(this.gridService.applyFilterEvent){\r\n this.onServerSideEventChange.emit(serverFilterValues)\r\n }\r\n localStorage.removeItem('applyFilter');\r\n // setting pagination page number UI\r\n this.table._first = 0;\r\n }\r\n }, 300);\r\n }\r\n }\r\n\r\n // Input decorator to receive columns to be displayed in header\r\n @Input() columns: IGridColumn[] = [];\r\n\r\n @Input() permissions: IPermission[] = [];\r\n\r\n // Optional prop to handle toggling of columns\r\n @Input() allowColumnToggle = false;\r\n\r\n // Optional prop to hide filtering of columns\r\n @Input() hideFilter = false;\r\n\r\n // Optional prop to handle lookup filters\r\n @Input() lookupFilters = false;\r\n\r\n // Optional prop to handle pagination\r\n @Input() pagination = false;\r\n\r\n // Optional prop to handle show CurrentPage Report\r\n @Input() showCurrentPageReport = false;\r\n\r\n // Displays total number of records\r\n @Input() totalRecords = 0;\r\n\r\n @Input() showconfirmDialog: boolean = true;\r\n\r\n // Sets number of rows to be shown the grid\r\n @Input() defaultRows: number;\r\n\r\n @Input() columnActions: IGridColumnAction[] = [];\r\n\r\n // Decides the grid's behavior either for client side or server side events\r\n @Input() useServerSideEvents = false;\r\n\r\n // Output event to handle row click\r\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to handle row CheckBox\r\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to trigger on sort change\r\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\r\n\r\n // Output event to trigger on filter change\r\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to invoke the multiSelection click event\r\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a grid and globalFilters called\r\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\r\n\r\n //set header checkbox value for getting all columns on stay admin\r\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a lazy event is dispatched\r\n @Output()\r\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\r\n new EventEmitter();\r\n\r\n // Output event to trigger on pagination\r\n @Output()\r\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\r\n\r\n // Dispatch output event trigger on edit row\r\n @Output() onRowUpdate = new EventEmitter();\r\n\r\n // Dispatch output event trigger cancel all rows\r\n @Output() onCancelAllRows = new EventEmitter();\r\n\r\n // Dispatch output event trigger on delete row\r\n @Output() onRowDelete = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add row\r\n @Output() onRowAdd = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add, update and delete row\r\n @Output() onGridRowActions = new EventEmitter();\r\n\r\n // set property allowCaching for LocalStorage\r\n @Input() allowCaching: boolean;\r\n\r\n // set property softCaching for setting the values of gridFilter\r\n @Input() softCaching: boolean = true;\r\n \r\n @Input() editAllRows: boolean = false;\r\n\r\n // set the row When Edit the row on Grid\r\n @Output() onGridRowEdit = new EventEmitter();\r\n\r\n // set the row When adding the new Row on Grid\r\n @Output() onGridRowAdd = new EventEmitter();\r\n\r\n isGridHidden: boolean = false;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private alertService: AlertService,\r\n private authService: AuthenticationService,\r\n private elementRef: ElementRef,\r\n public decimalPipe: DecimalPipe,\r\n private pageLoggerService: PageLoggerService,\r\n private cd: ChangeDetectorRef,\r\n private router: Router,\r\n private datePipe: DatePipe,\r\n public confirmationService: ConfirmationService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n get selectedColumns(): IGridColumn[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: IGridColumn[]) {\r\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\r\n }\r\n\r\n // browser close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.editAllRows){\r\n this.disabledSaveBtn = true;\r\n }\r\n \r\n this.componentTableRef = this.table;\r\n setTimeout(() => {\r\n this.setNumericValues();\r\n }, 500);\r\n }\r\n\r\n // apply user role permissions on grid columns\r\n applyColumnsPermissions() {\r\n if (this.columns) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.columns.forEach((column: any) => {\r\n let permissions: IPermission[] = column.permissions;\r\n // if (!permissions) permissions = this.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n // else {\r\n // let index = this.columns.findIndex(\r\n // (i) => i.field === column.field\r\n // );\r\n // if (index !== -1) {\r\n // this.columns.splice(index, 1);\r\n // }\r\n // }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n column.disabled = true;\r\n } else {\r\n column.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n column.hidden = false;\r\n column.disabled = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (column.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n // apply global permissions on entire grid\r\n applyGridPermissions() {\r\n if (this.permissions && this.permissions.length > 0) {\r\n let hasValidEditPermission = false;\r\n\r\n // check if any column has any permission\r\n let hasColumnPermissions = this.columns?.some(\r\n (x) => x?.permissions && x.permissions.length > 0\r\n );\r\n\r\n this.permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n this.useInlineCRUD = true;\r\n if (!isValid && !hasColumnPermissions) {\r\n this.isGridHidden = true;\r\n this.useInlineCRUD = false;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\r\n this.isGridHidden = false;\r\n hasValidEditPermission = true;\r\n this.editRowPermission = false;\r\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\r\n this.deleteRowPermission = false;\r\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\r\n this.addRowPermission = false;\r\n }\r\n });\r\n }\r\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\r\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\r\n }\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.allowCaching !== false && this.pagination) {\r\n this.allowCaching = this.pagination;\r\n } else {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n }\r\n // add defaultRow in pagination array\r\n if (!this.setPaginationLength.includes(this.defaultRows)) {\r\n this.setPaginationLength.unshift(this.defaultRows);\r\n }\r\n const hasColumns: boolean = this.columns && this.columns.length > 0;\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions on grid columns\r\n this.applyColumnsPermissions();\r\n\r\n // apply global permissions on entire grid\r\n this.applyGridPermissions();\r\n\r\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\r\n this.cd.detectChanges();\r\n\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n // checking filter exist or not\r\n const filter = this._selectedColumns.some(\r\n (column) => column.filtering === undefined || column.filtering === true\r\n );\r\n if (filter === false) {\r\n this.hideFilter = true;\r\n }\r\n\r\n this.columns.forEach((column: any) => {\r\n // convert string time into the date\r\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\r\n this.rowsData.forEach((row) => {\r\n if (\r\n row[column.field] &&\r\n (row[column.field].toString().includes('PM') ||\r\n row[column.field].toString().includes('AM'))\r\n ) {\r\n row[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n });\r\n }\r\n // set filter value\r\n if (column.filter && column.value && column.filtering !== false) {\r\n this.setFilterFocusOut(column);\r\n }\r\n // add \"flex-shrink: 0\" for flex-basis Style\r\n if (column.style && column.style.includes('flex-basis')) {\r\n let style = column.style + ' !important; flex-shrink: 0 !important';\r\n column.style = style.includes(';;')\r\n ? style.replace(';;', ';')\r\n : style;\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n this.setDisplayTextValue(column);\r\n\r\n //Aggregate scenario\r\n if (column.aggregate && column.aggregate.length > 0) {\r\n this.aggregateFooter = true;\r\n this.setAggregateText(column);\r\n }\r\n\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(\r\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\r\n );\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (\r\n !this.hideFilter &&\r\n searchFilters &&\r\n searchFilters.filters &&\r\n searchFilters.filters.length > 0\r\n ) {\r\n searchFilters.filters.forEach((x: any) => {\r\n if (x.value && x.field === column.field) {\r\n if(column?.filter?.type === 'calendar'){\r\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\r\n }else{\r\n column.value = x.value;\r\n }\r\n }\r\n });\r\n }\r\n // converting displayField toLowercase\r\n if (column.displayField) {\r\n column.displayField = column.displayField.toLowerCase();\r\n }\r\n // set AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n this.rowsData &&\r\n this.rowsData.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n // convert string that contains comma into arrays\r\n if (\r\n row[column.field] &&\r\n row[column.field]?.toString().includes(',')\r\n ) {\r\n row[column.field] = row[column.field]\r\n ?.toString()\r\n .split(',')\r\n ?.map((value: any) => ({ [column.displayField]: value }));\r\n }\r\n\r\n const key: any = Object.keys(row).find(\r\n (x) => x === column.field.toLowerCase()\r\n );\r\n // convert simple string into array\r\n if (!Array.isArray(row[key]) && row[key]) {\r\n row[key] = [{ [column.displayField]: row[key] }];\r\n }\r\n });\r\n }\r\n\r\n //when we add a new row, it set the default value\r\n if (column.value && Object.keys(this.newGridRow).length > 0) {\r\n const key = Object.keys(this.newGridRow).find(\r\n (x) => x === column.field\r\n );\r\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\r\n this.newGridRow[key] = column.value;\r\n }\r\n }\r\n });\r\n\r\n // Searching scenario\r\n if (change.rows?.currentValue && change.columns?.currentValue) {\r\n // Checks either column value is changes (i.e., column hidden scenario)\r\n if (\r\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\r\n JSON.stringify(this.columns).toLowerCase()\r\n ) {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n } else {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const classElement = document.getElementsByClassName('highlighted-row');\r\n if (classElement.length > 0) {\r\n classElement[0].scrollIntoView();\r\n }\r\n\r\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \r\n this.editAllRowsAtOnce();\r\n }\r\n }, 500);\r\n }\r\n const globalSearchbtn = document.getElementById('globalSearchbtn');\r\n if (globalSearchbtn) {\r\n this.searchGridFilter = false;\r\n }\r\n if(this.rowsData?.length > 0){\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n }\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n setDisplayTextValue(column: IGridColumn) {\r\n this.rowsData?.forEach((row) => {\r\n if (\r\n column.type === EGridColumnType.LINK ||\r\n EGridColumnType.DIALOG ||\r\n EGridColumnType.IFRAME\r\n ) {\r\n const field = row[column.field + '_obj'];\r\n if (column.displayText && column.displayText.includes('{')) {\r\n const displayText = column.displayText\r\n .replace('{', '')\r\n .replace('}', '');\r\n if (displayText && field) {\r\n field.displayText = row[displayText.toLowerCase()];\r\n }\r\n } else if (column.displayText && field) {\r\n field.displayText = column.displayText;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // change row key and value when using setGridRowPropValue function\r\n setRowValue(rowData: any) {\r\n Object.keys(rowData)?.forEach((row) => {\r\n if (\r\n rowData[row] &&\r\n this.typeOf(rowData[row]) === 'object' &&\r\n rowData[row]?.action?.field\r\n ) {\r\n if(rowData[row]?.extraField){\r\n delete rowData[row];\r\n } else {\r\n rowData[row] = rowData[row]?.text;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setNumericMinMxFraction(column: any) {\r\n let digitInfo = '2';\r\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\r\n digitInfo = '0'\r\n }else if(column?.format?.formatParams?.digitsInfo){\r\n digitInfo = column.format.formatParams.digitsInfo;\r\n }\r\n return digitInfo;\r\n }\r\n\r\n // set the format of currency && number && decimal && percent\r\n setNumericFormat(column: any, row: any) {\r\n row = utilities.objConvertToLower(row);\r\n let value: any = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField.toLowerCase()]\r\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \r\n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\r\n if (this.typeOf(value) === 'number' && value === 0) {\r\n value = value.toString();\r\n }\r\n let formatParams = column.format?.formatParams;\r\n let digitsInfo = formatParams?.digitsInfo;\r\n if (column.format && value) {\r\n switch (column.format?.type) {\r\n case EGridFormatType.CURRENCY:\r\n value = new Intl.NumberFormat(\r\n formatParams?.locale ? formatParams.locale : 'en-US',\r\n {\r\n style: 'currency',\r\n currency: formatParams?.currency ? formatParams.currency : 'USD',\r\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\r\n }\r\n )?.format(value);\r\n break;\r\n case EGridFormatType.DECIMAL:\r\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\r\n break;\r\n case EGridFormatType.PERCENT:\r\n if(!column.format?.formatParams?.allowCalculate){\r\n value = value+'%';\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n //Change dropdown vlue based on option label and optionvalue\r\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n this.rowsData.forEach((row) => {\r\n if (Object.keys(row)?.find((key) => key === column.field)) {\r\n if (column) {\r\n column.optionLabel = column.optionLabel\r\n ? column.optionLabel\r\n : 'label';\r\n column.optionValue = column.optionValue\r\n ? column.optionValue\r\n : 'value';\r\n }\r\n const value = column.data?.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\r\n if (value && editedRow) {\r\n row[column.field] = value[column.optionLabel];\r\n }else if(value && change === false){\r\n row[column.field] = value[column.optionLabel];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //manipulate checkbox string value to true and false.\r\n changeCheckboxStringValue() {\r\n if (\r\n this.columns &&\r\n this.rowsData &&\r\n this.rowsData.length > 0 &&\r\n this.columns.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.BOOLEAN) {\r\n if (\r\n (typeof (row[column.field] === 'string') &&\r\n (row[column.field] === '1' || row[column.field] === '0')) ||\r\n row[column.field] === 'Y' ||\r\n row[column.field] === 'N'\r\n ) {\r\n row[column.field] =\r\n row[column.field] === '1' || row[column.field] === 'Y'\r\n ? true\r\n : false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowData\r\n * Passes data of clicked row to parent\r\n */\r\n handleRowClick(rowData: any) {\r\n this.rowClickData = rowData;\r\n this.onRowClick.emit(rowData);\r\n }\r\n\r\n /**\r\n *\r\n * @param columnData\r\n * Passes sorting information to parent on sort change\r\n */\r\n handleSortChange(event: any) {\r\n let sortDirection = null;\r\n let sortField: string = '';\r\n if (event.multisortmeta && event.multisortmeta[0].order) {\r\n sortDirection =\r\n event.multisortmeta[0].order == 1\r\n ? EGridSortDirection.ASC\r\n : EGridSortDirection.DESC;\r\n sortField = event.multisortmeta[0].field;\r\n }\r\n let sorts: IGridSort = {\r\n field: sortField,\r\n direction: sortDirection as EGridSortDirection,\r\n priority: 0,\r\n };\r\n this.onSortChange.emit(sorts);\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Passes applied filters to parent on filter change\r\n */\r\n handleFilterChange(event: any) {\r\n this.columns.forEach((filter: any) => {\r\n if (!event.filters[filter.field]?.value) {\r\n filter.value = '';\r\n }\r\n });\r\n this.onFilterChange.emit(event);\r\n }\r\n\r\n /**\r\n *\r\n * @param event : Event\r\n * @param columnAction : IGridColumnAction\r\n * @param row : any\r\n * Stop the click event propagation to parent\r\n * Callbacks the row data to parent\r\n */\r\n\r\n /**\r\n * invoke onClick event & open Iframe in grid\r\n */\r\n gridIFrame(column: any, rows: any, row: any) {\r\n this.onClickEvent(column, row);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: column.header,\r\n width: '80%',\r\n height: '80%',\r\n data: {\r\n value: rows,\r\n iFrameId: column.displayText ? column.displayText : column.field,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n } else if (res && column.onChange) {\r\n column.onChange(res);\r\n }\r\n });\r\n }\r\n\r\n addNewRow(row: any, addRow: boolean = false) {\r\n this.componentTableRef = this.table;\r\n this.columns.forEach((column) => {\r\n if (\r\n column.filter &&\r\n column.component &&\r\n column.filter.type === 'calendar'\r\n ) {\r\n if (addRow) {\r\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\r\n } else {\r\n row[column.field + '_secondType'] = EGridColumnType.DATE;\r\n }\r\n }\r\n });\r\n this.rowClickData = row;\r\n this.addNewRowCheck = true;\r\n this.dropdownInput = false;\r\n this.sortDisabled = true;\r\n this.onGridRowAdd.emit(row);\r\n }\r\n\r\n /**\r\n * open Dialog in grid\r\n */\r\n openGridDialog(column: IGridColumn, row: any) {\r\n this.onClickEvent(column, row);\r\n setTimeout(() => {\r\n if(column.data && column.data.data){\r\n column.data.data = row[column.field + '_obj']?.dialogData ?? row[column.field + '_obj'];\r\n }\r\n if (column.component && column.data && this.rowClickData) {\r\n const keys = Object.keys(this.rowClickData);\r\n column.data.data = utilities.autoSetLookupData(\r\n column.data.data,\r\n this.rowClickData\r\n );\r\n const ref = this.dialogService.open(column.component, column.data);\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((data: any) => {\r\n if (data && column.onReturn) {\r\n column.onReturn(data, this.rowClickData);\r\n } else if (data) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(data);\r\n }\r\n }\r\n });\r\n }\r\n }, 10);\r\n }\r\n\r\n browserCloseEvent(event: boolean = false){\r\n this.gridService.columnFocusedOut = event;\r\n }\r\n\r\n setMultiSelectData(column: IGridColumn, selectedValue:any){\r\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\r\n if(selectedValue && selectedValue?.toString()?.includes(',')){\r\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\r\n }else{\r\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\r\n }\r\n }\r\n return selectedValue;\r\n }\r\n\r\n /**\r\n * return conditional base value and title\r\n */\r\n setConditionBaseValue(row: any, column: any) {\r\n delete row['undefined'];\r\n let value:any;\r\n if(column.type == EGridColumnType.DATE){\r\n let newValue:any;\r\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\r\n newValue = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.field?.toLowerCase()]?.text\r\n } else {\r\n newValue = row[column.field];\r\n }\r\n\r\n if(newValue){\r\n if(column.timeOnly){\r\n value = this.setTimeFormat(newValue);\r\n } else {\r\n let format = '';\r\n if(column.format){\r\n if(column.format === EGridFormatType.SMALLDATE){\r\n format = 'MM/dd/yy';\r\n }else if(column.format === EGridFormatType.SHORTDATE){\r\n format = 'MM/dd/yyyy';\r\n }\r\n }\r\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\r\n }\r\n }\r\n } else {\r\n value = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField?.toLowerCase()]\r\n : row[column.field + '_obj'] &&\r\n row[column.field + '_obj'].displayText === null\r\n ? ''\r\n : row[column.field + '_obj']?.displayText\r\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \r\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \r\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\r\n : row[column.field + '_obj'].displayText\r\n : column.displayText\r\n ? column.displayText\r\n : row[column.field];\r\n }\r\n \r\n return value;\r\n }\r\n\r\n setDropdwonReadOnlyValue(row: any, column: any){\r\n delete row['undefined'];\r\n const value = row[column.displayField]\r\n ? row[column.displayField]\r\n : row[column.field];\r\n return value;\r\n }\r\n\r\n /**\r\n * open Delete Confirmation dialog when click on delete icon in Action column\r\n */\r\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\r\n event.stopPropagation();\r\n if (columnAction.tooltip.toLowerCase() === 'delete') {\r\n if (columnAction.confirmDialog === false) {\r\n columnAction.onClick(row);\r\n } else {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n columnAction.onClick(row);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n } else {\r\n columnAction.onClick(row);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param event : LazyLoadEvent\r\n * Triggers everytime a server side filter is trigger\r\n */\r\n handleServerSideEvents(event: any) {\r\n setTimeout(() => {\r\n if(this.selectedColumns && this.selectedColumns.length > 0){\r\n this.selectedColumns.forEach((x: any) => {\r\n if (event.filters[x.field]) {\r\n event.filters[x.field].value = x.value;\r\n }\r\n });\r\n }\r\n \r\n this.loading = this.autoLoadData;\r\n this.serverFilters = {\r\n filters: this.lookupFilters\r\n ? this.gridService.getGridFilters(event, this.selectedColumns)\r\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\r\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\r\n ...(this.pagination && {\r\n page: this.gridService.getGridPagination(event),\r\n pageSize: event.rows || 10,\r\n }),\r\n };\r\n\r\n if (\r\n this.serverFilters?.filters &&\r\n this.serverFilters?.filters.length > 0 &&\r\n (this.allowCaching || this.softCaching)\r\n ) {\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\r\n }\r\n }\r\n\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\r\n this.globalData\r\n );\r\n this.onServerSideEventChange.emit(serverFilterValues);\r\n }, 950);\r\n }\r\n\r\n /**\r\n * @param event\r\n * Passes applied pagination to parent on page change\r\n */\r\n handleServerSidePagination(event: IGridPaginationEvent) {\r\n this.onPageChange.emit(event);\r\n }\r\n\r\n selectedRow(row: any) {\r\n this.onRowCheckBox.emit(row);\r\n }\r\n\r\n // set time format\r\n setTimeFormat(date: any) {\r\n let value: any = '';\r\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\r\n value = utilities.setTimeInDate(date);\r\n } else {\r\n value = this.datePipe.transform(date, 'hh:mm a');\r\n }\r\n return value;\r\n }\r\n\r\n //open hyperlink in edit case\r\n openLink(url: any) {\r\n if (url) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n }\r\n\r\n setFormat(column: any, row: any) {\r\n let value: any = '';\r\n if (column.format) {\r\n value = this.datePipe.transform(\r\n column.displayText ? column.displayText : row[column.field],\r\n column.format\r\n );\r\n } else {\r\n value = column.displayText ? column.displayText : row[column.field];\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sets values to editable row\r\n * Row's data is preseved to prevent mutation\r\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\r\n */\r\n\r\n onRowEditInit(row: any) {\r\n let selectedRow = { ...row };\r\n Object.entries(selectedRow).forEach(([key, value]: any) => {\r\n this.columns.forEach((col: any) => {\r\n this.setDropdownFilterValue(col, row, key);\r\n\r\n // set the autoComplete Value in edit mode\r\n if (\r\n col.type === EGridColumnType.AUTOCOMPLETE &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n value &&\r\n value.length > 0\r\n ) {\r\n let newValue = value.map((x: any) => x[col.displayField]);\r\n if (newValue?.toString()?.includes(';')) {\r\n row[col.field] = newValue\r\n ?.toString()\r\n ?.replaceAll(';', ',')\r\n ?.split(',')\r\n ?.map((x: any) => ({ [col.displayField]: x }));\r\n }\r\n }\r\n\r\n // set lookup control field based on display field.\r\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\r\n if (col.field === key) {\r\n row[col.field] = {\r\n text: row[col.displayField],\r\n value: row[col.field],\r\n };\r\n }\r\n }\r\n\r\n if (col.type === EGridColumnType.DROPDOWN) {\r\n let option = col?.data?.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n if (\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n col.type === EGridColumnType.DATE\r\n ) {\r\n value = value?.action ? value.text : value;\r\n if (row[col.field] !== null) {\r\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\r\n row[key].text = new Date(value as string);\r\n }else{\r\n row[key] = new Date(value as string);\r\n }\r\n }\r\n\r\n // check the Minutes pattern\r\n if (\r\n (col.showTime || col.timeOnly) &&\r\n col.minutesInterval &&\r\n row[key]\r\n ) {\r\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.DIALOG &&\r\n col.filter?.type === 'calendar' &&\r\n col.field.toLowerCase() === key.toLowerCase()\r\n ) {\r\n if (value === null) {\r\n row[key] = new Date();\r\n } else {\r\n row[col.field] = new Date(value);\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.LINK &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n (col.allowSave === true || col.allowSave === undefined)\r\n ) {\r\n if (col.editLink === true) {\r\n row[key] = row[col.field + '_obj']?.hyperlink;\r\n } else if (col.editLink === false || col.editLink === undefined) {\r\n row[key] = value;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.editRowsRecords[row[this.dataKey]] = { ...row };\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n this.checkAction = true;\r\n this.dropdownInput = true;\r\n this.rowClickData = row;\r\n this.inEditMode = true;\r\n this.cancelAllRecords = false;\r\n this.saveAllRecord = false;\r\n this.sortDisabled = true;\r\n this.onGridRowEdit.emit(row);\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * set dropdown filter value\r\n */\r\n setDropdownFilterValue(col: any, row: any, key: string) {\r\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\r\n if (Object.values(col).some((value) => value == key)) {\r\n let obj = col.dropDownProp;\r\n let newFilters: any = [];\r\n\r\n if (obj.filters && obj.filters.length > 0) {\r\n obj.filters.forEach((filter: any) => {\r\n let newFilter = { ...filter };\r\n let filterKey = Object.keys(row).find((key) => {\r\n let matchKey: string = '';\r\n if (\r\n filter.value?.includes('{') &&\r\n key.toLowerCase() ===\r\n filter.value\r\n ?.toString()\r\n ?.toLowerCase()\r\n .replace('{', '')\r\n .replace('}', '')\r\n ) {\r\n matchKey = key;\r\n }\r\n return matchKey;\r\n });\r\n if (filterKey) {\r\n newFilter.value = row[filterKey];\r\n }\r\n newFilters.push(newFilter);\r\n });\r\n }\r\n\r\n this.gridService.setDropdownData(\r\n col,\r\n obj.uniqueKey,\r\n obj.valueProp,\r\n obj.labelProp,\r\n newFilters,\r\n row\r\n );\r\n\r\n let option = col.data.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Passes the edited or newly created data to parent\r\n * In case of newly created data, dataKey and isNew prop is removed\r\n */\r\n onRowEditSave(selectedRow: any) {\r\n this.selectedColumns.forEach((column: any) => {\r\n delete selectedRow[column.field + '-data'];\r\n delete selectedRow[column.field + '_secondType'];\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.displayField &&\r\n this.lookupObject\r\n ) {\r\n selectedRow[column.field] = this.lookupObject.value;\r\n }\r\n\r\n if (column.formatter) {\r\n let value: any = selectedRow[column.field];\r\n if (column.formatter === 'char') {\r\n value = value === true ? 'Y' : 'N';\r\n } else if (column.formatter === 'numeric') {\r\n value = value === true ? '1' : '0';\r\n }\r\n selectedRow = { ...selectedRow, [column.field]: value };\r\n }\r\n\r\n //convert date into time format\r\n if (\r\n column.type === EGridColumnType.DATE\r\n ) {\r\n if( column.timeOnly && column.saveAsString){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\r\n }\r\n else if(!column.timeOnly && column.showTime){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\r\n }\r\n }\r\n //convert multiselect array into string\r\n if (\r\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\r\n ) {\r\n selectedRow[column.field] = selectedRow[column.field]?.toString();\r\n }\r\n\r\n // Saving AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n column.displayField &&\r\n selectedRow[column.field]?.length > 0\r\n ) {\r\n let arr: any = [];\r\n selectedRow[column.field].forEach((row: any) => {\r\n if (row[column.displayField]) {\r\n arr.push(row[column.displayField]);\r\n }\r\n });\r\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\r\n }\r\n });\r\n\r\n let row: any = { ...selectedRow };\r\n let keys = Object.keys(row);\r\n keys.forEach((key) => {\r\n if (this.lookupObject && this.lookupObject.field) {\r\n row[this.lookupObject.field] = this.lookupObject.value;\r\n }\r\n if (key.includes('_obj')) {\r\n if (this.checkAction === false) {\r\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\r\n this.checkAction = true;\r\n }\r\n let obj: any = row[key];\r\n if (\r\n obj &&\r\n (obj.type === 'link' ||\r\n obj.type === 'iframe' ||\r\n obj.type === 'dialog')\r\n ) {\r\n delete row[key];\r\n }\r\n }\r\n });\r\n /**\r\n * just emit those fields who exist in the tabel\r\n */\r\n this.setRowValue(row);\r\n let obj: any = {};\r\n this.columns.forEach((column: any) => {\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.field &&\r\n typeof row[column.field] === 'object'\r\n ) {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n if (\r\n (column.allowSave === true || column.allowSave === undefined) &&\r\n (column.editable === true || column.editable === undefined)\r\n ) {\r\n obj[column.field] = row[column.field];\r\n if (\r\n column.type === EGridColumnType.DIALOG &&\r\n column.filter?.type === 'calendar'\r\n ) {\r\n obj[column.field] = this.datePipe.transform(\r\n obj[column.field],\r\n 'yyyy-MM-ddT00:00:00.000Z'\r\n );\r\n }\r\n\r\n //Set Decimal Fraction Value\r\n if (\r\n column.format &&\r\n column.format.type === EFormatType.DECIMAL &&\r\n row[column.field] &&\r\n !row[column.field].toString().includes('.')\r\n ) {\r\n let digitsInfo = '.00';\r\n let zero = '0';\r\n const formatParams = column.format?.formatParams;\r\n const fracDigits = column?.format?.formatParams?.digitsInfo;\r\n if (fracDigits) {\r\n for (let i = 1; i < fracDigits; i++) {\r\n zero = zero + '0';\r\n }\r\n digitsInfo = '.' + zero;\r\n }\r\n obj[column.field] = row[column.field] + digitsInfo;\r\n }\r\n } else if (\r\n row.isNew &&\r\n (column.allowSave === false || column.editable === false)\r\n ) {\r\n delete row[column.field];\r\n }\r\n });\r\n delete selectedRow['undefined'];\r\n this.gridService.checkValidity(this.columns, row);\r\n const isValid = this.gridValidation(this.columns, row);\r\n if (isValid) {\r\n // set the grid updated/inserted data\r\n this.rowActionEvents(selectedRow);\r\n this.browserCloseEvent(false);\r\n if (row.isNew) {\r\n const { isNew, ...newRowObj } = row;\r\n delete newRowObj[this.dataKey];\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(newRowObj);\r\n }else{\r\n this.onRowAdd.emit(newRowObj);\r\n }\r\n } else {\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(obj);\r\n } else {\r\n this.onRowUpdate.emit(obj);\r\n }\r\n }\r\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\r\n } else {\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n }\r\n // if all rows in read only mode then show editAllRows button. \r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.inEditMode = false;\r\n this.hideEditAllRowsBtn = true;\r\n this.sortDisabled = false;\r\n }\r\n this.selectedColumns.forEach((column: any) => {\r\n // convert date into time\r\n if (\r\n selectedRow[column.field] &&\r\n (selectedRow[column.field]?.toString()?.includes('PM') ||\r\n selectedRow[column.field]?.toString()?.includes('AM'))\r\n ) {\r\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n if (\r\n column.type === EGridColumnType.DROPDOWN &&\r\n column.optionLabel &&\r\n column.optionValue\r\n ) {\r\n this.setDropdownValue(column, selectedRow);\r\n }\r\n });\r\n this.addNewRowCheck = false;\r\n }\r\n\r\n // check the validation of the field\r\n gridValidation(columns: any, row: any): boolean {\r\n if (!this.gridService.checkValidity(columns, row)) {\r\n let isRequired = columns.some(\r\n (column: any) => column.errorMessage && !row[column.field]\r\n );\r\n if (isRequired) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else {\r\n this.alertService.error('Some fields are invalid', 'INVALID FIELD');\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row : any\r\n * @param index : number\r\n * Clears out the edit row and replace with readable one\r\n */\r\n onRowEditCancel(row: any, index: number) {\r\n if (row.isNew) {\r\n this.rowsData.splice(index, 1);\r\n } else {\r\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\r\n delete this.editRowsRecords[row[this.dataKey]];\r\n }\r\n delete this.editingRowKeys[row[this.dataKey]];\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, row);\r\n }\r\n });\r\n this.inEditMode = false;\r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.sortDisabled = false;\r\n } \r\n this.addNewRowCheck = false;\r\n this.inlineRowCancel.emit(row);\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sends the row payload to parent for deletion\r\n */\r\n\r\n /**\r\n *set the gridData on row actions events\r\n */\r\n rowActionEvents(rowInfo, deleteRow: boolean = false){\r\n let action: string = '';\r\n let gridRowsData: any[] = [...this.rowsData];\r\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\r\n if(index > -1){\r\n if(deleteRow){ \r\n gridRowsData.splice(index, 1);\r\n this.rowsData = [...gridRowsData];\r\n action = 'delete';\r\n } else {\r\n if(this.addNewRowCheck){\r\n action = 'insert';\r\n }else{\r\n action = 'update';\r\n }\r\n if(this.onGridRowActions.observers.length !== 0){\r\n rowInfo['rowAction']= action;\r\n }\r\n gridRowsData[index] = rowInfo;\r\n }\r\n }\r\n this.rowsChange.emit(this.rowsData);\r\n this.onGridRowActions.emit(gridRowsData);\r\n }\r\n\r\n /**\r\n * open Delete confirmation dialog when trying to delete row\r\n */\r\n deleteRecord(row: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handleInlineCRUD',\r\n accept: () => {\r\n if (this.useServerSideEvents) {\r\n this.loading = true;\r\n }\r\n // set the grid deleted data \r\n this.rowActionEvents(row, true);\r\n this.onRowDelete.emit(row);\r\n this.confirmationService.close();\r\n this.inEditMode = false;\r\n this.loading = false;\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * To set disabled the control\r\n */\r\n allowDisabled(column: any, row: any): boolean {\r\n let value: boolean = false;\r\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\r\n if (\r\n row[column.field]?.action &&\r\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\r\n ) {\r\n value = true;\r\n }\r\n } else if (column.disabled || column.editable === false) {\r\n value = true;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * To set aggregate in grid footer\r\n */\r\n setAggregateText(column: IGridColumn) {\r\n if (column?.aggregate) {\r\n column.aggregate.forEach((col: any) => {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n let columnType: EGridAggregate = col.type;\r\n if (columnType === EGridAggregate.COUNT) {\r\n const count = this.rowsData.length;\r\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\r\n }\r\n\r\n if (\r\n columnType === EGridAggregate.SUM ||\r\n columnType === EGridAggregate.AVERAGE\r\n ) {\r\n const colValues: number[] = this.getColumnValues(column);\r\n if (colValues && colValues.length > 0) {\r\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\r\n if (columnType === EGridAggregate.SUM) {\r\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\r\n }\r\n if (columnType === EGridAggregate.AVERAGE) {\r\n const average = sum / colValues.length || 0;\r\n col.aggrValue = this.setAggregateFooterText(\r\n col,\r\n average,\r\n 'Avg'\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n col.aggrValue = '';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * set grid Aggregate values\r\n */\r\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\r\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\r\n const digitsInfo = column.format?.digitsInfo;\r\n const caption: string =\r\n column.caption?.length > 0 ? column.caption : defaultCaption;\r\n\r\n const decimalPoint = isDecimalFormat\r\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\r\n : value?.toFixed(0);\r\n return `${caption} ${decimalPoint\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\r\n }\r\n\r\n /**\r\n * set decimat and numeric values\r\n */\r\n setNumericValues() {\r\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.NUMERIC) {\r\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\r\n this.rowsData.forEach((row) => {\r\n if (column?.format?.type === 'percent') {\r\n if (column.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n row[column.field] = row[column.field] / 100;\r\n }\r\n } else if (digitsInfo) {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\r\n }\r\n } else if (column?.format?.type === 'decimal') {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * get column value based on column field\r\n */\r\n getColumnValues(column: IGridColumn) {\r\n let arr: any = [];\r\n this.rowsData.forEach((row) => {\r\n let keys = Object.keys(row);\r\n keys.map((key) => {\r\n if (column.field === key) {\r\n arr.push(row[key]);\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to PDF\r\n */\r\n exportPdf() {\r\n var exportData = this.setExportData([...this.rowsData], true);\r\n let doc = new jsPDF('p', 'pt');\r\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\r\n doc.save('Export.pdf');\r\n }\r\n\r\n /**\r\n * Sub-function to set rows for export to Pdf, and Excel\r\n * @rows param for rows\r\n * @isExcel param for export to excel indication\r\n */\r\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\r\n const headings: any = this.columns.map((column) => column.field);\r\n rows.forEach((row) => {\r\n for (var prop in row) {\r\n if (!headings.includes(prop)) {\r\n delete row[prop];\r\n }\r\n if (isPdf) {\r\n row[prop] =\r\n !row[prop] && typeof row[prop] !== 'boolean'\r\n ? ''\r\n : row[prop].toString();\r\n }\r\n }\r\n });\r\n return { rows, headings };\r\n }\r\n\r\n /**\r\n *\r\n * Export to Excel\r\n */\r\n exportExcel() {\r\n let exportData: any = this.exportDataToExcel();\r\n import('xlsx').then((xlsx) => {\r\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\r\n\r\n let rowIndex = 0;\r\n exportData.forEach((row: any) => {\r\n let colIndex = 0;\r\n this.selectedColumns.forEach((col: any) => {\r\n const cellValue: string = row[col.header];\r\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\r\n const linkText: string = cellValue.split('|')[0];\r\n let linkUrl: string = cellValue.split('|')[1];\r\n if (linkUrl && !linkUrl.startsWith('http')) {\r\n if (!linkUrl.startsWith('/')) {\r\n linkUrl = '/' + linkUrl;\r\n }\r\n\r\n linkUrl =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n linkUrl;\r\n }\r\n\r\n const cellAddress = xlsx.utils.encode_cell({\r\n c: colIndex,\r\n r: rowIndex + 1,\r\n });\r\n\r\n worksheet[cellAddress] = {\r\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\r\n };\r\n }\r\n\r\n colIndex++;\r\n });\r\n\r\n rowIndex++;\r\n });\r\n\r\n const workbook = {\r\n Sheets: { sheet1: worksheet },\r\n SheetNames: ['sheet1'],\r\n };\r\n const excelBuffer: any = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array',\r\n });\r\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\r\n });\r\n }\r\n\r\n exportDataToExcel() {\r\n let arr: any = [];\r\n this.rowsData.forEach((row: any) => {\r\n let obj: any = {};\r\n this.selectedColumns.forEach((column: any) => {\r\n const gridHeader = column.header;\r\n if (column.type === EGridColumnType.LINK) {\r\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\r\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\r\n } else {\r\n obj[gridHeader] = row[column.field];\r\n }\r\n });\r\n\r\n arr.push(obj);\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to excel (sub-method)\r\n */\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import('file-saver').then((FileSaver) => {\r\n let EXCEL_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\r\n saveAs(data, fileName);\r\n });\r\n }\r\n\r\n /**\r\n *set config data of lookup control dialog\r\n */\r\n setLookupDialogConfig(row: any, column: any, data: any) {\r\n let selection: string = '';\r\n if (row[column.field] && typeof row[column.field] === 'object') {\r\n selection = row[column.field].text;\r\n } else if (column.displayField && row[column.displayField]) {\r\n selection = row[column.displayField];\r\n } else {\r\n selection = row[column.field];\r\n }\r\n\r\n if (column.field && typeof row[column.field] === 'object') {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n\r\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\r\n let obj = utilities.autoSetLookupData(data, row);\r\n row[column.field + '-data'] = obj;\r\n }\r\n return {\r\n rowData: row[column.field + '-data'],\r\n selection: selection,\r\n column: column,\r\n };\r\n }\r\n\r\n /**\r\n * open link on lookupControl control in read only mode when editLink set true\r\n */\r\n openLookupHyperlink(column: IGridColumn, row: any) {\r\n if (column.editLink === true && column.component) {\r\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\r\n obj['component'] = column.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open lookup Dialog\r\n */\r\n openLookupDialog(column: any) {\r\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\r\n const ref = this.dialogService.open(column.component, {\r\n ...columnData,\r\n data: {\r\n selection: column.selection,\r\n field: column.column.field,\r\n valueField: column.column.lookupControl?.data?.valueField,\r\n ...column.rowData,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return ref;\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(column: any, row?: any) {\r\n this.onClickEvent(column, row);\r\n this.lookupObject = { text: '', value: '', field: '' };\r\n if (column.lookupControl) {\r\n let obj: any = this.setLookupDialogConfig(\r\n row,\r\n column,\r\n column.lookupControl.data?.data\r\n );\r\n obj['component'] = column.lookupControl.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe(\r\n (res) => {\r\n if (column.onReturn) {\r\n column.onReturn(res, row);\r\n }\r\n if (res) {\r\n let value = utilities.setDialogResponse(\r\n column,\r\n column.lookupControl,\r\n res\r\n );\r\n if (column.displayField) {\r\n row[column.field] = {\r\n text: res[column.displayField.toLowerCase()],\r\n value: res[column.field.toLowerCase()],\r\n };\r\n this.lookupObject = row[column.field];\r\n } else if (value && value.value) {\r\n value['field'] = column.field;\r\n row[column.field] = value.value;\r\n } else {\r\n row[column.field] = res[column.field.toLowerCase()];\r\n }\r\n }\r\n if (row[column.field] !== obj.selection) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n setFilterLookup(column: any) {\r\n this.gridService.setLookUpFilter(column, this.dialogService);\r\n }\r\n\r\n // Check calender value is changed or not\r\n calenderChangeEvent(column: any, row: any) {\r\n let valueChange: boolean = false;\r\n if (\r\n column.timeOnly &&\r\n this.datePipe.transform(row[column.field], 'hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n column.showTime &&\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\r\n ) {\r\n valueChange = true;\r\n }\r\n if(valueChange){\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n this.calenderPreviousValue = '';\r\n }\r\n\r\n onFocusOutEvent(column: IGridColumn, row: any) {\r\n this.gridService.checkValidity([column], row);\r\n if (column.type === EGridColumnType.DATE) {\r\n this.calenderChangeEvent(column, row);\r\n }\r\n if (column.onFocusOut) {\r\n column.onFocusOut(row);\r\n } else if (\r\n column.onReturn &&\r\n column.type !== EGridColumnType.LOOKUP_INPUT\r\n ) {\r\n column.onReturn(row);\r\n }\r\n }\r\n\r\n setFilterFocusOut(col: any, filter?: any, event?: any) {\r\n this.gridFilterObj = { column: col, filter: filter, event: event };\r\n const newColumn: any = { ...col };\r\n //change filter calender format\r\n if (newColumn.type === 'date' && newColumn.value) {\r\n newColumn.value = this.datePipe.transform(\r\n col.value.toString().trim(),\r\n 'yyyy-MM-dd'\r\n );\r\n }\r\n setTimeout(\r\n () => {\r\n this.filterObj(newColumn);\r\n },\r\n newColumn.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\r\n );\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n }\r\n\r\n filterObj(col: any) {\r\n const obj = {\r\n field: col.field,\r\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\r\n operator: col.operator ? col.operator : 'and',\r\n tableAlias: col.tableAlias ? col.tableAlias : '',\r\n value: col.value,\r\n };\r\n this.globalFiltersArray.push(obj);\r\n }\r\n\r\n applyEnterEvent(filter: any, event: any, column: any) {\r\n this.gridService.applyFilterEvent = true;\r\n this.autoLoadData = true;\r\n this.onApplyFilter.emit();\r\n this.filterObj(column);\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\r\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\r\n } else {\r\n filter(event.target.value);\r\n }\r\n }\r\n\r\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\r\n if (column.value === null) {\r\n this.removeNullFilters(column);\r\n this.setFilterFocusOut(column, filter, event);\r\n }\r\n }\r\n\r\n backspaceEvent(event: any, column: any) {\r\n if (\r\n event.key === 'Backspace' &&\r\n (column.value?.toString().length === 1 ||\r\n column.value?.toString() === '' ||\r\n column.value === null)\r\n ) {\r\n this.removeNullFilters(column);\r\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\r\n this.removeNullFilters(column);\r\n }\r\n }\r\n\r\n removeNullFilters(column: any) {\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n let arr = [...this.globalFiltersArray];\r\n let index = arr.findIndex((i) => i.field === column.field);\r\n arr.splice(index, 1);\r\n this.globalFiltersArray = arr;\r\n }\r\n }\r\n\r\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\r\n removingFilters(event: any, column: IGridColumn) {\r\n if (\r\n (event.key === 'Backspace' || event.key === 'Delete') &&\r\n column.value?.toString().length === 0\r\n ) {\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (searchFilters && searchFilters.filters) {\r\n if (searchFilters.filters.length > 0) {\r\n let index = searchFilters.filters.findIndex(\r\n (x: any) => x.field === column.field\r\n );\r\n if (index !== -1) {\r\n if (searchFilters.filters.length === 1) {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n } else {\r\n searchFilters.filters.splice(index, 1);\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Add Click Button Event on Grid.\r\n onClickButton(column: any, row: any) {\r\n this.openGridDialog(column, row);\r\n }\r\n\r\n // Invoke onClick Event.\r\n onClickEvent(column: any, row: any) {\r\n if (column.type === EGridColumnType.DATE && row[column.field]) {\r\n this.calenderPreviousValue = row[column.field];\r\n } else if (\r\n !row[column.field] &&\r\n column.type === EGridColumnType.DATE &&\r\n (column.showTime || column.timeOnly) &&\r\n column.minutesInterval\r\n ) {\r\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n if (column && column.onClick) {\r\n column.onClick(row);\r\n }\r\n }\r\n\r\n // set the select value of multi-select\r\n showOption(column, row){\r\n if(row[column.field]){\r\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\r\n row[column.field] = [row[column.field]];\r\n } else if(row[column.field].includes(',')){\r\n row[column.field] = row[column.field].split(',');\r\n }\r\n }\r\n }\r\n\r\n onClearValue(column, row){\r\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\r\n row[column.field] = null;\r\n }\r\n }\r\n\r\n // Invoke onChange Event\r\n onChangeEvent(column: any, row: any) {\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n this.displayFieldDropdownValue(column, row);\r\n this.onClearValue(column, row);\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\r\n row[column.field] = event;\r\n }\r\n\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n displayFieldDropdownValue(column: any, row: any) {\r\n if (\r\n column?.type === EGridColumnType.DROPDOWN &&\r\n column.displayField &&\r\n column.displayField?.length > 0\r\n ) {\r\n const key: any = Object.keys(row)?.find(\r\n (rowInfo) =>\r\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\r\n );\r\n const displayFieldValue = column.data.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n if (key && displayFieldValue) {\r\n row[key] = displayFieldValue[column.optionLabel];\r\n }\r\n }\r\n }\r\n\r\n // Add autoSearch on Grid.\r\n autoSearch(event: any, column: any, row: any) {\r\n if (event && column && row) {\r\n column.onReturn(event.query, column, row);\r\n }\r\n }\r\n\r\n // Remove FilterValues\r\n cleargridFiltersValue() {\r\n const globalFilterClearValueBtn = document.getElementById(\r\n 'clearGlobalFilterBtn'\r\n );\r\n if (globalFilterClearValueBtn) {\r\n globalFilterClearValueBtn.click();\r\n }\r\n if (this.selectedColumns && this.selectedColumns.length > 0) {\r\n this.selectedColumns.forEach((col) => {\r\n col.value = null;\r\n this.filterObj(col);\r\n });\r\n }\r\n }\r\n\r\n editAllRowsAtOnce() {\r\n if(this.editRowPermission){\r\n if (this.getClassForEditAllRows('editRow')) {\r\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\r\n this.editAllRecord = true;\r\n }\r\n this.hideEditAllRowsBtn = false;\r\n this.sortDisabled = true;\r\n }\r\n }\r\n }\r\n\r\n saveAllRowsAtOnce() {\r\n this.getClassForEditAllRows('saveRow');\r\n }\r\n\r\n // reset the grid rowsValue to orignal values\r\n cancelAllRowsAtOnce() {\r\n this.rowsData = [...this.rowsDataCopy];\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n this.selectedColumns?.forEach((column)=>{\r\n if(column.type === EGridColumnType.DATE){\r\n this.rowsData?.forEach((row)=>{\r\n if(row[column.field]){\r\n row[column.field]= new Date(row[column.field]);\r\n }\r\n })\r\n }\r\n });\r\n this.onCancelAllRows.emit(this.rowsData);\r\n }\r\n\r\n getClassForEditAllRows(className: string = '') {\r\n let success: boolean = false;\r\n const getBtns: any =\r\n this.elementRef?.nativeElement?.getElementsByClassName(className);\r\n if (getBtns && getBtns.length > 0) {\r\n success = true;\r\n if (className === 'saveRow') {\r\n this.editAllRecord = false;\r\n this.saveAllRecord = true;\r\n const records$ = [];\r\n setTimeout(()=>{\r\n for (let item of getBtns) {\r\n const rowSave = new Promise((resolve, reject) => { \r\n item.click();\r\n resolve(item);\r\n });\r\n records$.push(rowSave);\r\n }\r\n Promise.all(records$).then((response) => {\r\n console.log(\"AAAA\");\r\n this.onRowUpdate.emit(this.saveRecordArray);\r\n this.saveRecordArray = [];\r\n });\r\n },20)\r\n } else {\r\n this.saveAllRecord = false;\r\n for (let item of getBtns) {\r\n if(className == 'cancelRow'){\r\n setTimeout(() => {\r\n item.click();\r\n }, 50);\r\n }else{\r\n item.click();\r\n }\r\n }\r\n }\r\n }\r\n return success;\r\n }\r\n\r\n //Focused calender input on select date\r\n selectDate(column: any) {\r\n document.getElementById(column.field)?.focus();\r\n }\r\n\r\n //apply filter on grid when search btn clicked\r\n applyGirdFilterBtn() {\r\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\r\n this.applyEnterEvent(\r\n this.gridFilterObj.filter,\r\n this.gridFilterObj.event,\r\n this.gridFilterObj.column\r\n );\r\n }\r\n }\r\n\r\n // invoke multiSelection click event\r\n multiCheckBoxOnclick(rowInfo: any) {\r\n if (rowInfo) {\r\n this.onMultiSelectionChange.emit(rowInfo);\r\n }\r\n }\r\n\r\n applyDropdownFilter(filter: any, event: any) {\r\n filter(event.target);\r\n }\r\n\r\n searchDropdownFilter(filter: any, event: any, column: any) {\r\n this.setFilterFocusOut(column, filter, event);\r\n this.dropDownFilter = { filter: filter, event: event, column: column };\r\n if (column.allowSearch !== true) {\r\n this.applyDropdownFilter(filter, event);\r\n }\r\n }\r\n\r\n lookupClearValue(column: any, row?: any) {\r\n if (row) {\r\n row[column.field] = '';\r\n } else {\r\n column.value = '';\r\n this.setFilterFocusOut(column);\r\n }\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n // invoke when click header checkbox filter\r\n clickCheckBoxFilter(column: IGridColumn) {\r\n if (this.editAllRecord) {\r\n if (\r\n column.type === EGridColumnType.BOOLEAN &&\r\n column?.filter?.type === 'checkbox' && column.filtering != false\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n row[column.field] = column.value;\r\n });\r\n }\r\n }\r\n }\r\n //set header checkbox value for getting all columns on stay admin\r\n setHeaderCheckBoxValue(value: any){\r\n this.isIncludedAllColumns.emit(value);\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(column: any, row: any){\r\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if( year && year.length === 4){\r\n this.calendarFormat= 'mm/dd/yy';\r\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\r\n } else if(year && year.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EValidator,\r\n IFormField,\r\n EFormControl,\r\n AddFormField,\r\n ISetFilter,\r\n IDropDownRequest,\r\n IListFilter,\r\n IReportBtn,\r\n} from '../models/form.model';\r\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\r\nimport { HyperlinkService } from '../services/hyperlink.service';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from './utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormService {\r\n public fieldFocusedOut:boolean = false;\r\n constructor(\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService: DropdownService,\r\n private alertService: AlertService,\r\n private requestService: RequestService\r\n ) { }\r\n\r\n checkValidity(formFields: IFormField[]): boolean {\r\n let isValid: boolean = true;\r\n\r\n formFields.map((item: IFormField) => {\r\n if (item.validations && !item.disabled) {\r\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\r\n item.value = item.value.value;\r\n }\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\r\n const valid =\r\n item.validations && typeof item.label === 'object'\r\n ? item.label.name\r\n : item.label;\r\n if (\r\n item.validations[i].type == EValidator.REQUIRED &&\r\n !item.value &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = item.value\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINLENGTH &&\r\n item.value.length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXLENGTH &&\r\n item.value.length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value < item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value > item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PATTERN &&\r\n !item.value.match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.NUMERIC &&\r\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PHONE &&\r\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.DECIMAL &&\r\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.EMAIL &&\r\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n item.value &&\r\n item.value.match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n addFormField(fieldInfo: IFormField): IFormField {\r\n if (!fieldInfo.label) {\r\n fieldInfo.label = fieldInfo.field;\r\n }\r\n\r\n const formField: any = {\r\n label: fieldInfo.label,\r\n field: fieldInfo.field,\r\n displayField: fieldInfo.displayField,\r\n control: fieldInfo.control,\r\n showOption: fieldInfo.showOption,\r\n column: fieldInfo.column,\r\n row: fieldInfo.row,\r\n minutesInterval: fieldInfo.minutesInterval,\r\n value: fieldInfo.value,\r\n format: fieldInfo.format,\r\n hidden: fieldInfo.hidden,\r\n permissions: fieldInfo.permissions,\r\n validations: fieldInfo.validations,\r\n id: fieldInfo.id,\r\n hyperlink: fieldInfo.hyperlink,\r\n data: fieldInfo.data,\r\n lookupControl: fieldInfo.lookupControl,\r\n componentControl: fieldInfo.componentControl,\r\n optionLabel: fieldInfo.optionLabel,\r\n optionValue: fieldInfo.optionValue,\r\n saveAsString: fieldInfo.saveAsString,\r\n showAllValue: fieldInfo.showAllValue,\r\n onClick: fieldInfo.onClick,\r\n onReturn: fieldInfo.onReturn,\r\n onFocusOut: fieldInfo.onFocusOut,\r\n onChange: fieldInfo.onChange,\r\n tables: fieldInfo.tables,\r\n disabled: fieldInfo.disabled,\r\n disabledText: fieldInfo.disabledText,\r\n timeOnly: fieldInfo.timeOnly,\r\n monthOnly: fieldInfo.monthOnly,\r\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\r\n height: fieldInfo.height,\r\n showBottomBorder: fieldInfo.showBottomBorder,\r\n allowSearch: fieldInfo.allowSearch,\r\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\r\n SetfileTypes: fieldInfo.SetfileTypes,\r\n icon: fieldInfo.icon,\r\n color: fieldInfo.color,\r\n card: fieldInfo.card,\r\n uniqueKey: fieldInfo.uniqueKey,\r\n azureContainer: fieldInfo.azureContainer,\r\n class: fieldInfo.class\r\n };\r\n\r\n return formField;\r\n }\r\n\r\n addCheckbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CHECKBOX;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n fieldInfo.disabled = true;\r\n fieldInfo.showBottomBorder = true;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NUMERIC;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addSpaceField(fieldInfo: AddFormField): IFormField{\r\n fieldInfo.control = EFormControl.SPACER;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextArea(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.TEXTAREA;\r\n return this.addFormField(fieldInfo);\r\n }\r\n \r\n // Adding Report button for DynamicForm\r\n addReportBtn(fieldInfo: IReportBtn) {\r\n fieldInfo.control = EFormControl.REPORT;\r\n return fieldInfo;\r\n }\r\n\r\n addNoteField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NOTE_FIELD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHyperlink(fieldInfo: AddFormField) {\r\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n return this.addFormField(fieldInfo);\r\n }else{return this.hyperlinkService.buildUrl(\r\n fieldInfo?.hyperlink?.linkId,\r\n fieldInfo.hyperlink?.params\r\n ).then((res: any) => {\r\n const params = fieldInfo?.hyperlink?.params;\r\n const link = res;\r\n if(res && params){\r\n Object.keys(params).forEach((key)=>{\r\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\r\n res = res.replace('{{'+key+'}}', params[key])\r\n } \r\n })\r\n }\r\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\r\n fieldInfo.hyperlink.link = res;\r\n }\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n let obj: any = this.addFormField(fieldInfo);\r\n obj['orignalLink'] = link;\r\n return obj;\r\n });\r\n }\r\n}\r\n\r\n addCalendar(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CALENDAR;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // add AutoComplete for Form\r\n addAutoComplete(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Search AutoComplete Data for form\r\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n formField.data = [...response.records];\r\n });\r\n }\r\n\r\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\r\n fieldInfo.control = EFormControl.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\r\n }\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\r\n return this.dropdownService\r\n .setDropDownList(\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n )\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error: any) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n addLookUp(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDialog(fieldInfo: AddFormField): IFormField {\r\n return this.addLookUp(fieldInfo);\r\n }\r\n\r\n addComponent(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.COMPONENT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHeader(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SECTION_HEADER;\r\n fieldInfo.class = 'form-header';\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addMultiSelect(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.MULTISELECT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addFileUpload(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.FILE_UPLOAD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayFile(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.DISPLAY_FILE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding OnClick Button Function for DynamicForm\r\n addButton(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.ADD_BUTTON;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding Switch Function for DynamicForm\r\n addSwitch(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SWITCH;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // start add new card functionality\r\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\r\n fieldInfo.control = EFormControl.CARD;\r\n if (cardData && cardData.uniqueKey) {\r\n if(cardData.sorts?.length > 0){\r\n cardData.sorts.forEach((res) =>{\r\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\r\n });\r\n } \r\n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\r\n return this.getCardList(uniqueKey, filters, sorts)\r\n .then((res: any) => {\r\n fieldInfo.card.data = res.records;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\r\n return new Promise((resolve, reject) => {\r\n this.requestService\r\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n return resolve(response);\r\n } else {\r\n return resolve([]);\r\n }\r\n },\r\n ({ error }: any) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n }\r\n // End add new card functionality\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss'],\r\n})\r\nexport class NotesComponent implements OnInit {\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) { }\r\n\r\n public note: string = '';\r\n public disabledText: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.note = this.config.data.value ?? '';\r\n this.disabledText = this.config.data.disabledText;\r\n }\r\n\r\n handleCancel() {\r\n this.ref.close();\r\n }\r\n\r\n handleOk() {\r\n this.ref.close(this.note);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { NotesComponent } from '../../shared/notes/notes.component';\r\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { IDictionary } from '../../../models/common.model';\r\nimport { Router } from '@angular/router';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DatePipe } from '@angular/common';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss']\r\n})\r\nexport class FormComponent implements OnInit {\r\n @Input() stickyActions: boolean = true;\r\n @Input() form: IDynamicForm;\r\n @Input() hideSaveButton: boolean = false;\r\n @Input() hideCancelButton: boolean = false;\r\n @Input() loading:boolean = false;\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\r\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\r\n dynamicComponentContainer: QueryList<ViewContainerRef>;\r\n\r\n dynamicCase = EFormControl;\r\n permissionType = EPermissionType;\r\n roles: string[] = [];\r\n isFormDisabled: boolean = false;\r\n isFormHidden: boolean = false;\r\n componentsList: IDictionary[] = [];\r\n fileUploadUrls: any;\r\n showfileUploadError: boolean = false;\r\n cardList: IDynamicCard;\r\n calenderPreviousValue: string = '';\r\n defaultDate: string = '';\r\n lookupFocusOut: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Form\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private formService: FormService,\r\n private alertService: AlertService,\r\n private sanitizer: DomSanitizer,\r\n public dialogService: DialogService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private el: ElementRef,\r\n private datePipe: DatePipe,\r\n private gridService: GridService,\r\n private pageLoggerService: PageLoggerService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n \r\n // browser tab close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n // start cardList reference break functionality\r\n let formValues = { ...this.form };\r\n formValues.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field:any) => {\r\n\t // convert string time into date\r\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\r\n field['previousValue'] = field?.value;\r\n }\r\n if(field?.control === EFormControl.CALENDAR &&\r\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\r\n field.value = utilities.setTimeInDate(field.value);\r\n }\r\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\r\n const value = field?.value.map((value: any)=> value[field?.displayField]);\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\r\n }\r\n }\r\n // convert the multiSelect string value in array\r\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\r\n if(field.value?.toString()?.includes(\",\")){\r\n field.value = field.value?.toString()?.split(\",\");\r\n }else {\r\n field.value = [field.value];\r\n }\r\n }\r\n if (field?.control === EFormControl.CARD) {\r\n this.form = {};\r\n setTimeout(() => {\r\n field?.card?.data?.forEach((x: any) => {\r\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\r\n x.dynamicForm = {\r\n formSections: JSON.parse(\r\n JSON.stringify(field?.card?.formSections)\r\n ),\r\n };\r\n };\r\n });\r\n this.form = formValues;\r\n }, 500);\r\n }\r\n // End cardList reference break functionality\r\n if (field?.control === EFormControl.CHECKBOX) {\r\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\r\n }\r\n });\r\n }\r\n });\r\n // apply user role permissions on form\r\n this.roles = this.authService.getUserRoles();\r\n this.applyUserPermissions();\r\n this.applyRequiredFieldValidation();\r\n this.removeWhiteSpaces();\r\n this.setHyperlinkComponentRoute();\r\n setTimeout(() => {this.setCalanderWidth();}, 3000);\r\n }\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(formField: IFormField){\r\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n}\r\n\r\n// set percent and decimal values\r\n setnumericvalues() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if (field?.control === EFormControl.NUMERIC) {\r\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\r\n if (field?.format?.type === 'percent') {\r\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n field.value = field.value / 100;\r\n }\r\n } else if (digitsInfo) {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo);\r\n }\r\n } else if (field?.format?.type === 'decimal') {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Checks if form has any field with dynamic component;\r\n * Creates component instance using componentFactoryResolver\r\n * Injects component through viewRef.createComponent()\r\n * Passes data to component\r\n * Subscribes to the events passed to the components\r\n * Finally forces Angular to detech changes\r\n */\r\n loadDynamicComponents() {\r\n this.componentsList = [];\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field:any, fieldIndex) => {\r\n if (field.control === EFormControl.COMPONENT) {\r\n const viewRef:any = this.dynamicComponentContainer.find(\r\n (x) =>\r\n x.element.nativeElement.id ==\r\n `${formSection.name}-${fieldIndex}`\r\n );\r\n const {\r\n component: Component,\r\n data,\r\n handlers,\r\n } = field.componentControl;\r\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\r\n Component\r\n );\r\n // Passing data to component\r\n const componentRef = viewRef?.createComponent(componentFactory);\r\n if(componentRef){\r\n Object.entries(data ?? {}).forEach(([key, value]) => {\r\n componentRef.instance[key] = value;\r\n });\r\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\r\n // Subscribes to the events passed to the components\r\n if (handlers) {\r\n Object.entries(handlers).forEach(([event, handler]:any) => {\r\n (componentRef.instance[\r\n event\r\n ] as EventEmitter<any>)?.subscribe((response) => {\r\n handler(response);\r\n });\r\n });\r\n }\r\n }\r\n // invoke change detection\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n\r\n //invoke when file upload OR delete a file\r\n fileOnchangeEvent(){\r\n setTimeout(() => {\r\n this.loadDynamicComponents();\r\n }, 1000);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // load dynamic components if exist in form\r\n setTimeout(() => {\r\n this.setnumericvalues()\r\n this.onDynamicFormStateChange();\r\n this.loadDynamicComponents();\r\n }, 500);\r\n }\r\n\r\n removeWhiteSpaces(){\r\n this.form?.formSections?.forEach((section) =>{\r\n if(section.class) section.class = section.class.replace(/\\s/g, '');\r\n })\r\n }\r\n\r\n setHyperlinkComponentRoute() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field) => {\r\n if (\r\n field.control === EFormControl.HYPERLINK &&\r\n field.hyperlink?.component\r\n ) {\r\n this.router.resetConfig([\r\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\r\n ...this.router.config,\r\n ]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n browserTabCloseEvent(event: boolean = false){\r\n this.formService.fieldFocusedOut = event;\r\n }\r\n\r\n /**\r\n * Listens any change in Dynamic Form component State\r\n */\r\n onDynamicFormStateChange() {\r\n utilities.onDynamicFormStateChange().subscribe((response) => {\r\n if (response.id && response.data) {\r\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\r\n if (componentRefObj){\r\n Object.entries(response.data ?? {}).forEach(\r\n ([key, value]) => {\r\n componentRefObj.value.instance[key] = value;\r\n }\r\n );\r\n componentRefObj.value.instance.ngOnInit();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.form && this.form.formSections) {\r\n let totalFields: number = 0;\r\n let disabledFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.form.formSections.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField) => {\r\n let permissions: any = formField.permissions;\r\n let sectionPermissions: any = [];\r\n if (!permissions) sectionPermissions = formSection.permissions;\r\n if (!permissions) permissions = this.form.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (sectionPermissions && sectionPermissions.length > 0) {\r\n sectionPermissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formSection.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n formField.disabled = false;\r\n formSection.hidden = false;\r\n } else {\r\n formSection.accordionDisabled = true;\r\n formSection.disabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n } else if (permissions && permissions.length > 0){\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n formField.disabled = false;\r\n formField.hidden = false;\r\n } else {\r\n if (\r\n formField.permissions &&\r\n formField.permissions.length > 0\r\n ) {\r\n formSection.disabled = false;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n } else {\r\n formSection.disabled = true;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (formField.disabled) {\r\n disabledFields++;\r\n }\r\n\r\n if (formField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\r\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n /**\r\n * Open IFrame in hyperlink Control\r\n */\r\n sectionDisabled(formSection:IFormSection){\r\n if( formSection.disabled ) {\r\n formSection.fields.map((field:IFormField) => {\r\n field.disabled=true;\r\n });\r\n return formSection;\r\n } else {\r\n return formSection;\r\n }\r\n }\r\n\r\n loadIFrame(formField: IFormField){\r\n this.handleClickEvent(formField);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: 'Hyperlink',\r\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\r\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\r\n });\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if(formField.onReturn){\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * open Dialog in hyperlink Control\r\n */\r\n hyperlinkDialog(formField: IFormField) {\r\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\r\n var value = formField.hyperlink.params;\r\n window.open('hyperlink'+formField.label);\r\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\r\n this.router.navigate(['hyperlink'+formField.label], {\r\n queryParams: formField.hyperlink.params,\r\n });\r\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\r\n this.onClickEvent(formField);\r\n const dialog = this.dialogService.open(formField.hyperlink.component, {\r\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\r\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\r\n data: formField.hyperlink.params,\r\n });\r\n const componentName = formField.hyperlink?.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n dialog.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open Iframe on Label\r\n */\r\n loadLabelControlIFrame(formField:any){\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: formField.label.name,\r\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n\r\n if (formField && formField.onClick) {\r\n formField.onClick();\r\n };\r\n }\r\n\r\n /**\r\n * find the required field in form\r\n */\r\n applyRequiredFieldValidation() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section) => {\r\n section.fields.forEach((field) => {\r\n if (field.validations && field.validations.length > 0) {\r\n field.validations.forEach((valid) => {\r\n if (valid.type === EValidator.REQUIRED) {\r\n field.requiredField = true;\r\n }\r\n })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n\r\n setFileUrls(fileUrls: any){\r\n if(fileUrls && fileUrls.length > 0){\r\n this.fileUploadUrls = fileUrls;\r\n this.showfileUploadError = false;\r\n }\r\n }\r\n\r\n onSaveForm() {\r\n let validity = true;\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n if (!this.formService.checkValidity(formSection.fields)) {\r\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\r\n if (validity && field) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else{\r\n this.alertService.error(\r\n 'Some fields are invalid',\r\n 'INVALID FIELD'\r\n );\r\n }\r\n validity = false;\r\n }\r\n\r\n formSection.fields.forEach((field: any)=>{\r\n // set uploadFile URL in FormField in case of FILE_UPLOAD\r\n if (field.control === EFormControl.FILE_UPLOAD) {\r\n field.value = this.fileUploadUrls;\r\n \r\n if(field.validations && field.validations.length > 0){\r\n field.validations.forEach((x:any)=>{\r\n if(x.type === EValidator.REQUIRED && !field.value){\r\n this.showfileUploadError = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\r\n if(selectedData && selectedData.length > 0){\r\n field.card.data = selectedData;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n if (validity) {\r\n let tempValue: any = []\r\n // set value as 1 or 0 in case of checkbox\r\n this.form.formSections?.forEach((formSection)=>{\r\n if (formSection.fields && validity) {\r\n formSection.fields.forEach((field: any) => {\r\n if ((field.value === '') || (field.value === undefined)) {\r\n field.value = null;\r\n }\r\n //convert date into time as string\r\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\r\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\r\n }\r\n // set value of autoComplete as strings\r\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\r\n const value = field.value.map((value: any)=> value[field.displayField])\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n tempValue = value;\r\n field.value = value.toString().replaceAll(\",\",\";\");\r\n }\r\n }\r\n // convert multiSelect array into string\r\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\r\n field.value = field.value?.toString();\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value ? 1 : 0;\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Save grid on formSave Button\r\n const saveAllGrid = document.getElementById('saveAllGridValues');\r\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\r\n if (saveAllGrid) {\r\n saveAllGrid.click();\r\n } else if (getBtns && getBtns.length > 0) {\r\n for (let btn of getBtns) {\r\n btn?.click();\r\n }\r\n }\r\n this.browserTabCloseEvent(false)\r\n this.saveForm.emit(this.form.formSections);\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\r\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value === 1 ? true : false;\r\n }\r\n\r\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\r\n this.fileOnchangeEvent();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancelForm() {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\r\n if(res[0].detail === \"Yes\"){\r\n this.browserTabCloseEvent(false);\r\n this.gridService.columnFocusedOut = false;\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n })\r\n }else{\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n }\r\n \r\n lookupClearValue(formField: IFormField){\r\n if(formField.value) {\r\n formField.value = ''; \r\n this.browserTabCloseEvent(true);\r\n }\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set calender width\r\n */\r\n setCalanderWidth() {\r\n const calanderElement = document.querySelectorAll(\".p-calendar\");\r\n let form: any = document.querySelector(\"form\");\r\n let width = form?.clientWidth;\r\n calanderElement?.forEach((calander:any) => {\r\n const calanderOfsetLeft = calander.offsetLeft;\r\n if(calanderOfsetLeft <= (width / 2)){\r\n calander.classList.add('open-right-side');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * set the dynamic dialog data\r\n */\r\n setDialogData(formField: IFormField, data: any): any {\r\n if (data && formField) {\r\n let value: any;\r\n data = utilities.objConvertToLower(data);\r\n let selection: string = '';\r\n if (formField.value && typeof formField.value === 'object') {\r\n if (\r\n formField.value &&\r\n formField.value.text &&\r\n formField.value.text.toString().trim()\r\n ) {\r\n selection = formField.value.text?.toString()?.trim();\r\n if(formField.displayField){\r\n value = formField.value?.value?.toString()?.trim();\r\n }\r\n }\r\n } else if (formField.value && formField.value.toString().trim()) {\r\n selection = formField.value?.toString()?.trim();\r\n }\r\n const componentName = data.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return this.dialogService.open(data.component, {\r\n ...data.data,\r\n data: {\r\n selection: selection,\r\n field: formField.field,\r\n value: value,\r\n valueField: data.data?.valueField,\r\n ...data.data.data,\r\n },\r\n });\r\n }\r\n }\r\n \r\n tabFocusEvent(formField: any) {\r\n const className = this.el.nativeElement.querySelector('.'+formField.field);\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n\r\n onClickEvent(formField: IFormField) {\r\n if (formField.onClick) {\r\n formField.onClick(formField);\r\n }\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl label\r\n */\r\n selectLookupLabel(formField: any) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl\r\n ) {\r\n const ref: any = this.setDialogData(\r\n formField,\r\n formField.label.labelControl.lookupControl\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(res){\r\n formField.value = utilities.setDialogResponse(\r\n formField,\r\n formField?.label.labelControl.lookupControl,\r\n res\r\n );\r\n }\r\n this.onFocusOutEvent(formField);\r\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(formField: IFormField) {\r\n if(formField.lookupControl) {\r\n this.lookupFocusOut = true;\r\n let value = formField.value;\r\n const ref = this.setDialogData(formField, formField.lookupControl);\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(formField.field){\r\n document.getElementById(formField.field)?.focus();\r\n }\r\n if(res){\r\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\r\n this.lookupFocusOut = false;\r\n this.onFocusOutEvent(formField);\r\n if (formField.onReturn) formField.onReturn(formField.value, res);\r\n }\r\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\r\n value = typeof value === 'object' ? value.text : value;\r\n if (formFieldValue !== value) {\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * onClick event invoked && open Dialog on lookupControl field/label\r\n */\r\n handleClickEvent(formField: IFormField) {\r\n this.onClickEvent(formField);\r\n\r\n if (formField && formField.lookupControl) {\r\n this.selectLookupLabel(formField);\r\n this.selectLookupField(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set Calender Date Format && set Date Minute interval\r\n */\r\n setCalenderDate(formField: IFormField){\r\n if (formField.control === EFormControl.CALENDAR) {\r\n // convert time into date format\r\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\r\n formField.value = utilities.setTimeInDate(formField.value);\r\n }\r\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\r\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n this.calenderPreviousValue = formField.value;\r\n }\r\n }\r\n calendarChangeValue(formField: any){\r\n if(formField.value !== formField.previousValue){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.previousValue = formField.value;\r\n formField.onChange(formField);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * invoked section Clicked event\r\n */\r\n clickedSection(section:IFormSection){\r\n this.sectionClickedEvent.emit(section);\r\n }\r\n\r\n /**\r\n * open dialog in Note_Field conrtrol\r\n */\r\n handleNoteFieldDialog(formfield: IFormField) {\r\n const dialogRef = this.dialogService.open(NotesComponent, {\r\n header: formfield.label as string,\r\n width: '50%',\r\n data: {\r\n value: formfield.value,\r\n disabledText: formfield.disabledText,\r\n },\r\n });\r\n\r\n dialogRef.onClose.subscribe(\r\n (data: any) => {\r\n if (data && formfield.onReturn) {\r\n formfield.onReturn(data);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n setClassName(formField: IFormField): string {\r\n if (formField.hidden) return ' hidden';\r\n else return '';\r\n }\r\n\r\n autoSearch(event: any, formField: any) {\r\n if(formField && event){\r\n formField.onReturn(event.query, formField);\r\n }\r\n }\r\n\r\n /**\r\n * invoked onFocusOut Event\r\n */\r\n onFocusOutEvent(formField: IFormField) {\r\n let record: any = {};\r\n this.form.formSections?.forEach((section)=>{\r\n section.fields.forEach((formField)=>{\r\n if(formField.field){\r\n record[formField.field] = formField.value;\r\n }\r\n });\r\n });\r\n utilities.setHyperlinkParamValue(record, this.form);\r\n this.formService.checkValidity([formField]);\r\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\r\n formField.onFocusOut(formField);\r\n }\r\n }\r\n\r\n onBackSpaceEvent(formField:IFormField){\r\n if(typeof(formField.value)==='object'){\r\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\r\n if(formField.value.text.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n if(formField.value && formField.value.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n\r\n /**\r\n * clear the dropdown value when click on x\r\n */\r\n onClearValue(formField: IFormField, event: any) {\r\n this.formService.checkValidity([formField]);\r\n this.onChangeEvent(formField);\r\n this.dropDownChangeEvent.emit(formField);\r\n if (!event.value) {\r\n this.onFocusOutEvent(formField);\r\n }\r\n }\r\n\r\n clearDropdownValue(formField:any){\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /** \r\n * Invoke onChange Event when Value Changed\r\n */\r\n onChangeEvent(formField: IFormField){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * convert unSafe link into safe link\r\n */\r\n sanitizeUrl(url: string){\r\n let linkUrl:any = url; \r\n if(linkUrl){\r\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\r\n }\r\n return linkUrl;\r\n }\r\n\r\n selectedCardClickEvent(data: any){\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section: any)=>{\r\n section.fields.forEach((field: any)=>{\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let obj = field.card.data[data.index];\r\n if(obj) {\r\n if(obj.selectedCard){\r\n delete obj.selectedCard;\r\n } else {\r\n obj['selectedCard'] = 'card-active';\r\n }\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n if(data.selectedCard){\r\n data['selectedCard'] = '';\r\n } else {\r\n data['selectedCard'] = 'card-active';\r\n }\r\n }\r\n\r\n}\r\n\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { ISelectItem } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\nexport class DropdownComponent implements OnChanges {\r\n @Input() options: ISelectItem[] = [];\r\n @Input() value: ISelectItem;\r\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\r\n public selectedOption: any;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.options.length) {\r\n if (this.value) {\r\n this.selectedOption = changes['value'].currentValue.toString().trim();\r\n } else {\r\n this.selectedOption = this.options[0];\r\n this.valueChange.emit(this.selectedOption.value);\r\n }\r\n }\r\n }\r\n\r\n handleValueChange(event: { value: string }) {\r\n this.valueChange.emit(event.value);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.css']\r\n})\r\nexport class GalleryComponent {\r\n \r\n @Input() galleryImage: any;\r\n @Input() width: string;\r\n\r\n responsiveOptions: any[] = [\r\n {\r\n breakpoint: '1024px',\r\n numVisible: 5\r\n },\r\n {\r\n breakpoint: '768px',\r\n numVisible: 3\r\n },\r\n {\r\n breakpoint: '560px',\r\n numVisible: 1\r\n }\r\n ];\r\n\r\n constructor() { }\r\n}","import { Directive, Input, HostListener } from '@angular/core';\r\nimport { Table } from 'primeng/table';\r\n\r\n@Directive({\r\n selector: '[pAddRow]',\r\n})\r\nexport class AddRowDirective {\r\n @Input() table: Table;\r\n @Input() newRow: any;\r\n @Input() id: string;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event) {\r\n // Insert a new row\r\n if (this.table && this.table.value) {\r\n this.table.value.unshift({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n }\r\n\r\n // Set the new row in edit mode\r\n this.table.initRowEdit({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n}\r\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\r\n\r\nexport const MenuFilters: IMenuFilter = {\r\n [GridFilterControlType.INPUT]: [\r\n { label: 'Starts with', value: 'startsWith' },\r\n { label: 'Contains', value: 'contains' },\r\n { label: 'Not contains', value: 'notContains' },\r\n { label: 'Ends With', value: 'endsWith' },\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n ],\r\n [GridFilterControlType.NUMERICINPUT]: [\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n { label: 'Less than', value: 'lt' },\r\n { label: 'Less than or equal to', value: 'lte' },\r\n { label: 'Greater than', value: 'gt' },\r\n { label: 'Greater than or equal to', value: 'gte' },\r\n ],\r\n [GridFilterControlType.CALENDAR]: [\r\n { label: 'Date is', value: 'dateIs' },\r\n { label: 'Date is not', value: 'dateIsNot' },\r\n { label: 'Date is before', value: 'dateBefore' },\r\n { label: 'Date is after', value: 'dateAfter' },\r\n ],\r\n};\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\r\nimport { MenuFilters } from '../../base/grid/grid.constant';\r\n\r\n@Component({\r\n selector: 'se-filter-menu',\r\n templateUrl: './filter-menu.component.html',\r\n styleUrls: ['./filter-menu.component.scss'],\r\n})\r\nexport class AppFilterMenuComponent implements OnInit {\r\n public isMenuOpen: boolean = false;\r\n public filterOptions: ISelectItem[] = [];\r\n\r\n @Input() globalFilter: IGlobalFilter;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\r\n }\r\n\r\n toggleMenu() {\r\n this.isMenuOpen = !this.isMenuOpen;\r\n }\r\n\r\n handleFilterSelection({ value }: ISelectItem) {\r\n this.isMenuOpen = false;\r\n this.globalFilter.matchMode = value;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { IMenu } from '../../../models/menu.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'se-menu-bar',\r\n templateUrl: './menu-bar.component.html',\r\n styleUrls: ['./menu-bar.component.scss'],\r\n})\r\nexport class MenuBarComponent implements OnInit {\r\n @Input() hiddenPanelMenu: boolean = true;\r\n @Input() toolTip: string;\r\n @Input() menuBackColor: string;\r\n @Input() menuItems: IMenu[];\r\n @Input() menuFooter: string;\r\n @Input() menuTitle: string;\r\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\r\n public menuBarItems: MenuItem[] = [];\r\n toggleMenu: boolean = false;\r\n roles: string[] = [];\r\n isMenubarHidden: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private cookieService: CookieService,\r\n public router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n const toggleMenu = localStorage.getItem('toggleMenu');\r\n const cookieValue = this.cookieService.get('toggleMenu'); \r\n\r\n if (toggleMenu) {\r\n this.toggleMenu = JSON.parse(toggleMenu);\r\n }else if(cookieValue){\r\n this.toggleMenu = JSON.parse(cookieValue);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n\r\n this.menuBarItems = this.menuItems.map((x) => ({\r\n ...x,\r\n style: x.hidden ? { display: 'none' } : x.style,\r\n }));\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \r\n }\r\n\r\n clickEvent() {\r\n this.onClickEvent.emit();\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.menuItems) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.menuItems.forEach((menu) => {\r\n if (menu.items) {\r\n menu.items.forEach((item) => {\r\n let permissions: any = item.permissions;\r\n if (!permissions) permissions = menu.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } \r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n item.style = { display: 'none' };\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n // if all items of menu is hidden then hide menu as well\r\n menu.hidden =\r\n menu.items.length === menu.items.filter((x) => x.hidden).length;\r\n }\r\n });\r\n\r\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n}\r\n\r\n","import { Type } from '@angular/core';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport const ESideBar = {\r\n LEFT: 'left-sidebar',\r\n RIGHT: 'right-sidebar',\r\n};\r\n\r\nexport interface ISidebar {\r\n icon: string;\r\n action?: string;\r\n section: string;\r\n component?: Type<any>;\r\n [key: string]: any;\r\n data?: IData;\r\n onReturn?: (data: any) => any;\r\n onClick?: (value: any) => void;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n id?: string;\r\n tooltip?: string\r\n iFrame?: IFrame;\r\n linkId?:string;\r\n params?:any;\r\n}\r\n\r\nexport enum ESidebarAction {\r\n NAVIGATION = 'navigation',\r\n OPENDIALOG = 'dialog',\r\n IFRAME = '_iframe',\r\n}\r\n\r\nexport interface IFrame {\r\n link?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface IData {\r\n header?: string;\r\n width?: string;\r\n height?: string;\r\n data?: any;\r\n scrollable?: boolean;\r\n}\r\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { HyperlinkService } from '../../../services/hyperlink.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\n@Component({\r\n selector: 'se-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent implements OnInit {\r\n toggleMenu: boolean = false;\r\n openDialogs: any = [];\r\n @Input() navHidden: boolean = false;\r\n @Input() collapseSidebar: boolean = false;\r\n @Input() menuTitle: string;\r\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\r\n if (newSidebarItems) {\r\n this.sidebarItemsList = newSidebarItems;\r\n this.initializeSideBar();\r\n }\r\n }\r\n\r\n public sidebarItemsList: ISidebar[] = [];\r\n public menuItems: MenuItem[] = [];\r\n roles: string[] = [];\r\n isSidebarHidden: boolean = false;\r\n\r\n constructor(\r\n private instance: Renderer2,\r\n private authService: AuthenticationService,\r\n public dialogService: DialogService,\r\n private router: Router,\r\n private pageLoggerService: PageLoggerService,\r\n private hyperlinkService: HyperlinkService\r\n ) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n initializeSideBar() {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\r\n label: x.label,\r\n icon: x.icon,\r\n id: x.id,\r\n section: x.section,\r\n expanded: x.expanded,\r\n action: x.action,\r\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\r\n title: this.setMenuTitle(x),\r\n command: ({ item }) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(x, item);\r\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(x, item);\r\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(x, item);\r\n } else {\r\n this.handleActiveItem(item);\r\n }\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: x.hidden ? 'none' : '',\r\n },\r\n onClick: x.onClick,\r\n onReturn: x.onReturn,\r\n disabled: x.disabled,\r\n }));\r\n }\r\n\r\n setMenuTitle(x: any): string {\r\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\r\n }\r\n\r\n setMenuItems(x: ISidebar): any {\r\n return x.items.map((menu: any) => ({\r\n label: menu.label,\r\n icon: menu.icon,\r\n id: menu.id,\r\n section: menu.section,\r\n expanded: menu.expanded,\r\n action: menu.action,\r\n title: this.setMenuTitle(x),\r\n command: ({ item }: any) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(menu, x);\r\n }\r\n this.handleActiveItem(item);\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: menu.hidden ? 'none' : '',\r\n },\r\n onClick: menu.onClick,\r\n onReturn: menu.onReturn,\r\n disabled: menu.disabled,\r\n }))\r\n }\r\n\r\n loadIFrame(menu: ISidebar, item: any) {\r\n if (menu) {\r\n const dialogRef = this.dialogService.open(IframeComponent, {\r\n header: menu.section,\r\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\r\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\r\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n this.handleActiveItem(item);\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.sidebarItemsList) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.sidebarItemsList.forEach((item, index) => {\r\n let permissions: any = item.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n item.id = index.toString();\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n item.disabled = true;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param menu\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n openDialog(menu: ISidebar, item: any): void {\r\n const menuData:any = menu.data ? menu.data : menu;\r\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\r\n if (menu.component) {\r\n const dialogRef = this.dialogService.open(menu.component, menuData);\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\r\n this.openDialogs.push(dialogRef);\r\n this.handleActiveItem(item);\r\n\r\n if (this.openDialogs && this.openDialogs.length > 1) {\r\n this.openDialogs[0].close();\r\n this.openDialogs.shift();\r\n }\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param x\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n navigateToSection(x: ISidebar, item: any): void {\r\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\r\n this.handleActiveItem(item);\r\n }\r\n\r\n /**\r\n *\r\n * @param item\r\n * Passes the event of the menu\r\n */\r\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\r\n this.menuItems = this.menuItems.map((x) =>\r\n x.icon === icon && closeDialog\r\n ? { ...x, styleClass: 'active-icon' }\r\n : {\r\n ...x,\r\n styleClass: '',\r\n style: {\r\n borderBottom: '1px solid #e9ecef',\r\n display: x.style?.display === 'none' ? 'none' : '',\r\n },\r\n }\r\n );\r\n }\r\n\r\n clickedMenu(menu: MenuItem[]) {\r\n menu.map((item: any) => {\r\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\r\n if (\r\n item.styleClass === 'active-icon' &&\r\n matchedItem &&\r\n matchedItem.onClick\r\n ) {\r\n this.hyperlinkService\r\n .addHyperlinks(matchedItem)\r\n .then((response: any) => {\r\n if (matchedItem.linkId) {\r\n this.hyperlinkService.setSidebarLink(\r\n response,\r\n this.sidebarItemsList\r\n );\r\n } else {\r\n matchedItem.onClick(item);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { IHeader } from '../../../models/header.model';\r\nimport { EFormControl } from '../../../models/form.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'se-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnChanges {\r\n @Input() headers: IHeader;\r\n\r\n dynamicCase = EFormControl;\r\n roles: string[] = [];\r\n isHeaderHidden: boolean = false;\r\n\r\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\r\n\r\n ngOnInit(): void {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions on form\r\n this.applyUserPermissions();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if(this.headers && this.headers.fields){\r\n this.headers.fields.forEach((x) => {\r\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\r\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\r\n }\r\n if (x.value?.toString().includes(':') && x.timeOnly) {\r\n const index = x.value.indexOf(':');\r\n const time = x.value.substring(index - 2, index + 6);\r\n x.value = time;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.headers) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.headers.fields.forEach((headerField) => {\r\n let permissions: any = headerField.permissions;\r\n if (!permissions) permissions = this.headers.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n headerField.disabled = true;\r\n } else {\r\n headerField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n headerField.disabled = false;\r\n headerField.hidden = false;\r\n } else {\r\n headerField.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (headerField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n loaderState = new Subject<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Shows loader\r\n */\r\n showLoader(isDarkBackground = true) {\r\n this.loaderState.next({ loading: true, isDarkBackground });\r\n }\r\n\r\n /**\r\n * Hides loader\r\n */\r\n hideLoader() {\r\n this.loaderState.next({ loading: false });\r\n }\r\n\r\n /**\r\n * Fires on loader state changed.\r\n * @returns {Observable<any>}\r\n */\r\n onLoaderStateChange(): Observable<any> {\r\n return this.loaderState.asObservable();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoaderService } from '../../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'se-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent implements OnInit, OnDestroy {\r\n isLoading = false;\r\n isDarkBackground = true;\r\n loaderSubscription$: Subscription = new Subscription();\r\n\r\n constructor(\r\n public loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loaderSubscription$ = this.loaderService\r\n .onLoaderStateChange()\r\n .subscribe((state: any) => {\r\n this.isLoading = state.loading ? true : false;\r\n this.isDarkBackground = state.isDarkBackground ? true : false;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.loaderSubscription$) {\r\n this.loaderSubscription$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IFormField } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { RequestService } from '../../../services/request.service';\r\n@Component({\r\n selector: 'se-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @Input() acceptFileTypes: any;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() fields: any;\r\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\r\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n uploadFile(files: any) {\r\n let fileData = new FormData(); \r\n let chooseFile:boolean = false;\r\n for (let i = 0; i < files.length; i++) {\r\n if (files[i]) {\r\n chooseFile = true;\r\n fileData.append(files[i].name, files[i]);\r\n }\r\n }\r\n\r\n if (fileData && chooseFile) {\r\n if (this.fields && this.fields.uniqueKey?.length > 0) {\r\n fileData.append('uniqueKey', this.fields?.uniqueKey);\r\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\r\n fileData.append('azureContainer', this.fields?.azureContainer);\r\n }\r\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\r\n (data: any) => {\r\n if (data) {\r\n this.alertService.success('File Upload Successfully.');\r\n if (this.fields?.onReturn) {\r\n this.fields.onReturn(data.results);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n this.fileUrl.emit(data.results);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n if (this.fields.onReturn) {\r\n this.fields.onReturn(error);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n onClickEvent() {\r\n if (this.fields && this.fields.onClick) {\r\n this.fields.onClick();\r\n console.log('this.fields: ', this.fields);\r\n }\r\n } \r\n}\r\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { RequestService } from '../../../services/request.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\n\r\n@Component({\r\n selector: 'se-caption',\r\n templateUrl: './caption.component.html',\r\n styleUrls: ['./caption.component.scss'],\r\n})\r\nexport class CaptionComponent implements OnInit {\r\n dynamicForm: IDynamicForm;\r\n id: number;\r\n caption: string;\r\n\r\n constructor(\r\n private formService: FormService,\r\n private requestService: RequestService,\r\n private alertService: AlertService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.config.data) {\r\n this.id = this.config.data.id;\r\n this.caption = this.config.data.caption;\r\n }\r\n this.initilizeForm();\r\n }\r\n\r\n initilizeForm() {\r\n this.dynamicForm = {\r\n formSections: [\r\n {\r\n fields: [\r\n this.formService.addTextbox({\r\n field: 'fileCaption',\r\n label: 'Caption',\r\n value: this.caption,\r\n column: 12,\r\n validations: [{ type: EValidator.REQUIRED }]\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n saveForm(formFiels: any) {\r\n this.requestService\r\n .get<any[], any>('/AzureUpload/UpdateCaption', {\r\n Id: this.id,\r\n fileCaption: utilities.getFormFieldValue(\r\n this.dynamicForm,\r\n 'fileCaption'\r\n ),\r\n })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.alertService.success('Caption added successfully.');\r\n this.ref.close(response);\r\n }\r\n },\r\n ({ error }) => {\r\n this.ref.close();\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n cancelForm(event: any) {\r\n console.log('CancelForm: ', event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'se-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n})\r\nexport class CardComponent implements OnInit {\r\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\r\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\r\n @Input() data: any = [];\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n @Input() card: any;\r\n dynamicForm: IDynamicForm;\r\n showFiles: boolean = false;\r\n displayCardInfo: IViewCardProp;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private confirmationService: ConfirmationService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n if (this.card) {\r\n let { data, formSections, cardInfo }: any = this.card;\r\n if(cardInfo && Object.keys(cardInfo).length){\r\n this.displayCardInfo = cardInfo;\r\n data = this.gridService.setDataFields(data);\r\n const newArr = [];\r\n data?.forEach((record)=>{\r\n if(!Object.keys(record)?.includes('azurecontainerid')){\r\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\r\n } else {\r\n newArr.push(record);\r\n }\r\n });\r\n this.data = newArr;\r\n } else {\r\n this.data = this.gridService.setDataFields(data);\r\n }\r\n this.dynamicForm = { formSections };\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n this.setCardPropValue('allowDownload');\r\n this.setCardPropValue('allowDelete');\r\n this.setCardPropValue('allowEditableCaption');\r\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\r\n /** In case of when we are using this component for stand alone then if formSection is exist in\r\n the this.card and then add in the data array.\r\n */\r\n if (this.data) {\r\n this.data.forEach((x: any) => {\r\n if (!x.dynamicform) {\r\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\r\n }\r\n utilities.setCardFieldsData(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n setCardPropValue(prop:string){\r\n if(!this.card[prop]?.toString()?.length) {\r\n this.card[prop]= true;\r\n }\r\n }\r\n\r\n dragAndDrop(event: any) {\r\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\r\n event.item?.element?.nativeElement;\r\n this.card.data = this.data;\r\n this.card['change'] = true;\r\n if (this.card && this.card.onSort) {\r\n this.card.onSort(this.data);\r\n }\r\n }\r\n\r\n deleteImage(event: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this Image?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex(\r\n (i) => i.blobfileurl === event.blobfileurl\r\n );\r\n let obj = arr[index];\r\n arr.splice(index, 1);\r\n this.data = [...arr];\r\n\r\n if (this.card && this.card.onDelete) {\r\n obj = this.replacePropName(obj);\r\n this.card.onDelete(obj);\r\n this.onDeleteCard.emit();\r\n }\r\n }\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n replacePropName(cardInfo:any){\r\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\r\n const cardProp = {...this.displayCardInfo};\r\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\r\n return obj;\r\n } else {\r\n return cardInfo;\r\n }\r\n }\r\n\r\n saveCaption(event: any) {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\r\n let obj = arr[index];\r\n if (index !== -1) {\r\n obj.filecaption = event.caption;\r\n arr.splice(index, 1, obj);\r\n this.card.data = arr;\r\n this.card['change'] = true;\r\n }\r\n if (this.card && this.card?.onCaptionSave) {\r\n obj = this.replacePropName(obj);\r\n this.card.onCaptionSave(obj);\r\n }\r\n }\r\n }\r\n\r\n onClickEvent(data: any, index: number){\r\n data['index'] = index;\r\n this.selectedCard.emit(data);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ESelectFileType } from '../../../models/form.model';\r\n\r\n@Component({\r\n selector: 'se-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n})\r\nexport class fileComponent implements OnInit {\r\n @Input() url: string = '';\r\n @Input() caption: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '200px';\r\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\r\n @Input() id: number;\r\n @Input() name: string = '';\r\n @Input() type: any;\r\n @Input() allowDownloadFile: boolean = true;\r\n @Input() allowEditableCaption: boolean = true;\r\n @Input() allowDeleteFile: boolean = true;\r\n editableCaption: boolean = false;\r\n\r\n constructor(private confirmationService: ConfirmationService) {}\r\n\r\n ngOnInit(): void {\r\n this.checkFileExtension();\r\n }\r\n\r\n checkFileExtension() {\r\n switch (this.type) {\r\n case 'png':\r\n case 'jpeg':\r\n case 'jfif':\r\n case 'jpg': {\r\n this.type = '.image';\r\n break;\r\n }\r\n case 'xlsx':\r\n case 'xls':\r\n case 'xlsm':\r\n case 'txt': {\r\n this.type = ESelectFileType.EXCEL;\r\n break;\r\n }\r\n case 'pdf':\r\n case 'html': {\r\n this.type = ESelectFileType.PDF;\r\n break;\r\n }\r\n case 'doc':\r\n case 'docx': {\r\n this.type = ESelectFileType.DOCUMENT;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n downloadFile(url: string) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n\r\n captionClickEvent() {\r\n if (this.allowEditableCaption) {\r\n this.editableCaption = true;\r\n }\r\n }\r\n\r\n captionSave(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n if(caption !== null){\r\n this.caption = caption;\r\n this.editableCaption = false;\r\n this.onSaveEvent.emit(obj);\r\n }\r\n }\r\n\r\n onDeleteFile(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n this.onDeleteEvent.emit(obj);\r\n }\r\n\r\n cancel() {\r\n this.editableCaption = false;\r\n }\r\n}\r\n","import { Component, Input, OnInit, Optional } from '@angular/core';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport * as utilities from '../../../../../services/utilities.service';\r\n\r\n\r\n@Component({\r\n selector: 'se-report-filter',\r\n templateUrl: './report-filter.component.html',\r\n styleUrls: ['./report-filter.component.scss']\r\n})\r\nexport class ReportFilterComponent implements OnInit {\r\n dynamicForm:IDynamicForm;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n \r\n }\r\n initializeForm(){\r\n this.dynamicForm = {\r\n formSections:[\r\n {\r\n fields: [\r\n ...this.formFields,\r\n {\r\n label: 'Download Report',\r\n control: EFormControl.ADD_BUTTON,\r\n hidden: this.config?.data?.hideGenerateReportBtn,\r\n onClick: () => {\r\n this.downloadReport();\r\n },\r\n }\r\n ]\r\n }\r\n ]\r\n \r\n }\r\n }\r\n createDynamicFields() {\r\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n this.setParamFieldValue();\r\n this.initializeForm();\r\n // set dropdown data based on matched field.\r\n this.setDropDownData(reportJson);\r\n },\r\n (error) => {\r\n this.initializeForm();\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n setParamFieldValue(){\r\n if(this.config.data && this.config.data.param?.length > 0){\r\n this.config.data.param.forEach((param: any)=>{\r\n this.formFields.forEach((field)=>{\r\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\r\n if(matchKey && matchKey.length > 0){\r\n field.value = param[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n setDropDownData(reportJson: any) {\r\n reportJson.Parameters?.forEach((record: any) => {\r\n if(record.isuniquekey){\r\n this.requestService.get<any[], any>('/Data/Fetch', {\r\n uniqueKey: record.isuniquekey,\r\n filters: []\r\n }).subscribe((response:any)=>{\r\n utilities.setFormPropValues(this.dynamicForm, record.paramname, [\r\n { name: 'data', value: response.records }, \r\n ]); \r\n },(error) => {\r\n this.alertService.apiError(error);\r\n })\r\n }\r\n });\r\n }\r\n getFilters(){\r\n let filters: any = [];\r\n this.dynamicForm?.formSections?.forEach((section)=>{\r\n section.fields?.forEach((field)=>{\r\n if(field && field.value){\r\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\r\n };\r\n });\r\n }); \r\n return filters;\r\n }\r\n \r\n downloadReport(){ \r\n const filters:any = this.getFilters(); \r\n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n \r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\r\n\r\n@Component({\r\n selector: 'se-generate-report-btn',\r\n templateUrl: './generate-report-btn.component.html',\r\n styleUrls: ['./generate-report-btn.component.scss']\r\n})\r\nexport class GenerateReportBtnComponent implements OnInit {\r\n @Input() repId: any;\r\n @Input() params: any;\r\n @Input() showDialog: boolean;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n }\r\n\r\n reportClickEvent() {\r\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\r\n this.dialogService.open(ReportFilterComponent, {\r\n width: '80%',\r\n height: '100%',\r\n header: 'Generate Report',\r\n data: { Id: this.repId, param: this.params },\r\n });\r\n } else {\r\n this.downloadQuickReport();\r\n }\r\n }\r\n\r\n createDynamicFields() {\r\n this.requestService\r\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\r\n .subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n },\r\n (error) => {\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n\r\n getFilters() {\r\n let filters: any[] = [];\r\n this.formFields.forEach((field) => {\r\n if (field && field.value?.toString()?.length > 0) {\r\n filters.push({\r\n field: field.field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value: field.value,\r\n });\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n downloadQuickReport() {\r\n let filters: any[] = [];\r\n if(this.params && this.params.length > 0){\r\n this.params.forEach((param)=>{\r\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\r\n });\r\n } else {\r\n filters = this.getFilters();\r\n }\r\n \r\n this.requestService\r\n .download('/Report/Generate', { Id: this.repId, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\r\nimport {\r\n IGlobalFilter,\r\n GridFilterControlType,\r\n EGridColumnType,\r\n addGlobalFilter,\r\n EDayRange,\r\n EFilterValidator,\r\n} from '../../../models/grid.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { GridService } from '../../../services/grid.service';\r\n\r\n@Component({\r\n selector: 'se-global-filters',\r\n templateUrl: './global-filters.component.html',\r\n styleUrls: ['./global-filters.component.scss'],\r\n})\r\nexport class SeGlobalFilterComponent implements OnInit {\r\n @ViewChild('rangeCalendar') datePicker: any;\r\n @Input() globalFilters: IGlobalFilter[] = [];\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n\r\n public fiterTypes = GridFilterControlType;\r\n public columnType = EGridColumnType;\r\n public showDialog: boolean = false;\r\n public startDate: Date;\r\n public endDate: Date;\r\n\r\n showInput: boolean = false;\r\n filter: any = '';\r\n hideClearFilterBtn: boolean = true;\r\n calendarFormat:string = 'mm/dd/yy';\r\n\r\n constructor(\r\n public datepipe: DatePipe,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n private gridService: GridService,\r\n public dialogService: DialogService,\r\n private alertService: AlertService,\r\n private el: ElementRef,\r\n ) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.config && this.config.data){\r\n this.showDialog = this.config.data.openDialog;\r\n if(this.config.data.globalFilters){\r\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\r\n }\r\n \r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n // spliting date range value and assign to value and valueTwo in Date_Range Control\r\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \r\n dateRangeFilter.forEach((dateRange)=>{\r\n if(dateRange.value && dateRange.valueTwo){\r\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \r\n this.setDateRangeFilterValue(dateRange);\r\n }\r\n })\r\n // Filtring Numeric Range controls on global filter \r\n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\r\n numerRangeFilter.forEach((numericRange) =>{\r\n if(numericRange){\r\n this.setNumericRangeValueFrom(numericRange);\r\n this.setNumericRangeValueTwo(numericRange);\r\n }\r\n })\r\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\r\n (this.globalFilters.some((filter)=> filter.value))\r\n ){\r\n this.applyFilters(false);\r\n }\r\n }, 500);\r\n }\r\n\r\n setDateRangeFilterValue(dateRange){\r\n if(dateRange?.value?.length > 1){\r\n dateRange.value[0] = new Date(dateRange.value[0]);\r\n dateRange.value[1] = new Date(dateRange.value[1]);\r\n this.selectDate(dateRange, false);\r\n }\r\n }\r\n \r\n // change calendar format on run time if user type date on the calendar field.\r\n calendarFocusEvent(globalFilter:IGlobalFilter){\r\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\r\n let year = a?.target?.value?.toString()?.split('/')[2];\r\n year = year?.toString().split(\" \")[0];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n if(globalFilter.type === GridFilterControlType.CALENDAR){\r\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\r\n }\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n\r\n checkFilterValidation(removeError:boolean = false):boolean{\r\n let valid:boolean = false;\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\r\n valid = true;\r\n filter.errorMessage = filter.displayText+\" is required\";\r\n filter.requiredField = true;\r\n } else {\r\n filter.errorMessage = '';\r\n }\r\n })\r\n }\r\n return valid;\r\n }\r\n\r\n ngOnChanges(){\r\n this.checkFilterValidation();\r\n this.globalFilters?.forEach((filter)=>{\r\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\r\n this.onFocusOutEvent(filter);\r\n }\r\n })\r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n const girdClearFilterBtn = document.getElementById(\r\n 'clearGridFilterValuesButton'\r\n );\r\n if(girdClearFilterBtn){\r\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\r\n this.hideClearFilterBtn = true;\r\n }else{\r\n this.hideClearFilterBtn = false;\r\n }\r\n }else{\r\n this.hideClearFilterBtn = true;\r\n }\r\n }\r\n\r\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\r\n if(globalFilter.toField){\r\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\r\n }\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n\r\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\r\n if(field){\r\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\r\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\r\n if(digitInfo){\r\n value = parseFloat(value)?.toFixed(digitInfo);\r\n }else{\r\n value = parseFloat(value)?.toFixed(2);\r\n }\r\n }\r\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\r\n if(index > -1){\r\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \r\n } else {\r\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\r\n }\r\n }\r\n }\r\n\r\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\r\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \r\n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n \r\n }\r\n\r\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\r\n if(globalFilter.value?.length > 0){\r\n const fromDateValue = this.datepipe.transform(\r\n globalFilter.value[0],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n const toDateValue = this.datepipe.transform(\r\n globalFilter.value[1],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\r\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\r\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\r\n }\r\n }else if(clearValue){\r\n this.matchSameFields(globalFilter.fromField, null, 'gte');\r\n this.matchSameFields(globalFilter.toField, null, 'lte');\r\n }\r\n }\r\n\r\n\r\n onFocusOutEvent(globalFilter: IGlobalFilter){\r\n if (globalFilter && globalFilter.onFocusOut) {\r\n globalFilter.onFocusOut(globalFilter);\r\n }\r\n setTimeout(() => {\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n this.filtersApplied.emit(this.globalFilters);\r\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\r\n }\r\n\r\n /**\r\n * Apply selected filters\r\n */\r\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\r\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\r\n this.setDateRangeFilterValue(globalFilter);\r\n } \r\n this.gridService.applyFilterEvent = filterEvent;\r\n const globalFilters = this.globalFilters.filter((x) => x.field);\r\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\r\n if(index > -1){\r\n globalFilters.splice(index, 1);\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (this.showDialog) {\r\n this.ref.close(globalFilters);\r\n } else \r\n if(!this.checkFilterValidation()){\r\n this.checkFilterValidation(true);\r\n this.filtersApplied.emit(globalFilters);\r\n }\r\n }\r\n\r\n // set By Defualt Calender Range \r\n setDefualtCalendarRange(check: boolean = true){\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\r\n setTimeout(() => {\r\n this.showNext(filter, check);\r\n }, 100);\r\n }\r\n });\r\n }\r\n }\r\n\r\n showNext(filter: IGlobalFilter, check: boolean = true): string {\r\n let nextValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n nextValue = this.setDayFilter(filter, true);\r\n break;\r\n case EDayRange.MONTH:\r\n nextValue = this.setMonthFilter(filter, true);\r\n break;\r\n case EDayRange.YEAR:\r\n nextValue = this.setYearFilter(filter, true);\r\n break;\r\n default:\r\n // week\r\n nextValue = this.setWeekFilter(filter, true);\r\n break;\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.gridService.applyFilterEvent = check;\r\n this.filtersApplied.emit(this.globalFilters);\r\n return nextValue;\r\n }\r\n\r\n showPrevious(filter: IGlobalFilter): string {\r\n let previousValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n previousValue = this.setDayFilter(filter, false);\r\n break;\r\n case EDayRange.MONTH:\r\n previousValue = this.setMonthFilter(filter, false);\r\n break;\r\n case EDayRange.YEAR:\r\n previousValue = this.setYearFilter(filter, false);\r\n break;\r\n default:\r\n // week\r\n previousValue = this.setWeekFilter(filter, false);\r\n break;\r\n }\r\n this.gridService.applyFilterEvent = true;\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.filtersApplied.emit(this.globalFilters);\r\n return previousValue;\r\n }\r\n\r\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\r\n return (filter.value =\r\n this.datepipe.transform(\r\n this.startDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ) +\r\n '|' +\r\n this.datepipe.transform(\r\n this.endDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ));\r\n }\r\n\r\n setDateValue(filter: any) {\r\n let value: Date;\r\n if (filter.value) {\r\n value = new Date(filter.value.split('|')[0]);\r\n return new Date(value.setMonth(value.getMonth()));\r\n } else {\r\n return new Date();\r\n }\r\n }\r\n\r\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n )\r\n : currentDate;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() - 1\r\n )\r\n : currentDate;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\r\n : firstDateOfYear;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\r\n : firstDateOfYear;\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfMonth = new Date(\r\n currentDate.getFullYear(),\r\n currentDate.getMonth(),\r\n 1\r\n );\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() - 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 0\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n let currentDate = this.setDateValue(filter);\r\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\r\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() + weekSeconds)\r\n : new Date(firstDay.getTime());\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() - weekSeconds)\r\n : new Date(firstDay.getTime() - weekSeconds);\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(globalFilters: IGlobalFilter) { \r\n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\r\n }\r\n\r\n /**\r\n * Clear all filter values\r\n */\r\n clearFilters() {\r\n this.globalFilters.map((item: any) => (item.value = null));\r\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\r\n if(clearGridFilter){\r\n clearGridFilter.click();\r\n }\r\n }\r\n\r\n /**\r\n * Clear values of Date Range Filter\r\n */\r\n clearDateRangeValue(filter: any){\r\n this.setDateRangeValue(filter, true)\r\n }\r\n\r\n /**\r\n * Close dialog without applying filters\r\n */\r\n cancel() {\r\n this.clearFilters();\r\n this.ref.close();\r\n }\r\n rangeDateclose(globalFilter: any) {\r\n this.datePicker.hideOverlay();\r\n const id: any = document.getElementById(globalFilter.displayText);\r\n id.focus();\r\n }\r\n\r\n filterInput() {\r\n this.showInput = !this.showInput;\r\n }\r\n\r\n /**\r\n * Focused the calender input\r\n */\r\n selectDate(globalFilter: any, focused: boolean = false){\r\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\r\n this.setDateRangeValue(globalFilter);\r\n if(focused ==true){\r\n this.rangeDateclose(globalFilter); \r\n }\r\n }\r\n if(focused){\r\n document.getElementById(globalFilter.field)?.focus();\r\n }\r\n }\r\n tabFocusEvent(globalFilter: any) {\r\n const className = this.el.nativeElement.querySelector(\r\n '.'+globalFilter.field\r\n );\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\r\nimport { IGlobalFilter } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-filter',\r\n templateUrl: './filter.component.html',\r\n})\r\nexport class SeFilterComponent implements OnInit {\r\n @Input() globalFilters: IGlobalFilter[];\r\n @Input() showDialogFilter: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public dialogService: DialogService) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void { }\r\n\r\n /**\r\n * Opens the filter dialog\r\n */\r\n openFilters() {\r\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\r\n header: 'Choose Filters',\r\n width: '70%',\r\n styleClass: 'global-filter-visible',\r\n data: { globalFilters: this.globalFilters, openDialog: true},\r\n });\r\n\r\n // Modal response\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n this.filtersApplied.emit(res);\r\n }\r\n });\r\n }\r\n\r\n globalFiltersApplied(event: any){\r\n this.filtersApplied.emit(event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-grid-row-actions',\r\n templateUrl: './grid-row-actions.component.html',\r\n styleUrls: ['./grid-row-actions.component.scss']\r\n})\r\nexport class GridRowActionsComponent implements OnInit {\r\n @Input() editing: boolean;\r\n\r\n @Input() editRowPermission: boolean;\r\n\r\n @Input() deleteRowPermission: boolean;\r\n\r\n @Input() editAllRows: boolean = false;\r\n\r\n @Input() row: any;\r\n\r\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onRowEditInit(row: any) {\r\n this.onRowEditInitBtn.emit(row);\r\n }\r\n\r\n deleteRecord(row: any) {\r\n this.deleteRecordBtn.emit(row);\r\n }\r\n\r\n onRowEditSave(row: any) {\r\n this.onRowEditSaveBtn.emit(row);\r\n }\r\n\r\n onRowEditCancel(row: any) {\r\n this.onRowEditCancelBtn.emit(row);\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { GridComponent } from './components/base/grid/grid.component';\r\nimport { FormComponent } from './components/base/form/form.component';\r\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\r\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\r\nimport { IframeComponent } from './components/base/iframe/iframe.component';\r\n\r\n// Library\r\nimport { TableModule } from 'primeng/table';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { AddRowDirective } from './directive/add-row.directive';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NotesComponent } from './components/shared/notes/notes.component';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { RequestService } from './services/request.service';\r\nimport { Environment } from './models/response.model';\r\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\r\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\r\nimport { HeaderComponent } from './components/base/header/header.component';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { LoaderComponent } from './components/base/loader/loader.component';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport {AvatarModule} from 'primeng/avatar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\r\nimport { CaptionComponent } from './components/base/caption/caption.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CardComponent } from './components/base/cards/card.component';\r\nimport { fileComponent } from './components/base/file/file.component';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { AlertService } from '../public-api';\r\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\r\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\r\nimport { SeFilterComponent } from './components/base/filter/filter.component';\r\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\r\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\r\n\r\n\r\nexport const toasterModuleforRoot = ToastrModule.forRoot();\r\n\r\n@NgModule({\r\n declarations: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n DropdownComponent,\r\n AddRowDirective,\r\n FormComponent,\r\n NotesComponent,\r\n AppFilterMenuComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n IframeComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeGlobalFilterComponent,\r\n SeFilterComponent,\r\n AlertPopUpComponent\r\n ],\r\n\r\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\r\n imports: [\r\n TableModule,\r\n PanelMenuModule,\r\n MenuModule,\r\n MultiSelectModule,\r\n FormsModule,\r\n BrowserAnimationsModule,\r\n TabViewModule,\r\n DropdownModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ButtonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n InputTextModule,\r\n TriStateCheckboxModule,\r\n InputTextareaModule,\r\n TooltipModule,\r\n BrowserModule,\r\n GalleriaModule,\r\n AutoCompleteModule,\r\n AccordionModule,\r\n ConfirmDialogModule,\r\n MessagesModule,\r\n InputNumberModule,\r\n AvatarModule,\r\n CardModule,\r\n DragDropModule,\r\n InputSwitchModule,\r\n toasterModuleforRoot\r\n ],\r\n exports: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n FormComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeFilterComponent,\r\n SeGlobalFilterComponent\r\n ],\r\n})\r\nexport class SEToolkitModule {\r\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\r\n return {\r\n ngModule: SEToolkitModule,\r\n providers: [\r\n RequestService,\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { EFormControl, IHyperlink } from './form.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IHeader {\r\n fields: IHeaderField[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface IHeaderField {\r\n label?: string;\r\n value?: any;\r\n control?: EFormControl;\r\n data?: any[];\r\n onClick?: () => void;\r\n class?: string;\r\n column?: number;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport enum EButtonClass {\r\n NORMAL = 'p-button-sm',\r\n SUCCESS = 'p-button-success p-button-sm',\r\n INFO = 'p-button-info p-button-sm',\r\n WARNING = 'p-button-warning p-button-sm',\r\n HELP = 'p-button-help p-button-sm',\r\n DANGER = 'p-button-danger p-button-sm',\r\n}\r\n\r\nexport interface AddHeaderField {\r\n control?: EFormControl;\r\n label?: string;\r\n value?: string;\r\n column?: number;\r\n data?: any;\r\n class?: string;\r\n onClick?: (() => void) | any;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport interface IHeaderFormat {\r\n type: EHeaderFormatType | any;\r\n formatParams?:IFormatParams\r\n | IDateFormatParams\r\n | INumberFormatParams\r\n | ICurrencyFormatParams;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParams {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParams extends IFormatParams {\r\n format?: string;\r\n}\r\n\r\nexport interface INumberFormatParams extends IFormatParams {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParams extends INumberFormatParams {\r\n currency: string;\r\n}\r\n\r\nexport enum EHeaderFormatType {\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}","import { Injectable } from '@angular/core';\r\nimport { IMenu } from '../models/menu.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SideBarService {\r\n constructor() { }\r\n\r\n /**\r\n * Checks parent menu and expands it if current route exists in its child menus.\r\n * @param menuLabel\r\n * @returns {boolean}\r\n */\r\n isMenuExpanded(\r\n currentRoute: string,\r\n items: IMenu[],\r\n menuLabel: string\r\n ): boolean {\r\n if (items && items.length) {\r\n // check currentRoute contains loadDataForEdit or not\r\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\r\n let detailPage = '';\r\n if(currentRoute?.toString()?.includes(\"list\")){\r\n detailPage = currentRoute.replace('list', 'detail');\r\n } \r\n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\r\n let matchedItems = [];\r\n if(currentIndex > -1){\r\n matchedItems = items[currentIndex]?.items;\r\n }\r\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl } from '../models/form.model';\r\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HeaderService {\r\n constructor() {}\r\n\r\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\r\n if (!headerInfo.column) {\r\n headerInfo.column = 3;\r\n }\r\n\r\n const headerField: IHeaderField = {\r\n label: headerInfo.label,\r\n control: headerInfo.control,\r\n value: headerInfo.value,\r\n column: headerInfo.column,\r\n data: headerInfo.data,\r\n class: headerInfo.class,\r\n onClick: headerInfo.onClick,\r\n hyperlink: headerInfo.hyperlink,\r\n disabled: headerInfo.disabled,\r\n hidden: headerInfo.hidden,\r\n permissions: headerInfo.permissions,\r\n format: headerInfo.format,\r\n showTime: headerInfo.showTime,\r\n timeOnly: headerInfo.timeOnly,\r\n };\r\n return headerField;\r\n }\r\n\r\n addLabel(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.LABEL;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n \r\n addDropdown(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.DROPDOWN;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addButton(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.BUTTON;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CHECKBOX;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.HYPERLINK;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CALENDAR;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl, IDynamicForm } from '../models/form.model';\r\nimport { AlertService } from './alert.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from '../../lib/services/utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CardService {\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\r\n let imageToDelete =\r\n imageInfo.id && imageInfo.id > 0\r\n ? { RecordId: imageInfo.id }\r\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\r\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\r\n (response: any) => {\r\n this.deleteFile(imageInfo, dynamicForm, cardId);\r\n if (imageInfo.tables) {\r\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\r\n } else {\r\n this.alertService.success('Image deleted successfully.');\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n deleteImageFromTables(tables: any[], uniqueKey: string) {\r\n this.requestService\r\n .get('/Data/BulkDelete', {\r\n UniqueKey: uniqueKey,\r\n tables: tables,\r\n })\r\n .subscribe(\r\n (response) => {\r\n this.alertService.success('Image deleted successfully.');\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n getCardData(formSections: any, id: string): any {\r\n let arr = {};\r\n formSections?.forEach((formSection: any) => {\r\n formSection.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\r\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n setFileUploadData(response: any, dynamicForm: any, id: string) {\r\n if (response) {\r\n dynamicForm.formSections?.forEach((x: any) => {\r\n x.fields.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\r\n field.card?.data?.unshift(...response);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\r\n const fieldInfo = this.getCardData(\r\n dynamicForm.formSections,\r\n id\r\n );\r\n let cardData = fieldInfo.data;\r\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\r\n\r\n dynamicForm.formSections?.forEach((section) => {\r\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\r\n if (card && card.card) {\r\n card.card.data = cardData;\r\n }\r\n });\r\n }\r\n\r\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\r\n arr = utilities.setDataFields(arr);\r\n cardInfo = utilities.objConvertToLower(cardInfo);\r\n \r\n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n }\r\n\r\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\r\n response.records?.forEach((record: any, recordIndex: any) => {\r\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\r\n if(matchCard && Object.keys(matchCard)?.length > 0){\r\n matchCard[fieldName] = record.Id;\r\n }\r\n });\r\n\r\n if(dynamicForm && Object.keys(dynamicForm)?.length){\r\n dynamicForm.formSections.forEach((section)=>{\r\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\r\n if(formField){\r\n if(cardsInfo?.length > 0){\r\n cardsInfo?.forEach((cardId)=>{\r\n cardId.id = null;\r\n })\r\n }\r\n formField.card.data = cardsInfo;\r\n };\r\n });\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of se-ui-toolkit\r\n */\r\nexport * from 'primeng/api';\r\n\r\n/**\r\n * Exported Modules\r\n */\r\n\r\nexport * from './lib/se-ui-toolkit.module';\r\n\r\n/**\r\n * Exported Components\r\n */\r\nexport * from './lib/components/base/form/form.component';\r\nexport * from \"./lib/components/base/grid/grid.component\"\r\nexport * from './lib/components/base/menu-bar/menu-bar.component';\r\nexport * from './lib/components/base/sidebar/sidebar.component';\r\nexport * from './lib/components/base/header/header.component';\r\nexport * from './lib/components/base/image-gallery/image-gallery.component';\r\nexport * from './lib/components/base/iframe/iframe.component';\r\nexport * from './lib/components/base/loader/loader.component';\r\nexport * from './lib/components/base/file-upload/file-upload.component';\r\nexport * from './lib/components/base/caption/caption.component';\r\nexport * from './lib/components/base/cards/card.component';\r\nexport * from './lib/components/base/file/file.component';\r\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\r\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nexport * from './lib/components/shared/global-filters/global-filters.component';\r\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\r\nexport * from './lib/components/base/filter/filter.component';\r\n\r\n\r\n/**\r\n * Exported Type Definitions\r\n */\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/grid.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/models/request.model';\r\nexport * from './lib/models/header.model';\r\nexport * from './lib/models/sidebar.model';\r\nexport * from './lib/models/user-info.model';\r\nexport * from './lib/models/menu.model';\r\nexport * from './lib/models/common.model'\r\n\r\n/**\r\n * Exported Services\r\n */\r\nexport * from './lib/services/alert.service';\r\nexport * from './lib/services/form.service';\r\nexport * from './lib/services/grid.service';\r\nexport * from './lib/services/dropdown.service';\r\nexport * from './lib/services/page-logger.service';\r\nexport * from './lib/services/authentication.service';\r\nexport * from './lib/services/utilities.service';\r\nexport * from './lib/services/request.service';\r\nexport * from './lib/services/sidebar.service';\r\nexport * from './lib/services/hyperlink.service';\r\nexport * from './lib/services/header.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/card.service';\r\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.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.objConvertToLower","utilities.currentUrl","utilities.setTimeInDate","utilities.autoSetLookupData","utilities.setMinutesInterval","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","utilities.getFormFieldValue","utilities.setCardFieldsData","utilities.setFormPropValues","utilities.setDataFields"],"mappings":"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"}
|