@churchillliving/se-ui-toolkit 6.53.113 → 6.53.114

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.
@@ -1 +1 @@
1
- {"version":3,"file":"churchillliving-se-ui-toolkit.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../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":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { IPermission } from './user-info.model';\nimport { Type } from '@angular/core';\nimport { IDropDownRequest, IReportBtn } from './form.model';\n\nexport interface IGridColumn {\n component?: Type<any>;\n allowSearch?: boolean;\n target?: EGridlink;\n header?: string;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n type?: EGridColumnType;\n hidden?: boolean;\n hyperlink?: string;\n sorting?: boolean;\n filtering?: boolean;\n filter?: IGridFilterType;\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\n data?: any;\n style?: string;\n permissions?: IPermission[];\n value?: any;\n tableAlias?: string;\n linkId?: string;\n params?: {[key: string]: any};\n minutesInterval?: number;\n showTime?: boolean;\n timeOnly?: boolean;\n displayText?: string;\n disabled?: boolean;\n editable?: boolean;\n editLink?: boolean;\n allowSave?: boolean;\n validations?: IGridValidation[];\n errorMessage?: string;\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n}\n\nexport interface IGridLookupControl {\n component?: any;\n data?: IGridLookupData;\n}\n\nexport declare type IGridLookupData = {\n header?: string;\n height?: string;\n width?: string;\n valueField?: string;\n selectedValue?: string;\n data?: {[key: string]: any};\n}\n\nexport interface ILookupValue {\n text: string;\n value: string;\n field?:string\n}\n\nexport enum EGridAggregate {\n SUM = 'sum',\n AVERAGE = 'average',\n COUNT = 'count',\n}\n\nexport interface IGridAggregate {\n type: EGridAggregate;\n caption?: string;\n displayField?: string;\n aggrValue?:string;\n format?: IAggregateFormat;\n}\nexport interface IAggregateFormat {\n type: EAggregateFormat;\n digitsInfo?: number;\n}\n\nexport enum EAggregateFormat {\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n}\n\nexport enum EGridlink {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport interface IGridDataExport {\n rows: any[];\n headings: string[];\n}\n\nexport interface ISelectItem {\n label: string;\n value: string;\n}\n\nexport interface IGridFilterType {\n type?: GridFilterControlType;\n data?: ISelectItem[];\n tableAlias?: string;\n showFilter?: boolean;\n}\n\nexport interface IAlertPopUpBtn {\n buttonLabel: string;\n buttonClass?: string;\n}\n\nexport interface IAlertPopUp {\n message: string;\n header?: string;\n buttons: IAlertPopUpBtn[];\n height?: string;\n width?: string;\n icon?: string;\n}\n\nexport enum EGridFormatter {\n BOOLEAN = 'boolean',\n CHAR = 'char',\n NUMERIC = 'numeric'\n}\n\nexport enum GridFilterControlType {\n INPUT = 'input',\n DROPDOWN = 'dropdown',\n CHECKBOX = 'checkbox',\n CALENDAR = 'calendar',\n CALENDAR_RANGE = 'calender_range',\n MULTISELECT = 'multi-select',\n NUMERICINPUT = 'numeric_input',\n NUMERIC_RANGE = 'numeric_range',\n DATE_RANGE = 'date_range',\n LOOKUP_INPUT = 'lookup_input',\n SPACER = 'spacer'\n}\n\nexport enum EDayRange {\n DAY = 'Day',\n WEEK = 'Week',\n MONTH = 'Month',\n YEAR = 'Year',\n}\n\nexport enum EGridSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum EGridColumnType {\n LINK = 'link',\n IFRAME = 'iframe',\n DIALOG = 'dialog',\n TEXT = 'text',\n NUMERIC = 'numeric',\n DATE = 'date',\n BOOLEAN = 'boolean',\n DROPDOWN = 'dropdown',\n LOOKUP_INPUT = 'lookup_input',\n ADD_BUTTON = 'add_button',\n AUTOCOMPLETE = 'AutoComplete',\n MULTISELECT = 'multi-select',\n REPORT = 'report'\n}\n\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\n displayText?: string;\n onFocusOut?: (value: any) => any;\n optionLabel?: string;\n optionValue?: string;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n format?: string | EGridFormatType | EGlobalFilterFormatType;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n color?: string;\n validations?: IGridValidation[];\n errorMessage?:string;\n requiredField?: boolean;\n}\n\nexport interface ILookupControlFilter {\n component?: any;\n data?: ILookupFilterData;\n}\n\nexport declare type ILookupFilterData = {\n header: string;\n width?: string;\n data: any;\n} & {\n [key: string]: any;\n};\n\nexport interface IPrimeNgSort {\n multisortmeta: { field: string; order: number };\n}\n\nexport interface IPrimeNgFilterItem {\n matchMode: string;\n operator: string;\n value: string | number | boolean | Date | any;\n}\n\nexport interface IPrimeNgFilter {\n filteredValue: any[];\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\n}\n\nexport interface IGridFilter {\n field?: string;\n matchMode?: string;\n operator?: string;\n filtering?: boolean;\n value?: any;\n valueTwo?: any;\n tableAlias?: string;\n column?: string;\n}\n\nexport interface IGridSort {\n field?: string;\n direction?: EGridSortDirection;\n priority: number;\n tableAlias?: string;\n}\n\nexport class IGridServerSideEvent {\n filters?: IGridFilter[];\n sorts?: IGridSort[];\n page?: number;\n pageSize?: number;\n}\n\nexport interface IGridPaginationEvent {\n first: number;\n rows: number;\n}\n\nexport interface IGridColumnAction {\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\n tooltip: string;\n width?: string;\n confirmDialog?: boolean;\n onClick: (row: any) => void;\n}\n\nexport interface IGridRowAction {\n title: string;\n class?: string;\n onClick: (row: any) => void;\n}\n\nexport enum EGridFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n PERIOD = 'MM/yy',\n LONGDATE = 'MM/dd/YY, h:mm a',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport enum EGlobalFilterFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n}\n\nexport enum EGridSelectionType {\n SINGLE = 'single',\n MULTIPLE = 'multiple',\n}\n\nexport type MenuFilterControls =\n | GridFilterControlType.INPUT\n | GridFilterControlType.NUMERICINPUT\n | GridFilterControlType.CALENDAR;\n\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\n\nexport interface addColumn {\n target?: EGridlink;\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n showOption?: boolean;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n showTime?: boolean;\n timeOnly?: boolean;\n hidden?: boolean;\n hyperlink?: string;\n allowSearch?: boolean;\n minutesInterval?: number;\n sorting?: boolean;\n filter?: IGridFilterType;\n tableAlias?: string;\n linkId?: string;\n editable?: boolean;\n editLink?: boolean;\n params?: {[key: string]: any};\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n}\n\nexport interface addFilterColumn {\n control?: GridFilterControlType;\n field?: string;\n header?: string;\n filter?: GridFilterControlType;\n filtering?: boolean;\n hidden?: boolean;\n style?: string;\n showTime?: boolean;\n timeOnly?: boolean;\n format?: string;\n tableAlias?: string;\n validations?: IGridValidation[] | any;\n errorMessage?: string;\n isvalid?: boolean;\n disabled?: boolean;\n allowSave?: boolean;\n permissions?: IPermission[];\n component?: Type<any>;\n type?: EGridColumnType;\n data?: any;\n}\n\nexport interface IGridValidation {\n type: EGridValidator | EFilterValidator;\n expression?: any;\n}\nexport enum EFilterValidator {\n REQUIRED = \"required\",\n}\nexport interface IGridReportBtn extends IReportBtn{\n type?: EGridColumnType.REPORT;\n}\nexport interface IGridRowProp{\n propName: EGridRowPropName | string; //IGridColumnPropName;\n propValue: any;\n field: string;\n}\n\nexport enum EGridRowPropName {\n DISPLAYTEXT = 'displayText',\n DISABLED = 'disabled',\n DISPLAYFIELD = 'displayField',\n HIDDEN = 'hidden',\n ICON = 'icon',\n}\n\nexport enum EGridValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport interface addGlobalFilter {\n field?: string;\n validations?: IGridValidation[];\n displayText?: string;\n type?: GridFilterControlType;\n data?: any;\n value?: any;\n valueTwo?: any;\n matchMode?: string;\n operator?: string;\n tableAlias?: string;\n optionLabel?: string;\n optionValue?: string;\n format?: EGlobalFilterFormatType | IGridFormat | any;\n column?: string;\n onFocusOut?: (value: any) => any;\n filtering?: boolean;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n labelText?: string;\n prefix?: boolean;\n hidden?: boolean;\n color?: string;\n}\n\nexport interface IGridFormat {\n type: EGridFormatType;\n formatParams?:\n | IGridFormatParam\n | IGridDateFormatParam\n | IGridNumberFormatParam\n | IGridCurrencyFormatParam\n | IGridallowcalculateFormatParam;\n\n formatter?: (value: any) => any;\n}\n\nexport interface IGridFormatParam {\n locale?: string;\n}\n\nexport interface IGridDateFormatParam extends IGridFormatParam {\n format?: string;\n}\n\nexport interface IGridNumberFormatParam extends IGridFormatParam {\n digitsInfo?: string;\n}\n\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\n currency: string;\n}\n\nexport interface IGridProp {\n name: string;\n value: any;\n field?: string;\n}\n\nexport interface IGridPropFilter {\n field: string;\n value: any;\n}\n\nexport interface IGridFilterInfo {\n [key:string]:any;\n}\n","import { Component, OnInit, Optional } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'lib-alert-pop-up',\n templateUrl: './alert-pop-up.component.html',\n styleUrls: ['./alert-pop-up.component.css']\n})\nexport class AlertPopUpComponent implements OnInit {\n buttons: any[]\n message: string;\n icon: string;\n\n constructor(@Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef,) { }\n\n ngOnInit(): void {\n if(this.config?.data){\n this.message = this.config.data?.alertPopInfo?.message;\n this.buttons = this.config.data?.alertPopInfo?.buttons;\n this.icon = this.config.data?.alertPopInfo?.icon;\n }\n }\n\n clickedBtn(button: any){\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\n if(closeBtn){\n closeBtn?.click();\n this.ref.close(button);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ConfirmationService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\nimport { IAlertPopUp, } from '../models/grid.model';\n\n@Injectable()\nexport class AlertService {\n \n constructor(\n private toastr: ToastrService,\n public dialogService: DialogService,\n private confirmationService: ConfirmationService\n ) { }\n\n success(message: string, time: number = 5000) {\n this.toastr.success(message, \"\", { closeButton: true, timeOut: time });\n }\n\n info(message: string, time: number = 5000) {\n this.toastr.info(message, \"\", { closeButton: true, timeOut: time });\n }\n\n warning(message: string, time: number = 5000) {\n this.toastr.warning(message, \"\", { closeButton: true, timeOut: time });\n }\n\n error(error: string, time: number = 5000, message?: string,) {\n this.toastr.error(error, message, { closeButton: true, timeOut: time });\n }\n\n apiError(error: any, time: number = 5000) {\n if (typeof error === 'string' || typeof error.error === 'string') {\n typeof error.error === 'string' ? this.error(error.error, time) : this.error(error, time);\n } else if (error && error.error && error.error.errorDetails) {\n const [responseError] = error.error.errorDetails;\n this.error(responseError.errorMessage, time);\n }\n else if(error && error.headers && error.status !== 401) {\n this.error('something went wrong during api request', time);\n }\n }\n\n \n confirm({\n message = \"Are you sure that you want to proceed?\",\n header = \"Confirmation\",\n icon = \"pi pi-exclamation-triangle\",\n key= '',\n } = {}): Promise<any> {\n return new Promise(resolve => {\n this.confirmationService.confirm({\n message,\n header,\n icon,\n key,\n accept: () => {\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\n this.confirmationService.close();\n },\n reject: () => {\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\n this.confirmationService.close();\n }\n })\n });\n }\n\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\n return new Promise(resolve => {\n const ref = this.dialogService.open(AlertPopUpComponent, {\n styleClass: 'alertPopUp',\n header: header,\n width: width,\n height: height,\n data: { alertPopInfo: {message, icon, buttons}},\n });\n ref.onClose.subscribe((res) => {\n if (res) {\n resolve(res.buttonLabel);\n }\n });\n });\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Response } from '../models/response.model';\nimport { Environment } from '../models/response.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestService {\n\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \n }\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\n }\n\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getRequest<T, K>(endpoint: string) {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\n }\n\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n getCurrentRoute(): any{\n let route = window.location.href;\n if(route && route.includes('/')){\n let currentRoute = route.split('/');\n route = currentRoute[currentRoute.length-1];\n const source = `?source=${route}`;\n return source;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\nimport { ISelectItem } from '../models/grid.model';\nimport { GridService } from './grid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DropdownService {\n constructor(\n private requestService: RequestService,\n ) {}\n\n /**\n * Function to set the values for dropdown\n * @param response array of data\n * @param valueProp property name for value\n * @param labelProp property name for label\n */\n\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\n let dropdownvalues: ISelectItem[] = [];\n return new Promise((resolve, reject) => {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\n if (response) {\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\n return resolve(dropdownvalues);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n })\n });\n }\n\n setDropDown(response: any, valueProp: string, labelProp: string) {\n if (valueProp) valueProp = valueProp.toLowerCase();\n if (labelProp) labelProp = labelProp.toLowerCase();\n let dropdownvalues: ISelectItem[] = [];\n if (response.records) {\n this.setDataFields(response.records).forEach((record: any) => {\n if (\n record.hasOwnProperty(valueProp && labelProp) &&\n record[valueProp] &&\n record[labelProp]\n ) {\n dropdownvalues.push({\n label: record[labelProp].toString().trim(),\n value: record[valueProp].toString().trim(),\n });\n }\n });\n }\n return dropdownvalues;\n }\n\n setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n data.push(result);\n });\n }\n return data;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { EGridColumnType } from '../models/grid.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { RequestService } from './request.service';\nimport { IDynamicForm } from '../models/form.model';\nimport { IDictionary } from '../models/common.model';\n@Injectable({\n providedIn: 'root',\n})\nexport class HyperlinkService {\n constructor(private requestService: RequestService) { }\n\n buildUrl(linkIds: any, params: { [key: string]: string }) {\n return new Promise((resolve, reject) => {\n if (Array.isArray(linkIds)) {\n this.requestService\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\n .subscribe(\n (res: any) => {\n if (res) {\n return resolve(res);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n } else {\n this.requestService\n .getOne<any, any>('/Link/ByLinkId', linkIds)\n .subscribe(\n (response) => {\n if (response) {\n return resolve(this.setUrl(params, response));\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n }\n });\n }\n\n setUrl(params: { [key: string]: string }, response: any) {\n let url: string = response.url;\n for (let paramKey in params) {\n const lowerKey = paramKey.toLowerCase();\n const paramValue = params[paramKey];\n if (\n url &&\n url.search &&\n url.search(lowerKey) > 0 &&\n paramValue &&\n paramValue.length > 0\n ) {\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\n }\n }\n return url;\n }\n\n async addHyperlinks(columns: any) {\n let linkIds: any[] = [];\n let params: any;\n if (columns && Array.isArray(columns)) {\n columns.forEach((column) => {\n if (\n (column.type === EGridColumnType.LINK ||\n column.type === EGridColumnType.IFRAME||\n column.type === EGridColumnType.LOOKUP_INPUT) &&\n column.linkId &&\n column.params\n ) {\n linkIds.push(column.linkId);\n params = column.params;\n }\n });\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n } else if (columns.linkId) {\n linkIds.push(columns.linkId);\n params = columns.params;\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n }\n }\n\n setLinkParamValues(\n { formSections }: IDynamicForm,\n field: string,\n params: any[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n const isLabelLink =\n formField.label && typeof formField.label === 'object';\n if (\n formField.field?.toLowerCase() === field?.toLowerCase() ||\n (isLabelLink &&\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label &&\n typeof formField.label === 'string' &&\n formField.label?.toLowerCase() === field?.toLowerCase())\n ) {\n let newLink: string = isLabelLink\n ? formField.label?.labelControl?.orignalLink\n : formField.hyperlink?.link;\n \n if (newLink && newLink.length > 0) {\n return params.map((paramObj: IDictionary): any => {\n if (\n (typeof paramObj.value === 'object' && paramObj.value) ||\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\n ) {\n // removing https:// or http:// from hyperlink param value\n if (\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \n (newLink.includes('https://') || newLink.includes('http://')) \n ) {\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\n }\n const paramName: string = paramObj.name.toLowerCase();\n const paramFormat: string = !paramObj.value\n ? '{{' + paramName + '}}'\n : paramName;\n \n if (newLink.localeCompare(paramFormat)) {\n let setLink =\n paramFormat !== '{{' + paramFormat + '}}'\n ? '{{' + paramFormat + '}}'\n : paramFormat;\n \n newLink = newLink.replace(\n new RegExp(setLink, 'ig'),\n (paramObj.value)?.toTrim()\n );\n if (newLink && !newLink.startsWith('http'))\n {\n newLink = \"http://\" + newLink;\n }\n }\n return isLabelLink\n ? (formField.label.labelControl.hyperlink.link = newLink)\n : (formField.hyperlink.link = newLink);\n }\n });\n }\n }\n });\n });\n }\n\n setSidebarLink(response: any, sidebar: ISidebar[]) {\n response.forEach((res: any) => {\n sidebar.forEach((item) => {\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\n item.onClick(res.url);\n }\n });\n });\n }\n\n}\n","import { Type } from '@angular/core';\nimport { IGridSort, ISelectItem } from './grid.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IDynamicForm {\n formSections?: IFormSection[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface ILabel {\n name: string;\n disabled?: boolean;\n labelControl?: IFormField;\n onReturn?: (value: any) => void;\n onClick?: () => void;\n}\n\nexport interface IDropDownRequest {\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters?: ISetFilter[]\n sorts?:IGridSort[] \n}\n\nexport interface ISetFilter {\n field?: string,\n value?: any,\n matchMode?: string,\n operator?: string,\n valueField?: string;\n}\n\nexport interface IFormSection {\n name?: string;\n fields: IFormField[];\n icon?: string;\n class?: string;\n links?: ILabel[];\n permissions?: IPermission[];\n hidden?: boolean;\n accordionDisabled?: boolean;\n showAccordion?: boolean;\n expanded?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n}\n\nexport interface IFormField {\n label?: string | ILabel;\n class?: string;\n card?: IDynamicCard;\n control?: EFormControl;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n value?: any | ILookupInputValue;\n data?: any[];\n validations?: IValidation[];\n errorMessage?: string;\n minutesInterval?: number;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n lookupControl?: ILookupControlField;\n tables?: string[];\n componentControl?: IFormComponentField;\n column?: number;\n row?: number;\n hyperlink?: IHyperlink;\n format?: IFormat;\n permissions?: IPermission[];\n hidden?: boolean;\n optionLabel?: string;\n optionValue?: string;\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?: any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n isvalid?: boolean;\n timeOnly?: boolean\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n requiredField?: boolean;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n uniqueKey?: string;\n azureContainer?: string;\n}\n\nexport interface IDynamicCard {\n id?: number;\n name?: string;\n data?: any[];\n orderByField?: string;\n formSections?: IFormSection[];\n onSort?: (value: any) => any;\n allowDelete?: boolean;\n allowDownload?: boolean;\n url?: string;\n caption?: string;\n width?: string;\n height?: string;\n allowEditableCaption?: boolean;\n onCaptionSave?: (value: any) => any;\n onDelete?: (value: any) => any;\n class?: string;\n cardInfo?: IViewCardProp;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\nexport interface IReportBtn{\n reportId: number;\n control?: EFormControl.REPORT;\n params?: any[];\n showDialog?: boolean;\n}\n\nexport interface IListFilter {\n uniqueKey: string;\n filters?: ISetFilter[];\n sorts?: IGridSort[];\n}\n\nexport interface IFormComponentField {\n component: Type<any>;\n id?:string;\n data?: {\n [key: string]: any;\n };\n handlers?: {\n [key: string]: Function;\n };\n}\n\nexport interface ILookupInputValue {\n text: any;\n value: any;\n}\n\nexport interface ILookupControlField {\n component: any;\n data: ILookupFieldData;\n id?: string;\n}\n\nexport declare type ILookupFieldData = {\n header?: string;\n height?: string;\n width?: string;\n data?: {[key: string]: any};\n valueField?: string;\n selectedValue?: string;\n} \n\nexport interface IValidation {\n type: EValidator;\n expression?: any;\n}\n\nexport enum ESelectFileType {\n EXCEL = '.excel',\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\n DOCUMENT = '.document',\n PDF = '.pdf',\n MRT = '.mrt',\n}\n\nexport enum EValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport enum EFormControl {\n BUTTON = 'button',\n LABEL = 'label',\n INPUT = 'input',\n CHECKBOX = 'checkbox',\n DROPDOWN = 'dropdown',\n CALENDAR = 'calender',\n NUMERIC = 'number',\n MULTISELECT = 'multi-select',\n TEXTAREA = 'text-area',\n HYPERLINK = 'hyperlink',\n LOOKUP_INPUT = 'lookup_input',\n NOTE_FIELD = 'note_field',\n COMPONENT = 'component',\n PASSWORD = 'password',\n AUTOCOMPLETE = 'AutoComplete',\n SPACER = 'spacer',\n SECTION_HEADER = 'section_header',\n FILE_UPLOAD = 'file_upload',\n CARD = 'card',\n DISPLAY_FILE = 'display_file',\n ADD_BUTTON = 'add_button',\n BREAK_LINE = 'break_line',\n SWITCH = 'switch',\n REPORT = 'report'\n}\n\nexport enum EOperator {\n AND = 'and',\n OR = 'or',\n}\n\nexport enum EMatchMode {\n EQUALS = 'equals',\n STARTSWITH = 'startsWith',\n CONTAINS ='contains',\n IN = 'in',\n ENDSWITH = 'endsWith',\n NOTEQUALS = 'notEquals',\n ISNOT = 'isNot',\n DATEISNOT = 'dateIsNot',\n NOTCONTAINS ='notContains',\n LT = 'lt',\n BEFORE = 'before',\n DATEBEFORE = 'datebefore',\n LTE = 'lte',\n GT = 'gt',\n AFTER = 'after',\n DATEAFTER = 'dateAfter',\n GTE = 'gte',\n}\n\nexport interface IFormat {\n type: EFormatType;\n formatParams?:\n | IFormatParam\n | IDateFormatParam\n | INumberFormatParam\n | IallowCalculateFormatParam\n | ICurrencyFormatParam;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParam {\n locale?: string;\n}\n\nexport interface IDateFormatParam extends IFormatParam {\n format?: string;\n}\n\nexport interface IallowCalculateFormatParam extends IFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface INumberFormatParam extends IFormatParam {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParam extends INumberFormatParam {\n currency: string;\n}\n\nexport enum EFormatType {\n SMALLDATE = 'mm/d/y',\n SHORTDATE = 'mm/d/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n MONTHONLY = 'mm/yy',\n PERIOD = 'mm/y',\n BOOLEAN_YN = 'BOOLEAN_YN',\n CUSTOM = 'custom',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport interface IHyperlink {\n target?: EHyperlink;\n link?: string;\n linkId?: string;\n params?: any;\n width?:string;\n height?:string;\n component?: any;\n data?: ILookupFieldData;\n}\n\nexport enum EHyperlink {\n BLANK = '_blank',\n SELF = '_self',\n PARENT = '_parent',\n TOP = '_top',\n IFRAME = '_iframe',\n DIALOG = '_dialog'\n}\n\nexport interface AddFormField {\n control?: EFormControl;\n field?: string;\n class?: string;\n displayField?: string;\n showOption?: boolean;\n label?: string | ILabel;\n value?: string | any;\n format?: IFormat;\n permissions?: IPermission[];\n id?: string;\n hidden?: boolean;\n validations?: IValidation[] | any;\n hyperlink?: IHyperlink;\n lookupControl?: ILookupControlField;\n tables?: string[];\n minutesInterval?: number;\n disabled?: boolean | any;\n disabledText?: boolean;\n column?: number;\n row?: number;\n componentControl?: IFormComponentField;\n data?: ISelectItem[];\n optionLabel?: string;\n optionValue?: string;\n timeOnly?: boolean;\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?:any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n card?: IDynamicCard;\n}\n","import { formatDate } from '@angular/common';\nimport { ISidebar } from '../../public-api';\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\nimport {\n EFormatType,\n EFormControl,\n EHyperlink,\n EMatchMode,\n EOperator,\n IDynamicCard,\n IDynamicForm,\n IFormat,\n IFormField,\n IFormSection,\n} from '../models/form.model';\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\nimport { Subject } from 'rxjs';\n\n/* #region public methods */\n\n/**\n *\n * @param value : any\n * Function receives the value and expects the value to be formated.\n * Do not use fat arrow function as they do not preserve the context.\n * this.value refers to the value of IFormField Object\n * Modify this.value directly to receive effect\n */\n\n var formstate = new Subject<any>();\n\n export function changeDynamicFormState(id: any, data: any) {\n formstate.next({ id, data });\n}\n \n export function onDynamicFormStateChange() {\n return formstate.asObservable();\n }\n\n export function closeIFrame(){\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\n if(close) {\n close.click();\n }\n}\n\nexport function toDecimal(value: any): any {\n if (value) {\n return parseFloat(value.toString()).toFixed(2);\n }\n}\n\nexport function toBoolean(value: any) {\n return value === 'Y' ? true : false;\n}\n\nexport function toShortDate(value: any, format?: IFormat) {\n if (value && value !== '') {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function toShortDateTime(value: any, format?: IFormat) {\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function setDialogData(columns:IGridColumn[], fieldName:string, value:any){\n columns?.forEach((column)=>{\n if(column.field?.toString() === fieldName?.toString() && column.component){\n let keys=Object.keys(value);\n keys.forEach((key)=>{\n column.data.data={...column.data?.data, [key]:value[key]};\n })\n }\n })\n}\n\nexport function toTrim(text: any) {\n if (typeof text === 'string') {\n return text.trim();\n } else {\n return text;\n }\n}\n\nexport function getMatchKey(obj: any, propName: string): string {\n if (!obj || !propName) {\n return '';\n }\n\n let matchedKey = '';\n if (Array.isArray(obj)) {\n obj.forEach((row) => {\n const keys: any[] = Object.keys(row);\n if (!matchedKey || matchedKey.length === 0) {\n matchedKey = keys.find(\n (x) => x.toLowerCase() === propName.toLowerCase()\n );\n }\n });\n } else {\n const keys: any[] = Object.keys(obj);\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\n }\n\n return matchedKey;\n}\n\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\n let formattedValue: any = value;\n if (formField.format) {\n switch (formField.format.type) {\n case EFormatType.DECIMAL:\n formattedValue = toDecimal(value);\n break;\n case EFormatType.BOOLEAN_YN:\n formattedValue = toBoolean(value);\n break;\n case EFormatType.SHORTDATE:\n formattedValue = toShortDate(value);\n break;\n case EFormatType.CUSTOM:\n if (formField.format.formatter) {\n formattedValue = formField.format.formatter(value);\n }\n break;\n default:\n break;\n }\n }\n return formattedValue;\n}\n\nexport function setFormField (\n { formSections }: IDynamicForm,\n formFieldObj: IFormField\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField: IFormField) => {\n if (\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\n (formField.label && formField.label === formFieldObj.label)\n ) {\n formField = formFieldObj;\n }\n return formField;\n }));\n });\n}\n\nexport function setHyperlinkComponentData (\n { formSections }: IDynamicForm,\n label: string,\n data: any\n){\n formSections?.forEach((section) => {\n let field=section.fields.find((field)=> field.label && field.label===label)\n if(field && field.hyperlink) field.hyperlink.params = data;\n});\n}\n\nexport function setAutoCompleteData(\n values: any[],\n uniqueId: any,\n labelKey: string,\n ValueKey: string,\n){\n if(values?.length > 0){\n values = values?.map((rowValue) => ({[labelKey]: rowValue, [ValueKey]: uniqueId}));\n }\n return values;\n}\n\nexport function setLookupData(\n { formSections }: IDynamicForm,\n field: string,\n data: any\n) {\n formSections?.map((section: IFormSection) => {\n section.fields.map((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data &&\n data\n ) {\n formField.label.labelControl.lookupControl.data.data = data;\n }\n if (formField.lookupControl && formField.lookupControl.data && data) {\n formField.lookupControl.data.data = data;\n }\n }\n });\n });\n return formSections;\n}\n\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\n let newLink: string = link;\n if (params && params.length > 0) {\n params.map((param) => {\n const url = param.name ? '{{' + param.name + '}}' : '';\n if (newLink.localeCompare(url)) {\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\n }\n });\n }\n return newLink;\n}\n\nexport function setFormFieldProp(\n { formSections }: IDynamicForm,\n field: string,\n props: IDictionary[]\n) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n if (\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\n ) {\n return props.map((prop: IDictionary) => {\n if (formField.hasOwnProperty(prop.name)) {\n return (formField[prop.name] = prop.value);\n }\n });\n }\n });\n });\n}\n\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\n if(section){\n section.fields.push(formField);\n }\n return dynamicForm;\n}\n\nexport function setFormFields(\n { formSections }: IDynamicForm,\n formFields: IFormField[]\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField) => {\n let matchedField = formFields.find(\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\n );\n if (matchedField) {\n formField = matchedField;\n }\n return formField;\n }));\n });\n}\n\nexport function getGlobalFilters(\n globalFilters: addGlobalFilter[],\n field: string,\n) {\n let formFieldObj: any;\n globalFilters.map((filter)=>{\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = filter;\n }\n });\n return formFieldObj;\n}\n\nexport function setFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n value: any,\n displayText: string = ''\n) {\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (displayText && displayText.length > 0) {\n formField.value = { text: displayText, value: value };\n } else {\n formField.value = value;\n }\n }\n });\n });\n}\n\nexport function getFormFields(\n { formSections }: IDynamicForm,\n formControl: EFormControl\n): IFormField[] {\n let formFields: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.control === formControl) {\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\n {\n formField.value = formField.value.text.trim();\n }\n else if (formField.value && typeof(formField.value) === 'string')\n {\n formField.value = formField.value.trim();\n }\n formFields.push(formField);\n }\n });\n });\n return formFields;\n}\n\nexport function getFormField(\n { formSections }: IDynamicForm,\n field: string\n): IFormField {\n let formFieldObj: any;\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = formField;\n }\n });\n });\n return formFieldObj;\n}\n\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\n// exist in the field then always return a displayField value.\nexport function getFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n returnDisplayFieldValue:boolean = false\n) {\n let value;\n for (const section of formSections as any) {\n section.fields.forEach((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\n if (\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\n formField.displayField\n ) {\n value = isValid ? formField.value?.text : formField.value?.value;\n } else {\n value = isValid\n ? formField.value?.text\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\n ? formField.value?.value\n : formField.value;\n }\n }\n });\n }\n return value;\n}\n\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\n let value:any = getFormFieldValue(dynamicForm,field, true);\n if (value){\n value = value.toString();\n }\n return value;\n}\n\nexport function getSectionFieldValue(\n formSections: IFormSection[],\n field: string\n) {\n let form: IDynamicForm = { formSections };\n return getFormFieldValue(form, field, true);\n}\n\nexport function setSaveFormValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let response: any = {};\n if (tables && tables.length > 0) {\n tables.forEach((tableName) => {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n\n sectionFields?.forEach((field) => {\n const table = field.tables?.map((table) => table.toLowerCase());\n\n if (table && table.includes(tableName.toLowerCase())) {\n if (!response[tableName]) {\n response[tableName] = {};\n }\n\n if (field.field && field.field.length > 0) {\n response[tableName][field.field] = formatFormFieldCValue(field);\n }\n }\n });\n });\n });\n } else {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n sectionFields?.forEach((field) => {\n if (field.field && field.field.length > 0) {\n response[field.field] = formatFormFieldCValue(field);\n }\n });\n });\n }\n\n return response;\n}\n\nexport function setSaveCardValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let values: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.card.data) {\n field.card.data.forEach((cardData: any) => {\n if (cardData.dynamicForm.formSections) {\n values.push(\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\n );\n }\n });\n }\n });\n });\n return values;\n}\n\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\n if (data && data.length > 0 && Array.isArray(data)) {\n data.forEach((dataRow) => {\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\n });\n } else {\n setEditFormFieldsInfo(data, dynamicForm);\n }\n}\n\nexport function setFilter(\n field: string,\n value: any,\n matchMode: EMatchMode = EMatchMode.EQUALS,\n operator: EOperator = EOperator.AND,\n) {\n const filter: any = {\n field: field,\n matchMode: matchMode,\n operator: operator,\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\n };\n return filter;\n}\n\nexport function setAndFilter(field: string, value: any) {\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\n}\n\nexport function getOrigDataFieldValue(data: any, propName: string): any {\n let value: any;\n if (data) {\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n value = getPropertyValue(data[i], propName);\n if (value) {\n return value;\n }\n }\n } else {\n value = getPropertyValue(data, propName);\n }\n }\n return value;\n}\n\nexport function getOrigDataFieldValueAsString(\n data: any,\n propName: string\n): string {\n let value = getOrigDataFieldValue(data, propName);\n if (value) {\n return value.toString();\n } else {\n return '';\n }\n}\n\nexport function setSectionPropValues(\n { formSections }: IDynamicForm,\n sectionName: string,\n props: IDictionary[]\n) {\n formSections?.map((section) => {\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\n props.map((prop) => {\n return setPropValue(section, prop);\n });\n }\n });\n}\n\n/* #endregion */\n\n/* #region private methods */\n\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\n if (data.records && data.records.length > 0) {\n data.records.forEach((record: any) => {\n const keys: string[] = Object.keys(record);\n dynamicForm.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField: any) => {\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\n );\n\n if (matchedKey) {\n // set label hyperlink\n setLabelHyperlink(formField, record, keys, allData);\n }\n\n if (\n formField.control === EFormControl.HYPERLINK &&\n formField.hyperlink &&\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\n formField.hyperlink.link)\n ) {\n let params = formField.hyperlink.params;\n let paramKeys: string[] = [];\n\n if (\n !params &&\n formField.hyperlink.link &&\n formField.hyperlink.link.includes('}}')\n ) {\n paramKeys = formField.hyperlink.link.split('}}');\n paramKeys = paramKeys.map((paramKey) => {\n paramKey = paramKey.replace('{{', '').trim();\n return paramKey;\n });\n paramKeys = paramKeys.filter((x) => x.length > 0);\n } else {\n if(params){\n paramKeys = Object.keys(params);\n }\n }\n\n formField.hyperlink.link = setHyperlink(\n keys,\n record,\n formField.hyperlink.link,\n paramKeys,\n formField.hyperlink.params,\n allData\n );\n } else {\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\n ? new Date(record[matchedKey] as string)\n : '';\n } else if (formField.control === EFormControl.CARD) {\n if (formField.card && formField.card.formSections) {\n if (!formField.card.data) {\n formField.card.data = data;\n }\n \n setEditFormFieldsInfo(data, formField.card);\n }\n } else if (\n formField.control === EFormControl.AUTOCOMPLETE &&\n matchedKey\n ) {\n let arrayValue = [];\n if (record[matchedKey] && formField.displayField) {\n arrayValue.push({[formField.displayField] : record[matchedKey]});\n }\n formField.value = arrayValue;\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data\n ) {\n const obj = autoSetLookupData(\n formField.label.labelControl.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.label.labelControl.lookupControl.data.data = obj;\n }\n }\n\n if (\n formField.lookupControl &&\n formField.lookupControl.data &&\n formField.lookupControl.data.data\n ) {\n const obj = autoSetLookupData(\n formField.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.lookupControl.data.data = obj;\n }\n }\n if(record[matchedKey]){\n formField.value = toTrim(record[matchedKey]);\n }\n if (\n formField.displayField &&\n formField.displayField.length > 0\n ) {\n const matchDisplayField = getMatchKey(\n record,\n formField.displayField\n );\n if (matchDisplayField) {\n formField.value = {\n text: toTrim(record[matchDisplayField]),\n value: formField.value?.value,\n };\n }\n\n const matchValueField = getMatchKey(record, formField.field);\n if (matchValueField) {\n formField.value = {\n text: formField.value?.text,\n value: toTrim(record[matchValueField]),\n };\n }\n }\n } else if (\n formField.control === EFormControl.COMPONENT &&\n formField.componentControl?.data\n ) {\n formField.componentControl.data = findKeysAndValue(\n formField.componentControl.data,\n record\n );\n changeDynamicFormState(\n formField.componentControl.id,\n formField.componentControl?.data\n );\n } else if (\n formField.control === EFormControl.NUMERIC &&\n formField.label?.labelControl?.lookupControl?.data?.data\n ) {\n let setData = formField.label.labelControl.lookupControl;\n setData.data.data = findKeysAndValue(setData.data.data, record);\n changeDynamicFormState(setData.id, setData.data.data);\n } else if (formField.control === EFormControl.HYPERLINK \n && formField.hyperlink?.target === EHyperlink.DIALOG \n && formField.hyperlink.params\n ) {\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\n } else if (matchedKey) {\n if (formField.format) {\n formField.value = formatFormFieldValue(\n formField,\n record[matchedKey]\n );\n } else if (formField.control === EFormControl.CHECKBOX) {\n formField.value =\n record[matchedKey] &&\n (record[matchedKey].toString() === '1' ||\n record[matchedKey].toString() === 'true')\n ? true\n : false;\n }else if (formField.control === EFormControl.DROPDOWN) {\n let dropValue = record[matchedKey];\n formField.value = dropValue\n ? dropValue.toString()\n : dropValue;\n } else {\n formField.value = toTrim(record[matchedKey]);\n }\n }\n }\n });\n }\n });\n });\n }\n}\n\n//set hyperlink param value as field value\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\n let keys: string[] = [];\n let link: string ='';\n let paramKeys: string[] = [];\n let param: any;\n let fieldInfo: any;\n dynamicForm.formSections?.forEach((section: any) => {\n section.fields.forEach((formField: any) => {\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\n keys = Object.keys(record);\n if(formField?.label?.labelControl?.orignalLink){\n link = formField.label.labelControl.orignalLink;\n }\n\n if(formField?.label?.labelControl?.hyperlink?.params){\n param = formField.label.labelControl.hyperlink.params;\n paramKeys = Object.keys(param);\n }\n fieldInfo = formField;\n if(record && keys && link && paramKeys && param && fieldInfo){\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\n }\n }\n });\n });\n}\n\nexport function objConvertToLower(obj: any) {\n return Object.keys(obj).reduce((accumulator: any, key) => {\n accumulator[key.toLowerCase()] = obj[key];\n return accumulator;\n }, {});\n}\n\nexport function clickSectionHighlight(value: any) {\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\n allMenuItems?.forEach((menauItem: any) => {\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\n })\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n });\n}\n\nexport function removeActiveIconClass() {\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n if (activeIcon && activeIcon.length > 0) {\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\n });\n }\n}\n\nexport function highlightLeftSidebar(){\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\n\n allIconElements?.forEach((icon: any, index: any) => {\n icon?.setAttribute('tabIndex', 'section' + index);\n });\n removeActiveIconClass();\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\n const currentId = \"section\" + index;\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\n } else{\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \n }\n });\n });\n }\n\nexport function findKeysAndValue(data: any, record: any) {\n let valueKey: string = '';\n Object.keys(data).forEach((dataKey) => {\n let valueContainsKey: boolean = false;\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\n valueContainsKey = true;\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n }\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\n if (key && key.length > 0) {\n data = { ...data, [dataKey]: record[key] };\n }\n });\n return data;\n}\n\nexport function setPropValue(obj: any, prop: IDictionary) {\n const matchedKey: string = getMatchKey(obj, prop.name);\n if (matchedKey) {\n return (obj[matchedKey] = prop.value);\n }\n}\n\nexport function hasRole(role: string): boolean {\n let storage = localStorage.getItem('CurrentUserInfo');\n if (storage) {\n let currentUser = JSON.parse(storage);\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\n }\n }\n return false;\n}\n\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\n if (\n item.label &&\n item.label.labelControl &&\n item.label.labelControl.hyperlink &&\n item.label.labelControl.hyperlink.params\n ) {\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\n const link = item.label.labelControl.hyperlink.link;\n if (item.label.labelControl.hyperlink.link) {\n item.label.labelControl.hyperlink.link = setHyperlink(\n keys,\n record,\n link,\n paramKeys,\n item.label.labelControl.hyperlink.params,\n allData\n );\n }\n }\n}\n\nexport function setHyperlink(\n keys: string[],\n record: any,\n link: string,\n paramKeys: string[],\n params: any,\n allData: any[] = []\n): string {\n let newLink: string = link;\n record = objConvertToLower(record);\n paramKeys.forEach((paramkey) => {\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\n const isParamMatched = newLink.localeCompare(param);\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\n\n if (isParamMatched) {\n let paramValue = params ? params[paramkey] : null;\n if(paramValue === '' && paramInRecord){\n paramValue = '{'+paramkey+'}';\n }\n if (paramValue) {\n const propName = paramValue.toString().replace('{', '').replace('}', '');\n let propValue = record[propName.toLowerCase()];\n \n // in case of prop not found in record then try to find prop in all data array, to get its value \n if (!propValue && allData && allData.length > 0)\n {\n allData.forEach((data)=>{\n //const value = data.records.find((x)=> x[propName]);\n data.records.forEach((allRecord: any)=>{\n let keys = Object.keys(allRecord);\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\n if (matchKey){\n propValue = allRecord[matchKey];\n }\n });\n });\n }\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\n \n } else {\n // get param value from api response, if param key exists in it\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === paramkey.toLowerCase()\n );\n\n if (matchedKey) {\n paramValue = record[matchedKey];\n if (paramValue) {\n newLink = newLink.replace(\n new RegExp(param, 'ig'),\n toTrim(paramValue)\n );\n } else {\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\n }\n }\n }\n }\n });\n // replace the {{param}} with empty\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\n }\n return newLink;\n}\n\n// its checking if there is no value in hyperlink param then it set key as a paramValue\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\n let paramValue: boolean = false;\n if(allData && allData.length > 0){\n allData.forEach((data: any)=>{\n if(data.records && data.records.length > 0){\n data.records.forEach((allRecord: any) =>{\n if(paramValue === false){\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\n };\n });\n };\n });\n }else{\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\n }\n return paramValue;\n}\n\nfunction getPropertyValue(data: any, propName: string) {\n let propValue: any;\n data.records?.forEach((record: any) => {\n for (const [key, value] of Object.entries(record)) {\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\n propValue = value;\n }\n }\n });\n return propValue;\n}\n\nfunction formatFormFieldCValue(field: any) {\n if (\n field.format?.type === EFormatType.BOOLEAN_YN &&\n field.format?.formatter?.name === 'toBoolean'\n ) {\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\n } else if (\n field.control === EFormControl.CALENDAR &&\n (field.value || field.value === '')\n ) {\n if(field.timeOnly && field.saveAsString){\n field.value = field.value;\n }else{\n field.value =\n field.showTime === true\n ? toShortDateTime(field.value, field.format)\n : toShortDate(field.value, field.format)\n }\n return field.value;\n } else if (\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value == undefined ? null : field.value.value;\n } else if (\n field.label &&\n field.label.labelControl &&\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value;\n } else {\n field.value = field.value == undefined ? null : field.value;\n return field.value;\n }\n}\n\nexport function autoSetLookupData(\n fieldData: any,\n response: any\n) {\n let obj = {};\n let record = setDataFields([response]);\n if (record && record.length > 0) {\n record.forEach((x: any) => {\n record = x;\n });\n }\n if (fieldData && record) {\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\n let rowKeys = Object.keys(record);\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\n let value = rowKeys?.find(\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n );\n if (value && value.length > 0) {\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\n } else if (key && key.length > 0) {\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\n } else {\n obj = { ...obj, [dataKey]: dataValue };\n }\n });\n return obj;\n } else {\n return null;\n }\n}\n\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\n if(obj && obj.lookupControl?.data){\n obj.lookupControl.data.data = data;\n }\n}\n\nexport function setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n\n data.push(result);\n });\n }\n return data;\n}\n\nexport function setDialogResponse(\n formField: any,\n formData: any,\n response: any\n) {\n let value: any;\n if (response) {\n // if selectedValue does not exist then consider valueField as selectedValue\n if (\n formData &&\n formData.data &&\n formData.data.valueField &&\n !formData.data.selectedValue\n ) {\n formData.data.selectedValue = formData.data.valueField;\n }\n\n const matchValueKey: string = getMatchKey(\n response,\n formData?.data?.selectedValue\n );\n const matchFieldKey: string = getMatchKey(\n response,\n formData?.data?.valueField\n );\n\n if (\n formData?.data &&\n formData?.data.selectedValue &&\n formData?.data.valueField\n ) {\n let selectedValue = response[matchValueKey];\n let matchText = response[matchFieldKey];\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\n selectedValue = selectedValue.trim();\n matchText = matchText.trim();\n }\n value = { text: matchText, value: selectedValue };\n } else {\n const FieldKey: string = getMatchKey(response, formField.field);\n let value = response[FieldKey];\n if (value) {\n value = value.trim();\n }\n }\n }\n return value;\n}\n\nexport function currentUrl():string{\n let currentRoute: string = '';\n let url = window.location.href;\n if(url){\n let arr = url.split('/');\n currentRoute = arr[arr.length-1]\n } \n return currentRoute;\n}\n\nexport function getGridFilters(){\n let filters: any = [];\n let gridFilters = currentUrl();\n if(gridFilters && gridFilters.length > 0){\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\n filters = localFilter?.filters;\n }\n return filters;\n}\n\n//update the hidden or disabled and value based off other global filters.\nexport function setGlobalFilterPropValues(\n globalFilter: IGlobalFilter[],\n field: string,\n props: IFilterDictionary[],\n) {\n return globalFilter.map((filter: any) => {\n if (\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\n (filter.displayText &&\n filter.displayText.toLowerCase() === field?.toLowerCase())\n ) {\n props?.map((prop: IFilterDictionary) => {\n if (filter.hasOwnProperty(prop.propName)) {\n return (filter[prop.propName] = prop.propValue);\n } else if (prop.propValue && prop.propValue.length > 0) {\n return (filter.value = prop.propValue);\n }\n });\n }\n });\n}\n\nexport function setCardFieldsData(form: any) {\n if (form && form.dynamicform) {\n const { dynamicform, ...newData } = form;\n dynamicform?.formSections?.forEach((section: any) => {\n section.fields?.forEach((field: any) => {\n if (newData) {\n setEditFormFields({ records: [newData] }, dynamicform);\n }\n });\n });\n }\n}\n\n// disable Grid EditableRow Column\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let disableObj = { ...obj, disabled: true };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = disableObj;\n }\n return columns;\n}\n\n// enabled Grid EditableRow Column\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let enableObj = { ...obj, disabled: false };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = enableObj;\n }\n return columns;\n}\n\n // check the Minutes Interval\n export function setMinutesInterval(value: any){\n if (value) {\n const min = value.getMinutes().toString();\n if (min) {\n value = value.setMinutes(0);\n }\n }\n return value;\n}\n\n // update the response records\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\n if(index > -1){\n records[index] = rowData;\n }else{\n records.push(rowData);\n }\n return records;\n}\n\n//convert the time into date\nexport function setTimeInDate(time: any) {\n const convertTime12to24 = (time12h: any) => {\n const [time, modifier] = time12h?.toString()?.split(' ');\n let [hours, minutes] = time?.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (modifier === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n return `${hours}:${minutes}`;\n };\n const date = convertTime12to24(time);\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\n const futureDate = new Date();\n futureDate.setTime(tempDate.getTime());\n return futureDate;\n}\n\n// return the data of the field \nexport function getFieldData({ formSections }: any, field: string){\n let data: any = []\n if(formSections?.length > 0 && field){\n formSections.forEach((section: any)=>{\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\n }\n })\n }\n return data;\n}\n\nexport function setAllFormFieldsValues(\n { formSections }: IDynamicForm,\n props: IFilterDictionary[]\n) {\n formSections?.map((section: IFormSection) => {\n if (section) {\n section.fields.map((formField: any) => {\n return props.map((prop: IFilterDictionary) => {\n if (formField) {\n return (formField[prop.propName] = prop.propValue);\n }\n });\n });\n }\n });\n}\n\nexport function calenderMinMaxValue(item: any,value: any, index){\n let validation: string = 'equal';\n var validDate = new Date(item.validations[index].expression);\n var currentDate = new Date(value);\n if (validDate.getTime() < currentDate.getTime()){\n validation = 'greater';\n }\n else if (validDate.getTime() > currentDate.getTime()){\n validation = 'minimum';\n }\n return validation;\n}\n/* #endregion */\n","import { Injectable } from '@angular/core';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { IDropDownRequest } from '../models/form.model';\nimport { DatePipe } from '@angular/common';\nimport {\n EGridSortDirection,\n GridFilterControlType,\n IGlobalFilter,\n IGridFilter,\n IGridSort,\n EGridColumnType,\n addColumn,\n addFilterColumn,\n addGlobalFilter,\n IGridColumn,\n EGridValidator,\n IGridProp,\n IGridPropFilter,\n IGridRowProp,\n IGridReportBtn,\n} from '../models/grid.model';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { HyperlinkService } from './hyperlink.service';\nimport * as utilities from './utilities.service';\nimport { RequestService } from './request.service';\nimport { IDictionary } from '../models/common.model';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GridService {\n softCachingFilters: any = {};\n applyFilterEvent: boolean = true;\n public columnFocusedOut:boolean = false;\n constructor(\n public datepipe: DatePipe,\n private hyperlinkService: HyperlinkService,\n private dropdownService:DropdownService,\n private alertService:AlertService,\n private requestService: RequestService\n ) {}\n\n /**\n *\n * @param event\n * Receives lazy event and returns after proper mapping\n */\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\n const filters = this.mapFilters(event, columns);\n return this.handleMultiFilterField(filters);\n }\n\n /**\n * @param filters\n * Receives filters and returns array after removing duplicates\n * and creating comma separated values for same filters\n */\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\n return filters\n .map((x, i, arr) =>\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\n ? {\n ...x,\n value: arr\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\n .map((a) => a.value)\n .join(),\n }\n : x\n )\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\n }\n\n // Prepare basic grid filters\n prepareBasicFilters(\n event: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridFilter[] {\n return this.mapFilters(event, columns);\n }\n\n /**\n * Checks if filters has values then converts global filter values type into IGridFilter.\n */\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\n const globalData: IGridFilter[] = [];\n\n globalFilters?.forEach((filter: IGlobalFilter) => {\n if (\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\n filter.value.length) ||\n (typeof filter.value !== 'string' &&\n !Array.isArray(filter.value) &&\n filter.value) ||\n (typeof filter.value === 'boolean' && filter.value !== null) ||\n filter.type === GridFilterControlType.CALENDAR_RANGE\n ) {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\n // add filter for start date\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n\n // add filter for end date\n globalData.push({\n field: this.setGlobalFilterField(filter, false),\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter, false),\n tableAlias: filter.tableAlias,\n });\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode:\n filter.type === GridFilterControlType.MULTISELECT\n ? 'in'\n : filter.matchMode,\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n }\n }\n });\n return globalData;\n }\n\n setGlobalFilterField(\n filter: any,\n isStartDate: boolean = true\n ): string {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\n if (isStartDate) {\n return filter.fromField;\n } else {\n return filter.toField;\n }\n } else {\n return filter.field;\n }\n }\n\n // set global filter value\n setGlobalFilterValue(\n filter: IGlobalFilter,\n isStartDate: boolean = true\n ): string | number | Date | boolean {\n switch (filter.type) {\n case GridFilterControlType.MULTISELECT:\n return (filter.value as any[]).join(',');\n case GridFilterControlType.CALENDAR:\n return this.getFormattedDate(filter.value as Date);\n case GridFilterControlType.CALENDAR_RANGE:\n let dateValues: string[] = filter.value\n ? filter.value.toString().split('|')\n : [];\n if (dateValues && dateValues.length == 2) {\n let dateValue: Date = isStartDate\n ? new Date(dateValues[0])\n : new Date(dateValues[1]);\n return this.getFormattedDate(dateValue);\n } else {\n return '';\n }\n case GridFilterControlType.CHECKBOX:\n return filter.value ? true : false;\n default:\n return filter.value as string;\n }\n }\n\n checkValidity(columns: IGridColumn[], row: any){\n let isValid: boolean = true;\n columns.map((item: any) => {\n if (item.validations && !item.disabled) {\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\n const valid = item.validations && item.header\n if (\n item.validations[i].type == EGridValidator.REQUIRED &&\n !row[item.field] &&\n !item.hidden &&\n valid\n ) {\n isValid = row[item.field]\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINLENGTH &&\n row[item.field].length < item.validations[i].expression\n ) {\n isValid =\n row[item.field] && row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXLENGTH &&\n row[item.field].length > item.validations[i].expression\n ) {\n isValid =\n row[item.field] && row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINIMUM &&\n isValid\n ) {\n if(item.type === EGridColumnType.DATE){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(row[item.field] < item.validations[i].expression){\n isValid =\n row[item.field] && row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXIMUM &&\n isValid \n ) {\n if(item.type === EGridColumnType.DATE){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(row[item.field] > item.validations[i].expression){\n isValid =\n row[item.field] && row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PATTERN &&\n !row[item.field].match(item.validations[i].expression)\n ) {\n isValid =\n row[item.field] && row[item.field].match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.NUMERIC &&\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PHONE &&\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.DECIMAL &&\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.EMAIL &&\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n // set basic filter value\n setBasicFilterValue(filter: any): any {\n if (filter instanceof Date) {\n return this.getFormattedDate(filter);\n } else if (typeof filter === 'boolean') {\n return filter ? 1 : 0;\n } else {\n return filter;\n }\n }\n\n /**\n *\n * @param param\n * Receives lazy event and returns sort array\n */\n getGridSorts(\n { multiSortMeta }: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridSort[] {\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\n field,\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\n priority: i + 1,\n tableAlias: this.setTableAlias(field, columns),\n }));\n }\n\n /**\n *\n * @param event\n * Handles default and lookup filters\n */\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\n const filters: IGridFilter[] = [];\n Object.entries(event.filters).forEach(([field, value]: any) => {\n if (Array.isArray(value)) {\n (value as IGridFilter[]).forEach(\n ({ matchMode, operator, value: filter }) => {\n if (filter !== null) {\n filters.push({\n field,\n matchMode,\n operator,\n value: this.setBasicFilterValue(filter),\n tableAlias: this.setTableAlias(field, columns),\n });\n }\n }\n );\n } else {\n if (value.value !== '') {\n switch (typeof value.value) {\n case 'boolean':\n filters.push({\n field,\n matchMode: 'equals',\n operator: 'and',\n value: value.value ? 1 : 0,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'string':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'number':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'object':\n if (value.value instanceof Date) {\n filters.push({\n field,\n matchMode: 'equal',\n operator: 'and',\n value:\n value.value instanceof Date\n ? this.getFormattedDate(value.value)\n : value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n } else {\n (value.value || []).forEach((x: any) => {\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: x.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n });\n }\n break;\n default:\n null;\n }\n }\n }\n });\n return filters;\n }\n\n /**\n *\n * @param event\n * Receives lazy event and returns page number\n */\n getGridPagination(event: any): number {\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\n }\n\n // get formatted date\n getFormattedDate(value: Date): string {\n return new Date(`${value} Z`).toISOString().slice(0, 10);\n }\n\n // add simple grid column without\n addColumn(columnInfo: addColumn): IGridColumn {\n if(columnInfo.type === EGridColumnType.DROPDOWN){\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n }else if(columnInfo.type === EGridColumnType.DIALOG){\n if(!columnInfo.filtering && !columnInfo.filter){\n columnInfo.filtering = false;\n }\n if(columnInfo.params && !columnInfo.data){\n columnInfo.data = columnInfo.params;\n }\n }\n const column: IGridColumn = {\n allowSearch: columnInfo.allowSearch,\n field: columnInfo.field,\n header: columnInfo.header,\n style: columnInfo.style,\n type: columnInfo.type,\n format: columnInfo.format,\n data: columnInfo.data,\n filtering: columnInfo.filtering,\n hidden: columnInfo.hidden,\n sorting: columnInfo.sorting,\n filter: columnInfo.filter,\n hyperlink: columnInfo.hyperlink,\n tableAlias: columnInfo.tableAlias,\n linkId: columnInfo.linkId,\n minutesInterval: columnInfo.minutesInterval,\n params: columnInfo.params,\n showOption: columnInfo.showOption,\n displayText: columnInfo.displayText,\n target: columnInfo.target,\n disabled: columnInfo.disabled,\n allowSave: columnInfo.allowSave,\n editable: columnInfo.editable, \n editLink: columnInfo.editLink,\n saveAsString: columnInfo.saveAsString,\n component: columnInfo.component,\n onClick: columnInfo.onClick,\n onReturn: columnInfo.onReturn,\n onFocusOut: columnInfo.onFocusOut,\n onChange: columnInfo.onChange,\n aggregate: columnInfo.aggregate,\n formatter: columnInfo.formatter,\n permissions: columnInfo.permissions,\n optionLabel: columnInfo.optionLabel,\n optionValue: columnInfo.optionValue,\n dropDownProp: columnInfo.dropDownProp,\n showTime: columnInfo.showTime,\n timeOnly: columnInfo.timeOnly,\n lookupControl: columnInfo.lookupControl,\n displayField: columnInfo.displayField,\n icon: columnInfo.icon,\n color: columnInfo.color,\n id: columnInfo.id,\n value: columnInfo.value,\n validations: columnInfo.validations,\n };\n\n return column;\n }\n \n // Adding Report Button Function for Grid\n addReportBtn(columnInfo: IGridReportBtn){ \n columnInfo.type = EGridColumnType.REPORT;\n return columnInfo;\n}\n\n // add simple input grid column\n addInputColumn(\n filterColumnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\n }\n return this.addColumn(filterColumnInfo);\n }\n\n // add simple numeric grid column without\n addNumericColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.NUMERIC;\n return this.addColumn(columnInfo);\n }\n\n // add simple calendar grid column without\n addCalendarColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\n return this.addColumn(columnInfo);\n }\n\n // add simple boolean grid column without\n addBooleanColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.type = EGridColumnType.BOOLEAN,\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\n }\n return this.addColumn(columnInfo);\n }\n\n // add LookUp Field for Grid\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\n return this.addColumn(columnInfo);\n }\n\n // add Button for grid column\n addButtonColumn(\n columnInfo: addColumn,\n ): IGridColumn {\n columnInfo.type = EGridColumnType.ADD_BUTTON;\n if (!columnInfo.field) {\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\n }\n return this.addColumn(columnInfo);\n }\n\n // add AutoComplete for grid column\n addAutoComplete(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\n return this.addColumn(columnInfo);\n }\n\n // Search AutoComplete Data for Grid\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord = response.records?.some((record)=> record[column.displayField] && record[column.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[column.displayField]: search});\n }\n }\n column.data = this.setDataFields(response.records);\n });\n }\n\n\n // add simple dropdown grid column without\n addDropdownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n dropDownProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.type = EGridColumnType.DROPDOWN;\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\n }\n if (dropDownProp) {\n columnInfo.dropDownProp = dropDownProp;\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n// add MultiSelectDropDown grid column\naddMultiSelectDropDownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n multiSelectProp?: IDropDownRequest\n): IGridColumn {\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n columnInfo.type = EGridColumnType.MULTISELECT;\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\n }\n if (multiSelectProp) {\n columnInfo.dropDownProp = multiSelectProp;\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n}\n\n showFilterIcon(columnInfo: addColumn){\n if(columnInfo.filter && columnInfo.filter.showFilter){\n return true; \n }else{\n return false;\n }\n }\n\n setDropdownData(\n column: IGridColumn,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any[],\n row?: {[key: string]: any}\n ): Promise <any> | any{\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\n .then((res: any) => {\n if(row){\n row[column.field+'_data'] = res;\n }else{\n column.data=res;\n if(column.filter && column.filter.type === \"dropdown\"){\n column.filter.data = res;\n }\n }\n return this.addColumn(column);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n\n // add grid column with built-in filter\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\n const column: any = {\n field: filterColumnInfo.field,\n header: filterColumnInfo.header,\n filter: { type: filterColumnInfo.filter },\n filtering: filterColumnInfo.filtering,\n hidden: filterColumnInfo.hidden,\n style: filterColumnInfo.style,\n tableAlias: filterColumnInfo.tableAlias,\n permissions: filterColumnInfo.permissions\n };\n\n return column;\n }\n\n // add date grid column with built-in filter\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\n const column: IGridColumn = {\n field: dateColumnInfo.field,\n header: dateColumnInfo.header,\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\n filtering: dateColumnInfo.filtering,\n filter: { type: GridFilterControlType.CALENDAR },\n format: dateColumnInfo.format,\n style: dateColumnInfo.style,\n tableAlias: dateColumnInfo.tableAlias,\n disabled: dateColumnInfo.disabled,\n allowSave: dateColumnInfo.allowSave,\n permissions: dateColumnInfo.permissions,\n component: dateColumnInfo.component,\n showTime: dateColumnInfo.showTime,\n timeOnly: dateColumnInfo.timeOnly,\n data: dateColumnInfo.data,\n hidden: dateColumnInfo.hidden,\n };\n return column;\n }\n\n setLookUpFilter(column: any, dialogService: any) {\n if (column.lookupControl) {\n let dataValue: any[]= [];\n let dataKey: any[] = [];\n let data = column.lookupControl?.data?.data;\n const keys = Object.keys(data);\n if (data && keys?.length > 0) {\n keys.forEach((key) => {\n if (data[key].toString().includes('{')) {\n dataValue.unshift(data[key]);\n dataKey.unshift(key);\n data[key] = '';\n }\n });\n }\n const ref = dialogService.open(\n column.lookupControl.component,\n column.lookupControl.data\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (column.onReturn) {\n column.onReturn(res);\n }\n if(dataKey?.length > 0 && dataValue?.length > 0){\n dataKey.forEach((key,keyIndex)=>{\n dataValue.forEach((value, valueIndex)=>{\n if(keyIndex === valueIndex){\n data[key] = value;\n }\n });\n });\n }\n if (res) {\n document.getElementById('lookUp_filter')?.focus();\n let field = column.field;\n let value =utilities.setDialogResponse(\n column,\n column?.lookupControl,\n res\n );\n column.value = value?.value ? value.value : res[field.toLowerCase()];\n }\n },\n ({ error }:any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n // Set Hyperlink field as a param Value\n setFieldAsLinkParam(columns: any, field: string, response: any) {\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\n this.setDataFields(response.records).forEach((res: any) => {\n let obj = columns.find((x: any)=> x.field === field);\n if(obj && obj.params){\n const keys = Object.keys(obj.params)\n keys.forEach((key: any)=>{\n if(obj.params[key] && obj.params[key].toString().includes('{')){\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\n obj.params[key] = res[value];\n }\n })\n }\n });\n }\n }\n\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\n }\n\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\n let records: any = [];\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\n let newRow:any;\n\n return this.hyperlinkService\n .addHyperlinks(columns).then((linksResponse: any) => {\n data.forEach((row: any) => {\n newRow = { ...row };\n columns.forEach((col: any) => {\n let keys = Object.keys(row);\n if(col.type === EGridColumnType.DIALOG){\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n if(col.format && newRow[field].displayText){\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\n }\n if (col.data && col.data.data){\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\n }\n }\n linksResponse.forEach((linkResponse: any) => {\n if (\n (col.type === EGridColumnType.LINK ||\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\n col.linkId &&\n col.params &&\n col.linkId === linkResponse.linkId\n ) {\n const paramKeys: string[] = Object.keys(col.params);\n const link: any = utilities.setHyperlink(\n keys,\n row,\n linkResponse.url,\n paramKeys,\n col.params\n );\n\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].hyperlink = link;\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n }\n });\n });\n records.push(newRow);\n });\n return records;\n });\n }\n\n // add grid global filter with built-in filter\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\n const column: addGlobalFilter = {\n field: globelFilterInfo.field,\n displayText: globelFilterInfo.displayText,\n validations: globelFilterInfo.validations,\n type: globelFilterInfo.type,\n data: globelFilterInfo.data,\n value: globelFilterInfo.value,\n valueTwo: globelFilterInfo.valueTwo,\n matchMode: globelFilterInfo.matchMode,\n operator: globelFilterInfo.operator,\n tableAlias: globelFilterInfo.tableAlias,\n optionLabel: globelFilterInfo.optionLabel,\n optionValue: globelFilterInfo.optionValue,\n onFocusOut: globelFilterInfo.onFocusOut,\n filtering: globelFilterInfo.filtering,\n column: globelFilterInfo.column,\n dayRange: globelFilterInfo.dayRange,\n fromField: globelFilterInfo.fromField,\n toField:globelFilterInfo.toField,\n lookupControl: globelFilterInfo.lookupControl,\n allowSearch: globelFilterInfo.allowSearch,\n disabled: globelFilterInfo.disabled,\n hidden: globelFilterInfo.hidden,\n labelText: globelFilterInfo.labelText,\n prefix: globelFilterInfo.prefix,\n color: globelFilterInfo.color,\n format: globelFilterInfo.format,\n };\n return column;\n }\n\n // add global input filter\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global dropdown filter\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n let sorts= dropDownProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else{\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n // add global MultiSelect dropdown filter\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\n if (multiSelectProp) {\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n let sorts = multiSelectProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters, \n sorts\n );\n }\n } else{\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n \n \n\n\n getDropdownData(\n fieldInfo: any,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any,\n sorts: IGridSort[] = []\n ) {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addGlobalFilter(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n // add global filter Space Field\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.SPACER;\n return this.addGlobalFilter(globelFilterInfo);\n}\n\n // add global boolean filter\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric Range Filter for global Filter\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric input for global Filter\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add LookUp Field for global Filter\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n setDataFields(response: any, dataKey: string = \"\") {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n if(Object.keys(x ?? {})?.length > 0){\n const result:any = Object.keys(x)?.reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\n {\n result[dataKey] = index;\n }\n \n data.push(result);\n }\n });\n }\n return data;\n }\n\n setColumnFields(columns: any[]) {\n let column: any = [];\n if (columns && columns.length > 0) {\n columns.map((col: any) => {\n column.push({ ...col, field: col?.field?.toLowerCase() });\n });\n return column;\n }\n }\n\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\n if (columns && columns.length > 0) {\n columns.forEach((column: any) => {\n if (column.field?.toLowerCase() === field.toLowerCase()) {\n column.linkId = linkId;\n if(params){\n column.params = params;\n }\n }\n });\n }\n\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\n if(changeLink){\n delete res[0][field.toLowerCase()+'_obj'];\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\n if(index !== -1){\n if(users[index][field+'_obj']){\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\n }\n }\n } \n });\n }\n\n // set grid data and set selected row based on selection value\n setDataWithSelectedRow(records: any, configData: any) {\n if (configData?.selectedValue && configData.data.selection) {\n records.forEach((record: any) => {\n Object.keys(record)?.forEach((key) => {\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\n if(configData.data.value && record[key] === configData.data.value){\n record['highlightRow'] = true;\n } else if(record[key] === configData.data.selection){\n record['highlightRow'] = true;\n }\n }\n });\n });\n }\n\n return records;\n }\n\n setTableAlias(field: string, columns: IGridColumn[]) {\n if (columns && columns.length > 0) {\n const column = columns.find(\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\n );\n\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\n return column.tableAlias;\n }\n }\n\n return '';\n }\n\n setGridPropValues(\n columns: IGridColumn[],\n props: IGridProp[],\n filter?: IGridPropFilter,\n records?: any[],\n ) {\n if (columns && columns.length > 0 && props && props.length > 0) {\n let isMatched: boolean = false;\n if (filter && filter.field && records && records.length > 0) {\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\n }\n props.map((prop: IGridProp) => {\n let col: any = {};\n if (prop.field && !isMatched && !filter?.field) {\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\n } else if (isMatched) {\n if(prop.field){\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\n }else {\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\n }\n }\n if (col && col.hasOwnProperty(prop.name)) {\n col[prop.name] = prop.value;\n }\n });\n }\n }\n\n // set grid row propValues\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\n props?.forEach((prop)=>{\n if(prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '') && prop.field){\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\n if(fieldName){\n if(row[fieldName]?.action){\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\n }else{\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\n }\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\n };\n }\n });\n return row;\n }\n\n // remove the rowActions from the records\n removeRowActions(records){\n if(records?.length > 0){\n records.forEach((row)=>{\n if(row.rowAction){\n delete row['rowAction'];\n }\n })\n }\n return records;\n }\n}","export interface IUserInfo {\n id: number;\n username: string;\n isADUser: boolean;\n token: string;\n activities: string[];\n roles: IUserRole[];\n }\n \n export interface IUserRole {\n id: number;\n code: string;\n name: string;\n description: string;\n }\n \n export interface IPermission {\n type: EPermissionType;\n roles: string[];\n }\n \n export enum EPermissionType {\n EDIT = 'edit',\n VIEW = 'view',\n DELETE = 'delete',\n ADDROW = 'addRow',\n CRUD = 'crud',\n }\n ","import { Injectable } from '@angular/core';\nimport { IUserInfo } from '../models/user-info.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n userInfoKey: string = 'CurrentUserInfo';\n\n login(response: any): boolean {\n if (response) {\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\n return true;\n } else {\n return false;\n }\n }\n\n getUserInfo() {\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\n }\n\n getUserRoles() {\n let roles: any = [];\n let userInfo: IUserInfo = this.getUserInfo();\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\n roles = userInfo.roles.map((x) => x.name);\n }\n return roles;\n }\n\n isAuthenticated(): boolean {\n return this.getUserInfo() ? true : false;\n }\n\n logout() {\n // setting Function for removing the Grid Filters When User logout. \n let keys = Object.keys(localStorage);\n if(keys && keys.length > 0){\n keys.forEach((key)=>{\n if(key.includes('SetFilters-')){\n localStorage.removeItem(key);\n }\n });\n }\n // removing the UserName & Password When User logout.\n localStorage.removeItem(this.userInfoKey);\n }\n}\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-iframe',\n templateUrl: './iframe.component.html',\n styleUrls: ['./iframe.component.scss']\n})\nexport class IframeComponent implements OnInit,OnDestroy {\n url: any;\n id:string='';\n\n constructor(\n private sanitizer: DomSanitizer,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.loadIFrameData();\n }\n\n ngOnDestroy() {\n if(this.id){\n const url: any = document.getElementById(this.id);\n this.ref.close(url.contentWindow.location.href);\n }\n }\n\n loadIFrameData(){\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\n this.config.data.value\n );\n this.id = this.config.data.iFrameId;\n\n }\n }\n\n iframeLoaded(){\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\n\n if(iframeEl){\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\n }\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageLoggerService {\n\n constructor(private requestService: RequestService) { }\n \n // save page logger info\n savePageLoggerInfo(currentRoute, componentName: string = '') {\n this.requestService\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\n .subscribe(\n (data) => {\n return data;\n },\n (error) => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnChanges,\n Optional,\n ElementRef,\n ViewChildren,\n QueryList,\n SimpleChanges,\n ViewChild,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport {\n DynamicDialogRef,\n DynamicDialogConfig,\n DialogService,\n} from 'primeng/dynamicdialog';\nimport { saveAs } from 'file-saver';\nimport jsPDF from 'jspdf';\nimport { GridService } from '../../../services/grid.service';\nimport {\n IGridColumn,\n IGridSort,\n IGridServerSideEvent,\n IGridPaginationEvent,\n IGlobalFilter,\n IGridFilter,\n IGridColumnAction,\n IGridRowAction,\n EGridSelectionType,\n EGridColumnType,\n EGridSortDirection,\n IGridDataExport,\n EGridAggregate,\n ILookupValue,\n EGridFormatType,\n IGridFilterInfo,\n} from '../../../models/grid.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { WorkSheet } from 'xlsx';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport * as utilities from '../../../services/utilities.service';\nimport { Table } from 'primeng/table';\nimport { EFormatType } from '../../../models/form.model';\nimport { Router } from '@angular/router';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription, interval } from 'rxjs';\n\n@Component({\n selector: 'se-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent implements OnInit, OnChanges , OnDestroy {\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\n @Output() inlineRowCancel = new EventEmitter();\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n serverFilters: IGridServerSideEvent = {};\n rowsData: any[];\n rowsDataCopy: any[] = [];\n roles: string[] = [];\n isColumnHidden: boolean = false;\n rowClickData: IGridColumn;\n componentTableRef: any;\n lookupObject: ILookupValue;\n lookupFilterObj: any;\n lookupBlur: boolean = true;\n globalFiltersArray: any[] = [];\n checkAction: boolean = false;\n calenderPreviousValue: string = '';\n gridFilterObj: IGridFilterInfo;\n defaultDate: any;\n gridfilter:any;\n dropDownFilter: any = {};\n dropdownInput: boolean = false;\n saveAllRecord: boolean = false;\n editAllRecord: boolean = false;\n cancelAllRecords: boolean = false;\n addNewRowCheck: boolean = false;\n inEditMode: boolean = false;\n saveRecordArray: any[] = [];\n disabledSaveBtn:boolean = false;\n setDialogData:boolean = true;\n setDialogField: string = '';\n\n editModeChecked: boolean = true;\n editModeunCkecked: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setDropdownFilter:boolean = true;\n reloadPage:Subscription;\n\n // apply checked/unChecked prop for CheckBox of the Table\n checked: boolean = true;\n unChecked: boolean = false;\n hideEditAllRowsBtn: boolean = true;\n\n //apply Add/Delete/Edit prop for the grid permission\n addRowPermission: boolean = true;\n deleteRowPermission: boolean = true;\n editRowPermission: boolean = true;\n\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\n setAggregateFooter: string = '';\n\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\n aggregateFooter: boolean = false;\n\n // Maintains previous state of rows being edited\n editRowsRecords: { [key: string]: any } = {};\n\n // Maintains record of rows being edited\n editingRowKeys: { [key: string]: any } = {};\n\n @ViewChild('dt') table: Table;\n\n // Selects items in the grid based on passed on data\n @Input() selectedRows: any = [];\n\n @Input() setGridRefreshTime: number = 0;\n\n @Input() addDataKeyValue = false;\n\n private globalData: IGridFilter[] = [];\n\n sortDisabled: boolean = false;\n\n @Input() public showRefreshBtn:boolean = false;\n\n\n // Stores selected columns\n private _selectedColumns: IGridColumn[] = [];\n\n // Boolean prop to allow horizontal Scroll on Table.\n @Input() horizontalScroll: boolean = false;\n\n // Prop to handle loader of grid\n @Input() public loading = false;\n\n //this property is used to handle server side event by default it is true when it false server side event will not be called\n @Input() autoLoadData: boolean = true;\n\n // Boolean prop to check where selected is allowed or not.\n @Input() allowSelection = false;\n\n // Set column width of selected row.\n @Input() selectionColumnWidth: string = '80px';\n \n // Boolean prop to hide the add row button.\n @Input() hideOnRowAddBtn = false;\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridSaveButton = false;\n\n // Boolean prop to allow export to pdf.\n @Input() allowExportToPdf = false;\n\n // Boolean prop to allow export to excel.\n @Input() allowExportToExcel = false;\n \n // Boolean prop to set the action column as first column.\n @Input() setActionColumnAsFirst = false;\n\n // If true, enables options to perform CRUD using inline row functionality\n @Input() useInlineCRUD = false;\n\n // Array of row actions\n @Input() rowActions: IGridRowAction[] = [];\n\n // Sets selection type i.e: single/multiple selection\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\n\n // Unique key requires for built-in row selection of primeNg grid\n @Input() dataKey: string = 'id';\n\n // Flag for clear filter values button\n @Input() clearGridFilter = true;\n\n // Flag for search filter values button\n @Input() searchGridFilter = true;\n\n // Flag in case table is scrollable\n @Input() scrollable = true;\n\n // Sets scroll height for the table\n @Input() scrollHeight = '680px';\n\n // Boolean prop to allow to wrap or unWrap the grid.\n @Input() wordWrap: boolean = false;\n\n @Input() newGridRow: any = {};\n\n @Input() filtering = true;\n\n @Input() rowHover: boolean = false;\n\n @Input() hideFilterOptions: boolean = false;\n\n // Sets pagenation for the table Data.\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\n\n // set the change in the rowData\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\n\n /**\n * Stops the loader and sets the data to grid\n * Clears the editing stack\n * Scrolls to selected element if selection found\n */\n @Input() set rows(data: any[]) {\n this.loading = false;\n if (data && data.length > 0) {\n if (!this.dataKey) {\n this.dataKey = 'id';\n }\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\n } else {\n this.rowsData = [];\n }\n\n // Cleaning the editing stack\n this.editingRowKeys = {};\n this.editRowsRecords = {};\n\n setTimeout(() => {\n if (data && data.length > 0 && this.selectedRows) {\n const selectedElementRef = this.gridRow.find(\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\n );\n selectedElementRef &&\n (\n selectedElementRef.nativeElement as HTMLTableRowElement\n ).scrollIntoView({ behavior: 'smooth' });\n }\n }, 0);\n\n if (this.columns && this.columns.length > 0) {\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, {}, false);\n }\n });\n }\n //manipulate checkbox string value to true and false.\n this.changeCheckboxStringValue();\n }\n\n // Global filter server request\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\n this.globalData = this.gridService\n .prepareGlobalFilters(globalFilters)\n ?.filter((x) => x?.value !== false);\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = this.serverFilters.filters\n ? this.serverFilters.filters.concat(this.globalData)\n : this.globalData;\n\n if (localStorage.getItem('applyFilter') === 'false') {\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\n : this.globalFiltersArray;\n }\n if (localStorage.getItem('applyFilter') === 'true') {\n globalFilters.forEach((globalFilter) => {\n this.globalFiltersArray.forEach((filterArray) => {\n if (\n filterArray.field === globalFilter.field &&\n globalFilter.value &&\n filterArray.value !== globalFilter.value\n ) {\n filterArray.value = globalFilter.value;\n }\n const findIndex = this.globalFiltersArray.findIndex(\n (index) => index.field === globalFilter.field && !globalFilter.value\n );\n if (findIndex !== -1) {\n this.globalFiltersArray.splice(findIndex, 1);\n }\n });\n });\n\n this.loading = this.autoLoadData;\n setTimeout(() => {\n if(this.gridService.applyFilterEvent || this.autoLoadData){\n this.onApplyFilter.emit();\n }\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n serverFilterValues.filters = serverFilterValues.filters.concat(\n this.globalFiltersArray\n );\n }\n serverFilterValues.filters = Array.from(\n new Set(\n serverFilterValues.filters\n .reverse()\n .map((filter: any) => filter.field)\n )\n ).map((field) => {\n return serverFilterValues.filters.find((x: any) => x.field === field);\n });\n serverFilterValues.filters = serverFilterValues.filters.filter(\n (obj: any) =>\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\n );\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\n // setting pagination page as first\n serverFilterValues.page = 1;\n if(this.defaultRows && this.pagination){ \n serverFilterValues.pageSize = this.defaultRows;\n }\n if(this.gridService.applyFilterEvent){\n this.onServerSideEventChange.emit(serverFilterValues)\n }\n localStorage.removeItem('applyFilter');\n // setting pagination page number UI\n this.table._first = 0;\n }\n }, 300);\n }\n }\n\n // Input decorator to receive columns to be displayed in header\n @Input() columns: IGridColumn[] = [];\n\n @Input() permissions: IPermission[] = [];\n\n // Optional prop to handle toggling of columns\n @Input() allowColumnToggle = false;\n\n // Optional prop to hide filtering of columns\n @Input() hideFilter = false;\n\n // Optional prop to handle lookup filters\n @Input() lookupFilters = false;\n\n // Optional prop to handle pagination\n @Input() pagination = false;\n\n // Optional prop to handle show CurrentPage Report\n @Input() showCurrentPageReport = false;\n\n // Displays total number of records\n @Input() totalRecords = 0;\n\n @Input() showconfirmDialog: boolean = true;\n\n // Sets number of rows to be shown the grid\n @Input() defaultRows: number;\n\n @Input() columnActions: IGridColumnAction[] = [];\n\n // Decides the grid's behavior either for client side or server side events\n @Input() useServerSideEvents = false;\n\n // Output event to handle row click\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\n\n // Output event emit when click on grid checkbox filter\n @Output() onCheckBoxFilterClick: EventEmitter<any>= new EventEmitter();\n\n // Output event to handle row CheckBox\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\n\n // Output event to trigger on sort change\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\n\n // Output event to trigger on filter change\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\n\n // Output event to invoke the multiSelection click event\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a grid and globalFilters called\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\n\n //set header checkbox value for getting all columns on stay admin\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a lazy event is dispatched\n @Output()\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\n new EventEmitter();\n\n // Output event to trigger on pagination\n @Output()\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\n\n // Dispatch output event trigger on edit row\n @Output() onRowUpdate = new EventEmitter();\n\n // Dispatch output event trigger cancel all rows\n @Output() onCancelAllRows = new EventEmitter();\n\n // Dispatch output event trigger on delete row\n @Output() onRowDelete = new EventEmitter();\n\n //Dispatch output event trigger on add row\n @Output() onRowAdd = new EventEmitter();\n\n //Dispatch output event trigger on add, update and delete row\n @Output() onGridRowActions = new EventEmitter();\n\n // set property allowCaching for LocalStorage\n @Input() allowCaching: boolean;\n\n // set property softCaching for setting the values of gridFilter\n @Input() softCaching: boolean = true;\n \n @Input() editAllRows: boolean = false;\n\n // set the row When Edit the row on Grid\n @Output() onGridRowEdit = new EventEmitter();\n\n // set the row When adding the new Row on Grid\n @Output() onGridRowAdd = new EventEmitter();\n\n isGridHidden: boolean = false;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private alertService: AlertService,\n private authService: AuthenticationService,\n private elementRef: ElementRef,\n public decimalPipe: DecimalPipe,\n private pageLoggerService: PageLoggerService,\n private cd: ChangeDetectorRef,\n private router: Router,\n private datePipe: DatePipe,\n public confirmationService: ConfirmationService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n get selectedColumns(): IGridColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: IGridColumn[]) {\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\n }\n\n // browser close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event:any) {\n if(this.gridService.columnFocusedOut){\n return false;\n }else{\n return true;\n }\n }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n // automatically reload grid after 9 seconds.\n if(this.setGridRefreshTime){\n this.refreshGrid();\n }\n\n if(this.editAllRows){\n this.disabledSaveBtn = true;\n }\n \n this.componentTableRef = this.table;\n setTimeout(() => {\n this.setNumericValues();\n }, 500);\n }\n\n ngOnDestroy(){\n if(this.setGridRefreshTime){\n this.reloadPage?.unsubscribe();\n } \n }\n\n // apply user role permissions on grid columns\n applyColumnsPermissions() {\n if (this.columns) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.columns.forEach((column: any) => {\n let permissions: IPermission[] = column.permissions;\n // if (!permissions) permissions = this.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n // else {\n // let index = this.columns.findIndex(\n // (i) => i.field === column.field\n // );\n // if (index !== -1) {\n // this.columns.splice(index, 1);\n // }\n // }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n column.disabled = true;\n } else {\n column.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n column.hidden = false;\n column.disabled = false;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (column.hidden) {\n hiddenFields++;\n }\n });\n\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n // apply global permissions on entire grid\n applyGridPermissions() {\n if (this.permissions && this.permissions.length > 0) {\n let hasValidEditPermission = false;\n\n // check if any column has any permission\n let hasColumnPermissions = this.columns?.some(\n (x) => x?.permissions && x.permissions.length > 0\n );\n\n this.permissions.forEach((permission) => {\n let isValid: boolean = false;\n\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if(permission.type === EPermissionType.CRUD && !isValid){\n this.useInlineCRUD = false;\n }\n else if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n this.useInlineCRUD = true;\n if (!isValid && !hasColumnPermissions) {\n this.isGridHidden = true;\n this.useInlineCRUD = false;\n }\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\n this.isGridHidden = false;\n hasValidEditPermission = true;\n this.editRowPermission = false;\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\n this.deleteRowPermission = false;\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\n this.addRowPermission = false;\n }\n });\n }\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\n }\n\n ngOnChanges(change: SimpleChanges) {\n if (this.allowCaching !== false && this.pagination) {\n this.allowCaching = this.pagination;\n } else {\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\n }\n // add defaultRow in pagination array\n if (!this.setPaginationLength.includes(this.defaultRows)) {\n this.setPaginationLength.unshift(this.defaultRows);\n }\n const hasColumns: boolean = this.columns && this.columns.length > 0;\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions on grid columns\n this.applyColumnsPermissions();\n\n // apply global permissions on entire grid\n this.applyGridPermissions();\n\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\n this.cd.detectChanges();\n\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n // checking filter exist or not\n const filter = this._selectedColumns.some(\n (column) => column.filtering === undefined || column.filtering === true\n );\n if (filter === false) {\n this.hideFilter = true;\n }\n\n this.columns.forEach((column: any) => {\n // convert string time into the date\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\n this.rowsData.forEach((row) => {\n if (\n row[column.field] &&\n (row[column.field].toString().includes('PM') ||\n row[column.field].toString().includes('AM'))\n ) {\n row[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n });\n }\n // set filter value\n if (column.filter && column.value && column.filtering !== false) {\n this.setFilterFocusOut(column);\n }\n // add \"flex-shrink: 0\" for flex-basis Style\n if (column.style && column.style.includes('flex-basis')) {\n let style = column.style + ' !important; flex-shrink: 0 !important';\n column.style = style.includes(';;')\n ? style.replace(';;', ';')\n : style;\n }\n\n // set DisplayText when value is in curly brackets.\n this.setDisplayTextValue(column);\n\n //Aggregate scenario\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n\n let searchFilters;\n if(!this.softCaching){\n searchFilters = JSON.parse(\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\n );\n }else{\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\n }\n if (\n !this.hideFilter &&\n searchFilters &&\n searchFilters.filters &&\n searchFilters.filters.length > 0\n ) {\n searchFilters.filters.forEach((x: any) => {\n if (x.value && x.field === column.field) {\n if(column?.filter?.type === 'calendar'){\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\n }else{\n column.value = x.value;\n }\n }\n });\n }\n // converting displayField toLowercase\n if (column.displayField) {\n column.displayField = column.displayField.toLowerCase();\n }\n // set AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n this.rowsData &&\n this.rowsData.length > 0\n ) {\n this.rowsData.forEach((row) => {\n // convert string that contains comma into arrays\n if (\n row[column.field] &&\n row[column.field]?.toString().includes(',')\n ) {\n row[column.field] = row[column.field]\n ?.toString()\n .split(',')\n ?.map((value: any) => ({ [column.displayField]: value }));\n }\n\n const key: any = Object.keys(row).find(\n (x) => x === column.field.toLowerCase()\n );\n // convert simple string into array\n if (!Array.isArray(row[key]) && row[key]) {\n row[key] = [{ [column.displayField]: row[key] }];\n }\n });\n }\n\n //when we add a new row, it set the default value\n if (column.value && Object.keys(this.newGridRow).length > 0) {\n const key = Object.keys(this.newGridRow).find(\n (x) => x === column.field\n );\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\n this.newGridRow[key] = column.value;\n }\n }\n });\n\n // Searching scenario\n if (change.rows?.currentValue && change.columns?.currentValue) {\n // Checks either column value is changes (i.e., column hidden scenario)\n if (\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\n JSON.stringify(this.columns).toLowerCase()\n ) {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n } else {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n\n setTimeout(() => {\n const classElement = document.getElementsByClassName('highlighted-row');\n if (classElement.length > 0) {\n classElement[0].scrollIntoView();\n }\n\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \n this.editAllRowsAtOnce();\n }\n }, 500);\n }\n const globalSearchbtn = document.getElementById('globalSearchbtn');\n if (globalSearchbtn) {\n this.searchGridFilter = false;\n }\n if(this.rowsData?.length > 0){\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n }\n }\n\n // set DisplayText when value is in curly brackets.\n setDisplayTextValue(column: IGridColumn) {\n this.rowsData?.forEach((row) => {\n if (\n column.type === EGridColumnType.LINK ||\n EGridColumnType.DIALOG ||\n EGridColumnType.IFRAME\n ) {\n const field = row[column.field + '_obj'];\n if (column.displayText && column.displayText.includes('{')) {\n const displayText = column.displayText\n .replace('{', '')\n .replace('}', '');\n if (displayText && field) {\n field.displayText = row[displayText.toLowerCase()];\n }\n } else if (column.displayText && field) {\n field.displayText = column.displayText;\n }\n }\n });\n }\n\n // change row key and value when using setGridRowPropValue function\n setRowValue(rowData: any) {\n Object.keys(rowData)?.forEach((row) => {\n if (\n rowData[row] &&\n this.typeOf(rowData[row]) === 'object' &&\n rowData[row]?.action?.field\n ) {\n if(rowData[row]?.extraField){\n delete rowData[row];\n } else {\n rowData[row] = rowData[row]?.text;\n }\n }\n });\n }\n\n setNumericMinMxFraction(column: any) {\n let digitInfo = '2';\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\n digitInfo = '0'\n }else if(column?.format?.formatParams?.digitsInfo){\n digitInfo = column.format.formatParams.digitsInfo;\n }\n return digitInfo;\n }\n\n // set the format of currency && number && decimal && percent\n setNumericFormat(column: any, row: any) {\n row = utilities.objConvertToLower(row);\n let value: any = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField.toLowerCase()]\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\n if (this.typeOf(value) === 'number' && value === 0) {\n value = value.toString();\n }\n let formatParams = column.format?.formatParams;\n let digitsInfo = formatParams?.digitsInfo;\n if (column.format && value) {\n switch (column.format?.type) {\n case EGridFormatType.CURRENCY:\n value = new Intl.NumberFormat(\n formatParams?.locale ? formatParams.locale : 'en-US',\n {\n style: 'currency',\n currency: formatParams?.currency ? formatParams.currency : 'USD',\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\n }\n )?.format(value);\n break;\n case EGridFormatType.DECIMAL:\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\n break;\n case EGridFormatType.PERCENT:\n if(!column.format?.formatParams?.allowCalculate){\n value = value+'%';\n }\n break;\n }\n }\n return value;\n }\n\n //Change dropdown vlue based on option label and optionvalue\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\n if (this.rowsData && this.rowsData.length > 0) {\n this.rowsData.forEach((row) => {\n if (Object.keys(row)?.find((key) => key === column.field)) {\n if (column) {\n column.optionLabel = column.optionLabel\n ? column.optionLabel\n : 'label';\n column.optionValue = column.optionValue\n ? column.optionValue\n : 'value';\n }\n const value = column.data?.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\n if (value && editedRow) {\n row[column.field] = value[column.optionValue];\n }else if(value && change === false){\n row[column.field] = value[column.optionLabel];\n }\n }\n });\n }\n }\n\n //manipulate checkbox string value to true and false.\n changeCheckboxStringValue() {\n if (\n this.columns &&\n this.rowsData &&\n this.rowsData.length > 0 &&\n this.columns.length > 0\n ) {\n this.rowsData.forEach((row) => {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.BOOLEAN) {\n if (\n (typeof (row[column.field] === 'string') &&\n (row[column.field] === '1' || row[column.field] === '0')) ||\n row[column.field] === 'Y' ||\n row[column.field] === 'N'\n ) {\n row[column.field] =\n row[column.field] === '1' || row[column.field] === 'Y'\n ? true\n : false;\n }\n }\n });\n });\n }\n }\n\n /**\n *\n * @param rowData\n * Passes data of clicked row to parent\n */\n handleRowClick(rowData: any) {\n this.rowClickData = rowData;\n this.onRowClick.emit(rowData);\n }\n\n /**\n *\n * @param columnData\n * Passes sorting information to parent on sort change\n */\n handleSortChange(event: any) {\n let sortDirection = null;\n let sortField: string = '';\n if (event.multisortmeta && event.multisortmeta[0].order) {\n sortDirection =\n event.multisortmeta[0].order == 1\n ? EGridSortDirection.ASC\n : EGridSortDirection.DESC;\n sortField = event.multisortmeta[0].field;\n }\n let sorts: IGridSort = {\n field: sortField,\n direction: sortDirection as EGridSortDirection,\n priority: 0,\n };\n this.onSortChange.emit(sorts);\n }\n\n /**\n *\n * @param event\n * Passes applied filters to parent on filter change\n */\n handleFilterChange(event: any) {\n this.columns.forEach((filter: any) => {\n if (!event.filters[filter.field]?.value) {\n filter.value = '';\n }\n });\n this.onFilterChange.emit(event);\n }\n\n /**\n *\n * @param event : Event\n * @param columnAction : IGridColumnAction\n * @param row : any\n * Stop the click event propagation to parent\n * Callbacks the row data to parent\n */\n\n /**\n * invoke onClick event & open Iframe in grid\n */\n gridIFrame(column: any, rows: any, row: any) {\n this.onClickEvent(column, row);\n const ref = this.dialogService.open(IframeComponent, {\n header: column.header,\n width: '80%',\n height: '80%',\n data: {\n value: rows,\n iFrameId: column.displayText ? column.displayText : column.field,\n },\n });\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n } else if (res && column.onChange) {\n column.onChange(res);\n }\n });\n }\n\n addNewRow(row: any, addRow: boolean = false) {\n this.componentTableRef = this.table;\n this.columns.forEach((column) => {\n if (\n column.filter &&\n column.component &&\n column.filter.type === 'calendar'\n ) {\n if (addRow) {\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\n } else {\n row[column.field + '_secondType'] = EGridColumnType.DATE;\n }\n }\n });\n this.rowClickData = row;\n this.addNewRowCheck = true;\n this.dropdownInput = false;\n this.sortDisabled = true;\n this.onGridRowAdd.emit(row);\n }\n\n /**\n * open Dialog in grid\n */\n openGridDialog(column: IGridColumn | any, row: any) {\n this.onClickEvent(column, row);\n setTimeout(() => {\n this.rowClickData = row;\n if(this.setDialogData || this.setDialogField !== column.field){\n column['parentDialogData'] = column.data?.data;\n this.setDialogData = false;\n this.setDialogField = column.field;\n }\n if(column.data && column.data.data && row[column.field + '_obj']){\n column.data.data = row[column.field + '_obj']?.dialogData;\n }\n if (column.component && column.data && this.rowClickData) {\n column.data.data = utilities.autoSetLookupData(\n column.parentDialogData,\n this.rowClickData\n );\n const ref = this.dialogService.open(column.component, column.data);\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n ref.onClose.subscribe((data: any) => {\n if (data && column.onReturn) {\n column.onReturn(data, this.rowClickData);\n } else if (data) {\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(data);\n }\n }\n });\n }\n }, 10);\n }\n\n browserCloseEvent(event: boolean = false){\n this.gridService.columnFocusedOut = event;\n }\n\n setMultiSelectData(column: IGridColumn, selectedValue:any){\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\n if(selectedValue && selectedValue?.toString()?.includes(',')){\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\n }else{\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\n }\n }\n return selectedValue;\n }\n\n /**\n * return conditional base value and title\n */\n setConditionBaseValue(row: any, column: any) {\n delete row['undefined'];\n let value:any;\n if(column.type == EGridColumnType.DATE){\n let newValue:any;\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\n newValue = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.field?.toLowerCase()]?.text\n } else {\n newValue = row[column.field];\n }\n\n if(newValue){\n if(column.timeOnly){\n value = this.setTimeFormat(newValue);\n } else {\n let format = '';\n if(column.format){\n if(column.format === EGridFormatType.SMALLDATE){\n format = 'MM/dd/yy';\n }else if(column.format === EGridFormatType.SHORTDATE){\n format = 'MM/dd/yyyy';\n }\n }\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\n }\n }\n } else {\n value = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField?.toLowerCase()]\n : row[column.field + '_obj'] &&\n row[column.field + '_obj'].displayText === null\n ? ''\n : row[column.field + '_obj']?.displayText\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\n : row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : row[column.field];\n }\n \n return value;\n }\n\n setDropdwonReadOnlyValue(row: any, column: any){\n delete row['undefined'];\n const value = row[column.displayField]\n ? row[column.displayField]\n : row[column.field];\n return value;\n }\n\n /**\n * open Delete Confirmation dialog when click on delete icon in Action column\n */\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\n event.stopPropagation();\n if (columnAction.tooltip.toLowerCase() === 'delete') {\n if (columnAction.confirmDialog === false) {\n columnAction.onClick(row);\n } else {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n columnAction.onClick(row);\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n } else {\n columnAction.onClick(row);\n }\n }\n\n /**\n *\n * @param event : LazyLoadEvent\n * Triggers everytime a server side filter is trigger\n */\n handleServerSideEvents(event: any) {\n this.gridfilter=event;\n setTimeout(() => {\n if(this.selectedColumns && this.selectedColumns.length > 0){\n this.selectedColumns.forEach((x: any) => {\n if (event.filters[x.field]) {\n event.filters[x.field].value = x.value;\n }\n });\n }\n \n this.loading = this.autoLoadData;\n this.serverFilters = {\n filters: this.lookupFilters\n ? this.gridService.getGridFilters(event, this.selectedColumns)\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\n ...(this.pagination && {\n page: this.gridService.getGridPagination(event),\n pageSize: event.rows || 10,\n }),\n };\n\n if (\n this.serverFilters?.filters &&\n this.serverFilters?.filters.length > 0 &&\n (this.allowCaching || this.softCaching)\n ) {\n if(!this.softCaching){\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\n }else{\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\n }\n }\n\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\n this.globalData\n );\n this.onServerSideEventChange.emit(serverFilterValues);\n }, 950);\n }\n\n /**\n * @param event\n * Passes applied pagination to parent on page change\n */\n handleServerSidePagination(event: IGridPaginationEvent) {\n this.onPageChange.emit(event);\n }\n\n selectedRow(row: any) {\n this.onRowCheckBox.emit(row);\n }\n\n // set time format\n setTimeFormat(date: any) {\n let value: any = '';\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\n value = utilities.setTimeInDate(date);\n } else {\n value = this.datePipe.transform(date, 'hh:mm a');\n }\n return value;\n }\n\n //open hyperlink in edit case\n openLink(url: any) {\n if (url) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n }\n\n setFormat(column: any, row: any) {\n let value: any = '';\n if (column.format) {\n value = this.datePipe.transform(\n column.displayText ? column.displayText : row[column.field],\n column.format\n );\n } else {\n value = column.displayText ? column.displayText : row[column.field];\n }\n return value;\n }\n\n /**\n *\n * @param row\n * Sets values to editable row\n * Row's data is preseved to prevent mutation\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\n */\n\n onRowEditInit(row: any) {\n let selectedRow = { ...row };\n Object.entries(selectedRow).forEach(([key, value]: any) => {\n this.columns.forEach((col: any) => {\n if(this.setDropdownFilter){\n this.setDropdownFilterValue(col, row, key);\n this.setDropdownFilter = false;\n }\n // set the autoComplete Value in edit mode\n if (\n col.type === EGridColumnType.AUTOCOMPLETE &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n value &&\n value.length > 0\n ) {\n let newValue = value.map((x: any) => x[col.displayField]);\n if (newValue?.toString()?.includes(';')) {\n row[col.field] = newValue\n ?.toString()\n ?.replaceAll(';', ',')\n ?.split(',')\n ?.map((x: any) => ({ [col.displayField]: x }));\n }\n }\n\n // set lookup control field based on display field.\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\n if (col.field === key) {\n row[col.field] = {\n text: row[col.displayField],\n value: row[col.field],\n };\n }\n }\n\n if (col.type === EGridColumnType.DROPDOWN) {\n let option = col?.data?.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n if (\n col.field?.toLowerCase() === key?.toLowerCase() &&\n col.type === EGridColumnType.DATE\n ) {\n value = value?.action ? value.text : value;\n if (row[col.field] !== null) {\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\n row[key].text = new Date(value as string);\n }else{\n row[key] = new Date(value as string);\n }\n }\n\n // check the Minutes pattern\n if (\n (col.showTime || col.timeOnly) &&\n col.minutesInterval &&\n row[key]\n ) {\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\n }\n }\n if (\n col.type === EGridColumnType.DIALOG &&\n col.filter?.type === 'calendar' &&\n col.field.toLowerCase() === key.toLowerCase()\n ) {\n if (value === null) {\n row[key] = new Date();\n } else {\n row[col.field] = new Date(value);\n }\n }\n if (\n col.type === EGridColumnType.LINK &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n (col.allowSave === true || col.allowSave === undefined)\n ) {\n if (col.editLink === true) {\n row[key] = row[col.field + '_obj']?.hyperlink;\n } else if (col.editLink === false || col.editLink === undefined) {\n row[key] = value;\n }\n }\n });\n });\n\n this.editRowsRecords[row[this.dataKey]] = { ...row };\n this.editingRowKeys[row[this.dataKey]] = true;\n this.checkAction = true;\n this.dropdownInput = true;\n this.rowClickData = row;\n this.inEditMode = true;\n this.cancelAllRecords = false;\n this.saveAllRecord = false;\n this.sortDisabled = true;\n this.onGridRowEdit.emit(row);\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * set dropdown filter value\n */\n setDropdownFilterValue(col: any, row: any, key: string) {\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\n if (Object.values(col).some((value) => value == key)) { \n let obj = col.dropDownProp;\n let newFilters: any = [];\n\n if (obj.filters && obj.filters.length > 0) {\n obj.filters.forEach((filter: any) => {\n let newFilter = { ...filter };\n let filterKey = Object.keys(row).find((key) => {\n let matchKey: string = '';\n if (\n filter.value?.includes('{') &&\n key.toLowerCase() ===\n filter.value\n ?.toString()\n ?.toLowerCase()\n .replace('{', '')\n .replace('}', '')\n ) {\n matchKey = key;\n }\n return matchKey;\n });\n if (filterKey) {\n newFilter.value = row[filterKey];\n }\n newFilters.push(newFilter);\n });\n }\n\n this.gridService.setDropdownData(\n col,\n obj.uniqueKey,\n obj.valueProp,\n obj.labelProp,\n newFilters,\n row\n );\n\n let option = col.data.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n }\n }\n\n /**\n *\n * @param row\n * Passes the edited or newly created data to parent\n * In case of newly created data, dataKey and isNew prop is removed\n */\n onRowEditSave(selectedRow: any) {\n this.selectedColumns.forEach((column: any) => {\n delete selectedRow[column.field + '-data'];\n delete selectedRow[column.field + '_secondType'];\n if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n column.displayField &&\n this.lookupObject\n ) {\n selectedRow[column.field] = this.lookupObject.value;\n }\n\n if (column.formatter) {\n let value: any = selectedRow[column.field];\n if (column.formatter === 'char') {\n value = value === true ? 'Y' : 'N';\n } else if (column.formatter === 'numeric') {\n value = value === true ? '1' : '0';\n }\n selectedRow = { ...selectedRow, [column.field]: value };\n }\n\n //convert date into time format\n if (\n column.type === EGridColumnType.DATE\n ) {\n if( column.timeOnly && column.saveAsString){\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\n }\n else if(!column.timeOnly && column.showTime){\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\n }\n }\n //convert multiselect array into string\n if (\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\n ) {\n selectedRow[column.field] = selectedRow[column.field]?.toString();\n }\n\n // Saving AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n column.displayField &&\n selectedRow[column.field]?.length > 0\n ) {\n let arr: any = [];\n selectedRow[column.field].forEach((row: any) => {\n if (row[column.displayField]) {\n arr.push(row[column.displayField]);\n }\n });\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\n }\n });\n\n let row: any = { ...selectedRow };\n let keys = Object.keys(row);\n keys.forEach((key) => {\n if (this.lookupObject && this.lookupObject.field) {\n row[this.lookupObject.field] = this.lookupObject.value;\n }\n if (key.includes('_obj')) {\n if (this.checkAction === false) {\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\n this.checkAction = true;\n }\n let obj: any = row[key];\n if (\n obj &&\n (obj.type === 'link' ||\n obj.type === 'iframe' ||\n obj.type === 'dialog')\n ) {\n delete row[key];\n }\n }\n });\n /**\n * just emit those fields who exist in the tabel\n */\n this.setRowValue(row);\n let obj: any = {};\n this.columns.forEach((column: any) => {\n if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n column.field &&\n typeof row[column.field] === 'object'\n ) {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n if (\n (column.allowSave === true || column.allowSave === undefined)\n ) {\n obj[column.field] = row[column.field];\n if (\n column.type === EGridColumnType.DIALOG &&\n column.filter?.type === 'calendar'\n ) {\n obj[column.field] = this.datePipe.transform(\n obj[column.field],\n 'yyyy-MM-ddT00:00:00.000Z'\n );\n }\n\n //Set Decimal Fraction Value\n if (\n column.format &&\n column.format.type === EFormatType.DECIMAL &&\n row[column.field] &&\n !row[column.field].toString().includes('.')\n ) {\n let digitsInfo = '.00';\n let zero = '0';\n const formatParams = column.format?.formatParams;\n const fracDigits = column?.format?.formatParams?.digitsInfo;\n if (fracDigits) {\n for (let i = 1; i < fracDigits; i++) {\n zero = zero + '0';\n }\n digitsInfo = '.' + zero;\n }\n obj[column.field] = row[column.field] + digitsInfo;\n }\n } else if (\n row.isNew &&\n (column.allowSave === false || column.editable === false)\n ) {\n delete row[column.field];\n }\n });\n delete selectedRow['undefined'];\n this.gridService.checkValidity(this.columns, row);\n const isValid = this.gridValidation(this.columns, row);\n if (isValid) {\n // set the grid updated/inserted data\n this.rowActionEvents(selectedRow);\n this.browserCloseEvent(false);\n if (row.isNew) {\n \n const { isNew, ...newRowObj } = row;\n if(!this.addDataKeyValue){\n delete newRowObj[this.dataKey];\n }\n \n if (this.saveAllRecord) {\n this.saveRecordArray.push(newRowObj);\n }else{\n this.onRowAdd.emit(newRowObj);\n }\n } else {\n if (this.saveAllRecord) {\n this.saveRecordArray.push(obj);\n } else {\n this.onRowUpdate.emit(obj);\n }\n }\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\n } else {\n this.editingRowKeys[row[this.dataKey]] = true;\n }\n // if all rows in read only mode then show editAllRows button. \n if(Object.values(this.editingRowKeys).every((value)=> !value)){\n this.inEditMode = false;\n this.hideEditAllRowsBtn = true;\n this.sortDisabled = false;\n }\n this.selectedColumns.forEach((column: any) => {\n // convert date into time\n if (\n selectedRow[column.field] &&\n (selectedRow[column.field]?.toString()?.includes('PM') ||\n selectedRow[column.field]?.toString()?.includes('AM'))\n ) {\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n if (\n column.type === EGridColumnType.DROPDOWN &&\n column.optionLabel &&\n column.optionValue\n ) {\n this.setDropdownValue(column, selectedRow);\n }\n });\n this.addNewRowCheck = false;\n }\n\n // check the validation of the field\n gridValidation(columns: any, row: any): boolean {\n if (!this.gridService.checkValidity(columns, row)) {\n let errorMessageDetails: string ='';\n columns?.forEach((column)=>{\n if(column.errorMessage){\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + ' , ' + column.errorMessage : column.errorMessage;\n }\n })\n let isRequired = columns.some(\n (column: any) => column.errorMessage && !row[column.field]\n );\n if (isRequired) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n return false;\n } else {\n return true;\n }\n }\n\n /**\n *\n * @param row : any\n * @param index : number\n * Clears out the edit row and replace with readable one\n */\n onRowEditCancel(row: any, index: number) {\n if (row.isNew) {\n this.rowsData.splice(index, 1);\n } else {\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\n delete this.editRowsRecords[row[this.dataKey]];\n }\n delete this.editingRowKeys[row[this.dataKey]];\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, row);\n }\n });\n this.inEditMode = false;\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\n this.sortDisabled = false;\n } \n this.addNewRowCheck = false;\n this.inlineRowCancel.emit(row);\n }\n\n /**\n *\n * @param row\n * Sends the row payload to parent for deletion\n */\n\n /**\n *set the gridData on row actions events\n */\n rowActionEvents(rowInfo, deleteRow: boolean = false){\n let action: string = '';\n let gridRowsData: any[] = [...this.rowsData];\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\n if(index > -1){\n if(deleteRow){ \n gridRowsData.splice(index, 1);\n this.rowsData = [...gridRowsData];\n action = 'delete';\n } else {\n if(this.addNewRowCheck){\n action = 'insert';\n }else{\n action = 'update';\n }\n if(this.onGridRowActions.observers.length !== 0){\n rowInfo['rowAction']= action;\n }\n gridRowsData[index] = rowInfo;\n }\n }\n this.rowsChange.emit(this.rowsData);\n this.onGridRowActions.emit(gridRowsData);\n }\n\n /**\n * open Delete confirmation dialog when trying to delete row\n */\n deleteRecord(row: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handleInlineCRUD',\n accept: () => {\n if (this.useServerSideEvents) {\n this.loading = true;\n }\n // set the grid deleted data \n this.rowActionEvents(row, true);\n this.onRowDelete.emit(row);\n this.confirmationService.close();\n this.inEditMode = false;\n this.loading = false;\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n /**\n * To set disabled the control\n */\n allowDisabled(column: any, row: any): boolean {\n let value: boolean = false;\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\n if (\n row[column.field]?.action &&\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\n ) {\n value = true;\n }\n } else if (column.disabled || column.editable === false) {\n value = true;\n }\n return value;\n }\n\n /**\n * To set aggregate in grid footer\n */\n setAggregateText(column: IGridColumn) {\n if (column?.aggregate) {\n column.aggregate.forEach((col: any) => {\n if (this.rowsData && this.rowsData.length > 0) {\n let columnType: EGridAggregate = col.type;\n if (columnType === EGridAggregate.COUNT) {\n const count = this.rowsData.length;\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\n }\n\n if (\n columnType === EGridAggregate.SUM ||\n columnType === EGridAggregate.AVERAGE\n ) {\n const colValues: number[] = this.getColumnValues(column);\n if (colValues && colValues.length > 0) {\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\n if (columnType === EGridAggregate.SUM) {\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\n }\n if (columnType === EGridAggregate.AVERAGE) {\n const average = sum / colValues.length || 0;\n col.aggrValue = this.setAggregateFooterText(\n col,\n average,\n 'Avg'\n );\n }\n }\n }\n } else {\n col.aggrValue = '';\n }\n });\n }\n }\n\n /**\n * set grid Aggregate values\n */\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\n const digitsInfo = column.format?.digitsInfo;\n const caption: string =\n column.caption?.length > 0 ? column.caption : defaultCaption;\n\n const decimalPoint = isDecimalFormat\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\n : value?.toFixed(0);\n return `${caption} ${decimalPoint\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\n }\n\n /**\n * set decimat and numeric values\n */\n setNumericValues() {\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n this.rowsData.forEach((row) => {\n if (column?.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\n } else {\n row[column.field] = row[column.field] / 100;\n }\n } else if (digitsInfo) {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\n }\n } else if (column?.format?.type === 'decimal') {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\n }\n });\n }\n })\n }\n }\n\n /**\n * get column value based on column field\n */\n getColumnValues(column: IGridColumn) {\n let arr: any = [];\n this.rowsData.forEach((row) => {\n let keys = Object.keys(row);\n keys.map((key) => {\n if (column.field === key) {\n arr.push(row[key]);\n }\n });\n });\n return arr;\n }\n\n /**\n *\n * Export to PDF\n */\n exportPdf() {\n var exportData = this.setExportData([...this.rowsData], true);\n let doc = new jsPDF('p', 'pt');\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\n doc.save('Export.pdf');\n }\n\n /**\n * Sub-function to set rows for export to Pdf, and Excel\n * @rows param for rows\n * @isExcel param for export to excel indication\n */\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\n const headings: any = this.columns.map((column) => column.field);\n rows.forEach((row) => {\n for (var prop in row) {\n if (!headings.includes(prop)) {\n delete row[prop];\n }\n if (isPdf) {\n row[prop] =\n !row[prop] && typeof row[prop] !== 'boolean'\n ? ''\n : row[prop].toString();\n }\n }\n });\n return { rows, headings };\n }\n\n /**\n *\n * Export to Excel\n */\n exportExcel() {\n let exportData: any = this.exportDataToExcel();\n import('xlsx').then((xlsx) => {\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\n\n let rowIndex = 0;\n exportData.forEach((row: any) => {\n let colIndex = 0;\n this.selectedColumns.forEach((col: any) => {\n const cellValue: string = row[col.header];\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\n const linkText: string = cellValue.split('|')[0];\n let linkUrl: string = cellValue.split('|')[1];\n if (linkUrl && !linkUrl.startsWith('http')) {\n if (!linkUrl.startsWith('/')) {\n linkUrl = '/' + linkUrl;\n }\n\n linkUrl =\n window.location.protocol +\n '//' +\n window.location.hostname +\n linkUrl;\n }\n\n const cellAddress = xlsx.utils.encode_cell({\n c: colIndex,\n r: rowIndex + 1,\n });\n\n worksheet[cellAddress] = {\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\n };\n }\n\n colIndex++;\n });\n\n rowIndex++;\n });\n\n const workbook = {\n Sheets: { sheet1: worksheet },\n SheetNames: ['sheet1'],\n };\n const excelBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array',\n });\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\n });\n }\n\n exportDataToExcel() {\n let arr: any = [];\n this.rowsData.forEach((row: any) => {\n let obj: any = {};\n this.selectedColumns.forEach((column: any) => {\n const gridHeader = column.header;\n if (column.type === EGridColumnType.LINK) {\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\n } else {\n obj[gridHeader] = row[column.field];\n }\n });\n\n arr.push(obj);\n });\n return arr;\n }\n\n /**\n *\n * Export to excel (sub-method)\n */\n saveAsExcelFile(buffer: any, fileName: string): void {\n import('file-saver').then((FileSaver) => {\n let EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\n saveAs(data, fileName);\n });\n }\n\n /**\n *set config data of lookup control dialog\n */\n setLookupDialogConfig(row: any, column: any, data: any) {\n let selection: string = '';\n if (row[column.field] && typeof row[column.field] === 'object') {\n selection = row[column.field].text;\n } else if (column.displayField && row[column.displayField]) {\n selection = row[column.displayField];\n } else {\n selection = row[column.field];\n }\n\n if (column.field && typeof row[column.field] === 'object') {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\n let obj = utilities.autoSetLookupData(data, row);\n row[column.field + '-data'] = obj;\n }\n return {\n rowData: row[column.field + '-data'],\n selection: selection,\n column: column,\n };\n }\n\n /**\n * open link on lookupControl control in read only mode when editLink set true\n */\n openLookupHyperlink(column: IGridColumn, row: any) {\n if (column.editLink === true && column.component) {\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\n obj['component'] = column.component;\n const ref = this.openLookupDialog(obj);\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n }\n });\n }\n }\n\n /**\n * open lookup Dialog\n */\n openLookupDialog(column: any) {\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\n const ref = this.dialogService.open(column.component, {\n ...columnData,\n data: {\n selection: column.selection,\n field: column.column.field,\n valueField: column.column.lookupControl?.data?.valueField,\n ...column.rowData,\n },\n });\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return ref;\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(column: any, row?: any) {\n this.onClickEvent(column, row);\n this.lookupObject = { text: '', value: '', field: '' };\n if (column.lookupControl) {\n let obj: any = this.setLookupDialogConfig(\n row,\n column,\n column.lookupControl.data?.data\n );\n obj['component'] = column.lookupControl.component;\n const ref = this.openLookupDialog(obj);\n ref.onClose.subscribe(\n (res) => {\n if (column.onReturn) {\n column.onReturn(res, row);\n }\n if (res) {\n let value = utilities.setDialogResponse(\n column,\n column.lookupControl,\n res\n );\n if (column.displayField) {\n row[column.field] = {\n text: res[column.displayField.toLowerCase()],\n value: res[column.field.toLowerCase()],\n };\n this.lookupObject = row[column.field];\n } else if (value && value.value) {\n value['field'] = column.field;\n row[column.field] = value.value;\n } else {\n row[column.field] = res[column.field.toLowerCase()];\n }\n }\n if (row[column.field] !== obj.selection) {\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(row);\n }\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n setFilterLookup(column: any) {\n this.gridService.setLookUpFilter(column, this.dialogService);\n }\n\n // Check calender value is changed or not\n calenderChangeEvent(column: any, row: any) {\n let valueChange: boolean = false;\n if (\n column.timeOnly &&\n this.datePipe.transform(row[column.field], 'hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\n ) {\n valueChange = true;\n } else if (\n column.showTime &&\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\n ) {\n valueChange = true;\n } else if (\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\n ) {\n valueChange = true;\n }\n if(valueChange){\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(row);\n }\n }\n this.calenderPreviousValue = '';\n }\n\n onFocusOutEvent(column: IGridColumn, row: any) {\n this.gridService.checkValidity([column], row);\n if (column.type === EGridColumnType.DATE) {\n this.calenderChangeEvent(column, row);\n }\n if (column.onFocusOut) {\n column.onFocusOut(row);\n } else if (\n column.onReturn &&\n column.type !== EGridColumnType.LOOKUP_INPUT\n ) {\n column.onReturn(row);\n }\n }\n\n setFilterFocusOut(col: any, filter?: any, event?: any) {\n setTimeout(\n () => {\n this.gridFilterObj = { column: col, filter: filter, event: event };\n const newColumn: any = { ...col };\n //change filter calender format\n if (newColumn.type === 'date' && newColumn.value) {\n newColumn.value = this.datePipe.transform(\n col.value.toString().trim(),\n 'yyyy-MM-dd'\n );\n }\n this.filterObj(newColumn); \n localStorage.setItem('applyFilter', JSON.stringify(false));\n },\n col.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\n);\n }\n\n filterObj(col: any) {\n const obj = {\n field: col.field,\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\n operator: col.operator ? col.operator : 'and',\n tableAlias: col.tableAlias ? col.tableAlias : '',\n value: col.value,\n };\n this.globalFiltersArray.push(obj);\n }\n\n applyEnterEvent(filter: any, event: any, column: any) {\n this.gridService.applyFilterEvent = true;\n this.autoLoadData = true;\n this.onApplyFilter.emit();\n this.filterObj(column);\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\n } else {\n filter(event.target.value);\n }\n }\n\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\n if (column.value === null) {\n this.removeNullFilters(column);\n this.setFilterFocusOut(column, filter, event);\n }\n }\n\n backspaceEvent(event: any, column: any) {\n if (\n event.key === 'Backspace' &&\n (column.value?.toString().length === 1 ||\n column.value?.toString() === '' ||\n column.value === null)\n ) {\n this.removeNullFilters(column);\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\n this.removeNullFilters(column);\n }\n }\n\n removeNullFilters(column: any) {\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n let arr = [...this.globalFiltersArray];\n let index = arr.findIndex((i) => i.field === column.field);\n arr.splice(index, 1);\n this.globalFiltersArray = arr;\n }\n }\n\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\n removingFilters(event: any, column: IGridColumn) {\n if (\n (event.key === 'Backspace' || event.key === 'Delete') &&\n column.value?.toString().length === 0\n ) {\n let searchFilters;\n if(!this.softCaching){\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\n }else{\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\n }\n if (searchFilters && searchFilters.filters) {\n if (searchFilters.filters.length > 0) {\n let index = searchFilters.filters.findIndex(\n (x: any) => x.field === column.field\n );\n if (index !== -1) {\n if (searchFilters.filters.length === 1) {\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\n } else {\n searchFilters.filters.splice(index, 1);\n if(!this.softCaching){\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\n }else{\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\n }\n }\n }\n }\n }\n }\n }\n\n // Add Click Button Event on Grid.\n onClickButton(column: any, row: any) {\n this.openGridDialog(column, row);\n }\n\n // Invoke onClick Event.\n onClickEvent(column: any, row: any) {\n if(column.type === EGridColumnType.LINK && column.editLink === false && column.editable !== false)\n {\n let a = document.createElement('a'); \n a.href = row[column.field + '_obj']?.hyperlink; \n a.target = \"_blank\";\n a.click();\n }\n if (column.type === EGridColumnType.DATE && row[column.field]) {\n this.calenderPreviousValue = row[column.field];\n } else if (\n !row[column.field] &&\n column.type === EGridColumnType.DATE &&\n (column.showTime || column.timeOnly) &&\n column.minutesInterval\n ) {\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\n }\n if (column && column.onClick) {\n column.onClick(row);\n }\n }\n\n // set the select value of multi-select\n showOption(column, row){\n if(row[column.field]){\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\n row[column.field] = [row[column.field]];\n } else if(row[column.field].includes(',')){\n row[column.field] = row[column.field].split(',');\n }\n }\n }\n\n onClearValue(column, row){\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\n row[column.field] = null;\n }\n }\n\n // Invoke onChange Event\n onChangeEvent(column: any, row: any) {\n // set dropdown displayField value base on optionLabel & optionValue.\n this.displayFieldDropdownValue(column, row);\n this.onClearValue(column, row);\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\n row[column.field] = event;\n }\n\n // set dropdown displayField value base on optionLabel & optionValue.\n displayFieldDropdownValue(column: any, row: any) {\n if (\n column?.type === EGridColumnType.DROPDOWN &&\n column.displayField &&\n column.displayField?.length > 0\n ) {\n const key: any = Object.keys(row)?.find(\n (rowInfo) =>\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\n );\n const displayFieldValue = column.data.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n if (key && displayFieldValue) {\n row[key] = displayFieldValue[column.optionLabel];\n }\n }\n }\n\n // Add autoSearch on Grid.\n autoSearch(event: any, column: any, row: any) {\n if (event && column && row) {\n column.onReturn(event.query, column, row);\n }\n }\n\n // Refresh grid\n refreshGrid(){\n this.reloadPage = interval(this.setGridRefreshTime).subscribe((x)=>{\n if(this.gridfilter == undefined){\n this.gridfilter= {filters: [], sorts:[]};\n }\n this.handleServerSideEvents(this.gridfilter);\n });\n } \n\n // Remove FilterValues\n cleargridFiltersValue() {\n const globalFilterClearValueBtn = document.getElementById(\n 'clearGlobalFilterBtn'\n );\n if (globalFilterClearValueBtn) {\n globalFilterClearValueBtn.click();\n }\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((col) => {\n col.value = null;\n this.filterObj(col);\n });\n }\n }\n\n editAllRowsAtOnce() {\n if(this.editRowPermission){\n if (this.getClassForEditAllRows('editRow')) {\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\n this.editAllRecord = true;\n }\n this.hideEditAllRowsBtn = false;\n this.sortDisabled = true;\n }\n }\n }\n\n saveAllRowsAtOnce() {\n this.getClassForEditAllRows('saveRow');\n }\n\n // reset the grid rowsValue to orignal values\n cancelAllRowsAtOnce() {\n this.rowsData = [...this.rowsDataCopy];\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n this.selectedColumns?.forEach((column)=>{\n if(column.type === EGridColumnType.DATE){\n this.rowsData?.forEach((row)=>{\n if(row[column.field]){\n row[column.field]= new Date(row[column.field]);\n }\n })\n }\n\n });\n this.onCancelAllRows.emit(this.rowsData);\n }\n\n getClassForEditAllRows(className: string = '') {\n let success: boolean = false;\n const getBtns: any =\n this.elementRef?.nativeElement?.getElementsByClassName(className);\n if (getBtns && getBtns.length > 0) {\n success = true;\n if (className === 'saveRow') {\n this.editAllRecord = false;\n this.saveAllRecord = true;\n const records$ = [];\n setTimeout(()=>{\n for (let item of getBtns) {\n const rowSave = new Promise((resolve, reject) => { \n item.click();\n resolve(item);\n });\n records$.push(rowSave);\n }\n Promise.all(records$).then((response) => {\n this.onRowUpdate.emit(this.saveRecordArray);\n this.saveRecordArray = [];\n });\n },20)\n } else {\n this.saveAllRecord = false;\n for (let item of getBtns) {\n if(className == 'cancelRow'){\n setTimeout(() => {\n item.click();\n }, 50);\n }else{\n item.click();\n }\n }\n }\n }\n return success;\n }\n\n //Focused calender input on select date\n selectDate(column: any) {\n document.getElementById(column.field)?.focus();\n }\n\n //apply filter on grid when search btn clicked\n applyGirdFilterBtn() {\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\n this.applyEnterEvent(\n this.gridFilterObj.filter,\n this.gridFilterObj.event,\n this.gridFilterObj.column\n );\n }\n }\n\n // invoke multiSelection click event\n multiCheckBoxOnclick(rowInfo: any) {\n if (rowInfo) {\n this.onMultiSelectionChange.emit(rowInfo);\n }\n }\n\n applyDropdownFilter(filter: any, event: any) {\n filter(event.target);\n }\n\n searchDropdownFilter(filter: any, event: any, column: any) {\n this.setFilterFocusOut(column, filter, event);\n this.dropDownFilter = { filter: filter, event: event, column: column };\n if (column.allowSearch !== true) {\n this.applyDropdownFilter(filter, event);\n }\n }\n\n lookupClearValue(column: any, row?: any) {\n if (row) {\n row[column.field] = '';\n } else {\n column.value = '';\n this.setFilterFocusOut(column);\n }\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n // invoke when click header checkbox filter\n clickCheckBoxFilter(column: IGridColumn) {\n if (this.editAllRecord) {\n if (\n column.type === EGridColumnType.BOOLEAN \n &&\n column?.filter?.type === 'checkbox' && column.filtering != false\n ) {\n this.rowsData.forEach((row) => {\n row[column.field] = column.value;\n });\n //this.onCheckBoxFilterClick.emit(column);\n }\n //this.onCheckBoxFilterClick.emit(column);\n }\n this.onCheckBoxFilterClick.emit(column);\n }\n //set header checkbox value for getting all columns on stay admin\n setHeaderCheckBoxValue(value: any){\n this.isIncludedAllColumns.emit(value);\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(column: any, row: any){\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if( year && year.length === 4){\n this.calendarFormat= 'mm/dd/yy';\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\n } else if(year && year.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n}\n\n\n\n","import { Injectable } from '@angular/core';\nimport {\n EValidator,\n IFormField,\n EFormControl,\n AddFormField,\n ISetFilter,\n IDropDownRequest,\n IListFilter,\n IReportBtn,\n IDynamicForm,\n} from '../models/form.model';\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\nimport { HyperlinkService } from '../services/hyperlink.service';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { RequestService } from './request.service';\nimport * as utilities from './utilities.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n public fieldFocusedOut:boolean = false;\n constructor(\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) { }\n\n checkValidity(formFields: IFormField[]): boolean {\n let isValid: boolean = true;\n\n formFields.map((item: IFormField) => {\n if (item.validations && !item.disabled) {\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\n item.value = item.value.value;\n }\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\n const valid =\n item.validations && typeof item.label === 'object'\n ? item.label.name\n : item.label;\n if (\n item.validations[i].type == EValidator.REQUIRED &&\n !item.value &&\n !item.hidden &&\n valid\n ) {\n isValid = item.value\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MINLENGTH &&\n item.value.length < item.validations[i].expression\n ) {\n isValid =\n item.value && item.value.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MAXLENGTH &&\n item.value.length > item.validations[i].expression\n ) {\n isValid =\n item.value && item.value.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MINIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(item.value < item.validations[i].expression){\n isValid =\n item.value && item.value.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MAXIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(item.value > item.validations[i].expression){\n isValid =\n item.value && item.value.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n item.value &&\n item.validations[i].type == EValidator.PATTERN &&\n !item.value.match(item.validations[i].expression)\n ) {\n isValid =\n item.value && item.value.match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.NUMERIC &&\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.PHONE &&\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.DECIMAL &&\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.EMAIL &&\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n item.value &&\n item.value.match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n addFormField(fieldInfo: IFormField): IFormField {\n if (!fieldInfo.label) {\n fieldInfo.label = fieldInfo.field;\n }\n\n const formField: any = {\n label: fieldInfo.label,\n field: fieldInfo.field,\n displayField: fieldInfo.displayField,\n control: fieldInfo.control,\n showOption: fieldInfo.showOption,\n column: fieldInfo.column,\n row: fieldInfo.row,\n minutesInterval: fieldInfo.minutesInterval,\n value: fieldInfo.value,\n format: fieldInfo.format,\n hidden: fieldInfo.hidden,\n permissions: fieldInfo.permissions,\n validations: fieldInfo.validations,\n id: fieldInfo.id,\n hyperlink: fieldInfo.hyperlink,\n data: fieldInfo.data,\n lookupControl: fieldInfo.lookupControl,\n componentControl: fieldInfo.componentControl,\n optionLabel: fieldInfo.optionLabel,\n optionValue: fieldInfo.optionValue,\n saveAsString: fieldInfo.saveAsString,\n showAllValue: fieldInfo.showAllValue,\n onClick: fieldInfo.onClick,\n onReturn: fieldInfo.onReturn,\n onFocusOut: fieldInfo.onFocusOut,\n onChange: fieldInfo.onChange,\n tables: fieldInfo.tables,\n disabled: fieldInfo.disabled,\n disabledText: fieldInfo.disabledText,\n timeOnly: fieldInfo.timeOnly,\n monthOnly: fieldInfo.monthOnly,\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\n height: fieldInfo.height,\n showBottomBorder: fieldInfo.showBottomBorder,\n allowSearch: fieldInfo.allowSearch,\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\n SetfileTypes: fieldInfo.SetfileTypes,\n icon: fieldInfo.icon,\n color: fieldInfo.color,\n card: fieldInfo.card,\n uniqueKey: fieldInfo.uniqueKey,\n azureContainer: fieldInfo.azureContainer,\n class: fieldInfo.class\n };\n\n return formField;\n }\n\n addCheckbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CHECKBOX;\n return this.addFormField(fieldInfo);\n }\n\n addTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n fieldInfo.disabled = true;\n fieldInfo.showBottomBorder = true;\n return this.addFormField(fieldInfo);\n }\n\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NUMERIC;\n return this.addFormField(fieldInfo);\n }\n\n addSpaceField(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.SPACER;\n return this.addFormField(fieldInfo);\n }\n\n addNewLine(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.BREAK_LINE;\n return this.addFormField(fieldInfo);\n }\n\n addTextArea(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.TEXTAREA;\n return this.addFormField(fieldInfo);\n }\n \n // Adding Report button for DynamicForm\n addReportBtn(fieldInfo: IReportBtn) {\n fieldInfo.control = EFormControl.REPORT;\n return fieldInfo;\n }\n\n addNoteField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NOTE_FIELD;\n return this.addFormField(fieldInfo);\n }\n\n addHyperlink(fieldInfo: AddFormField) {\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\n fieldInfo.control = EFormControl.HYPERLINK;\n return this.addFormField(fieldInfo);\n }else{return this.hyperlinkService.buildUrl(\n fieldInfo?.hyperlink?.linkId,\n fieldInfo.hyperlink?.params\n ).then((res: any) => {\n const params = fieldInfo?.hyperlink?.params;\n const link = res;\n if(res && params){\n Object.keys(params).forEach((key)=>{\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\n res = res.replace('{{'+key+'}}', params[key])\n } \n })\n }\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\n fieldInfo.hyperlink.link = res;\n }\n fieldInfo.control = EFormControl.HYPERLINK;\n let obj: any = this.addFormField(fieldInfo);\n obj['orignalLink'] = link;\n return obj;\n });\n }\n}\n\n addCalendar(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CALENDAR;\n return this.addFormField(fieldInfo);\n }\n\n // add AutoComplete for Form\n addAutoComplete(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\n return this.addFormField(fieldInfo);\n }\n\n // Search AutoComplete Data for form\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord: boolean = response.records.some((record: any)=> record[formField.displayField] && record[formField.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[formField.displayField]: search});\n }\n }\n formField.data = [...response.records];\n });\n }\n\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\n fieldInfo.control = EFormControl.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\n }\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\n return this.dropdownService\n .setDropDownList(\n uniqueKey,\n valueProp,\n labelProp,\n filters\n )\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addFormField(fieldInfo);\n })\n .catch((error: any) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n addLookUp(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDialog(fieldInfo: AddFormField): IFormField {\n return this.addLookUp(fieldInfo);\n }\n\n addComponent(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.COMPONENT;\n return this.addFormField(fieldInfo);\n }\n\n addHeader(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SECTION_HEADER;\n fieldInfo.class = 'form-header';\n return this.addFormField(fieldInfo);\n }\n\n addMultiSelect(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.MULTISELECT;\n return this.addFormField(fieldInfo);\n }\n\n addFileUpload(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.FILE_UPLOAD;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayFile(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.DISPLAY_FILE;\n return this.addFormField(fieldInfo);\n }\n\n // Adding OnClick Button Function for DynamicForm\n addButton(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.ADD_BUTTON;\n return this.addFormField(fieldInfo);\n }\n\n // Adding Switch Function for DynamicForm\n addSwitch(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SWITCH;\n return this.addFormField(fieldInfo);\n }\n\n // start add new card functionality\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\n fieldInfo.control = EFormControl.CARD;\n if (cardData && cardData.uniqueKey) {\n if(cardData.sorts?.length > 0){\n cardData.sorts.forEach((res) =>{\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\n });\n } \n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\n return this.getCardList(uniqueKey, filters, sorts)\n .then((res: any) => {\n fieldInfo.card.data = res.records;\n return this.addFormField(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n // load component on form\n setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\n formSections?.forEach((section)=>{\n section.fields.forEach((field:any)=>{\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\n let keys = Object.keys(value);\n keys.forEach((key)=>{\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\n });\n utilities.changeDynamicFormState(id, field.componentControl.data);\n };\n });\n });\n }\n\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\n return new Promise((resolve, reject) => {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\n .subscribe(\n (response: any) => {\n if (response) {\n return resolve(response);\n } else {\n return resolve([]);\n }\n },\n ({ error }: any) => {\n reject(error);\n }\n );\n });\n }\n // End add new card functionality\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class NotesComponent implements OnInit {\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) { }\n\n public note: string = '';\n public disabledText: boolean = false;\n\n ngOnInit(): void {\n this.note = this.config.data.value ?? '';\n this.disabledText = this.config.data.disabledText;\n }\n\n handleCancel() {\n this.ref.close();\n }\n\n handleOk() {\n this.ref.close(this.note);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\nimport { FormService } from '../../../services/form.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { NotesComponent } from '../../shared/notes/notes.component';\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { IDictionary } from '../../../models/common.model';\nimport { Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DatePipe } from '@angular/common';\nimport { GridService } from '../../../services/grid.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\n\n@Component({\n selector: 'se-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss']\n})\nexport class FormComponent implements OnInit {\n @Input() stickyActions: boolean = true;\n @Input() form: IDynamicForm;\n @Input() hideSaveButton: boolean = false;\n @Input() hideCancelButton: boolean = false;\n @Input() loading:boolean = false;\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer: QueryList<ViewContainerRef>;\n\n dynamicCase = EFormControl;\n permissionType = EPermissionType;\n roles: string[] = [];\n isFormDisabled: boolean = false;\n isFormHidden: boolean = false;\n componentsList: IDictionary[] = [];\n fileUploadUrls: any;\n showfileUploadError: boolean = false;\n cardList: IDynamicCard;\n calenderPreviousValue: string = '';\n defaultDate: string = '';\n lookupFocusOut: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n\n // apply checked/unChecked prop for CheckBox of the Form\n checked: boolean = true;\n unChecked: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private formService: FormService,\n private alertService: AlertService,\n private sanitizer: DomSanitizer,\n public dialogService: DialogService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private el: ElementRef,\n private datePipe: DatePipe,\n private gridService: GridService,\n private pageLoggerService: PageLoggerService,\n ) { }\n\n ngOnInit(): void {\n }\n \n // browser tab close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event:any) {\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\n return false;\n }else{\n return true;\n }\n }\n\n ngOnChanges() {\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n // start cardList reference break functionality\n let formValues = { ...this.form };\n formValues.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field:any) => {\n\t // convert string time into date\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\n field['previousValue'] = field?.value;\n }\n if(field?.control === EFormControl.CALENDAR &&\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\n field.value = utilities.setTimeInDate(field.value);\n }\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\n const value = field?.value.map((value: any)=> value[field?.displayField]);\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\n }\n }\n // convert the multiSelect string value in array\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\n if(field.value?.toString()?.includes(\",\")){\n field.value = field.value?.toString()?.split(\",\");\n }else {\n field.value = [field.value];\n }\n }\n if (field?.control === EFormControl.CARD) {\n this.form = {};\n setTimeout(() => {\n field?.card?.data?.forEach((x: any) => {\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\n x.dynamicForm = {\n formSections: JSON.parse(\n JSON.stringify(field?.card?.formSections)\n ),\n };\n };\n });\n this.form = formValues;\n }, 500);\n }\n // End cardList reference break functionality\n if (field?.control === EFormControl.CHECKBOX) {\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\n }\n });\n }\n });\n // apply user role permissions on form\n this.roles = this.authService.getUserRoles();\n this.applyUserPermissions();\n this.applyRequiredFieldValidation();\n this.removeWhiteSpaces();\n this.setHyperlinkComponentRoute();\n setTimeout(() => {this.setCalanderWidth();}, 3000);\n }\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(formField: IFormField){\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n}\n\n// set percent and decimal values\n setnumericvalues() {\n this.form?.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field?.format?.type === 'percent') {\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\n } else {\n field.value = field.value / 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n } else if (field?.format?.type === 'decimal') {\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\n }\n }\n })\n }\n })\n }\n\n /**\n * Checks if form has any field with dynamic component;\n * Creates component instance using componentFactoryResolver\n * Injects component through viewRef.createComponent()\n * Passes data to component\n * Subscribes to the events passed to the components\n * Finally forces Angular to detech changes\n */\n loadDynamicComponents() {\n this.componentsList = [];\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field:any, fieldIndex) => {\n if (field.control === EFormControl.COMPONENT) {\n const viewRef:any = this.dynamicComponentContainer.find(\n (x) =>\n x.element.nativeElement.id ==\n `${formSection.name}-${fieldIndex}`\n );\n const {\n component: Component,\n data,\n handlers,\n } = field.componentControl;\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\n Component\n );\n // Passing data to component\n const componentRef = viewRef?.createComponent(componentFactory);\n if(componentRef){\n Object.entries(data ?? {}).forEach(([key, value]) => {\n componentRef.instance[key] = value;\n });\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\n // Subscribes to the events passed to the components\n if (handlers) {\n Object.entries(handlers).forEach(([event, handler]:any) => {\n (componentRef.instance[\n event\n ] as EventEmitter<any>)?.subscribe((response) => {\n handler(response);\n });\n });\n }\n }\n // invoke change detection\n this.cdr.detectChanges();\n }\n });\n });\n }\n\n //invoke when file upload OR delete a file\n fileOnchangeEvent(){\n let cardControl: boolean = false;\n this.form?.formSections?.forEach((formSection)=> {\n if(formSection?.fields?.some((formField: any)=> formField?.control === EFormControl.CARD)){\n cardControl = true;\n }\n });\n setTimeout(() => {\n if(cardControl){\n this.loadDynamicComponents();\n }\n }, 1000);\n }\n\n ngAfterViewInit() {\n // load dynamic components if exist in form\n setTimeout(() => {\n this.setnumericvalues()\n this.onDynamicFormStateChange();\n this.loadDynamicComponents();\n }, 500);\n }\n\n removeWhiteSpaces(){\n this.form?.formSections?.forEach((section) =>{\n if(section.class) section.class = section.class.replace(/\\s/g, '');\n })\n }\n\n setHyperlinkComponentRoute() {\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field) => {\n if (\n field.control === EFormControl.HYPERLINK &&\n field.hyperlink?.component\n ) {\n this.router.resetConfig([\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\n ...this.router.config,\n ]);\n }\n });\n });\n }\n\n browserTabCloseEvent(event: boolean = false){\n this.formService.fieldFocusedOut = event;\n }\n\n /**\n * Listens any change in Dynamic Form component State\n */\n onDynamicFormStateChange() {\n utilities.onDynamicFormStateChange().subscribe((response) => {\n if (response.id && response.data) {\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\n if (componentRefObj){\n Object.entries(response.data ?? {}).forEach(\n ([key, value]) => {\n componentRefObj.value.instance[key] = value;\n }\n );\n componentRefObj.value.instance.ngOnInit();\n }\n }\n });\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.form && this.form.formSections) {\n let totalFields: number = 0;\n let disabledFields: number = 0;\n let hiddenFields: number = 0;\n\n this.form.formSections.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField) => {\n let permissions: any = formField.permissions;\n let sectionPermissions: any = [];\n if (!permissions) sectionPermissions = formSection.permissions;\n if (!permissions) permissions = this.form.permissions;\n let hasValidEditPermission = false;\n\n if (sectionPermissions && sectionPermissions.length > 0) {\n sectionPermissions.forEach((permission: any) => {\n let isValid: boolean = false;\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formSection.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n formField.disabled = false;\n formSection.hidden = false;\n } else {\n formSection.accordionDisabled = true;\n formSection.disabled = true;\n formField.disabled = true;\n }\n }\n });\n });\n } else if (permissions && permissions.length > 0){\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n formField.disabled = false;\n formField.hidden = false;\n } else {\n if (\n formField.permissions &&\n formField.permissions.length > 0\n ) {\n formSection.disabled = false;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n } else {\n formSection.disabled = true;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n }\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (formField.disabled) {\n disabledFields++;\n }\n\n if (formField.hidden) {\n hiddenFields++;\n }\n });\n }\n });\n\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n /**\n * Open IFrame in hyperlink Control\n */\n sectionDisabled(formSection:IFormSection){\n if( formSection.disabled ) {\n formSection.fields.map((field:IFormField) => {\n field.disabled=true;\n });\n return formSection;\n } else {\n return formSection;\n }\n }\n\n loadIFrame(formField: IFormField){\n this.handleClickEvent(formField);\n const ref = this.dialogService.open(IframeComponent, {\n header: 'Hyperlink',\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\n });\n\n ref.onClose.subscribe((res) => {\n if (res) {\n if(formField.onReturn){\n formField.onReturn(res);\n }\n }\n });\n }\n\n /**\n * open Dialog in hyperlink Control\n */\n hyperlinkDialog(formField: IFormField) {\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\n var value = formField.hyperlink.params;\n window.open('hyperlink'+formField.label);\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\n this.router.navigate(['hyperlink'+formField.label], {\n queryParams: formField.hyperlink.params,\n });\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\n this.onClickEvent(formField);\n const dialog = this.dialogService.open(formField.hyperlink.component, {\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\n data: formField.hyperlink.params,\n });\n const componentName = formField.hyperlink?.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n dialog.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n }\n\n /**\n * open Iframe on Label\n */\n loadLabelControlIFrame(formField:any){\n const ref = this.dialogService.open(IframeComponent, {\n header: formField.label.name,\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n\n if (formField && formField.onClick) {\n formField.onClick();\n };\n }\n\n /**\n * find the required field in form\n */\n applyRequiredFieldValidation() {\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n this.form.formSections.forEach((section) => {\n section.fields.forEach((field) => {\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((valid) => {\n if (valid.type === EValidator.REQUIRED) {\n field.requiredField = true;\n }\n })\n }\n })\n })\n }\n }\n\n setFileUrls(fileUrls: any){\n if(fileUrls && fileUrls.length > 0){\n this.fileUploadUrls = fileUrls;\n this.showfileUploadError = false;\n }\n }\n\n onSaveForm() {\n let validity = true;\n let errorMessageDetails = '';\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n if (!this.formService.checkValidity(formSection.fields)) {\n formSection.fields?.forEach((formField: any)=>{\n if(formField.errorMessage){\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + \" , \" + formField.errorMessage : formField.errorMessage;\n }\n })\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\n if (validity && field) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else{\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'INVALID FIELD'\n );\n }\n validity = false;\n }\n\n formSection.fields.forEach((field: any)=>{\n // set uploadFile URL in FormField in case of FILE_UPLOAD\n if (field.control === EFormControl.FILE_UPLOAD) {\n field.value = this.fileUploadUrls;\n \n if(field.validations && field.validations.length > 0){\n field.validations.forEach((x:any)=>{\n if(x.type === EValidator.REQUIRED && !field.value){\n this.showfileUploadError = true;\n }\n })\n }\n }\n\n if(field.control === EFormControl.CARD){\n if(field.card && field.card.data?.length > 0){\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\n if(selectedData && selectedData.length > 0){\n field.card.data = selectedData;\n }\n }\n }\n })\n }\n });\n if (validity) {\n // Save grid on formSave Button\n const saveAllGrid = document.getElementById('saveAllGridValues');\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\n if (saveAllGrid) {\n saveAllGrid.click();\n } else if (getBtns && getBtns.length > 0) {\n for (let btn of getBtns) {\n btn?.click();\n }\n }\n let tempValue: any = []\n // set value as 1 or 0 in case of checkbox\n this.form.formSections?.forEach((formSection)=>{\n if (formSection.fields && validity) {\n formSection.fields.forEach((field: any) => {\n if ((field.value === '') || (field.value === undefined)) {\n field.value = null;\n }\n //convert date into time as string\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\n }\n // set value of autoComplete as strings\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\n const value = field.value.map((value: any)=> value[field.displayField])\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\n tempValue = value;\n field.value = value.toString().replaceAll(\",\",\";\");\n }\n }\n // convert multiSelect array into string\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\n field.value = field.value?.toString();\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value ? 1 : 0;\n }\n });\n }\n });\n this.browserTabCloseEvent(false)\n setTimeout(() => {\n this.saveForm.emit(this.form.formSections);\n }, saveAllGrid ? 80 : 0);\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value === 1 ? true : false;\n }\n\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\n this.fileOnchangeEvent();\n }\n });\n }\n });\n }\n }\n\n onCancelForm() {\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\n if(res[0].detail === \"Yes\"){\n this.browserTabCloseEvent(false);\n this.gridService.columnFocusedOut = false;\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n })\n }else{\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n }\n \n lookupClearValue(formField: IFormField){\n if(formField.value) {\n formField.value = ''; \n this.browserTabCloseEvent(true);\n }\n if(formField.onChange){\n formField.onChange(formField);\n }\n this.formService.checkValidity([formField])\n }\n\n /**\n * set calender width\n */\n setCalanderWidth() {\n const calanderElement = document.querySelectorAll(\".p-calendar\");\n let form: any = document.querySelector(\"form\");\n let width = form?.clientWidth;\n calanderElement?.forEach((calander:any) => {\n const calanderOfsetLeft = calander.offsetLeft;\n if(calanderOfsetLeft <= (width / 2)){\n calander.classList.add('open-right-side');\n }\n });\n }\n\n /**\n * set the dynamic dialog data\n */\n setDialogData(formField: IFormField, data: any): any {\n if (data && formField) {\n let value: any;\n data = utilities.objConvertToLower(data);\n let selection: string = '';\n if (formField.value && typeof formField.value === 'object') {\n if (\n formField.value &&\n formField.value.text &&\n formField.value.text.toString().trim()\n ) {\n selection = formField.value.text?.toString()?.trim();\n if(formField.displayField){\n value = formField.value?.value?.toString()?.trim();\n }\n }\n } else if (formField.value && formField.value.toString().trim()) {\n selection = formField.value?.toString()?.trim();\n }\n const componentName = data.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return this.dialogService.open(data.component, {\n ...data.data,\n data: {\n selection: selection,\n field: formField.field,\n value: value,\n valueField: data.data?.valueField,\n ...data.data.data,\n },\n });\n }\n }\n \n tabFocusEvent(formField: any) {\n const className = this.el.nativeElement.querySelector('.'+formField.field);\n if (className) {\n className.click();\n }\n }\n\n onClickEvent(formField: IFormField) {\n if (formField.onClick) {\n formField.onClick(formField);\n }\n }\n\n /**\n * open dialog on lookupControl label\n */\n selectLookupLabel(formField: any) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl\n ) {\n const ref: any = this.setDialogData(\n formField,\n formField.label.labelControl.lookupControl\n );\n ref.onClose.subscribe(\n (res: any) => {\n if(res){\n formField.value = utilities.setDialogResponse(\n formField,\n formField?.label.labelControl.lookupControl,\n res\n );\n }\n this.onFocusOutEvent(formField);\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n this.onClickEvent(formField);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(formField: IFormField) {\n if(formField.lookupControl) {\n this.lookupFocusOut = true;\n let value = formField.value;\n const ref = this.setDialogData(formField, formField.lookupControl);\n ref.onClose.subscribe(\n (res: any) => {\n if(formField.field){\n document.getElementById(formField.field)?.focus();\n }\n if(res){\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\n this.lookupFocusOut = false;\n if (formField.onReturn) formField.onReturn(formField.value, res);\n }\n this.onFocusOutEvent(formField);\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\n value = typeof value === 'object' ? value.text : value;\n if (formFieldValue !== value) {\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.onChange(formField);\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n /**\n * onClick event invoked && open Dialog on lookupControl field/label\n */\n handleClickEvent(formField: IFormField) {\n this.onClickEvent(formField);\n\n if (formField && formField.lookupControl) {\n this.selectLookupLabel(formField);\n this.selectLookupField(formField);\n }\n }\n\n /**\n * set Calender Date Format && set Date Minute interval\n */\n setCalenderDate(formField: IFormField){\n if (formField.control === EFormControl.CALENDAR) {\n // convert time into date format\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\n formField.value = utilities.setTimeInDate(formField.value);\n }\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\n }\n this.calenderPreviousValue = formField.value;\n }\n }\n calendarChangeValue(formField: any){\n if(formField.value !== formField.previousValue){\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.previousValue = formField.value;\n formField.onChange(formField);\n }\n }\n }\n\n /**\n * invoked section Clicked event\n */\n clickedSection(section:IFormSection){\n this.sectionClickedEvent.emit(section);\n }\n\n /**\n * open dialog in Note_Field conrtrol\n */\n handleNoteFieldDialog(formfield: IFormField) {\n const dialogRef = this.dialogService.open(NotesComponent, {\n header: formfield.label as string,\n width: '50%',\n data: {\n value: formfield.value,\n disabledText: formfield.disabledText,\n },\n });\n\n dialogRef.onClose.subscribe(\n (data: any) => {\n if (data && formfield.onReturn) {\n formfield.onReturn(data);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setClassName(formField: IFormField): string {\n if (formField.hidden) return ' hidden';\n else return '';\n }\n\n autoSearch(event: any, formField: any) {\n if(formField && event){\n formField.onReturn(event.query, formField);\n }\n }\n\n /**\n * invoked onFocusOut Event\n */\n onFocusOutEvent(formField: IFormField) {\n let record: any = {};\n this.form.formSections?.forEach((section)=>{\n section.fields.forEach((formField)=>{\n if(formField.field){\n record[formField.field] = formField.value;\n }\n });\n });\n utilities.setHyperlinkParamValue(record, this.form);\n this.formService.checkValidity([formField]);\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\n formField.onFocusOut(formField);\n }\n }\n\n onBackSpaceEvent(formField:IFormField){\n if(typeof(formField.value)==='object'){\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\n if(formField.value.text.length===1){\n formField.value=undefined;\n this.formService.checkValidity([formField]);\n }\n }\n if(formField.value && formField.value.length===1){\n formField.value=undefined;\n this.formService.checkValidity([formField]);\n }\n }\n\n /**\n * clear the dropdown value when click on x\n */\n onClearValue(formField: IFormField, event: any) {\n this.formService.checkValidity([formField]);\n this.onChangeEvent(formField);\n this.dropDownChangeEvent.emit(formField);\n if (!event.value) {\n this.onFocusOutEvent(formField);\n }\n }\n\n clearDropdownValue(formField:any){\n this.onClickEvent(formField);\n }\n\n /** \n * Invoke onChange Event when Value Changed\n */\n onChangeEvent(formField: IFormField){\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.onChange(formField);\n }\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * convert unSafe link into safe link\n */\n sanitizeUrl(url: string){\n let linkUrl:any = url; \n if(linkUrl){\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\n }\n return linkUrl;\n }\n\n selectedCardClickEvent(data: any){\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n this.form.formSections.forEach((section: any)=>{\n section.fields.forEach((field: any)=>{\n if(field.control === EFormControl.CARD){\n if(field.card && field.card.data?.length > 0){\n let obj = field.card.data[data.index];\n if(obj) {\n if(obj.selectedCard){\n delete obj.selectedCard;\n } else {\n obj['selectedCard'] = 'card-active';\n }\n }\n }\n }\n })\n });\n }\n if(data.selectedCard){\n data['selectedCard'] = '';\n } else {\n data['selectedCard'] = 'card-active';\n }\n }\n\n}\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ISelectItem } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent implements OnChanges {\n @Input() options: ISelectItem[] = [];\n @Input() value: ISelectItem;\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\n public selectedOption: any;\n\n constructor() { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.options.length) {\n if (this.value) {\n this.selectedOption = changes['value'].currentValue.toString().trim();\n } else {\n this.selectedOption = this.options[0];\n this.valueChange.emit(this.selectedOption.value);\n }\n }\n }\n\n handleValueChange(event: { value: string }) {\n this.valueChange.emit(event.value);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'se-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.css']\n})\nexport class GalleryComponent {\n \n @Input() galleryImage: any;\n @Input() width: string;\n\n responsiveOptions: any[] = [\n {\n breakpoint: '1024px',\n numVisible: 5\n },\n {\n breakpoint: '768px',\n numVisible: 3\n },\n {\n breakpoint: '560px',\n numVisible: 1\n }\n ];\n\n constructor() { }\n}","import { Directive, Input, HostListener } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n selector: '[pAddRow]',\n})\nexport class AddRowDirective {\n @Input() table: Table;\n @Input() newRow: any;\n @Input() id: string;\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n // Insert a new row\n if (this.table && this.table.value) {\n this.table.value.unshift({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n }\n\n // Set the new row in edit mode\n this.table.initRowEdit({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n\n event.preventDefault();\n }\n}\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\n\nexport const MenuFilters: IMenuFilter = {\n [GridFilterControlType.INPUT]: [\n { label: 'Starts with', value: 'startsWith' },\n { label: 'Contains', value: 'contains' },\n { label: 'Not contains', value: 'notContains' },\n { label: 'Ends With', value: 'endsWith' },\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n ],\n [GridFilterControlType.NUMERICINPUT]: [\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n { label: 'Less than', value: 'lt' },\n { label: 'Less than or equal to', value: 'lte' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Greater than or equal to', value: 'gte' },\n ],\n [GridFilterControlType.CALENDAR]: [\n { label: 'Date is', value: 'dateIs' },\n { label: 'Date is not', value: 'dateIsNot' },\n { label: 'Date is before', value: 'dateBefore' },\n { label: 'Date is after', value: 'dateAfter' },\n ],\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\nimport { MenuFilters } from '../../base/grid/grid.constant';\n\n@Component({\n selector: 'se-filter-menu',\n templateUrl: './filter-menu.component.html',\n styleUrls: ['./filter-menu.component.scss'],\n})\nexport class AppFilterMenuComponent implements OnInit {\n public isMenuOpen: boolean = false;\n public filterOptions: ISelectItem[] = [];\n\n @Input() globalFilter: IGlobalFilter;\n constructor() { }\n\n ngOnInit(): void {\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\n }\n\n toggleMenu() {\n this.isMenuOpen = !this.isMenuOpen;\n }\n\n handleFilterSelection({ value }: ISelectItem) {\n this.isMenuOpen = false;\n this.globalFilter.matchMode = value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { IMenu } from '../../../models/menu.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'se-menu-bar',\n templateUrl: './menu-bar.component.html',\n styleUrls: ['./menu-bar.component.scss'],\n})\nexport class MenuBarComponent implements OnInit {\n @Input() hiddenPanelMenu: boolean = true;\n @Input() toolTip: string;\n @Input() menuBackColor: string;\n @Input() menuItems: IMenu[];\n @Input() menuFooter: string;\n @Input() menuTitle: string;\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\n public menuBarItems: MenuItem[] = [];\n toggleMenu: boolean = false;\n roles: string[] = [];\n isMenubarHidden: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private cookieService: CookieService,\n public router: Router,\n ) { }\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n const toggleMenu = localStorage.getItem('toggleMenu');\n const cookieValue = this.cookieService.get('toggleMenu'); \n\n if (toggleMenu) {\n this.toggleMenu = JSON.parse(toggleMenu);\n }else if(cookieValue){\n this.toggleMenu = JSON.parse(cookieValue);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions\n this.applyUserPermissions();\n\n this.menuBarItems = this.menuItems.map((x) => ({\n ...x,\n style: x.hidden ? { display: 'none' } : x.style,\n }));\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \n }\n\n clickEvent() {\n this.onClickEvent.emit();\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.menuItems) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.menuItems.forEach((menu) => {\n if (menu.items) {\n menu.items.forEach((item) => {\n let permissions: any = item.permissions;\n if (!permissions) permissions = menu.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.hidden = true;\n }\n } \n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n item.style = { display: 'none' };\n hiddenItems++;\n }\n });\n\n // if all items of menu is hidden then hide menu as well\n menu.hidden =\n menu.items.length === menu.items.filter((x) => x.hidden).length;\n }\n });\n\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n}\n\n","import { Type } from '@angular/core';\nimport { IPermission } from './user-info.model';\n\nexport const ESideBar = {\n LEFT: 'left-sidebar',\n RIGHT: 'right-sidebar',\n};\n\nexport interface ISidebar {\n icon: string;\n action?: string;\n section: string;\n component?: Type<any>;\n [key: string]: any;\n data?: IData;\n onReturn?: (data: any) => any;\n onClick?: (value: any) => void;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n id?: string;\n tooltip?: string\n iFrame?: IFrame;\n linkId?:string;\n params?:any;\n}\n\nexport enum ESidebarAction {\n NAVIGATION = 'navigation',\n OPENDIALOG = 'dialog',\n IFRAME = '_iframe',\n}\n\nexport interface IFrame {\n link?: string;\n width?: string;\n height?: string;\n}\n\nexport interface IData {\n header?: string;\n width?: string;\n height?: string;\n data?: any;\n scrollable?: boolean;\n}\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { HyperlinkService } from '../../../services/hyperlink.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { IframeComponent } from '../iframe/iframe.component';\n@Component({\n selector: 'se-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n})\nexport class SidebarComponent implements OnInit {\n toggleMenu: boolean = false;\n openDialogs: any = [];\n @Input() navHidden: boolean = false;\n @Input() collapseSidebar: boolean = false;\n @Input() menuTitle: string;\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\n if (newSidebarItems) {\n this.sidebarItemsList = newSidebarItems;\n this.initializeSideBar();\n }\n }\n\n public sidebarItemsList: ISidebar[] = [];\n public menuItems: MenuItem[] = [];\n roles: string[] = [];\n isSidebarHidden: boolean = false;\n\n constructor(\n private instance: Renderer2,\n private authService: AuthenticationService,\n public dialogService: DialogService,\n private router: Router,\n private pageLoggerService: PageLoggerService,\n private hyperlinkService: HyperlinkService\n ) { }\n\n ngOnInit(): void { }\n\n initializeSideBar() {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions\n this.applyUserPermissions();\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\n label: x.label,\n icon: x.icon,\n id: x.id,\n section: x.section,\n expanded: x.expanded,\n action: x.action,\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\n title: this.setMenuTitle(x),\n command: ({ item }) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(x, item);\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(x, item);\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\n this.loadIFrame(x, item);\n } else {\n this.handleActiveItem(item);\n }\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: x.hidden ? 'none' : '',\n },\n onClick: x.onClick,\n onReturn: x.onReturn,\n disabled: x.disabled,\n }));\n }\n\n setMenuTitle(x: any): string {\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\n }\n\n setMenuItems(x: ISidebar): any {\n return x.items.map((menu: any) => ({\n label: menu.label,\n icon: menu.icon,\n id: menu.id,\n section: menu.section,\n expanded: menu.expanded,\n action: menu.action,\n title: this.setMenuTitle(x),\n command: ({ item }: any) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\n this.loadIFrame(menu, x);\n }\n this.handleActiveItem(item);\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: menu.hidden ? 'none' : '',\n },\n onClick: menu.onClick,\n onReturn: menu.onReturn,\n disabled: menu.disabled,\n }))\n }\n\n loadIFrame(menu: ISidebar, item: any) {\n if (menu) {\n const dialogRef = this.dialogService.open(IframeComponent, {\n header: menu.section,\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n this.handleActiveItem(item);\n\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.sidebarItemsList) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.sidebarItemsList.forEach((item, index) => {\n let permissions: any = item.permissions;\n let hasValidEditPermission = false;\n\n item.id = index.toString();\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n item.disabled = true;\n } else {\n item.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.disabled = true;\n }\n }\n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n hiddenItems++;\n }\n });\n\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n\n /**\n *\n * @ param menu\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n openDialog(menu: ISidebar, item: any): void {\n const menuData:any = menu.data ? menu.data : menu;\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\n if (menu.component) {\n const dialogRef = this.dialogService.open(menu.component, menuData);\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\n this.openDialogs.push(dialogRef);\n this.handleActiveItem(item);\n\n if (this.openDialogs && this.openDialogs.length > 1) {\n this.openDialogs[0].close();\n this.openDialogs.shift();\n }\n\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n /**\n *\n * @ param x\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n navigateToSection(x: ISidebar, item: any): void {\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\n this.handleActiveItem(item);\n }\n\n /**\n *\n * @param item\n * Passes the event of the menu\n */\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\n this.menuItems = this.menuItems.map((x) =>\n x.icon === icon && closeDialog\n ? { ...x, styleClass: 'active-icon' }\n : {\n ...x,\n styleClass: '',\n style: {\n borderBottom: '1px solid #e9ecef',\n display: x.style?.display === 'none' ? 'none' : '',\n },\n }\n );\n }\n\n clickedMenu(menu: MenuItem[]) {\n menu.map((item: any) => {\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\n if (\n item.styleClass === 'active-icon' &&\n matchedItem &&\n matchedItem.onClick\n ) {\n this.hyperlinkService\n .addHyperlinks(matchedItem)\n .then((response: any) => {\n if (matchedItem.linkId) {\n this.hyperlinkService.setSidebarLink(\n response,\n this.sidebarItemsList\n );\n } else {\n matchedItem.onClick(item);\n }\n });\n }\n });\n }\n \n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { IHeader } from '../../../models/header.model';\nimport { EFormControl } from '../../../models/form.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'se-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit, OnChanges {\n @Input() headers: IHeader;\n\n dynamicCase = EFormControl;\n roles: string[] = [];\n isHeaderHidden: boolean = false;\n\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\n\n ngOnInit(): void {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions on form\n this.applyUserPermissions();\n }\n\n ngOnChanges(): void {\n if(this.headers && this.headers.fields){\n this.headers.fields.forEach((x) => {\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\n }\n if (x.value?.toString().includes(':') && x.timeOnly) {\n const index = x.value.indexOf(':');\n const time = x.value.substring(index - 2, index + 6);\n x.value = time;\n }\n });\n }\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.headers) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.headers.fields.forEach((headerField) => {\n let permissions: any = headerField.permissions;\n if (!permissions) permissions = this.headers.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n headerField.disabled = true;\n } else {\n headerField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n headerField.disabled = false;\n headerField.hidden = false;\n } else {\n headerField.disabled = true;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (headerField.hidden) {\n hiddenFields++;\n }\n });\n\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n loaderState = new Subject<any>();\n\n constructor() {}\n\n /**\n * Shows loader\n */\n showLoader(isDarkBackground = true) {\n this.loaderState.next({ loading: true, isDarkBackground });\n }\n\n /**\n * Hides loader\n */\n hideLoader() {\n this.loaderState.next({ loading: false });\n }\n\n /**\n * Fires on loader state changed.\n * @returns {Observable<any>}\n */\n onLoaderStateChange(): Observable<any> {\n return this.loaderState.asObservable();\n }\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LoaderService } from '../../../services/loader.service';\n\n@Component({\n selector: 'se-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n isLoading = false;\n isDarkBackground = true;\n loaderSubscription$: Subscription = new Subscription();\n\n constructor(\n public loaderService: LoaderService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loaderSubscription$ = this.loaderService\n .onLoaderStateChange()\n .subscribe((state: any) => {\n this.isLoading = state.loading ? true : false;\n this.isDarkBackground = state.isDarkBackground ? true : false;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy() {\n if (this.loaderSubscription$) {\n this.loaderSubscription$.unsubscribe();\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IFormField } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { RequestService } from '../../../services/request.service';\n@Component({\n selector: 'se-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements OnInit {\n @Input() acceptFileTypes: any;\n @Input() allowMultiple: boolean = false;\n @Input() fields: any;\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {}\n\n uploadFile(files: any) {\n let fileData = new FormData(); \n let chooseFile:boolean = false;\n for (let i = 0; i < files.length; i++) {\n if (files[i]) {\n chooseFile = true;\n fileData.append(files[i].name, files[i]);\n }\n }\n\n if (fileData && chooseFile) {\n if (this.fields && this.fields.uniqueKey?.length > 0) {\n fileData.append('uniqueKey', this.fields?.uniqueKey);\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\n fileData.append('azureContainer', this.fields?.azureContainer);\n }\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\n (data: any) => {\n if (data) {\n this.alertService.success('File Upload Successfully.');\n if (this.fields?.onReturn) {\n this.fields.onReturn(data.results);\n this.uploadFileOnReturn.emit();\n }\n this.fileUrl.emit(data.results);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n if (this.fields.onReturn) {\n this.fields.onReturn(error);\n this.uploadFileOnReturn.emit();\n }\n }\n );\n }\n }\n onClickEvent() {\n if (this.fields && this.fields.onClick) {\n this.fields.onClick();\n console.log('this.fields: ', this.fields);\n }\n } \n}\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { FormService } from '../../../services/form.service';\nimport { RequestService } from '../../../services/request.service';\nimport * as utilities from '../../../services/utilities.service';\n\n@Component({\n selector: 'se-caption',\n templateUrl: './caption.component.html',\n styleUrls: ['./caption.component.scss'],\n})\nexport class CaptionComponent implements OnInit {\n dynamicForm: IDynamicForm;\n id: number;\n caption: string;\n\n constructor(\n private formService: FormService,\n private requestService: RequestService,\n private alertService: AlertService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n ngOnInit(): void {\n if (this.config.data) {\n this.id = this.config.data.id;\n this.caption = this.config.data.caption;\n }\n this.initilizeForm();\n }\n\n initilizeForm() {\n this.dynamicForm = {\n formSections: [\n {\n fields: [\n this.formService.addTextbox({\n field: 'fileCaption',\n label: 'Caption',\n value: this.caption,\n column: 12,\n validations: [{ type: EValidator.REQUIRED }]\n }),\n ],\n },\n ],\n };\n }\n\n saveForm(formFiels: any) {\n this.requestService\n .get<any[], any>('/AzureUpload/UpdateCaption', {\n Id: this.id,\n fileCaption: utilities.getFormFieldValue(\n this.dynamicForm,\n 'fileCaption'\n ),\n })\n .subscribe(\n (response: any) => {\n if (response) {\n this.alertService.success('Caption added successfully.');\n this.ref.close(response);\n }\n },\n ({ error }) => {\n this.ref.close();\n this.alertService.apiError(error);\n }\n );\n }\n cancelForm(event: any) {\n console.log('CancelForm: ', event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { GridService } from '../../../services/grid.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { ConfirmationService } from 'primeng/api';\n\n@Component({\n selector: 'se-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit {\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\n @Input() data: any = [];\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() card: any;\n dynamicForm: IDynamicForm;\n showFiles: boolean = false;\n displayCardInfo: IViewCardProp;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n if (this.card) {\n let { data, formSections, cardInfo }: any = this.card;\n if(cardInfo && Object.keys(cardInfo).length){\n this.displayCardInfo = cardInfo;\n data = this.gridService.setDataFields(data);\n const newArr = [];\n data?.forEach((record)=>{\n if(!Object.keys(record)?.includes('azurecontainerid')){\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\n } else {\n newArr.push(record);\n }\n });\n this.data = newArr;\n } else {\n this.data = this.gridService.setDataFields(data);\n }\n this.dynamicForm = { formSections };\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n this.setCardPropValue('allowDownload');\n this.setCardPropValue('allowDelete');\n this.setCardPropValue('allowEditableCaption');\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\n /** In case of when we are using this component for stand alone then if formSection is exist in\n the this.card and then add in the data array.\n */\n if (this.data) {\n this.data.forEach((x: any) => {\n if (!x.dynamicform) {\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\n }\n utilities.setCardFieldsData(x);\n });\n }\n }\n }\n\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n setCardPropValue(prop:string){\n if(!this.card[prop]?.toString()?.length) {\n this.card[prop]= true;\n }\n }\n\n dragAndDrop(event: any) {\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n event.item?.element?.nativeElement;\n this.card.data = this.data;\n this.card['change'] = true;\n if (this.card && this.card.onSort) {\n this.card.onSort(this.data);\n }\n }\n\n deleteImage(event: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this Image?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex(\n (i) => i.blobfileurl === event.blobfileurl\n );\n let obj = arr[index];\n arr.splice(index, 1);\n this.data = [...arr];\n\n if (this.card && this.card.onDelete) {\n obj = this.replacePropName(obj);\n this.card.onDelete(obj);\n this.onDeleteCard.emit();\n }\n }\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n replacePropName(cardInfo:any){\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\n const cardProp = {...this.displayCardInfo};\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\n return obj;\n } else {\n return cardInfo;\n }\n }\n\n saveCaption(event: any) {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\n let obj = arr[index];\n if (index !== -1) {\n obj.filecaption = event.caption;\n arr.splice(index, 1, obj);\n this.card.data = arr;\n this.card['change'] = true;\n }\n if (this.card && this.card?.onCaptionSave) {\n obj = this.replacePropName(obj);\n this.card.onCaptionSave(obj);\n }\n }\n }\n\n onClickEvent(data: any, index: number){\n data['index'] = index;\n this.selectedCard.emit(data);\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport { ESelectFileType } from '../../../models/form.model';\n\n@Component({\n selector: 'se-file',\n templateUrl: './file.component.html',\n styleUrls: ['./file.component.scss'],\n})\nexport class fileComponent implements OnInit {\n @Input() url: string = '';\n @Input() caption: string = '';\n @Input() width: string = '';\n @Input() height: string = '200px';\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\n @Input() id: number;\n @Input() name: string = '';\n @Input() type: any;\n @Input() allowDownloadFile: boolean = true;\n @Input() allowEditableCaption: boolean = true;\n @Input() allowDeleteFile: boolean = true;\n editableCaption: boolean = false;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n ngOnInit(): void {\n this.checkFileExtension();\n }\n\n checkFileExtension() {\n switch (this.type) {\n case 'png':\n case 'jpeg':\n case 'jfif':\n case 'jpg': {\n this.type = '.image';\n break;\n }\n case 'xlsx':\n case 'xls':\n case 'xlsm':\n case 'txt': {\n this.type = ESelectFileType.EXCEL;\n break;\n }\n case 'pdf':\n case 'html': {\n this.type = ESelectFileType.PDF;\n break;\n }\n case 'doc':\n case 'docx': {\n this.type = ESelectFileType.DOCUMENT;\n break;\n }\n }\n }\n\n downloadFile(url: string) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n\n captionClickEvent() {\n if (this.allowEditableCaption) {\n this.editableCaption = true;\n }\n }\n\n captionSave(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n if(caption !== null){\n this.caption = caption;\n this.editableCaption = false;\n this.onSaveEvent.emit(obj);\n }\n }\n\n onDeleteFile(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n this.onDeleteEvent.emit(obj);\n }\n\n cancel() {\n this.editableCaption = false;\n }\n}\n","import { Component, Input, OnInit, Optional } from '@angular/core';\nimport { RequestService } from '../../../../../services/request.service';\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport * as utilities from '../../../../../services/utilities.service';\n\n\n@Component({\n selector: 'se-report-filter',\n templateUrl: './report-filter.component.html',\n styleUrls: ['./report-filter.component.scss']\n})\nexport class ReportFilterComponent implements OnInit {\n dynamicForm:IDynamicForm;\n formFields: IFormField[] = [];\n\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\n\n ngOnInit(): void {\n this.createDynamicFields();\n \n }\n initializeForm(){\n this.dynamicForm = {\n formSections:[\n {\n fields: [\n ...this.formFields,\n {\n label: 'Download Report',\n control: EFormControl.ADD_BUTTON,\n hidden: this.config?.data?.hideGenerateReportBtn,\n onClick: () => {\n this.downloadReport();\n },\n }\n ]\n }\n ]\n \n }\n }\n createDynamicFields() {\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n this.setParamFieldValue();\n this.initializeForm();\n // set dropdown data based on matched field.\n this.setDropDownData(reportJson);\n },\n (error) => {\n this.initializeForm();\n this.alertService.error(error);\n }\n );\n }\n setParamFieldValue(){\n if(this.config.data && this.config.data.param?.length > 0){\n this.config.data.param.forEach((param: any)=>{\n this.formFields.forEach((field)=>{\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\n if(matchKey && matchKey.length > 0){\n field.value = param[matchKey];\n }\n });\n });\n }\n }\n\n setDropDownData(reportJson: any) {\n reportJson.Parameters?.forEach((record: any) => {\n if(record.isuniquekey){\n this.requestService.get<any[], any>('/Data/Fetch', {\n uniqueKey: record.isuniquekey,\n filters: []\n }).subscribe((response:any)=>{\n utilities.setFormFieldProp(this.dynamicForm, record.paramname, [\n { name: 'data', value: response.records }, \n ]); \n },(error) => {\n this.alertService.apiError(error);\n })\n }\n });\n }\n getFilters(){\n let filters: any = [];\n this.dynamicForm?.formSections?.forEach((section)=>{\n section.fields?.forEach((field)=>{\n if(field && field.value){\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\n };\n });\n }); \n return filters;\n }\n \n downloadReport(){ \n const filters:any = this.getFilters(); \n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n a.download = 'report.pdf';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n \n }\n );\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { RequestService } from '../../../../../services/request.service';\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\n\n@Component({\n selector: 'se-generate-report-btn',\n templateUrl: './generate-report-btn.component.html',\n styleUrls: ['./generate-report-btn.component.scss']\n})\nexport class GenerateReportBtnComponent implements OnInit {\n @Input() repId: any;\n @Input() params: any;\n @Input() showDialog: boolean;\n formFields: IFormField[] = [];\n\n constructor(\n public dialogService: DialogService,\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {\n this.createDynamicFields();\n }\n\n reportClickEvent() {\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\n this.dialogService.open(ReportFilterComponent, {\n width: '80%',\n height: '100%',\n header: 'Generate Report',\n data: { Id: this.repId, param: this.params },\n });\n } else {\n this.downloadQuickReport();\n }\n }\n\n createDynamicFields() {\n this.requestService\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\n .subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n },\n (error) => {\n this.alertService.error(error);\n }\n );\n }\n\n getFilters() {\n let filters: any[] = [];\n this.formFields.forEach((field) => {\n if (field && field.value?.toString()?.length > 0) {\n filters.push({\n field: field.field,\n matchMode: 'equal',\n operator: 'and',\n value: field.value,\n });\n }\n });\n return filters;\n }\n\n downloadQuickReport() {\n let filters: any[] = [];\n if(this.params && this.params.length > 0){\n this.params.forEach((param)=>{\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\n });\n } else {\n filters = this.getFilters();\n }\n \n this.requestService\n .download('/Report/Generate', { Id: this.repId, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n a.download = 'report.pdf';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n }\n );\n }\n}","import { DatePipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\nimport {\n IGlobalFilter,\n GridFilterControlType,\n EGridColumnType,\n addGlobalFilter,\n EDayRange,\n EFilterValidator,\n} from '../../../models/grid.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { GridService } from '../../../services/grid.service';\n\n@Component({\n selector: 'se-global-filters',\n templateUrl: './global-filters.component.html',\n styleUrls: ['./global-filters.component.scss'],\n})\nexport class SeGlobalFilterComponent implements OnInit {\n @ViewChild('rangeCalendar') datePicker: any;\n @Input() globalFilters: IGlobalFilter[] = [];\n @Input() searchGlobalFilterBtn: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n\n public fiterTypes = GridFilterControlType;\n public columnType = EGridColumnType;\n public showDialog: boolean = false;\n public startDate: Date;\n public endDate: Date;\n\n showInput: boolean = false;\n filter: any = '';\n hideClearFilterBtn: boolean = true;\n calendarFormat:string = 'mm/dd/yy';\n\n constructor(\n public datepipe: DatePipe,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig,\n private gridService: GridService,\n public dialogService: DialogService,\n private alertService: AlertService,\n private el: ElementRef,\n ) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n if(this.config && this.config.data){\n this.showDialog = this.config.data.openDialog;\n if(this.config.data.globalFilters){\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\n }\n \n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n // spliting date range value and assign to value and valueTwo in Date_Range Control\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \n dateRangeFilter.forEach((dateRange)=>{\n if(dateRange.value && dateRange.valueTwo){\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \n this.setDateRangeFilterValue(dateRange);\n }\n })\n // Filtring Numeric Range controls on global filter \n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\n numerRangeFilter.forEach((numericRange) =>{\n if(numericRange){\n this.setNumericRangeValueFrom(numericRange);\n this.setNumericRangeValueTwo(numericRange);\n }\n })\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\n (this.globalFilters.some((filter)=> filter.value))\n ){\n this.applyFilters(false);\n }\n }, 500);\n }\n\n setDateRangeFilterValue(dateRange){\n if(dateRange?.value?.length > 1){\n dateRange.value[0] = new Date(dateRange.value[0]);\n dateRange.value[1] = new Date(dateRange.value[1]);\n this.selectDate(dateRange, false);\n }\n }\n \n // change calendar format on run time if user type date on the calendar field.\n calendarFocusEvent(globalFilter:IGlobalFilter, event?: any){\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\n let year = a?.target?.value?.toString()?.split('/')[2];\n year = year?.toString().split(\" \")[0];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n if(globalFilter.type === GridFilterControlType.CALENDAR){\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\n }\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n let yearValue = event?.target?.value?.toString()?.split('/')[4];\n if((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeValue(globalFilter, true);\n }\n }\n\n checkFilterValidation(removeError:boolean = false):boolean{\n let valid:boolean = false;\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\n valid = true;\n filter.errorMessage = filter.displayText+\" is required\";\n filter.requiredField = true;\n } else {\n filter.errorMessage = '';\n }\n })\n }\n return valid;\n }\n\n ngOnChanges(){\n this.checkFilterValidation();\n this.globalFilters?.forEach((filter)=>{\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\n this.onFocusOutEvent(filter);\n }\n })\n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n const girdClearFilterBtn = document.getElementById(\n 'clearGridFilterValuesButton'\n );\n if(girdClearFilterBtn){\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\n this.hideClearFilterBtn = true;\n }else{\n this.hideClearFilterBtn = false;\n }\n }else{\n this.hideClearFilterBtn = true;\n }\n }\n\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\n if(globalFilter.toField){\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\n }\n if(sendRequest){\n this.applyFilters();\n }\n }\n\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\n if(field){\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\n if(digitInfo){\n value = parseFloat(value)?.toFixed(digitInfo);\n }else{\n value = parseFloat(value)?.toFixed(2);\n }\n }\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\n if(index > -1){\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \n } else {\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\n }\n }\n }\n\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\n if(sendRequest){\n this.applyFilters();\n }\n }\n \n }\n\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\n if(globalFilter.value?.length > 0){\n const fromDateValue = this.datepipe.transform(\n globalFilter.value[0],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n const toDateValue = this.datepipe.transform(\n globalFilter.value[1],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\n }\n }else if(clearValue){\n this.matchSameFields(globalFilter.fromField, null, 'gte');\n this.matchSameFields(globalFilter.toField, null, 'lte');\n }\n }\n\n\n onFocusOutEvent(globalFilter: IGlobalFilter){\n if (globalFilter && globalFilter.onFocusOut) {\n globalFilter.onFocusOut(globalFilter);\n }\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n /**\n * Apply selected filters\n */\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeFilterValue(globalFilter);\n } \n this.gridService.applyFilterEvent = filterEvent;\n const globalFilters = this.globalFilters.filter((x) => x.field);\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\n if(index > -1){\n globalFilters.splice(index, 1);\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (this.showDialog) {\n this.ref.close(globalFilters);\n } else \n if(!this.checkFilterValidation()){\n this.checkFilterValidation(true);\n this.filtersApplied.emit(globalFilters);\n }\n }\n\n // set By Defualt Calender Range \n setDefualtCalendarRange(check: boolean = true){\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\n setTimeout(() => {\n this.showNext(filter, check);\n }, 100);\n }\n });\n }\n }\n\n showNext(filter: IGlobalFilter, check: boolean = true): string {\n let nextValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n nextValue = this.setDayFilter(filter, true);\n break;\n case EDayRange.MONTH:\n nextValue = this.setMonthFilter(filter, true);\n break;\n case EDayRange.YEAR:\n nextValue = this.setYearFilter(filter, true);\n break;\n default:\n // week\n nextValue = this.setWeekFilter(filter, true);\n break;\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.gridService.applyFilterEvent = check;\n this.filtersApplied.emit(this.globalFilters);\n return nextValue;\n }\n\n showPrevious(filter: IGlobalFilter): string {\n let previousValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n previousValue = this.setDayFilter(filter, false);\n break;\n case EDayRange.MONTH:\n previousValue = this.setMonthFilter(filter, false);\n break;\n case EDayRange.YEAR:\n previousValue = this.setYearFilter(filter, false);\n break;\n default:\n // week\n previousValue = this.setWeekFilter(filter, false);\n break;\n }\n this.gridService.applyFilterEvent = true;\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.filtersApplied.emit(this.globalFilters);\n return previousValue;\n }\n\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\n return (filter.value =\n this.datepipe.transform(\n this.startDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ) +\n '|' +\n this.datepipe.transform(\n this.endDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ));\n }\n\n setDateValue(filter: any) {\n let value: Date;\n if (filter.value) {\n value = new Date(filter.value.split('|')[0]);\n return new Date(value.setMonth(value.getMonth()));\n } else {\n return new Date();\n }\n }\n\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n )\n : currentDate;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() - 1\n )\n : currentDate;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\n : firstDateOfYear;\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\n : firstDateOfYear;\n }\n\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfMonth = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n 1\n );\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 1\n )\n : firstDateOfMonth;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() - 1,\n 1\n )\n : firstDateOfMonth;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 0\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\n let currentDate = this.setDateValue(filter);\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() + weekSeconds)\n : new Date(firstDay.getTime());\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() - weekSeconds)\n : new Date(firstDay.getTime() - weekSeconds);\n }\n\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(globalFilters: IGlobalFilter) { \n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\n }\n\n /**\n * Clear all filter values\n */\n clearFilters() {\n this.globalFilters.map((item: any) => (item.value = null));\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\n if(clearGridFilter){\n clearGridFilter.click();\n }\n }\n\n /**\n * Clear values of Date Range Filter\n */\n clearDateRangeValue(filter: any){\n this.setDateRangeValue(filter, true)\n }\n\n /**\n * Close dialog without applying filters\n */\n cancel() {\n this.clearFilters();\n this.ref.close();\n }\n rangeDateclose(globalFilter: any) {\n this.datePicker.hideOverlay();\n const id: any = document.getElementById(globalFilter.displayText);\n id.focus();\n }\n\n filterInput() {\n this.showInput = !this.showInput;\n }\n\n /**\n * Focused the calender input\n */\n selectDate(globalFilter: any, focused: boolean = false){\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\n this.setDateRangeValue(globalFilter);\n if(focused ==true){\n this.rangeDateclose(globalFilter); \n }\n }\n if(focused){\n document.getElementById(globalFilter.field)?.focus();\n }\n }\n tabFocusEvent(globalFilter: any) {\n const className = this.el.nativeElement.querySelector(\n '.'+globalFilter.field\n );\n if (className) {\n className.click();\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\nimport { IGlobalFilter } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-filter',\n templateUrl: './filter.component.html',\n})\nexport class SeFilterComponent implements OnInit {\n @Input() globalFilters: IGlobalFilter[];\n @Input() showDialogFilter: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Input() searchGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n\n constructor(public dialogService: DialogService) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void { }\n\n /**\n * Opens the filter dialog\n */\n openFilters() {\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\n header: 'Choose Filters',\n width: '70%',\n styleClass: 'global-filter-visible',\n data: { globalFilters: this.globalFilters, openDialog: true},\n });\n\n // Modal response\n ref.onClose.subscribe((res) => {\n if (res) {\n this.filtersApplied.emit(res);\n }\n });\n }\n\n globalFiltersApplied(event: any){\n this.filtersApplied.emit(event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'se-grid-row-actions',\n templateUrl: './grid-row-actions.component.html',\n styleUrls: ['./grid-row-actions.component.scss']\n})\nexport class GridRowActionsComponent implements OnInit {\n @Input() editing: boolean;\n\n @Input() editRowPermission: boolean;\n\n @Input() deleteRowPermission: boolean;\n\n @Input() editAllRows: boolean = false;\n\n @Input() row: any;\n\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onRowEditInit(row: any) {\n this.onRowEditInitBtn.emit(row);\n }\n\n deleteRecord(row: any) {\n this.deleteRecordBtn.emit(row);\n }\n\n onRowEditSave(row: any) {\n this.onRowEditSaveBtn.emit(row);\n }\n\n onRowEditCancel(row: any) {\n this.onRowEditCancelBtn.emit(row);\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { GridComponent } from './components/base/grid/grid.component';\nimport { FormComponent } from './components/base/form/form.component';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\nimport { IframeComponent } from './components/base/iframe/iframe.component';\n\n// Library\nimport { TableModule } from 'primeng/table';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TabViewModule } from 'primeng/tabview';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { AddRowDirective } from './directive/add-row.directive';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NotesComponent } from './components/shared/notes/notes.component';\nimport { PanelMenuModule } from 'primeng/panelmenu';\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { RequestService } from './services/request.service';\nimport { Environment } from './models/response.model';\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\nimport { HeaderComponent } from './components/base/header/header.component';\nimport { MenuModule } from 'primeng/menu';\nimport { GalleriaModule } from 'primeng/galleria';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { AccordionModule } from 'primeng/accordion';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { LoaderComponent } from './components/base/loader/loader.component';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\nimport {AvatarModule} from 'primeng/avatar';\nimport { CardModule } from 'primeng/card';\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\nimport { CaptionComponent } from './components/base/caption/caption.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CardComponent } from './components/base/cards/card.component';\nimport { fileComponent } from './components/base/file/file.component';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport { AlertService } from './services/alert.service';\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\nimport { SeFilterComponent } from './components/base/filter/filter.component';\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\n\n\nexport const toasterModuleforRoot = ToastrModule.forRoot();\n\n@NgModule({\n declarations: [\n GridComponent,\n GridRowActionsComponent,\n DropdownComponent,\n AddRowDirective,\n FormComponent,\n NotesComponent,\n AppFilterMenuComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n IframeComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeGlobalFilterComponent,\n SeFilterComponent,\n AlertPopUpComponent\n ],\n\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\n imports: [\n CommonModule,\n TableModule,\n PanelMenuModule,\n MenuModule,\n MultiSelectModule,\n FormsModule,\n BrowserAnimationsModule,\n TabViewModule,\n DropdownModule,\n CalendarModule,\n CheckboxModule,\n ButtonModule,\n ProgressSpinnerModule,\n RippleModule,\n InputTextModule,\n TriStateCheckboxModule,\n InputTextareaModule,\n TooltipModule,\n BrowserModule,\n GalleriaModule,\n AutoCompleteModule,\n AccordionModule,\n ConfirmDialogModule,\n MessagesModule,\n InputNumberModule,\n AvatarModule,\n CardModule,\n DragDropModule,\n InputSwitchModule,\n toasterModuleforRoot\n ],\n exports: [\n GridComponent,\n GridRowActionsComponent,\n FormComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeFilterComponent,\n SeGlobalFilterComponent\n ],\n})\nexport class SEToolkitModule {\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\n return {\n ngModule: SEToolkitModule,\n providers: [\n RequestService,\n {\n provide: 'env',\n useValue: environment\n }\n ]\n };\n }\n}\n","import { EFormControl, IHyperlink } from './form.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IHeader {\n fields: IHeaderField[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface IHeaderField {\n label?: string;\n value?: any;\n control?: EFormControl;\n data?: any[];\n onClick?: () => void;\n class?: string;\n column?: number;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport enum EButtonClass {\n NORMAL = 'p-button-sm',\n SUCCESS = 'p-button-success p-button-sm',\n INFO = 'p-button-info p-button-sm',\n WARNING = 'p-button-warning p-button-sm',\n HELP = 'p-button-help p-button-sm',\n DANGER = 'p-button-danger p-button-sm',\n}\n\nexport interface AddHeaderField {\n control?: EFormControl;\n label?: string;\n value?: string;\n column?: number;\n data?: any;\n class?: string;\n onClick?: (() => void) | any;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport interface IHeaderFormat {\n type: EHeaderFormatType | any;\n formatParams?:IFormatParams\n | IDateFormatParams\n | INumberFormatParams\n | ICurrencyFormatParams;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParams {\n locale?: string;\n}\n\nexport interface IDateFormatParams extends IFormatParams {\n format?: string;\n}\n\nexport interface INumberFormatParams extends IFormatParams {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParams extends INumberFormatParams {\n currency: string;\n}\n\nexport enum EHeaderFormatType {\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}","import { Injectable } from '@angular/core';\nimport { IMenu } from '../models/menu.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { IDictionary } from '../models/common.model';\nimport * as utilities from './utilities.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideBarService {\n constructor() { }\n\n /**\n * Checks parent menu and expands it if current route exists in its child menus.\n * @param menuLabel\n * @returns {boolean}\n */\n isMenuExpanded(\n currentRoute: string,\n items: IMenu[],\n menuLabel: string\n ): boolean {\n if (items && items.length) {\n // check currentRoute contains loadDataForEdit or not\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\n let detailPage = '';\n if(currentRoute?.toString()?.includes(\"list\")){\n detailPage = currentRoute.replace('list', 'detail');\n } \n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\n let matchedItems = [];\n if(currentIndex > -1){\n matchedItems = items[currentIndex]?.items;\n }\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \n }\n return false;\n }\n\n setSidebarPropValues(\n sidebar: ISidebar[],\n section: string,\n props: IDictionary[]\n ) {\n sidebar.map((sidebarItem: any) => {\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\n props.map((prop) => {\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\n sidebarItem.data.data = prop.value;\n } else {\n return utilities.setPropValue(sidebarItem, prop);\n }\n });\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl } from '../models/form.model';\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderService {\n constructor() {}\n\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\n if (!headerInfo.column) {\n headerInfo.column = 3;\n }\n\n const headerField: IHeaderField = {\n label: headerInfo.label,\n control: headerInfo.control,\n value: headerInfo.value,\n column: headerInfo.column,\n data: headerInfo.data,\n class: headerInfo.class,\n onClick: headerInfo.onClick,\n hyperlink: headerInfo.hyperlink,\n disabled: headerInfo.disabled,\n hidden: headerInfo.hidden,\n permissions: headerInfo.permissions,\n format: headerInfo.format,\n showTime: headerInfo.showTime,\n timeOnly: headerInfo.timeOnly,\n };\n return headerField;\n }\n\n addLabel(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.LABEL;\n return this.addHeaderField(headerInfo);\n }\n \n addDropdown(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.DROPDOWN;\n return this.addHeaderField(headerInfo);\n }\n\n addButton(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.BUTTON;\n return this.addHeaderField(headerInfo);\n }\n\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CHECKBOX;\n return this.addHeaderField(headerInfo);\n }\n\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.HYPERLINK;\n return this.addHeaderField(headerInfo);\n }\n\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CALENDAR;\n return this.addHeaderField(headerInfo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl, IDynamicForm } from '../models/form.model';\nimport { AlertService } from './alert.service';\nimport { RequestService } from './request.service';\nimport * as utilities from '../../lib/services/utilities.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CardService {\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) { }\n\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\n let imageToDelete =\n imageInfo.id && imageInfo.id > 0\n ? { RecordId: imageInfo.id }\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\n (response: any) => {\n this.deleteFile(imageInfo, dynamicForm, cardId);\n if (imageInfo.tables) {\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\n } else {\n this.alertService.success('Image deleted successfully.');\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n deleteImageFromTables(tables: any[], uniqueKey: string) {\n this.requestService\n .get('/Data/BulkDelete', {\n UniqueKey: uniqueKey,\n tables: tables,\n })\n .subscribe(\n (response) => {\n this.alertService.success('Image deleted successfully.');\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n getCardData(formSections: any, id: string): any {\n let arr = {};\n formSections?.forEach((formSection: any) => {\n formSection.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\n }\n });\n });\n return arr;\n }\n\n setFileUploadData(response: any, dynamicForm: any, id: string) {\n if (response) {\n dynamicForm.formSections?.forEach((x: any) => {\n x.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\n field.card?.data?.unshift(...response);\n }\n });\n });\n }\n }\n\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\n const fieldInfo = this.getCardData(\n dynamicForm.formSections,\n id\n );\n let cardData = fieldInfo.data;\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\n\n dynamicForm.formSections?.forEach((section) => {\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\n if (card && card.card) {\n card.card.data = cardData;\n }\n });\n }\n\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\n arr = utilities.setDataFields(arr);\n cardInfo = utilities.objConvertToLower(cardInfo);\n \n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\n if (index > -1) {\n arr.splice(index, 1);\n }\n return arr;\n }\n\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\n response.records?.forEach((record: any, recordIndex: any) => {\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\n if(matchCard && Object.keys(matchCard)?.length > 0){\n matchCard[fieldName] = record.Id;\n }\n });\n\n if(dynamicForm && Object.keys(dynamicForm)?.length){\n dynamicForm.formSections.forEach((section)=>{\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\n if(formField){\n if(cardsInfo?.length > 0){\n cardsInfo?.forEach((cardId)=>{\n cardId.id = null;\n })\n }\n formField.card.data = cardsInfo;\n };\n });\n }\n }\n\n}\n","/*\n * Public API Surface of se-ui-toolkit\n */\nexport * from 'primeng/api';\n\n/**\n * Exported Modules\n */\n\nexport * from './lib/se-ui-toolkit.module';\n\n/**\n * Exported Components\n */\nexport * from './lib/components/base/form/form.component';\nexport * from './lib/components/base/grid/grid.component';\nexport * from './lib/components/base/menu-bar/menu-bar.component';\nexport * from './lib/components/base/sidebar/sidebar.component';\nexport * from './lib/components/base/header/header.component';\nexport * from './lib/components/base/image-gallery/image-gallery.component';\nexport * from './lib/components/base/iframe/iframe.component';\nexport * from './lib/components/base/loader/loader.component';\nexport * from './lib/components/base/file-upload/file-upload.component';\nexport * from './lib/components/base/caption/caption.component';\nexport * from './lib/components/base/cards/card.component';\nexport * from './lib/components/base/file/file.component';\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nexport * from './lib/components/shared/global-filters/global-filters.component';\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\nexport * from './lib/components/base/filter/filter.component';\n\n/**\n * Exported Type Definitions\n */\nexport * from './lib/models/form.model';\nexport * from './lib/models/grid.model';\nexport * from './lib/models/response.model';\nexport * from './lib/models/request.model';\nexport * from './lib/models/header.model';\nexport * from './lib/models/sidebar.model';\nexport * from './lib/models/user-info.model';\nexport * from './lib/models/menu.model';\nexport * from './lib/models/common.model';\n\n/**\n * Exported Services\n */\nexport * from './lib/services/alert.service';\nexport * from './lib/services/form.service';\nexport * from './lib/services/grid.service';\nexport * from './lib/services/dropdown.service';\nexport * from './lib/services/page-logger.service';\nexport * from './lib/services/authentication.service';\nexport * from './lib/services/utilities.service';\nexport * from './lib/services/request.service';\nexport * from './lib/services/sidebar.service';\nexport * from './lib/services/hyperlink.service';\nexport * from './lib/services/header.service';\nexport * from './lib/services/loader.service';\nexport * from './lib/services/card.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","__awaiter","EGridAggregate","EAggregateFormat","EGridlink","EGridFormatter","GridFilterControlType","EDayRange","EGridSortDirection","EGridColumnType","EGridFormatType","EGlobalFilterFormatType","EGridSelectionType","EFilterValidator","EGridRowPropName","EGridValidator","Component","DynamicDialogConfig","Optional","DynamicDialogRef","Injectable","ToastrService","DialogService","ConfirmationService","HttpClient","Inject","ESelectFileType","EValidator","EFormControl","EOperator","EMatchMode","EFormatType","EHyperlink","Subject","formatDate","utilities.calenderMinMaxValue","utilities.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.objConvertToLower","DatePipe","EPermissionType","DomSanitizer","EventEmitter","utilities.currentUrl","utilities.setTimeInDate","utilities.autoSetLookupData","utilities.setMinutesInterval","jsPDF","saveAs","interval","ElementRef","DecimalPipe","ChangeDetectorRef","Router","ViewChildren","Output","Input","ViewChild","HostListener","utilities.changeDynamicFormState","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","ComponentFactoryResolver","ViewContainerRef","Directive","CookieService","ESidebarAction","Renderer2","Subscription","utilities.getFormFieldValue","utilities.setCardFieldsData","moveItemInArray","utilities.setFormFieldProp","ToastrModule","NgModule","CommonModule","TableModule","PanelMenuModule","MenuModule","MultiSelectModule","FormsModule","BrowserAnimationsModule","TabViewModule","DropdownModule","CalendarModule","CheckboxModule","ButtonModule","ProgressSpinnerModule","RippleModule","InputTextModule","TriStateCheckboxModule","InputTextareaModule","TooltipModule","BrowserModule","GalleriaModule","AutoCompleteModule","AccordionModule","ConfirmDialogModule","MessagesModule","InputNumberModule","AvatarModule","CardModule","DragDropModule","InputSwitchModule","EButtonClass","EHeaderFormatType","utilities.setPropValue","utilities.setDataFields"],"mappings":"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"}
1
+ {"version":3,"file":"churchillliving-se-ui-toolkit.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../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":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { IPermission } from './user-info.model';\nimport { Type } from '@angular/core';\nimport { IDropDownRequest, IReportBtn } from './form.model';\n\nexport interface IGridColumn {\n component?: Type<any>;\n allowSearch?: boolean;\n target?: EGridlink;\n header?: string;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n type?: EGridColumnType;\n hidden?: boolean;\n hyperlink?: string;\n sorting?: boolean;\n filtering?: boolean;\n filter?: IGridFilterType;\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\n data?: any;\n style?: string;\n permissions?: IPermission[];\n value?: any;\n tableAlias?: string;\n linkId?: string;\n params?: {[key: string]: any};\n minutesInterval?: number;\n showTime?: boolean;\n timeOnly?: boolean;\n displayText?: string;\n disabled?: boolean;\n editable?: boolean;\n editLink?: boolean;\n allowSave?: boolean;\n validations?: IGridValidation[];\n errorMessage?: string;\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n}\n\nexport interface IGridLookupControl {\n component?: any;\n data?: IGridLookupData;\n}\n\nexport declare type IGridLookupData = {\n header?: string;\n height?: string;\n width?: string;\n valueField?: string;\n selectedValue?: string;\n data?: {[key: string]: any};\n}\n\nexport interface ILookupValue {\n text: string;\n value: string;\n field?:string\n}\n\nexport enum EGridAggregate {\n SUM = 'sum',\n AVERAGE = 'average',\n COUNT = 'count',\n}\n\nexport interface IGridAggregate {\n type: EGridAggregate;\n caption?: string;\n displayField?: string;\n aggrValue?:string;\n format?: IAggregateFormat;\n}\nexport interface IAggregateFormat {\n type: EAggregateFormat;\n digitsInfo?: number;\n}\n\nexport enum EAggregateFormat {\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n}\n\nexport enum EGridlink {\n BLANK = '_blank',\n SELF = '_self',\n}\n\nexport interface IGridDataExport {\n rows: any[];\n headings: string[];\n}\n\nexport interface ISelectItem {\n label: string;\n value: string;\n}\n\nexport interface IGridFilterType {\n type?: GridFilterControlType;\n data?: ISelectItem[];\n tableAlias?: string;\n showFilter?: boolean;\n}\n\nexport interface IAlertPopUpBtn {\n buttonLabel: string;\n buttonClass?: string;\n}\n\nexport interface IAlertPopUp {\n message: string;\n header?: string;\n buttons: IAlertPopUpBtn[];\n height?: string;\n width?: string;\n icon?: string;\n}\n\nexport enum EGridFormatter {\n BOOLEAN = 'boolean',\n CHAR = 'char',\n NUMERIC = 'numeric'\n}\n\nexport enum GridFilterControlType {\n INPUT = 'input',\n DROPDOWN = 'dropdown',\n CHECKBOX = 'checkbox',\n CALENDAR = 'calendar',\n CALENDAR_RANGE = 'calender_range',\n MULTISELECT = 'multi-select',\n NUMERICINPUT = 'numeric_input',\n NUMERIC_RANGE = 'numeric_range',\n DATE_RANGE = 'date_range',\n LOOKUP_INPUT = 'lookup_input',\n SPACER = 'spacer'\n}\n\nexport enum EDayRange {\n DAY = 'Day',\n WEEK = 'Week',\n MONTH = 'Month',\n YEAR = 'Year',\n}\n\nexport enum EGridSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum EGridColumnType {\n LINK = 'link',\n IFRAME = 'iframe',\n DIALOG = 'dialog',\n TEXT = 'text',\n NUMERIC = 'numeric',\n DATE = 'date',\n BOOLEAN = 'boolean',\n DROPDOWN = 'dropdown',\n LOOKUP_INPUT = 'lookup_input',\n ADD_BUTTON = 'add_button',\n AUTOCOMPLETE = 'AutoComplete',\n MULTISELECT = 'multi-select',\n REPORT = 'report'\n}\n\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\n displayText?: string;\n onFocusOut?: (value: any) => any;\n optionLabel?: string;\n optionValue?: string;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n format?: string | EGridFormatType | EGlobalFilterFormatType;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n color?: string;\n validations?: IGridValidation[];\n errorMessage?:string;\n requiredField?: boolean;\n}\n\nexport interface ILookupControlFilter {\n component?: any;\n data?: ILookupFilterData;\n}\n\nexport declare type ILookupFilterData = {\n header: string;\n width?: string;\n data: any;\n} & {\n [key: string]: any;\n};\n\nexport interface IPrimeNgSort {\n multisortmeta: { field: string; order: number };\n}\n\nexport interface IPrimeNgFilterItem {\n matchMode: string;\n operator: string;\n value: string | number | boolean | Date | any;\n}\n\nexport interface IPrimeNgFilter {\n filteredValue: any[];\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\n}\n\nexport interface IGridFilter {\n field?: string;\n matchMode?: string;\n operator?: string;\n filtering?: boolean;\n value?: any;\n valueTwo?: any;\n tableAlias?: string;\n column?: string;\n}\n\nexport interface IGridSort {\n field?: string;\n direction?: EGridSortDirection;\n priority: number;\n tableAlias?: string;\n}\n\nexport class IGridServerSideEvent {\n filters?: IGridFilter[];\n sorts?: IGridSort[];\n page?: number;\n pageSize?: number;\n}\n\nexport interface IGridPaginationEvent {\n first: number;\n rows: number;\n}\n\nexport interface IGridColumnAction {\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\n tooltip: string;\n width?: string;\n confirmDialog?: boolean;\n onClick: (row: any) => void;\n}\n\nexport interface IGridRowAction {\n title: string;\n class?: string;\n onClick: (row: any) => void;\n}\n\nexport enum EGridFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n PERIOD = 'MM/yy',\n LONGDATE = 'MM/dd/YY, h:mm a',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport enum EGlobalFilterFormatType {\n SMALLDATE = 'mm/dd/y',\n SHORTDATE = 'mm/dd/yy',\n}\n\nexport enum EGridSelectionType {\n SINGLE = 'single',\n MULTIPLE = 'multiple',\n}\n\nexport type MenuFilterControls =\n | GridFilterControlType.INPUT\n | GridFilterControlType.NUMERICINPUT\n | GridFilterControlType.CALENDAR;\n\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\n\nexport interface addColumn {\n target?: EGridlink;\n component?: Type<any>;\n control?: EGridColumnType;\n field?: string;\n displayField?: string;\n header?: string;\n showOption?: boolean;\n style?: string;\n type?: EGridColumnType;\n format?: string | EGridFormatType | IGridFormat;\n data?: any;\n filtering?: boolean;\n showTime?: boolean;\n timeOnly?: boolean;\n hidden?: boolean;\n hyperlink?: string;\n allowSearch?: boolean;\n minutesInterval?: number;\n sorting?: boolean;\n filter?: IGridFilterType;\n tableAlias?: string;\n linkId?: string;\n editable?: boolean;\n editLink?: boolean;\n params?: {[key: string]: any};\n displayText?: string;\n disabled?: boolean;\n allowSave?: boolean;\n errorMessage?: string;\n validations?: IGridValidation[];\n isvalid?: boolean;\n saveAsString?: boolean;\n onClick?: (row: any) => void;\n onReturn?: (value?: any, column?: any, row?: any) => void;\n onFocusOut?: (value: any) => any;\n onChange?: (row: any) => void;\n aggregate?: IGridAggregate[];\n formatter?: EGridFormatter;\n permissions?: IPermission[];\n optionLabel?: string;\n optionValue?: string;\n dropDownProp?: IDropDownRequest;\n lookupControl?: IGridLookupControl;\n icon?: string;\n color?: string;\n id?: number;\n value?: any;\n}\n\nexport interface addFilterColumn {\n control?: GridFilterControlType;\n field?: string;\n header?: string;\n filter?: GridFilterControlType;\n filtering?: boolean;\n hidden?: boolean;\n style?: string;\n showTime?: boolean;\n timeOnly?: boolean;\n format?: string;\n tableAlias?: string;\n validations?: IGridValidation[] | any;\n errorMessage?: string;\n isvalid?: boolean;\n disabled?: boolean;\n allowSave?: boolean;\n permissions?: IPermission[];\n component?: Type<any>;\n type?: EGridColumnType;\n data?: any;\n}\n\nexport interface IGridValidation {\n type: EGridValidator | EFilterValidator;\n expression?: any;\n}\nexport enum EFilterValidator {\n REQUIRED = \"required\",\n}\nexport interface IGridReportBtn extends IReportBtn{\n type?: EGridColumnType.REPORT;\n}\nexport interface IGridRowProp{\n propName: EGridRowPropName | string; //IGridColumnPropName;\n propValue: any;\n field: string;\n}\n\nexport enum EGridRowPropName {\n DISPLAYTEXT = 'displayText',\n DISABLED = 'disabled',\n DISPLAYFIELD = 'displayField',\n HIDDEN = 'hidden',\n ICON = 'icon',\n}\n\nexport enum EGridValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport interface addGlobalFilter {\n field?: string;\n validations?: IGridValidation[];\n displayText?: string;\n type?: GridFilterControlType;\n data?: any;\n value?: any;\n valueTwo?: any;\n matchMode?: string;\n operator?: string;\n tableAlias?: string;\n optionLabel?: string;\n optionValue?: string;\n format?: EGlobalFilterFormatType | IGridFormat | any;\n column?: string;\n onFocusOut?: (value: any) => any;\n filtering?: boolean;\n dayRange?: EDayRange;\n fromField?: string;\n toField?: string;\n lookupControl?: ILookupControlFilter;\n allowSearch?: boolean;\n disabled?: boolean;\n labelText?: string;\n prefix?: boolean;\n hidden?: boolean;\n color?: string;\n}\n\nexport interface IGridFormat {\n type: EGridFormatType;\n formatParams?:\n | IGridFormatParam\n | IGridDateFormatParam\n | IGridNumberFormatParam\n | IGridCurrencyFormatParam\n | IGridallowcalculateFormatParam;\n\n formatter?: (value: any) => any;\n}\n\nexport interface IGridFormatParam {\n locale?: string;\n}\n\nexport interface IGridDateFormatParam extends IGridFormatParam {\n format?: string;\n}\n\nexport interface IGridNumberFormatParam extends IGridFormatParam {\n digitsInfo?: string;\n}\n\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\n currency: string;\n}\n\nexport interface IGridProp {\n name: string;\n value: any;\n field?: string;\n}\n\nexport interface IGridPropFilter {\n field: string;\n value: any;\n}\n\nexport interface IGridFilterInfo {\n [key:string]:any;\n}\n","import { Component, OnInit, Optional } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'lib-alert-pop-up',\n templateUrl: './alert-pop-up.component.html',\n styleUrls: ['./alert-pop-up.component.css']\n})\nexport class AlertPopUpComponent implements OnInit {\n buttons: any[]\n message: string;\n icon: string;\n\n constructor(@Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef,) { }\n\n ngOnInit(): void {\n if(this.config?.data){\n this.message = this.config.data?.alertPopInfo?.message;\n this.buttons = this.config.data?.alertPopInfo?.buttons;\n this.icon = this.config.data?.alertPopInfo?.icon;\n }\n }\n\n clickedBtn(button: any){\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\n if(closeBtn){\n closeBtn?.click();\n this.ref.close(button);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ConfirmationService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\nimport { IAlertPopUp, } from '../models/grid.model';\n\n@Injectable()\nexport class AlertService {\n \n constructor(\n private toastr: ToastrService,\n public dialogService: DialogService,\n private confirmationService: ConfirmationService\n ) { }\n\n success(message: string, time: number = 5000) {\n this.toastr.success(message, \"\", { closeButton: true, timeOut: time });\n }\n\n info(message: string, time: number = 5000) {\n this.toastr.info(message, \"\", { closeButton: true, timeOut: time });\n }\n\n warning(message: string, time: number = 5000) {\n this.toastr.warning(message, \"\", { closeButton: true, timeOut: time });\n }\n\n error(error: string, time: number = 5000, message?: string,) {\n this.toastr.error(error, message, { closeButton: true, timeOut: time });\n }\n\n apiError(error: any, time: number = 5000) {\n if (typeof error === 'string' || typeof error.error === 'string') {\n typeof error.error === 'string' ? this.error(error.error, time) : this.error(error, time);\n } else if (error && error.error && error.error.errorDetails) {\n const [responseError] = error.error.errorDetails;\n this.error(responseError.errorMessage, time);\n }\n else if(error && error.headers && error.status !== 401) {\n this.error('something went wrong during api request', time);\n }\n }\n\n \n confirm({\n message = \"Are you sure that you want to proceed?\",\n header = \"Confirmation\",\n icon = \"pi pi-exclamation-triangle\",\n key= '',\n } = {}): Promise<any> {\n return new Promise(resolve => {\n this.confirmationService.confirm({\n message,\n header,\n icon,\n key,\n accept: () => {\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\n this.confirmationService.close();\n },\n reject: () => {\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\n this.confirmationService.close();\n }\n })\n });\n }\n\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\n return new Promise(resolve => {\n const ref = this.dialogService.open(AlertPopUpComponent, {\n styleClass: 'alertPopUp',\n header: header,\n width: width,\n height: height,\n data: { alertPopInfo: {message, icon, buttons}},\n });\n ref.onClose.subscribe((res) => {\n if (res) {\n resolve(res.buttonLabel);\n }\n });\n });\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Response } from '../models/response.model';\nimport { Environment } from '../models/response.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestService {\n\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \n }\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\n }\n\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getRequest<T, K>(endpoint: string) {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\n }\n\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\n }\n\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\n }\n\n getCurrentRoute(): any{\n let route = window.location.href;\n if(route && route.includes('/')){\n let currentRoute = route.split('/');\n route = currentRoute[currentRoute.length-1];\n const source = `?source=${route}`;\n return source;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\nimport { ISelectItem } from '../models/grid.model';\nimport { GridService } from './grid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DropdownService {\n constructor(\n private requestService: RequestService,\n ) {}\n\n /**\n * Function to set the values for dropdown\n * @param response array of data\n * @param valueProp property name for value\n * @param labelProp property name for label\n */\n\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\n let dropdownvalues: ISelectItem[] = [];\n return new Promise((resolve, reject) => {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\n if (response) {\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\n return resolve(dropdownvalues);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n })\n });\n }\n\n setDropDown(response: any, valueProp: string, labelProp: string) {\n if (valueProp) valueProp = valueProp.toLowerCase();\n if (labelProp) labelProp = labelProp.toLowerCase();\n let dropdownvalues: ISelectItem[] = [];\n if (response.records) {\n this.setDataFields(response.records).forEach((record: any) => {\n if (\n record.hasOwnProperty(valueProp && labelProp) &&\n record[valueProp] &&\n record[labelProp]\n ) {\n dropdownvalues.push({\n label: record[labelProp].toString().trim(),\n value: record[valueProp].toString().trim(),\n });\n }\n });\n }\n return dropdownvalues;\n }\n\n setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n data.push(result);\n });\n }\n return data;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { EGridColumnType } from '../models/grid.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { RequestService } from './request.service';\nimport { IDynamicForm } from '../models/form.model';\nimport { IDictionary } from '../models/common.model';\n@Injectable({\n providedIn: 'root',\n})\nexport class HyperlinkService {\n constructor(private requestService: RequestService) { }\n\n buildUrl(linkIds: any, params: { [key: string]: string }) {\n return new Promise((resolve, reject) => {\n if (Array.isArray(linkIds)) {\n this.requestService\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\n .subscribe(\n (res: any) => {\n if (res) {\n return resolve(res);\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n } else {\n this.requestService\n .getOne<any, any>('/Link/ByLinkId', linkIds)\n .subscribe(\n (response) => {\n if (response) {\n return resolve(this.setUrl(params, response));\n } else {\n return resolve('');\n }\n },\n ({ error }) => {\n reject(error);\n }\n );\n }\n });\n }\n\n setUrl(params: { [key: string]: string }, response: any) {\n let url: string = response.url;\n for (let paramKey in params) {\n const lowerKey = paramKey.toLowerCase();\n const paramValue = params[paramKey];\n if (\n url &&\n url.search &&\n url.search(lowerKey) > 0 &&\n paramValue &&\n paramValue.length > 0\n ) {\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\n }\n }\n return url;\n }\n\n async addHyperlinks(columns: any) {\n let linkIds: any[] = [];\n let params: any;\n if (columns && Array.isArray(columns)) {\n columns.forEach((column) => {\n if (\n (column.type === EGridColumnType.LINK ||\n column.type === EGridColumnType.IFRAME||\n column.type === EGridColumnType.LOOKUP_INPUT) &&\n column.linkId &&\n column.params\n ) {\n linkIds.push(column.linkId);\n params = column.params;\n }\n });\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n } else if (columns.linkId) {\n linkIds.push(columns.linkId);\n params = columns.params;\n return await this.buildUrl(linkIds, params).then((res: any) => {\n return res;\n });\n }\n }\n\n setLinkParamValues(\n { formSections }: IDynamicForm,\n field: string,\n params: any[]\n ) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n const isLabelLink =\n formField.label && typeof formField.label === 'object';\n if (\n formField.field?.toLowerCase() === field?.toLowerCase() ||\n (isLabelLink &&\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label &&\n typeof formField.label === 'string' &&\n formField.label?.toLowerCase() === field?.toLowerCase())\n ) {\n let newLink: string = isLabelLink\n ? formField.label?.labelControl?.orignalLink\n : formField.hyperlink?.link;\n \n if (newLink && newLink.length > 0) {\n return params.map((paramObj: IDictionary): any => {\n if (\n (typeof paramObj.value === 'object' && paramObj.value) ||\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\n ) {\n // removing https:// or http:// from hyperlink param value\n if (\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \n (newLink.includes('https://') || newLink.includes('http://')) \n ) {\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\n }\n const paramName: string = paramObj.name.toLowerCase();\n const paramFormat: string = !paramObj.value\n ? '{{' + paramName + '}}'\n : paramName;\n \n if (newLink.localeCompare(paramFormat)) {\n let setLink =\n paramFormat !== '{{' + paramFormat + '}}'\n ? '{{' + paramFormat + '}}'\n : paramFormat;\n \n newLink = newLink.replace(\n new RegExp(setLink, 'ig'),\n (paramObj.value)?.toTrim()\n );\n if (newLink && !newLink.startsWith('http'))\n {\n newLink = \"http://\" + newLink;\n }\n }\n return isLabelLink\n ? (formField.label.labelControl.hyperlink.link = newLink)\n : (formField.hyperlink.link = newLink);\n }\n });\n }\n }\n });\n });\n }\n\n setSidebarLink(response: any, sidebar: ISidebar[]) {\n response.forEach((res: any) => {\n sidebar.forEach((item) => {\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\n item.onClick(res.url);\n }\n });\n });\n }\n\n}\n","import { Type } from '@angular/core';\nimport { IGridSort, ISelectItem } from './grid.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IDynamicForm {\n formSections?: IFormSection[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface ILabel {\n name: string;\n disabled?: boolean;\n labelControl?: IFormField;\n onReturn?: (value: any) => void;\n onClick?: () => void;\n}\n\nexport interface IDropDownRequest {\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters?: ISetFilter[]\n sorts?:IGridSort[] \n}\n\nexport interface ISetFilter {\n field?: string,\n value?: any,\n matchMode?: string,\n operator?: string,\n valueField?: string;\n}\n\nexport interface IFormSection {\n name?: string;\n fields: IFormField[];\n icon?: string;\n class?: string;\n links?: ILabel[];\n permissions?: IPermission[];\n hidden?: boolean;\n accordionDisabled?: boolean;\n showAccordion?: boolean;\n expanded?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n}\n\nexport interface IFormField {\n label?: string | ILabel;\n class?: string;\n card?: IDynamicCard;\n control?: EFormControl;\n field?: string;\n displayField?: string;\n showOption?: boolean;\n value?: any | ILookupInputValue;\n data?: any[];\n validations?: IValidation[];\n errorMessage?: string;\n minutesInterval?: number;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n disabledText?: boolean;\n lookupControl?: ILookupControlField;\n tables?: string[];\n componentControl?: IFormComponentField;\n column?: number;\n row?: number;\n hyperlink?: IHyperlink;\n format?: IFormat;\n permissions?: IPermission[];\n hidden?: boolean;\n optionLabel?: string;\n optionValue?: string;\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?: any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n isvalid?: boolean;\n timeOnly?: boolean\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n requiredField?: boolean;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n uniqueKey?: string;\n azureContainer?: string;\n}\n\nexport interface IDynamicCard {\n id?: number;\n name?: string;\n data?: any[];\n orderByField?: string;\n formSections?: IFormSection[];\n onSort?: (value: any) => any;\n allowDelete?: boolean;\n allowDownload?: boolean;\n url?: string;\n caption?: string;\n width?: string;\n height?: string;\n allowEditableCaption?: boolean;\n onCaptionSave?: (value: any) => any;\n onDelete?: (value: any) => any;\n class?: string;\n cardInfo?: IViewCardProp;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\n\nexport interface IViewCardProp {\n url?: string;\n caption?: string;\n extension?: string;\n}\nexport interface IReportBtn{\n reportId: number;\n control?: EFormControl.REPORT;\n params?: any[];\n showDialog?: boolean;\n}\n\nexport interface IListFilter {\n uniqueKey: string;\n filters?: ISetFilter[];\n sorts?: IGridSort[];\n}\n\nexport interface IFormComponentField {\n component: Type<any>;\n id?:string;\n data?: {\n [key: string]: any;\n };\n handlers?: {\n [key: string]: Function;\n };\n}\n\nexport interface ILookupInputValue {\n text: any;\n value: any;\n}\n\nexport interface ILookupControlField {\n component: any;\n data: ILookupFieldData;\n id?: string;\n}\n\nexport declare type ILookupFieldData = {\n header?: string;\n height?: string;\n width?: string;\n data?: {[key: string]: any};\n valueField?: string;\n selectedValue?: string;\n} \n\nexport interface IValidation {\n type: EValidator;\n expression?: any;\n}\n\nexport enum ESelectFileType {\n EXCEL = '.excel',\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\n DOCUMENT = '.document',\n PDF = '.pdf',\n MRT = '.mrt',\n}\n\nexport enum EValidator {\n REQUIRED = 'required',\n MINLENGTH = 'minlength',\n MAXLENGTH = 'maxlength',\n PATTERN = 'pattern',\n MINIMUM = 'minimum',\n MAXIMUM = 'maximum',\n NUMERIC = 'numeric',\n DECIMAL = 'decimal',\n EMAIL = 'email',\n PHONE = 'phone',\n}\n\nexport enum EFormControl {\n BUTTON = 'button',\n LABEL = 'label',\n INPUT = 'input',\n CHECKBOX = 'checkbox',\n DROPDOWN = 'dropdown',\n CALENDAR = 'calender',\n NUMERIC = 'number',\n MULTISELECT = 'multi-select',\n TEXTAREA = 'text-area',\n HYPERLINK = 'hyperlink',\n LOOKUP_INPUT = 'lookup_input',\n NOTE_FIELD = 'note_field',\n COMPONENT = 'component',\n PASSWORD = 'password',\n AUTOCOMPLETE = 'AutoComplete',\n SPACER = 'spacer',\n SECTION_HEADER = 'section_header',\n FILE_UPLOAD = 'file_upload',\n CARD = 'card',\n DISPLAY_FILE = 'display_file',\n ADD_BUTTON = 'add_button',\n BREAK_LINE = 'break_line',\n SWITCH = 'switch',\n REPORT = 'report'\n}\n\nexport enum EOperator {\n AND = 'and',\n OR = 'or',\n}\n\nexport enum EMatchMode {\n EQUALS = 'equals',\n STARTSWITH = 'startsWith',\n CONTAINS ='contains',\n IN = 'in',\n ENDSWITH = 'endsWith',\n NOTEQUALS = 'notEquals',\n ISNOT = 'isNot',\n DATEISNOT = 'dateIsNot',\n NOTCONTAINS ='notContains',\n LT = 'lt',\n BEFORE = 'before',\n DATEBEFORE = 'datebefore',\n LTE = 'lte',\n GT = 'gt',\n AFTER = 'after',\n DATEAFTER = 'dateAfter',\n GTE = 'gte',\n}\n\nexport interface IFormat {\n type: EFormatType;\n formatParams?:\n | IFormatParam\n | IDateFormatParam\n | INumberFormatParam\n | IallowCalculateFormatParam\n | ICurrencyFormatParam;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParam {\n locale?: string;\n}\n\nexport interface IDateFormatParam extends IFormatParam {\n format?: string;\n}\n\nexport interface IallowCalculateFormatParam extends IFormatParam {\n allowCalculate?: boolean;\n}\n\nexport interface INumberFormatParam extends IFormatParam {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParam extends INumberFormatParam {\n currency: string;\n}\n\nexport enum EFormatType {\n SMALLDATE = 'mm/d/y',\n SHORTDATE = 'mm/d/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n MONTHONLY = 'mm/yy',\n PERIOD = 'mm/y',\n BOOLEAN_YN = 'BOOLEAN_YN',\n CUSTOM = 'custom',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}\n\nexport interface IHyperlink {\n target?: EHyperlink;\n link?: string;\n linkId?: string;\n params?: any;\n width?:string;\n height?:string;\n component?: any;\n data?: ILookupFieldData;\n}\n\nexport enum EHyperlink {\n BLANK = '_blank',\n SELF = '_self',\n PARENT = '_parent',\n TOP = '_top',\n IFRAME = '_iframe',\n DIALOG = '_dialog'\n}\n\nexport interface AddFormField {\n control?: EFormControl;\n field?: string;\n class?: string;\n displayField?: string;\n showOption?: boolean;\n label?: string | ILabel;\n value?: string | any;\n format?: IFormat;\n permissions?: IPermission[];\n id?: string;\n hidden?: boolean;\n validations?: IValidation[] | any;\n hyperlink?: IHyperlink;\n lookupControl?: ILookupControlField;\n tables?: string[];\n minutesInterval?: number;\n disabled?: boolean | any;\n disabledText?: boolean;\n column?: number;\n row?: number;\n componentControl?: IFormComponentField;\n data?: ISelectItem[];\n optionLabel?: string;\n optionValue?: string;\n timeOnly?: boolean;\n monthOnly?: boolean;\n showTime?: boolean; // to show time as well in calendar form field\n saveAsString?: boolean;\n showAllValue?: boolean;\n onClick?: (value?: any) => any;\n onReturn?: (value?: any, selectedRow?:any) => void;\n onFocusOut?: (value: any) => void;\n onChange?: (value: any) => any;\n height?: string;\n showBottomBorder?: boolean;\n allowSearch?: boolean;\n selectMultipleFiles?: boolean;\n SetfileTypes?: ESelectFileType;\n icon?: string;\n color?: string;\n card?: IDynamicCard;\n}\n","import { formatDate } from '@angular/common';\nimport { ISidebar } from '../../public-api';\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\nimport {\n EFormatType,\n EFormControl,\n EHyperlink,\n EMatchMode,\n EOperator,\n IDynamicCard,\n IDynamicForm,\n IFormat,\n IFormField,\n IFormSection,\n} from '../models/form.model';\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\nimport { Subject } from 'rxjs';\n\n/* #region public methods */\n\n/**\n *\n * @param value : any\n * Function receives the value and expects the value to be formated.\n * Do not use fat arrow function as they do not preserve the context.\n * this.value refers to the value of IFormField Object\n * Modify this.value directly to receive effect\n */\n\n var formstate = new Subject<any>();\n\n export function changeDynamicFormState(id: any, data: any) {\n formstate.next({ id, data });\n}\n \n export function onDynamicFormStateChange() {\n return formstate.asObservable();\n }\n\n export function closeIFrame(){\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\n if(close) {\n close.click();\n }\n}\n\nexport function toDecimal(value: any): any {\n if (value) {\n return parseFloat(value.toString()).toFixed(2);\n }\n}\n\nexport function toBoolean(value: any) {\n return value === 'Y' ? true : false;\n}\n\nexport function toShortDate(value: any, format?: IFormat) {\n if (value && value !== '') {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function toShortDateTime(value: any, format?: IFormat) {\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\n if (\n format &&\n (format.type === EFormatType.LONGDATE ||\n format.type === EFormatType.MEDIUMDATE)\n ) {\n return value;\n } else {\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\n }\n } else {\n return null;\n }\n}\n\nexport function setDialogData(columns:IGridColumn[], fieldName:string, value:any){\n columns?.forEach((column)=>{\n if(column.field?.toString() === fieldName?.toString() && column.component){\n let keys=Object.keys(value);\n keys.forEach((key)=>{\n column.data.data={...column.data?.data, [key]:value[key]};\n })\n }\n })\n}\n\nexport function toTrim(text: any) {\n if (typeof text === 'string') {\n return text.trim();\n } else {\n return text;\n }\n}\n\nexport function getMatchKey(obj: any, propName: string): string {\n if (!obj || !propName) {\n return '';\n }\n\n let matchedKey = '';\n if (Array.isArray(obj)) {\n obj.forEach((row) => {\n const keys: any[] = Object.keys(row);\n if (!matchedKey || matchedKey.length === 0) {\n matchedKey = keys.find(\n (x) => x.toLowerCase() === propName.toLowerCase()\n );\n }\n });\n } else {\n const keys: any[] = Object.keys(obj);\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\n }\n\n return matchedKey;\n}\n\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\n let formattedValue: any = value;\n if (formField.format) {\n switch (formField.format.type) {\n case EFormatType.DECIMAL:\n formattedValue = toDecimal(value);\n break;\n case EFormatType.BOOLEAN_YN:\n formattedValue = toBoolean(value);\n break;\n case EFormatType.SHORTDATE:\n formattedValue = toShortDate(value);\n break;\n case EFormatType.CUSTOM:\n if (formField.format.formatter) {\n formattedValue = formField.format.formatter(value);\n }\n break;\n default:\n break;\n }\n }\n return formattedValue;\n}\n\nexport function setFormField (\n { formSections }: IDynamicForm,\n formFieldObj: IFormField\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField: IFormField) => {\n if (\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\n (formField.label && formField.label === formFieldObj.label)\n ) {\n formField = formFieldObj;\n }\n return formField;\n }));\n });\n}\n\nexport function setHyperlinkComponentData (\n { formSections }: IDynamicForm,\n label: string,\n data: any\n){\n formSections?.forEach((section) => {\n let field=section.fields.find((field)=> field.label && field.label===label)\n if(field && field.hyperlink) field.hyperlink.params = data;\n});\n}\n\nexport function setAutoCompleteData(\n values: any[],\n uniqueId: any,\n labelKey: string,\n ValueKey: string,\n){\n if(values?.length > 0){\n values = values?.map((rowValue) => ({[labelKey]: rowValue, [ValueKey]: uniqueId}));\n }\n return values;\n}\n\nexport function setLookupData(\n { formSections }: IDynamicForm,\n field: string,\n data: any\n) {\n formSections?.map((section: IFormSection) => {\n section.fields.map((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data &&\n data\n ) {\n formField.label.labelControl.lookupControl.data.data = data;\n }\n if (formField.lookupControl && formField.lookupControl.data && data) {\n formField.lookupControl.data.data = data;\n }\n }\n });\n });\n return formSections;\n}\n\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\n let newLink: string = link;\n if (params && params.length > 0) {\n params.map((param) => {\n const url = param.name ? '{{' + param.name + '}}' : '';\n if (newLink.localeCompare(url)) {\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\n }\n });\n }\n return newLink;\n}\n\nexport function setFormFieldProp(\n { formSections }: IDynamicForm,\n field: string,\n props: IDictionary[]\n) {\n return formSections?.map((section: any) => {\n return section.fields.map((formField: any): any => {\n if (\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\n ) {\n return props.map((prop: IDictionary) => {\n if (formField.hasOwnProperty(prop.name)) {\n return (formField[prop.name] = prop.value);\n }\n });\n }\n });\n });\n}\n\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\n if(section){\n section.fields.push(formField);\n }\n return dynamicForm;\n}\n\nexport function setFormFields(\n { formSections }: IDynamicForm,\n formFields: IFormField[]\n) {\n return formSections?.map((section) => {\n return (section.fields = section.fields.map((formField) => {\n let matchedField = formFields.find(\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\n );\n if (matchedField) {\n formField = matchedField;\n }\n return formField;\n }));\n });\n}\n\nexport function getGlobalFilters(\n globalFilters: addGlobalFilter[],\n field: string,\n) {\n let formFieldObj: any;\n globalFilters.map((filter)=>{\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = filter;\n }\n });\n return formFieldObj;\n}\n\nexport function setFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n value: any,\n displayText: string = ''\n) {\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n if (displayText && displayText.length > 0) {\n formField.value = { text: displayText, value: value };\n } else {\n formField.value = value;\n }\n }\n });\n });\n}\n\nexport function getFormFields(\n { formSections }: IDynamicForm,\n formControl: EFormControl\n): IFormField[] {\n let formFields: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.control === formControl) {\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\n {\n formField.value = formField.value.text.trim();\n }\n else if (formField.value && typeof(formField.value) === 'string')\n {\n formField.value = formField.value.trim();\n }\n formFields.push(formField);\n }\n });\n });\n return formFields;\n}\n\nexport function getFormField(\n { formSections }: IDynamicForm,\n field: string\n): IFormField {\n let formFieldObj: any;\n formSections?.forEach((section) => {\n section.fields.forEach((formField) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n formFieldObj = formField;\n }\n });\n });\n return formFieldObj;\n}\n\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\n// exist in the field then always return a displayField value.\nexport function getFormFieldValue(\n { formSections }: IDynamicForm,\n field: string,\n returnDisplayFieldValue:boolean = false\n) {\n let value;\n for (const section of formSections as any) {\n section.fields.forEach((formField: any) => {\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\n if (\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\n formField.displayField\n ) {\n value = isValid ? formField.value?.text : formField.value?.value;\n } else {\n value = isValid\n ? formField.value?.text\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\n ? formField.value?.value\n : formField.value;\n }\n }\n });\n }\n return value;\n}\n\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\n let value:any = getFormFieldValue(dynamicForm,field, true);\n if (value){\n value = value.toString();\n }\n return value;\n}\n\nexport function getSectionFieldValue(\n formSections: IFormSection[],\n field: string\n) {\n let form: IDynamicForm = { formSections };\n return getFormFieldValue(form, field, true);\n}\n\nexport function setSaveFormValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let response: any = {};\n if (tables && tables.length > 0) {\n tables.forEach((tableName) => {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n\n sectionFields?.forEach((field) => {\n const table = field.tables?.map((table) => table.toLowerCase());\n\n if (table && table.includes(tableName.toLowerCase())) {\n if (!response[tableName]) {\n response[tableName] = {};\n }\n\n if (field.field && field.field.length > 0) {\n response[tableName][field.field] = formatFormFieldCValue(field);\n }\n }\n });\n });\n });\n } else {\n formSections.forEach((formSection) => {\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\n sectionFields?.forEach((field) => {\n if (field.field && field.field.length > 0) {\n response[field.field] = formatFormFieldCValue(field);\n }\n });\n });\n }\n\n return response;\n}\n\nexport function setSaveCardValues(\n formSections: IFormSection[],\n tables?: string[]\n) {\n let values: IFormField[] = [];\n formSections?.forEach((section) => {\n section.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.card.data) {\n field.card.data.forEach((cardData: any) => {\n if (cardData.dynamicForm.formSections) {\n values.push(\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\n );\n }\n });\n }\n });\n });\n return values;\n}\n\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\n if (data && data.length > 0 && Array.isArray(data)) {\n data.forEach((dataRow) => {\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\n });\n } else {\n setEditFormFieldsInfo(data, dynamicForm);\n }\n}\n\nexport function setFilter(\n field: string,\n value: any,\n matchMode: EMatchMode = EMatchMode.EQUALS,\n operator: EOperator = EOperator.AND,\n) {\n const filter: any = {\n field: field,\n matchMode: matchMode,\n operator: operator,\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\n };\n return filter;\n}\n\nexport function setAndFilter(field: string, value: any) {\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\n}\n\nexport function getOrigDataFieldValue(data: any, propName: string): any {\n let value: any;\n if (data) {\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n value = getPropertyValue(data[i], propName);\n if (value) {\n return value;\n }\n }\n } else {\n value = getPropertyValue(data, propName);\n }\n }\n return value;\n}\n\nexport function getOrigDataFieldValueAsString(\n data: any,\n propName: string\n): string {\n let value = getOrigDataFieldValue(data, propName);\n if (value) {\n return value.toString();\n } else {\n return '';\n }\n}\n\nexport function setSectionPropValues(\n { formSections }: IDynamicForm,\n sectionName: string,\n props: IDictionary[]\n) {\n formSections?.map((section) => {\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\n props.map((prop) => {\n return setPropValue(section, prop);\n });\n }\n });\n}\n\n/* #endregion */\n\n/* #region private methods */\n\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\n if (data.records && data.records.length > 0) {\n data.records.forEach((record: any) => {\n const keys: string[] = Object.keys(record);\n dynamicForm.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField: any) => {\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\n );\n\n if (matchedKey) {\n // set label hyperlink\n setLabelHyperlink(formField, record, keys, allData);\n }\n\n if (\n formField.control === EFormControl.HYPERLINK &&\n formField.hyperlink &&\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\n formField.hyperlink.link)\n ) {\n let params = formField.hyperlink.params;\n let paramKeys: string[] = [];\n\n if (\n !params &&\n formField.hyperlink.link &&\n formField.hyperlink.link.includes('}}')\n ) {\n paramKeys = formField.hyperlink.link.split('}}');\n paramKeys = paramKeys.map((paramKey) => {\n paramKey = paramKey.replace('{{', '').trim();\n return paramKey;\n });\n paramKeys = paramKeys.filter((x) => x.length > 0);\n } else {\n if(params){\n paramKeys = Object.keys(params);\n }\n }\n\n formField.hyperlink.link = setHyperlink(\n keys,\n record,\n formField.hyperlink.link,\n paramKeys,\n formField.hyperlink.params,\n allData\n );\n } else {\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\n ? new Date(record[matchedKey] as string)\n : '';\n } else if (formField.control === EFormControl.CARD) {\n if (formField.card && formField.card.formSections) {\n if (!formField.card.data) {\n formField.card.data = data;\n }\n \n setEditFormFieldsInfo(data, formField.card);\n }\n } else if (\n formField.control === EFormControl.AUTOCOMPLETE &&\n matchedKey\n ) {\n let arrayValue = [];\n if (record[matchedKey] && formField.displayField) {\n arrayValue.push({[formField.displayField] : record[matchedKey]});\n }\n formField.value = arrayValue;\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl &&\n formField.label.labelControl.lookupControl.data\n ) {\n const obj = autoSetLookupData(\n formField.label.labelControl.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.label.labelControl.lookupControl.data.data = obj;\n }\n }\n\n if (\n formField.lookupControl &&\n formField.lookupControl.data &&\n formField.lookupControl.data.data\n ) {\n const obj = autoSetLookupData(\n formField.lookupControl.data.data,\n record\n );\n if (obj) {\n formField.lookupControl.data.data = obj;\n }\n }\n if(record[matchedKey]){\n formField.value = toTrim(record[matchedKey]);\n }\n if (\n formField.displayField &&\n formField.displayField.length > 0\n ) {\n const matchDisplayField = getMatchKey(\n record,\n formField.displayField\n );\n if (matchDisplayField) {\n formField.value = {\n text: toTrim(record[matchDisplayField]),\n value: formField.value?.value,\n };\n }\n\n const matchValueField = getMatchKey(record, formField.field);\n if (matchValueField) {\n formField.value = {\n text: formField.value?.text,\n value: toTrim(record[matchValueField]),\n };\n }\n }\n } else if (\n formField.control === EFormControl.COMPONENT &&\n formField.componentControl?.data\n ) {\n formField.componentControl.data = findKeysAndValue(\n formField.componentControl.data,\n record\n );\n changeDynamicFormState(\n formField.componentControl.id,\n formField.componentControl?.data\n );\n } else if (\n formField.control === EFormControl.NUMERIC &&\n formField.label?.labelControl?.lookupControl?.data?.data\n ) {\n let setData = formField.label.labelControl.lookupControl;\n setData.data.data = findKeysAndValue(setData.data.data, record);\n changeDynamicFormState(setData.id, setData.data.data);\n } else if (formField.control === EFormControl.HYPERLINK \n && formField.hyperlink?.target === EHyperlink.DIALOG \n && formField.hyperlink.params\n ) {\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\n } else if (matchedKey) {\n if (formField.format) {\n formField.value = formatFormFieldValue(\n formField,\n record[matchedKey]\n );\n } else if (formField.control === EFormControl.CHECKBOX) {\n formField.value =\n record[matchedKey] &&\n (record[matchedKey].toString() === '1' ||\n record[matchedKey].toString() === 'true')\n ? true\n : false;\n }else if (formField.control === EFormControl.DROPDOWN) {\n let dropValue = record[matchedKey];\n formField.value = dropValue\n ? dropValue.toString()\n : dropValue;\n } else {\n formField.value = toTrim(record[matchedKey]);\n }\n }\n }\n });\n }\n });\n });\n }\n}\n\n//set hyperlink param value as field value\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\n let keys: string[] = [];\n let link: string ='';\n let paramKeys: string[] = [];\n let param: any;\n let fieldInfo: any;\n dynamicForm.formSections?.forEach((section: any) => {\n section.fields.forEach((formField: any) => {\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\n keys = Object.keys(record);\n if(formField?.label?.labelControl?.orignalLink){\n link = formField.label.labelControl.orignalLink;\n }\n\n if(formField?.label?.labelControl?.hyperlink?.params){\n param = formField.label.labelControl.hyperlink.params;\n paramKeys = Object.keys(param);\n }\n fieldInfo = formField;\n if(record && keys && link && paramKeys && param && fieldInfo){\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\n }\n }\n });\n });\n}\n\nexport function objConvertToLower(obj: any) {\n return Object.keys(obj).reduce((accumulator: any, key) => {\n accumulator[key.toLowerCase()] = obj[key];\n return accumulator;\n }, {});\n}\n\nexport function clickSectionHighlight(value: any) {\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\n allMenuItems?.forEach((menauItem: any) => {\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\n })\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\n });\n}\n\nexport function removeActiveIconClass() {\n const activeIcon = document.body?.querySelectorAll('.active-icon');\n if (activeIcon && activeIcon.length > 0) {\n activeIcon?.forEach((icon: any, index: any) => {\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\n });\n }\n}\n\nexport function highlightLeftSidebar(){\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\n\n allIconElements?.forEach((icon: any, index: any) => {\n icon?.setAttribute('tabIndex', 'section' + index);\n });\n removeActiveIconClass();\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\n const currentId = \"section\" + index;\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\n } else{\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \n }\n });\n });\n }\n\nexport function findKeysAndValue(data: any, record: any) {\n let valueKey: string = '';\n Object.keys(data).forEach((dataKey) => {\n let valueContainsKey: boolean = false;\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\n valueContainsKey = true;\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n }\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\n if (key && key.length > 0) {\n data = { ...data, [dataKey]: record[key] };\n }\n });\n return data;\n}\n\nexport function setPropValue(obj: any, prop: IDictionary) {\n const matchedKey: string = getMatchKey(obj, prop.name);\n if (matchedKey) {\n return (obj[matchedKey] = prop.value);\n }\n}\n\nexport function hasRole(role: string): boolean {\n let storage = localStorage.getItem('CurrentUserInfo');\n if (storage) {\n let currentUser = JSON.parse(storage);\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\n }\n }\n return false;\n}\n\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\n if (\n item.label &&\n item.label.labelControl &&\n item.label.labelControl.hyperlink &&\n item.label.labelControl.hyperlink.params\n ) {\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\n const link = item.label.labelControl.hyperlink.link;\n if (item.label.labelControl.hyperlink.link) {\n item.label.labelControl.hyperlink.link = setHyperlink(\n keys,\n record,\n link,\n paramKeys,\n item.label.labelControl.hyperlink.params,\n allData\n );\n }\n }\n}\n\nexport function setHyperlink(\n keys: string[],\n record: any,\n link: string,\n paramKeys: string[],\n params: any,\n allData: any[] = []\n): string {\n let newLink: string = link;\n record = objConvertToLower(record);\n paramKeys.forEach((paramkey) => {\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\n const isParamMatched = newLink.localeCompare(param);\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\n\n if (isParamMatched) {\n let paramValue = params ? params[paramkey] : null;\n if(paramValue === '' && paramInRecord){\n paramValue = '{'+paramkey+'}';\n }\n if (paramValue) {\n const propName = paramValue.toString().replace('{', '').replace('}', '');\n let propValue = record[propName.toLowerCase()];\n \n // in case of prop not found in record then try to find prop in all data array, to get its value \n if (!propValue && allData && allData.length > 0)\n {\n allData.forEach((data)=>{\n //const value = data.records.find((x)=> x[propName]);\n data.records.forEach((allRecord: any)=>{\n let keys = Object.keys(allRecord);\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\n if (matchKey){\n propValue = allRecord[matchKey];\n }\n });\n });\n }\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\n \n } else {\n // get param value from api response, if param key exists in it\n const matchedKey: any = keys.find(\n (x) => x.toLowerCase() === paramkey.toLowerCase()\n );\n\n if (matchedKey) {\n paramValue = record[matchedKey];\n if (paramValue) {\n newLink = newLink.replace(\n new RegExp(param, 'ig'),\n toTrim(paramValue)\n );\n } else {\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\n }\n }\n }\n }\n });\n // replace the {{param}} with empty\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\n }\n return newLink;\n}\n\n// its checking if there is no value in hyperlink param then it set key as a paramValue\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\n let paramValue: boolean = false;\n if(allData && allData.length > 0){\n allData.forEach((data: any)=>{\n if(data.records && data.records.length > 0){\n data.records.forEach((allRecord: any) =>{\n if(paramValue === false){\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\n };\n });\n };\n });\n }else{\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\n }\n return paramValue;\n}\n\nfunction getPropertyValue(data: any, propName: string) {\n let propValue: any;\n data.records?.forEach((record: any) => {\n for (const [key, value] of Object.entries(record)) {\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\n propValue = value;\n }\n }\n });\n return propValue;\n}\n\nfunction formatFormFieldCValue(field: any) {\n if (\n field.format?.type === EFormatType.BOOLEAN_YN &&\n field.format?.formatter?.name === 'toBoolean'\n ) {\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\n } else if (\n field.control === EFormControl.CALENDAR &&\n (field.value || field.value === '')\n ) {\n if(field.timeOnly && field.saveAsString){\n field.value = field.value;\n }else{\n field.value =\n field.showTime === true\n ? toShortDateTime(field.value, field.format)\n : toShortDate(field.value, field.format)\n }\n return field.value;\n } else if (\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value == undefined ? null : field.value.value;\n } else if (\n field.label &&\n field.label.labelControl &&\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\n field.value &&\n typeof field.value === 'object'\n ) {\n return field.value.value;\n } else {\n field.value = field.value == undefined ? null : field.value;\n return field.value;\n }\n}\n\nexport function autoSetLookupData(\n fieldData: any,\n response: any\n) {\n let obj = {};\n let record = setDataFields([response]);\n if (record && record.length > 0) {\n record.forEach((x: any) => {\n record = x;\n });\n }\n if (fieldData && record) {\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\n let rowKeys = Object.keys(record);\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\n let value = rowKeys?.find(\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\n );\n if (value && value.length > 0) {\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\n } else if (key && key.length > 0) {\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\n } else {\n obj = { ...obj, [dataKey]: dataValue };\n }\n });\n return obj;\n } else {\n return null;\n }\n}\n\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\n if(obj && obj.lookupControl?.data){\n obj.lookupControl.data.data = data;\n }\n}\n\nexport function setDataFields(response: any[]) {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n const result = Object.keys(x).reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n\n data.push(result);\n });\n }\n return data;\n}\n\nexport function setDialogResponse(\n formField: any,\n formData: any,\n response: any\n) {\n let value: any;\n if (response) {\n // if selectedValue does not exist then consider valueField as selectedValue\n if (\n formData &&\n formData.data &&\n formData.data.valueField &&\n !formData.data.selectedValue\n ) {\n formData.data.selectedValue = formData.data.valueField;\n }\n\n const matchValueKey: string = getMatchKey(\n response,\n formData?.data?.selectedValue\n );\n const matchFieldKey: string = getMatchKey(\n response,\n formData?.data?.valueField\n );\n\n if (\n formData?.data &&\n formData?.data.selectedValue &&\n formData?.data.valueField\n ) {\n let selectedValue = response[matchValueKey];\n let matchText = response[matchFieldKey];\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\n selectedValue = selectedValue.trim();\n matchText = matchText.trim();\n }\n value = { text: matchText, value: selectedValue };\n } else {\n const FieldKey: string = getMatchKey(response, formField.field);\n let value = response[FieldKey];\n if (value) {\n value = value.trim();\n }\n }\n }\n return value;\n}\n\nexport function currentUrl():string{\n let currentRoute: string = '';\n let url = window.location.href;\n if(url){\n let arr = url.split('/');\n currentRoute = arr[arr.length-1]\n } \n return currentRoute;\n}\n\nexport function getGridFilters(){\n let filters: any = [];\n let gridFilters = currentUrl();\n if(gridFilters && gridFilters.length > 0){\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\n filters = localFilter?.filters;\n }\n return filters;\n}\n\n//update the hidden or disabled and value based off other global filters.\nexport function setGlobalFilterPropValues(\n globalFilter: IGlobalFilter[],\n field: string,\n props: IFilterDictionary[],\n) {\n return globalFilter.map((filter: any) => {\n if (\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\n (filter.displayText &&\n filter.displayText.toLowerCase() === field?.toLowerCase())\n ) {\n props?.map((prop: IFilterDictionary) => {\n if (filter.hasOwnProperty(prop.propName)) {\n return (filter[prop.propName] = prop.propValue);\n } else if (prop.propValue && prop.propValue.length > 0) {\n return (filter.value = prop.propValue);\n }\n });\n }\n });\n}\n\nexport function setCardFieldsData(form: any) {\n if (form && form.dynamicform) {\n const { dynamicform, ...newData } = form;\n dynamicform?.formSections?.forEach((section: any) => {\n section.fields?.forEach((field: any) => {\n if (newData) {\n setEditFormFields({ records: [newData] }, dynamicform);\n }\n });\n });\n }\n}\n\n// disable Grid EditableRow Column\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let disableObj = { ...obj, disabled: true };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = disableObj;\n }\n return columns;\n}\n\n// enabled Grid EditableRow Column\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\n if (field && columns && columns.length > 0) {\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\n let enableObj = { ...obj, disabled: false };\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\n if (index !== -1) columns[index] = enableObj;\n }\n return columns;\n}\n\n // check the Minutes Interval\n export function setMinutesInterval(value: any){\n if (value) {\n const min = value.getMinutes().toString();\n if (min) {\n value = value.setMinutes(0);\n }\n }\n return value;\n}\n\n // update the response records\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\n if(index > -1){\n records[index] = rowData;\n }else{\n records.push(rowData);\n }\n return records;\n}\n\n//convert the time into date\nexport function setTimeInDate(time: any) {\n const convertTime12to24 = (time12h: any) => {\n const [time, modifier] = time12h?.toString()?.split(' ');\n let [hours, minutes] = time?.split(':');\n if (hours === '12') {\n hours = '00';\n }\n if (modifier === 'PM') {\n hours = parseInt(hours, 10) + 12;\n }\n return `${hours}:${minutes}`;\n };\n const date = convertTime12to24(time);\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\n const futureDate = new Date();\n futureDate.setTime(tempDate.getTime());\n return futureDate;\n}\n\n// return the data of the field \nexport function getFieldData({ formSections }: any, field: string){\n let data: any = []\n if(formSections?.length > 0 && field){\n formSections.forEach((section: any)=>{\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\n }\n })\n }\n return data;\n}\n\nexport function setAllFormFieldsValues(\n { formSections }: IDynamicForm,\n props: IFilterDictionary[]\n) {\n formSections?.map((section: IFormSection) => {\n if (section) {\n section.fields.map((formField: any) => {\n return props.map((prop: IFilterDictionary) => {\n if (formField) {\n return (formField[prop.propName] = prop.propValue);\n }\n });\n });\n }\n });\n}\n\nexport function calenderMinMaxValue(item: any,value: any, index){\n let validation: string = 'equal';\n var validDate = new Date(item.validations[index].expression);\n var currentDate = new Date(value);\n if (validDate.getTime() < currentDate.getTime()){\n validation = 'greater';\n }\n else if (validDate.getTime() > currentDate.getTime()){\n validation = 'minimum';\n }\n return validation;\n}\n/* #endregion */\n","import { Injectable } from '@angular/core';\nimport { LazyLoadEvent } from 'primeng/api';\nimport { IDropDownRequest } from '../models/form.model';\nimport { DatePipe } from '@angular/common';\nimport {\n EGridSortDirection,\n GridFilterControlType,\n IGlobalFilter,\n IGridFilter,\n IGridSort,\n EGridColumnType,\n addColumn,\n addFilterColumn,\n addGlobalFilter,\n IGridColumn,\n EGridValidator,\n IGridProp,\n IGridPropFilter,\n IGridRowProp,\n IGridReportBtn,\n} from '../models/grid.model';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { HyperlinkService } from './hyperlink.service';\nimport * as utilities from './utilities.service';\nimport { RequestService } from './request.service';\nimport { IDictionary } from '../models/common.model';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GridService {\n softCachingFilters: any = {};\n applyFilterEvent: boolean = true;\n public columnFocusedOut:boolean = false;\n constructor(\n public datepipe: DatePipe,\n private hyperlinkService: HyperlinkService,\n private dropdownService:DropdownService,\n private alertService:AlertService,\n private requestService: RequestService\n ) {}\n\n /**\n *\n * @param event\n * Receives lazy event and returns after proper mapping\n */\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\n const filters = this.mapFilters(event, columns);\n return this.handleMultiFilterField(filters);\n }\n\n /**\n * @param filters\n * Receives filters and returns array after removing duplicates\n * and creating comma separated values for same filters\n */\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\n return filters\n .map((x, i, arr) =>\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\n ? {\n ...x,\n value: arr\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\n .map((a) => a.value)\n .join(),\n }\n : x\n )\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\n }\n\n // Prepare basic grid filters\n prepareBasicFilters(\n event: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridFilter[] {\n return this.mapFilters(event, columns);\n }\n\n /**\n * Checks if filters has values then converts global filter values type into IGridFilter.\n */\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\n const globalData: IGridFilter[] = [];\n\n globalFilters?.forEach((filter: IGlobalFilter) => {\n if (\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\n filter.value.length) ||\n (typeof filter.value !== 'string' &&\n !Array.isArray(filter.value) &&\n filter.value) ||\n (typeof filter.value === 'boolean' && filter.value !== null) ||\n filter.type === GridFilterControlType.CALENDAR_RANGE\n ) {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\n // add filter for start date\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n\n // add filter for end date\n globalData.push({\n field: this.setGlobalFilterField(filter, false),\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter, false),\n tableAlias: filter.tableAlias,\n });\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\n globalData.push({\n field: this.setGlobalFilterField(filter),\n matchMode:\n filter.type === GridFilterControlType.MULTISELECT\n ? 'in'\n : filter.matchMode,\n operator: filter.operator ? filter.operator : 'and',\n value: this.setGlobalFilterValue(filter),\n tableAlias: filter.tableAlias,\n });\n }\n }\n });\n return globalData;\n }\n\n setGlobalFilterField(\n filter: any,\n isStartDate: boolean = true\n ): string {\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\n if (isStartDate) {\n return filter.fromField;\n } else {\n return filter.toField;\n }\n } else {\n return filter.field;\n }\n }\n\n // set global filter value\n setGlobalFilterValue(\n filter: IGlobalFilter,\n isStartDate: boolean = true\n ): string | number | Date | boolean {\n switch (filter.type) {\n case GridFilterControlType.MULTISELECT:\n return (filter.value as any[]).join(',');\n case GridFilterControlType.CALENDAR:\n return this.getFormattedDate(filter.value as Date);\n case GridFilterControlType.CALENDAR_RANGE:\n let dateValues: string[] = filter.value\n ? filter.value.toString().split('|')\n : [];\n if (dateValues && dateValues.length == 2) {\n let dateValue: Date = isStartDate\n ? new Date(dateValues[0])\n : new Date(dateValues[1]);\n return this.getFormattedDate(dateValue);\n } else {\n return '';\n }\n case GridFilterControlType.CHECKBOX:\n return filter.value ? true : false;\n default:\n return filter.value as string;\n }\n }\n\n checkValidity(columns: IGridColumn[], row: any){\n let isValid: boolean = true;\n columns.map((item: any) => {\n if (item.validations && !item.disabled) {\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\n const valid = item.validations && item.header\n if (\n item.validations[i].type == EGridValidator.REQUIRED &&\n !row[item.field] &&\n !item.hidden &&\n valid\n ) {\n isValid = row[item.field]\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINLENGTH &&\n row[item.field].length < item.validations[i].expression\n ) {\n isValid =\n row[item.field] && row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXLENGTH &&\n row[item.field].length > item.validations[i].expression\n ) {\n isValid =\n row[item.field] && row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MINIMUM &&\n isValid\n ) {\n if(item.type === EGridColumnType.DATE){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(row[item.field] < item.validations[i].expression){\n isValid =\n row[item.field] && row[item.field].length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.MAXIMUM &&\n isValid \n ) {\n if(item.type === EGridColumnType.DATE){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(row[item.field] > item.validations[i].expression){\n isValid =\n row[item.field] && row[item.field].length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.header} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PATTERN &&\n !row[item.field].match(item.validations[i].expression)\n ) {\n isValid =\n row[item.field] && row[item.field].match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.NUMERIC &&\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.PHONE &&\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.DECIMAL &&\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(\n item,\n `Enter ${item.validations[i].type} for ${valid}`\n );\n break;\n } else if (\n row[item.field] &&\n item.validations[i].type == EGridValidator.EMAIL &&\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n row[item.field] &&\n row[item.field]?.toString().match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n // set basic filter value\n setBasicFilterValue(filter: any): any {\n if (filter instanceof Date) {\n return this.getFormattedDate(filter);\n } else if (typeof filter === 'boolean') {\n return filter ? 1 : 0;\n } else {\n return filter;\n }\n }\n\n /**\n *\n * @param param\n * Receives lazy event and returns sort array\n */\n getGridSorts(\n { multiSortMeta }: LazyLoadEvent,\n columns: IGridColumn[]\n ): IGridSort[] {\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\n field,\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\n priority: i + 1,\n tableAlias: this.setTableAlias(field, columns),\n }));\n }\n\n /**\n *\n * @param event\n * Handles default and lookup filters\n */\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\n const filters: IGridFilter[] = [];\n Object.entries(event.filters).forEach(([field, value]: any) => {\n if (Array.isArray(value)) {\n (value as IGridFilter[]).forEach(\n ({ matchMode, operator, value: filter }) => {\n if (filter !== null) {\n filters.push({\n field,\n matchMode,\n operator,\n value: this.setBasicFilterValue(filter),\n tableAlias: this.setTableAlias(field, columns),\n });\n }\n }\n );\n } else {\n if (value.value !== '') {\n switch (typeof value.value) {\n case 'boolean':\n filters.push({\n field,\n matchMode: 'equals',\n operator: 'and',\n value: value.value ? 1 : 0,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'string':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'number':\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n break;\n case 'object':\n if (value.value instanceof Date) {\n filters.push({\n field,\n matchMode: 'equal',\n operator: 'and',\n value:\n value.value instanceof Date\n ? this.getFormattedDate(value.value)\n : value.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n } else {\n (value.value || []).forEach((x: any) => {\n filters.push({\n field,\n matchMode: value.matchMode,\n operator: 'and',\n value: x.value,\n tableAlias: this.setTableAlias(field, columns),\n });\n });\n }\n break;\n default:\n null;\n }\n }\n }\n });\n return filters;\n }\n\n /**\n *\n * @param event\n * Receives lazy event and returns page number\n */\n getGridPagination(event: any): number {\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\n }\n\n // get formatted date\n getFormattedDate(value: Date): string {\n return new Date(`${value} Z`).toISOString().slice(0, 10);\n }\n\n // add simple grid column without\n addColumn(columnInfo: addColumn): IGridColumn {\n if(columnInfo.type === EGridColumnType.DROPDOWN){\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n }else if(columnInfo.type === EGridColumnType.DIALOG){\n if(!columnInfo.filtering && !columnInfo.filter){\n columnInfo.filtering = false;\n }\n if(columnInfo.params && !columnInfo.data){\n columnInfo.data = columnInfo.params;\n }\n }\n const column: IGridColumn = {\n allowSearch: columnInfo.allowSearch,\n field: columnInfo.field,\n header: columnInfo.header,\n style: columnInfo.style,\n type: columnInfo.type,\n format: columnInfo.format,\n data: columnInfo.data,\n filtering: columnInfo.filtering,\n hidden: columnInfo.hidden,\n sorting: columnInfo.sorting,\n filter: columnInfo.filter,\n hyperlink: columnInfo.hyperlink,\n tableAlias: columnInfo.tableAlias,\n linkId: columnInfo.linkId,\n minutesInterval: columnInfo.minutesInterval,\n params: columnInfo.params,\n showOption: columnInfo.showOption,\n displayText: columnInfo.displayText,\n target: columnInfo.target,\n disabled: columnInfo.disabled,\n allowSave: columnInfo.allowSave,\n editable: columnInfo.editable, \n editLink: columnInfo.editLink,\n saveAsString: columnInfo.saveAsString,\n component: columnInfo.component,\n onClick: columnInfo.onClick,\n onReturn: columnInfo.onReturn,\n onFocusOut: columnInfo.onFocusOut,\n onChange: columnInfo.onChange,\n aggregate: columnInfo.aggregate,\n formatter: columnInfo.formatter,\n permissions: columnInfo.permissions,\n optionLabel: columnInfo.optionLabel,\n optionValue: columnInfo.optionValue,\n dropDownProp: columnInfo.dropDownProp,\n showTime: columnInfo.showTime,\n timeOnly: columnInfo.timeOnly,\n lookupControl: columnInfo.lookupControl,\n displayField: columnInfo.displayField,\n icon: columnInfo.icon,\n color: columnInfo.color,\n id: columnInfo.id,\n value: columnInfo.value,\n validations: columnInfo.validations,\n };\n\n return column;\n }\n \n // Adding Report Button Function for Grid\n addReportBtn(columnInfo: IGridReportBtn){ \n columnInfo.type = EGridColumnType.REPORT;\n return columnInfo;\n}\n\n // add simple input grid column\n addInputColumn(\n filterColumnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\n }\n return this.addColumn(filterColumnInfo);\n }\n\n // add simple numeric grid column without\n addNumericColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.NUMERIC;\n return this.addColumn(columnInfo);\n }\n\n // add simple calendar grid column without\n addCalendarColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\n return this.addColumn(columnInfo);\n }\n\n // add simple boolean grid column without\n addBooleanColumn(\n columnInfo: addColumn,\n showFilter: boolean = true\n ): IGridColumn {\n if (showFilter) {\n columnInfo.type = EGridColumnType.BOOLEAN,\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\n }\n return this.addColumn(columnInfo);\n }\n\n // add LookUp Field for Grid\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\n }\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\n return this.addColumn(columnInfo);\n }\n\n // add Button for grid column\n addButtonColumn(\n columnInfo: addColumn,\n ): IGridColumn {\n columnInfo.type = EGridColumnType.ADD_BUTTON;\n if (!columnInfo.field) {\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\n }\n return this.addColumn(columnInfo);\n }\n\n // add AutoComplete for grid column\n addAutoComplete(columnInfo: addColumn): IGridColumn {\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\n return this.addColumn(columnInfo);\n }\n\n // Search AutoComplete Data for Grid\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord = response.records?.some((record)=> record[column.displayField] && record[column.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[column.displayField]: search});\n }\n }\n column.data = this.setDataFields(response.records);\n });\n }\n\n\n // add simple dropdown grid column without\n addDropdownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n dropDownProp?: IDropDownRequest\n ): IGridColumn {\n columnInfo.type = EGridColumnType.DROPDOWN;\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\n }\n if (dropDownProp) {\n columnInfo.dropDownProp = dropDownProp;\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n }\n// add MultiSelectDropDown grid column\naddMultiSelectDropDownColumn(\n columnInfo: addColumn,\n showFilter: boolean = true,\n multiSelectProp?: IDropDownRequest\n): IGridColumn {\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\n columnInfo.type = EGridColumnType.MULTISELECT;\n if (showFilter) {\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\n }\n if (multiSelectProp) {\n columnInfo.dropDownProp = multiSelectProp;\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n if (uniqueKey && valueProp && labelProp) {\n return this.setDropdownData(\n columnInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters\n );\n }\n } else {\n return this.addColumn(columnInfo);\n }\n}\n\n showFilterIcon(columnInfo: addColumn){\n if(columnInfo.filter && columnInfo.filter.showFilter){\n return true; \n }else{\n return false;\n }\n }\n\n setDropdownData(\n column: IGridColumn,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any[],\n row?: {[key: string]: any}\n ): Promise <any> | any{\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\n .then((res: any) => {\n if(row){\n row[column.field+'_data'] = res;\n }else{\n column.data=res;\n if(column.filter && column.filter.type === \"dropdown\"){\n column.filter.data = res;\n }\n }\n return this.addColumn(column);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n\n // add grid column with built-in filter\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\n const column: any = {\n field: filterColumnInfo.field,\n header: filterColumnInfo.header,\n filter: { type: filterColumnInfo.filter },\n filtering: filterColumnInfo.filtering,\n hidden: filterColumnInfo.hidden,\n style: filterColumnInfo.style,\n tableAlias: filterColumnInfo.tableAlias,\n permissions: filterColumnInfo.permissions\n };\n\n return column;\n }\n\n // add date grid column with built-in filter\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\n const column: IGridColumn = {\n field: dateColumnInfo.field,\n header: dateColumnInfo.header,\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\n filtering: dateColumnInfo.filtering,\n filter: { type: GridFilterControlType.CALENDAR },\n format: dateColumnInfo.format,\n style: dateColumnInfo.style,\n tableAlias: dateColumnInfo.tableAlias,\n disabled: dateColumnInfo.disabled,\n allowSave: dateColumnInfo.allowSave,\n permissions: dateColumnInfo.permissions,\n component: dateColumnInfo.component,\n showTime: dateColumnInfo.showTime,\n timeOnly: dateColumnInfo.timeOnly,\n data: dateColumnInfo.data,\n hidden: dateColumnInfo.hidden,\n };\n return column;\n }\n\n setLookUpFilter(column: any, dialogService: any) {\n if (column.lookupControl) {\n let dataValue: any[]= [];\n let dataKey: any[] = [];\n let data = column.lookupControl?.data?.data;\n const keys = Object.keys(data);\n if (data && keys?.length > 0) {\n keys.forEach((key) => {\n if (data[key].toString().includes('{')) {\n dataValue.unshift(data[key]);\n dataKey.unshift(key);\n data[key] = '';\n }\n });\n }\n const ref = dialogService.open(\n column.lookupControl.component,\n column.lookupControl.data\n );\n ref.onClose.subscribe(\n (res: any) => {\n if (column.onReturn) {\n column.onReturn(res);\n }\n if(dataKey?.length > 0 && dataValue?.length > 0){\n dataKey.forEach((key,keyIndex)=>{\n dataValue.forEach((value, valueIndex)=>{\n if(keyIndex === valueIndex){\n data[key] = value;\n }\n });\n });\n }\n if (res) {\n document.getElementById('lookUp_filter')?.focus();\n let field = column.field;\n let value =utilities.setDialogResponse(\n column,\n column?.lookupControl,\n res\n );\n column.value = value?.value ? value.value : res[field.toLowerCase()];\n }\n },\n ({ error }:any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n // Set Hyperlink field as a param Value\n setFieldAsLinkParam(columns: any, field: string, response: any) {\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\n this.setDataFields(response.records).forEach((res: any) => {\n let obj = columns.find((x: any)=> x.field === field);\n if(obj && obj.params){\n const keys = Object.keys(obj.params)\n keys.forEach((key: any)=>{\n if(obj.params[key] && obj.params[key].toString().includes('{')){\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\n obj.params[key] = res[value];\n }\n })\n }\n });\n }\n }\n\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\n }\n\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\n let records: any = [];\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\n let newRow:any;\n\n return this.hyperlinkService\n .addHyperlinks(columns).then((linksResponse: any) => {\n data.forEach((row: any) => {\n newRow = { ...row };\n columns.forEach((col: any) => {\n let keys = Object.keys(row);\n if(col.type === EGridColumnType.DIALOG){\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n if(col.format && newRow[field].displayText){\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\n }\n if (col.data && col.data.data){\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\n }\n }\n linksResponse.forEach((linkResponse: any) => {\n if (\n (col.type === EGridColumnType.LINK ||\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\n col.linkId &&\n col.params &&\n col.linkId === linkResponse.linkId\n ) {\n const paramKeys: string[] = Object.keys(col.params);\n const link: any = utilities.setHyperlink(\n keys,\n row,\n linkResponse.url,\n paramKeys,\n col.params\n );\n\n let field = col.field + '_obj';\n newRow[field] = { ...col };\n newRow[field].hyperlink = link;\n newRow[field].displayText = col.displayText\n ? row[col.displayText.toLowerCase()]\n : row[col.field.toLowerCase()];\n }\n });\n });\n records.push(newRow);\n });\n return records;\n });\n }\n\n // add grid global filter with built-in filter\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\n const column: addGlobalFilter = {\n field: globelFilterInfo.field,\n displayText: globelFilterInfo.displayText,\n validations: globelFilterInfo.validations,\n type: globelFilterInfo.type,\n data: globelFilterInfo.data,\n value: globelFilterInfo.value,\n valueTwo: globelFilterInfo.valueTwo,\n matchMode: globelFilterInfo.matchMode,\n operator: globelFilterInfo.operator,\n tableAlias: globelFilterInfo.tableAlias,\n optionLabel: globelFilterInfo.optionLabel,\n optionValue: globelFilterInfo.optionValue,\n onFocusOut: globelFilterInfo.onFocusOut,\n filtering: globelFilterInfo.filtering,\n column: globelFilterInfo.column,\n dayRange: globelFilterInfo.dayRange,\n fromField: globelFilterInfo.fromField,\n toField:globelFilterInfo.toField,\n lookupControl: globelFilterInfo.lookupControl,\n allowSearch: globelFilterInfo.allowSearch,\n disabled: globelFilterInfo.disabled,\n hidden: globelFilterInfo.hidden,\n labelText: globelFilterInfo.labelText,\n prefix: globelFilterInfo.prefix,\n color: globelFilterInfo.color,\n format: globelFilterInfo.format,\n };\n return column;\n }\n\n // add global input filter\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add global dropdown filter\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters = dropDownProp.filters;\n let sorts= dropDownProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters,\n sorts\n );\n }\n } else{\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n // add global MultiSelect dropdown filter\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\n if (multiSelectProp) {\n let uniqueKey = multiSelectProp.uniqueKey;\n let valueProp = multiSelectProp.valueProp;\n let labelProp = multiSelectProp.labelProp;\n let filters = multiSelectProp.filters;\n let sorts = multiSelectProp.sorts;\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(\n globelFilterInfo,\n uniqueKey,\n valueProp,\n labelProp,\n filters, \n sorts\n );\n }\n } else{\n return this.addGlobalFilter(globelFilterInfo);\n }\n }\n \n \n\n\n getDropdownData(\n fieldInfo: any,\n uniqueKey: string,\n valueProp: string,\n labelProp: string,\n filters: any,\n sorts: IGridSort[] = []\n ) {\n return this.dropdownService\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addGlobalFilter(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n });\n }\n // add global filter Space Field\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.SPACER;\n return this.addGlobalFilter(globelFilterInfo);\n}\n\n // add global boolean filter\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add Range Filter for global Filter\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric Range Filter for global Filter\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\n return this.addGlobalFilter(globelFilterInfo);\n }\n // add Numeric input for global Filter\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n // add LookUp Field for global Filter\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\n return this.addGlobalFilter(globelFilterInfo);\n }\n\n setDataFields(response: any, dataKey: string = \"\") {\n let data: any = [];\n if (response && response.length > 0) {\n response.map((x: any, index: number) => {\n if(Object.keys(x ?? {})?.length > 0){\n const result:any = Object.keys(x)?.reduce(\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\n {}\n );\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\n {\n result[dataKey] = index;\n }\n \n data.push(result);\n }\n });\n }\n return data;\n }\n\n setColumnFields(columns: any[]) {\n let column: any = [];\n if (columns && columns.length > 0) {\n columns.map((col: any) => {\n column.push({ ...col, field: col?.field?.toLowerCase() });\n });\n return column;\n }\n }\n\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\n if (columns && columns.length > 0) {\n columns.forEach((column: any) => {\n if (column.field?.toLowerCase() === field.toLowerCase()) {\n column.linkId = linkId;\n if(params){\n column.params = params;\n }\n }\n });\n }\n\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\n if(changeLink){\n delete res[0][field.toLowerCase()+'_obj'];\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\n if(index !== -1){\n if(users[index][field+'_obj']){\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\n }\n }\n } \n });\n }\n\n // set grid data and set selected row based on selection value\n setDataWithSelectedRow(records: any, configData: any) {\n if (configData?.selectedValue && configData.data.selection) {\n records.forEach((record: any) => {\n Object.keys(record)?.forEach((key) => {\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\n if(configData.data.value && record[key] === configData.data.value){\n record['highlightRow'] = true;\n } else if(record[key] === configData.data.selection){\n record['highlightRow'] = true;\n }\n }\n });\n });\n }\n\n return records;\n }\n\n setTableAlias(field: string, columns: IGridColumn[]) {\n if (columns && columns.length > 0) {\n const column = columns.find(\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\n );\n\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\n return column.tableAlias;\n }\n }\n\n return '';\n }\n\n setGridPropValues(\n columns: IGridColumn[],\n props: IGridProp[],\n filter?: IGridPropFilter,\n records?: any[],\n ) {\n if (columns && columns.length > 0 && props && props.length > 0) {\n let isMatched: boolean = false;\n if (filter && filter.field && records && records.length > 0) {\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\n }\n props.map((prop: IGridProp) => {\n let col: any = {};\n if (prop.field && !isMatched && !filter?.field) {\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\n } else if (isMatched) {\n if(prop.field){\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\n }else {\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\n }\n }\n if (col && col.hasOwnProperty(prop.name)) {\n col[prop.name] = prop.value;\n }\n });\n }\n }\n\n // set grid row propValues\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\n props?.forEach((prop)=>{\n if(prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '') && prop.field){\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\n if(fieldName){\n if(row[fieldName]?.action){\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\n }else{\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\n }\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\n };\n }\n });\n return row;\n }\n\n // remove the rowActions from the records\n removeRowActions(records){\n if(records?.length > 0){\n records.forEach((row)=>{\n if(row.rowAction){\n delete row['rowAction'];\n }\n })\n }\n return records;\n }\n}","export interface IUserInfo {\n id: number;\n username: string;\n isADUser: boolean;\n token: string;\n activities: string[];\n roles: IUserRole[];\n }\n \n export interface IUserRole {\n id: number;\n code: string;\n name: string;\n description: string;\n }\n \n export interface IPermission {\n type: EPermissionType;\n roles: string[];\n }\n \n export enum EPermissionType {\n EDIT = 'edit',\n VIEW = 'view',\n DELETE = 'delete',\n ADDROW = 'addRow',\n CRUD = 'crud',\n }\n ","import { Injectable } from '@angular/core';\nimport { IUserInfo } from '../models/user-info.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticationService {\n userInfoKey: string = 'CurrentUserInfo';\n\n login(response: any): boolean {\n if (response) {\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\n return true;\n } else {\n return false;\n }\n }\n\n getUserInfo() {\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\n }\n\n getUserRoles() {\n let roles: any = [];\n let userInfo: IUserInfo = this.getUserInfo();\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\n roles = userInfo.roles.map((x) => x.name);\n }\n return roles;\n }\n\n isAuthenticated(): boolean {\n return this.getUserInfo() ? true : false;\n }\n\n logout() {\n // setting Function for removing the Grid Filters When User logout. \n let keys = Object.keys(localStorage);\n if(keys && keys.length > 0){\n keys.forEach((key)=>{\n if(key.includes('SetFilters-')){\n localStorage.removeItem(key);\n }\n });\n }\n // removing the UserName & Password When User logout.\n localStorage.removeItem(this.userInfoKey);\n }\n}\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-iframe',\n templateUrl: './iframe.component.html',\n styleUrls: ['./iframe.component.scss']\n})\nexport class IframeComponent implements OnInit,OnDestroy {\n url: any;\n id:string='';\n\n constructor(\n private sanitizer: DomSanitizer,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig\n ) {}\n\n ngOnInit(): void {\n this.loadIFrameData();\n }\n\n ngOnDestroy() {\n if(this.id){\n const url: any = document.getElementById(this.id);\n this.ref.close(url.contentWindow.location.href);\n }\n }\n\n loadIFrameData(){\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\n this.config.data.value\n );\n this.id = this.config.data.iFrameId;\n\n }\n }\n\n iframeLoaded(){\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\n\n if(iframeEl){\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\n }\n }\n \n}\n","import { Injectable } from '@angular/core';\nimport { RequestService } from './request.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageLoggerService {\n\n constructor(private requestService: RequestService) { }\n \n // save page logger info\n savePageLoggerInfo(currentRoute, componentName: string = '') {\n this.requestService\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\n .subscribe(\n (data) => {\n return data;\n },\n (error) => {}\n );\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnChanges,\n Optional,\n ElementRef,\n ViewChildren,\n QueryList,\n SimpleChanges,\n ViewChild,\n HostListener,\n OnDestroy,\n} from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport {\n DynamicDialogRef,\n DynamicDialogConfig,\n DialogService,\n} from 'primeng/dynamicdialog';\nimport { saveAs } from 'file-saver';\nimport jsPDF from 'jspdf';\nimport { GridService } from '../../../services/grid.service';\nimport {\n IGridColumn,\n IGridSort,\n IGridServerSideEvent,\n IGridPaginationEvent,\n IGlobalFilter,\n IGridFilter,\n IGridColumnAction,\n IGridRowAction,\n EGridSelectionType,\n EGridColumnType,\n EGridSortDirection,\n IGridDataExport,\n EGridAggregate,\n ILookupValue,\n EGridFormatType,\n IGridFilterInfo,\n} from '../../../models/grid.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { WorkSheet } from 'xlsx';\nimport { DatePipe, DecimalPipe } from '@angular/common';\nimport * as utilities from '../../../services/utilities.service';\nimport { Table } from 'primeng/table';\nimport { EFormatType } from '../../../models/form.model';\nimport { Router } from '@angular/router';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { Subscription, interval } from 'rxjs';\n\n@Component({\n selector: 'se-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n})\nexport class GridComponent implements OnInit, OnChanges , OnDestroy {\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\n @Output() inlineRowCancel = new EventEmitter();\n @Input() set activeTestMode(val: any) {\n if (val === true) {\n debugger;\n }\n }\n serverFilters: IGridServerSideEvent = {};\n rowsData: any[];\n rowsDataCopy: any[] = [];\n roles: string[] = [];\n isColumnHidden: boolean = false;\n rowClickData: IGridColumn;\n componentTableRef: any;\n lookupObject: ILookupValue;\n lookupFilterObj: any;\n lookupBlur: boolean = true;\n globalFiltersArray: any[] = [];\n checkAction: boolean = false;\n calenderPreviousValue: string = '';\n gridFilterObj: IGridFilterInfo;\n defaultDate: any;\n gridfilter:any;\n dropDownFilter: any = {};\n dropdownInput: boolean = false;\n saveAllRecord: boolean = false;\n editAllRecord: boolean = false;\n cancelAllRecords: boolean = false;\n addNewRowCheck: boolean = false;\n inEditMode: boolean = false;\n saveRecordArray: any[] = [];\n disabledSaveBtn:boolean = false;\n setDialogData:boolean = true;\n setDialogField: string = '';\n\n editModeChecked: boolean = true;\n editModeunCkecked: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n setDropdownFilter:boolean = true;\n reloadPage:Subscription;\n\n // apply checked/unChecked prop for CheckBox of the Table\n checked: boolean = true;\n unChecked: boolean = false;\n hideEditAllRowsBtn: boolean = true;\n\n //apply Add/Delete/Edit prop for the grid permission\n addRowPermission: boolean = true;\n deleteRowPermission: boolean = true;\n editRowPermission: boolean = true;\n\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\n setAggregateFooter: string = '';\n\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\n aggregateFooter: boolean = false;\n\n // Maintains previous state of rows being edited\n editRowsRecords: { [key: string]: any } = {};\n\n // Maintains record of rows being edited\n editingRowKeys: { [key: string]: any } = {};\n\n @ViewChild('dt') table: Table;\n\n // Selects items in the grid based on passed on data\n @Input() selectedRows: any = [];\n\n @Input() setGridRefreshTime: number = 0;\n\n @Input() addDataKeyValue = false;\n\n private globalData: IGridFilter[] = [];\n\n sortDisabled: boolean = false;\n\n @Input() public showRefreshBtn:boolean = false;\n\n\n // Stores selected columns\n private _selectedColumns: IGridColumn[] = [];\n\n // Boolean prop to allow horizontal Scroll on Table.\n @Input() horizontalScroll: boolean = false;\n\n // Prop to handle loader of grid\n @Input() public loading = false;\n\n //this property is used to handle server side event by default it is true when it false server side event will not be called\n @Input() autoLoadData: boolean = true;\n\n // Boolean prop to check where selected is allowed or not.\n @Input() allowSelection = false;\n\n // Set column width of selected row.\n @Input() selectionColumnWidth: string = '80px';\n \n // Boolean prop to hide the add row button.\n @Input() hideOnRowAddBtn = false;\n\n // Boolean prop to hide the save button on top of grid.\n @Input() hideGridSaveButton = false;\n\n // Boolean prop to allow export to pdf.\n @Input() allowExportToPdf = false;\n\n // Boolean prop to allow export to excel.\n @Input() allowExportToExcel = false;\n \n // Boolean prop to set the action column as first column.\n @Input() setActionColumnAsFirst = false;\n\n // If true, enables options to perform CRUD using inline row functionality\n @Input() useInlineCRUD = false;\n\n // Array of row actions\n @Input() rowActions: IGridRowAction[] = [];\n\n // Sets selection type i.e: single/multiple selection\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\n\n // Unique key requires for built-in row selection of primeNg grid\n @Input() dataKey: string = 'id';\n\n // Flag for clear filter values button\n @Input() clearGridFilter = true;\n\n // Flag for search filter values button\n @Input() searchGridFilter = true;\n\n // Flag in case table is scrollable\n @Input() scrollable = true;\n\n // Sets scroll height for the table\n @Input() scrollHeight = '680px';\n\n // Boolean prop to allow to wrap or unWrap the grid.\n @Input() wordWrap: boolean = false;\n\n @Input() newGridRow: any = {};\n\n @Input() filtering = true;\n\n @Input() rowHover: boolean = false;\n\n @Input() hideFilterOptions: boolean = false;\n\n // Sets pagenation for the table Data.\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\n\n // set the change in the rowData\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\n\n /**\n * Stops the loader and sets the data to grid\n * Clears the editing stack\n * Scrolls to selected element if selection found\n */\n @Input() set rows(data: any[]) {\n this.loading = false;\n if (data && data.length > 0) {\n if (!this.dataKey) {\n this.dataKey = 'id';\n }\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\n } else {\n this.rowsData = [];\n }\n\n // Cleaning the editing stack\n this.editingRowKeys = {};\n this.editRowsRecords = {};\n\n setTimeout(() => {\n if (data && data.length > 0 && this.selectedRows) {\n const selectedElementRef = this.gridRow.find(\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\n );\n selectedElementRef &&\n (\n selectedElementRef.nativeElement as HTMLTableRowElement\n ).scrollIntoView({ behavior: 'smooth' });\n }\n }, 0);\n\n if (this.columns && this.columns.length > 0) {\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, {}, false);\n }\n });\n }\n //manipulate checkbox string value to true and false.\n this.changeCheckboxStringValue();\n }\n\n // Global filter server request\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\n this.globalData = this.gridService\n .prepareGlobalFilters(globalFilters)\n ?.filter((x) => x?.value !== false);\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = this.serverFilters.filters\n ? this.serverFilters.filters.concat(this.globalData)\n : this.globalData;\n\n if (localStorage.getItem('applyFilter') === 'false') {\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\n : this.globalFiltersArray;\n }\n if (localStorage.getItem('applyFilter') === 'true') {\n globalFilters.forEach((globalFilter) => {\n this.globalFiltersArray.forEach((filterArray) => {\n if (\n filterArray.field === globalFilter.field &&\n globalFilter.value &&\n filterArray.value !== globalFilter.value\n ) {\n filterArray.value = globalFilter.value;\n }\n const findIndex = this.globalFiltersArray.findIndex(\n (index) => index.field === globalFilter.field && !globalFilter.value\n );\n if (findIndex !== -1) {\n this.globalFiltersArray.splice(findIndex, 1);\n }\n });\n });\n\n this.loading = this.autoLoadData;\n setTimeout(() => {\n if(this.gridService.applyFilterEvent || this.autoLoadData){\n this.onApplyFilter.emit();\n }\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n serverFilterValues.filters = serverFilterValues.filters.concat(\n this.globalFiltersArray\n );\n }\n serverFilterValues.filters = Array.from(\n new Set(\n serverFilterValues.filters\n .reverse()\n .map((filter: any) => filter.field)\n )\n ).map((field) => {\n return serverFilterValues.filters.find((x: any) => x.field === field);\n });\n serverFilterValues.filters = serverFilterValues.filters.filter(\n (obj: any) =>\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\n );\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\n // setting pagination page as first\n serverFilterValues.page = 1;\n if(this.defaultRows && this.pagination){ \n serverFilterValues.pageSize = this.defaultRows;\n }\n if(this.gridService.applyFilterEvent){\n this.onServerSideEventChange.emit(serverFilterValues)\n }\n localStorage.removeItem('applyFilter');\n // setting pagination page number UI\n this.table._first = 0;\n }\n }, 300);\n }\n }\n\n // Input decorator to receive columns to be displayed in header\n @Input() columns: IGridColumn[] = [];\n\n @Input() permissions: IPermission[] = [];\n\n // Optional prop to handle toggling of columns\n @Input() allowColumnToggle = false;\n\n // Optional prop to hide filtering of columns\n @Input() hideFilter = false;\n\n // Optional prop to handle lookup filters\n @Input() lookupFilters = false;\n\n // Optional prop to handle pagination\n @Input() pagination = false;\n\n // Optional prop to handle show CurrentPage Report\n @Input() showCurrentPageReport = false;\n\n // Displays total number of records\n @Input() totalRecords = 0;\n\n @Input() showconfirmDialog: boolean = true;\n\n // Sets number of rows to be shown the grid\n @Input() defaultRows: number;\n\n @Input() columnActions: IGridColumnAction[] = [];\n\n // Decides the grid's behavior either for client side or server side events\n @Input() useServerSideEvents = false;\n\n // Output event to handle row click\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\n\n // Output event emit when click on grid checkbox filter\n @Output() onCheckBoxFilterClick: EventEmitter<any>= new EventEmitter();\n\n // Output event to handle row CheckBox\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\n\n // Output event to trigger on sort change\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\n\n // Output event to trigger on filter change\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\n\n // Output event to invoke the multiSelection click event\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a grid and globalFilters called\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\n\n //set header checkbox value for getting all columns on stay admin\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\n\n // Calls whenever a lazy event is dispatched\n @Output()\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\n new EventEmitter();\n\n // Output event to trigger on pagination\n @Output()\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\n\n // Dispatch output event trigger on edit row\n @Output() onRowUpdate = new EventEmitter();\n\n // Dispatch output event trigger cancel all rows\n @Output() onCancelAllRows = new EventEmitter();\n\n // Dispatch output event trigger on delete row\n @Output() onRowDelete = new EventEmitter();\n\n //Dispatch output event trigger on add row\n @Output() onRowAdd = new EventEmitter();\n\n //Dispatch output event trigger on add, update and delete row\n @Output() onGridRowActions = new EventEmitter();\n\n // set property allowCaching for LocalStorage\n @Input() allowCaching: boolean;\n\n // set property softCaching for setting the values of gridFilter\n @Input() softCaching: boolean = true;\n \n @Input() editAllRows: boolean = false;\n\n // set the row When Edit the row on Grid\n @Output() onGridRowEdit = new EventEmitter();\n\n // set the row When adding the new Row on Grid\n @Output() onGridRowAdd = new EventEmitter();\n\n isGridHidden: boolean = false;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private alertService: AlertService,\n private authService: AuthenticationService,\n private elementRef: ElementRef,\n public decimalPipe: DecimalPipe,\n private pageLoggerService: PageLoggerService,\n private cd: ChangeDetectorRef,\n private router: Router,\n private datePipe: DatePipe,\n public confirmationService: ConfirmationService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n get selectedColumns(): IGridColumn[] {\n return this._selectedColumns;\n }\n\n set selectedColumns(val: IGridColumn[]) {\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\n }\n\n // browser close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event:any) {\n if(this.gridService.columnFocusedOut){\n return false;\n }else{\n return true;\n }\n }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n // automatically reload grid after 9 seconds.\n if(this.setGridRefreshTime){\n this.refreshGrid();\n }\n\n if(this.editAllRows){\n this.disabledSaveBtn = true;\n }\n \n this.componentTableRef = this.table;\n setTimeout(() => {\n this.setNumericValues();\n }, 500);\n }\n\n ngOnDestroy(){\n if(this.setGridRefreshTime){\n this.reloadPage?.unsubscribe();\n } \n }\n\n // apply user role permissions on grid columns\n applyColumnsPermissions() {\n if (this.columns) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.columns.forEach((column: any) => {\n let permissions: IPermission[] = column.permissions;\n // if (!permissions) permissions = this.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n // else {\n // let index = this.columns.findIndex(\n // (i) => i.field === column.field\n // );\n // if (index !== -1) {\n // this.columns.splice(index, 1);\n // }\n // }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n column.disabled = true;\n } else {\n column.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n column.hidden = false;\n column.disabled = false;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (column.hidden) {\n hiddenFields++;\n }\n });\n\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n // apply global permissions on entire grid\n applyGridPermissions() {\n if (this.permissions && this.permissions.length > 0) {\n let hasValidEditPermission = false;\n\n // check if any column has any permission\n let hasColumnPermissions = this.columns?.some(\n (x) => x?.permissions && x.permissions.length > 0\n );\n\n this.permissions.forEach((permission) => {\n let isValid: boolean = false;\n\n permission.roles.forEach((role) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if(permission.type === EPermissionType.CRUD && !isValid){\n this.useInlineCRUD = false;\n }\n else if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n this.useInlineCRUD = true;\n if (!isValid && !hasColumnPermissions) {\n this.isGridHidden = true;\n this.useInlineCRUD = false;\n }\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\n this.isGridHidden = false;\n hasValidEditPermission = true;\n this.editRowPermission = false;\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\n this.deleteRowPermission = false;\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\n this.addRowPermission = false;\n }\n });\n }\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\n }\n\n ngOnChanges(change: SimpleChanges) {\n if (this.allowCaching !== false && this.pagination) {\n this.allowCaching = this.pagination;\n } else {\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\n }\n // add defaultRow in pagination array\n if (!this.setPaginationLength.includes(this.defaultRows)) {\n this.setPaginationLength.unshift(this.defaultRows);\n }\n const hasColumns: boolean = this.columns && this.columns.length > 0;\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions on grid columns\n this.applyColumnsPermissions();\n\n // apply global permissions on entire grid\n this.applyGridPermissions();\n\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\n this.cd.detectChanges();\n\n if (hasColumns) {\n this.columns = this.gridService.setColumnFields(this.columns);\n // checking filter exist or not\n const filter = this._selectedColumns.some(\n (column) => column.filtering === undefined || column.filtering === true\n );\n if (filter === false) {\n this.hideFilter = true;\n }\n\n this.columns.forEach((column: any) => {\n // convert string time into the date\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\n this.rowsData.forEach((row) => {\n if (\n row[column.field] &&\n (row[column.field].toString().includes('PM') ||\n row[column.field].toString().includes('AM'))\n ) {\n row[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n });\n }\n // set filter value\n if (column.filter && column.value && column.filtering !== false) {\n this.setFilterFocusOut(column);\n }\n // add \"flex-shrink: 0\" for flex-basis Style\n if (column.style && column.style.includes('flex-basis')) {\n let style = column.style + ' !important; flex-shrink: 0 !important';\n column.style = style.includes(';;')\n ? style.replace(';;', ';')\n : style;\n }\n\n // set DisplayText when value is in curly brackets.\n this.setDisplayTextValue(column);\n\n //Aggregate scenario\n if (column.aggregate && column.aggregate.length > 0) {\n this.aggregateFooter = true;\n this.setAggregateText(column);\n }\n\n let searchFilters;\n if(!this.softCaching){\n searchFilters = JSON.parse(\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\n );\n }else{\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\n }\n if (\n !this.hideFilter &&\n searchFilters &&\n searchFilters.filters &&\n searchFilters.filters.length > 0\n ) {\n searchFilters.filters.forEach((x: any) => {\n if (x.value && x.field === column.field) {\n if(column?.filter?.type === 'calendar'){\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\n }else{\n column.value = x.value;\n }\n }\n });\n }\n // converting displayField toLowercase\n if (column.displayField) {\n column.displayField = column.displayField.toLowerCase();\n }\n // set AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n this.rowsData &&\n this.rowsData.length > 0\n ) {\n this.rowsData.forEach((row) => {\n // convert string that contains comma into arrays\n if (\n row[column.field] &&\n row[column.field]?.toString().includes(',')\n ) {\n row[column.field] = row[column.field]\n ?.toString()\n .split(',')\n ?.map((value: any) => ({ [column.displayField]: value }));\n }\n\n const key: any = Object.keys(row).find(\n (x) => x === column.field.toLowerCase()\n );\n // convert simple string into array\n if (!Array.isArray(row[key]) && row[key]) {\n row[key] = [{ [column.displayField]: row[key] }];\n }\n });\n }\n\n //when we add a new row, it set the default value\n if (column.value && Object.keys(this.newGridRow).length > 0) {\n const key = Object.keys(this.newGridRow).find(\n (x) => x === column.field\n );\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\n this.newGridRow[key] = column.value;\n }\n }\n });\n\n // Searching scenario\n if (change.rows?.currentValue && change.columns?.currentValue) {\n // Checks either column value is changes (i.e., column hidden scenario)\n if (\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\n JSON.stringify(this.columns).toLowerCase()\n ) {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n } else {\n this._selectedColumns = [];\n this.columns.forEach((x, i) => {\n if (!x.hidden) {\n if (this.selectedColumns[i]) {\n x.value = this.selectedColumns[i].value;\n }\n this._selectedColumns.push(x);\n }\n });\n }\n\n setTimeout(() => {\n const classElement = document.getElementsByClassName('highlighted-row');\n if (classElement.length > 0) {\n classElement[0].scrollIntoView();\n }\n\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \n this.editAllRowsAtOnce();\n }\n }, 500);\n }\n const globalSearchbtn = document.getElementById('globalSearchbtn');\n if (globalSearchbtn) {\n this.searchGridFilter = false;\n }\n if(this.rowsData?.length > 0){\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n }\n }\n\n // set DisplayText when value is in curly brackets.\n setDisplayTextValue(column: IGridColumn) {\n this.rowsData?.forEach((row) => {\n if (\n column.type === EGridColumnType.LINK ||\n EGridColumnType.DIALOG ||\n EGridColumnType.IFRAME\n ) {\n const field = row[column.field + '_obj'];\n if (column.displayText && column.displayText.includes('{')) {\n const displayText = column.displayText\n .replace('{', '')\n .replace('}', '');\n if (displayText && field) {\n field.displayText = row[displayText.toLowerCase()];\n }\n } else if (column.displayText && field) {\n field.displayText = column.displayText;\n }\n }\n });\n }\n\n // change row key and value when using setGridRowPropValue function\n setRowValue(rowData: any) {\n Object.keys(rowData)?.forEach((row) => {\n if (\n rowData[row] &&\n this.typeOf(rowData[row]) === 'object' &&\n rowData[row]?.action?.field\n ) {\n if(rowData[row]?.extraField){\n delete rowData[row];\n } else {\n rowData[row] = rowData[row]?.text;\n }\n }\n });\n }\n\n setNumericMinMxFraction(column: any) {\n let digitInfo = '2';\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\n digitInfo = '0'\n }else if(column?.format?.formatParams?.digitsInfo){\n digitInfo = column.format.formatParams.digitsInfo;\n }\n return digitInfo;\n }\n\n // set the format of currency && number && decimal && percent\n setNumericFormat(column: any, row: any) {\n row = utilities.objConvertToLower(row);\n let value: any = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField.toLowerCase()]\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\n if (this.typeOf(value) === 'number' && value === 0) {\n value = value.toString();\n }\n let formatParams = column.format?.formatParams;\n let digitsInfo = formatParams?.digitsInfo;\n if (column.format && value) {\n switch (column.format?.type) {\n case EGridFormatType.CURRENCY:\n value = new Intl.NumberFormat(\n formatParams?.locale ? formatParams.locale : 'en-US',\n {\n style: 'currency',\n currency: formatParams?.currency ? formatParams.currency : 'USD',\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\n }\n )?.format(value);\n break;\n case EGridFormatType.DECIMAL:\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\n break;\n case EGridFormatType.PERCENT:\n if(!column.format?.formatParams?.allowCalculate){\n value = value+'%';\n }\n break;\n }\n }\n return value;\n }\n\n //Change dropdown vlue based on option label and optionvalue\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\n if (this.rowsData && this.rowsData.length > 0) {\n this.rowsData.forEach((row) => {\n if (Object.keys(row)?.find((key) => key === column.field)) {\n if (column) {\n column.optionLabel = column.optionLabel\n ? column.optionLabel\n : 'label';\n column.optionValue = column.optionValue\n ? column.optionValue\n : 'value';\n }\n const value = column.data?.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\n if (value && editedRow) {\n row[column.field] = value[column.optionValue];\n }else if(value && change === false){\n row[column.field] = value[column.optionLabel];\n }\n }\n });\n }\n }\n\n //manipulate checkbox string value to true and false.\n changeCheckboxStringValue() {\n if (\n this.columns &&\n this.rowsData &&\n this.rowsData.length > 0 &&\n this.columns.length > 0\n ) {\n this.rowsData.forEach((row) => {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.BOOLEAN) {\n if (\n (typeof (row[column.field] === 'string') &&\n (row[column.field] === '1' || row[column.field] === '0')) ||\n row[column.field] === 'Y' ||\n row[column.field] === 'N'\n ) {\n row[column.field] =\n row[column.field] === '1' || row[column.field] === 'Y'\n ? true\n : false;\n }\n }\n });\n });\n }\n }\n\n /**\n *\n * @param rowData\n * Passes data of clicked row to parent\n */\n handleRowClick(rowData: any) {\n this.rowClickData = rowData;\n this.onRowClick.emit(rowData);\n }\n\n /**\n *\n * @param columnData\n * Passes sorting information to parent on sort change\n */\n handleSortChange(event: any) {\n let sortDirection = null;\n let sortField: string = '';\n if (event.multisortmeta && event.multisortmeta[0].order) {\n sortDirection =\n event.multisortmeta[0].order == 1\n ? EGridSortDirection.ASC\n : EGridSortDirection.DESC;\n sortField = event.multisortmeta[0].field;\n }\n let sorts: IGridSort = {\n field: sortField,\n direction: sortDirection as EGridSortDirection,\n priority: 0,\n };\n this.onSortChange.emit(sorts);\n }\n\n /**\n *\n * @param event\n * Passes applied filters to parent on filter change\n */\n handleFilterChange(event: any) {\n this.columns.forEach((filter: any) => {\n if (!event.filters[filter.field]?.value) {\n filter.value = '';\n }\n });\n this.onFilterChange.emit(event);\n }\n\n /**\n *\n * @param event : Event\n * @param columnAction : IGridColumnAction\n * @param row : any\n * Stop the click event propagation to parent\n * Callbacks the row data to parent\n */\n\n /**\n * invoke onClick event & open Iframe in grid\n */\n gridIFrame(column: any, rows: any, row: any) {\n this.onClickEvent(column, row);\n const ref = this.dialogService.open(IframeComponent, {\n header: column.header,\n width: '80%',\n height: '80%',\n data: {\n value: rows,\n iFrameId: column.displayText ? column.displayText : column.field,\n },\n });\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n } else if (res && column.onChange) {\n column.onChange(res);\n }\n });\n }\n\n addNewRow(row: any, addRow: boolean = false) {\n this.componentTableRef = this.table;\n this.columns.forEach((column) => {\n if (\n column.filter &&\n column.component &&\n column.filter.type === 'calendar'\n ) {\n if (addRow) {\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\n } else {\n row[column.field + '_secondType'] = EGridColumnType.DATE;\n }\n }\n });\n this.rowClickData = row;\n this.addNewRowCheck = true;\n this.dropdownInput = false;\n this.sortDisabled = true;\n this.onGridRowAdd.emit(row);\n }\n\n /**\n * open Dialog in grid\n */\n openGridDialog(column: IGridColumn | any, row: any) {\n this.onClickEvent(column, row);\n setTimeout(() => {\n this.rowClickData = row;\n if(this.setDialogData || this.setDialogField !== column.field){\n column['parentDialogData'] = column.data?.data;\n this.setDialogData = false;\n this.setDialogField = column.field;\n }\n if(column.data && column.data.data && row[column.field + '_obj']){\n column.data.data = row[column.field + '_obj']?.dialogData;\n }\n if (column.component && column.data && this.rowClickData) {\n column.data.data = utilities.autoSetLookupData(\n column.parentDialogData,\n this.rowClickData\n );\n const ref = this.dialogService.open(column.component, column.data);\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n ref.onClose.subscribe((data: any) => {\n if (data && column.onReturn) {\n column.onReturn(data, this.rowClickData);\n } else if (data) {\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(data);\n }\n }\n });\n }\n }, 10);\n }\n\n browserCloseEvent(event: boolean = false){\n this.gridService.columnFocusedOut = event;\n }\n\n setMultiSelectData(column: IGridColumn, selectedValue:any){\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\n if(selectedValue && selectedValue?.toString()?.includes(',')){\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\n }else{\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\n }\n }\n return selectedValue;\n }\n\n /**\n * return conditional base value and title\n */\n setConditionBaseValue(row: any, column: any) {\n delete row['undefined'];\n let value:any;\n if(column.type == EGridColumnType.DATE){\n let newValue:any;\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\n newValue = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.field?.toLowerCase()]?.text\n } else {\n newValue = row[column.field];\n }\n\n if(newValue){\n if(column.timeOnly){\n value = this.setTimeFormat(newValue);\n } else {\n let format = '';\n if(column.format){\n if(column.format === EGridFormatType.SMALLDATE){\n format = 'MM/dd/yy';\n }else if(column.format === EGridFormatType.SHORTDATE){\n format = 'MM/dd/yyyy';\n }\n }\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\n }\n }\n } else {\n value = row[column.field]?.action?.displayText\n ? row[column.field]?.action?.displayText\n : row[column.field]?.action?.displayField?.toLowerCase()\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\n : row[column.displayField?.toLowerCase()]\n ? row[column.displayField?.toLowerCase()]\n : row[column.field + '_obj'] &&\n row[column.field + '_obj'].displayText === null\n ? ''\n : row[column.field + '_obj']?.displayText\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\n : row[column.field + '_obj'].displayText\n : column.displayText\n ? column.displayText\n : row[column.field];\n }\n \n return value;\n }\n\n setDropdwonReadOnlyValue(row: any, column: any){\n delete row['undefined'];\n const value = row[column.displayField]\n ? row[column.displayField]\n : row[column.field];\n return value;\n }\n\n /**\n * open Delete Confirmation dialog when click on delete icon in Action column\n */\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\n event.stopPropagation();\n if (columnAction.tooltip.toLowerCase() === 'delete') {\n if (columnAction.confirmDialog === false) {\n columnAction.onClick(row);\n } else {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n columnAction.onClick(row);\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n } else {\n columnAction.onClick(row);\n }\n }\n\n /**\n *\n * @param event : LazyLoadEvent\n * Triggers everytime a server side filter is trigger\n */\n handleServerSideEvents(event: any) {\n this.gridfilter=event;\n setTimeout(() => {\n if(this.selectedColumns && this.selectedColumns.length > 0){\n this.selectedColumns.forEach((x: any) => {\n if (event.filters[x.field]) {\n event.filters[x.field].value = x.value;\n }\n });\n }\n \n this.loading = this.autoLoadData;\n this.serverFilters = {\n filters: this.lookupFilters\n ? this.gridService.getGridFilters(event, this.selectedColumns)\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\n ...(this.pagination && {\n page: this.gridService.getGridPagination(event),\n pageSize: event.rows || 10,\n }),\n };\n\n if (\n this.serverFilters?.filters &&\n this.serverFilters?.filters.length > 0 &&\n (this.allowCaching || this.softCaching)\n ) {\n if(!this.softCaching){\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\n }else{\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\n }\n }\n\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\n this.globalData\n );\n this.onServerSideEventChange.emit(serverFilterValues);\n }, 950);\n }\n\n /**\n * @param event\n * Passes applied pagination to parent on page change\n */\n handleServerSidePagination(event: IGridPaginationEvent) {\n this.onPageChange.emit(event);\n }\n\n selectedRow(row: any) {\n this.onRowCheckBox.emit(row);\n }\n\n // set time format\n setTimeFormat(date: any) {\n let value: any = '';\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\n value = utilities.setTimeInDate(date);\n } else {\n value = this.datePipe.transform(date, 'hh:mm a');\n }\n return value;\n }\n\n //open hyperlink in edit case\n openLink(url: any) {\n if (url) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n }\n\n setFormat(column: any, row: any) {\n let value: any = '';\n if (column.format) {\n value = this.datePipe.transform(\n column.displayText ? column.displayText : row[column.field],\n column.format\n );\n } else {\n value = column.displayText ? column.displayText : row[column.field];\n }\n return value;\n }\n\n /**\n *\n * @param row\n * Sets values to editable row\n * Row's data is preseved to prevent mutation\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\n */\n\n onRowEditInit(row: any) {\n let selectedRow = { ...row };\n Object.entries(selectedRow).forEach(([key, value]: any) => {\n this.columns.forEach((col: any) => {\n if(this.setDropdownFilter){\n this.setDropdownFilterValue(col, row, key);\n this.setDropdownFilter = false;\n }\n // set the autoComplete Value in edit mode\n if (\n col.type === EGridColumnType.AUTOCOMPLETE &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n value &&\n value.length > 0\n ) {\n let newValue = value.map((x: any) => x[col.displayField]);\n if (newValue?.toString()?.includes(';')) {\n row[col.field] = newValue\n ?.toString()\n ?.replaceAll(';', ',')\n ?.split(',')\n ?.map((x: any) => ({ [col.displayField]: x }));\n }\n }\n\n // set lookup control field based on display field.\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\n if (col.field === key) {\n row[col.field] = {\n text: row[col.displayField],\n value: row[col.field],\n };\n }\n }\n\n if (col.type === EGridColumnType.DROPDOWN) {\n let option = col?.data?.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n if (\n col.field?.toLowerCase() === key?.toLowerCase() &&\n col.type === EGridColumnType.DATE\n ) {\n value = value?.action ? value.text : value;\n if (row[col.field] !== null) {\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\n row[key].text = new Date(value as string);\n }else{\n row[key] = new Date(value as string);\n }\n }\n\n // check the Minutes pattern\n if (\n (col.showTime || col.timeOnly) &&\n col.minutesInterval &&\n row[key]\n ) {\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\n }\n }\n if (\n col.type === EGridColumnType.DIALOG &&\n col.filter?.type === 'calendar' &&\n col.field.toLowerCase() === key.toLowerCase()\n ) {\n if (value === null) {\n row[key] = new Date();\n } else {\n row[col.field] = new Date(value);\n }\n }\n if (\n col.type === EGridColumnType.LINK &&\n col.field?.toLowerCase() === key?.toLowerCase() &&\n (col.allowSave === true || col.allowSave === undefined)\n ) {\n if (col.editLink === true) {\n row[key] = row[col.field + '_obj']?.hyperlink;\n } else if (col.editLink === false || col.editLink === undefined) {\n row[key] = value;\n }\n }\n });\n });\n\n this.editRowsRecords[row[this.dataKey]] = { ...row };\n this.editingRowKeys[row[this.dataKey]] = true;\n this.checkAction = true;\n this.dropdownInput = true;\n this.rowClickData = row;\n this.inEditMode = true;\n this.cancelAllRecords = false;\n this.saveAllRecord = false;\n this.sortDisabled = true;\n this.onGridRowEdit.emit(row);\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * set dropdown filter value\n */\n setDropdownFilterValue(col: any, row: any, key: string) {\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\n if (Object.values(col).some((value) => value == key)) { \n let obj = col.dropDownProp;\n let newFilters: any = [];\n\n if (obj.filters && obj.filters.length > 0) {\n obj.filters.forEach((filter: any) => {\n let newFilter = { ...filter };\n let filterKey = Object.keys(row).find((key) => {\n let matchKey: string = '';\n if (\n filter.value?.includes('{') &&\n key.toLowerCase() ===\n filter.value\n ?.toString()\n ?.toLowerCase()\n .replace('{', '')\n .replace('}', '')\n ) {\n matchKey = key;\n }\n return matchKey;\n });\n if (filterKey) {\n newFilter.value = row[filterKey];\n }\n newFilters.push(newFilter);\n });\n }\n\n this.gridService.setDropdownData(\n col,\n obj.uniqueKey,\n obj.valueProp,\n obj.labelProp,\n newFilters,\n row\n );\n\n let option = col.data.find(\n (x: any) => x.label === row[col.field]?.toString()\n );\n if (option) {\n row[col.field] = option.value;\n }\n }\n }\n }\n\n /**\n *\n * @param row\n * Passes the edited or newly created data to parent\n * In case of newly created data, dataKey and isNew prop is removed\n */\n onRowEditSave(selectedRow: any) {\n this.selectedColumns.forEach((column: any) => {\n delete selectedRow[column.field + '-data'];\n delete selectedRow[column.field + '_secondType'];\n if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n column.displayField &&\n this.lookupObject\n ) {\n selectedRow[column.field] = this.lookupObject.value;\n }\n\n if (column.formatter) {\n let value: any = selectedRow[column.field];\n if (column.formatter === 'char') {\n value = value === true ? 'Y' : 'N';\n } else if (column.formatter === 'numeric') {\n value = value === true ? '1' : '0';\n }\n selectedRow = { ...selectedRow, [column.field]: value };\n }\n\n //convert date into time format\n if (\n column.type === EGridColumnType.DATE\n ) {\n if( column.timeOnly && column.saveAsString){\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\n }\n else if(!column.timeOnly && column.showTime){\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\n }\n }\n //convert multiselect array into string\n if (\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\n ) {\n selectedRow[column.field] = selectedRow[column.field]?.toString();\n }\n\n // Saving AutoComplete Data\n if (\n column.type === EGridColumnType.AUTOCOMPLETE &&\n column.displayField &&\n selectedRow[column.field]?.length > 0\n ) {\n let arr: any = [];\n selectedRow[column.field].forEach((row: any) => {\n if (row[column.displayField]) {\n arr.push(row[column.displayField]);\n }\n });\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\n }\n });\n\n let row: any = { ...selectedRow };\n let keys = Object.keys(row);\n keys.forEach((key) => {\n if (this.lookupObject && this.lookupObject.field) {\n row[this.lookupObject.field] = this.lookupObject.value;\n }\n if (key.includes('_obj')) {\n if (this.checkAction === false) {\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\n this.checkAction = true;\n }\n let obj: any = row[key];\n if (\n obj &&\n (obj.type === 'link' ||\n obj.type === 'iframe' ||\n obj.type === 'dialog')\n ) {\n delete row[key];\n }\n }\n });\n /**\n * just emit those fields who exist in the tabel\n */\n this.setRowValue(row);\n let obj: any = {};\n this.columns.forEach((column: any) => {\n if (\n column.type === EGridColumnType.LOOKUP_INPUT &&\n column.field &&\n typeof row[column.field] === 'object'\n ) {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n if (\n (column.allowSave === true || column.allowSave === undefined)\n ) {\n obj[column.field] = row[column.field];\n if (\n column.type === EGridColumnType.DIALOG &&\n column.filter?.type === 'calendar'\n ) {\n obj[column.field] = this.datePipe.transform(\n obj[column.field],\n 'yyyy-MM-ddT00:00:00.000Z'\n );\n }\n\n //Set Decimal Fraction Value\n if (\n column.format &&\n column.format.type === EFormatType.DECIMAL &&\n row[column.field] &&\n !row[column.field].toString().includes('.')\n ) {\n let digitsInfo = '.00';\n let zero = '0';\n const formatParams = column.format?.formatParams;\n const fracDigits = column?.format?.formatParams?.digitsInfo;\n if (fracDigits) {\n for (let i = 1; i < fracDigits; i++) {\n zero = zero + '0';\n }\n digitsInfo = '.' + zero;\n }\n obj[column.field] = row[column.field] + digitsInfo;\n }\n } else if (\n row.isNew &&\n (column.allowSave === false || column.editable === false)\n ) {\n delete row[column.field];\n }\n });\n delete selectedRow['undefined'];\n this.gridService.checkValidity(this.columns, row);\n const isValid = this.gridValidation(this.columns, row);\n if (isValid) {\n // set the grid updated/inserted data\n this.rowActionEvents(selectedRow);\n this.browserCloseEvent(false);\n if (row.isNew) {\n \n const { isNew, ...newRowObj } = row;\n if(!this.addDataKeyValue){\n delete newRowObj[this.dataKey];\n }\n \n if (this.saveAllRecord) {\n this.saveRecordArray.push(newRowObj);\n }else{\n this.onRowAdd.emit(newRowObj);\n }\n } else {\n if (this.saveAllRecord) {\n this.saveRecordArray.push(obj);\n } else {\n this.onRowUpdate.emit(obj);\n }\n }\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\n } else {\n this.editingRowKeys[row[this.dataKey]] = true;\n }\n // if all rows in read only mode then show editAllRows button. \n if(Object.values(this.editingRowKeys).every((value)=> !value)){\n this.inEditMode = false;\n this.hideEditAllRowsBtn = true;\n this.sortDisabled = false;\n }\n this.selectedColumns.forEach((column: any) => {\n // convert date into time\n if (\n selectedRow[column.field] &&\n (selectedRow[column.field]?.toString()?.includes('PM') ||\n selectedRow[column.field]?.toString()?.includes('AM'))\n ) {\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\n }\n if (\n column.type === EGridColumnType.DROPDOWN &&\n column.optionLabel &&\n column.optionValue\n ) {\n this.setDropdownValue(column, selectedRow);\n }\n });\n this.addNewRowCheck = false;\n }\n\n // check the validation of the field\n gridValidation(columns: any, row: any): boolean {\n if (!this.gridService.checkValidity(columns, row)) {\n let errorMessageDetails: string ='';\n columns?.forEach((column)=>{\n if(column.errorMessage){\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + ' , ' + column.errorMessage : column.errorMessage;\n }\n })\n let isRequired = columns.some(\n (column: any) => column.errorMessage && !row[column.field]\n );\n if (isRequired) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else {\n this.alertService.error(errorMessageDetails, 5000, 'INVALID FIELD');\n }\n return false;\n } else {\n return true;\n }\n }\n\n /**\n *\n * @param row : any\n * @param index : number\n * Clears out the edit row and replace with readable one\n */\n onRowEditCancel(row: any, index: number) {\n if (row.isNew) {\n this.rowsData.splice(index, 1);\n } else {\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\n delete this.editRowsRecords[row[this.dataKey]];\n }\n delete this.editingRowKeys[row[this.dataKey]];\n this.columns.forEach((column) => {\n if (column.type === EGridColumnType.DROPDOWN) {\n this.setDropdownValue(column, row);\n }\n });\n this.inEditMode = false;\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\n this.sortDisabled = false;\n } \n this.addNewRowCheck = false;\n this.inlineRowCancel.emit(row);\n }\n\n /**\n *\n * @param row\n * Sends the row payload to parent for deletion\n */\n\n /**\n *set the gridData on row actions events\n */\n rowActionEvents(rowInfo, deleteRow: boolean = false){\n let action: string = '';\n let gridRowsData: any[] = [...this.rowsData];\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\n if(index > -1){\n if(deleteRow){ \n gridRowsData.splice(index, 1);\n this.rowsData = [...gridRowsData];\n action = 'delete';\n } else {\n if(this.addNewRowCheck){\n action = 'insert';\n }else{\n action = 'update';\n }\n if(this.onGridRowActions.observers.length !== 0){\n rowInfo['rowAction']= action;\n }\n gridRowsData[index] = rowInfo;\n }\n }\n this.rowsChange.emit(this.rowsData);\n this.onGridRowActions.emit(gridRowsData);\n }\n\n /**\n * open Delete confirmation dialog when trying to delete row\n */\n deleteRecord(row: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this record?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handleInlineCRUD',\n accept: () => {\n if (this.useServerSideEvents) {\n this.loading = true;\n }\n // set the grid deleted data \n this.rowActionEvents(row, true);\n this.onRowDelete.emit(row);\n this.confirmationService.close();\n this.inEditMode = false;\n this.loading = false;\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n /**\n * To set disabled the control\n */\n allowDisabled(column: any, row: any): boolean {\n let value: boolean = false;\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\n if (\n row[column.field]?.action &&\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\n ) {\n value = true;\n }\n } else if (column.disabled || column.editable === false) {\n value = true;\n }\n return value;\n }\n\n /**\n * To set aggregate in grid footer\n */\n setAggregateText(column: IGridColumn) {\n if (column?.aggregate) {\n column.aggregate.forEach((col: any) => {\n if (this.rowsData && this.rowsData.length > 0) {\n let columnType: EGridAggregate = col.type;\n if (columnType === EGridAggregate.COUNT) {\n const count = this.rowsData.length;\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\n }\n\n if (\n columnType === EGridAggregate.SUM ||\n columnType === EGridAggregate.AVERAGE\n ) {\n const colValues: number[] = this.getColumnValues(column);\n if (colValues && colValues.length > 0) {\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\n if (columnType === EGridAggregate.SUM) {\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\n }\n if (columnType === EGridAggregate.AVERAGE) {\n const average = sum / colValues.length || 0;\n col.aggrValue = this.setAggregateFooterText(\n col,\n average,\n 'Avg'\n );\n }\n }\n }\n } else {\n col.aggrValue = '';\n }\n });\n }\n }\n\n /**\n * set grid Aggregate values\n */\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\n const digitsInfo = column.format?.digitsInfo;\n const caption: string =\n column.caption?.length > 0 ? column.caption : defaultCaption;\n\n const decimalPoint = isDecimalFormat\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\n : value?.toFixed(0);\n return `${caption} ${decimalPoint\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\n }\n\n /**\n * set decimat and numeric values\n */\n setNumericValues() {\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\n this.columns.forEach((column: any) => {\n if (column.type === EGridColumnType.NUMERIC) {\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\n this.rowsData.forEach((row) => {\n if (column?.format?.type === 'percent') {\n if (column.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\n } else {\n row[column.field] = row[column.field] / 100;\n }\n } else if (digitsInfo) {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\n }\n } else if (column?.format?.type === 'decimal') {\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\n }\n });\n }\n })\n }\n }\n\n /**\n * get column value based on column field\n */\n getColumnValues(column: IGridColumn) {\n let arr: any = [];\n this.rowsData.forEach((row) => {\n let keys = Object.keys(row);\n keys.map((key) => {\n if (column.field === key) {\n arr.push(row[key]);\n }\n });\n });\n return arr;\n }\n\n /**\n *\n * Export to PDF\n */\n exportPdf() {\n var exportData = this.setExportData([...this.rowsData], true);\n let doc = new jsPDF('p', 'pt');\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\n doc.save('Export.pdf');\n }\n\n /**\n * Sub-function to set rows for export to Pdf, and Excel\n * @rows param for rows\n * @isExcel param for export to excel indication\n */\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\n const headings: any = this.columns.map((column) => column.field);\n rows.forEach((row) => {\n for (var prop in row) {\n if (!headings.includes(prop)) {\n delete row[prop];\n }\n if (isPdf) {\n row[prop] =\n !row[prop] && typeof row[prop] !== 'boolean'\n ? ''\n : row[prop].toString();\n }\n }\n });\n return { rows, headings };\n }\n\n /**\n *\n * Export to Excel\n */\n exportExcel() {\n let exportData: any = this.exportDataToExcel();\n import('xlsx').then((xlsx) => {\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\n\n let rowIndex = 0;\n exportData.forEach((row: any) => {\n let colIndex = 0;\n this.selectedColumns.forEach((col: any) => {\n const cellValue: string = row[col.header];\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\n const linkText: string = cellValue.split('|')[0];\n let linkUrl: string = cellValue.split('|')[1];\n if (linkUrl && !linkUrl.startsWith('http')) {\n if (!linkUrl.startsWith('/')) {\n linkUrl = '/' + linkUrl;\n }\n\n linkUrl =\n window.location.protocol +\n '//' +\n window.location.hostname +\n linkUrl;\n }\n\n const cellAddress = xlsx.utils.encode_cell({\n c: colIndex,\n r: rowIndex + 1,\n });\n\n worksheet[cellAddress] = {\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\n };\n }\n\n colIndex++;\n });\n\n rowIndex++;\n });\n\n const workbook = {\n Sheets: { sheet1: worksheet },\n SheetNames: ['sheet1'],\n };\n const excelBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array',\n });\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\n });\n }\n\n exportDataToExcel() {\n let arr: any = [];\n this.rowsData.forEach((row: any) => {\n let obj: any = {};\n this.selectedColumns.forEach((column: any) => {\n const gridHeader = column.header;\n if (column.type === EGridColumnType.LINK) {\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\n } else {\n obj[gridHeader] = row[column.field];\n }\n });\n\n arr.push(obj);\n });\n return arr;\n }\n\n /**\n *\n * Export to excel (sub-method)\n */\n saveAsExcelFile(buffer: any, fileName: string): void {\n import('file-saver').then((FileSaver) => {\n let EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\n saveAs(data, fileName);\n });\n }\n\n /**\n *set config data of lookup control dialog\n */\n setLookupDialogConfig(row: any, column: any, data: any) {\n let selection: string = '';\n if (row[column.field] && typeof row[column.field] === 'object') {\n selection = row[column.field].text;\n } else if (column.displayField && row[column.displayField]) {\n selection = row[column.displayField];\n } else {\n selection = row[column.field];\n }\n\n if (column.field && typeof row[column.field] === 'object') {\n const newRow = { ...row };\n newRow[column.field] = newRow[column.field]?.value;\n row = { ...newRow };\n }\n\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\n let obj = utilities.autoSetLookupData(data, row);\n row[column.field + '-data'] = obj;\n }\n return {\n rowData: row[column.field + '-data'],\n selection: selection,\n column: column,\n };\n }\n\n /**\n * open link on lookupControl control in read only mode when editLink set true\n */\n openLookupHyperlink(column: IGridColumn, row: any) {\n if (column.editLink === true && column.component) {\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\n obj['component'] = column.component;\n const ref = this.openLookupDialog(obj);\n ref.onClose.subscribe((res) => {\n if (res && column.onReturn) {\n column.onReturn(res);\n }\n });\n }\n }\n\n /**\n * open lookup Dialog\n */\n openLookupDialog(column: any) {\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\n const ref = this.dialogService.open(column.component, {\n ...columnData,\n data: {\n selection: column.selection,\n field: column.column.field,\n valueField: column.column.lookupControl?.data?.valueField,\n ...column.rowData,\n },\n });\n const componentName = column.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return ref;\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(column: any, row?: any) {\n this.onClickEvent(column, row);\n this.lookupObject = { text: '', value: '', field: '' };\n if (column.lookupControl) {\n let obj: any = this.setLookupDialogConfig(\n row,\n column,\n column.lookupControl.data?.data\n );\n obj['component'] = column.lookupControl.component;\n const ref = this.openLookupDialog(obj);\n ref.onClose.subscribe(\n (res) => {\n if (column.onReturn) {\n column.onReturn(res, row);\n }\n if (res) {\n let value = utilities.setDialogResponse(\n column,\n column.lookupControl,\n res\n );\n if (column.displayField) {\n row[column.field] = {\n text: res[column.displayField.toLowerCase()],\n value: res[column.field.toLowerCase()],\n };\n this.lookupObject = row[column.field];\n } else if (value && value.value) {\n value['field'] = column.field;\n row[column.field] = value.value;\n } else {\n row[column.field] = res[column.field.toLowerCase()];\n }\n }\n if (row[column.field] !== obj.selection) {\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(row);\n }\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n setFilterLookup(column: any) {\n this.gridService.setLookUpFilter(column, this.dialogService);\n }\n\n // Check calender value is changed or not\n calenderChangeEvent(column: any, row: any) {\n let valueChange: boolean = false;\n if (\n column.timeOnly &&\n this.datePipe.transform(row[column.field], 'hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\n ) {\n valueChange = true;\n } else if (\n column.showTime &&\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\n ) {\n valueChange = true;\n } else if (\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\n ) {\n valueChange = true;\n }\n if(valueChange){\n this.browserCloseEvent(true);\n if(column.onChange){\n column.onChange(row);\n }\n }\n this.calenderPreviousValue = '';\n }\n\n onFocusOutEvent(column: IGridColumn, row: any) {\n this.gridService.checkValidity([column], row);\n if (column.type === EGridColumnType.DATE) {\n this.calenderChangeEvent(column, row);\n }\n if (column.onFocusOut) {\n column.onFocusOut(row);\n } else if (\n column.onReturn &&\n column.type !== EGridColumnType.LOOKUP_INPUT\n ) {\n column.onReturn(row);\n }\n }\n\n setFilterFocusOut(col: any, filter?: any, event?: any) {\n setTimeout(\n () => {\n this.gridFilterObj = { column: col, filter: filter, event: event };\n const newColumn: any = { ...col };\n //change filter calender format\n if (newColumn.type === 'date' && newColumn.value) {\n newColumn.value = this.datePipe.transform(\n col.value.toString().trim(),\n 'yyyy-MM-dd'\n );\n }\n this.filterObj(newColumn); \n localStorage.setItem('applyFilter', JSON.stringify(false));\n },\n col.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\n);\n }\n\n filterObj(col: any) {\n const obj = {\n field: col.field,\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\n operator: col.operator ? col.operator : 'and',\n tableAlias: col.tableAlias ? col.tableAlias : '',\n value: col.value,\n };\n this.globalFiltersArray.push(obj);\n }\n\n applyEnterEvent(filter: any, event: any, column: any) {\n this.gridService.applyFilterEvent = true;\n this.autoLoadData = true;\n this.onApplyFilter.emit();\n this.filterObj(column);\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\n } else {\n filter(event.target.value);\n }\n }\n\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\n if (column.value === null) {\n this.removeNullFilters(column);\n this.setFilterFocusOut(column, filter, event);\n }\n }\n\n backspaceEvent(event: any, column: any) {\n if (\n event.key === 'Backspace' &&\n (column.value?.toString().length === 1 ||\n column.value?.toString() === '' ||\n column.value === null)\n ) {\n this.removeNullFilters(column);\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\n this.removeNullFilters(column);\n }\n }\n\n removeNullFilters(column: any) {\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\n let arr = [...this.globalFiltersArray];\n let index = arr.findIndex((i) => i.field === column.field);\n arr.splice(index, 1);\n this.globalFiltersArray = arr;\n }\n }\n\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\n removingFilters(event: any, column: IGridColumn) {\n if (\n (event.key === 'Backspace' || event.key === 'Delete') &&\n column.value?.toString().length === 0\n ) {\n let searchFilters;\n if(!this.softCaching){\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\n }else{\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\n }\n if (searchFilters && searchFilters.filters) {\n if (searchFilters.filters.length > 0) {\n let index = searchFilters.filters.findIndex(\n (x: any) => x.field === column.field\n );\n if (index !== -1) {\n if (searchFilters.filters.length === 1) {\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\n } else {\n searchFilters.filters.splice(index, 1);\n if(!this.softCaching){\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\n }else{\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\n }\n }\n }\n }\n }\n }\n }\n\n // Add Click Button Event on Grid.\n onClickButton(column: any, row: any) {\n this.openGridDialog(column, row);\n }\n\n // Invoke onClick Event.\n onClickEvent(column: any, row: any) {\n if(column.type === EGridColumnType.LINK && column.editLink === false && column.editable !== false && column.disabled !== true)\n {\n let a = document.createElement('a'); \n a.href = row[column.field + '_obj']?.hyperlink; \n a.target = \"_blank\";\n a.click();\n }\n if (column.type === EGridColumnType.DATE && row[column.field]) {\n this.calenderPreviousValue = row[column.field];\n } else if (\n !row[column.field] &&\n column.type === EGridColumnType.DATE &&\n (column.showTime || column.timeOnly) &&\n column.minutesInterval\n ) {\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\n }\n if (column && column.onClick) {\n column.onClick(row);\n }\n }\n\n // set the select value of multi-select\n showOption(column, row){\n if(row[column.field]){\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\n row[column.field] = [row[column.field]];\n } else if(row[column.field].includes(',')){\n row[column.field] = row[column.field].split(',');\n }\n }\n }\n\n onClearValue(column, row){\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\n row[column.field] = null;\n }\n }\n\n // Invoke onChange Event\n onChangeEvent(column: any, row: any) {\n // set dropdown displayField value base on optionLabel & optionValue.\n this.displayFieldDropdownValue(column, row);\n this.onClearValue(column, row);\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\n row[column.field] = event;\n }\n\n // set dropdown displayField value base on optionLabel & optionValue.\n displayFieldDropdownValue(column: any, row: any) {\n if (\n column?.type === EGridColumnType.DROPDOWN &&\n column.displayField &&\n column.displayField?.length > 0\n ) {\n const key: any = Object.keys(row)?.find(\n (rowInfo) =>\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\n );\n const displayFieldValue = column.data.find(\n (record: any) =>\n record[column.optionValue]?.toString() ===\n row[column.field]?.toString()\n );\n if (key && displayFieldValue) {\n row[key] = displayFieldValue[column.optionLabel];\n }\n }\n }\n\n // Add autoSearch on Grid.\n autoSearch(event: any, column: any, row: any) {\n if (event && column && row) {\n column.onReturn(event.query, column, row);\n }\n }\n\n // Refresh grid\n refreshGrid(){\n this.reloadPage = interval(this.setGridRefreshTime).subscribe((x)=>{\n if(this.gridfilter == undefined){\n this.gridfilter= {filters: [], sorts:[]};\n }\n this.handleServerSideEvents(this.gridfilter);\n });\n } \n\n // Remove FilterValues\n cleargridFiltersValue() {\n const globalFilterClearValueBtn = document.getElementById(\n 'clearGlobalFilterBtn'\n );\n if (globalFilterClearValueBtn) {\n globalFilterClearValueBtn.click();\n }\n if (this.selectedColumns && this.selectedColumns.length > 0) {\n this.selectedColumns.forEach((col) => {\n col.value = null;\n this.filterObj(col);\n });\n }\n }\n\n editAllRowsAtOnce() {\n if(this.editRowPermission){\n if (this.getClassForEditAllRows('editRow')) {\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\n this.editAllRecord = true;\n }\n this.hideEditAllRowsBtn = false;\n this.sortDisabled = true;\n }\n }\n }\n\n saveAllRowsAtOnce() {\n this.getClassForEditAllRows('saveRow');\n }\n\n // reset the grid rowsValue to orignal values\n cancelAllRowsAtOnce() {\n this.rowsData = [...this.rowsDataCopy];\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\n this.selectedColumns?.forEach((column)=>{\n if(column.type === EGridColumnType.DATE){\n this.rowsData?.forEach((row)=>{\n if(row[column.field]){\n row[column.field]= new Date(row[column.field]);\n }\n })\n }\n\n });\n this.onCancelAllRows.emit(this.rowsData);\n }\n\n getClassForEditAllRows(className: string = '') {\n let success: boolean = false;\n const getBtns: any =\n this.elementRef?.nativeElement?.getElementsByClassName(className);\n if (getBtns && getBtns.length > 0) {\n success = true;\n if (className === 'saveRow') {\n this.editAllRecord = false;\n this.saveAllRecord = true;\n const records$ = [];\n setTimeout(()=>{\n for (let item of getBtns) {\n const rowSave = new Promise((resolve, reject) => { \n item.click();\n resolve(item);\n });\n records$.push(rowSave);\n }\n Promise.all(records$).then((response) => {\n this.onRowUpdate.emit(this.saveRecordArray);\n this.saveRecordArray = [];\n });\n },20)\n } else {\n this.saveAllRecord = false;\n for (let item of getBtns) {\n if(className == 'cancelRow'){\n setTimeout(() => {\n item.click();\n }, 50);\n }else{\n item.click();\n }\n }\n }\n }\n return success;\n }\n\n //Focused calender input on select date\n selectDate(column: any) {\n document.getElementById(column.field)?.focus();\n }\n\n //apply filter on grid when search btn clicked\n applyGirdFilterBtn() {\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\n this.applyEnterEvent(\n this.gridFilterObj.filter,\n this.gridFilterObj.event,\n this.gridFilterObj.column\n );\n }\n }\n\n // invoke multiSelection click event\n multiCheckBoxOnclick(rowInfo: any) {\n if (rowInfo) {\n this.onMultiSelectionChange.emit(rowInfo);\n }\n }\n\n applyDropdownFilter(filter: any, event: any) {\n filter(event.target);\n }\n\n searchDropdownFilter(filter: any, event: any, column: any) {\n this.setFilterFocusOut(column, filter, event);\n this.dropDownFilter = { filter: filter, event: event, column: column };\n if (column.allowSearch !== true) {\n this.applyDropdownFilter(filter, event);\n }\n }\n\n lookupClearValue(column: any, row?: any) {\n if (row) {\n row[column.field] = '';\n } else {\n column.value = '';\n this.setFilterFocusOut(column);\n }\n this.browserCloseEvent(true);\n if (column.onChange) {\n column.onChange(row);\n }\n }\n\n // invoke when click header checkbox filter\n clickCheckBoxFilter(column: IGridColumn) {\n if (this.editAllRecord) {\n if (\n column.type === EGridColumnType.BOOLEAN \n &&\n column?.filter?.type === 'checkbox' && column.filtering != false\n ) {\n this.rowsData.forEach((row) => {\n row[column.field] = column.value;\n });\n //this.onCheckBoxFilterClick.emit(column);\n }\n //this.onCheckBoxFilterClick.emit(column);\n }\n this.onCheckBoxFilterClick.emit(column);\n }\n //set header checkbox value for getting all columns on stay admin\n setHeaderCheckBoxValue(value: any){\n this.isIncludedAllColumns.emit(value);\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(column: any, row: any){\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if( year && year.length === 4){\n this.calendarFormat= 'mm/dd/yy';\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\n } else if(year && year.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n }\n}\n\n\n\n","import { Injectable } from '@angular/core';\nimport {\n EValidator,\n IFormField,\n EFormControl,\n AddFormField,\n ISetFilter,\n IDropDownRequest,\n IListFilter,\n IReportBtn,\n IDynamicForm,\n} from '../models/form.model';\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\nimport { HyperlinkService } from '../services/hyperlink.service';\nimport { AlertService } from './alert.service';\nimport { DropdownService } from './dropdown.service';\nimport { RequestService } from './request.service';\nimport * as utilities from './utilities.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormService {\n public fieldFocusedOut:boolean = false;\n constructor(\n private hyperlinkService: HyperlinkService,\n private dropdownService: DropdownService,\n private alertService: AlertService,\n private requestService: RequestService\n ) { }\n\n checkValidity(formFields: IFormField[]): boolean {\n let isValid: boolean = true;\n\n formFields.map((item: IFormField) => {\n if (item.validations && !item.disabled) {\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\n item.value = item.value.value;\n }\n item.errorMessage = '';\n item.isvalid = true;\n for (let i = 0; i < item.validations.length; i++) {\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\n const valid =\n item.validations && typeof item.label === 'object'\n ? item.label.name\n : item.label;\n if (\n item.validations[i].type == EValidator.REQUIRED &&\n !item.value &&\n !item.hidden &&\n valid\n ) {\n isValid = item.value\n ? true\n : this.setErrorMessage(item, `${valid} is required`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MINLENGTH &&\n item.value.length < item.validations[i].expression\n ) {\n isValid =\n item.value && item.value.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MAXLENGTH &&\n item.value.length > item.validations[i].expression\n ) {\n isValid =\n item.value && item.value.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${item.validations[i].expression} characters`\n );\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MINIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\n }else if(item.value < item.validations[i].expression){\n isValid =\n item.value && item.value.length > item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Minimum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n item.value &&\n item.validations[i].type == EValidator.MAXIMUM &&\n isValid\n ) {\n if(item.control === EFormControl.CALENDAR){\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\n }else if(item.value > item.validations[i].expression){\n isValid =\n item.value && item.value.length < item.validations[i].expression\n ? true\n : this.setErrorMessage(\n item,\n `${item.label} Maximum ${valid} ${item.validations[i].expression}`\n );\n }\n } else if (\n item.value &&\n item.validations[i].type == EValidator.PATTERN &&\n !item.value.match(item.validations[i].expression)\n ) {\n isValid =\n item.value && item.value.match(item.validations[i].expression)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.NUMERIC &&\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\n ) {\n isValid =\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.PHONE &&\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ) {\n isValid =\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.DECIMAL &&\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\n ) {\n isValid =\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\n ? true\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\n break;\n } else if (\n item.value &&\n item.validations[i].type == EValidator.EMAIL &&\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\n ) {\n isValid =\n item.value &&\n item.value.match(\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\n )\n ? true\n : this.setErrorMessage(item, `Enter valid ${valid}`);\n break;\n }\n }\n }\n });\n return isValid;\n }\n\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\n item.errorMessage = errorMessage;\n item.isvalid = false;\n return false;\n }\n\n addFormField(fieldInfo: IFormField): IFormField {\n if (!fieldInfo.label) {\n fieldInfo.label = fieldInfo.field;\n }\n\n const formField: any = {\n label: fieldInfo.label,\n field: fieldInfo.field,\n displayField: fieldInfo.displayField,\n control: fieldInfo.control,\n showOption: fieldInfo.showOption,\n column: fieldInfo.column,\n row: fieldInfo.row,\n minutesInterval: fieldInfo.minutesInterval,\n value: fieldInfo.value,\n format: fieldInfo.format,\n hidden: fieldInfo.hidden,\n permissions: fieldInfo.permissions,\n validations: fieldInfo.validations,\n id: fieldInfo.id,\n hyperlink: fieldInfo.hyperlink,\n data: fieldInfo.data,\n lookupControl: fieldInfo.lookupControl,\n componentControl: fieldInfo.componentControl,\n optionLabel: fieldInfo.optionLabel,\n optionValue: fieldInfo.optionValue,\n saveAsString: fieldInfo.saveAsString,\n showAllValue: fieldInfo.showAllValue,\n onClick: fieldInfo.onClick,\n onReturn: fieldInfo.onReturn,\n onFocusOut: fieldInfo.onFocusOut,\n onChange: fieldInfo.onChange,\n tables: fieldInfo.tables,\n disabled: fieldInfo.disabled,\n disabledText: fieldInfo.disabledText,\n timeOnly: fieldInfo.timeOnly,\n monthOnly: fieldInfo.monthOnly,\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\n height: fieldInfo.height,\n showBottomBorder: fieldInfo.showBottomBorder,\n allowSearch: fieldInfo.allowSearch,\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\n SetfileTypes: fieldInfo.SetfileTypes,\n icon: fieldInfo.icon,\n color: fieldInfo.color,\n card: fieldInfo.card,\n uniqueKey: fieldInfo.uniqueKey,\n azureContainer: fieldInfo.azureContainer,\n class: fieldInfo.class\n };\n\n return formField;\n }\n\n addCheckbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CHECKBOX;\n return this.addFormField(fieldInfo);\n }\n\n addTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.INPUT;\n fieldInfo.disabled = true;\n fieldInfo.showBottomBorder = true;\n return this.addFormField(fieldInfo);\n }\n\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NUMERIC;\n return this.addFormField(fieldInfo);\n }\n\n addSpaceField(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.SPACER;\n return this.addFormField(fieldInfo);\n }\n\n addNewLine(fieldInfo: AddFormField): IFormField{\n fieldInfo.control = EFormControl.BREAK_LINE;\n return this.addFormField(fieldInfo);\n }\n\n addTextArea(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.TEXTAREA;\n return this.addFormField(fieldInfo);\n }\n \n // Adding Report button for DynamicForm\n addReportBtn(fieldInfo: IReportBtn) {\n fieldInfo.control = EFormControl.REPORT;\n return fieldInfo;\n }\n\n addNoteField(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.NOTE_FIELD;\n return this.addFormField(fieldInfo);\n }\n\n addHyperlink(fieldInfo: AddFormField) {\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\n fieldInfo.control = EFormControl.HYPERLINK;\n return this.addFormField(fieldInfo);\n }else{return this.hyperlinkService.buildUrl(\n fieldInfo?.hyperlink?.linkId,\n fieldInfo.hyperlink?.params\n ).then((res: any) => {\n const params = fieldInfo?.hyperlink?.params;\n const link = res;\n if(res && params){\n Object.keys(params).forEach((key)=>{\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\n res = res.replace('{{'+key+'}}', params[key])\n } \n })\n }\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\n fieldInfo.hyperlink.link = res;\n }\n fieldInfo.control = EFormControl.HYPERLINK;\n let obj: any = this.addFormField(fieldInfo);\n obj['orignalLink'] = link;\n return obj;\n });\n }\n}\n\n addCalendar(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.CALENDAR;\n return this.addFormField(fieldInfo);\n }\n\n // add AutoComplete for Form\n addAutoComplete(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\n return this.addFormField(fieldInfo);\n }\n\n // Search AutoComplete Data for form\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[], search: string = ''): any {\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\n if(search){\n let existInRecord: boolean = response.records.some((record: any)=> record[formField.displayField] && record[formField.displayField]?.toString()?.toLowerCase() === search?.toLowerCase());\n if(!existInRecord){\n response.records.unshift ({[formField.displayField]: search});\n }\n }\n formField.data = [...response.records];\n });\n }\n\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\n fieldInfo.control = EFormControl.DROPDOWN;\n if (dropDownProp) {\n let uniqueKey = dropDownProp.uniqueKey;\n let valueProp = dropDownProp.valueProp;\n let labelProp = dropDownProp.labelProp;\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\n if (uniqueKey && valueProp && labelProp) {\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\n }\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\n return this.dropdownService\n .setDropDownList(\n uniqueKey,\n valueProp,\n labelProp,\n filters\n )\n .then((res: any) => {\n fieldInfo.data = res;\n return this.addFormField(fieldInfo);\n })\n .catch((error: any) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n addLookUp(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\n return this.addFormField(fieldInfo);\n }\n\n addDialog(fieldInfo: AddFormField): IFormField {\n return this.addLookUp(fieldInfo);\n }\n\n addComponent(fieldInfo: AddFormField): IFormField {\n fieldInfo.control = EFormControl.COMPONENT;\n return this.addFormField(fieldInfo);\n }\n\n addHeader(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SECTION_HEADER;\n fieldInfo.class = 'form-header';\n return this.addFormField(fieldInfo);\n }\n\n addMultiSelect(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.MULTISELECT;\n return this.addFormField(fieldInfo);\n }\n\n addFileUpload(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.FILE_UPLOAD;\n return this.addFormField(fieldInfo);\n }\n\n addDisplayFile(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.DISPLAY_FILE;\n return this.addFormField(fieldInfo);\n }\n\n // Adding OnClick Button Function for DynamicForm\n addButton(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.ADD_BUTTON;\n return this.addFormField(fieldInfo);\n }\n\n // Adding Switch Function for DynamicForm\n addSwitch(fieldInfo: IFormField): IFormField {\n fieldInfo.control = EFormControl.SWITCH;\n return this.addFormField(fieldInfo);\n }\n\n // start add new card functionality\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\n fieldInfo.control = EFormControl.CARD;\n if (cardData && cardData.uniqueKey) {\n if(cardData.sorts?.length > 0){\n cardData.sorts.forEach((res) =>{\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\n });\n } \n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\n } else {\n return this.addFormField(fieldInfo);\n }\n }\n\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\n return this.getCardList(uniqueKey, filters, sorts)\n .then((res: any) => {\n fieldInfo.card.data = res.records;\n return this.addFormField(fieldInfo);\n })\n .catch((error) => {\n this.alertService.apiError(error);\n return this.addFormField(fieldInfo);\n });\n }\n\n // load component on form\n setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\n formSections?.forEach((section)=>{\n section.fields.forEach((field:any)=>{\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\n let keys = Object.keys(value);\n keys.forEach((key)=>{\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\n });\n utilities.changeDynamicFormState(id, field.componentControl.data);\n };\n });\n });\n }\n\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\n return new Promise((resolve, reject) => {\n this.requestService\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\n .subscribe(\n (response: any) => {\n if (response) {\n return resolve(response);\n } else {\n return resolve([]);\n }\n },\n ({ error }: any) => {\n reject(error);\n }\n );\n });\n }\n // End add new card functionality\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\n\n@Component({\n selector: 'se-notes',\n templateUrl: './notes.component.html',\n styleUrls: ['./notes.component.scss'],\n})\nexport class NotesComponent implements OnInit {\n constructor(\n public ref: DynamicDialogRef,\n public config: DynamicDialogConfig\n ) { }\n\n public note: string = '';\n public disabledText: boolean = false;\n\n ngOnInit(): void {\n this.note = this.config.data.value ?? '';\n this.disabledText = this.config.data.disabledText;\n }\n\n handleCancel() {\n this.ref.close();\n }\n\n handleOk() {\n this.ref.close(this.note);\n }\n}\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\nimport { FormService } from '../../../services/form.service';\nimport { AlertService } from '../../../services/alert.service';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { NotesComponent } from '../../shared/notes/notes.component';\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { IframeComponent } from '../iframe/iframe.component';\nimport { IDictionary } from '../../../models/common.model';\nimport { Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DatePipe } from '@angular/common';\nimport { GridService } from '../../../services/grid.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\n\n@Component({\n selector: 'se-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss']\n})\nexport class FormComponent implements OnInit {\n @Input() stickyActions: boolean = true;\n @Input() form: IDynamicForm;\n @Input() hideSaveButton: boolean = false;\n @Input() hideCancelButton: boolean = false;\n @Input() loading:boolean = false;\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer: QueryList<ViewContainerRef>;\n\n dynamicCase = EFormControl;\n permissionType = EPermissionType;\n roles: string[] = [];\n isFormDisabled: boolean = false;\n isFormHidden: boolean = false;\n componentsList: IDictionary[] = [];\n fileUploadUrls: any;\n showfileUploadError: boolean = false;\n cardList: IDynamicCard;\n calenderPreviousValue: string = '';\n defaultDate: string = '';\n lookupFocusOut: boolean = false;\n calendarFormat: string = 'mm/dd/y';\n\n // apply checked/unChecked prop for CheckBox of the Form\n checked: boolean = true;\n unChecked: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private formService: FormService,\n private alertService: AlertService,\n private sanitizer: DomSanitizer,\n public dialogService: DialogService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private router: Router,\n private el: ElementRef,\n private datePipe: DatePipe,\n private gridService: GridService,\n private pageLoggerService: PageLoggerService,\n ) { }\n\n ngOnInit(): void {\n }\n \n // browser tab close event\n @HostListener('window:beforeunload', ['$event'])\n beforeunloadHandler(event:any) {\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\n return false;\n }else{\n return true;\n }\n }\n\n ngOnChanges() {\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n // start cardList reference break functionality\n let formValues = { ...this.form };\n formValues.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field:any) => {\n\t // convert string time into date\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\n field['previousValue'] = field?.value;\n }\n if(field?.control === EFormControl.CALENDAR &&\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\n field.value = utilities.setTimeInDate(field.value);\n }\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\n const value = field?.value.map((value: any)=> value[field?.displayField]);\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\n }\n }\n // convert the multiSelect string value in array\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\n if(field.value?.toString()?.includes(\",\")){\n field.value = field.value?.toString()?.split(\",\");\n }else {\n field.value = [field.value];\n }\n }\n if (field?.control === EFormControl.CARD) {\n this.form = {};\n setTimeout(() => {\n field?.card?.data?.forEach((x: any) => {\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\n x.dynamicForm = {\n formSections: JSON.parse(\n JSON.stringify(field?.card?.formSections)\n ),\n };\n };\n });\n this.form = formValues;\n }, 500);\n }\n // End cardList reference break functionality\n if (field?.control === EFormControl.CHECKBOX) {\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\n }\n });\n }\n });\n // apply user role permissions on form\n this.roles = this.authService.getUserRoles();\n this.applyUserPermissions();\n this.applyRequiredFieldValidation();\n this.removeWhiteSpaces();\n this.setHyperlinkComponentRoute();\n setTimeout(() => {this.setCalanderWidth();}, 3000);\n }\n }\n\n // set calender 2 Or 4 digit year format\n calenderInputValue(formField: IFormField){\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\n const year = val?.target?.value?.toString()?.split('/')[2];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n}\n\n// set percent and decimal values\n setnumericvalues() {\n this.form?.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if (field?.control === EFormControl.NUMERIC) {\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\n if (field?.format?.type === 'percent') {\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\n if (digitsInfo) {\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\n } else {\n field.value = field.value / 100;\n }\n } else if (digitsInfo) {\n field.value = parseFloat(field.value).toFixed(digitsInfo);\n }\n } else if (field?.format?.type === 'decimal') {\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\n }\n }\n })\n }\n })\n }\n\n /**\n * Checks if form has any field with dynamic component;\n * Creates component instance using componentFactoryResolver\n * Injects component through viewRef.createComponent()\n * Passes data to component\n * Subscribes to the events passed to the components\n * Finally forces Angular to detech changes\n */\n loadDynamicComponents() {\n this.componentsList = [];\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field:any, fieldIndex) => {\n if (field.control === EFormControl.COMPONENT) {\n const viewRef:any = this.dynamicComponentContainer.find(\n (x) =>\n x.element.nativeElement.id ==\n `${formSection.name}-${fieldIndex}`\n );\n const {\n component: Component,\n data,\n handlers,\n } = field.componentControl;\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\n Component\n );\n // Passing data to component\n const componentRef = viewRef?.createComponent(componentFactory);\n if(componentRef){\n Object.entries(data ?? {}).forEach(([key, value]) => {\n componentRef.instance[key] = value;\n });\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\n // Subscribes to the events passed to the components\n if (handlers) {\n Object.entries(handlers).forEach(([event, handler]:any) => {\n (componentRef.instance[\n event\n ] as EventEmitter<any>)?.subscribe((response) => {\n handler(response);\n });\n });\n }\n }\n // invoke change detection\n this.cdr.detectChanges();\n }\n });\n });\n }\n\n //invoke when file upload OR delete a file\n fileOnchangeEvent(){\n let cardControl: boolean = false;\n this.form?.formSections?.forEach((formSection)=> {\n if(formSection?.fields?.some((formField: any)=> formField?.control === EFormControl.CARD)){\n cardControl = true;\n }\n });\n setTimeout(() => {\n if(cardControl){\n this.loadDynamicComponents();\n }\n }, 1000);\n }\n\n ngAfterViewInit() {\n // load dynamic components if exist in form\n setTimeout(() => {\n this.setnumericvalues()\n this.onDynamicFormStateChange();\n this.loadDynamicComponents();\n }, 500);\n }\n\n removeWhiteSpaces(){\n this.form?.formSections?.forEach((section) =>{\n if(section.class) section.class = section.class.replace(/\\s/g, '');\n })\n }\n\n setHyperlinkComponentRoute() {\n this.form?.formSections?.forEach((formSection) => {\n formSection.fields.forEach((field) => {\n if (\n field.control === EFormControl.HYPERLINK &&\n field.hyperlink?.component\n ) {\n this.router.resetConfig([\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\n ...this.router.config,\n ]);\n }\n });\n });\n }\n\n browserTabCloseEvent(event: boolean = false){\n this.formService.fieldFocusedOut = event;\n }\n\n /**\n * Listens any change in Dynamic Form component State\n */\n onDynamicFormStateChange() {\n utilities.onDynamicFormStateChange().subscribe((response) => {\n if (response.id && response.data) {\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\n if (componentRefObj){\n Object.entries(response.data ?? {}).forEach(\n ([key, value]) => {\n componentRefObj.value.instance[key] = value;\n }\n );\n componentRefObj.value.instance.ngOnInit();\n }\n }\n });\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.form && this.form.formSections) {\n let totalFields: number = 0;\n let disabledFields: number = 0;\n let hiddenFields: number = 0;\n\n this.form.formSections.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((formField) => {\n let permissions: any = formField.permissions;\n let sectionPermissions: any = [];\n if (!permissions) sectionPermissions = formSection.permissions;\n if (!permissions) permissions = this.form.permissions;\n let hasValidEditPermission = false;\n\n if (sectionPermissions && sectionPermissions.length > 0) {\n sectionPermissions.forEach((permission: any) => {\n let isValid: boolean = false;\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formSection.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n formField.disabled = false;\n formSection.hidden = false;\n } else {\n formSection.accordionDisabled = true;\n formSection.disabled = true;\n formField.disabled = true;\n }\n }\n });\n });\n } else if (permissions && permissions.length > 0){\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n formField.disabled = true;\n } else {\n formField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n formField.disabled = false;\n formField.hidden = false;\n } else {\n if (\n formField.permissions &&\n formField.permissions.length > 0\n ) {\n formSection.disabled = false;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n } else {\n formSection.disabled = true;\n formSection.accordionDisabled = true;\n formField.disabled = true;\n }\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (formField.disabled) {\n disabledFields++;\n }\n\n if (formField.hidden) {\n hiddenFields++;\n }\n });\n }\n });\n\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n\n /**\n * Open IFrame in hyperlink Control\n */\n sectionDisabled(formSection:IFormSection){\n if( formSection.disabled ) {\n formSection.fields.map((field:IFormField) => {\n field.disabled=true;\n });\n return formSection;\n } else {\n return formSection;\n }\n }\n\n loadIFrame(formField: IFormField){\n this.handleClickEvent(formField);\n const ref = this.dialogService.open(IframeComponent, {\n header: 'Hyperlink',\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\n });\n\n ref.onClose.subscribe((res) => {\n if (res) {\n if(formField.onReturn){\n formField.onReturn(res);\n }\n }\n });\n }\n\n /**\n * open Dialog in hyperlink Control\n */\n hyperlinkDialog(formField: IFormField) {\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\n var value = formField.hyperlink.params;\n window.open('hyperlink'+formField.label);\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\n this.router.navigate(['hyperlink'+formField.label], {\n queryParams: formField.hyperlink.params,\n });\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\n this.onClickEvent(formField);\n const dialog = this.dialogService.open(formField.hyperlink.component, {\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\n data: formField.hyperlink.params,\n });\n const componentName = formField.hyperlink?.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n dialog.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n }\n }\n\n /**\n * open Iframe on Label\n */\n loadLabelControlIFrame(formField:any){\n const ref = this.dialogService.open(IframeComponent, {\n header: formField.label.name,\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n ref.onClose.subscribe((res) => {\n if (res) {\n if (formField.onReturn) {\n formField.onReturn(res);\n }\n }\n });\n\n if (formField && formField.onClick) {\n formField.onClick();\n };\n }\n\n /**\n * find the required field in form\n */\n applyRequiredFieldValidation() {\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n this.form.formSections.forEach((section) => {\n section.fields.forEach((field) => {\n if (field.validations && field.validations.length > 0) {\n field.validations.forEach((valid) => {\n if (valid.type === EValidator.REQUIRED) {\n field.requiredField = true;\n }\n })\n }\n })\n })\n }\n }\n\n setFileUrls(fileUrls: any){\n if(fileUrls && fileUrls.length > 0){\n this.fileUploadUrls = fileUrls;\n this.showfileUploadError = false;\n }\n }\n\n onSaveForm() {\n let validity = true;\n let errorMessageDetails = '';\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n if (!this.formService.checkValidity(formSection.fields)) {\n formSection.fields?.forEach((formField: any)=>{\n if(formField.errorMessage){\n errorMessageDetails = errorMessageDetails ? errorMessageDetails + \" , \" + formField.errorMessage : formField.errorMessage;\n }\n })\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\n if (validity && field) {\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'REQUIRED FIELD'\n );\n } else{\n this.alertService.error(\n errorMessageDetails,\n 5000,\n 'INVALID FIELD'\n );\n }\n validity = false;\n }\n\n formSection.fields.forEach((field: any)=>{\n // set uploadFile URL in FormField in case of FILE_UPLOAD\n if (field.control === EFormControl.FILE_UPLOAD) {\n field.value = this.fileUploadUrls;\n \n if(field.validations && field.validations.length > 0){\n field.validations.forEach((x:any)=>{\n if(x.type === EValidator.REQUIRED && !field.value){\n this.showfileUploadError = true;\n }\n })\n }\n }\n\n if(field.control === EFormControl.CARD){\n if(field.card && field.card.data?.length > 0){\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\n if(selectedData && selectedData.length > 0){\n field.card.data = selectedData;\n }\n }\n }\n })\n }\n });\n if (validity) {\n // Save grid on formSave Button\n const saveAllGrid = document.getElementById('saveAllGridValues');\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\n if (saveAllGrid) {\n saveAllGrid.click();\n } else if (getBtns && getBtns.length > 0) {\n for (let btn of getBtns) {\n btn?.click();\n }\n }\n let tempValue: any = []\n // set value as 1 or 0 in case of checkbox\n this.form.formSections?.forEach((formSection)=>{\n if (formSection.fields && validity) {\n formSection.fields.forEach((field: any) => {\n if ((field.value === '') || (field.value === undefined)) {\n field.value = null;\n }\n //convert date into time as string\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\n }\n // set value of autoComplete as strings\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\n const value = field.value.map((value: any)=> value[field.displayField])\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\n tempValue = value;\n field.value = value.toString().replaceAll(\",\",\";\");\n }\n }\n // convert multiSelect array into string\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\n field.value = field.value?.toString();\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value ? 1 : 0;\n }\n });\n }\n });\n this.browserTabCloseEvent(false)\n setTimeout(() => {\n this.saveForm.emit(this.form.formSections);\n }, saveAllGrid ? 80 : 0);\n this.form.formSections?.forEach((formSection) => {\n if (formSection.fields) {\n formSection.fields.forEach((field: any) => {\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\n }\n if (field.control === EFormControl.CHECKBOX) {\n field.value = field.value === 1 ? true : false;\n }\n\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\n this.fileOnchangeEvent();\n }\n });\n }\n });\n }\n }\n\n onCancelForm() {\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\n if(res[0].detail === \"Yes\"){\n this.browserTabCloseEvent(false);\n this.gridService.columnFocusedOut = false;\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n })\n }else{\n this.cancelForm.emit(this.form.formSections);\n utilities.removeActiveIconClass();\n }\n }\n \n lookupClearValue(formField: IFormField){\n if(formField.value) {\n formField.value = ''; \n this.browserTabCloseEvent(true);\n }\n if(formField.onChange){\n formField.onChange(formField);\n }\n this.formService.checkValidity([formField])\n }\n\n /**\n * set calender width\n */\n setCalanderWidth() {\n const calanderElement = document.querySelectorAll(\".p-calendar\");\n let form: any = document.querySelector(\"form\");\n let width = form?.clientWidth;\n calanderElement?.forEach((calander:any) => {\n const calanderOfsetLeft = calander.offsetLeft;\n if(calanderOfsetLeft <= (width / 2)){\n calander.classList.add('open-right-side');\n }\n });\n }\n\n /**\n * set the dynamic dialog data\n */\n setDialogData(formField: IFormField, data: any): any {\n if (data && formField) {\n let value: any;\n data = utilities.objConvertToLower(data);\n let selection: string = '';\n if (formField.value && typeof formField.value === 'object') {\n if (\n formField.value &&\n formField.value.text &&\n formField.value.text.toString().trim()\n ) {\n selection = formField.value.text?.toString()?.trim();\n if(formField.displayField){\n value = formField.value?.value?.toString()?.trim();\n }\n }\n } else if (formField.value && formField.value.toString().trim()) {\n selection = formField.value?.toString()?.trim();\n }\n const componentName = data.component?.name;\n if(componentName){\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\n }\n return this.dialogService.open(data.component, {\n ...data.data,\n data: {\n selection: selection,\n field: formField.field,\n value: value,\n valueField: data.data?.valueField,\n ...data.data.data,\n },\n });\n }\n }\n \n tabFocusEvent(formField: any) {\n const className = this.el.nativeElement.querySelector('.'+formField.field);\n if (className) {\n className.click();\n }\n }\n\n onClickEvent(formField: IFormField) {\n if (formField.onClick) {\n formField.onClick(formField);\n }\n }\n\n /**\n * open dialog on lookupControl label\n */\n selectLookupLabel(formField: any) {\n if (\n formField.label &&\n formField.label.labelControl &&\n formField.label.labelControl.lookupControl\n ) {\n const ref: any = this.setDialogData(\n formField,\n formField.label.labelControl.lookupControl\n );\n ref.onClose.subscribe(\n (res: any) => {\n if(res){\n formField.value = utilities.setDialogResponse(\n formField,\n formField?.label.labelControl.lookupControl,\n res\n );\n }\n this.onFocusOutEvent(formField);\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n this.onClickEvent(formField);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(formField: IFormField) {\n if(formField.lookupControl) {\n this.lookupFocusOut = true;\n let value = formField.value;\n const ref = this.setDialogData(formField, formField.lookupControl);\n ref.onClose.subscribe(\n (res: any) => {\n if(formField.field){\n document.getElementById(formField.field)?.focus();\n }\n if(res){\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\n this.lookupFocusOut = false;\n if (formField.onReturn) formField.onReturn(formField.value, res);\n }\n this.onFocusOutEvent(formField);\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\n value = typeof value === 'object' ? value.text : value;\n if (formFieldValue !== value) {\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.onChange(formField);\n }\n }\n },\n ({ error }: any) => {\n this.alertService.apiError(error);\n }\n );\n }\n }\n\n /**\n * onClick event invoked && open Dialog on lookupControl field/label\n */\n handleClickEvent(formField: IFormField) {\n this.onClickEvent(formField);\n\n if (formField && formField.lookupControl) {\n this.selectLookupLabel(formField);\n this.selectLookupField(formField);\n }\n }\n\n /**\n * set Calender Date Format && set Date Minute interval\n */\n setCalenderDate(formField: IFormField){\n if (formField.control === EFormControl.CALENDAR) {\n // convert time into date format\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\n formField.value = utilities.setTimeInDate(formField.value);\n }\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\n }\n this.calenderPreviousValue = formField.value;\n }\n }\n calendarChangeValue(formField: any){\n if(formField.value !== formField.previousValue){\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.previousValue = formField.value;\n formField.onChange(formField);\n }\n }\n }\n\n /**\n * invoked section Clicked event\n */\n clickedSection(section:IFormSection){\n this.sectionClickedEvent.emit(section);\n }\n\n /**\n * open dialog in Note_Field conrtrol\n */\n handleNoteFieldDialog(formfield: IFormField) {\n const dialogRef = this.dialogService.open(NotesComponent, {\n header: formfield.label as string,\n width: '50%',\n data: {\n value: formfield.value,\n disabledText: formfield.disabledText,\n },\n });\n\n dialogRef.onClose.subscribe(\n (data: any) => {\n if (data && formfield.onReturn) {\n formfield.onReturn(data);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n setClassName(formField: IFormField): string {\n if (formField.hidden) return ' hidden';\n else return '';\n }\n\n autoSearch(event: any, formField: any) {\n if(formField && event){\n formField.onReturn(event.query, formField);\n }\n }\n\n /**\n * invoked onFocusOut Event\n */\n onFocusOutEvent(formField: IFormField) {\n let record: any = {};\n this.form.formSections?.forEach((section)=>{\n section.fields.forEach((formField)=>{\n if(formField.field){\n record[formField.field] = formField.value;\n }\n });\n });\n utilities.setHyperlinkParamValue(record, this.form);\n this.formService.checkValidity([formField]);\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\n formField.onFocusOut(formField);\n }\n }\n\n onBackSpaceEvent(formField:IFormField){\n if(typeof(formField.value)==='object'){\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\n if(formField.value.text.length===1){\n formField.value=undefined;\n this.formService.checkValidity([formField]);\n }\n }\n if(formField.value && formField.value.length===1){\n formField.value=undefined;\n this.formService.checkValidity([formField]);\n }\n }\n\n /**\n * clear the dropdown value when click on x\n */\n onClearValue(formField: IFormField, event: any) {\n this.formService.checkValidity([formField]);\n this.onChangeEvent(formField);\n this.dropDownChangeEvent.emit(formField);\n if (!event.value) {\n this.onFocusOutEvent(formField);\n }\n }\n\n clearDropdownValue(formField:any){\n this.onClickEvent(formField);\n }\n\n /** \n * Invoke onChange Event when Value Changed\n */\n onChangeEvent(formField: IFormField){\n this.browserTabCloseEvent(true);\n if(formField.onChange){\n formField.onChange(formField);\n }\n }\n\n typeOf(value: any) {\n return typeof value;\n }\n\n /**\n * convert unSafe link into safe link\n */\n sanitizeUrl(url: string){\n let linkUrl:any = url; \n if(linkUrl){\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\n }\n return linkUrl;\n }\n\n selectedCardClickEvent(data: any){\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\n this.form.formSections.forEach((section: any)=>{\n section.fields.forEach((field: any)=>{\n if(field.control === EFormControl.CARD){\n if(field.card && field.card.data?.length > 0){\n let obj = field.card.data[data.index];\n if(obj) {\n if(obj.selectedCard){\n delete obj.selectedCard;\n } else {\n obj['selectedCard'] = 'card-active';\n }\n }\n }\n }\n })\n });\n }\n if(data.selectedCard){\n data['selectedCard'] = '';\n } else {\n data['selectedCard'] = 'card-active';\n }\n }\n\n}\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { ISelectItem } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent implements OnChanges {\n @Input() options: ISelectItem[] = [];\n @Input() value: ISelectItem;\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\n public selectedOption: any;\n\n constructor() { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.options.length) {\n if (this.value) {\n this.selectedOption = changes['value'].currentValue.toString().trim();\n } else {\n this.selectedOption = this.options[0];\n this.valueChange.emit(this.selectedOption.value);\n }\n }\n }\n\n handleValueChange(event: { value: string }) {\n this.valueChange.emit(event.value);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'se-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.css']\n})\nexport class GalleryComponent {\n \n @Input() galleryImage: any;\n @Input() width: string;\n\n responsiveOptions: any[] = [\n {\n breakpoint: '1024px',\n numVisible: 5\n },\n {\n breakpoint: '768px',\n numVisible: 3\n },\n {\n breakpoint: '560px',\n numVisible: 1\n }\n ];\n\n constructor() { }\n}","import { Directive, Input, HostListener } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n selector: '[pAddRow]',\n})\nexport class AddRowDirective {\n @Input() table: Table;\n @Input() newRow: any;\n @Input() id: string;\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n // Insert a new row\n if (this.table && this.table.value) {\n this.table.value.unshift({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n }\n\n // Set the new row in edit mode\n this.table.initRowEdit({\n ...this.newRow,\n [this.id]: Date.now(),\n isNew: true,\n });\n\n event.preventDefault();\n }\n}\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\n\nexport const MenuFilters: IMenuFilter = {\n [GridFilterControlType.INPUT]: [\n { label: 'Starts with', value: 'startsWith' },\n { label: 'Contains', value: 'contains' },\n { label: 'Not contains', value: 'notContains' },\n { label: 'Ends With', value: 'endsWith' },\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n ],\n [GridFilterControlType.NUMERICINPUT]: [\n { label: 'Equals', value: 'equals' },\n { label: 'Not equals', value: 'notEquals' },\n { label: 'Less than', value: 'lt' },\n { label: 'Less than or equal to', value: 'lte' },\n { label: 'Greater than', value: 'gt' },\n { label: 'Greater than or equal to', value: 'gte' },\n ],\n [GridFilterControlType.CALENDAR]: [\n { label: 'Date is', value: 'dateIs' },\n { label: 'Date is not', value: 'dateIsNot' },\n { label: 'Date is before', value: 'dateBefore' },\n { label: 'Date is after', value: 'dateAfter' },\n ],\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\nimport { MenuFilters } from '../../base/grid/grid.constant';\n\n@Component({\n selector: 'se-filter-menu',\n templateUrl: './filter-menu.component.html',\n styleUrls: ['./filter-menu.component.scss'],\n})\nexport class AppFilterMenuComponent implements OnInit {\n public isMenuOpen: boolean = false;\n public filterOptions: ISelectItem[] = [];\n\n @Input() globalFilter: IGlobalFilter;\n constructor() { }\n\n ngOnInit(): void {\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\n }\n\n toggleMenu() {\n this.isMenuOpen = !this.isMenuOpen;\n }\n\n handleFilterSelection({ value }: ISelectItem) {\n this.isMenuOpen = false;\n this.globalFilter.matchMode = value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { IMenu } from '../../../models/menu.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'se-menu-bar',\n templateUrl: './menu-bar.component.html',\n styleUrls: ['./menu-bar.component.scss'],\n})\nexport class MenuBarComponent implements OnInit {\n @Input() hiddenPanelMenu: boolean = true;\n @Input() toolTip: string;\n @Input() menuBackColor: string;\n @Input() menuItems: IMenu[];\n @Input() menuFooter: string;\n @Input() menuTitle: string;\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\n public menuBarItems: MenuItem[] = [];\n toggleMenu: boolean = false;\n roles: string[] = [];\n isMenubarHidden: boolean = false;\n\n constructor(\n private authService: AuthenticationService,\n private cookieService: CookieService,\n public router: Router,\n ) { }\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n const toggleMenu = localStorage.getItem('toggleMenu');\n const cookieValue = this.cookieService.get('toggleMenu'); \n\n if (toggleMenu) {\n this.toggleMenu = JSON.parse(toggleMenu);\n }else if(cookieValue){\n this.toggleMenu = JSON.parse(cookieValue);\n }\n\n this.roles = this.authService.getUserRoles();\n\n // apply user role permissions\n this.applyUserPermissions();\n\n this.menuBarItems = this.menuItems.map((x) => ({\n ...x,\n style: x.hidden ? { display: 'none' } : x.style,\n }));\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \n }\n\n clickEvent() {\n this.onClickEvent.emit();\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.menuItems) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.menuItems.forEach((menu) => {\n if (menu.items) {\n menu.items.forEach((item) => {\n let permissions: any = item.permissions;\n if (!permissions) permissions = menu.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (permission.type === EPermissionType.VIEW) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.hidden = true;\n }\n } \n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n item.style = { display: 'none' };\n hiddenItems++;\n }\n });\n\n // if all items of menu is hidden then hide menu as well\n menu.hidden =\n menu.items.length === menu.items.filter((x) => x.hidden).length;\n }\n });\n\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n}\n\n","import { Type } from '@angular/core';\nimport { IPermission } from './user-info.model';\n\nexport const ESideBar = {\n LEFT: 'left-sidebar',\n RIGHT: 'right-sidebar',\n};\n\nexport interface ISidebar {\n icon: string;\n action?: string;\n section: string;\n component?: Type<any>;\n [key: string]: any;\n data?: IData;\n onReturn?: (data: any) => any;\n onClick?: (value: any) => void;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n id?: string;\n tooltip?: string\n iFrame?: IFrame;\n linkId?:string;\n params?:any;\n}\n\nexport enum ESidebarAction {\n NAVIGATION = 'navigation',\n OPENDIALOG = 'dialog',\n IFRAME = '_iframe',\n}\n\nexport interface IFrame {\n link?: string;\n width?: string;\n height?: string;\n}\n\nexport interface IData {\n header?: string;\n width?: string;\n height?: string;\n data?: any;\n scrollable?: boolean;\n}\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { HyperlinkService } from '../../../services/hyperlink.service';\nimport { PageLoggerService } from '../../../services/page-logger.service';\nimport { IframeComponent } from '../iframe/iframe.component';\n@Component({\n selector: 'se-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n})\nexport class SidebarComponent implements OnInit {\n toggleMenu: boolean = false;\n openDialogs: any = [];\n @Input() navHidden: boolean = false;\n @Input() collapseSidebar: boolean = false;\n @Input() menuTitle: string;\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\n if (newSidebarItems) {\n this.sidebarItemsList = newSidebarItems;\n this.initializeSideBar();\n }\n }\n\n public sidebarItemsList: ISidebar[] = [];\n public menuItems: MenuItem[] = [];\n roles: string[] = [];\n isSidebarHidden: boolean = false;\n\n constructor(\n private instance: Renderer2,\n private authService: AuthenticationService,\n public dialogService: DialogService,\n private router: Router,\n private pageLoggerService: PageLoggerService,\n private hyperlinkService: HyperlinkService\n ) { }\n\n ngOnInit(): void { }\n\n initializeSideBar() {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions\n this.applyUserPermissions();\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\n label: x.label,\n icon: x.icon,\n id: x.id,\n section: x.section,\n expanded: x.expanded,\n action: x.action,\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\n title: this.setMenuTitle(x),\n command: ({ item }) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(x, item);\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(x, item);\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\n this.loadIFrame(x, item);\n } else {\n this.handleActiveItem(item);\n }\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: x.hidden ? 'none' : '',\n },\n onClick: x.onClick,\n onReturn: x.onReturn,\n disabled: x.disabled,\n }));\n }\n\n setMenuTitle(x: any): string {\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\n }\n\n setMenuItems(x: ISidebar): any {\n return x.items.map((menu: any) => ({\n label: menu.label,\n icon: menu.icon,\n id: menu.id,\n section: menu.section,\n expanded: menu.expanded,\n action: menu.action,\n title: this.setMenuTitle(x),\n command: ({ item }: any) => {\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\n this.navigateToSection(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\n this.openDialog(menu, item);\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\n this.loadIFrame(menu, x);\n }\n this.handleActiveItem(item);\n },\n style: {\n borderBottom: '', // '1px solid #e9ecef',\n display: menu.hidden ? 'none' : '',\n },\n onClick: menu.onClick,\n onReturn: menu.onReturn,\n disabled: menu.disabled,\n }))\n }\n\n loadIFrame(menu: ISidebar, item: any) {\n if (menu) {\n const dialogRef = this.dialogService.open(IframeComponent, {\n header: menu.section,\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\n });\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\n\n this.handleActiveItem(item);\n\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n toggleSidebar() {\n this.toggleMenu = !this.toggleMenu;\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.sidebarItemsList) {\n let totalItems: number = 0;\n let hiddenItems: number = 0;\n\n this.sidebarItemsList.forEach((item, index) => {\n let permissions: any = item.permissions;\n let hasValidEditPermission = false;\n\n item.id = index.toString();\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n item.disabled = true;\n } else {\n item.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n item.disabled = false;\n item.hidden = false;\n } else {\n item.disabled = true;\n }\n }\n }\n });\n }\n\n totalItems++;\n\n if (item.hidden) {\n hiddenItems++;\n }\n });\n\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\n }\n }\n\n /**\n *\n * @ param menu\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n openDialog(menu: ISidebar, item: any): void {\n const menuData:any = menu.data ? menu.data : menu;\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\n if (menu.component) {\n const dialogRef = this.dialogService.open(menu.component, menuData);\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\n this.openDialogs.push(dialogRef);\n this.handleActiveItem(item);\n\n if (this.openDialogs && this.openDialogs.length > 1) {\n this.openDialogs[0].close();\n this.openDialogs.shift();\n }\n\n dialogRef.onClose.subscribe((data: any) => {\n this.handleActiveItem(item, false);\n if (data && menu.onReturn) {\n menu.onReturn(data);\n }\n });\n }\n }\n\n /**\n *\n * @ param x\n * @ param item\n * Passes the sidebar array to contain all ISidebar property like\n * Passes the event of the menu\n */\n\n navigateToSection(x: ISidebar, item: any): void {\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\n this.handleActiveItem(item);\n }\n\n /**\n *\n * @param item\n * Passes the event of the menu\n */\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\n this.menuItems = this.menuItems.map((x) =>\n x.icon === icon && closeDialog\n ? { ...x, styleClass: 'active-icon' }\n : {\n ...x,\n styleClass: '',\n style: {\n borderBottom: '1px solid #e9ecef',\n display: x.style?.display === 'none' ? 'none' : '',\n },\n }\n );\n }\n\n clickedMenu(menu: MenuItem[]) {\n menu.map((item: any) => {\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\n if (\n item.styleClass === 'active-icon' &&\n matchedItem &&\n matchedItem.onClick\n ) {\n this.hyperlinkService\n .addHyperlinks(matchedItem)\n .then((response: any) => {\n if (matchedItem.linkId) {\n this.hyperlinkService.setSidebarLink(\n response,\n this.sidebarItemsList\n );\n } else {\n matchedItem.onClick(item);\n }\n });\n }\n });\n }\n \n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { IHeader } from '../../../models/header.model';\nimport { EFormControl } from '../../../models/form.model';\nimport { AuthenticationService } from '../../../services/authentication.service';\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n selector: 'se-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit, OnChanges {\n @Input() headers: IHeader;\n\n dynamicCase = EFormControl;\n roles: string[] = [];\n isHeaderHidden: boolean = false;\n\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\n\n ngOnInit(): void {\n this.roles = this.authService.getUserRoles();\n // apply user role permissions on form\n this.applyUserPermissions();\n }\n\n ngOnChanges(): void {\n if(this.headers && this.headers.fields){\n this.headers.fields.forEach((x) => {\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\n }\n if (x.value?.toString().includes(':') && x.timeOnly) {\n const index = x.value.indexOf(':');\n const time = x.value.substring(index - 2, index + 6);\n x.value = time;\n }\n });\n }\n }\n\n // apply user role permissions\n applyUserPermissions() {\n if (this.headers) {\n let totalFields: number = 0;\n let hiddenFields: number = 0;\n\n this.headers.fields.forEach((headerField) => {\n let permissions: any = headerField.permissions;\n if (!permissions) permissions = this.headers.permissions;\n let hasValidEditPermission = false;\n\n if (permissions && permissions.length > 0) {\n permissions.forEach((permission: any) => {\n let isValid: boolean = false;\n if (permission.roles && permission.roles.length > 0) {\n permission.roles.forEach((role: any) => {\n if (!isValid && this.roles && this.roles.includes(role)) {\n isValid = true;\n }\n });\n if (\n permission.type === EPermissionType.VIEW &&\n !hasValidEditPermission\n ) {\n if (isValid) {\n headerField.disabled = true;\n } else {\n headerField.hidden = true;\n }\n } else if (permission.type === EPermissionType.EDIT) {\n if (isValid) {\n hasValidEditPermission = true;\n headerField.disabled = false;\n headerField.hidden = false;\n } else {\n headerField.disabled = true;\n }\n }\n }\n });\n }\n\n totalFields++;\n\n if (headerField.hidden) {\n hiddenFields++;\n }\n });\n\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\n }\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoaderService {\n loaderState = new Subject<any>();\n\n constructor() {}\n\n /**\n * Shows loader\n */\n showLoader(isDarkBackground = true) {\n this.loaderState.next({ loading: true, isDarkBackground });\n }\n\n /**\n * Hides loader\n */\n hideLoader() {\n this.loaderState.next({ loading: false });\n }\n\n /**\n * Fires on loader state changed.\n * @returns {Observable<any>}\n */\n onLoaderStateChange(): Observable<any> {\n return this.loaderState.asObservable();\n }\n}\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LoaderService } from '../../../services/loader.service';\n\n@Component({\n selector: 'se-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n isLoading = false;\n isDarkBackground = true;\n loaderSubscription$: Subscription = new Subscription();\n\n constructor(\n public loaderService: LoaderService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.loaderSubscription$ = this.loaderService\n .onLoaderStateChange()\n .subscribe((state: any) => {\n this.isLoading = state.loading ? true : false;\n this.isDarkBackground = state.isDarkBackground ? true : false;\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy() {\n if (this.loaderSubscription$) {\n this.loaderSubscription$.unsubscribe();\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IFormField } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { RequestService } from '../../../services/request.service';\n@Component({\n selector: 'se-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements OnInit {\n @Input() acceptFileTypes: any;\n @Input() allowMultiple: boolean = false;\n @Input() fields: any;\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {}\n\n uploadFile(files: any) {\n let fileData = new FormData(); \n let chooseFile:boolean = false;\n for (let i = 0; i < files.length; i++) {\n if (files[i]) {\n chooseFile = true;\n fileData.append(files[i].name, files[i]);\n }\n }\n\n if (fileData && chooseFile) {\n if (this.fields && this.fields.uniqueKey?.length > 0) {\n fileData.append('uniqueKey', this.fields?.uniqueKey);\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\n fileData.append('azureContainer', this.fields?.azureContainer);\n }\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\n (data: any) => {\n if (data) {\n this.alertService.success('File Upload Successfully.');\n if (this.fields?.onReturn) {\n this.fields.onReturn(data.results);\n this.uploadFileOnReturn.emit();\n }\n this.fileUrl.emit(data.results);\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n if (this.fields.onReturn) {\n this.fields.onReturn(error);\n this.uploadFileOnReturn.emit();\n }\n }\n );\n }\n }\n onClickEvent() {\n if (this.fields && this.fields.onClick) {\n this.fields.onClick();\n console.log('this.fields: ', this.fields);\n }\n } \n}\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { FormService } from '../../../services/form.service';\nimport { RequestService } from '../../../services/request.service';\nimport * as utilities from '../../../services/utilities.service';\n\n@Component({\n selector: 'se-caption',\n templateUrl: './caption.component.html',\n styleUrls: ['./caption.component.scss'],\n})\nexport class CaptionComponent implements OnInit {\n dynamicForm: IDynamicForm;\n id: number;\n caption: string;\n\n constructor(\n private formService: FormService,\n private requestService: RequestService,\n private alertService: AlertService,\n @Optional() public config: DynamicDialogConfig,\n @Optional() public ref: DynamicDialogRef\n ) {}\n\n ngOnInit(): void {\n if (this.config.data) {\n this.id = this.config.data.id;\n this.caption = this.config.data.caption;\n }\n this.initilizeForm();\n }\n\n initilizeForm() {\n this.dynamicForm = {\n formSections: [\n {\n fields: [\n this.formService.addTextbox({\n field: 'fileCaption',\n label: 'Caption',\n value: this.caption,\n column: 12,\n validations: [{ type: EValidator.REQUIRED }]\n }),\n ],\n },\n ],\n };\n }\n\n saveForm(formFiels: any) {\n this.requestService\n .get<any[], any>('/AzureUpload/UpdateCaption', {\n Id: this.id,\n fileCaption: utilities.getFormFieldValue(\n this.dynamicForm,\n 'fileCaption'\n ),\n })\n .subscribe(\n (response: any) => {\n if (response) {\n this.alertService.success('Caption added successfully.');\n this.ref.close(response);\n }\n },\n ({ error }) => {\n this.ref.close();\n this.alertService.apiError(error);\n }\n );\n }\n cancelForm(event: any) {\n console.log('CancelForm: ', event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { GridService } from '../../../services/grid.service';\nimport * as utilities from '../../../services/utilities.service';\nimport { ConfirmationService } from 'primeng/api';\n\n@Component({\n selector: 'se-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class CardComponent implements OnInit {\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\n @Input() data: any = [];\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() card: any;\n dynamicForm: IDynamicForm;\n showFiles: boolean = false;\n displayCardInfo: IViewCardProp;\n\n constructor(\n public dialogService: DialogService,\n private gridService: GridService,\n private confirmationService: ConfirmationService\n ) {}\n\n ngOnInit(): void {}\n\n ngOnChanges() {\n if (this.card) {\n let { data, formSections, cardInfo }: any = this.card;\n if(cardInfo && Object.keys(cardInfo).length){\n this.displayCardInfo = cardInfo;\n data = this.gridService.setDataFields(data);\n const newArr = [];\n data?.forEach((record)=>{\n if(!Object.keys(record)?.includes('azurecontainerid')){\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\n } else {\n newArr.push(record);\n }\n });\n this.data = newArr;\n } else {\n this.data = this.gridService.setDataFields(data);\n }\n this.dynamicForm = { formSections };\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n this.setCardPropValue('allowDownload');\n this.setCardPropValue('allowDelete');\n this.setCardPropValue('allowEditableCaption');\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\n /** In case of when we are using this component for stand alone then if formSection is exist in\n the this.card and then add in the data array.\n */\n if (this.data) {\n this.data.forEach((x: any) => {\n if (!x.dynamicform) {\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\n }\n utilities.setCardFieldsData(x);\n });\n }\n }\n }\n\n // set the default value of allowDelete, allowEditableCaption and allowDownload\n setCardPropValue(prop:string){\n if(!this.card[prop]?.toString()?.length) {\n this.card[prop]= true;\n }\n }\n\n dragAndDrop(event: any) {\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\n event.item?.element?.nativeElement;\n this.card.data = this.data;\n this.card['change'] = true;\n if (this.card && this.card.onSort) {\n this.card.onSort(this.data);\n }\n }\n\n deleteImage(event: any) {\n this.confirmationService.confirm({\n message: 'Are you sure that you want to delete this Image?',\n header: 'Delete Confirmation',\n icon: 'pi pi-exclamation-triangle',\n key: 'handlecolumnActions',\n accept: () => {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex(\n (i) => i.blobfileurl === event.blobfileurl\n );\n let obj = arr[index];\n arr.splice(index, 1);\n this.data = [...arr];\n\n if (this.card && this.card.onDelete) {\n obj = this.replacePropName(obj);\n this.card.onDelete(obj);\n this.onDeleteCard.emit();\n }\n }\n this.confirmationService.close();\n },\n reject: () => {\n this.confirmationService.close();\n },\n });\n }\n\n replacePropName(cardInfo:any){\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\n const cardProp = {...this.displayCardInfo};\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\n return obj;\n } else {\n return cardInfo;\n }\n }\n\n saveCaption(event: any) {\n if (this.data && event) {\n let arr = [...this.data];\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\n let obj = arr[index];\n if (index !== -1) {\n obj.filecaption = event.caption;\n arr.splice(index, 1, obj);\n this.card.data = arr;\n this.card['change'] = true;\n }\n if (this.card && this.card?.onCaptionSave) {\n obj = this.replacePropName(obj);\n this.card.onCaptionSave(obj);\n }\n }\n }\n\n onClickEvent(data: any, index: number){\n data['index'] = index;\n this.selectedCard.emit(data);\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfirmationService } from 'primeng/api';\nimport { ESelectFileType } from '../../../models/form.model';\n\n@Component({\n selector: 'se-file',\n templateUrl: './file.component.html',\n styleUrls: ['./file.component.scss'],\n})\nexport class fileComponent implements OnInit {\n @Input() url: string = '';\n @Input() caption: string = '';\n @Input() width: string = '';\n @Input() height: string = '200px';\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\n @Input() id: number;\n @Input() name: string = '';\n @Input() type: any;\n @Input() allowDownloadFile: boolean = true;\n @Input() allowEditableCaption: boolean = true;\n @Input() allowDeleteFile: boolean = true;\n editableCaption: boolean = false;\n\n constructor(private confirmationService: ConfirmationService) {}\n\n ngOnInit(): void {\n this.checkFileExtension();\n }\n\n checkFileExtension() {\n switch (this.type) {\n case 'png':\n case 'jpeg':\n case 'jfif':\n case 'jpg': {\n this.type = '.image';\n break;\n }\n case 'xlsx':\n case 'xls':\n case 'xlsm':\n case 'txt': {\n this.type = ESelectFileType.EXCEL;\n break;\n }\n case 'pdf':\n case 'html': {\n this.type = ESelectFileType.PDF;\n break;\n }\n case 'doc':\n case 'docx': {\n this.type = ESelectFileType.DOCUMENT;\n break;\n }\n }\n }\n\n downloadFile(url: string) {\n const link: any = document.createElement('a');\n link.href = url;\n link.target = '_blank';\n link.click();\n }\n\n captionClickEvent() {\n if (this.allowEditableCaption) {\n this.editableCaption = true;\n }\n }\n\n captionSave(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n if(caption !== null){\n this.caption = caption;\n this.editableCaption = false;\n this.onSaveEvent.emit(obj);\n }\n }\n\n onDeleteFile(\n id: number,\n name: string,\n url: string,\n type: any,\n caption: string\n ) {\n let obj = {\n id: id,\n name: name,\n blobfileurl: url,\n type: type,\n caption: caption,\n };\n this.onDeleteEvent.emit(obj);\n }\n\n cancel() {\n this.editableCaption = false;\n }\n}\n","import { Component, Input, OnInit, Optional } from '@angular/core';\nimport { RequestService } from '../../../../../services/request.service';\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport * as utilities from '../../../../../services/utilities.service';\n\n\n@Component({\n selector: 'se-report-filter',\n templateUrl: './report-filter.component.html',\n styleUrls: ['./report-filter.component.scss']\n})\nexport class ReportFilterComponent implements OnInit {\n dynamicForm:IDynamicForm;\n formFields: IFormField[] = [];\n\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\n\n ngOnInit(): void {\n this.createDynamicFields();\n \n }\n initializeForm(){\n this.dynamicForm = {\n formSections:[\n {\n fields: [\n ...this.formFields,\n {\n label: 'Download Report',\n control: EFormControl.ADD_BUTTON,\n hidden: this.config?.data?.hideGenerateReportBtn,\n onClick: () => {\n this.downloadReport();\n },\n }\n ]\n }\n ]\n \n }\n }\n createDynamicFields() {\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n this.setParamFieldValue();\n this.initializeForm();\n // set dropdown data based on matched field.\n this.setDropDownData(reportJson);\n },\n (error) => {\n this.initializeForm();\n this.alertService.error(error);\n }\n );\n }\n setParamFieldValue(){\n if(this.config.data && this.config.data.param?.length > 0){\n this.config.data.param.forEach((param: any)=>{\n this.formFields.forEach((field)=>{\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\n if(matchKey && matchKey.length > 0){\n field.value = param[matchKey];\n }\n });\n });\n }\n }\n\n setDropDownData(reportJson: any) {\n reportJson.Parameters?.forEach((record: any) => {\n if(record.isuniquekey){\n this.requestService.get<any[], any>('/Data/Fetch', {\n uniqueKey: record.isuniquekey,\n filters: []\n }).subscribe((response:any)=>{\n utilities.setFormFieldProp(this.dynamicForm, record.paramname, [\n { name: 'data', value: response.records }, \n ]); \n },(error) => {\n this.alertService.apiError(error);\n })\n }\n });\n }\n getFilters(){\n let filters: any = [];\n this.dynamicForm?.formSections?.forEach((section)=>{\n section.fields?.forEach((field)=>{\n if(field && field.value){\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\n };\n });\n }); \n return filters;\n }\n \n downloadReport(){ \n const filters:any = this.getFilters(); \n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n a.download = 'report.pdf';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n \n }\n );\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IFormField } from '../../../../../models/form.model';\nimport { AlertService } from '../../../../../services/alert.service';\nimport { RequestService } from '../../../../../services/request.service';\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\n\n@Component({\n selector: 'se-generate-report-btn',\n templateUrl: './generate-report-btn.component.html',\n styleUrls: ['./generate-report-btn.component.scss']\n})\nexport class GenerateReportBtnComponent implements OnInit {\n @Input() repId: any;\n @Input() params: any;\n @Input() showDialog: boolean;\n formFields: IFormField[] = [];\n\n constructor(\n public dialogService: DialogService,\n private requestService: RequestService,\n private alertService: AlertService\n ) {}\n\n ngOnInit(): void {\n this.createDynamicFields();\n }\n\n reportClickEvent() {\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\n this.dialogService.open(ReportFilterComponent, {\n width: '80%',\n height: '100%',\n header: 'Generate Report',\n data: { Id: this.repId, param: this.params },\n });\n } else {\n this.downloadQuickReport();\n }\n }\n\n createDynamicFields() {\n this.requestService\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\n .subscribe(\n (data: any) => {\n const reportJson = JSON.parse(data?.report);\n this.formFields = reportJson?.FormFields;\n },\n (error) => {\n this.alertService.error(error);\n }\n );\n }\n\n getFilters() {\n let filters: any[] = [];\n this.formFields.forEach((field) => {\n if (field && field.value?.toString()?.length > 0) {\n filters.push({\n field: field.field,\n matchMode: 'equal',\n operator: 'and',\n value: field.value,\n });\n }\n });\n return filters;\n }\n\n downloadQuickReport() {\n let filters: any[] = [];\n if(this.params && this.params.length > 0){\n this.params.forEach((param)=>{\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\n });\n } else {\n filters = this.getFilters();\n }\n \n this.requestService\n .download('/Report/Generate', { Id: this.repId, filters: filters })\n .subscribe(\n (response) => {\n var newBlob = new Blob([response], { type: 'application/pdf' });\n const data = window.URL.createObjectURL(newBlob);\n const a = document.createElement('a');\n a.href = data;\n a.download = 'report.pdf';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n },\n (error) => {\n this.alertService.apiError(error);\n }\n );\n }\n}","import { DatePipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\nimport {\n IGlobalFilter,\n GridFilterControlType,\n EGridColumnType,\n addGlobalFilter,\n EDayRange,\n EFilterValidator,\n} from '../../../models/grid.model';\nimport { AlertService } from '../../../services/alert.service';\nimport { GridService } from '../../../services/grid.service';\n\n@Component({\n selector: 'se-global-filters',\n templateUrl: './global-filters.component.html',\n styleUrls: ['./global-filters.component.scss'],\n})\nexport class SeGlobalFilterComponent implements OnInit {\n @ViewChild('rangeCalendar') datePicker: any;\n @Input() globalFilters: IGlobalFilter[] = [];\n @Input() searchGlobalFilterBtn: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\n\n public fiterTypes = GridFilterControlType;\n public columnType = EGridColumnType;\n public showDialog: boolean = false;\n public startDate: Date;\n public endDate: Date;\n\n showInput: boolean = false;\n filter: any = '';\n hideClearFilterBtn: boolean = true;\n calendarFormat:string = 'mm/dd/yy';\n\n constructor(\n public datepipe: DatePipe,\n @Optional() public ref: DynamicDialogRef,\n @Optional() public config: DynamicDialogConfig,\n private gridService: GridService,\n public dialogService: DialogService,\n private alertService: AlertService,\n private el: ElementRef,\n ) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void {\n if(this.config && this.config.data){\n this.showDialog = this.config.data.openDialog;\n if(this.config.data.globalFilters){\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\n }\n \n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n // spliting date range value and assign to value and valueTwo in Date_Range Control\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \n dateRangeFilter.forEach((dateRange)=>{\n if(dateRange.value && dateRange.valueTwo){\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \n this.setDateRangeFilterValue(dateRange);\n }\n })\n // Filtring Numeric Range controls on global filter \n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\n numerRangeFilter.forEach((numericRange) =>{\n if(numericRange){\n this.setNumericRangeValueFrom(numericRange);\n this.setNumericRangeValueTwo(numericRange);\n }\n })\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\n (this.globalFilters.some((filter)=> filter.value))\n ){\n this.applyFilters(false);\n }\n }, 500);\n }\n\n setDateRangeFilterValue(dateRange){\n if(dateRange?.value?.length > 1){\n dateRange.value[0] = new Date(dateRange.value[0]);\n dateRange.value[1] = new Date(dateRange.value[1]);\n this.selectDate(dateRange, false);\n }\n }\n \n // change calendar format on run time if user type date on the calendar field.\n calendarFocusEvent(globalFilter:IGlobalFilter, event?: any){\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\n let year = a?.target?.value?.toString()?.split('/')[2];\n year = year?.toString().split(\" \")[0];\n if(year?.length === 4){\n this.calendarFormat = 'mm/dd/yy';\n if(globalFilter.type === GridFilterControlType.CALENDAR){\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\n }\n } else if(year?.length){\n this.calendarFormat = 'mm/dd/y';\n }\n });\n let yearValue = event?.target?.value?.toString()?.split('/')[4];\n if((!globalFilter.value || yearValue == undefined || yearValue?.toString()?.length === 1) && globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeValue(globalFilter, true);\n }\n }\n\n checkFilterValidation(removeError:boolean = false):boolean{\n let valid:boolean = false;\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\n valid = true;\n filter.errorMessage = filter.displayText+\" is required\";\n filter.requiredField = true;\n } else {\n filter.errorMessage = '';\n }\n })\n }\n return valid;\n }\n\n ngOnChanges(){\n this.checkFilterValidation();\n this.globalFilters?.forEach((filter)=>{\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\n this.onFocusOutEvent(filter);\n }\n })\n // set By Defualt Calender Range\n this.setDefualtCalendarRange(false);\n const girdClearFilterBtn = document.getElementById(\n 'clearGridFilterValuesButton'\n );\n if(girdClearFilterBtn){\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\n this.hideClearFilterBtn = true;\n }else{\n this.hideClearFilterBtn = false;\n }\n }else{\n this.hideClearFilterBtn = true;\n }\n }\n\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\n if(globalFilter.toField){\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\n }\n if(sendRequest){\n this.applyFilters();\n }\n }\n\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\n if(field){\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\n if(digitInfo){\n value = parseFloat(value)?.toFixed(digitInfo);\n }else{\n value = parseFloat(value)?.toFixed(2);\n }\n }\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\n if(index > -1){\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \n } else {\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\n }\n }\n }\n\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\n if(sendRequest){\n this.applyFilters();\n }\n }\n \n }\n\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\n if(globalFilter.value?.length > 0){\n const fromDateValue = this.datepipe.transform(\n globalFilter.value[0],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n const toDateValue = this.datepipe.transform(\n globalFilter.value[1],\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\n );\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\n }\n }else if(clearValue){\n this.matchSameFields(globalFilter.fromField, null, 'gte');\n this.matchSameFields(globalFilter.toField, null, 'lte');\n }\n }\n\n\n onFocusOutEvent(globalFilter: IGlobalFilter){\n if (globalFilter && globalFilter.onFocusOut) {\n globalFilter.onFocusOut(globalFilter);\n }\n setTimeout(() => {\n localStorage.setItem('applyFilter', JSON.stringify(false));\n this.filtersApplied.emit(this.globalFilters);\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\n }\n\n /**\n * Apply selected filters\n */\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\n this.setDateRangeFilterValue(globalFilter);\n } \n this.gridService.applyFilterEvent = filterEvent;\n const globalFilters = this.globalFilters.filter((x) => x.field);\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\n if(index > -1){\n globalFilters.splice(index, 1);\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n if (this.showDialog) {\n this.ref.close(globalFilters);\n } else \n if(!this.checkFilterValidation()){\n this.checkFilterValidation(true);\n this.filtersApplied.emit(globalFilters);\n }\n }\n\n // set By Defualt Calender Range \n setDefualtCalendarRange(check: boolean = true){\n if(this.globalFilters && this.globalFilters.length > 0){\n this.globalFilters.forEach((filter)=>{\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\n setTimeout(() => {\n this.showNext(filter, check);\n }, 100);\n }\n });\n }\n }\n\n showNext(filter: IGlobalFilter, check: boolean = true): string {\n let nextValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n nextValue = this.setDayFilter(filter, true);\n break;\n case EDayRange.MONTH:\n nextValue = this.setMonthFilter(filter, true);\n break;\n case EDayRange.YEAR:\n nextValue = this.setYearFilter(filter, true);\n break;\n default:\n // week\n nextValue = this.setWeekFilter(filter, true);\n break;\n }\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.gridService.applyFilterEvent = check;\n this.filtersApplied.emit(this.globalFilters);\n return nextValue;\n }\n\n showPrevious(filter: IGlobalFilter): string {\n let previousValue: string;\n let dayRange: EDayRange = filter.dayRange\n ? filter.dayRange\n : EDayRange.WEEK;\n switch (dayRange) {\n case EDayRange.DAY:\n previousValue = this.setDayFilter(filter, false);\n break;\n case EDayRange.MONTH:\n previousValue = this.setMonthFilter(filter, false);\n break;\n case EDayRange.YEAR:\n previousValue = this.setYearFilter(filter, false);\n break;\n default:\n // week\n previousValue = this.setWeekFilter(filter, false);\n break;\n }\n this.gridService.applyFilterEvent = true;\n localStorage.setItem('applyFilter', JSON.stringify(true));\n this.filtersApplied.emit(this.globalFilters);\n return previousValue;\n }\n\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\n return (filter.value =\n this.datepipe.transform(\n this.startDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ) +\n '|' +\n this.datepipe.transform(\n this.endDate,\n filter.format ? filter.format : 'MM/dd/yyyy'\n ));\n }\n\n setDateValue(filter: any) {\n let value: Date;\n if (filter.value) {\n value = new Date(filter.value.split('|')[0]);\n return new Date(value.setMonth(value.getMonth()));\n } else {\n return new Date();\n }\n }\n\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n )\n : currentDate;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() - 1\n )\n : currentDate;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth(),\n this.startDate.getDate() + 1\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\n : firstDateOfYear;\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\n : firstDateOfYear;\n }\n\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\n var currentDate = this.setDateValue(filter);\n var firstDateOfMonth = new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n 1\n );\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 1\n )\n : firstDateOfMonth;\n } else {\n this.startDate = this.startDate\n ? new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() - 1,\n 1\n )\n : firstDateOfMonth;\n }\n\n this.endDate = new Date(\n this.startDate.getFullYear(),\n this.startDate.getMonth() + 1,\n 0\n );\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\n let currentDate = this.setDateValue(filter);\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\n\n if (isNext) {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() + weekSeconds)\n : new Date(firstDay.getTime());\n } else {\n this.startDate = this.startDate\n ? new Date(this.startDate.getTime() - weekSeconds)\n : new Date(firstDay.getTime() - weekSeconds);\n }\n\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\n\n return this.setCalendarRangeFilterValue(filter);\n }\n\n /**\n * open dialog on lookupControl field\n */\n selectLookupField(globalFilters: IGlobalFilter) { \n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\n }\n\n /**\n * Clear all filter values\n */\n clearFilters() {\n this.globalFilters.map((item: any) => (item.value = null));\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\n if(clearGridFilter){\n clearGridFilter.click();\n }\n }\n\n /**\n * Clear values of Date Range Filter\n */\n clearDateRangeValue(filter: any){\n this.setDateRangeValue(filter, true)\n }\n\n /**\n * Close dialog without applying filters\n */\n cancel() {\n this.clearFilters();\n this.ref.close();\n }\n rangeDateclose(globalFilter: any) {\n this.datePicker.hideOverlay();\n const id: any = document.getElementById(globalFilter.displayText);\n id.focus();\n }\n\n filterInput() {\n this.showInput = !this.showInput;\n }\n\n /**\n * Focused the calender input\n */\n selectDate(globalFilter: any, focused: boolean = false){\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\n this.setDateRangeValue(globalFilter);\n if(focused ==true){\n this.rangeDateclose(globalFilter); \n }\n }\n if(focused){\n document.getElementById(globalFilter.field)?.focus();\n }\n }\n tabFocusEvent(globalFilter: any) {\n const className = this.el.nativeElement.querySelector(\n '.'+globalFilter.field\n );\n if (className) {\n className.click();\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\nimport { IGlobalFilter } from '../../../models/grid.model';\n\n@Component({\n selector: 'se-filter',\n templateUrl: './filter.component.html',\n})\nexport class SeFilterComponent implements OnInit {\n @Input() globalFilters: IGlobalFilter[];\n @Input() showDialogFilter: boolean = true;\n @Input() clearGlobalFilterBtn: boolean = true;\n @Input() searchGlobalFilterBtn: boolean = true;\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\n\n constructor(public dialogService: DialogService) { }\n\n /**\n * Assignment of selected columns on page load\n */\n ngOnInit(): void { }\n\n /**\n * Opens the filter dialog\n */\n openFilters() {\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\n header: 'Choose Filters',\n width: '70%',\n styleClass: 'global-filter-visible',\n data: { globalFilters: this.globalFilters, openDialog: true},\n });\n\n // Modal response\n ref.onClose.subscribe((res) => {\n if (res) {\n this.filtersApplied.emit(res);\n }\n });\n }\n\n globalFiltersApplied(event: any){\n this.filtersApplied.emit(event);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'se-grid-row-actions',\n templateUrl: './grid-row-actions.component.html',\n styleUrls: ['./grid-row-actions.component.scss']\n})\nexport class GridRowActionsComponent implements OnInit {\n @Input() editing: boolean;\n\n @Input() editRowPermission: boolean;\n\n @Input() deleteRowPermission: boolean;\n\n @Input() editAllRows: boolean = false;\n\n @Input() row: any;\n\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\n\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onRowEditInit(row: any) {\n this.onRowEditInitBtn.emit(row);\n }\n\n deleteRecord(row: any) {\n this.deleteRecordBtn.emit(row);\n }\n\n onRowEditSave(row: any) {\n this.onRowEditSaveBtn.emit(row);\n }\n\n onRowEditCancel(row: any) {\n this.onRowEditCancelBtn.emit(row);\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { GridComponent } from './components/base/grid/grid.component';\nimport { FormComponent } from './components/base/form/form.component';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\nimport { IframeComponent } from './components/base/iframe/iframe.component';\n\n// Library\nimport { TableModule } from 'primeng/table';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TabViewModule } from 'primeng/tabview';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { AddRowDirective } from './directive/add-row.directive';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NotesComponent } from './components/shared/notes/notes.component';\nimport { PanelMenuModule } from 'primeng/panelmenu';\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { RequestService } from './services/request.service';\nimport { Environment } from './models/response.model';\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\nimport { HeaderComponent } from './components/base/header/header.component';\nimport { MenuModule } from 'primeng/menu';\nimport { GalleriaModule } from 'primeng/galleria';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { AccordionModule } from 'primeng/accordion';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { LoaderComponent } from './components/base/loader/loader.component';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\nimport {AvatarModule} from 'primeng/avatar';\nimport { CardModule } from 'primeng/card';\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\nimport { CaptionComponent } from './components/base/caption/caption.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CardComponent } from './components/base/cards/card.component';\nimport { fileComponent } from './components/base/file/file.component';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport { AlertService } from './services/alert.service';\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\nimport { SeFilterComponent } from './components/base/filter/filter.component';\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\n\n\nexport const toasterModuleforRoot = ToastrModule.forRoot();\n\n@NgModule({\n declarations: [\n GridComponent,\n GridRowActionsComponent,\n DropdownComponent,\n AddRowDirective,\n FormComponent,\n NotesComponent,\n AppFilterMenuComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n IframeComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeGlobalFilterComponent,\n SeFilterComponent,\n AlertPopUpComponent\n ],\n\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\n imports: [\n CommonModule,\n TableModule,\n PanelMenuModule,\n MenuModule,\n MultiSelectModule,\n FormsModule,\n BrowserAnimationsModule,\n TabViewModule,\n DropdownModule,\n CalendarModule,\n CheckboxModule,\n ButtonModule,\n ProgressSpinnerModule,\n RippleModule,\n InputTextModule,\n TriStateCheckboxModule,\n InputTextareaModule,\n TooltipModule,\n BrowserModule,\n GalleriaModule,\n AutoCompleteModule,\n AccordionModule,\n ConfirmDialogModule,\n MessagesModule,\n InputNumberModule,\n AvatarModule,\n CardModule,\n DragDropModule,\n InputSwitchModule,\n toasterModuleforRoot\n ],\n exports: [\n GridComponent,\n GridRowActionsComponent,\n FormComponent,\n MenuBarComponent,\n SidebarComponent,\n HeaderComponent,\n GalleryComponent,\n LoaderComponent,\n FileUploadComponent,\n CaptionComponent,\n CardComponent,\n fileComponent,\n GenerateReportBtnComponent,\n ReportFilterComponent,\n SeFilterComponent,\n SeGlobalFilterComponent\n ],\n})\nexport class SEToolkitModule {\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\n return {\n ngModule: SEToolkitModule,\n providers: [\n RequestService,\n {\n provide: 'env',\n useValue: environment\n }\n ]\n };\n }\n}\n","import { EFormControl, IHyperlink } from './form.model';\nimport { IPermission } from './user-info.model';\n\nexport interface IHeader {\n fields: IHeaderField[];\n column?: number;\n permissions?: IPermission[];\n}\n\nexport interface IHeaderField {\n label?: string;\n value?: any;\n control?: EFormControl;\n data?: any[];\n onClick?: () => void;\n class?: string;\n column?: number;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport enum EButtonClass {\n NORMAL = 'p-button-sm',\n SUCCESS = 'p-button-success p-button-sm',\n INFO = 'p-button-info p-button-sm',\n WARNING = 'p-button-warning p-button-sm',\n HELP = 'p-button-help p-button-sm',\n DANGER = 'p-button-danger p-button-sm',\n}\n\nexport interface AddHeaderField {\n control?: EFormControl;\n label?: string;\n value?: string;\n column?: number;\n data?: any;\n class?: string;\n onClick?: (() => void) | any;\n hyperlink?: IHyperlink;\n permissions?: IPermission[];\n disabled?: boolean;\n hidden?: boolean;\n format?: IHeaderFormat;\n showTime?: boolean;\n timeOnly?: boolean;\n}\n\nexport interface IHeaderFormat {\n type: EHeaderFormatType | any;\n formatParams?:IFormatParams\n | IDateFormatParams\n | INumberFormatParams\n | ICurrencyFormatParams;\n formatter?: (value: any) => any;\n}\n\nexport interface IFormatParams {\n locale?: string;\n}\n\nexport interface IDateFormatParams extends IFormatParams {\n format?: string;\n}\n\nexport interface INumberFormatParams extends IFormatParams {\n digitsInfo?: string;\n}\n\nexport interface ICurrencyFormatParams extends INumberFormatParams {\n currency: string;\n}\n\nexport enum EHeaderFormatType {\n SHORTDATE = 'mm/dd/yy',\n MEDIUMDATE = 'M d, yy',\n LONGDATE = 'MM d, yy',\n CURRENCY = 'currency',\n PERCENT = 'percent',\n DECIMAL = 'decimal',\n}","import { Injectable } from '@angular/core';\nimport { IMenu } from '../models/menu.model';\nimport { ISidebar } from '../models/sidebar.model';\nimport { IDictionary } from '../models/common.model';\nimport * as utilities from './utilities.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SideBarService {\n constructor() { }\n\n /**\n * Checks parent menu and expands it if current route exists in its child menus.\n * @param menuLabel\n * @returns {boolean}\n */\n isMenuExpanded(\n currentRoute: string,\n items: IMenu[],\n menuLabel: string\n ): boolean {\n if (items && items.length) {\n // check currentRoute contains loadDataForEdit or not\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\n let detailPage = '';\n if(currentRoute?.toString()?.includes(\"list\")){\n detailPage = currentRoute.replace('list', 'detail');\n } \n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\n let matchedItems = [];\n if(currentIndex > -1){\n matchedItems = items[currentIndex]?.items;\n }\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \n }\n return false;\n }\n\n setSidebarPropValues(\n sidebar: ISidebar[],\n section: string,\n props: IDictionary[]\n ) {\n sidebar.map((sidebarItem: any) => {\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\n props.map((prop) => {\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\n sidebarItem.data.data = prop.value;\n } else {\n return utilities.setPropValue(sidebarItem, prop);\n }\n });\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl } from '../models/form.model';\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderService {\n constructor() {}\n\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\n if (!headerInfo.column) {\n headerInfo.column = 3;\n }\n\n const headerField: IHeaderField = {\n label: headerInfo.label,\n control: headerInfo.control,\n value: headerInfo.value,\n column: headerInfo.column,\n data: headerInfo.data,\n class: headerInfo.class,\n onClick: headerInfo.onClick,\n hyperlink: headerInfo.hyperlink,\n disabled: headerInfo.disabled,\n hidden: headerInfo.hidden,\n permissions: headerInfo.permissions,\n format: headerInfo.format,\n showTime: headerInfo.showTime,\n timeOnly: headerInfo.timeOnly,\n };\n return headerField;\n }\n\n addLabel(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.LABEL;\n return this.addHeaderField(headerInfo);\n }\n \n addDropdown(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.DROPDOWN;\n return this.addHeaderField(headerInfo);\n }\n\n addButton(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.BUTTON;\n return this.addHeaderField(headerInfo);\n }\n\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CHECKBOX;\n return this.addHeaderField(headerInfo);\n }\n\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.HYPERLINK;\n return this.addHeaderField(headerInfo);\n }\n\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\n headerInfo.control = EFormControl.CALENDAR;\n return this.addHeaderField(headerInfo);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EFormControl, IDynamicForm } from '../models/form.model';\nimport { AlertService } from './alert.service';\nimport { RequestService } from './request.service';\nimport * as utilities from '../../lib/services/utilities.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CardService {\n\n constructor(\n private requestService: RequestService,\n private alertService: AlertService\n ) { }\n\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\n let imageToDelete =\n imageInfo.id && imageInfo.id > 0\n ? { RecordId: imageInfo.id }\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\n (response: any) => {\n this.deleteFile(imageInfo, dynamicForm, cardId);\n if (imageInfo.tables) {\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\n } else {\n this.alertService.success('Image deleted successfully.');\n }\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n deleteImageFromTables(tables: any[], uniqueKey: string) {\n this.requestService\n .get('/Data/BulkDelete', {\n UniqueKey: uniqueKey,\n tables: tables,\n })\n .subscribe(\n (response) => {\n this.alertService.success('Image deleted successfully.');\n },\n ({ error }) => {\n this.alertService.apiError(error);\n }\n );\n }\n\n getCardData(formSections: any, id: string): any {\n let arr = {};\n formSections?.forEach((formSection: any) => {\n formSection.fields?.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\n }\n });\n });\n return arr;\n }\n\n setFileUploadData(response: any, dynamicForm: any, id: string) {\n if (response) {\n dynamicForm.formSections?.forEach((x: any) => {\n x.fields.forEach((field: any) => {\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\n field.card?.data?.unshift(...response);\n }\n });\n });\n }\n }\n\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\n const fieldInfo = this.getCardData(\n dynamicForm.formSections,\n id\n );\n let cardData = fieldInfo.data;\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\n\n dynamicForm.formSections?.forEach((section) => {\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\n if (card && card.card) {\n card.card.data = cardData;\n }\n });\n }\n\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\n arr = utilities.setDataFields(arr);\n cardInfo = utilities.objConvertToLower(cardInfo);\n \n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\n if (index > -1) {\n arr.splice(index, 1);\n }\n return arr;\n }\n\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\n response.records?.forEach((record: any, recordIndex: any) => {\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\n if(matchCard && Object.keys(matchCard)?.length > 0){\n matchCard[fieldName] = record.Id;\n }\n });\n\n if(dynamicForm && Object.keys(dynamicForm)?.length){\n dynamicForm.formSections.forEach((section)=>{\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\n if(formField){\n if(cardsInfo?.length > 0){\n cardsInfo?.forEach((cardId)=>{\n cardId.id = null;\n })\n }\n formField.card.data = cardsInfo;\n };\n });\n }\n }\n\n}\n","/*\n * Public API Surface of se-ui-toolkit\n */\nexport * from 'primeng/api';\n\n/**\n * Exported Modules\n */\n\nexport * from './lib/se-ui-toolkit.module';\n\n/**\n * Exported Components\n */\nexport * from './lib/components/base/form/form.component';\nexport * from './lib/components/base/grid/grid.component';\nexport * from './lib/components/base/menu-bar/menu-bar.component';\nexport * from './lib/components/base/sidebar/sidebar.component';\nexport * from './lib/components/base/header/header.component';\nexport * from './lib/components/base/image-gallery/image-gallery.component';\nexport * from './lib/components/base/iframe/iframe.component';\nexport * from './lib/components/base/loader/loader.component';\nexport * from './lib/components/base/file-upload/file-upload.component';\nexport * from './lib/components/base/caption/caption.component';\nexport * from './lib/components/base/cards/card.component';\nexport * from './lib/components/base/file/file.component';\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\nexport * from './lib/components/shared/global-filters/global-filters.component';\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\nexport * from './lib/components/base/filter/filter.component';\n\n/**\n * Exported Type Definitions\n */\nexport * from './lib/models/form.model';\nexport * from './lib/models/grid.model';\nexport * from './lib/models/response.model';\nexport * from './lib/models/request.model';\nexport * from './lib/models/header.model';\nexport * from './lib/models/sidebar.model';\nexport * from './lib/models/user-info.model';\nexport * from './lib/models/menu.model';\nexport * from './lib/models/common.model';\n\n/**\n * Exported Services\n */\nexport * from './lib/services/alert.service';\nexport * from './lib/services/form.service';\nexport * from './lib/services/grid.service';\nexport * from './lib/services/dropdown.service';\nexport * from './lib/services/page-logger.service';\nexport * from './lib/services/authentication.service';\nexport * from './lib/services/utilities.service';\nexport * from './lib/services/request.service';\nexport * from './lib/services/sidebar.service';\nexport * from './lib/services/hyperlink.service';\nexport * from './lib/services/header.service';\nexport * from './lib/services/loader.service';\nexport * from './lib/services/card.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","__awaiter","EGridAggregate","EAggregateFormat","EGridlink","EGridFormatter","GridFilterControlType","EDayRange","EGridSortDirection","EGridColumnType","EGridFormatType","EGlobalFilterFormatType","EGridSelectionType","EFilterValidator","EGridRowPropName","EGridValidator","Component","DynamicDialogConfig","Optional","DynamicDialogRef","Injectable","ToastrService","DialogService","ConfirmationService","HttpClient","Inject","ESelectFileType","EValidator","EFormControl","EOperator","EMatchMode","EFormatType","EHyperlink","Subject","formatDate","utilities.calenderMinMaxValue","utilities.setDialogResponse","utilities.findKeysAndValue","utilities.setHyperlink","utilities.objConvertToLower","DatePipe","EPermissionType","DomSanitizer","EventEmitter","utilities.currentUrl","utilities.setTimeInDate","utilities.autoSetLookupData","utilities.setMinutesInterval","jsPDF","saveAs","interval","ElementRef","DecimalPipe","ChangeDetectorRef","Router","ViewChildren","Output","Input","ViewChild","HostListener","utilities.changeDynamicFormState","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","ComponentFactoryResolver","ViewContainerRef","Directive","CookieService","ESidebarAction","Renderer2","Subscription","utilities.getFormFieldValue","utilities.setCardFieldsData","moveItemInArray","utilities.setFormFieldProp","ToastrModule","NgModule","CommonModule","TableModule","PanelMenuModule","MenuModule","MultiSelectModule","FormsModule","BrowserAnimationsModule","TabViewModule","DropdownModule","CalendarModule","CheckboxModule","ButtonModule","ProgressSpinnerModule","RippleModule","InputTextModule","TriStateCheckboxModule","InputTextareaModule","TooltipModule","BrowserModule","GalleriaModule","AutoCompleteModule","AccordionModule","ConfirmDialogModule","MessagesModule","InputNumberModule","AvatarModule","CardModule","DragDropModule","InputSwitchModule","EButtonClass","EHeaderFormatType","utilities.setPropValue","utilities.setDataFields"],"mappings":"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"}