@churchillliving/se-ui-toolkit 6.53.11 → 6.53.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/churchillliving-se-ui-toolkit.umd.js +10 -5
- package/bundles/churchillliving-se-ui-toolkit.umd.js.map +1 -1
- package/churchillliving-se-ui-toolkit.metadata.json +1 -1
- package/esm2015/lib/components/base/grid/grid.component.js +11 -6
- package/esm2015/lib/components/base/grid/grid.component.ngfactory.js +5 -5
- package/esm2015/lib/components/base/grid/grid.component.ngsummary.json +1 -1
- package/fesm2015/churchillliving-se-ui-toolkit.js +10 -5
- package/fesm2015/churchillliving-se-ui-toolkit.js.map +1 -1
- package/lib/components/base/grid/grid.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -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';\r\nimport { Type } from '@angular/core';\r\nimport { IDropDownRequest, IReportBtn } from './form.model';\r\n\r\nexport interface IGridColumn {\r\n component?: Type<any>;\r\n allowSearch?: boolean;\r\n target?: EGridlink;\r\n header?: string;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n type?: EGridColumnType;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n sorting?: boolean;\r\n filtering?: boolean;\r\n filter?: IGridFilterType;\r\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\r\n data?: any;\r\n style?: string;\r\n permissions?: IPermission[];\r\n value?: any;\r\n tableAlias?: string;\r\n linkId?: string;\r\n params?: {[key: string]: any};\r\n minutesInterval?: number;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n displayText?: string;\r\n disabled?: boolean;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n allowSave?: boolean;\r\n validations?: IGridValidation[];\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n}\r\n\r\nexport interface IGridLookupControl {\r\n component?: any;\r\n data?: IGridLookupData;\r\n}\r\n\r\nexport declare type IGridLookupData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n valueField?: string;\r\n selectedValue?: string;\r\n data?: {[key: string]: any};\r\n}\r\n\r\nexport interface ILookupValue {\r\n text: string;\r\n value: string;\r\n field?:string\r\n}\r\n\r\nexport enum EGridAggregate {\r\n SUM = 'sum',\r\n AVERAGE = 'average',\r\n COUNT = 'count',\r\n}\r\n\r\nexport interface IGridAggregate {\r\n type: EGridAggregate;\r\n caption?: string;\r\n displayField?: string;\r\n aggrValue?:string;\r\n format?: IAggregateFormat;\r\n}\r\nexport interface IAggregateFormat {\r\n type: EAggregateFormat;\r\n digitsInfo?: number;\r\n}\r\n\r\nexport enum EAggregateFormat {\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGridlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n}\r\n\r\nexport interface IGridDataExport {\r\n rows: any[];\r\n headings: string[];\r\n}\r\n\r\nexport interface ISelectItem {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface IGridFilterType {\r\n type?: GridFilterControlType;\r\n data?: ISelectItem[];\r\n tableAlias?: string;\r\n showFilter?: boolean;\r\n}\r\n\r\nexport interface IAlertPopUpBtn {\r\n buttonLabel: string;\r\n buttonClass?: string;\r\n}\r\n\r\nexport interface IAlertPopUp {\r\n message: string;\r\n header?: string;\r\n buttons: IAlertPopUpBtn[];\r\n height?: string;\r\n width?: string;\r\n icon?: string;\r\n}\r\n\r\nexport enum EGridFormatter {\r\n BOOLEAN = 'boolean',\r\n CHAR = 'char',\r\n NUMERIC = 'numeric'\r\n}\r\n\r\nexport enum GridFilterControlType {\r\n INPUT = 'input',\r\n DROPDOWN = 'dropdown',\r\n CHECKBOX = 'checkbox',\r\n CALENDAR = 'calendar',\r\n CALENDAR_RANGE = 'calender_range',\r\n MULTISELECT = 'multi-select',\r\n NUMERICINPUT = 'numeric_input',\r\n NUMERIC_RANGE = 'numeric_range',\r\n DATE_RANGE = 'date_range',\r\n LOOKUP_INPUT = 'lookup_input',\r\n SPACER = 'spacer'\r\n}\r\n\r\nexport enum EDayRange {\r\n DAY = 'Day',\r\n WEEK = 'Week',\r\n MONTH = 'Month',\r\n YEAR = 'Year',\r\n}\r\n\r\nexport enum EGridSortDirection {\r\n ASC = 'asc',\r\n DESC = 'desc',\r\n}\r\n\r\nexport enum EGridColumnType {\r\n LINK = 'link',\r\n IFRAME = 'iframe',\r\n DIALOG = 'dialog',\r\n TEXT = 'text',\r\n NUMERIC = 'numeric',\r\n DATE = 'date',\r\n BOOLEAN = 'boolean',\r\n DROPDOWN = 'dropdown',\r\n LOOKUP_INPUT = 'lookup_input',\r\n ADD_BUTTON = 'add_button',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n MULTISELECT = 'multi-select',\r\n REPORT = 'report'\r\n}\r\n\r\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\r\n displayText?: string;\r\n onFocusOut?: (value: any) => any;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n format?: string | EGridFormatType | EGlobalFilterFormatType;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n validations?: IGridValidation[];\r\n errorMessage?:string;\r\n requiredField?: boolean;\r\n}\r\n\r\nexport interface ILookupControlFilter {\r\n component?: any;\r\n data?: ILookupFilterData;\r\n}\r\n\r\nexport declare type ILookupFilterData = {\r\n header: string;\r\n width?: string;\r\n data: any;\r\n} & {\r\n [key: string]: any;\r\n};\r\n\r\nexport interface IPrimeNgSort {\r\n multisortmeta: { field: string; order: number };\r\n}\r\n\r\nexport interface IPrimeNgFilterItem {\r\n matchMode: string;\r\n operator: string;\r\n value: string | number | boolean | Date | any;\r\n}\r\n\r\nexport interface IPrimeNgFilter {\r\n filteredValue: any[];\r\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\r\n}\r\n\r\nexport interface IGridFilter {\r\n field?: string;\r\n matchMode?: string;\r\n operator?: string;\r\n filtering?: boolean;\r\n value?: any;\r\n valueTwo?: any;\r\n tableAlias?: string;\r\n column?: string;\r\n}\r\n\r\nexport interface IGridSort {\r\n field?: string;\r\n direction?: EGridSortDirection;\r\n priority: number;\r\n tableAlias?: string;\r\n}\r\n\r\nexport class IGridServerSideEvent {\r\n filters?: IGridFilter[];\r\n sorts?: IGridSort[];\r\n page?: number;\r\n pageSize?: number;\r\n}\r\n\r\nexport interface IGridPaginationEvent {\r\n first: number;\r\n rows: number;\r\n}\r\n\r\nexport interface IGridColumnAction {\r\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\r\n tooltip: string;\r\n width?: string;\r\n confirmDialog?: boolean;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport interface IGridRowAction {\r\n title: string;\r\n class?: string;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport enum EGridFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n PERIOD = 'MM/yy',\r\n LONGDATE = 'MM/dd/YY, h:mm a',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGlobalFilterFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n}\r\n\r\nexport enum EGridSelectionType {\r\n SINGLE = 'single',\r\n MULTIPLE = 'multiple',\r\n}\r\n\r\nexport type MenuFilterControls =\r\n | GridFilterControlType.INPUT\r\n | GridFilterControlType.NUMERICINPUT\r\n | GridFilterControlType.CALENDAR;\r\n\r\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\r\n\r\nexport interface addColumn {\r\n target?: EGridlink;\r\n component?: Type<any>;\r\n control?: EGridColumnType;\r\n field?: string;\r\n displayField?: string;\r\n header?: string;\r\n showOption?: boolean;\r\n style?: string;\r\n type?: EGridColumnType;\r\n format?: string | EGridFormatType | IGridFormat;\r\n data?: any;\r\n filtering?: boolean;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n allowSearch?: boolean;\r\n minutesInterval?: number;\r\n sorting?: boolean;\r\n filter?: IGridFilterType;\r\n tableAlias?: string;\r\n linkId?: string;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n params?: {[key: string]: any};\r\n displayText?: string;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n errorMessage?: string;\r\n validations?: IGridValidation[];\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n permissions?: IPermission[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n value?: any;\r\n}\r\n\r\nexport interface addFilterColumn {\r\n control?: GridFilterControlType;\r\n field?: string;\r\n header?: string;\r\n filter?: GridFilterControlType;\r\n filtering?: boolean;\r\n hidden?: boolean;\r\n style?: string;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n format?: string;\r\n tableAlias?: string;\r\n validations?: IGridValidation[] | any;\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n permissions?: IPermission[];\r\n component?: Type<any>;\r\n type?: EGridColumnType;\r\n data?: any;\r\n}\r\n\r\nexport interface IGridValidation {\r\n type: EGridValidator | EFilterValidator;\r\n expression?: any;\r\n}\r\nexport enum EFilterValidator {\r\n REQUIRED = \"required\",\r\n}\r\nexport interface IGridReportBtn extends IReportBtn{\r\n type?: EGridColumnType.REPORT;\r\n}\r\nexport interface IGridRowProp{\r\n propName: EGridRowPropName | string; //IGridColumnPropName;\r\n propValue: any;\r\n field: string;\r\n}\r\n\r\nexport enum EGridRowPropName {\r\n DISPLAYTEXT = 'displayText',\r\n DISABLED = 'disabled',\r\n DISPLAYFIELD = 'displayField',\r\n HIDDEN = 'hidden',\r\n ICON = 'icon',\r\n}\r\n\r\nexport enum EGridValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport interface addGlobalFilter {\r\n field?: string;\r\n validations?: IGridValidation[];\r\n displayText?: string;\r\n type?: GridFilterControlType;\r\n data?: any;\r\n value?: any;\r\n valueTwo?: any;\r\n matchMode?: string;\r\n operator?: string;\r\n tableAlias?: string;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n format?: EGlobalFilterFormatType | IGridFormat | any;\r\n column?: string;\r\n onFocusOut?: (value: any) => any;\r\n filtering?: boolean;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n labelText?: string;\r\n prefix?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n}\r\n\r\nexport interface IGridFormat {\r\n type: EGridFormatType;\r\n formatParams?:\r\n | IGridFormatParam\r\n | IGridDateFormatParam\r\n | IGridNumberFormatParam\r\n | IGridCurrencyFormatParam\r\n | IGridallowcalculateFormatParam;\r\n\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IGridFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IGridDateFormatParam extends IGridFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IGridNumberFormatParam extends IGridFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport interface IGridProp {\r\n name: string;\r\n value: any;\r\n field?: string;\r\n}\r\n\r\nexport interface IGridPropFilter {\r\n field: string;\r\n value: any;\r\n}\r\n\r\nexport interface IGridFilterInfo {\r\n [key:string]:any;\r\n}\r\n","import { Component, OnInit, Optional } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'lib-alert-pop-up',\r\n templateUrl: './alert-pop-up.component.html',\r\n styleUrls: ['./alert-pop-up.component.css']\r\n})\r\nexport class AlertPopUpComponent implements OnInit {\r\n buttons: any[]\r\n message: string;\r\n icon: string;\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef,) { }\r\n\r\n ngOnInit(): void {\r\n if(this.config?.data){\r\n this.message = this.config.data?.alertPopInfo?.message;\r\n this.buttons = this.config.data?.alertPopInfo?.buttons;\r\n this.icon = this.config.data?.alertPopInfo?.icon;\r\n }\r\n }\r\n\r\n clickedBtn(button: any){\r\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\r\n if(closeBtn){\r\n closeBtn?.click();\r\n this.ref.close(button);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\r\nimport { IAlertPopUp, } from '../models/grid.model';\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n \r\n constructor(\r\n private toastr: ToastrService,\r\n public dialogService: DialogService,\r\n private confirmationService: ConfirmationService\r\n ) { }\r\n\r\n success(message: string) {\r\n this.toastr.success(message, \"\", { closeButton: true });\r\n }\r\n\r\n info(message: string) {\r\n this.toastr.info(message, \"\", { closeButton: true });\r\n }\r\n\r\n warning(message: string) {\r\n this.toastr.warning(message, \"\", { closeButton: true });\r\n }\r\n\r\n error(error: string, message?: string) {\r\n this.toastr.error(error, message, { closeButton: true });\r\n }\r\n\r\n apiError(error: any) {\r\n if (typeof error === 'string' || typeof error.error === 'string') {\r\n typeof error.error === 'string' ? this.error(error.error) : this.error(error);\r\n } else if (error && error.error && error.error.errorDetails) {\r\n const [responseError] = error.error.errorDetails;\r\n this.error(responseError.errorMessage);\r\n }\r\n else if(error && error.headers && error.status !== 401) {\r\n this.error('something went wrong during api request');\r\n }\r\n }\r\n\r\n \r\n confirm({\r\n message = \"Are you sure that you want to proceed?\",\r\n header = \"Confirmation\",\r\n icon = \"pi pi-exclamation-triangle\",\r\n key= '',\r\n } = {}): Promise<any> {\r\n return new Promise(resolve => {\r\n this.confirmationService.confirm({\r\n message,\r\n header,\r\n icon,\r\n key,\r\n accept: () => {\r\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\r\n this.confirmationService.close();\r\n }\r\n })\r\n });\r\n }\r\n\r\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\r\n return new Promise(resolve => {\r\n const ref = this.dialogService.open(AlertPopUpComponent, {\r\n styleClass: 'alertPopUp',\r\n header: header,\r\n width: width,\r\n height: height,\r\n data: { alertPopInfo: {message, icon, buttons}},\r\n });\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n resolve(res.buttonLabel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '../models/response.model';\r\nimport { Environment } from '../models/response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestService {\r\n\r\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \r\n }\r\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\r\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\r\n }\r\n\r\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getRequest<T, K>(endpoint: string) {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\r\n }\r\n\r\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\r\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n getCurrentRoute(): any{\r\n let route = window.location.href;\r\n if(route && route.includes('/')){\r\n let currentRoute = route.split('/');\r\n route = currentRoute[currentRoute.length-1];\r\n const source = `?source=${route}`;\r\n return source;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\nimport { ISelectItem } from '../models/grid.model';\r\nimport { GridService } from './grid.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DropdownService {\r\n constructor(\r\n private requestService: RequestService,\r\n ) {}\r\n\r\n /**\r\n * Function to set the values for dropdown\r\n * @param response array of data\r\n * @param valueProp property name for value\r\n * @param labelProp property name for label\r\n */\r\n\r\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\r\n let dropdownvalues: ISelectItem[] = [];\r\n return new Promise((resolve, reject) => {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\r\n if (response) {\r\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\r\n return resolve(dropdownvalues);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n })\r\n });\r\n }\r\n\r\n setDropDown(response: any, valueProp: string, labelProp: string) {\r\n if (valueProp) valueProp = valueProp.toLowerCase();\r\n if (labelProp) labelProp = labelProp.toLowerCase();\r\n let dropdownvalues: ISelectItem[] = [];\r\n if (response.records) {\r\n this.setDataFields(response.records).forEach((record: any) => {\r\n if (\r\n record.hasOwnProperty(valueProp && labelProp) &&\r\n record[valueProp] &&\r\n record[labelProp]\r\n ) {\r\n dropdownvalues.push({\r\n label: record[labelProp].toString().trim(),\r\n value: record[valueProp].toString().trim(),\r\n });\r\n }\r\n });\r\n }\r\n return dropdownvalues;\r\n }\r\n\r\n setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EGridColumnType } from '../models/grid.model';\r\nimport { ISidebar } from '../models/sidebar.model';\r\nimport { RequestService } from './request.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HyperlinkService {\r\n constructor(private requestService: RequestService) { }\r\n\r\n buildUrl(linkIds: any, params: { [key: string]: string }) {\r\n return new Promise((resolve, reject) => {\r\n if (Array.isArray(linkIds)) {\r\n this.requestService\r\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\r\n .subscribe(\r\n (res: any) => {\r\n if (res) {\r\n return resolve(res);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n } else {\r\n this.requestService\r\n .getOne<any, any>('/Link/ByLinkId', linkIds)\r\n .subscribe(\r\n (response) => {\r\n if (response) {\r\n return resolve(this.setUrl(params, response));\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n setUrl(params: { [key: string]: string }, response: any) {\r\n let url: string = response.url;\r\n for (let paramKey in params) {\r\n const lowerKey = paramKey.toLowerCase();\r\n const paramValue = params[paramKey];\r\n if (\r\n url &&\r\n url.search &&\r\n url.search(lowerKey) > 0 &&\r\n paramValue &&\r\n paramValue.length > 0\r\n ) {\r\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n async addHyperlinks(columns: any) {\r\n let linkIds: any[] = [];\r\n let params: any;\r\n if (columns && Array.isArray(columns)) {\r\n columns.forEach((column) => {\r\n if (\r\n (column.type === EGridColumnType.LINK ||\r\n column.type === EGridColumnType.IFRAME||\r\n column.type === EGridColumnType.LOOKUP_INPUT) &&\r\n column.linkId &&\r\n column.params\r\n ) {\r\n linkIds.push(column.linkId);\r\n params = column.params;\r\n }\r\n });\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n } else if (columns.linkId) {\r\n linkIds.push(columns.linkId);\r\n params = columns.params;\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n setSidebarLink(response: any, sidebar: ISidebar[]) {\r\n response.forEach((res: any) => {\r\n sidebar.forEach((item) => {\r\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\r\n item.onClick(res.url);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { IGridSort, ISelectItem } from './grid.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IDynamicForm {\r\n formSections?: IFormSection[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface ILabel {\r\n name: string;\r\n disabled?: boolean;\r\n labelControl?: IFormField;\r\n onReturn?: (value: any) => void;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface IDropDownRequest {\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters?: ISetFilter[]\r\n sorts?:IGridSort[] \r\n}\r\n\r\nexport interface ISetFilter {\r\n field?: string,\r\n value?: any,\r\n matchMode?: string,\r\n operator?: string,\r\n valueField?: string;\r\n}\r\n\r\nexport interface IFormSection {\r\n name?: string;\r\n fields: IFormField[];\r\n icon?: string;\r\n class?: string;\r\n links?: ILabel[];\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n accordionDisabled?: boolean;\r\n showAccordion?: boolean;\r\n expanded?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n}\r\n\r\nexport interface IFormField {\r\n label?: string | ILabel;\r\n class?: string;\r\n card?: IDynamicCard;\r\n control?: EFormControl;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n value?: any | ILookupInputValue;\r\n data?: any[];\r\n validations?: IValidation[];\r\n errorMessage?: string;\r\n minutesInterval?: number;\r\n id?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n componentControl?: IFormComponentField;\r\n column?: number;\r\n row?: number;\r\n hyperlink?: IHyperlink;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?: any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n isvalid?: boolean;\r\n timeOnly?: boolean\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n requiredField?: boolean;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n uniqueKey?: string;\r\n azureContainer?: string;\r\n}\r\n\r\nexport interface IDynamicCard {\r\n id?: number;\r\n name?: string;\r\n data?: any[];\r\n orderByField?: string;\r\n formSections?: IFormSection[];\r\n onSort?: (value: any) => any;\r\n allowDelete?: boolean;\r\n allowDownload?: boolean;\r\n url?: string;\r\n caption?: string;\r\n width?: string;\r\n height?: string;\r\n allowEditableCaption?: boolean;\r\n onCaptionSave?: (value: any) => any;\r\n onDelete?: (value: any) => any;\r\n class?: string;\r\n cardInfo?: IViewCardProp;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\nexport interface IReportBtn{\r\n reportId: number;\r\n control?: EFormControl.REPORT;\r\n params?: any[];\r\n showDialog?: boolean;\r\n}\r\n\r\nexport interface IListFilter {\r\n uniqueKey: string;\r\n filters?: ISetFilter[];\r\n sorts?: IGridSort[];\r\n}\r\n\r\nexport interface IFormComponentField {\r\n component: Type<any>;\r\n id?:string;\r\n data?: {\r\n [key: string]: any;\r\n };\r\n handlers?: {\r\n [key: string]: Function;\r\n };\r\n}\r\n\r\nexport interface ILookupInputValue {\r\n text: any;\r\n value: any;\r\n}\r\n\r\nexport interface ILookupControlField {\r\n component: any;\r\n data: ILookupFieldData;\r\n id?: string;\r\n}\r\n\r\nexport declare type ILookupFieldData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n data?: {[key: string]: any};\r\n valueField?: string;\r\n selectedValue?: string;\r\n} \r\n\r\nexport interface IValidation {\r\n type: EValidator;\r\n expression?: any;\r\n}\r\n\r\nexport enum ESelectFileType {\r\n EXCEL = '.excel',\r\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\r\n DOCUMENT = '.document',\r\n PDF = '.pdf',\r\n MRT = '.mrt',\r\n}\r\n\r\nexport enum EValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport enum EFormControl {\r\n BUTTON = 'button',\r\n LABEL = 'label',\r\n INPUT = 'input',\r\n CHECKBOX = 'checkbox',\r\n DROPDOWN = 'dropdown',\r\n CALENDAR = 'calender',\r\n NUMERIC = 'number',\r\n MULTISELECT = 'multi-select',\r\n TEXTAREA = 'text-area',\r\n HYPERLINK = 'hyperlink',\r\n LOOKUP_INPUT = 'lookup_input',\r\n NOTE_FIELD = 'note_field',\r\n COMPONENT = 'component',\r\n PASSWORD = 'password',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n SPACER = 'spacer',\r\n SECTION_HEADER = 'section_header',\r\n FILE_UPLOAD = 'file_upload',\r\n CARD = 'card',\r\n DISPLAY_FILE = 'display_file',\r\n ADD_BUTTON = 'add_button',\r\n SWITCH = 'switch',\r\n REPORT = 'report'\r\n}\r\n\r\nexport enum EOperator {\r\n AND = 'and',\r\n OR = 'or',\r\n}\r\n\r\nexport enum EMatchMode {\r\n EQUALS = 'equals',\r\n STARTSWITH = 'startsWith',\r\n CONTAINS ='contains',\r\n IN = 'in',\r\n ENDSWITH = 'endsWith',\r\n NOTEQUALS = 'notEquals',\r\n ISNOT = 'isNot',\r\n DATEISNOT = 'dateIsNot',\r\n NOTCONTAINS ='notContains',\r\n LT = 'lt',\r\n BEFORE = 'before',\r\n DATEBEFORE = 'datebefore',\r\n LTE = 'lte',\r\n GT = 'gt',\r\n AFTER = 'after',\r\n DATEAFTER = 'dateAfter',\r\n GTE = 'gte',\r\n}\r\n\r\nexport interface IFormat {\r\n type: EFormatType;\r\n formatParams?:\r\n | IFormatParam\r\n | IDateFormatParam\r\n | INumberFormatParam\r\n | IallowCalculateFormatParam\r\n | ICurrencyFormatParam;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParam extends IFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IallowCalculateFormatParam extends IFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface INumberFormatParam extends IFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParam extends INumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport enum EFormatType {\r\n SMALLDATE = 'mm/d/y',\r\n SHORTDATE = 'mm/d/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n MONTHONLY = 'mm/yy',\r\n PERIOD = 'mm/y',\r\n BOOLEAN_YN = 'BOOLEAN_YN',\r\n CUSTOM = 'custom',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport interface IHyperlink {\r\n target?: EHyperlink;\r\n link?: string;\r\n linkId?: string;\r\n params?: any;\r\n width?:string;\r\n height?:string;\r\n component?: any;\r\n data?: ILookupFieldData;\r\n}\r\n\r\nexport enum EHyperlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n PARENT = '_parent',\r\n TOP = '_top',\r\n IFRAME = '_iframe',\r\n DIALOG = '_dialog'\r\n}\r\n\r\nexport interface AddFormField {\r\n control?: EFormControl;\r\n field?: string;\r\n class?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n label?: string | ILabel;\r\n value?: string | any;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n id?: string;\r\n hidden?: boolean;\r\n validations?: IValidation[] | any;\r\n hyperlink?: IHyperlink;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n minutesInterval?: number;\r\n disabled?: boolean | any;\r\n disabledText?: boolean;\r\n column?: number;\r\n row?: number;\r\n componentControl?: IFormComponentField;\r\n data?: ISelectItem[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n timeOnly?: boolean;\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?:any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n card?: IDynamicCard;\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { ISidebar } from '../../public-api';\r\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\r\nimport {\r\n EFormatType,\r\n EFormControl,\r\n EHyperlink,\r\n EMatchMode,\r\n EOperator,\r\n IDynamicCard,\r\n IDynamicForm,\r\n IFormat,\r\n IFormField,\r\n IFormSection,\r\n} from '../models/form.model';\r\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\r\nimport { Subject } from 'rxjs';\r\n\r\n/* #region public methods */\r\n\r\n/**\r\n *\r\n * @param value : any\r\n * Function receives the value and expects the value to be formated.\r\n * Do not use fat arrow function as they do not preserve the context.\r\n * this.value refers to the value of IFormField Object\r\n * Modify this.value directly to receive effect\r\n */\r\n\r\n var formstate = new Subject<any>();\r\n\r\n export function changeDynamicFormState(id: any, data: any) {\r\n formstate.next({ id, data });\r\n}\r\n \r\n export function onDynamicFormStateChange() {\r\n return formstate.asObservable();\r\n }\r\n\r\n export function closeIFrame(){\r\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\r\n if(close) {\r\n close.click();\r\n }\r\n}\r\n\r\n export function setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\r\n formSections?.forEach((section)=>{\r\n section.fields.forEach((field:any)=>{\r\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\r\n let keys = Object.keys(value);\r\n keys.forEach((key)=>{\r\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\r\n });\r\n changeDynamicFormState(id, field.componentControl.data);\r\n };\r\n });\r\n });\r\n}\r\n\r\nexport function toDecimal(value: any): any {\r\n if (value) {\r\n return parseFloat(value.toString()).toFixed(2);\r\n }\r\n}\r\n\r\nexport function toBoolean(value: any) {\r\n return value === 'Y' ? true : false;\r\n}\r\n\r\nexport function toShortDate(value: any, format?: IFormat) {\r\n if (value && value !== '') {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toShortDateTime(value: any, format?: IFormat) {\r\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toTrim(text: any) {\r\n if (typeof text === 'string') {\r\n return text.trim();\r\n } else {\r\n return text;\r\n }\r\n}\r\n\r\nexport function getMatchKey(obj: any, propName: string): string {\r\n if (!obj || !propName) {\r\n return '';\r\n }\r\n\r\n let matchedKey = '';\r\n if (Array.isArray(obj)) {\r\n obj.forEach((row) => {\r\n const keys: any[] = Object.keys(row);\r\n if (!matchedKey || matchedKey.length === 0) {\r\n matchedKey = keys.find(\r\n (x) => x.toLowerCase() === propName.toLowerCase()\r\n );\r\n }\r\n });\r\n } else {\r\n const keys: any[] = Object.keys(obj);\r\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\r\n }\r\n\r\n return matchedKey;\r\n}\r\n\r\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\r\n let formattedValue: any = value;\r\n if (formField.format) {\r\n switch (formField.format.type) {\r\n case EFormatType.DECIMAL:\r\n formattedValue = toDecimal(value);\r\n break;\r\n case EFormatType.BOOLEAN_YN:\r\n formattedValue = toBoolean(value);\r\n break;\r\n case EFormatType.SHORTDATE:\r\n formattedValue = toShortDate(value);\r\n break;\r\n case EFormatType.CUSTOM:\r\n if (formField.format.formatter) {\r\n formattedValue = formField.format.formatter(value);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return formattedValue;\r\n}\r\n\r\nexport function setFormField(\r\n { formSections }: IDynamicForm,\r\n formFieldObj: IFormField\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField: IFormField) => {\r\n if (\r\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\r\n (formField.label && formField.label === formFieldObj.label)\r\n ) {\r\n formField = formFieldObj;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function setHyperlinkComponentData(\r\n { formSections }: IDynamicForm,\r\n label: string,\r\n data: any\r\n){\r\n formSections?.forEach((section) => {\r\n let field=section.fields.find((field)=> field.label && field.label===label)\r\n if(field && field.hyperlink) field.hyperlink.params = data;\r\n});\r\n}\r\n\r\nexport function setLookupData(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n data: any\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n section.fields.map((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data &&\r\n data\r\n ) {\r\n formField.label.labelControl.lookupControl.data.data = data;\r\n }\r\n if (formField.lookupControl && formField.lookupControl.data && data) {\r\n formField.lookupControl.data.data = data;\r\n }\r\n }\r\n });\r\n });\r\n return formSections;\r\n}\r\n\r\nexport function setLinkParamValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n params: any[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n const isLabelLink =\r\n formField.label && typeof formField.label === 'object';\r\n if (\r\n formField.field?.toLowerCase() === field?.toLowerCase() ||\r\n (isLabelLink &&\r\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label &&\r\n typeof formField.label === 'string' &&\r\n formField.label?.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n let newLink: string = isLabelLink\r\n ? formField.label?.labelControl?.orignalLink\r\n : formField.hyperlink?.link;\r\n\r\n if (newLink && newLink.length > 0) {\r\n return params.map((paramObj: IDictionary): any => {\r\n if (\r\n (typeof paramObj.value === 'object' && paramObj.value) ||\r\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\r\n ) {\r\n // removing https:// or http:// from hyperlink param value\r\n if (\r\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \r\n (newLink.includes('https://') || newLink.includes('http://')) \r\n ) {\r\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\r\n }\r\n const paramName: string = paramObj.name.toLowerCase();\r\n const paramFormat: string = !paramObj.value\r\n ? '{{' + paramName + '}}'\r\n : paramName;\r\n\r\n if (newLink.localeCompare(paramFormat)) {\r\n let setLink =\r\n paramFormat !== '{{' + paramFormat + '}}'\r\n ? '{{' + paramFormat + '}}'\r\n : paramFormat;\r\n\r\n newLink = newLink.replace(\r\n new RegExp(setLink, 'ig'),\r\n toTrim(paramObj.value)\r\n );\r\n if (newLink && !newLink.startsWith('http'))\r\n {\r\n newLink = \"http://\" + newLink;\r\n }\r\n }\r\n return isLabelLink\r\n ? (formField.label.labelControl.hyperlink.link = newLink)\r\n : (formField.hyperlink.link = newLink);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\r\n let newLink: string = link;\r\n if (params && params.length > 0) {\r\n params.map((param) => {\r\n const url = param.name ? '{{' + param.name + '}}' : '';\r\n if (newLink.localeCompare(url)) {\r\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\r\n }\r\n });\r\n }\r\n return newLink;\r\n}\r\n\r\nexport function setFormPropValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n props: IDictionary[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n if (\r\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\r\n ) {\r\n return props.map((prop: IDictionary) => {\r\n if (formField.hasOwnProperty(prop.name)) {\r\n return (formField[prop.name] = prop.value);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\r\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\r\n if(section){\r\n section.fields.push(formField);\r\n }\r\n return dynamicForm;\r\n}\r\n\r\nexport function setFormFields(\r\n { formSections }: IDynamicForm,\r\n formFields: IFormField[]\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField) => {\r\n let matchedField = formFields.find(\r\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\r\n );\r\n if (matchedField) {\r\n formField = matchedField;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function getGlobalFilters(\r\n globalFilters: addGlobalFilter[],\r\n field: string,\r\n) {\r\n let formFieldObj: any;\r\n globalFilters.map((filter)=>{\r\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = filter;\r\n }\r\n });\r\n return formFieldObj;\r\n}\r\n\r\nexport function setFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n value: any,\r\n displayText: string = ''\r\n) {\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (displayText && displayText.length > 0) {\r\n formField.value = { text: displayText, value: value };\r\n } else {\r\n formField.value = value;\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function getFormFields(\r\n { formSections }: IDynamicForm,\r\n formControl: EFormControl\r\n): IFormField[] {\r\n let formFields: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.control === formControl) {\r\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\r\n {\r\n formField.value = formField.value.text.trim();\r\n }\r\n else if (formField.value && typeof(formField.value) === 'string')\r\n {\r\n formField.value = formField.value.trim();\r\n }\r\n formFields.push(formField);\r\n }\r\n });\r\n });\r\n return formFields;\r\n}\r\n\r\nexport function getFormField(\r\n { formSections }: IDynamicForm,\r\n field: string\r\n): IFormField {\r\n let formFieldObj: any;\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = formField;\r\n }\r\n });\r\n });\r\n return formFieldObj;\r\n}\r\n\r\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\r\n// exist in the field then always return a displayField value.\r\nexport function getFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n returnDisplayFieldValue:boolean = false\r\n) {\r\n let value;\r\n for (const section of formSections as any) {\r\n section.fields.forEach((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\r\n if (\r\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\r\n formField.displayField\r\n ) {\r\n value = isValid ? formField.value?.text : formField.value?.value;\r\n } else {\r\n value = isValid\r\n ? formField.value?.text\r\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\r\n ? formField.value?.value\r\n : formField.value;\r\n }\r\n }\r\n });\r\n }\r\n return value;\r\n}\r\n\r\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\r\n let value:any = getFormFieldValue(dynamicForm,field, true);\r\n if (value){\r\n value = value.toString();\r\n }\r\n return value;\r\n}\r\n\r\nexport function getSectionFieldValue(\r\n formSections: IFormSection[],\r\n field: string\r\n) {\r\n let form: IDynamicForm = { formSections };\r\n return getFormFieldValue(form, field, true);\r\n}\r\n\r\nexport function setSaveFormValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let response: any = {};\r\n if (tables && tables.length > 0) {\r\n tables.forEach((tableName) => {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n\r\n sectionFields?.forEach((field) => {\r\n const table = field.tables?.map((table) => table.toLowerCase());\r\n\r\n if (table && table.includes(tableName.toLowerCase())) {\r\n if (!response[tableName]) {\r\n response[tableName] = {};\r\n }\r\n\r\n if (field.field && field.field.length > 0) {\r\n response[tableName][field.field] = formatFormFieldCValue(field);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n sectionFields?.forEach((field) => {\r\n if (field.field && field.field.length > 0) {\r\n response[field.field] = formatFormFieldCValue(field);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function setSaveCardValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let values: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.card.data) {\r\n field.card.data.forEach((cardData: any) => {\r\n if (cardData.dynamicForm.formSections) {\r\n values.push(\r\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\r\n );\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return values;\r\n}\r\n\r\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\r\n if (data && data.length > 0 && Array.isArray(data)) {\r\n data.forEach((dataRow) => {\r\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\r\n });\r\n } else {\r\n setEditFormFieldsInfo(data, dynamicForm);\r\n }\r\n}\r\n\r\nexport function setFilter(\r\n field: string,\r\n value: any,\r\n matchMode: EMatchMode = EMatchMode.EQUALS,\r\n operator: EOperator = EOperator.AND,\r\n) {\r\n const filter: any = {\r\n field: field,\r\n matchMode: matchMode,\r\n operator: operator,\r\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\r\n };\r\n return filter;\r\n}\r\n\r\nexport function setAndFilter(field: string, value: any) {\r\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\r\n}\r\n\r\nexport function getOrigDataFieldValue(data: any, propName: string): any {\r\n let value: any;\r\n if (data) {\r\n if (Array.isArray(data)) {\r\n for (let i = 0; i < data.length; i++) {\r\n value = getPropertyValue(data[i], propName);\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n } else {\r\n value = getPropertyValue(data, propName);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function getOrigDataFieldValueAsString(\r\n data: any,\r\n propName: string\r\n): string {\r\n let value = getOrigDataFieldValue(data, propName);\r\n if (value) {\r\n return value.toString();\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport function setSidebarPropValues(\r\n sidebar: ISidebar[],\r\n section: string,\r\n props: IDictionary[]\r\n) {\r\n sidebar.map((sidebarItem: any) => {\r\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\r\n props.map((prop) => {\r\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\r\n sidebarItem.data.data = prop.value;\r\n } else {\r\n return setPropValue(sidebarItem, prop);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setSectionPropValues(\r\n { formSections }: IDynamicForm,\r\n sectionName: string,\r\n props: IDictionary[]\r\n) {\r\n formSections?.map((section) => {\r\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\r\n props.map((prop) => {\r\n return setPropValue(section, prop);\r\n });\r\n }\r\n });\r\n}\r\n\r\n/* #endregion */\r\n\r\n/* #region private methods */\r\n\r\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\r\n if (data.records && data.records.length > 0) {\r\n data.records.forEach((record: any) => {\r\n const keys: string[] = Object.keys(record);\r\n dynamicForm.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField: any) => {\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n // set label hyperlink\r\n setLabelHyperlink(formField, record, keys, allData);\r\n }\r\n\r\n if (\r\n formField.control === EFormControl.HYPERLINK &&\r\n formField.hyperlink &&\r\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\r\n formField.hyperlink.link)\r\n ) {\r\n let params = formField.hyperlink.params;\r\n let paramKeys: string[] = [];\r\n\r\n if (\r\n !params &&\r\n formField.hyperlink.link &&\r\n formField.hyperlink.link.includes('}}')\r\n ) {\r\n paramKeys = formField.hyperlink.link.split('}}');\r\n paramKeys = paramKeys.map((paramKey) => {\r\n paramKey = paramKey.replace('{{', '').trim();\r\n return paramKey;\r\n });\r\n paramKeys = paramKeys.filter((x) => x.length > 0);\r\n } else {\r\n if(params){\r\n paramKeys = Object.keys(params);\r\n }\r\n }\r\n\r\n formField.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n formField.hyperlink.link,\r\n paramKeys,\r\n formField.hyperlink.params,\r\n allData\r\n );\r\n } else {\r\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\r\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\r\n ? new Date(record[matchedKey] as string)\r\n : '';\r\n } else if (formField.control === EFormControl.CARD) {\r\n if (formField.card && formField.card.formSections) {\r\n if (!formField.card.data) {\r\n formField.card.data = data;\r\n }\r\n \r\n setEditFormFieldsInfo(data, formField.card);\r\n }\r\n } else if (\r\n formField.control === EFormControl.AUTOCOMPLETE &&\r\n matchedKey\r\n ) {\r\n let arrayValue = [];\r\n if (record[matchedKey] && formField.displayField) {\r\n arrayValue.push({[formField.displayField] : record[matchedKey]});\r\n }\r\n formField.value = arrayValue;\r\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.label.labelControl.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.label.labelControl.lookupControl.data.data = obj;\r\n }\r\n }\r\n\r\n if (\r\n formField.lookupControl &&\r\n formField.lookupControl.data &&\r\n formField.lookupControl.data.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.lookupControl.data.data = obj;\r\n }\r\n }\r\n if(record[matchedKey]){\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n if (\r\n formField.displayField &&\r\n formField.displayField.length > 0\r\n ) {\r\n const matchDisplayField = getMatchKey(\r\n record,\r\n formField.displayField\r\n );\r\n if (matchDisplayField) {\r\n formField.value = {\r\n text: toTrim(record[matchDisplayField]),\r\n value: formField.value?.value,\r\n };\r\n }\r\n\r\n const matchValueField = getMatchKey(record, formField.field);\r\n if (matchValueField) {\r\n formField.value = {\r\n text: formField.value?.text,\r\n value: toTrim(record[matchValueField]),\r\n };\r\n }\r\n }\r\n } else if (\r\n formField.control === EFormControl.COMPONENT &&\r\n formField.componentControl?.data\r\n ) {\r\n formField.componentControl.data = findKeysAndValue(\r\n formField.componentControl.data,\r\n record\r\n );\r\n changeDynamicFormState(\r\n formField.componentControl.id,\r\n formField.componentControl?.data\r\n );\r\n } else if (\r\n formField.control === EFormControl.NUMERIC &&\r\n formField.label?.labelControl?.lookupControl?.data?.data\r\n ) {\r\n let setData = formField.label.labelControl.lookupControl;\r\n setData.data.data = findKeysAndValue(setData.data.data, record);\r\n changeDynamicFormState(setData.id, setData.data.data);\r\n } else if (formField.control === EFormControl.HYPERLINK \r\n && formField.hyperlink?.target === EHyperlink.DIALOG \r\n && formField.hyperlink.params\r\n ) {\r\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\r\n } else if (matchedKey) {\r\n if (formField.format) {\r\n formField.value = formatFormFieldValue(\r\n formField,\r\n record[matchedKey]\r\n );\r\n } else if (formField.control === EFormControl.CHECKBOX) {\r\n formField.value =\r\n record[matchedKey] &&\r\n (record[matchedKey].toString() === '1' ||\r\n record[matchedKey].toString() === 'true')\r\n ? true\r\n : false;\r\n }else if (formField.control === EFormControl.DROPDOWN) {\r\n let dropValue = record[matchedKey];\r\n formField.value = dropValue\r\n ? dropValue.toString()\r\n : dropValue;\r\n } else {\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n//set hyperlink param value as field value\r\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\r\n let keys: string[] = [];\r\n let link: string ='';\r\n let paramKeys: string[] = [];\r\n let param: any;\r\n let fieldInfo: any;\r\n dynamicForm.formSections?.forEach((section: any) => {\r\n section.fields.forEach((formField: any) => {\r\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\r\n keys = Object.keys(record);\r\n if(formField?.label?.labelControl?.orignalLink){\r\n link = formField.label.labelControl.orignalLink;\r\n }\r\n\r\n if(formField?.label?.labelControl?.hyperlink?.params){\r\n param = formField.label.labelControl.hyperlink.params;\r\n paramKeys = Object.keys(param);\r\n }\r\n fieldInfo = formField;\r\n if(record && keys && link && paramKeys && param && fieldInfo){\r\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function objConvertToLower(obj: any) {\r\n return Object.keys(obj).reduce((accumulator: any, key) => {\r\n accumulator[key.toLowerCase()] = obj[key];\r\n return accumulator;\r\n }, {});\r\n}\r\n\r\nexport function clickSectionHighlight(value: any) {\r\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\r\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\r\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\r\n allMenuItems?.forEach((menauItem: any) => {\r\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\r\n })\r\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\r\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n}\r\n\r\nexport function removeActiveIconClass() {\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n if (activeIcon && activeIcon.length > 0) {\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n }\r\n}\r\n\r\nexport function highlightLeftSidebar(){\r\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\r\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\r\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\r\n\r\n allIconElements?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('tabIndex', 'section' + index);\r\n });\r\n removeActiveIconClass();\r\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\r\n const currentId = \"section\" + index;\r\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\r\n } else{\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \r\n }\r\n });\r\n });\r\n }\r\n\r\nexport function findKeysAndValue(data: any, record: any) {\r\n let valueKey: string = '';\r\n Object.keys(data).forEach((dataKey) => {\r\n let valueContainsKey: boolean = false;\r\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\r\n valueContainsKey = true;\r\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n }\r\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\r\n if (key && key.length > 0) {\r\n data = { ...data, [dataKey]: record[key] };\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction setPropValue(obj: any, prop: IDictionary) {\r\n const matchedKey: string = getMatchKey(obj, prop.name);\r\n if (matchedKey) {\r\n return (obj[matchedKey] = prop.value);\r\n }\r\n}\r\n\r\nexport function hasRole(role: string): boolean {\r\n let storage = localStorage.getItem('CurrentUserInfo');\r\n if (storage) {\r\n let currentUser = JSON.parse(storage);\r\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\r\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\r\n if (\r\n item.label &&\r\n item.label.labelControl &&\r\n item.label.labelControl.hyperlink &&\r\n item.label.labelControl.hyperlink.params\r\n ) {\r\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\r\n const link = item.label.labelControl.hyperlink.link;\r\n if (item.label.labelControl.hyperlink.link) {\r\n item.label.labelControl.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n link,\r\n paramKeys,\r\n item.label.labelControl.hyperlink.params,\r\n allData\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function setHyperlink(\r\n keys: string[],\r\n record: any,\r\n link: string,\r\n paramKeys: string[],\r\n params: any,\r\n allData: any[] = []\r\n): string {\r\n let newLink: string = link;\r\n record = objConvertToLower(record);\r\n paramKeys.forEach((paramkey) => {\r\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\r\n const isParamMatched = newLink.localeCompare(param);\r\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\r\n\r\n if (isParamMatched) {\r\n let paramValue = params ? params[paramkey] : null;\r\n if(paramValue === '' && paramInRecord){\r\n paramValue = '{'+paramkey+'}';\r\n }\r\n if (paramValue) {\r\n const propName = paramValue.toString().replace('{', '').replace('}', '');\r\n let propValue = record[propName.toLowerCase()];\r\n \r\n // in case of prop not found in record then try to find prop in all data array, to get its value \r\n if (!propValue && allData && allData.length > 0)\r\n {\r\n allData.forEach((data)=>{\r\n //const value = data.records.find((x)=> x[propName]);\r\n data.records.forEach((allRecord: any)=>{\r\n let keys = Object.keys(allRecord);\r\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\r\n if (matchKey){\r\n propValue = allRecord[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\r\n \r\n } else {\r\n // get param value from api response, if param key exists in it\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === paramkey.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n paramValue = record[matchedKey];\r\n if (paramValue) {\r\n newLink = newLink.replace(\r\n new RegExp(param, 'ig'),\r\n toTrim(paramValue)\r\n );\r\n } else {\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n // replace the {{param}} with empty\r\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\r\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\r\n }\r\n return newLink;\r\n}\r\n\r\n// its checking if there is no value in hyperlink param then it set key as a paramValue\r\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\r\n let paramValue: boolean = false;\r\n if(allData && allData.length > 0){\r\n allData.forEach((data: any)=>{\r\n if(data.records && data.records.length > 0){\r\n data.records.forEach((allRecord: any) =>{\r\n if(paramValue === false){\r\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\r\n };\r\n });\r\n };\r\n });\r\n }else{\r\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\r\n }\r\n return paramValue;\r\n}\r\n\r\nfunction getPropertyValue(data: any, propName: string) {\r\n let propValue: any;\r\n data.records?.forEach((record: any) => {\r\n for (const [key, value] of Object.entries(record)) {\r\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\r\n propValue = value;\r\n }\r\n }\r\n });\r\n return propValue;\r\n}\r\n\r\nfunction formatFormFieldCValue(field: any) {\r\n if (\r\n field.format?.type === EFormatType.BOOLEAN_YN &&\r\n field.format?.formatter?.name === 'toBoolean'\r\n ) {\r\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\r\n } else if (\r\n field.control === EFormControl.CALENDAR &&\r\n (field.value || field.value === '')\r\n ) {\r\n if(field.timeOnly && field.saveAsString){\r\n field.value = field.value;\r\n }else{\r\n field.value =\r\n field.showTime === true\r\n ? toShortDateTime(field.value, field.format)\r\n : toShortDate(field.value, field.format)\r\n }\r\n return field.value;\r\n } else if (\r\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value == undefined ? null : field.value.value;\r\n } else if (\r\n field.label &&\r\n field.label.labelControl &&\r\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value;\r\n } else {\r\n field.value = field.value == undefined ? null : field.value;\r\n return field.value;\r\n }\r\n}\r\n\r\nexport function autoSetLookupData(\r\n fieldData: any,\r\n response: any\r\n) {\r\n let obj = {};\r\n let record = setDataFields([response]);\r\n if (record && record.length > 0) {\r\n record.forEach((x: any) => {\r\n record = x;\r\n });\r\n }\r\n if (fieldData && record) {\r\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\r\n let rowKeys = Object.keys(record);\r\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\r\n let value = rowKeys?.find(\r\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n );\r\n if (value && value.length > 0) {\r\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\r\n } else if (key && key.length > 0) {\r\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\r\n } else {\r\n obj = { ...obj, [dataKey]: dataValue };\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\r\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\r\n if(obj && obj.lookupControl?.data){\r\n obj.lookupControl.data.data = data;\r\n }\r\n}\r\n\r\nexport function setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n}\r\n\r\nexport function setDialogResponse(\r\n formField: any,\r\n formData: any,\r\n response: any\r\n) {\r\n let value: any;\r\n if (response) {\r\n // if selectedValue does not exist then consider valueField as selectedValue\r\n if (\r\n formData &&\r\n formData.data &&\r\n formData.data.valueField &&\r\n !formData.data.selectedValue\r\n ) {\r\n formData.data.selectedValue = formData.data.valueField;\r\n }\r\n\r\n const matchValueKey: string = getMatchKey(\r\n response,\r\n formData?.data?.selectedValue\r\n );\r\n const matchFieldKey: string = getMatchKey(\r\n response,\r\n formData?.data?.valueField\r\n );\r\n\r\n if (\r\n formData?.data &&\r\n formData?.data.selectedValue &&\r\n formData?.data.valueField\r\n ) {\r\n let selectedValue = response[matchValueKey];\r\n let matchText = response[matchFieldKey];\r\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\r\n selectedValue = selectedValue.trim();\r\n matchText = matchText.trim();\r\n }\r\n value = { text: matchText, value: selectedValue };\r\n } else {\r\n const FieldKey: string = getMatchKey(response, formField.field);\r\n let value = response[FieldKey];\r\n if (value) {\r\n value = value.trim();\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function currentUrl():string{\r\n let currentRoute: string = '';\r\n let url = window.location.href;\r\n if(url){\r\n let arr = url.split('/');\r\n currentRoute = arr[arr.length-1]\r\n } \r\n return currentRoute;\r\n}\r\n\r\nexport function getGridFilters(){\r\n let filters: any = [];\r\n let gridFilters = currentUrl();\r\n if(gridFilters && gridFilters.length > 0){\r\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\r\n filters = localFilter?.filters;\r\n }\r\n return filters;\r\n}\r\n\r\n//update the hidden or disabled and value based off other global filters.\r\nexport function setGlobalFilterPropValues(\r\n globalFilter: IGlobalFilter[],\r\n field: string,\r\n props: IFilterDictionary[],\r\n) {\r\n return globalFilter.map((filter: any) => {\r\n if (\r\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\r\n (filter.displayText &&\r\n filter.displayText.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n props?.map((prop: IFilterDictionary) => {\r\n if (filter.hasOwnProperty(prop.propName)) {\r\n return (filter[prop.propName] = prop.propValue);\r\n } else if (prop.propValue && prop.propValue.length > 0) {\r\n return (filter.value = prop.propValue);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setCardFieldsData(form: any) {\r\n if (form && form.dynamicform) {\r\n const { dynamicform, ...newData } = form;\r\n dynamicform?.formSections?.forEach((section: any) => {\r\n section.fields?.forEach((field: any) => {\r\n if (newData) {\r\n setEditFormFields({ records: [newData] }, dynamicform);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n// disable Grid EditableRow Column\r\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let disableObj = { ...obj, disabled: true };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = disableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n// enabled Grid EditableRow Column\r\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let enableObj = { ...obj, disabled: false };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = enableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n // check the Minutes Interval\r\n export function setMinutesInterval(value: any){\r\n if (value) {\r\n const min = value.getMinutes().toString();\r\n if (min) {\r\n value = value.setMinutes(0);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\n // update the response records\r\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\r\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\r\n if(index > -1){\r\n records[index] = rowData;\r\n }else{\r\n records.push(rowData);\r\n }\r\n return records;\r\n}\r\n\r\n//convert the time into date\r\nexport function setTimeInDate(time: any) {\r\n const convertTime12to24 = (time12h: any) => {\r\n const [time, modifier] = time12h?.toString()?.split(' ');\r\n let [hours, minutes] = time?.split(':');\r\n if (hours === '12') {\r\n hours = '00';\r\n }\r\n if (modifier === 'PM') {\r\n hours = parseInt(hours, 10) + 12;\r\n }\r\n return `${hours}:${minutes}`;\r\n };\r\n const date = convertTime12to24(time);\r\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\r\n const futureDate = new Date();\r\n futureDate.setTime(tempDate.getTime());\r\n return futureDate;\r\n}\r\n\r\n// return the data of the field \r\nexport function getFieldData({ formSections }: any, field: string){\r\n let data: any = []\r\n if(formSections?.length > 0 && field){\r\n formSections.forEach((section: any)=>{\r\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\r\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\r\n }\r\n })\r\n }\r\n return data;\r\n}\r\n\r\nexport function setAllFormFieldsValues(\r\n { formSections }: IDynamicForm,\r\n props: IFilterDictionary[]\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n if (section) {\r\n section.fields.map((formField: any) => {\r\n return props.map((prop: IFilterDictionary) => {\r\n if (formField) {\r\n return (formField[prop.propName] = prop.propValue);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function calenderMinMaxValue(item: any,value: any, index){\r\n let validation: string = 'equal';\r\n var validDate = new Date(item.validations[index].expression);\r\n var currentDate = new Date(value);\r\n if (validDate.getTime() < currentDate.getTime()){\r\n validation = 'greater';\r\n }\r\n else if (validDate.getTime() > currentDate.getTime()){\r\n validation = 'minimum';\r\n }\r\n return validation;\r\n}\r\n/* #endregion */\r\n","import { Injectable } from '@angular/core';\r\nimport { LazyLoadEvent } from 'primeng/api';\r\nimport { IDropDownRequest } from '../models/form.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport {\r\n EGridSortDirection,\r\n GridFilterControlType,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridSort,\r\n EGridColumnType,\r\n addColumn,\r\n addFilterColumn,\r\n addGlobalFilter,\r\n IGridColumn,\r\n EGridValidator,\r\n IGridProp,\r\n IGridPropFilter,\r\n IGridRowProp,\r\n IGridReportBtn,\r\n} from '../models/grid.model';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { HyperlinkService } from './hyperlink.service';\r\nimport * as utilities from './utilities.service';\r\nimport { RequestService } from './request.service';\r\nimport { IDictionary } from '../models/common.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridService {\r\n softCachingFilters: any = {};\r\n applyFilterEvent: boolean = true;\r\n public columnFocusedOut:boolean = false;\r\n constructor(\r\n public datepipe: DatePipe,\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService:DropdownService,\r\n private alertService:AlertService,\r\n private requestService: RequestService\r\n ) {}\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns after proper mapping\r\n */\r\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\r\n const filters = this.mapFilters(event, columns);\r\n return this.handleMultiFilterField(filters);\r\n }\r\n\r\n /**\r\n * @param filters\r\n * Receives filters and returns array after removing duplicates\r\n * and creating comma separated values for same filters\r\n */\r\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\r\n return filters\r\n .map((x, i, arr) =>\r\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\r\n ? {\r\n ...x,\r\n value: arr\r\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\r\n .map((a) => a.value)\r\n .join(),\r\n }\r\n : x\r\n )\r\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\r\n }\r\n\r\n // Prepare basic grid filters\r\n prepareBasicFilters(\r\n event: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridFilter[] {\r\n return this.mapFilters(event, columns);\r\n }\r\n\r\n /**\r\n * Checks if filters has values then converts global filter values type into IGridFilter.\r\n */\r\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\r\n const globalData: IGridFilter[] = [];\r\n\r\n globalFilters?.forEach((filter: IGlobalFilter) => {\r\n if (\r\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\r\n filter.value.length) ||\r\n (typeof filter.value !== 'string' &&\r\n !Array.isArray(filter.value) &&\r\n filter.value) ||\r\n (typeof filter.value === 'boolean' && filter.value !== null) ||\r\n filter.type === GridFilterControlType.CALENDAR_RANGE\r\n ) {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\r\n // add filter for start date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n\r\n // add filter for end date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter, false),\r\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter, false),\r\n tableAlias: filter.tableAlias,\r\n });\r\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode:\r\n filter.type === GridFilterControlType.MULTISELECT\r\n ? 'in'\r\n : filter.matchMode,\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n }\r\n }\r\n });\r\n return globalData;\r\n }\r\n\r\n setGlobalFilterField(\r\n filter: any,\r\n isStartDate: boolean = true\r\n ): string {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\r\n if (isStartDate) {\r\n return filter.fromField;\r\n } else {\r\n return filter.toField;\r\n }\r\n } else {\r\n return filter.field;\r\n }\r\n }\r\n\r\n // set global filter value\r\n setGlobalFilterValue(\r\n filter: IGlobalFilter,\r\n isStartDate: boolean = true\r\n ): string | number | Date | boolean {\r\n switch (filter.type) {\r\n case GridFilterControlType.MULTISELECT:\r\n return (filter.value as any[]).join(',');\r\n case GridFilterControlType.CALENDAR:\r\n return this.getFormattedDate(filter.value as Date);\r\n case GridFilterControlType.CALENDAR_RANGE:\r\n let dateValues: string[] = filter.value\r\n ? filter.value.toString().split('|')\r\n : [];\r\n if (dateValues && dateValues.length == 2) {\r\n let dateValue: Date = isStartDate\r\n ? new Date(dateValues[0])\r\n : new Date(dateValues[1]);\r\n return this.getFormattedDate(dateValue);\r\n } else {\r\n return '';\r\n }\r\n case GridFilterControlType.CHECKBOX:\r\n return filter.value ? true : false;\r\n default:\r\n return filter.value as string;\r\n }\r\n }\r\n\r\n checkValidity(columns: IGridColumn[], row: any){\r\n let isValid: boolean = true;\r\n columns.map((item: any) => {\r\n if (item.validations && !item.disabled) {\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\r\n const valid = item.validations && item.header\r\n if (\r\n item.validations[i].type == EGridValidator.REQUIRED &&\r\n !row[item.field] &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = row[item.field]\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINLENGTH &&\r\n row[item.field].length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXLENGTH &&\r\n row[item.field].length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] < item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXIMUM &&\r\n isValid \r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] > item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PATTERN &&\r\n !row[item.field].match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.NUMERIC &&\r\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PHONE &&\r\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.DECIMAL &&\r\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.EMAIL &&\r\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n row[item.field] &&\r\n row[item.field]?.toString().match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n // set basic filter value\r\n setBasicFilterValue(filter: any): any {\r\n if (filter instanceof Date) {\r\n return this.getFormattedDate(filter);\r\n } else if (typeof filter === 'boolean') {\r\n return filter ? 1 : 0;\r\n } else {\r\n return filter;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param param\r\n * Receives lazy event and returns sort array\r\n */\r\n getGridSorts(\r\n { multiSortMeta }: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridSort[] {\r\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\r\n field,\r\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\r\n priority: i + 1,\r\n tableAlias: this.setTableAlias(field, columns),\r\n }));\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Handles default and lookup filters\r\n */\r\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\r\n const filters: IGridFilter[] = [];\r\n Object.entries(event.filters).forEach(([field, value]: any) => {\r\n if (Array.isArray(value)) {\r\n (value as IGridFilter[]).forEach(\r\n ({ matchMode, operator, value: filter }) => {\r\n if (filter !== null) {\r\n filters.push({\r\n field,\r\n matchMode,\r\n operator,\r\n value: this.setBasicFilterValue(filter),\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n if (value.value !== '') {\r\n switch (typeof value.value) {\r\n case 'boolean':\r\n filters.push({\r\n field,\r\n matchMode: 'equals',\r\n operator: 'and',\r\n value: value.value ? 1 : 0,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'string':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'number':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'object':\r\n if (value.value instanceof Date) {\r\n filters.push({\r\n field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value:\r\n value.value instanceof Date\r\n ? this.getFormattedDate(value.value)\r\n : value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n } else {\r\n (value.value || []).forEach((x: any) => {\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: x.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n });\r\n }\r\n break;\r\n default:\r\n null;\r\n }\r\n }\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns page number\r\n */\r\n getGridPagination(event: any): number {\r\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\r\n }\r\n\r\n // get formatted date\r\n getFormattedDate(value: Date): string {\r\n return new Date(`${value} Z`).toISOString().slice(0, 10);\r\n }\r\n\r\n // add simple grid column without\r\n addColumn(columnInfo: addColumn): IGridColumn {\r\n if(columnInfo.type === EGridColumnType.DROPDOWN){\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n }\r\n const column: IGridColumn = {\r\n allowSearch: columnInfo.allowSearch,\r\n field: columnInfo.field,\r\n header: columnInfo.header,\r\n style: columnInfo.style,\r\n type: columnInfo.type,\r\n format: columnInfo.format,\r\n data: columnInfo.data,\r\n filtering: columnInfo.filtering,\r\n hidden: columnInfo.hidden,\r\n sorting: columnInfo.sorting,\r\n filter: columnInfo.filter,\r\n hyperlink: columnInfo.hyperlink,\r\n tableAlias: columnInfo.tableAlias,\r\n linkId: columnInfo.linkId,\r\n minutesInterval: columnInfo.minutesInterval,\r\n params: columnInfo.params,\r\n showOption: columnInfo.showOption,\r\n displayText: columnInfo.displayText,\r\n target: columnInfo.target,\r\n disabled: columnInfo.disabled,\r\n allowSave: columnInfo.allowSave,\r\n editable: columnInfo.editable, \r\n editLink: columnInfo.editLink,\r\n saveAsString: columnInfo.saveAsString,\r\n component: columnInfo.component,\r\n onClick: columnInfo.onClick,\r\n onReturn: columnInfo.onReturn,\r\n onFocusOut: columnInfo.onFocusOut,\r\n onChange: columnInfo.onChange,\r\n aggregate: columnInfo.aggregate,\r\n formatter: columnInfo.formatter,\r\n permissions: columnInfo.permissions,\r\n optionLabel: columnInfo.optionLabel,\r\n optionValue: columnInfo.optionValue,\r\n dropDownProp: columnInfo.dropDownProp,\r\n showTime: columnInfo.showTime,\r\n timeOnly: columnInfo.timeOnly,\r\n lookupControl: columnInfo.lookupControl,\r\n displayField: columnInfo.displayField,\r\n icon: columnInfo.icon,\r\n color: columnInfo.color,\r\n id: columnInfo.id,\r\n value: columnInfo.value,\r\n validations: columnInfo.validations,\r\n };\r\n\r\n return column;\r\n }\r\n \r\n // Adding Report Button Function for Grid\r\n addReportBtn(columnInfo: IGridReportBtn){ \r\n columnInfo.type = EGridColumnType.REPORT;\r\n return columnInfo;\r\n}\r\n\r\n // add simple input grid column\r\n addInputColumn(\r\n filterColumnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\r\n }\r\n return this.addColumn(filterColumnInfo);\r\n }\r\n\r\n // add simple numeric grid column without\r\n addNumericColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.NUMERIC;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple calendar grid column without\r\n addCalendarColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple boolean grid column without\r\n addBooleanColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.type = EGridColumnType.BOOLEAN,\r\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add LookUp Field for Grid\r\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add Button for grid column\r\n addButtonColumn(\r\n columnInfo: addColumn,\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.ADD_BUTTON;\r\n if (!columnInfo.field) {\r\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add AutoComplete for grid column\r\n addAutoComplete(columnInfo: addColumn): IGridColumn {\r\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // Search AutoComplete Data for Grid\r\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n column.data = this.setDataFields(response.records);\r\n });\r\n }\r\n\r\n\r\n // add simple dropdown grid column without\r\n addDropdownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n dropDownProp?: IDropDownRequest\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.DROPDOWN;\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\r\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (dropDownProp) {\r\n columnInfo.dropDownProp = dropDownProp;\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n }\r\n// add MultiSelectDropDown grid column\r\naddMultiSelectDropDownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n multiSelectProp?: IDropDownRequest\r\n): IGridColumn {\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n columnInfo.type = EGridColumnType.MULTISELECT;\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\r\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (multiSelectProp) {\r\n columnInfo.dropDownProp = multiSelectProp;\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n}\r\n\r\n showFilterIcon(columnInfo: addColumn){\r\n if(columnInfo.filter && columnInfo.filter.showFilter){\r\n return true; \r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n setDropdownData(\r\n column: IGridColumn,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any[],\r\n row?: {[key: string]: any}\r\n ): Promise <any> | any{\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\r\n .then((res: any) => {\r\n if(row){\r\n row[column.field+'_data'] = res;\r\n }else{\r\n column.data=res;\r\n if(column.filter && column.filter.type === \"dropdown\"){\r\n column.filter.data = res;\r\n }\r\n }\r\n return this.addColumn(column);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n\r\n // add grid column with built-in filter\r\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\r\n const column: any = {\r\n field: filterColumnInfo.field,\r\n header: filterColumnInfo.header,\r\n filter: { type: filterColumnInfo.filter },\r\n filtering: filterColumnInfo.filtering,\r\n hidden: filterColumnInfo.hidden,\r\n style: filterColumnInfo.style,\r\n tableAlias: filterColumnInfo.tableAlias,\r\n permissions: filterColumnInfo.permissions\r\n };\r\n\r\n return column;\r\n }\r\n\r\n // add date grid column with built-in filter\r\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\r\n const column: IGridColumn = {\r\n field: dateColumnInfo.field,\r\n header: dateColumnInfo.header,\r\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\r\n filtering: dateColumnInfo.filtering,\r\n filter: { type: GridFilterControlType.CALENDAR },\r\n format: dateColumnInfo.format,\r\n style: dateColumnInfo.style,\r\n tableAlias: dateColumnInfo.tableAlias,\r\n disabled: dateColumnInfo.disabled,\r\n allowSave: dateColumnInfo.allowSave,\r\n permissions: dateColumnInfo.permissions,\r\n component: dateColumnInfo.component,\r\n showTime: dateColumnInfo.showTime,\r\n timeOnly: dateColumnInfo.timeOnly,\r\n data: dateColumnInfo.data,\r\n hidden: dateColumnInfo.hidden,\r\n };\r\n return column;\r\n }\r\n\r\n setLookUpFilter(column: any, dialogService: any) {\r\n if (column.lookupControl) {\r\n let dataValue: any[]= [];\r\n let dataKey: any[] = [];\r\n let data = column.lookupControl?.data?.data;\r\n const keys = Object.keys(data);\r\n if (data && keys?.length > 0) {\r\n keys.forEach((key) => {\r\n if (data[key].toString().includes('{')) {\r\n dataValue.unshift(data[key]);\r\n dataKey.unshift(key);\r\n data[key] = '';\r\n }\r\n });\r\n }\r\n const ref = dialogService.open(\r\n column.lookupControl.component,\r\n column.lookupControl.data\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if (column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n if(dataKey?.length > 0 && dataValue?.length > 0){\r\n dataKey.forEach((key,keyIndex)=>{\r\n dataValue.forEach((value, valueIndex)=>{\r\n if(keyIndex === valueIndex){\r\n data[key] = value;\r\n }\r\n });\r\n });\r\n }\r\n if (res) {\r\n document.getElementById('lookUp_filter')?.focus();\r\n let field = column.field;\r\n let value =utilities.setDialogResponse(\r\n column,\r\n column?.lookupControl,\r\n res\r\n );\r\n column.value = value?.value ? value.value : res[field.toLowerCase()];\r\n }\r\n },\r\n ({ error }:any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n // Set Hyperlink field as a param Value\r\n setFieldAsLinkParam(columns: any, field: string, response: any) {\r\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\r\n this.setDataFields(response.records).forEach((res: any) => {\r\n let obj = columns.find((x: any)=> x.field === field);\r\n if(obj && obj.params){\r\n const keys = Object.keys(obj.params)\r\n keys.forEach((key: any)=>{\r\n if(obj.params[key] && obj.params[key].toString().includes('{')){\r\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\r\n obj.params[key] = res[value];\r\n }\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\r\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \r\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\r\n }\r\n\r\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\r\n columns.forEach((column)=>{\r\n if(column.type === EGridColumnType.DIALOG && !column.data){\r\n this.alertService.error(`\"Data\" property is missing for \"${column.header}\" column`);\r\n }\r\n })\r\n let records: any = [];\r\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\r\n let newRow:any;\r\n\r\n return this.hyperlinkService\r\n .addHyperlinks(columns).then((linksResponse: any) => {\r\n data.forEach((row: any) => {\r\n newRow = { ...row };\r\n columns.forEach((col: any) => {\r\n let keys = Object.keys(row);\r\n if(col.type === EGridColumnType.DIALOG){\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n if(col.format && newRow[field].displayText){\r\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\r\n }\r\n if (col.data && col.data.data){\r\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\r\n }\r\n }\r\n linksResponse.forEach((linkResponse: any) => {\r\n if (\r\n (col.type === EGridColumnType.LINK ||\r\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\r\n col.linkId &&\r\n col.params &&\r\n col.linkId === linkResponse.linkId\r\n ) {\r\n const paramKeys: string[] = Object.keys(col.params);\r\n const link: any = utilities.setHyperlink(\r\n keys,\r\n row,\r\n linkResponse.url,\r\n paramKeys,\r\n col.params\r\n );\r\n\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].hyperlink = link;\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n }\r\n });\r\n });\r\n records.push(newRow);\r\n });\r\n return records;\r\n });\r\n }\r\n\r\n // add grid global filter with built-in filter\r\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\r\n const column: addGlobalFilter = {\r\n field: globelFilterInfo.field,\r\n displayText: globelFilterInfo.displayText,\r\n validations: globelFilterInfo.validations,\r\n type: globelFilterInfo.type,\r\n data: globelFilterInfo.data,\r\n value: globelFilterInfo.value,\r\n valueTwo: globelFilterInfo.valueTwo,\r\n matchMode: globelFilterInfo.matchMode,\r\n operator: globelFilterInfo.operator,\r\n tableAlias: globelFilterInfo.tableAlias,\r\n optionLabel: globelFilterInfo.optionLabel,\r\n optionValue: globelFilterInfo.optionValue,\r\n onFocusOut: globelFilterInfo.onFocusOut,\r\n filtering: globelFilterInfo.filtering,\r\n column: globelFilterInfo.column,\r\n dayRange: globelFilterInfo.dayRange,\r\n fromField: globelFilterInfo.fromField,\r\n toField:globelFilterInfo.toField,\r\n lookupControl: globelFilterInfo.lookupControl,\r\n allowSearch: globelFilterInfo.allowSearch,\r\n disabled: globelFilterInfo.disabled,\r\n hidden: globelFilterInfo.hidden,\r\n labelText: globelFilterInfo.labelText,\r\n prefix: globelFilterInfo.prefix,\r\n color: globelFilterInfo.color,\r\n format: globelFilterInfo.format,\r\n };\r\n return column;\r\n }\r\n\r\n // add global input filter\r\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add global dropdown filter\r\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n let sorts= dropDownProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n // add global MultiSelect dropdown filter\r\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\r\n if (multiSelectProp) {\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n let sorts = multiSelectProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters, \r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n \r\n \r\n\r\n\r\n getDropdownData(\r\n fieldInfo: any,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any,\r\n sorts: IGridSort[] = []\r\n ) {\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addGlobalFilter(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n // add global filter Space Field\r\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.SPACER;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n}\r\n\r\n // add global boolean filter\r\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric Range Filter for global Filter\r\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric input for global Filter\r\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\r\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add LookUp Field for global Filter\r\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n setDataFields(response: any, dataKey: string = \"\") {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n if(Object.keys(x ?? {})?.length > 0){\r\n const result:any = Object.keys(x)?.reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\r\n {\r\n result[dataKey] = index;\r\n }\r\n \r\n data.push(result);\r\n }\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n setColumnFields(columns: any[]) {\r\n let column: any = [];\r\n if (columns && columns.length > 0) {\r\n columns.map((col: any) => {\r\n column.push({ ...col, field: col?.field?.toLowerCase() });\r\n });\r\n return column;\r\n }\r\n }\r\n\r\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\r\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\r\n if (columns && columns.length > 0) {\r\n columns.forEach((column: any) => {\r\n if (column.field?.toLowerCase() === field.toLowerCase()) {\r\n column.linkId = linkId;\r\n if(params){\r\n column.params = params;\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\r\n if(changeLink){\r\n delete res[0][field.toLowerCase()+'_obj'];\r\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\r\n if(index !== -1){\r\n if(users[index][field+'_obj']){\r\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\r\n }\r\n }\r\n } \r\n });\r\n }\r\n\r\n // set grid data and set selected row based on selection value\r\n setDataWithSelectedRow(records: any, configData: any) {\r\n if (configData?.selectedValue && configData.data.selection) {\r\n records.forEach((record: any) => {\r\n Object.keys(record)?.forEach((key) => {\r\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\r\n if(configData.data.value && record[key] === configData.data.value){\r\n record['highlightRow'] = true;\r\n } else if(record[key] === configData.data.selection){\r\n record['highlightRow'] = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return records;\r\n }\r\n\r\n setTableAlias(field: string, columns: IGridColumn[]) {\r\n if (columns && columns.length > 0) {\r\n const column = columns.find(\r\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\r\n );\r\n\r\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\r\n return column.tableAlias;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n setGridPropValues(\r\n columns: IGridColumn[],\r\n props: IGridProp[],\r\n filter?: IGridPropFilter,\r\n records?: any[],\r\n ) {\r\n if (columns && columns.length > 0 && props && props.length > 0) {\r\n let isMatched: boolean = false;\r\n if (filter && filter.field && records && records.length > 0) {\r\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\r\n }\r\n props.map((prop: IGridProp) => {\r\n let col: any = {};\r\n if (prop.field && !isMatched && !filter?.field) {\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n } else if (isMatched) {\r\n if(prop.field){\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n }else {\r\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\r\n }\r\n }\r\n if (col && col.hasOwnProperty(prop.name)) {\r\n col[prop.name] = prop.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // set grid row propValues\r\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\r\n props?.forEach((prop)=>{\r\n if(prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '') && prop.field){\r\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\r\n if(fieldName){\r\n if(row[fieldName]?.action){\r\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\r\n }else{\r\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\r\n }\r\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\r\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\r\n };\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n // remove the rowActions from the records\r\n removeRowActions(records){\r\n if(records?.length > 0){\r\n records.forEach((row)=>{\r\n if(row.rowAction){\r\n delete row['rowAction'];\r\n }\r\n })\r\n }\r\n return records;\r\n }\r\n}","export interface IUserInfo {\r\n id: number;\r\n username: string;\r\n isADUser: boolean;\r\n token: string;\r\n activities: string[];\r\n roles: IUserRole[];\r\n }\r\n \r\n export interface IUserRole {\r\n id: number;\r\n code: string;\r\n name: string;\r\n description: string;\r\n }\r\n \r\n export interface IPermission {\r\n type: EPermissionType;\r\n roles: string[];\r\n }\r\n \r\n export enum EPermissionType {\r\n EDIT = 'edit',\r\n VIEW = 'view',\r\n DELETE = 'delete',\r\n ADDROW = 'addRow',\r\n }\r\n ","import { Injectable } from '@angular/core';\r\nimport { IUserInfo } from '../models/user-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n userInfoKey: string = 'CurrentUserInfo';\r\n\r\n login(response: any): boolean {\r\n if (response) {\r\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getUserInfo() {\r\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\r\n }\r\n\r\n getUserRoles() {\r\n let roles: any = [];\r\n let userInfo: IUserInfo = this.getUserInfo();\r\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\r\n roles = userInfo.roles.map((x) => x.name);\r\n }\r\n return roles;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.getUserInfo() ? true : false;\r\n }\r\n\r\n logout() {\r\n // setting Function for removing the Grid Filters When User logout. \r\n let keys = Object.keys(localStorage);\r\n if(keys && keys.length > 0){\r\n keys.forEach((key)=>{\r\n if(key.includes('SetFilters-')){\r\n localStorage.removeItem(key);\r\n }\r\n });\r\n }\r\n // removing the UserName & Password When User logout.\r\n localStorage.removeItem(this.userInfoKey);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-iframe',\r\n templateUrl: './iframe.component.html',\r\n styleUrls: ['./iframe.component.scss']\r\n})\r\nexport class IframeComponent implements OnInit,OnDestroy {\r\n url: any;\r\n id:string='';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadIFrameData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.id){\r\n const url: any = document.getElementById(this.id);\r\n this.ref.close(url.contentWindow.location.href);\r\n }\r\n }\r\n\r\n loadIFrameData(){\r\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.config.data.value\r\n );\r\n this.id = this.config.data.iFrameId;\r\n\r\n }\r\n }\r\n\r\n iframeLoaded(){\r\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\r\n\r\n if(iframeEl){\r\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\r\n }\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageLoggerService {\r\n\r\n constructor(private requestService: RequestService) { }\r\n \r\n // save page logger info\r\n savePageLoggerInfo(currentRoute, componentName: string = '') {\r\n this.requestService\r\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\r\n .subscribe(\r\n (data) => {\r\n return data;\r\n },\r\n (error) => {}\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n Optional,\r\n ElementRef,\r\n ViewChildren,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport {\r\n DynamicDialogRef,\r\n DynamicDialogConfig,\r\n DialogService,\r\n} from 'primeng/dynamicdialog';\r\nimport { saveAs } from 'file-saver';\r\nimport jsPDF from 'jspdf';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport {\r\n IGridColumn,\r\n IGridSort,\r\n IGridServerSideEvent,\r\n IGridPaginationEvent,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridColumnAction,\r\n IGridRowAction,\r\n EGridSelectionType,\r\n EGridColumnType,\r\n EGridSortDirection,\r\n IGridDataExport,\r\n EGridAggregate,\r\n ILookupValue,\r\n EGridFormatType,\r\n IGridFilterInfo,\r\n} from '../../../models/grid.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { Table } from 'primeng/table';\r\nimport { EFormatType } from '../../../models/form.model';\r\nimport { Router } from '@angular/router';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n})\r\nexport class GridComponent implements OnInit, OnChanges {\r\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\r\n @Output() inlineRowCancel = new EventEmitter();\r\n @Input() set activeTestMode(val: any) {\r\n if (val === true) {\r\n debugger;\r\n }\r\n }\r\n serverFilters: IGridServerSideEvent = {};\r\n rowsData: any[];\r\n rowsDataCopy: any[] = [];\r\n roles: string[] = [];\r\n isColumnHidden: boolean = false;\r\n rowClickData: IGridColumn;\r\n componentTableRef: any;\r\n lookupObject: ILookupValue;\r\n lookupFilterObj: any;\r\n lookupBlur: boolean = true;\r\n globalFiltersArray: any[] = [];\r\n checkAction: boolean = false;\r\n calenderPreviousValue: string = '';\r\n gridFilterObj: IGridFilterInfo;\r\n defaultDate: any;\r\n dropDownFilter: any = {};\r\n dropdownInput: boolean = false;\r\n saveAllRecord: boolean = false;\r\n editAllRecord: boolean = false;\r\n cancelAllRecords: boolean = false;\r\n addNewRowCheck: boolean = false;\r\n inEditMode: boolean = false;\r\n saveRecordArray: any[] = [];\r\n disabledSaveBtn:boolean = false;\r\n\r\n editModeChecked: boolean = true;\r\n editModeunCkecked: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n setDropdownFilter:boolean = true;\r\n\r\n // apply checked/unChecked prop for CheckBox of the Table\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n hideEditAllRowsBtn: boolean = true;\r\n\r\n //apply Add/Delete/Edit prop for the grid permission\r\n addRowPermission: boolean = true;\r\n deleteRowPermission: boolean = true;\r\n editRowPermission: boolean = true;\r\n\r\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\r\n setAggregateFooter: string = '';\r\n\r\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\r\n aggregateFooter: boolean = false;\r\n\r\n // Maintains previous state of rows being edited\r\n editRowsRecords: { [key: string]: any } = {};\r\n\r\n // Maintains record of rows being edited\r\n editingRowKeys: { [key: string]: any } = {};\r\n\r\n @ViewChild('dt') table: Table;\r\n\r\n // Selects items in the grid based on passed on data\r\n @Input() selectedRows: any = [];\r\n\r\n private globalData: IGridFilter[] = [];\r\n\r\n sortDisabled: boolean = false;\r\n\r\n // Stores selected columns\r\n private _selectedColumns: IGridColumn[] = [];\r\n\r\n // Boolean prop to allow horizontal Scroll on Table.\r\n @Input() horizontalScroll: boolean = false;\r\n\r\n // Prop to handle loader of grid\r\n @Input() public loading = false;\r\n\r\n //this property is used to handle server side event by default it is true when it false server side event will not be called\r\n @Input() autoLoadData: boolean = true;\r\n\r\n // Boolean prop to check where selected is allowed or not.\r\n @Input() allowSelection = false;\r\n\r\n // Set column width of selected row.\r\n @Input() selectionColumnWidth: string = '80px';\r\n \r\n // Boolean prop to hide the add row button.\r\n @Input() hideOnRowAddBtn = false;\r\n\r\n // Boolean prop to allow export to pdf.\r\n @Input() allowExportToPdf = false;\r\n\r\n // Boolean prop to allow export to excel.\r\n @Input() allowExportToExcel = false;\r\n \r\n // Boolean prop to set the action column as first column.\r\n @Input() setActionColumnAsFirst = false;\r\n\r\n // If true, enables options to perform CRUD using inline row functionality\r\n @Input() useInlineCRUD = false;\r\n\r\n // Array of row actions\r\n @Input() rowActions: IGridRowAction[] = [];\r\n\r\n // Sets selection type i.e: single/multiple selection\r\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\r\n\r\n // Unique key requires for built-in row selection of primeNg grid\r\n @Input() dataKey: string = 'id';\r\n\r\n // Flag for clear filter values button\r\n @Input() clearGridFilter = true;\r\n\r\n // Flag for search filter values button\r\n @Input() searchGridFilter = true;\r\n\r\n // Flag in case table is scrollable\r\n @Input() scrollable = true;\r\n\r\n // Sets scroll height for the table\r\n @Input() scrollHeight = '680px';\r\n\r\n // Boolean prop to allow to wrap or unWrap the grid.\r\n @Input() wordWrap: boolean = false;\r\n\r\n @Input() newGridRow: any = {};\r\n\r\n @Input() filtering = true;\r\n\r\n @Input() rowHover: boolean = false;\r\n\r\n @Input() hideFilterOptions: boolean = false;\r\n\r\n // Sets pagenation for the table Data.\r\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\r\n\r\n // set the change in the rowData\r\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Stops the loader and sets the data to grid\r\n * Clears the editing stack\r\n * Scrolls to selected element if selection found\r\n */\r\n @Input() set rows(data: any[]) {\r\n this.loading = false;\r\n if (data && data.length > 0) {\r\n if (!this.dataKey) {\r\n this.dataKey = 'id';\r\n }\r\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\r\n } else {\r\n this.rowsData = [];\r\n }\r\n\r\n // Cleaning the editing stack\r\n this.editingRowKeys = {};\r\n this.editRowsRecords = {};\r\n\r\n setTimeout(() => {\r\n if (data && data.length > 0 && this.selectedRows) {\r\n const selectedElementRef = this.gridRow.find(\r\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\r\n );\r\n selectedElementRef &&\r\n (\r\n selectedElementRef.nativeElement as HTMLTableRowElement\r\n ).scrollIntoView({ behavior: 'smooth' });\r\n }\r\n }, 0);\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, {}, false);\r\n }\r\n });\r\n }\r\n //manipulate checkbox string value to true and false.\r\n this.changeCheckboxStringValue();\r\n }\r\n\r\n // Global filter server request\r\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\r\n this.globalData = this.gridService\r\n .prepareGlobalFilters(globalFilters)\r\n ?.filter((x) => x?.value !== false);\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = this.serverFilters.filters\r\n ? this.serverFilters.filters.concat(this.globalData)\r\n : this.globalData;\r\n\r\n if (localStorage.getItem('applyFilter') === 'false') {\r\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\r\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\r\n : this.globalFiltersArray;\r\n }\r\n if (localStorage.getItem('applyFilter') === 'true') {\r\n globalFilters.forEach((globalFilter) => {\r\n this.globalFiltersArray.forEach((filterArray) => {\r\n if (\r\n filterArray.field === globalFilter.field &&\r\n globalFilter.value &&\r\n filterArray.value !== globalFilter.value\r\n ) {\r\n filterArray.value = globalFilter.value;\r\n }\r\n const findIndex = this.globalFiltersArray.findIndex(\r\n (index) => index.field === globalFilter.field && !globalFilter.value\r\n );\r\n if (findIndex !== -1) {\r\n this.globalFiltersArray.splice(findIndex, 1);\r\n }\r\n });\r\n });\r\n\r\n this.loading = this.autoLoadData;\r\n setTimeout(() => {\r\n if(this.gridService.applyFilterEvent || this.autoLoadData){\r\n this.onApplyFilter.emit();\r\n }\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n serverFilterValues.filters = serverFilterValues.filters.concat(\r\n this.globalFiltersArray\r\n );\r\n }\r\n serverFilterValues.filters = Array.from(\r\n new Set(\r\n serverFilterValues.filters\r\n .reverse()\r\n .map((filter: any) => filter.field)\r\n )\r\n ).map((field) => {\r\n return serverFilterValues.filters.find((x: any) => x.field === field);\r\n });\r\n serverFilterValues.filters = serverFilterValues.filters.filter(\r\n (obj: any) =>\r\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\r\n );\r\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\r\n // setting pagination page as first\r\n serverFilterValues.page = 1;\r\n if(this.defaultRows && this.pagination){ \r\n serverFilterValues.pageSize = this.defaultRows;\r\n }\r\n if(this.gridService.applyFilterEvent){\r\n this.onServerSideEventChange.emit(serverFilterValues)\r\n }\r\n localStorage.removeItem('applyFilter');\r\n // setting pagination page number UI\r\n this.table._first = 0;\r\n }\r\n }, 300);\r\n }\r\n }\r\n\r\n // Input decorator to receive columns to be displayed in header\r\n @Input() columns: IGridColumn[] = [];\r\n\r\n @Input() permissions: IPermission[] = [];\r\n\r\n // Optional prop to handle toggling of columns\r\n @Input() allowColumnToggle = false;\r\n\r\n // Optional prop to hide filtering of columns\r\n @Input() hideFilter = false;\r\n\r\n // Optional prop to handle lookup filters\r\n @Input() lookupFilters = false;\r\n\r\n // Optional prop to handle pagination\r\n @Input() pagination = false;\r\n\r\n // Optional prop to handle show CurrentPage Report\r\n @Input() showCurrentPageReport = false;\r\n\r\n // Displays total number of records\r\n @Input() totalRecords = 0;\r\n\r\n @Input() showconfirmDialog: boolean = true;\r\n\r\n // Sets number of rows to be shown the grid\r\n @Input() defaultRows: number;\r\n\r\n @Input() columnActions: IGridColumnAction[] = [];\r\n\r\n // Decides the grid's behavior either for client side or server side events\r\n @Input() useServerSideEvents = false;\r\n\r\n // Output event to handle row click\r\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event emit when click on grid checkbox filter\r\n @Output() onCheckBoxFilterClick: EventEmitter<any>= new EventEmitter();\r\n\r\n // Output event to handle row CheckBox\r\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to trigger on sort change\r\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\r\n\r\n // Output event to trigger on filter change\r\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to invoke the multiSelection click event\r\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a grid and globalFilters called\r\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\r\n\r\n //set header checkbox value for getting all columns on stay admin\r\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a lazy event is dispatched\r\n @Output()\r\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\r\n new EventEmitter();\r\n\r\n // Output event to trigger on pagination\r\n @Output()\r\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\r\n\r\n // Dispatch output event trigger on edit row\r\n @Output() onRowUpdate = new EventEmitter();\r\n\r\n // Dispatch output event trigger cancel all rows\r\n @Output() onCancelAllRows = new EventEmitter();\r\n\r\n // Dispatch output event trigger on delete row\r\n @Output() onRowDelete = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add row\r\n @Output() onRowAdd = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add, update and delete row\r\n @Output() onGridRowActions = new EventEmitter();\r\n\r\n // set property allowCaching for LocalStorage\r\n @Input() allowCaching: boolean;\r\n\r\n // set property softCaching for setting the values of gridFilter\r\n @Input() softCaching: boolean = true;\r\n \r\n @Input() editAllRows: boolean = false;\r\n\r\n // set the row When Edit the row on Grid\r\n @Output() onGridRowEdit = new EventEmitter();\r\n\r\n // set the row When adding the new Row on Grid\r\n @Output() onGridRowAdd = new EventEmitter();\r\n\r\n isGridHidden: boolean = false;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private alertService: AlertService,\r\n private authService: AuthenticationService,\r\n private elementRef: ElementRef,\r\n public decimalPipe: DecimalPipe,\r\n private pageLoggerService: PageLoggerService,\r\n private cd: ChangeDetectorRef,\r\n private router: Router,\r\n private datePipe: DatePipe,\r\n public confirmationService: ConfirmationService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n get selectedColumns(): IGridColumn[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: IGridColumn[]) {\r\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\r\n }\r\n\r\n // browser close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.editAllRows){\r\n this.disabledSaveBtn = true;\r\n }\r\n \r\n this.componentTableRef = this.table;\r\n setTimeout(() => {\r\n this.setNumericValues();\r\n }, 500);\r\n }\r\n\r\n // apply user role permissions on grid columns\r\n applyColumnsPermissions() {\r\n if (this.columns) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.columns.forEach((column: any) => {\r\n let permissions: IPermission[] = column.permissions;\r\n // if (!permissions) permissions = this.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n // else {\r\n // let index = this.columns.findIndex(\r\n // (i) => i.field === column.field\r\n // );\r\n // if (index !== -1) {\r\n // this.columns.splice(index, 1);\r\n // }\r\n // }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n column.disabled = true;\r\n } else {\r\n column.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n column.hidden = false;\r\n column.disabled = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (column.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n // apply global permissions on entire grid\r\n applyGridPermissions() {\r\n if (this.permissions && this.permissions.length > 0) {\r\n let hasValidEditPermission = false;\r\n\r\n // check if any column has any permission\r\n let hasColumnPermissions = this.columns?.some(\r\n (x) => x?.permissions && x.permissions.length > 0\r\n );\r\n\r\n this.permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n this.useInlineCRUD = true;\r\n if (!isValid && !hasColumnPermissions) {\r\n this.isGridHidden = true;\r\n this.useInlineCRUD = false;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\r\n this.isGridHidden = false;\r\n hasValidEditPermission = true;\r\n this.editRowPermission = false;\r\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\r\n this.deleteRowPermission = false;\r\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\r\n this.addRowPermission = false;\r\n }\r\n });\r\n }\r\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\r\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\r\n }\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.allowCaching !== false && this.pagination) {\r\n this.allowCaching = this.pagination;\r\n } else {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n }\r\n // add defaultRow in pagination array\r\n if (!this.setPaginationLength.includes(this.defaultRows)) {\r\n this.setPaginationLength.unshift(this.defaultRows);\r\n }\r\n const hasColumns: boolean = this.columns && this.columns.length > 0;\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions on grid columns\r\n this.applyColumnsPermissions();\r\n\r\n // apply global permissions on entire grid\r\n this.applyGridPermissions();\r\n\r\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\r\n this.cd.detectChanges();\r\n\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n // checking filter exist or not\r\n const filter = this._selectedColumns.some(\r\n (column) => column.filtering === undefined || column.filtering === true\r\n );\r\n if (filter === false) {\r\n this.hideFilter = true;\r\n }\r\n\r\n this.columns.forEach((column: any) => {\r\n // convert string time into the date\r\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\r\n this.rowsData.forEach((row) => {\r\n if (\r\n row[column.field] &&\r\n (row[column.field].toString().includes('PM') ||\r\n row[column.field].toString().includes('AM'))\r\n ) {\r\n row[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n });\r\n }\r\n // set filter value\r\n if (column.filter && column.value && column.filtering !== false) {\r\n this.setFilterFocusOut(column);\r\n }\r\n // add \"flex-shrink: 0\" for flex-basis Style\r\n if (column.style && column.style.includes('flex-basis')) {\r\n let style = column.style + ' !important; flex-shrink: 0 !important';\r\n column.style = style.includes(';;')\r\n ? style.replace(';;', ';')\r\n : style;\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n this.setDisplayTextValue(column);\r\n\r\n //Aggregate scenario\r\n if (column.aggregate && column.aggregate.length > 0) {\r\n this.aggregateFooter = true;\r\n this.setAggregateText(column);\r\n }\r\n\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(\r\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\r\n );\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (\r\n !this.hideFilter &&\r\n searchFilters &&\r\n searchFilters.filters &&\r\n searchFilters.filters.length > 0\r\n ) {\r\n searchFilters.filters.forEach((x: any) => {\r\n if (x.value && x.field === column.field) {\r\n if(column?.filter?.type === 'calendar'){\r\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\r\n }else{\r\n column.value = x.value;\r\n }\r\n }\r\n });\r\n }\r\n // converting displayField toLowercase\r\n if (column.displayField) {\r\n column.displayField = column.displayField.toLowerCase();\r\n }\r\n // set AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n this.rowsData &&\r\n this.rowsData.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n // convert string that contains comma into arrays\r\n if (\r\n row[column.field] &&\r\n row[column.field]?.toString().includes(',')\r\n ) {\r\n row[column.field] = row[column.field]\r\n ?.toString()\r\n .split(',')\r\n ?.map((value: any) => ({ [column.displayField]: value }));\r\n }\r\n\r\n const key: any = Object.keys(row).find(\r\n (x) => x === column.field.toLowerCase()\r\n );\r\n // convert simple string into array\r\n if (!Array.isArray(row[key]) && row[key]) {\r\n row[key] = [{ [column.displayField]: row[key] }];\r\n }\r\n });\r\n }\r\n\r\n //when we add a new row, it set the default value\r\n if (column.value && Object.keys(this.newGridRow).length > 0) {\r\n const key = Object.keys(this.newGridRow).find(\r\n (x) => x === column.field\r\n );\r\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\r\n this.newGridRow[key] = column.value;\r\n }\r\n }\r\n });\r\n\r\n // Searching scenario\r\n if (change.rows?.currentValue && change.columns?.currentValue) {\r\n // Checks either column value is changes (i.e., column hidden scenario)\r\n if (\r\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\r\n JSON.stringify(this.columns).toLowerCase()\r\n ) {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n } else {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const classElement = document.getElementsByClassName('highlighted-row');\r\n if (classElement.length > 0) {\r\n classElement[0].scrollIntoView();\r\n }\r\n\r\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \r\n this.editAllRowsAtOnce();\r\n }\r\n }, 500);\r\n }\r\n const globalSearchbtn = document.getElementById('globalSearchbtn');\r\n if (globalSearchbtn) {\r\n this.searchGridFilter = false;\r\n }\r\n if(this.rowsData?.length > 0){\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n }\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n setDisplayTextValue(column: IGridColumn) {\r\n this.rowsData?.forEach((row) => {\r\n if (\r\n column.type === EGridColumnType.LINK ||\r\n EGridColumnType.DIALOG ||\r\n EGridColumnType.IFRAME\r\n ) {\r\n const field = row[column.field + '_obj'];\r\n if (column.displayText && column.displayText.includes('{')) {\r\n const displayText = column.displayText\r\n .replace('{', '')\r\n .replace('}', '');\r\n if (displayText && field) {\r\n field.displayText = row[displayText.toLowerCase()];\r\n }\r\n } else if (column.displayText && field) {\r\n field.displayText = column.displayText;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // change row key and value when using setGridRowPropValue function\r\n setRowValue(rowData: any) {\r\n Object.keys(rowData)?.forEach((row) => {\r\n if (\r\n rowData[row] &&\r\n this.typeOf(rowData[row]) === 'object' &&\r\n rowData[row]?.action?.field\r\n ) {\r\n if(rowData[row]?.extraField){\r\n delete rowData[row];\r\n } else {\r\n rowData[row] = rowData[row]?.text;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setNumericMinMxFraction(column: any) {\r\n let digitInfo = '2';\r\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\r\n digitInfo = '0'\r\n }else if(column?.format?.formatParams?.digitsInfo){\r\n digitInfo = column.format.formatParams.digitsInfo;\r\n }\r\n return digitInfo;\r\n }\r\n\r\n // set the format of currency && number && decimal && percent\r\n setNumericFormat(column: any, row: any) {\r\n row = utilities.objConvertToLower(row);\r\n let value: any = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField.toLowerCase()]\r\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \r\n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\r\n if (this.typeOf(value) === 'number' && value === 0) {\r\n value = value.toString();\r\n }\r\n let formatParams = column.format?.formatParams;\r\n let digitsInfo = formatParams?.digitsInfo;\r\n if (column.format && value) {\r\n switch (column.format?.type) {\r\n case EGridFormatType.CURRENCY:\r\n value = new Intl.NumberFormat(\r\n formatParams?.locale ? formatParams.locale : 'en-US',\r\n {\r\n style: 'currency',\r\n currency: formatParams?.currency ? formatParams.currency : 'USD',\r\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\r\n }\r\n )?.format(value);\r\n break;\r\n case EGridFormatType.DECIMAL:\r\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\r\n break;\r\n case EGridFormatType.PERCENT:\r\n if(!column.format?.formatParams?.allowCalculate){\r\n value = value+'%';\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n //Change dropdown vlue based on option label and optionvalue\r\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n this.rowsData.forEach((row) => {\r\n if (Object.keys(row)?.find((key) => key === column.field)) {\r\n if (column) {\r\n column.optionLabel = column.optionLabel\r\n ? column.optionLabel\r\n : 'label';\r\n column.optionValue = column.optionValue\r\n ? column.optionValue\r\n : 'value';\r\n }\r\n const value = column.data?.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\r\n if (value && editedRow) {\r\n row[column.field] = value[column.optionLabel];\r\n }else if(value && change === false){\r\n row[column.field] = value[column.optionLabel];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //manipulate checkbox string value to true and false.\r\n changeCheckboxStringValue() {\r\n if (\r\n this.columns &&\r\n this.rowsData &&\r\n this.rowsData.length > 0 &&\r\n this.columns.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.BOOLEAN) {\r\n if (\r\n (typeof (row[column.field] === 'string') &&\r\n (row[column.field] === '1' || row[column.field] === '0')) ||\r\n row[column.field] === 'Y' ||\r\n row[column.field] === 'N'\r\n ) {\r\n row[column.field] =\r\n row[column.field] === '1' || row[column.field] === 'Y'\r\n ? true\r\n : false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowData\r\n * Passes data of clicked row to parent\r\n */\r\n handleRowClick(rowData: any) {\r\n this.rowClickData = rowData;\r\n this.onRowClick.emit(rowData);\r\n }\r\n\r\n /**\r\n *\r\n * @param columnData\r\n * Passes sorting information to parent on sort change\r\n */\r\n handleSortChange(event: any) {\r\n let sortDirection = null;\r\n let sortField: string = '';\r\n if (event.multisortmeta && event.multisortmeta[0].order) {\r\n sortDirection =\r\n event.multisortmeta[0].order == 1\r\n ? EGridSortDirection.ASC\r\n : EGridSortDirection.DESC;\r\n sortField = event.multisortmeta[0].field;\r\n }\r\n let sorts: IGridSort = {\r\n field: sortField,\r\n direction: sortDirection as EGridSortDirection,\r\n priority: 0,\r\n };\r\n this.onSortChange.emit(sorts);\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Passes applied filters to parent on filter change\r\n */\r\n handleFilterChange(event: any) {\r\n this.columns.forEach((filter: any) => {\r\n if (!event.filters[filter.field]?.value) {\r\n filter.value = '';\r\n }\r\n });\r\n this.onFilterChange.emit(event);\r\n }\r\n\r\n /**\r\n *\r\n * @param event : Event\r\n * @param columnAction : IGridColumnAction\r\n * @param row : any\r\n * Stop the click event propagation to parent\r\n * Callbacks the row data to parent\r\n */\r\n\r\n /**\r\n * invoke onClick event & open Iframe in grid\r\n */\r\n gridIFrame(column: any, rows: any, row: any) {\r\n this.onClickEvent(column, row);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: column.header,\r\n width: '80%',\r\n height: '80%',\r\n data: {\r\n value: rows,\r\n iFrameId: column.displayText ? column.displayText : column.field,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n } else if (res && column.onChange) {\r\n column.onChange(res);\r\n }\r\n });\r\n }\r\n\r\n addNewRow(row: any, addRow: boolean = false) {\r\n this.componentTableRef = this.table;\r\n this.columns.forEach((column) => {\r\n if (\r\n column.filter &&\r\n column.component &&\r\n column.filter.type === 'calendar'\r\n ) {\r\n if (addRow) {\r\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\r\n } else {\r\n row[column.field + '_secondType'] = EGridColumnType.DATE;\r\n }\r\n }\r\n });\r\n this.rowClickData = row;\r\n this.addNewRowCheck = true;\r\n this.dropdownInput = false;\r\n this.sortDisabled = true;\r\n this.onGridRowAdd.emit(row);\r\n }\r\n\r\n /**\r\n * open Dialog in grid\r\n */\r\n setDialogData:boolean = true;\r\n openGridDialog(column: IGridColumn | any, row: any) {\r\n this.onClickEvent(column, row);\r\n setTimeout(() => {\r\n if(this.setDialogData){\r\n column['parentDialogData'] = column.data.data;\r\n this.setDialogData = false;\r\n }\r\n if(column.data && column.data.data && row[column.field + '_obj']){\r\n column.data.data = row[column.field + '_obj']?.dialogData;\r\n }\r\n if (column.component && column.data && this.rowClickData) {\r\n const keys = Object.keys(this.rowClickData);\r\n column.data.data = utilities.autoSetLookupData(\r\n column.parentDialogData,\r\n this.rowClickData\r\n );\r\n const ref = this.dialogService.open(column.component, column.data);\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((data: any) => {\r\n if (data && column.onReturn) {\r\n column.onReturn(data, this.rowClickData);\r\n } else if (data) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(data);\r\n }\r\n }\r\n });\r\n }\r\n }, 10);\r\n }\r\n\r\n browserCloseEvent(event: boolean = false){\r\n this.gridService.columnFocusedOut = event;\r\n }\r\n\r\n setMultiSelectData(column: IGridColumn, selectedValue:any){\r\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\r\n if(selectedValue && selectedValue?.toString()?.includes(',')){\r\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\r\n }else{\r\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\r\n }\r\n }\r\n return selectedValue;\r\n }\r\n\r\n /**\r\n * return conditional base value and title\r\n */\r\n setConditionBaseValue(row: any, column: any) {\r\n delete row['undefined'];\r\n let value:any;\r\n if(column.type == EGridColumnType.DATE){\r\n let newValue:any;\r\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\r\n newValue = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.field?.toLowerCase()]?.text\r\n } else {\r\n newValue = row[column.field];\r\n }\r\n\r\n if(newValue){\r\n if(column.timeOnly){\r\n value = this.setTimeFormat(newValue);\r\n } else {\r\n let format = '';\r\n if(column.format){\r\n if(column.format === EGridFormatType.SMALLDATE){\r\n format = 'MM/dd/yy';\r\n }else if(column.format === EGridFormatType.SHORTDATE){\r\n format = 'MM/dd/yyyy';\r\n }\r\n }\r\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\r\n }\r\n }\r\n } else {\r\n value = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField?.toLowerCase()]\r\n : row[column.field + '_obj'] &&\r\n row[column.field + '_obj'].displayText === null\r\n ? ''\r\n : row[column.field + '_obj']?.displayText\r\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \r\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \r\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\r\n : row[column.field + '_obj'].displayText\r\n : column.displayText\r\n ? column.displayText\r\n : row[column.field];\r\n }\r\n \r\n return value;\r\n }\r\n\r\n setDropdwonReadOnlyValue(row: any, column: any){\r\n delete row['undefined'];\r\n const value = row[column.displayField]\r\n ? row[column.displayField]\r\n : row[column.field];\r\n return value;\r\n }\r\n\r\n /**\r\n * open Delete Confirmation dialog when click on delete icon in Action column\r\n */\r\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\r\n event.stopPropagation();\r\n if (columnAction.tooltip.toLowerCase() === 'delete') {\r\n if (columnAction.confirmDialog === false) {\r\n columnAction.onClick(row);\r\n } else {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n columnAction.onClick(row);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n } else {\r\n columnAction.onClick(row);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param event : LazyLoadEvent\r\n * Triggers everytime a server side filter is trigger\r\n */\r\n handleServerSideEvents(event: any) {\r\n setTimeout(() => {\r\n if(this.selectedColumns && this.selectedColumns.length > 0){\r\n this.selectedColumns.forEach((x: any) => {\r\n if (event.filters[x.field]) {\r\n event.filters[x.field].value = x.value;\r\n }\r\n });\r\n }\r\n \r\n this.loading = this.autoLoadData;\r\n this.serverFilters = {\r\n filters: this.lookupFilters\r\n ? this.gridService.getGridFilters(event, this.selectedColumns)\r\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\r\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\r\n ...(this.pagination && {\r\n page: this.gridService.getGridPagination(event),\r\n pageSize: event.rows || 10,\r\n }),\r\n };\r\n\r\n if (\r\n this.serverFilters?.filters &&\r\n this.serverFilters?.filters.length > 0 &&\r\n (this.allowCaching || this.softCaching)\r\n ) {\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\r\n }\r\n }\r\n\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\r\n this.globalData\r\n );\r\n this.onServerSideEventChange.emit(serverFilterValues);\r\n }, 950);\r\n }\r\n\r\n /**\r\n * @param event\r\n * Passes applied pagination to parent on page change\r\n */\r\n handleServerSidePagination(event: IGridPaginationEvent) {\r\n this.onPageChange.emit(event);\r\n }\r\n\r\n selectedRow(row: any) {\r\n this.onRowCheckBox.emit(row);\r\n }\r\n\r\n // set time format\r\n setTimeFormat(date: any) {\r\n let value: any = '';\r\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\r\n value = utilities.setTimeInDate(date);\r\n } else {\r\n value = this.datePipe.transform(date, 'hh:mm a');\r\n }\r\n return value;\r\n }\r\n\r\n //open hyperlink in edit case\r\n openLink(url: any) {\r\n if (url) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n }\r\n\r\n setFormat(column: any, row: any) {\r\n let value: any = '';\r\n if (column.format) {\r\n value = this.datePipe.transform(\r\n column.displayText ? column.displayText : row[column.field],\r\n column.format\r\n );\r\n } else {\r\n value = column.displayText ? column.displayText : row[column.field];\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sets values to editable row\r\n * Row's data is preseved to prevent mutation\r\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\r\n */\r\n\r\n onRowEditInit(row: any) {\r\n let selectedRow = { ...row };\r\n Object.entries(selectedRow).forEach(([key, value]: any) => {\r\n this.columns.forEach((col: any) => {\r\n if(this.setDropdownFilter){\r\n this.setDropdownFilterValue(col, row, key);\r\n this.setDropdownFilter = false;\r\n }\r\n // set the autoComplete Value in edit mode\r\n if (\r\n col.type === EGridColumnType.AUTOCOMPLETE &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n value &&\r\n value.length > 0\r\n ) {\r\n let newValue = value.map((x: any) => x[col.displayField]);\r\n if (newValue?.toString()?.includes(';')) {\r\n row[col.field] = newValue\r\n ?.toString()\r\n ?.replaceAll(';', ',')\r\n ?.split(',')\r\n ?.map((x: any) => ({ [col.displayField]: x }));\r\n }\r\n }\r\n\r\n // set lookup control field based on display field.\r\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\r\n if (col.field === key) {\r\n row[col.field] = {\r\n text: row[col.displayField],\r\n value: row[col.field],\r\n };\r\n }\r\n }\r\n\r\n if (col.type === EGridColumnType.DROPDOWN) {\r\n let option = col?.data?.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n if (\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n col.type === EGridColumnType.DATE\r\n ) {\r\n value = value?.action ? value.text : value;\r\n if (row[col.field] !== null) {\r\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\r\n row[key].text = new Date(value as string);\r\n }else{\r\n row[key] = new Date(value as string);\r\n }\r\n }\r\n\r\n // check the Minutes pattern\r\n if (\r\n (col.showTime || col.timeOnly) &&\r\n col.minutesInterval &&\r\n row[key]\r\n ) {\r\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.DIALOG &&\r\n col.filter?.type === 'calendar' &&\r\n col.field.toLowerCase() === key.toLowerCase()\r\n ) {\r\n if (value === null) {\r\n row[key] = new Date();\r\n } else {\r\n row[col.field] = new Date(value);\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.LINK &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n (col.allowSave === true || col.allowSave === undefined)\r\n ) {\r\n if (col.editLink === true) {\r\n row[key] = row[col.field + '_obj']?.hyperlink;\r\n } else if (col.editLink === false || col.editLink === undefined) {\r\n row[key] = value;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.editRowsRecords[row[this.dataKey]] = { ...row };\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n this.checkAction = true;\r\n this.dropdownInput = true;\r\n this.rowClickData = row;\r\n this.inEditMode = true;\r\n this.cancelAllRecords = false;\r\n this.saveAllRecord = false;\r\n this.sortDisabled = true;\r\n this.onGridRowEdit.emit(row);\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * set dropdown filter value\r\n */\r\n setDropdownFilterValue(col: any, row: any, key: string) {\r\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\r\n if (Object.values(col).some((value) => value == key)) { \r\n let obj = col.dropDownProp;\r\n let newFilters: any = [];\r\n\r\n if (obj.filters && obj.filters.length > 0) {\r\n obj.filters.forEach((filter: any) => {\r\n let newFilter = { ...filter };\r\n let filterKey = Object.keys(row).find((key) => {\r\n let matchKey: string = '';\r\n if (\r\n filter.value?.includes('{') &&\r\n key.toLowerCase() ===\r\n filter.value\r\n ?.toString()\r\n ?.toLowerCase()\r\n .replace('{', '')\r\n .replace('}', '')\r\n ) {\r\n matchKey = key;\r\n }\r\n return matchKey;\r\n });\r\n if (filterKey) {\r\n newFilter.value = row[filterKey];\r\n }\r\n newFilters.push(newFilter);\r\n });\r\n }\r\n\r\n this.gridService.setDropdownData(\r\n col,\r\n obj.uniqueKey,\r\n obj.valueProp,\r\n obj.labelProp,\r\n newFilters,\r\n row\r\n );\r\n\r\n let option = col.data.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Passes the edited or newly created data to parent\r\n * In case of newly created data, dataKey and isNew prop is removed\r\n */\r\n onRowEditSave(selectedRow: any) {\r\n this.selectedColumns.forEach((column: any) => {\r\n delete selectedRow[column.field + '-data'];\r\n delete selectedRow[column.field + '_secondType'];\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.displayField &&\r\n this.lookupObject\r\n ) {\r\n selectedRow[column.field] = this.lookupObject.value;\r\n }\r\n\r\n if (column.formatter) {\r\n let value: any = selectedRow[column.field];\r\n if (column.formatter === 'char') {\r\n value = value === true ? 'Y' : 'N';\r\n } else if (column.formatter === 'numeric') {\r\n value = value === true ? '1' : '0';\r\n }\r\n selectedRow = { ...selectedRow, [column.field]: value };\r\n }\r\n\r\n //convert date into time format\r\n if (\r\n column.type === EGridColumnType.DATE\r\n ) {\r\n if( column.timeOnly && column.saveAsString){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\r\n }\r\n else if(!column.timeOnly && column.showTime){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\r\n }\r\n }\r\n //convert multiselect array into string\r\n if (\r\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\r\n ) {\r\n selectedRow[column.field] = selectedRow[column.field]?.toString();\r\n }\r\n\r\n // Saving AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n column.displayField &&\r\n selectedRow[column.field]?.length > 0\r\n ) {\r\n let arr: any = [];\r\n selectedRow[column.field].forEach((row: any) => {\r\n if (row[column.displayField]) {\r\n arr.push(row[column.displayField]);\r\n }\r\n });\r\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\r\n }\r\n });\r\n\r\n let row: any = { ...selectedRow };\r\n let keys = Object.keys(row);\r\n keys.forEach((key) => {\r\n if (this.lookupObject && this.lookupObject.field) {\r\n row[this.lookupObject.field] = this.lookupObject.value;\r\n }\r\n if (key.includes('_obj')) {\r\n if (this.checkAction === false) {\r\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\r\n this.checkAction = true;\r\n }\r\n let obj: any = row[key];\r\n if (\r\n obj &&\r\n (obj.type === 'link' ||\r\n obj.type === 'iframe' ||\r\n obj.type === 'dialog')\r\n ) {\r\n delete row[key];\r\n }\r\n }\r\n });\r\n /**\r\n * just emit those fields who exist in the tabel\r\n */\r\n this.setRowValue(row);\r\n let obj: any = {};\r\n this.columns.forEach((column: any) => {\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.field &&\r\n typeof row[column.field] === 'object'\r\n ) {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n if (\r\n (column.allowSave === true || column.allowSave === undefined) &&\r\n (column.editable === true || column.editable === undefined)\r\n ) {\r\n obj[column.field] = row[column.field];\r\n if (\r\n column.type === EGridColumnType.DIALOG &&\r\n column.filter?.type === 'calendar'\r\n ) {\r\n obj[column.field] = this.datePipe.transform(\r\n obj[column.field],\r\n 'yyyy-MM-ddT00:00:00.000Z'\r\n );\r\n }\r\n\r\n //Set Decimal Fraction Value\r\n if (\r\n column.format &&\r\n column.format.type === EFormatType.DECIMAL &&\r\n row[column.field] &&\r\n !row[column.field].toString().includes('.')\r\n ) {\r\n let digitsInfo = '.00';\r\n let zero = '0';\r\n const formatParams = column.format?.formatParams;\r\n const fracDigits = column?.format?.formatParams?.digitsInfo;\r\n if (fracDigits) {\r\n for (let i = 1; i < fracDigits; i++) {\r\n zero = zero + '0';\r\n }\r\n digitsInfo = '.' + zero;\r\n }\r\n obj[column.field] = row[column.field] + digitsInfo;\r\n }\r\n } else if (\r\n row.isNew &&\r\n (column.allowSave === false || column.editable === false)\r\n ) {\r\n delete row[column.field];\r\n }\r\n });\r\n delete selectedRow['undefined'];\r\n this.gridService.checkValidity(this.columns, row);\r\n const isValid = this.gridValidation(this.columns, row);\r\n if (isValid) {\r\n // set the grid updated/inserted data\r\n this.rowActionEvents(selectedRow);\r\n this.browserCloseEvent(false);\r\n if (row.isNew) {\r\n const { isNew, ...newRowObj } = row;\r\n delete newRowObj[this.dataKey];\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(newRowObj);\r\n }else{\r\n this.onRowAdd.emit(newRowObj);\r\n }\r\n } else {\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(obj);\r\n } else {\r\n this.onRowUpdate.emit(obj);\r\n }\r\n }\r\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\r\n } else {\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n }\r\n // if all rows in read only mode then show editAllRows button. \r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.inEditMode = false;\r\n this.hideEditAllRowsBtn = true;\r\n this.sortDisabled = false;\r\n }\r\n this.selectedColumns.forEach((column: any) => {\r\n // convert date into time\r\n if (\r\n selectedRow[column.field] &&\r\n (selectedRow[column.field]?.toString()?.includes('PM') ||\r\n selectedRow[column.field]?.toString()?.includes('AM'))\r\n ) {\r\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n if (\r\n column.type === EGridColumnType.DROPDOWN &&\r\n column.optionLabel &&\r\n column.optionValue\r\n ) {\r\n this.setDropdownValue(column, selectedRow);\r\n }\r\n });\r\n this.addNewRowCheck = false;\r\n }\r\n\r\n // check the validation of the field\r\n gridValidation(columns: any, row: any): boolean {\r\n if (!this.gridService.checkValidity(columns, row)) {\r\n let isRequired = columns.some(\r\n (column: any) => column.errorMessage && !row[column.field]\r\n );\r\n if (isRequired) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else {\r\n this.alertService.error('Some fields are invalid', 'INVALID FIELD');\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row : any\r\n * @param index : number\r\n * Clears out the edit row and replace with readable one\r\n */\r\n onRowEditCancel(row: any, index: number) {\r\n if (row.isNew) {\r\n this.rowsData.splice(index, 1);\r\n } else {\r\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\r\n delete this.editRowsRecords[row[this.dataKey]];\r\n }\r\n delete this.editingRowKeys[row[this.dataKey]];\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, row);\r\n }\r\n });\r\n this.inEditMode = false;\r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.sortDisabled = false;\r\n } \r\n this.addNewRowCheck = false;\r\n this.inlineRowCancel.emit(row);\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sends the row payload to parent for deletion\r\n */\r\n\r\n /**\r\n *set the gridData on row actions events\r\n */\r\n rowActionEvents(rowInfo, deleteRow: boolean = false){\r\n let action: string = '';\r\n let gridRowsData: any[] = [...this.rowsData];\r\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\r\n if(index > -1){\r\n if(deleteRow){ \r\n gridRowsData.splice(index, 1);\r\n this.rowsData = [...gridRowsData];\r\n action = 'delete';\r\n } else {\r\n if(this.addNewRowCheck){\r\n action = 'insert';\r\n }else{\r\n action = 'update';\r\n }\r\n if(this.onGridRowActions.observers.length !== 0){\r\n rowInfo['rowAction']= action;\r\n }\r\n gridRowsData[index] = rowInfo;\r\n }\r\n }\r\n this.rowsChange.emit(this.rowsData);\r\n this.onGridRowActions.emit(gridRowsData);\r\n }\r\n\r\n /**\r\n * open Delete confirmation dialog when trying to delete row\r\n */\r\n deleteRecord(row: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handleInlineCRUD',\r\n accept: () => {\r\n if (this.useServerSideEvents) {\r\n this.loading = true;\r\n }\r\n // set the grid deleted data \r\n this.rowActionEvents(row, true);\r\n this.onRowDelete.emit(row);\r\n this.confirmationService.close();\r\n this.inEditMode = false;\r\n this.loading = false;\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * To set disabled the control\r\n */\r\n allowDisabled(column: any, row: any): boolean {\r\n let value: boolean = false;\r\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\r\n if (\r\n row[column.field]?.action &&\r\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\r\n ) {\r\n value = true;\r\n }\r\n } else if (column.disabled || column.editable === false) {\r\n value = true;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * To set aggregate in grid footer\r\n */\r\n setAggregateText(column: IGridColumn) {\r\n if (column?.aggregate) {\r\n column.aggregate.forEach((col: any) => {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n let columnType: EGridAggregate = col.type;\r\n if (columnType === EGridAggregate.COUNT) {\r\n const count = this.rowsData.length;\r\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\r\n }\r\n\r\n if (\r\n columnType === EGridAggregate.SUM ||\r\n columnType === EGridAggregate.AVERAGE\r\n ) {\r\n const colValues: number[] = this.getColumnValues(column);\r\n if (colValues && colValues.length > 0) {\r\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\r\n if (columnType === EGridAggregate.SUM) {\r\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\r\n }\r\n if (columnType === EGridAggregate.AVERAGE) {\r\n const average = sum / colValues.length || 0;\r\n col.aggrValue = this.setAggregateFooterText(\r\n col,\r\n average,\r\n 'Avg'\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n col.aggrValue = '';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * set grid Aggregate values\r\n */\r\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\r\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\r\n const digitsInfo = column.format?.digitsInfo;\r\n const caption: string =\r\n column.caption?.length > 0 ? column.caption : defaultCaption;\r\n\r\n const decimalPoint = isDecimalFormat\r\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\r\n : value?.toFixed(0);\r\n return `${caption} ${decimalPoint\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\r\n }\r\n\r\n /**\r\n * set decimat and numeric values\r\n */\r\n setNumericValues() {\r\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.NUMERIC) {\r\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\r\n this.rowsData.forEach((row) => {\r\n if (column?.format?.type === 'percent') {\r\n if (column.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n row[column.field] = row[column.field] / 100;\r\n }\r\n } else if (digitsInfo) {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\r\n }\r\n } else if (column?.format?.type === 'decimal') {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * get column value based on column field\r\n */\r\n getColumnValues(column: IGridColumn) {\r\n let arr: any = [];\r\n this.rowsData.forEach((row) => {\r\n let keys = Object.keys(row);\r\n keys.map((key) => {\r\n if (column.field === key) {\r\n arr.push(row[key]);\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to PDF\r\n */\r\n exportPdf() {\r\n var exportData = this.setExportData([...this.rowsData], true);\r\n let doc = new jsPDF('p', 'pt');\r\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\r\n doc.save('Export.pdf');\r\n }\r\n\r\n /**\r\n * Sub-function to set rows for export to Pdf, and Excel\r\n * @rows param for rows\r\n * @isExcel param for export to excel indication\r\n */\r\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\r\n const headings: any = this.columns.map((column) => column.field);\r\n rows.forEach((row) => {\r\n for (var prop in row) {\r\n if (!headings.includes(prop)) {\r\n delete row[prop];\r\n }\r\n if (isPdf) {\r\n row[prop] =\r\n !row[prop] && typeof row[prop] !== 'boolean'\r\n ? ''\r\n : row[prop].toString();\r\n }\r\n }\r\n });\r\n return { rows, headings };\r\n }\r\n\r\n /**\r\n *\r\n * Export to Excel\r\n */\r\n exportExcel() {\r\n let exportData: any = this.exportDataToExcel();\r\n import('xlsx').then((xlsx) => {\r\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\r\n\r\n let rowIndex = 0;\r\n exportData.forEach((row: any) => {\r\n let colIndex = 0;\r\n this.selectedColumns.forEach((col: any) => {\r\n const cellValue: string = row[col.header];\r\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\r\n const linkText: string = cellValue.split('|')[0];\r\n let linkUrl: string = cellValue.split('|')[1];\r\n if (linkUrl && !linkUrl.startsWith('http')) {\r\n if (!linkUrl.startsWith('/')) {\r\n linkUrl = '/' + linkUrl;\r\n }\r\n\r\n linkUrl =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n linkUrl;\r\n }\r\n\r\n const cellAddress = xlsx.utils.encode_cell({\r\n c: colIndex,\r\n r: rowIndex + 1,\r\n });\r\n\r\n worksheet[cellAddress] = {\r\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\r\n };\r\n }\r\n\r\n colIndex++;\r\n });\r\n\r\n rowIndex++;\r\n });\r\n\r\n const workbook = {\r\n Sheets: { sheet1: worksheet },\r\n SheetNames: ['sheet1'],\r\n };\r\n const excelBuffer: any = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array',\r\n });\r\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\r\n });\r\n }\r\n\r\n exportDataToExcel() {\r\n let arr: any = [];\r\n this.rowsData.forEach((row: any) => {\r\n let obj: any = {};\r\n this.selectedColumns.forEach((column: any) => {\r\n const gridHeader = column.header;\r\n if (column.type === EGridColumnType.LINK) {\r\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\r\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\r\n } else {\r\n obj[gridHeader] = row[column.field];\r\n }\r\n });\r\n\r\n arr.push(obj);\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to excel (sub-method)\r\n */\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import('file-saver').then((FileSaver) => {\r\n let EXCEL_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\r\n saveAs(data, fileName);\r\n });\r\n }\r\n\r\n /**\r\n *set config data of lookup control dialog\r\n */\r\n setLookupDialogConfig(row: any, column: any, data: any) {\r\n let selection: string = '';\r\n if (row[column.field] && typeof row[column.field] === 'object') {\r\n selection = row[column.field].text;\r\n } else if (column.displayField && row[column.displayField]) {\r\n selection = row[column.displayField];\r\n } else {\r\n selection = row[column.field];\r\n }\r\n\r\n if (column.field && typeof row[column.field] === 'object') {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n\r\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\r\n let obj = utilities.autoSetLookupData(data, row);\r\n row[column.field + '-data'] = obj;\r\n }\r\n return {\r\n rowData: row[column.field + '-data'],\r\n selection: selection,\r\n column: column,\r\n };\r\n }\r\n\r\n /**\r\n * open link on lookupControl control in read only mode when editLink set true\r\n */\r\n openLookupHyperlink(column: IGridColumn, row: any) {\r\n if (column.editLink === true && column.component) {\r\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\r\n obj['component'] = column.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open lookup Dialog\r\n */\r\n openLookupDialog(column: any) {\r\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\r\n const ref = this.dialogService.open(column.component, {\r\n ...columnData,\r\n data: {\r\n selection: column.selection,\r\n field: column.column.field,\r\n valueField: column.column.lookupControl?.data?.valueField,\r\n ...column.rowData,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return ref;\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(column: any, row?: any) {\r\n this.onClickEvent(column, row);\r\n this.lookupObject = { text: '', value: '', field: '' };\r\n if (column.lookupControl) {\r\n let obj: any = this.setLookupDialogConfig(\r\n row,\r\n column,\r\n column.lookupControl.data?.data\r\n );\r\n obj['component'] = column.lookupControl.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe(\r\n (res) => {\r\n if (column.onReturn) {\r\n column.onReturn(res, row);\r\n }\r\n if (res) {\r\n let value = utilities.setDialogResponse(\r\n column,\r\n column.lookupControl,\r\n res\r\n );\r\n if (column.displayField) {\r\n row[column.field] = {\r\n text: res[column.displayField.toLowerCase()],\r\n value: res[column.field.toLowerCase()],\r\n };\r\n this.lookupObject = row[column.field];\r\n } else if (value && value.value) {\r\n value['field'] = column.field;\r\n row[column.field] = value.value;\r\n } else {\r\n row[column.field] = res[column.field.toLowerCase()];\r\n }\r\n }\r\n if (row[column.field] !== obj.selection) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n setFilterLookup(column: any) {\r\n this.gridService.setLookUpFilter(column, this.dialogService);\r\n }\r\n\r\n // Check calender value is changed or not\r\n calenderChangeEvent(column: any, row: any) {\r\n let valueChange: boolean = false;\r\n if (\r\n column.timeOnly &&\r\n this.datePipe.transform(row[column.field], 'hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n column.showTime &&\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\r\n ) {\r\n valueChange = true;\r\n }\r\n if(valueChange){\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n this.calenderPreviousValue = '';\r\n }\r\n\r\n onFocusOutEvent(column: IGridColumn, row: any) {\r\n this.gridService.checkValidity([column], row);\r\n if (column.type === EGridColumnType.DATE) {\r\n this.calenderChangeEvent(column, row);\r\n }\r\n if (column.onFocusOut) {\r\n column.onFocusOut(row);\r\n } else if (\r\n column.onReturn &&\r\n column.type !== EGridColumnType.LOOKUP_INPUT\r\n ) {\r\n column.onReturn(row);\r\n }\r\n }\r\n\r\n setFilterFocusOut(col: any, filter?: any, event?: any) {\r\n this.gridFilterObj = { column: col, filter: filter, event: event };\r\n const newColumn: any = { ...col };\r\n //change filter calender format\r\n if (newColumn.type === 'date' && newColumn.value) {\r\n newColumn.value = this.datePipe.transform(\r\n col.value.toString().trim(),\r\n 'yyyy-MM-dd'\r\n );\r\n }\r\n setTimeout(\r\n () => {\r\n this.filterObj(newColumn);\r\n },\r\n newColumn.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\r\n );\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n }\r\n\r\n filterObj(col: any) {\r\n const obj = {\r\n field: col.field,\r\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\r\n operator: col.operator ? col.operator : 'and',\r\n tableAlias: col.tableAlias ? col.tableAlias : '',\r\n value: col.value,\r\n };\r\n this.globalFiltersArray.push(obj);\r\n }\r\n\r\n applyEnterEvent(filter: any, event: any, column: any) {\r\n this.gridService.applyFilterEvent = true;\r\n this.autoLoadData = true;\r\n this.onApplyFilter.emit();\r\n this.filterObj(column);\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\r\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\r\n } else {\r\n filter(event.target.value);\r\n }\r\n }\r\n\r\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\r\n if (column.value === null) {\r\n this.removeNullFilters(column);\r\n this.setFilterFocusOut(column, filter, event);\r\n }\r\n }\r\n\r\n backspaceEvent(event: any, column: any) {\r\n if (\r\n event.key === 'Backspace' &&\r\n (column.value?.toString().length === 1 ||\r\n column.value?.toString() === '' ||\r\n column.value === null)\r\n ) {\r\n this.removeNullFilters(column);\r\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\r\n this.removeNullFilters(column);\r\n }\r\n }\r\n\r\n removeNullFilters(column: any) {\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n let arr = [...this.globalFiltersArray];\r\n let index = arr.findIndex((i) => i.field === column.field);\r\n arr.splice(index, 1);\r\n this.globalFiltersArray = arr;\r\n }\r\n }\r\n\r\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\r\n removingFilters(event: any, column: IGridColumn) {\r\n if (\r\n (event.key === 'Backspace' || event.key === 'Delete') &&\r\n column.value?.toString().length === 0\r\n ) {\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (searchFilters && searchFilters.filters) {\r\n if (searchFilters.filters.length > 0) {\r\n let index = searchFilters.filters.findIndex(\r\n (x: any) => x.field === column.field\r\n );\r\n if (index !== -1) {\r\n if (searchFilters.filters.length === 1) {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n } else {\r\n searchFilters.filters.splice(index, 1);\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Add Click Button Event on Grid.\r\n onClickButton(column: any, row: any) {\r\n this.openGridDialog(column, row);\r\n }\r\n\r\n // Invoke onClick Event.\r\n onClickEvent(column: any, row: any) {\r\n if (column.type === EGridColumnType.DATE && row[column.field]) {\r\n this.calenderPreviousValue = row[column.field];\r\n } else if (\r\n !row[column.field] &&\r\n column.type === EGridColumnType.DATE &&\r\n (column.showTime || column.timeOnly) &&\r\n column.minutesInterval\r\n ) {\r\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n if (column && column.onClick) {\r\n column.onClick(row);\r\n }\r\n }\r\n\r\n // set the select value of multi-select\r\n showOption(column, row){\r\n if(row[column.field]){\r\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\r\n row[column.field] = [row[column.field]];\r\n } else if(row[column.field].includes(',')){\r\n row[column.field] = row[column.field].split(',');\r\n }\r\n }\r\n }\r\n\r\n onClearValue(column, row){\r\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\r\n row[column.field] = null;\r\n }\r\n }\r\n\r\n // Invoke onChange Event\r\n onChangeEvent(column: any, row: any) {\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n this.displayFieldDropdownValue(column, row);\r\n this.onClearValue(column, row);\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\r\n row[column.field] = event;\r\n }\r\n\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n displayFieldDropdownValue(column: any, row: any) {\r\n if (\r\n column?.type === EGridColumnType.DROPDOWN &&\r\n column.displayField &&\r\n column.displayField?.length > 0\r\n ) {\r\n const key: any = Object.keys(row)?.find(\r\n (rowInfo) =>\r\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\r\n );\r\n const displayFieldValue = column.data.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n if (key && displayFieldValue) {\r\n row[key] = displayFieldValue[column.optionLabel];\r\n }\r\n }\r\n }\r\n\r\n // Add autoSearch on Grid.\r\n autoSearch(event: any, column: any, row: any) {\r\n if (event && column && row) {\r\n column.onReturn(event.query, column, row);\r\n }\r\n }\r\n\r\n // Remove FilterValues\r\n cleargridFiltersValue() {\r\n const globalFilterClearValueBtn = document.getElementById(\r\n 'clearGlobalFilterBtn'\r\n );\r\n if (globalFilterClearValueBtn) {\r\n globalFilterClearValueBtn.click();\r\n }\r\n if (this.selectedColumns && this.selectedColumns.length > 0) {\r\n this.selectedColumns.forEach((col) => {\r\n col.value = null;\r\n this.filterObj(col);\r\n });\r\n }\r\n }\r\n\r\n editAllRowsAtOnce() {\r\n if(this.editRowPermission){\r\n if (this.getClassForEditAllRows('editRow')) {\r\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\r\n this.editAllRecord = true;\r\n }\r\n this.hideEditAllRowsBtn = false;\r\n this.sortDisabled = true;\r\n }\r\n }\r\n }\r\n\r\n saveAllRowsAtOnce() {\r\n this.getClassForEditAllRows('saveRow');\r\n }\r\n\r\n // reset the grid rowsValue to orignal values\r\n cancelAllRowsAtOnce() {\r\n this.rowsData = [...this.rowsDataCopy];\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n this.selectedColumns?.forEach((column)=>{\r\n if(column.type === EGridColumnType.DATE){\r\n this.rowsData?.forEach((row)=>{\r\n if(row[column.field]){\r\n row[column.field]= new Date(row[column.field]);\r\n }\r\n })\r\n }\r\n\r\n });\r\n this.onCancelAllRows.emit(this.rowsData);\r\n }\r\n\r\n getClassForEditAllRows(className: string = '') {\r\n let success: boolean = false;\r\n const getBtns: any =\r\n this.elementRef?.nativeElement?.getElementsByClassName(className);\r\n if (getBtns && getBtns.length > 0) {\r\n success = true;\r\n if (className === 'saveRow') {\r\n this.editAllRecord = false;\r\n this.saveAllRecord = true;\r\n const records$ = [];\r\n setTimeout(()=>{\r\n for (let item of getBtns) {\r\n const rowSave = new Promise((resolve, reject) => { \r\n item.click();\r\n resolve(item);\r\n });\r\n records$.push(rowSave);\r\n }\r\n Promise.all(records$).then((response) => {\r\n console.log(\"AAAA\");\r\n this.onRowUpdate.emit(this.saveRecordArray);\r\n this.saveRecordArray = [];\r\n });\r\n },20)\r\n } else {\r\n this.saveAllRecord = false;\r\n for (let item of getBtns) {\r\n if(className == 'cancelRow'){\r\n setTimeout(() => {\r\n item.click();\r\n }, 50);\r\n }else{\r\n item.click();\r\n }\r\n }\r\n }\r\n }\r\n return success;\r\n }\r\n\r\n //Focused calender input on select date\r\n selectDate(column: any) {\r\n document.getElementById(column.field)?.focus();\r\n }\r\n\r\n //apply filter on grid when search btn clicked\r\n applyGirdFilterBtn() {\r\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\r\n this.applyEnterEvent(\r\n this.gridFilterObj.filter,\r\n this.gridFilterObj.event,\r\n this.gridFilterObj.column\r\n );\r\n }\r\n }\r\n\r\n // invoke multiSelection click event\r\n multiCheckBoxOnclick(rowInfo: any) {\r\n if (rowInfo) {\r\n this.onMultiSelectionChange.emit(rowInfo);\r\n }\r\n }\r\n\r\n applyDropdownFilter(filter: any, event: any) {\r\n filter(event.target);\r\n }\r\n\r\n searchDropdownFilter(filter: any, event: any, column: any) {\r\n this.setFilterFocusOut(column, filter, event);\r\n this.dropDownFilter = { filter: filter, event: event, column: column };\r\n if (column.allowSearch !== true) {\r\n this.applyDropdownFilter(filter, event);\r\n }\r\n }\r\n\r\n lookupClearValue(column: any, row?: any) {\r\n if (row) {\r\n row[column.field] = '';\r\n } else {\r\n column.value = '';\r\n this.setFilterFocusOut(column);\r\n }\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n // invoke when click header checkbox filter\r\n clickCheckBoxFilter(column: IGridColumn) {\r\n if (this.editAllRecord) {\r\n if (\r\n column.type === EGridColumnType.BOOLEAN \r\n &&\r\n column?.filter?.type === 'checkbox' && column.filtering != false\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n row[column.field] = column.value;\r\n });\r\n //this.onCheckBoxFilterClick.emit(column);\r\n }\r\n //this.onCheckBoxFilterClick.emit(column);\r\n }\r\n this.onCheckBoxFilterClick.emit(column);\r\n }\r\n //set header checkbox value for getting all columns on stay admin\r\n setHeaderCheckBoxValue(value: any){\r\n this.isIncludedAllColumns.emit(value);\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(column: any, row: any){\r\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if( year && year.length === 4){\r\n this.calendarFormat= 'mm/dd/yy';\r\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\r\n } else if(year && year.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EValidator,\r\n IFormField,\r\n EFormControl,\r\n AddFormField,\r\n ISetFilter,\r\n IDropDownRequest,\r\n IListFilter,\r\n IReportBtn,\r\n} from '../models/form.model';\r\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\r\nimport { HyperlinkService } from '../services/hyperlink.service';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from './utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormService {\r\n public fieldFocusedOut:boolean = false;\r\n constructor(\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService: DropdownService,\r\n private alertService: AlertService,\r\n private requestService: RequestService\r\n ) { }\r\n\r\n checkValidity(formFields: IFormField[]): boolean {\r\n let isValid: boolean = true;\r\n\r\n formFields.map((item: IFormField) => {\r\n if (item.validations && !item.disabled) {\r\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\r\n item.value = item.value.value;\r\n }\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\r\n const valid =\r\n item.validations && typeof item.label === 'object'\r\n ? item.label.name\r\n : item.label;\r\n if (\r\n item.validations[i].type == EValidator.REQUIRED &&\r\n !item.value &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = item.value\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINLENGTH &&\r\n item.value.length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXLENGTH &&\r\n item.value.length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value < item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value > item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PATTERN &&\r\n !item.value.match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.NUMERIC &&\r\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PHONE &&\r\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.DECIMAL &&\r\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.EMAIL &&\r\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n item.value &&\r\n item.value.match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n addFormField(fieldInfo: IFormField): IFormField {\r\n if (!fieldInfo.label) {\r\n fieldInfo.label = fieldInfo.field;\r\n }\r\n\r\n const formField: any = {\r\n label: fieldInfo.label,\r\n field: fieldInfo.field,\r\n displayField: fieldInfo.displayField,\r\n control: fieldInfo.control,\r\n showOption: fieldInfo.showOption,\r\n column: fieldInfo.column,\r\n row: fieldInfo.row,\r\n minutesInterval: fieldInfo.minutesInterval,\r\n value: fieldInfo.value,\r\n format: fieldInfo.format,\r\n hidden: fieldInfo.hidden,\r\n permissions: fieldInfo.permissions,\r\n validations: fieldInfo.validations,\r\n id: fieldInfo.id,\r\n hyperlink: fieldInfo.hyperlink,\r\n data: fieldInfo.data,\r\n lookupControl: fieldInfo.lookupControl,\r\n componentControl: fieldInfo.componentControl,\r\n optionLabel: fieldInfo.optionLabel,\r\n optionValue: fieldInfo.optionValue,\r\n saveAsString: fieldInfo.saveAsString,\r\n showAllValue: fieldInfo.showAllValue,\r\n onClick: fieldInfo.onClick,\r\n onReturn: fieldInfo.onReturn,\r\n onFocusOut: fieldInfo.onFocusOut,\r\n onChange: fieldInfo.onChange,\r\n tables: fieldInfo.tables,\r\n disabled: fieldInfo.disabled,\r\n disabledText: fieldInfo.disabledText,\r\n timeOnly: fieldInfo.timeOnly,\r\n monthOnly: fieldInfo.monthOnly,\r\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\r\n height: fieldInfo.height,\r\n showBottomBorder: fieldInfo.showBottomBorder,\r\n allowSearch: fieldInfo.allowSearch,\r\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\r\n SetfileTypes: fieldInfo.SetfileTypes,\r\n icon: fieldInfo.icon,\r\n color: fieldInfo.color,\r\n card: fieldInfo.card,\r\n uniqueKey: fieldInfo.uniqueKey,\r\n azureContainer: fieldInfo.azureContainer,\r\n class: fieldInfo.class\r\n };\r\n\r\n return formField;\r\n }\r\n\r\n addCheckbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CHECKBOX;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n fieldInfo.disabled = true;\r\n fieldInfo.showBottomBorder = true;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NUMERIC;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addSpaceField(fieldInfo: AddFormField): IFormField{\r\n fieldInfo.control = EFormControl.SPACER;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextArea(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.TEXTAREA;\r\n return this.addFormField(fieldInfo);\r\n }\r\n \r\n // Adding Report button for DynamicForm\r\n addReportBtn(fieldInfo: IReportBtn) {\r\n fieldInfo.control = EFormControl.REPORT;\r\n return fieldInfo;\r\n }\r\n\r\n addNoteField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NOTE_FIELD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHyperlink(fieldInfo: AddFormField) {\r\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n return this.addFormField(fieldInfo);\r\n }else{return this.hyperlinkService.buildUrl(\r\n fieldInfo?.hyperlink?.linkId,\r\n fieldInfo.hyperlink?.params\r\n ).then((res: any) => {\r\n const params = fieldInfo?.hyperlink?.params;\r\n const link = res;\r\n if(res && params){\r\n Object.keys(params).forEach((key)=>{\r\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\r\n res = res.replace('{{'+key+'}}', params[key])\r\n } \r\n })\r\n }\r\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\r\n fieldInfo.hyperlink.link = res;\r\n }\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n let obj: any = this.addFormField(fieldInfo);\r\n obj['orignalLink'] = link;\r\n return obj;\r\n });\r\n }\r\n}\r\n\r\n addCalendar(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CALENDAR;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // add AutoComplete for Form\r\n addAutoComplete(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Search AutoComplete Data for form\r\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n formField.data = [...response.records];\r\n });\r\n }\r\n\r\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\r\n fieldInfo.control = EFormControl.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\r\n }\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\r\n return this.dropdownService\r\n .setDropDownList(\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n )\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error: any) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n addLookUp(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDialog(fieldInfo: AddFormField): IFormField {\r\n return this.addLookUp(fieldInfo);\r\n }\r\n\r\n addComponent(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.COMPONENT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHeader(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SECTION_HEADER;\r\n fieldInfo.class = 'form-header';\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addMultiSelect(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.MULTISELECT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addFileUpload(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.FILE_UPLOAD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayFile(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.DISPLAY_FILE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding OnClick Button Function for DynamicForm\r\n addButton(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.ADD_BUTTON;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding Switch Function for DynamicForm\r\n addSwitch(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SWITCH;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // start add new card functionality\r\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\r\n fieldInfo.control = EFormControl.CARD;\r\n if (cardData && cardData.uniqueKey) {\r\n if(cardData.sorts?.length > 0){\r\n cardData.sorts.forEach((res) =>{\r\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\r\n });\r\n } \r\n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\r\n return this.getCardList(uniqueKey, filters, sorts)\r\n .then((res: any) => {\r\n fieldInfo.card.data = res.records;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\r\n return new Promise((resolve, reject) => {\r\n this.requestService\r\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n return resolve(response);\r\n } else {\r\n return resolve([]);\r\n }\r\n },\r\n ({ error }: any) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n }\r\n // End add new card functionality\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss'],\r\n})\r\nexport class NotesComponent implements OnInit {\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) { }\r\n\r\n public note: string = '';\r\n public disabledText: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.note = this.config.data.value ?? '';\r\n this.disabledText = this.config.data.disabledText;\r\n }\r\n\r\n handleCancel() {\r\n this.ref.close();\r\n }\r\n\r\n handleOk() {\r\n this.ref.close(this.note);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { NotesComponent } from '../../shared/notes/notes.component';\r\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { IDictionary } from '../../../models/common.model';\r\nimport { Router } from '@angular/router';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DatePipe } from '@angular/common';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss']\r\n})\r\nexport class FormComponent implements OnInit {\r\n @Input() stickyActions: boolean = true;\r\n @Input() form: IDynamicForm;\r\n @Input() hideSaveButton: boolean = false;\r\n @Input() hideCancelButton: boolean = false;\r\n @Input() loading:boolean = false;\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\r\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\r\n dynamicComponentContainer: QueryList<ViewContainerRef>;\r\n\r\n dynamicCase = EFormControl;\r\n permissionType = EPermissionType;\r\n roles: string[] = [];\r\n isFormDisabled: boolean = false;\r\n isFormHidden: boolean = false;\r\n componentsList: IDictionary[] = [];\r\n fileUploadUrls: any;\r\n showfileUploadError: boolean = false;\r\n cardList: IDynamicCard;\r\n calenderPreviousValue: string = '';\r\n defaultDate: string = '';\r\n lookupFocusOut: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Form\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private formService: FormService,\r\n private alertService: AlertService,\r\n private sanitizer: DomSanitizer,\r\n public dialogService: DialogService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private el: ElementRef,\r\n private datePipe: DatePipe,\r\n private gridService: GridService,\r\n private pageLoggerService: PageLoggerService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n \r\n // browser tab close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n // start cardList reference break functionality\r\n let formValues = { ...this.form };\r\n formValues.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field:any) => {\r\n\t // convert string time into date\r\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\r\n field['previousValue'] = field?.value;\r\n }\r\n if(field?.control === EFormControl.CALENDAR &&\r\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\r\n field.value = utilities.setTimeInDate(field.value);\r\n }\r\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\r\n const value = field?.value.map((value: any)=> value[field?.displayField]);\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\r\n }\r\n }\r\n // convert the multiSelect string value in array\r\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\r\n if(field.value?.toString()?.includes(\",\")){\r\n field.value = field.value?.toString()?.split(\",\");\r\n }else {\r\n field.value = [field.value];\r\n }\r\n }\r\n if (field?.control === EFormControl.CARD) {\r\n this.form = {};\r\n setTimeout(() => {\r\n field?.card?.data?.forEach((x: any) => {\r\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\r\n x.dynamicForm = {\r\n formSections: JSON.parse(\r\n JSON.stringify(field?.card?.formSections)\r\n ),\r\n };\r\n };\r\n });\r\n this.form = formValues;\r\n }, 500);\r\n }\r\n // End cardList reference break functionality\r\n if (field?.control === EFormControl.CHECKBOX) {\r\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\r\n }\r\n });\r\n }\r\n });\r\n // apply user role permissions on form\r\n this.roles = this.authService.getUserRoles();\r\n this.applyUserPermissions();\r\n this.applyRequiredFieldValidation();\r\n this.removeWhiteSpaces();\r\n this.setHyperlinkComponentRoute();\r\n setTimeout(() => {this.setCalanderWidth();}, 3000);\r\n }\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(formField: IFormField){\r\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n}\r\n\r\n// set percent and decimal values\r\n setnumericvalues() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if (field?.control === EFormControl.NUMERIC) {\r\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\r\n if (field?.format?.type === 'percent') {\r\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n field.value = field.value / 100;\r\n }\r\n } else if (digitsInfo) {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo);\r\n }\r\n } else if (field?.format?.type === 'decimal') {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Checks if form has any field with dynamic component;\r\n * Creates component instance using componentFactoryResolver\r\n * Injects component through viewRef.createComponent()\r\n * Passes data to component\r\n * Subscribes to the events passed to the components\r\n * Finally forces Angular to detech changes\r\n */\r\n loadDynamicComponents() {\r\n this.componentsList = [];\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field:any, fieldIndex) => {\r\n if (field.control === EFormControl.COMPONENT) {\r\n const viewRef:any = this.dynamicComponentContainer.find(\r\n (x) =>\r\n x.element.nativeElement.id ==\r\n `${formSection.name}-${fieldIndex}`\r\n );\r\n const {\r\n component: Component,\r\n data,\r\n handlers,\r\n } = field.componentControl;\r\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\r\n Component\r\n );\r\n // Passing data to component\r\n const componentRef = viewRef?.createComponent(componentFactory);\r\n if(componentRef){\r\n Object.entries(data ?? {}).forEach(([key, value]) => {\r\n componentRef.instance[key] = value;\r\n });\r\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\r\n // Subscribes to the events passed to the components\r\n if (handlers) {\r\n Object.entries(handlers).forEach(([event, handler]:any) => {\r\n (componentRef.instance[\r\n event\r\n ] as EventEmitter<any>)?.subscribe((response) => {\r\n handler(response);\r\n });\r\n });\r\n }\r\n }\r\n // invoke change detection\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n\r\n //invoke when file upload OR delete a file\r\n fileOnchangeEvent(){\r\n setTimeout(() => {\r\n this.loadDynamicComponents();\r\n }, 1000);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // load dynamic components if exist in form\r\n setTimeout(() => {\r\n this.setnumericvalues()\r\n this.onDynamicFormStateChange();\r\n this.loadDynamicComponents();\r\n }, 500);\r\n }\r\n\r\n removeWhiteSpaces(){\r\n this.form?.formSections?.forEach((section) =>{\r\n if(section.class) section.class = section.class.replace(/\\s/g, '');\r\n })\r\n }\r\n\r\n setHyperlinkComponentRoute() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field) => {\r\n if (\r\n field.control === EFormControl.HYPERLINK &&\r\n field.hyperlink?.component\r\n ) {\r\n this.router.resetConfig([\r\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\r\n ...this.router.config,\r\n ]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n browserTabCloseEvent(event: boolean = false){\r\n this.formService.fieldFocusedOut = event;\r\n }\r\n\r\n /**\r\n * Listens any change in Dynamic Form component State\r\n */\r\n onDynamicFormStateChange() {\r\n utilities.onDynamicFormStateChange().subscribe((response) => {\r\n if (response.id && response.data) {\r\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\r\n if (componentRefObj){\r\n Object.entries(response.data ?? {}).forEach(\r\n ([key, value]) => {\r\n componentRefObj.value.instance[key] = value;\r\n }\r\n );\r\n componentRefObj.value.instance.ngOnInit();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.form && this.form.formSections) {\r\n let totalFields: number = 0;\r\n let disabledFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.form.formSections.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField) => {\r\n let permissions: any = formField.permissions;\r\n let sectionPermissions: any = [];\r\n if (!permissions) sectionPermissions = formSection.permissions;\r\n if (!permissions) permissions = this.form.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (sectionPermissions && sectionPermissions.length > 0) {\r\n sectionPermissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formSection.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n formField.disabled = false;\r\n formSection.hidden = false;\r\n } else {\r\n formSection.accordionDisabled = true;\r\n formSection.disabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n } else if (permissions && permissions.length > 0){\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n formField.disabled = false;\r\n formField.hidden = false;\r\n } else {\r\n if (\r\n formField.permissions &&\r\n formField.permissions.length > 0\r\n ) {\r\n formSection.disabled = false;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n } else {\r\n formSection.disabled = true;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (formField.disabled) {\r\n disabledFields++;\r\n }\r\n\r\n if (formField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\r\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n /**\r\n * Open IFrame in hyperlink Control\r\n */\r\n sectionDisabled(formSection:IFormSection){\r\n if( formSection.disabled ) {\r\n formSection.fields.map((field:IFormField) => {\r\n field.disabled=true;\r\n });\r\n return formSection;\r\n } else {\r\n return formSection;\r\n }\r\n }\r\n\r\n loadIFrame(formField: IFormField){\r\n this.handleClickEvent(formField);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: 'Hyperlink',\r\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\r\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\r\n });\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if(formField.onReturn){\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * open Dialog in hyperlink Control\r\n */\r\n hyperlinkDialog(formField: IFormField) {\r\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\r\n var value = formField.hyperlink.params;\r\n window.open('hyperlink'+formField.label);\r\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\r\n this.router.navigate(['hyperlink'+formField.label], {\r\n queryParams: formField.hyperlink.params,\r\n });\r\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\r\n this.onClickEvent(formField);\r\n const dialog = this.dialogService.open(formField.hyperlink.component, {\r\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\r\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\r\n data: formField.hyperlink.params,\r\n });\r\n const componentName = formField.hyperlink?.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n dialog.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open Iframe on Label\r\n */\r\n loadLabelControlIFrame(formField:any){\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: formField.label.name,\r\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n\r\n if (formField && formField.onClick) {\r\n formField.onClick();\r\n };\r\n }\r\n\r\n /**\r\n * find the required field in form\r\n */\r\n applyRequiredFieldValidation() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section) => {\r\n section.fields.forEach((field) => {\r\n if (field.validations && field.validations.length > 0) {\r\n field.validations.forEach((valid) => {\r\n if (valid.type === EValidator.REQUIRED) {\r\n field.requiredField = true;\r\n }\r\n })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n\r\n setFileUrls(fileUrls: any){\r\n if(fileUrls && fileUrls.length > 0){\r\n this.fileUploadUrls = fileUrls;\r\n this.showfileUploadError = false;\r\n }\r\n }\r\n\r\n onSaveForm() {\r\n let validity = true;\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n if (!this.formService.checkValidity(formSection.fields)) {\r\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\r\n if (validity && field) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else{\r\n this.alertService.error(\r\n 'Some fields are invalid',\r\n 'INVALID FIELD'\r\n );\r\n }\r\n validity = false;\r\n }\r\n\r\n formSection.fields.forEach((field: any)=>{\r\n // set uploadFile URL in FormField in case of FILE_UPLOAD\r\n if (field.control === EFormControl.FILE_UPLOAD) {\r\n field.value = this.fileUploadUrls;\r\n \r\n if(field.validations && field.validations.length > 0){\r\n field.validations.forEach((x:any)=>{\r\n if(x.type === EValidator.REQUIRED && !field.value){\r\n this.showfileUploadError = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\r\n if(selectedData && selectedData.length > 0){\r\n field.card.data = selectedData;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n if (validity) {\r\n let tempValue: any = []\r\n // set value as 1 or 0 in case of checkbox\r\n this.form.formSections?.forEach((formSection)=>{\r\n if (formSection.fields && validity) {\r\n formSection.fields.forEach((field: any) => {\r\n if ((field.value === '') || (field.value === undefined)) {\r\n field.value = null;\r\n }\r\n //convert date into time as string\r\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\r\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\r\n }\r\n // set value of autoComplete as strings\r\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\r\n const value = field.value.map((value: any)=> value[field.displayField])\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n tempValue = value;\r\n field.value = value.toString().replaceAll(\",\",\";\");\r\n }\r\n }\r\n // convert multiSelect array into string\r\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\r\n field.value = field.value?.toString();\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value ? 1 : 0;\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Save grid on formSave Button\r\n const saveAllGrid = document.getElementById('saveAllGridValues');\r\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\r\n if (saveAllGrid) {\r\n saveAllGrid.click();\r\n } else if (getBtns && getBtns.length > 0) {\r\n for (let btn of getBtns) {\r\n btn?.click();\r\n }\r\n }\r\n this.browserTabCloseEvent(false)\r\n this.saveForm.emit(this.form.formSections);\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\r\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value === 1 ? true : false;\r\n }\r\n\r\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\r\n this.fileOnchangeEvent();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancelForm() {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\r\n if(res[0].detail === \"Yes\"){\r\n this.browserTabCloseEvent(false);\r\n this.gridService.columnFocusedOut = false;\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n })\r\n }else{\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n }\r\n \r\n lookupClearValue(formField: IFormField){\r\n if(formField.value) {\r\n formField.value = ''; \r\n this.browserTabCloseEvent(true);\r\n }\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set calender width\r\n */\r\n setCalanderWidth() {\r\n const calanderElement = document.querySelectorAll(\".p-calendar\");\r\n let form: any = document.querySelector(\"form\");\r\n let width = form?.clientWidth;\r\n calanderElement?.forEach((calander:any) => {\r\n const calanderOfsetLeft = calander.offsetLeft;\r\n if(calanderOfsetLeft <= (width / 2)){\r\n calander.classList.add('open-right-side');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * set the dynamic dialog data\r\n */\r\n setDialogData(formField: IFormField, data: any): any {\r\n if (data && formField) {\r\n let value: any;\r\n data = utilities.objConvertToLower(data);\r\n let selection: string = '';\r\n if (formField.value && typeof formField.value === 'object') {\r\n if (\r\n formField.value &&\r\n formField.value.text &&\r\n formField.value.text.toString().trim()\r\n ) {\r\n selection = formField.value.text?.toString()?.trim();\r\n if(formField.displayField){\r\n value = formField.value?.value?.toString()?.trim();\r\n }\r\n }\r\n } else if (formField.value && formField.value.toString().trim()) {\r\n selection = formField.value?.toString()?.trim();\r\n }\r\n const componentName = data.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return this.dialogService.open(data.component, {\r\n ...data.data,\r\n data: {\r\n selection: selection,\r\n field: formField.field,\r\n value: value,\r\n valueField: data.data?.valueField,\r\n ...data.data.data,\r\n },\r\n });\r\n }\r\n }\r\n \r\n tabFocusEvent(formField: any) {\r\n const className = this.el.nativeElement.querySelector('.'+formField.field);\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n\r\n onClickEvent(formField: IFormField) {\r\n if (formField.onClick) {\r\n formField.onClick(formField);\r\n }\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl label\r\n */\r\n selectLookupLabel(formField: any) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl\r\n ) {\r\n const ref: any = this.setDialogData(\r\n formField,\r\n formField.label.labelControl.lookupControl\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(res){\r\n formField.value = utilities.setDialogResponse(\r\n formField,\r\n formField?.label.labelControl.lookupControl,\r\n res\r\n );\r\n }\r\n this.onFocusOutEvent(formField);\r\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(formField: IFormField) {\r\n if(formField.lookupControl) {\r\n this.lookupFocusOut = true;\r\n let value = formField.value;\r\n const ref = this.setDialogData(formField, formField.lookupControl);\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(formField.field){\r\n document.getElementById(formField.field)?.focus();\r\n }\r\n if(res){\r\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\r\n this.lookupFocusOut = false;\r\n this.onFocusOutEvent(formField);\r\n if (formField.onReturn) formField.onReturn(formField.value, res);\r\n }\r\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\r\n value = typeof value === 'object' ? value.text : value;\r\n if (formFieldValue !== value) {\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * onClick event invoked && open Dialog on lookupControl field/label\r\n */\r\n handleClickEvent(formField: IFormField) {\r\n this.onClickEvent(formField);\r\n\r\n if (formField && formField.lookupControl) {\r\n this.selectLookupLabel(formField);\r\n this.selectLookupField(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set Calender Date Format && set Date Minute interval\r\n */\r\n setCalenderDate(formField: IFormField){\r\n if (formField.control === EFormControl.CALENDAR) {\r\n // convert time into date format\r\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\r\n formField.value = utilities.setTimeInDate(formField.value);\r\n }\r\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\r\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n this.calenderPreviousValue = formField.value;\r\n }\r\n }\r\n calendarChangeValue(formField: any){\r\n if(formField.value !== formField.previousValue){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.previousValue = formField.value;\r\n formField.onChange(formField);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * invoked section Clicked event\r\n */\r\n clickedSection(section:IFormSection){\r\n this.sectionClickedEvent.emit(section);\r\n }\r\n\r\n /**\r\n * open dialog in Note_Field conrtrol\r\n */\r\n handleNoteFieldDialog(formfield: IFormField) {\r\n const dialogRef = this.dialogService.open(NotesComponent, {\r\n header: formfield.label as string,\r\n width: '50%',\r\n data: {\r\n value: formfield.value,\r\n disabledText: formfield.disabledText,\r\n },\r\n });\r\n\r\n dialogRef.onClose.subscribe(\r\n (data: any) => {\r\n if (data && formfield.onReturn) {\r\n formfield.onReturn(data);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n setClassName(formField: IFormField): string {\r\n if (formField.hidden) return ' hidden';\r\n else return '';\r\n }\r\n\r\n autoSearch(event: any, formField: any) {\r\n if(formField && event){\r\n formField.onReturn(event.query, formField);\r\n }\r\n }\r\n\r\n /**\r\n * invoked onFocusOut Event\r\n */\r\n onFocusOutEvent(formField: IFormField) {\r\n let record: any = {};\r\n this.form.formSections?.forEach((section)=>{\r\n section.fields.forEach((formField)=>{\r\n if(formField.field){\r\n record[formField.field] = formField.value;\r\n }\r\n });\r\n });\r\n utilities.setHyperlinkParamValue(record, this.form);\r\n this.formService.checkValidity([formField]);\r\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\r\n formField.onFocusOut(formField);\r\n }\r\n }\r\n\r\n onBackSpaceEvent(formField:IFormField){\r\n if(typeof(formField.value)==='object'){\r\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\r\n if(formField.value.text.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n if(formField.value && formField.value.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n\r\n /**\r\n * clear the dropdown value when click on x\r\n */\r\n onClearValue(formField: IFormField, event: any) {\r\n this.formService.checkValidity([formField]);\r\n this.onChangeEvent(formField);\r\n this.dropDownChangeEvent.emit(formField);\r\n if (!event.value) {\r\n this.onFocusOutEvent(formField);\r\n }\r\n }\r\n\r\n clearDropdownValue(formField:any){\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /** \r\n * Invoke onChange Event when Value Changed\r\n */\r\n onChangeEvent(formField: IFormField){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * convert unSafe link into safe link\r\n */\r\n sanitizeUrl(url: string){\r\n let linkUrl:any = url; \r\n if(linkUrl){\r\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\r\n }\r\n return linkUrl;\r\n }\r\n\r\n selectedCardClickEvent(data: any){\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section: any)=>{\r\n section.fields.forEach((field: any)=>{\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let obj = field.card.data[data.index];\r\n if(obj) {\r\n if(obj.selectedCard){\r\n delete obj.selectedCard;\r\n } else {\r\n obj['selectedCard'] = 'card-active';\r\n }\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n if(data.selectedCard){\r\n data['selectedCard'] = '';\r\n } else {\r\n data['selectedCard'] = 'card-active';\r\n }\r\n }\r\n\r\n}\r\n\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { ISelectItem } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\nexport class DropdownComponent implements OnChanges {\r\n @Input() options: ISelectItem[] = [];\r\n @Input() value: ISelectItem;\r\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\r\n public selectedOption: any;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.options.length) {\r\n if (this.value) {\r\n this.selectedOption = changes['value'].currentValue.toString().trim();\r\n } else {\r\n this.selectedOption = this.options[0];\r\n this.valueChange.emit(this.selectedOption.value);\r\n }\r\n }\r\n }\r\n\r\n handleValueChange(event: { value: string }) {\r\n this.valueChange.emit(event.value);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.css']\r\n})\r\nexport class GalleryComponent {\r\n \r\n @Input() galleryImage: any;\r\n @Input() width: string;\r\n\r\n responsiveOptions: any[] = [\r\n {\r\n breakpoint: '1024px',\r\n numVisible: 5\r\n },\r\n {\r\n breakpoint: '768px',\r\n numVisible: 3\r\n },\r\n {\r\n breakpoint: '560px',\r\n numVisible: 1\r\n }\r\n ];\r\n\r\n constructor() { }\r\n}","import { Directive, Input, HostListener } from '@angular/core';\r\nimport { Table } from 'primeng/table';\r\n\r\n@Directive({\r\n selector: '[pAddRow]',\r\n})\r\nexport class AddRowDirective {\r\n @Input() table: Table;\r\n @Input() newRow: any;\r\n @Input() id: string;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event) {\r\n // Insert a new row\r\n if (this.table && this.table.value) {\r\n this.table.value.unshift({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n }\r\n\r\n // Set the new row in edit mode\r\n this.table.initRowEdit({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n}\r\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\r\n\r\nexport const MenuFilters: IMenuFilter = {\r\n [GridFilterControlType.INPUT]: [\r\n { label: 'Starts with', value: 'startsWith' },\r\n { label: 'Contains', value: 'contains' },\r\n { label: 'Not contains', value: 'notContains' },\r\n { label: 'Ends With', value: 'endsWith' },\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n ],\r\n [GridFilterControlType.NUMERICINPUT]: [\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n { label: 'Less than', value: 'lt' },\r\n { label: 'Less than or equal to', value: 'lte' },\r\n { label: 'Greater than', value: 'gt' },\r\n { label: 'Greater than or equal to', value: 'gte' },\r\n ],\r\n [GridFilterControlType.CALENDAR]: [\r\n { label: 'Date is', value: 'dateIs' },\r\n { label: 'Date is not', value: 'dateIsNot' },\r\n { label: 'Date is before', value: 'dateBefore' },\r\n { label: 'Date is after', value: 'dateAfter' },\r\n ],\r\n};\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\r\nimport { MenuFilters } from '../../base/grid/grid.constant';\r\n\r\n@Component({\r\n selector: 'se-filter-menu',\r\n templateUrl: './filter-menu.component.html',\r\n styleUrls: ['./filter-menu.component.scss'],\r\n})\r\nexport class AppFilterMenuComponent implements OnInit {\r\n public isMenuOpen: boolean = false;\r\n public filterOptions: ISelectItem[] = [];\r\n\r\n @Input() globalFilter: IGlobalFilter;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\r\n }\r\n\r\n toggleMenu() {\r\n this.isMenuOpen = !this.isMenuOpen;\r\n }\r\n\r\n handleFilterSelection({ value }: ISelectItem) {\r\n this.isMenuOpen = false;\r\n this.globalFilter.matchMode = value;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { IMenu } from '../../../models/menu.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'se-menu-bar',\r\n templateUrl: './menu-bar.component.html',\r\n styleUrls: ['./menu-bar.component.scss'],\r\n})\r\nexport class MenuBarComponent implements OnInit {\r\n @Input() hiddenPanelMenu: boolean = true;\r\n @Input() toolTip: string;\r\n @Input() menuBackColor: string;\r\n @Input() menuItems: IMenu[];\r\n @Input() menuFooter: string;\r\n @Input() menuTitle: string;\r\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\r\n public menuBarItems: MenuItem[] = [];\r\n toggleMenu: boolean = false;\r\n roles: string[] = [];\r\n isMenubarHidden: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private cookieService: CookieService,\r\n public router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n const toggleMenu = localStorage.getItem('toggleMenu');\r\n const cookieValue = this.cookieService.get('toggleMenu'); \r\n\r\n if (toggleMenu) {\r\n this.toggleMenu = JSON.parse(toggleMenu);\r\n }else if(cookieValue){\r\n this.toggleMenu = JSON.parse(cookieValue);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n\r\n this.menuBarItems = this.menuItems.map((x) => ({\r\n ...x,\r\n style: x.hidden ? { display: 'none' } : x.style,\r\n }));\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \r\n }\r\n\r\n clickEvent() {\r\n this.onClickEvent.emit();\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.menuItems) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.menuItems.forEach((menu) => {\r\n if (menu.items) {\r\n menu.items.forEach((item) => {\r\n let permissions: any = item.permissions;\r\n if (!permissions) permissions = menu.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } \r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n item.style = { display: 'none' };\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n // if all items of menu is hidden then hide menu as well\r\n menu.hidden =\r\n menu.items.length === menu.items.filter((x) => x.hidden).length;\r\n }\r\n });\r\n\r\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n}\r\n\r\n","import { Type } from '@angular/core';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport const ESideBar = {\r\n LEFT: 'left-sidebar',\r\n RIGHT: 'right-sidebar',\r\n};\r\n\r\nexport interface ISidebar {\r\n icon: string;\r\n action?: string;\r\n section: string;\r\n component?: Type<any>;\r\n [key: string]: any;\r\n data?: IData;\r\n onReturn?: (data: any) => any;\r\n onClick?: (value: any) => void;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n id?: string;\r\n tooltip?: string\r\n iFrame?: IFrame;\r\n linkId?:string;\r\n params?:any;\r\n}\r\n\r\nexport enum ESidebarAction {\r\n NAVIGATION = 'navigation',\r\n OPENDIALOG = 'dialog',\r\n IFRAME = '_iframe',\r\n}\r\n\r\nexport interface IFrame {\r\n link?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface IData {\r\n header?: string;\r\n width?: string;\r\n height?: string;\r\n data?: any;\r\n scrollable?: boolean;\r\n}\r\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { HyperlinkService } from '../../../services/hyperlink.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\n@Component({\r\n selector: 'se-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent implements OnInit {\r\n toggleMenu: boolean = false;\r\n openDialogs: any = [];\r\n @Input() navHidden: boolean = false;\r\n @Input() collapseSidebar: boolean = false;\r\n @Input() menuTitle: string;\r\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\r\n if (newSidebarItems) {\r\n this.sidebarItemsList = newSidebarItems;\r\n this.initializeSideBar();\r\n }\r\n }\r\n\r\n public sidebarItemsList: ISidebar[] = [];\r\n public menuItems: MenuItem[] = [];\r\n roles: string[] = [];\r\n isSidebarHidden: boolean = false;\r\n\r\n constructor(\r\n private instance: Renderer2,\r\n private authService: AuthenticationService,\r\n public dialogService: DialogService,\r\n private router: Router,\r\n private pageLoggerService: PageLoggerService,\r\n private hyperlinkService: HyperlinkService\r\n ) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n initializeSideBar() {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\r\n label: x.label,\r\n icon: x.icon,\r\n id: x.id,\r\n section: x.section,\r\n expanded: x.expanded,\r\n action: x.action,\r\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\r\n title: this.setMenuTitle(x),\r\n command: ({ item }) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(x, item);\r\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(x, item);\r\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(x, item);\r\n } else {\r\n this.handleActiveItem(item);\r\n }\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: x.hidden ? 'none' : '',\r\n },\r\n onClick: x.onClick,\r\n onReturn: x.onReturn,\r\n disabled: x.disabled,\r\n }));\r\n }\r\n\r\n setMenuTitle(x: any): string {\r\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\r\n }\r\n\r\n setMenuItems(x: ISidebar): any {\r\n return x.items.map((menu: any) => ({\r\n label: menu.label,\r\n icon: menu.icon,\r\n id: menu.id,\r\n section: menu.section,\r\n expanded: menu.expanded,\r\n action: menu.action,\r\n title: this.setMenuTitle(x),\r\n command: ({ item }: any) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(menu, x);\r\n }\r\n this.handleActiveItem(item);\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: menu.hidden ? 'none' : '',\r\n },\r\n onClick: menu.onClick,\r\n onReturn: menu.onReturn,\r\n disabled: menu.disabled,\r\n }))\r\n }\r\n\r\n loadIFrame(menu: ISidebar, item: any) {\r\n if (menu) {\r\n const dialogRef = this.dialogService.open(IframeComponent, {\r\n header: menu.section,\r\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\r\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\r\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n this.handleActiveItem(item);\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.sidebarItemsList) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.sidebarItemsList.forEach((item, index) => {\r\n let permissions: any = item.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n item.id = index.toString();\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n item.disabled = true;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param menu\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n openDialog(menu: ISidebar, item: any): void {\r\n const menuData:any = menu.data ? menu.data : menu;\r\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\r\n if (menu.component) {\r\n const dialogRef = this.dialogService.open(menu.component, menuData);\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\r\n this.openDialogs.push(dialogRef);\r\n this.handleActiveItem(item);\r\n\r\n if (this.openDialogs && this.openDialogs.length > 1) {\r\n this.openDialogs[0].close();\r\n this.openDialogs.shift();\r\n }\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param x\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n navigateToSection(x: ISidebar, item: any): void {\r\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\r\n this.handleActiveItem(item);\r\n }\r\n\r\n /**\r\n *\r\n * @param item\r\n * Passes the event of the menu\r\n */\r\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\r\n this.menuItems = this.menuItems.map((x) =>\r\n x.icon === icon && closeDialog\r\n ? { ...x, styleClass: 'active-icon' }\r\n : {\r\n ...x,\r\n styleClass: '',\r\n style: {\r\n borderBottom: '1px solid #e9ecef',\r\n display: x.style?.display === 'none' ? 'none' : '',\r\n },\r\n }\r\n );\r\n }\r\n\r\n clickedMenu(menu: MenuItem[]) {\r\n menu.map((item: any) => {\r\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\r\n if (\r\n item.styleClass === 'active-icon' &&\r\n matchedItem &&\r\n matchedItem.onClick\r\n ) {\r\n this.hyperlinkService\r\n .addHyperlinks(matchedItem)\r\n .then((response: any) => {\r\n if (matchedItem.linkId) {\r\n this.hyperlinkService.setSidebarLink(\r\n response,\r\n this.sidebarItemsList\r\n );\r\n } else {\r\n matchedItem.onClick(item);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { IHeader } from '../../../models/header.model';\r\nimport { EFormControl } from '../../../models/form.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'se-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnChanges {\r\n @Input() headers: IHeader;\r\n\r\n dynamicCase = EFormControl;\r\n roles: string[] = [];\r\n isHeaderHidden: boolean = false;\r\n\r\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\r\n\r\n ngOnInit(): void {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions on form\r\n this.applyUserPermissions();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if(this.headers && this.headers.fields){\r\n this.headers.fields.forEach((x) => {\r\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\r\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\r\n }\r\n if (x.value?.toString().includes(':') && x.timeOnly) {\r\n const index = x.value.indexOf(':');\r\n const time = x.value.substring(index - 2, index + 6);\r\n x.value = time;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.headers) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.headers.fields.forEach((headerField) => {\r\n let permissions: any = headerField.permissions;\r\n if (!permissions) permissions = this.headers.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n headerField.disabled = true;\r\n } else {\r\n headerField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n headerField.disabled = false;\r\n headerField.hidden = false;\r\n } else {\r\n headerField.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (headerField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n loaderState = new Subject<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Shows loader\r\n */\r\n showLoader(isDarkBackground = true) {\r\n this.loaderState.next({ loading: true, isDarkBackground });\r\n }\r\n\r\n /**\r\n * Hides loader\r\n */\r\n hideLoader() {\r\n this.loaderState.next({ loading: false });\r\n }\r\n\r\n /**\r\n * Fires on loader state changed.\r\n * @returns {Observable<any>}\r\n */\r\n onLoaderStateChange(): Observable<any> {\r\n return this.loaderState.asObservable();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoaderService } from '../../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'se-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent implements OnInit, OnDestroy {\r\n isLoading = false;\r\n isDarkBackground = true;\r\n loaderSubscription$: Subscription = new Subscription();\r\n\r\n constructor(\r\n public loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loaderSubscription$ = this.loaderService\r\n .onLoaderStateChange()\r\n .subscribe((state: any) => {\r\n this.isLoading = state.loading ? true : false;\r\n this.isDarkBackground = state.isDarkBackground ? true : false;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.loaderSubscription$) {\r\n this.loaderSubscription$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IFormField } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { RequestService } from '../../../services/request.service';\r\n@Component({\r\n selector: 'se-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @Input() acceptFileTypes: any;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() fields: any;\r\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\r\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n uploadFile(files: any) {\r\n let fileData = new FormData(); \r\n let chooseFile:boolean = false;\r\n for (let i = 0; i < files.length; i++) {\r\n if (files[i]) {\r\n chooseFile = true;\r\n fileData.append(files[i].name, files[i]);\r\n }\r\n }\r\n\r\n if (fileData && chooseFile) {\r\n if (this.fields && this.fields.uniqueKey?.length > 0) {\r\n fileData.append('uniqueKey', this.fields?.uniqueKey);\r\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\r\n fileData.append('azureContainer', this.fields?.azureContainer);\r\n }\r\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\r\n (data: any) => {\r\n if (data) {\r\n this.alertService.success('File Upload Successfully.');\r\n if (this.fields?.onReturn) {\r\n this.fields.onReturn(data.results);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n this.fileUrl.emit(data.results);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n if (this.fields.onReturn) {\r\n this.fields.onReturn(error);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n onClickEvent() {\r\n if (this.fields && this.fields.onClick) {\r\n this.fields.onClick();\r\n console.log('this.fields: ', this.fields);\r\n }\r\n } \r\n}\r\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { RequestService } from '../../../services/request.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\n\r\n@Component({\r\n selector: 'se-caption',\r\n templateUrl: './caption.component.html',\r\n styleUrls: ['./caption.component.scss'],\r\n})\r\nexport class CaptionComponent implements OnInit {\r\n dynamicForm: IDynamicForm;\r\n id: number;\r\n caption: string;\r\n\r\n constructor(\r\n private formService: FormService,\r\n private requestService: RequestService,\r\n private alertService: AlertService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.config.data) {\r\n this.id = this.config.data.id;\r\n this.caption = this.config.data.caption;\r\n }\r\n this.initilizeForm();\r\n }\r\n\r\n initilizeForm() {\r\n this.dynamicForm = {\r\n formSections: [\r\n {\r\n fields: [\r\n this.formService.addTextbox({\r\n field: 'fileCaption',\r\n label: 'Caption',\r\n value: this.caption,\r\n column: 12,\r\n validations: [{ type: EValidator.REQUIRED }]\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n saveForm(formFiels: any) {\r\n this.requestService\r\n .get<any[], any>('/AzureUpload/UpdateCaption', {\r\n Id: this.id,\r\n fileCaption: utilities.getFormFieldValue(\r\n this.dynamicForm,\r\n 'fileCaption'\r\n ),\r\n })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.alertService.success('Caption added successfully.');\r\n this.ref.close(response);\r\n }\r\n },\r\n ({ error }) => {\r\n this.ref.close();\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n cancelForm(event: any) {\r\n console.log('CancelForm: ', event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'se-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n})\r\nexport class CardComponent implements OnInit {\r\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\r\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\r\n @Input() data: any = [];\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n @Input() card: any;\r\n dynamicForm: IDynamicForm;\r\n showFiles: boolean = false;\r\n displayCardInfo: IViewCardProp;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private confirmationService: ConfirmationService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n if (this.card) {\r\n let { data, formSections, cardInfo }: any = this.card;\r\n if(cardInfo && Object.keys(cardInfo).length){\r\n this.displayCardInfo = cardInfo;\r\n data = this.gridService.setDataFields(data);\r\n const newArr = [];\r\n data?.forEach((record)=>{\r\n if(!Object.keys(record)?.includes('azurecontainerid')){\r\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\r\n } else {\r\n newArr.push(record);\r\n }\r\n });\r\n this.data = newArr;\r\n } else {\r\n this.data = this.gridService.setDataFields(data);\r\n }\r\n this.dynamicForm = { formSections };\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n this.setCardPropValue('allowDownload');\r\n this.setCardPropValue('allowDelete');\r\n this.setCardPropValue('allowEditableCaption');\r\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\r\n /** In case of when we are using this component for stand alone then if formSection is exist in\r\n the this.card and then add in the data array.\r\n */\r\n if (this.data) {\r\n this.data.forEach((x: any) => {\r\n if (!x.dynamicform) {\r\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\r\n }\r\n utilities.setCardFieldsData(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n setCardPropValue(prop:string){\r\n if(!this.card[prop]?.toString()?.length) {\r\n this.card[prop]= true;\r\n }\r\n }\r\n\r\n dragAndDrop(event: any) {\r\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\r\n event.item?.element?.nativeElement;\r\n this.card.data = this.data;\r\n this.card['change'] = true;\r\n if (this.card && this.card.onSort) {\r\n this.card.onSort(this.data);\r\n }\r\n }\r\n\r\n deleteImage(event: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this Image?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex(\r\n (i) => i.blobfileurl === event.blobfileurl\r\n );\r\n let obj = arr[index];\r\n arr.splice(index, 1);\r\n this.data = [...arr];\r\n\r\n if (this.card && this.card.onDelete) {\r\n obj = this.replacePropName(obj);\r\n this.card.onDelete(obj);\r\n this.onDeleteCard.emit();\r\n }\r\n }\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n replacePropName(cardInfo:any){\r\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\r\n const cardProp = {...this.displayCardInfo};\r\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\r\n return obj;\r\n } else {\r\n return cardInfo;\r\n }\r\n }\r\n\r\n saveCaption(event: any) {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\r\n let obj = arr[index];\r\n if (index !== -1) {\r\n obj.filecaption = event.caption;\r\n arr.splice(index, 1, obj);\r\n this.card.data = arr;\r\n this.card['change'] = true;\r\n }\r\n if (this.card && this.card?.onCaptionSave) {\r\n obj = this.replacePropName(obj);\r\n this.card.onCaptionSave(obj);\r\n }\r\n }\r\n }\r\n\r\n onClickEvent(data: any, index: number){\r\n data['index'] = index;\r\n this.selectedCard.emit(data);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ESelectFileType } from '../../../models/form.model';\r\n\r\n@Component({\r\n selector: 'se-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n})\r\nexport class fileComponent implements OnInit {\r\n @Input() url: string = '';\r\n @Input() caption: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '200px';\r\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\r\n @Input() id: number;\r\n @Input() name: string = '';\r\n @Input() type: any;\r\n @Input() allowDownloadFile: boolean = true;\r\n @Input() allowEditableCaption: boolean = true;\r\n @Input() allowDeleteFile: boolean = true;\r\n editableCaption: boolean = false;\r\n\r\n constructor(private confirmationService: ConfirmationService) {}\r\n\r\n ngOnInit(): void {\r\n this.checkFileExtension();\r\n }\r\n\r\n checkFileExtension() {\r\n switch (this.type) {\r\n case 'png':\r\n case 'jpeg':\r\n case 'jfif':\r\n case 'jpg': {\r\n this.type = '.image';\r\n break;\r\n }\r\n case 'xlsx':\r\n case 'xls':\r\n case 'xlsm':\r\n case 'txt': {\r\n this.type = ESelectFileType.EXCEL;\r\n break;\r\n }\r\n case 'pdf':\r\n case 'html': {\r\n this.type = ESelectFileType.PDF;\r\n break;\r\n }\r\n case 'doc':\r\n case 'docx': {\r\n this.type = ESelectFileType.DOCUMENT;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n downloadFile(url: string) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n\r\n captionClickEvent() {\r\n if (this.allowEditableCaption) {\r\n this.editableCaption = true;\r\n }\r\n }\r\n\r\n captionSave(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n if(caption !== null){\r\n this.caption = caption;\r\n this.editableCaption = false;\r\n this.onSaveEvent.emit(obj);\r\n }\r\n }\r\n\r\n onDeleteFile(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n this.onDeleteEvent.emit(obj);\r\n }\r\n\r\n cancel() {\r\n this.editableCaption = false;\r\n }\r\n}\r\n","import { Component, Input, OnInit, Optional } from '@angular/core';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport * as utilities from '../../../../../services/utilities.service';\r\n\r\n\r\n@Component({\r\n selector: 'se-report-filter',\r\n templateUrl: './report-filter.component.html',\r\n styleUrls: ['./report-filter.component.scss']\r\n})\r\nexport class ReportFilterComponent implements OnInit {\r\n dynamicForm:IDynamicForm;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n \r\n }\r\n initializeForm(){\r\n this.dynamicForm = {\r\n formSections:[\r\n {\r\n fields: [\r\n ...this.formFields,\r\n {\r\n label: 'Download Report',\r\n control: EFormControl.ADD_BUTTON,\r\n hidden: this.config?.data?.hideGenerateReportBtn,\r\n onClick: () => {\r\n this.downloadReport();\r\n },\r\n }\r\n ]\r\n }\r\n ]\r\n \r\n }\r\n }\r\n createDynamicFields() {\r\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n this.setParamFieldValue();\r\n this.initializeForm();\r\n // set dropdown data based on matched field.\r\n this.setDropDownData(reportJson);\r\n },\r\n (error) => {\r\n this.initializeForm();\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n setParamFieldValue(){\r\n if(this.config.data && this.config.data.param?.length > 0){\r\n this.config.data.param.forEach((param: any)=>{\r\n this.formFields.forEach((field)=>{\r\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\r\n if(matchKey && matchKey.length > 0){\r\n field.value = param[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n setDropDownData(reportJson: any) {\r\n reportJson.Parameters?.forEach((record: any) => {\r\n if(record.isuniquekey){\r\n this.requestService.get<any[], any>('/Data/Fetch', {\r\n uniqueKey: record.isuniquekey,\r\n filters: []\r\n }).subscribe((response:any)=>{\r\n utilities.setFormPropValues(this.dynamicForm, record.paramname, [\r\n { name: 'data', value: response.records }, \r\n ]); \r\n },(error) => {\r\n this.alertService.apiError(error);\r\n })\r\n }\r\n });\r\n }\r\n getFilters(){\r\n let filters: any = [];\r\n this.dynamicForm?.formSections?.forEach((section)=>{\r\n section.fields?.forEach((field)=>{\r\n if(field && field.value){\r\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\r\n };\r\n });\r\n }); \r\n return filters;\r\n }\r\n \r\n downloadReport(){ \r\n const filters:any = this.getFilters(); \r\n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n \r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\r\n\r\n@Component({\r\n selector: 'se-generate-report-btn',\r\n templateUrl: './generate-report-btn.component.html',\r\n styleUrls: ['./generate-report-btn.component.scss']\r\n})\r\nexport class GenerateReportBtnComponent implements OnInit {\r\n @Input() repId: any;\r\n @Input() params: any;\r\n @Input() showDialog: boolean;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n }\r\n\r\n reportClickEvent() {\r\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\r\n this.dialogService.open(ReportFilterComponent, {\r\n width: '80%',\r\n height: '100%',\r\n header: 'Generate Report',\r\n data: { Id: this.repId, param: this.params },\r\n });\r\n } else {\r\n this.downloadQuickReport();\r\n }\r\n }\r\n\r\n createDynamicFields() {\r\n this.requestService\r\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\r\n .subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n },\r\n (error) => {\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n\r\n getFilters() {\r\n let filters: any[] = [];\r\n this.formFields.forEach((field) => {\r\n if (field && field.value?.toString()?.length > 0) {\r\n filters.push({\r\n field: field.field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value: field.value,\r\n });\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n downloadQuickReport() {\r\n let filters: any[] = [];\r\n if(this.params && this.params.length > 0){\r\n this.params.forEach((param)=>{\r\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\r\n });\r\n } else {\r\n filters = this.getFilters();\r\n }\r\n \r\n this.requestService\r\n .download('/Report/Generate', { Id: this.repId, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\r\nimport {\r\n IGlobalFilter,\r\n GridFilterControlType,\r\n EGridColumnType,\r\n addGlobalFilter,\r\n EDayRange,\r\n EFilterValidator,\r\n} from '../../../models/grid.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { GridService } from '../../../services/grid.service';\r\n\r\n@Component({\r\n selector: 'se-global-filters',\r\n templateUrl: './global-filters.component.html',\r\n styleUrls: ['./global-filters.component.scss'],\r\n})\r\nexport class SeGlobalFilterComponent implements OnInit {\r\n @ViewChild('rangeCalendar') datePicker: any;\r\n @Input() globalFilters: IGlobalFilter[] = [];\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n\r\n public fiterTypes = GridFilterControlType;\r\n public columnType = EGridColumnType;\r\n public showDialog: boolean = false;\r\n public startDate: Date;\r\n public endDate: Date;\r\n\r\n showInput: boolean = false;\r\n filter: any = '';\r\n hideClearFilterBtn: boolean = true;\r\n calendarFormat:string = 'mm/dd/yy';\r\n\r\n constructor(\r\n public datepipe: DatePipe,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n private gridService: GridService,\r\n public dialogService: DialogService,\r\n private alertService: AlertService,\r\n private el: ElementRef,\r\n ) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.config && this.config.data){\r\n this.showDialog = this.config.data.openDialog;\r\n if(this.config.data.globalFilters){\r\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\r\n }\r\n \r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n // spliting date range value and assign to value and valueTwo in Date_Range Control\r\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \r\n dateRangeFilter.forEach((dateRange)=>{\r\n if(dateRange.value && dateRange.valueTwo){\r\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \r\n this.setDateRangeFilterValue(dateRange);\r\n }\r\n })\r\n // Filtring Numeric Range controls on global filter \r\n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\r\n numerRangeFilter.forEach((numericRange) =>{\r\n if(numericRange){\r\n this.setNumericRangeValueFrom(numericRange);\r\n this.setNumericRangeValueTwo(numericRange);\r\n }\r\n })\r\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\r\n (this.globalFilters.some((filter)=> filter.value))\r\n ){\r\n this.applyFilters(false);\r\n }\r\n }, 500);\r\n }\r\n\r\n setDateRangeFilterValue(dateRange){\r\n if(dateRange?.value?.length > 1){\r\n dateRange.value[0] = new Date(dateRange.value[0]);\r\n dateRange.value[1] = new Date(dateRange.value[1]);\r\n this.selectDate(dateRange, false);\r\n }\r\n }\r\n \r\n // change calendar format on run time if user type date on the calendar field.\r\n calendarFocusEvent(globalFilter:IGlobalFilter){\r\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\r\n let year = a?.target?.value?.toString()?.split('/')[2];\r\n year = year?.toString().split(\" \")[0];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n if(globalFilter.type === GridFilterControlType.CALENDAR){\r\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\r\n }\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n\r\n checkFilterValidation(removeError:boolean = false):boolean{\r\n let valid:boolean = false;\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\r\n valid = true;\r\n filter.errorMessage = filter.displayText+\" is required\";\r\n filter.requiredField = true;\r\n } else {\r\n filter.errorMessage = '';\r\n }\r\n })\r\n }\r\n return valid;\r\n }\r\n\r\n ngOnChanges(){\r\n this.checkFilterValidation();\r\n this.globalFilters?.forEach((filter)=>{\r\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\r\n this.onFocusOutEvent(filter);\r\n }\r\n })\r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n const girdClearFilterBtn = document.getElementById(\r\n 'clearGridFilterValuesButton'\r\n );\r\n if(girdClearFilterBtn){\r\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\r\n this.hideClearFilterBtn = true;\r\n }else{\r\n this.hideClearFilterBtn = false;\r\n }\r\n }else{\r\n this.hideClearFilterBtn = true;\r\n }\r\n }\r\n\r\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\r\n if(globalFilter.toField){\r\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\r\n }\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n\r\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\r\n if(field){\r\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\r\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\r\n if(digitInfo){\r\n value = parseFloat(value)?.toFixed(digitInfo);\r\n }else{\r\n value = parseFloat(value)?.toFixed(2);\r\n }\r\n }\r\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\r\n if(index > -1){\r\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \r\n } else {\r\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\r\n }\r\n }\r\n }\r\n\r\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\r\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \r\n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n \r\n }\r\n\r\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\r\n if(globalFilter.value?.length > 0){\r\n const fromDateValue = this.datepipe.transform(\r\n globalFilter.value[0],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n const toDateValue = this.datepipe.transform(\r\n globalFilter.value[1],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\r\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\r\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\r\n }\r\n }else if(clearValue){\r\n this.matchSameFields(globalFilter.fromField, null, 'gte');\r\n this.matchSameFields(globalFilter.toField, null, 'lte');\r\n }\r\n }\r\n\r\n\r\n onFocusOutEvent(globalFilter: IGlobalFilter){\r\n if (globalFilter && globalFilter.onFocusOut) {\r\n globalFilter.onFocusOut(globalFilter);\r\n }\r\n setTimeout(() => {\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n this.filtersApplied.emit(this.globalFilters);\r\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\r\n }\r\n\r\n /**\r\n * Apply selected filters\r\n */\r\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\r\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\r\n this.setDateRangeFilterValue(globalFilter);\r\n } \r\n this.gridService.applyFilterEvent = filterEvent;\r\n const globalFilters = this.globalFilters.filter((x) => x.field);\r\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\r\n if(index > -1){\r\n globalFilters.splice(index, 1);\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (this.showDialog) {\r\n this.ref.close(globalFilters);\r\n } else \r\n if(!this.checkFilterValidation()){\r\n this.checkFilterValidation(true);\r\n this.filtersApplied.emit(globalFilters);\r\n }\r\n }\r\n\r\n // set By Defualt Calender Range \r\n setDefualtCalendarRange(check: boolean = true){\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\r\n setTimeout(() => {\r\n this.showNext(filter, check);\r\n }, 100);\r\n }\r\n });\r\n }\r\n }\r\n\r\n showNext(filter: IGlobalFilter, check: boolean = true): string {\r\n let nextValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n nextValue = this.setDayFilter(filter, true);\r\n break;\r\n case EDayRange.MONTH:\r\n nextValue = this.setMonthFilter(filter, true);\r\n break;\r\n case EDayRange.YEAR:\r\n nextValue = this.setYearFilter(filter, true);\r\n break;\r\n default:\r\n // week\r\n nextValue = this.setWeekFilter(filter, true);\r\n break;\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.gridService.applyFilterEvent = check;\r\n this.filtersApplied.emit(this.globalFilters);\r\n return nextValue;\r\n }\r\n\r\n showPrevious(filter: IGlobalFilter): string {\r\n let previousValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n previousValue = this.setDayFilter(filter, false);\r\n break;\r\n case EDayRange.MONTH:\r\n previousValue = this.setMonthFilter(filter, false);\r\n break;\r\n case EDayRange.YEAR:\r\n previousValue = this.setYearFilter(filter, false);\r\n break;\r\n default:\r\n // week\r\n previousValue = this.setWeekFilter(filter, false);\r\n break;\r\n }\r\n this.gridService.applyFilterEvent = true;\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.filtersApplied.emit(this.globalFilters);\r\n return previousValue;\r\n }\r\n\r\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\r\n return (filter.value =\r\n this.datepipe.transform(\r\n this.startDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ) +\r\n '|' +\r\n this.datepipe.transform(\r\n this.endDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ));\r\n }\r\n\r\n setDateValue(filter: any) {\r\n let value: Date;\r\n if (filter.value) {\r\n value = new Date(filter.value.split('|')[0]);\r\n return new Date(value.setMonth(value.getMonth()));\r\n } else {\r\n return new Date();\r\n }\r\n }\r\n\r\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n )\r\n : currentDate;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() - 1\r\n )\r\n : currentDate;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\r\n : firstDateOfYear;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\r\n : firstDateOfYear;\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfMonth = new Date(\r\n currentDate.getFullYear(),\r\n currentDate.getMonth(),\r\n 1\r\n );\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() - 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 0\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n let currentDate = this.setDateValue(filter);\r\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\r\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() + weekSeconds)\r\n : new Date(firstDay.getTime());\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() - weekSeconds)\r\n : new Date(firstDay.getTime() - weekSeconds);\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(globalFilters: IGlobalFilter) { \r\n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\r\n }\r\n\r\n /**\r\n * Clear all filter values\r\n */\r\n clearFilters() {\r\n this.globalFilters.map((item: any) => (item.value = null));\r\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\r\n if(clearGridFilter){\r\n clearGridFilter.click();\r\n }\r\n }\r\n\r\n /**\r\n * Clear values of Date Range Filter\r\n */\r\n clearDateRangeValue(filter: any){\r\n this.setDateRangeValue(filter, true)\r\n }\r\n\r\n /**\r\n * Close dialog without applying filters\r\n */\r\n cancel() {\r\n this.clearFilters();\r\n this.ref.close();\r\n }\r\n rangeDateclose(globalFilter: any) {\r\n this.datePicker.hideOverlay();\r\n const id: any = document.getElementById(globalFilter.displayText);\r\n id.focus();\r\n }\r\n\r\n filterInput() {\r\n this.showInput = !this.showInput;\r\n }\r\n\r\n /**\r\n * Focused the calender input\r\n */\r\n selectDate(globalFilter: any, focused: boolean = false){\r\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\r\n this.setDateRangeValue(globalFilter);\r\n if(focused ==true){\r\n this.rangeDateclose(globalFilter); \r\n }\r\n }\r\n if(focused){\r\n document.getElementById(globalFilter.field)?.focus();\r\n }\r\n }\r\n tabFocusEvent(globalFilter: any) {\r\n const className = this.el.nativeElement.querySelector(\r\n '.'+globalFilter.field\r\n );\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\r\nimport { IGlobalFilter } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-filter',\r\n templateUrl: './filter.component.html',\r\n})\r\nexport class SeFilterComponent implements OnInit {\r\n @Input() globalFilters: IGlobalFilter[];\r\n @Input() showDialogFilter: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public dialogService: DialogService) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void { }\r\n\r\n /**\r\n * Opens the filter dialog\r\n */\r\n openFilters() {\r\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\r\n header: 'Choose Filters',\r\n width: '70%',\r\n styleClass: 'global-filter-visible',\r\n data: { globalFilters: this.globalFilters, openDialog: true},\r\n });\r\n\r\n // Modal response\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n this.filtersApplied.emit(res);\r\n }\r\n });\r\n }\r\n\r\n globalFiltersApplied(event: any){\r\n this.filtersApplied.emit(event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-grid-row-actions',\r\n templateUrl: './grid-row-actions.component.html',\r\n styleUrls: ['./grid-row-actions.component.scss']\r\n})\r\nexport class GridRowActionsComponent implements OnInit {\r\n @Input() editing: boolean;\r\n\r\n @Input() editRowPermission: boolean;\r\n\r\n @Input() deleteRowPermission: boolean;\r\n\r\n @Input() editAllRows: boolean = false;\r\n\r\n @Input() row: any;\r\n\r\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onRowEditInit(row: any) {\r\n this.onRowEditInitBtn.emit(row);\r\n }\r\n\r\n deleteRecord(row: any) {\r\n this.deleteRecordBtn.emit(row);\r\n }\r\n\r\n onRowEditSave(row: any) {\r\n this.onRowEditSaveBtn.emit(row);\r\n }\r\n\r\n onRowEditCancel(row: any) {\r\n this.onRowEditCancelBtn.emit(row);\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { GridComponent } from './components/base/grid/grid.component';\r\nimport { FormComponent } from './components/base/form/form.component';\r\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\r\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\r\nimport { IframeComponent } from './components/base/iframe/iframe.component';\r\n\r\n// Library\r\nimport { TableModule } from 'primeng/table';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { AddRowDirective } from './directive/add-row.directive';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NotesComponent } from './components/shared/notes/notes.component';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { RequestService } from './services/request.service';\r\nimport { Environment } from './models/response.model';\r\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\r\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\r\nimport { HeaderComponent } from './components/base/header/header.component';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { LoaderComponent } from './components/base/loader/loader.component';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport {AvatarModule} from 'primeng/avatar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\r\nimport { CaptionComponent } from './components/base/caption/caption.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CardComponent } from './components/base/cards/card.component';\r\nimport { fileComponent } from './components/base/file/file.component';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { AlertService } from '../public-api';\r\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\r\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\r\nimport { SeFilterComponent } from './components/base/filter/filter.component';\r\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\r\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\r\n\r\n\r\nexport const toasterModuleforRoot = ToastrModule.forRoot();\r\n\r\n@NgModule({\r\n declarations: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n DropdownComponent,\r\n AddRowDirective,\r\n FormComponent,\r\n NotesComponent,\r\n AppFilterMenuComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n IframeComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeGlobalFilterComponent,\r\n SeFilterComponent,\r\n AlertPopUpComponent\r\n ],\r\n\r\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\r\n imports: [\r\n TableModule,\r\n PanelMenuModule,\r\n MenuModule,\r\n MultiSelectModule,\r\n FormsModule,\r\n BrowserAnimationsModule,\r\n TabViewModule,\r\n DropdownModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ButtonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n InputTextModule,\r\n TriStateCheckboxModule,\r\n InputTextareaModule,\r\n TooltipModule,\r\n BrowserModule,\r\n GalleriaModule,\r\n AutoCompleteModule,\r\n AccordionModule,\r\n ConfirmDialogModule,\r\n MessagesModule,\r\n InputNumberModule,\r\n AvatarModule,\r\n CardModule,\r\n DragDropModule,\r\n InputSwitchModule,\r\n toasterModuleforRoot\r\n ],\r\n exports: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n FormComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeFilterComponent,\r\n SeGlobalFilterComponent\r\n ],\r\n})\r\nexport class SEToolkitModule {\r\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\r\n return {\r\n ngModule: SEToolkitModule,\r\n providers: [\r\n RequestService,\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { EFormControl, IHyperlink } from './form.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IHeader {\r\n fields: IHeaderField[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface IHeaderField {\r\n label?: string;\r\n value?: any;\r\n control?: EFormControl;\r\n data?: any[];\r\n onClick?: () => void;\r\n class?: string;\r\n column?: number;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport enum EButtonClass {\r\n NORMAL = 'p-button-sm',\r\n SUCCESS = 'p-button-success p-button-sm',\r\n INFO = 'p-button-info p-button-sm',\r\n WARNING = 'p-button-warning p-button-sm',\r\n HELP = 'p-button-help p-button-sm',\r\n DANGER = 'p-button-danger p-button-sm',\r\n}\r\n\r\nexport interface AddHeaderField {\r\n control?: EFormControl;\r\n label?: string;\r\n value?: string;\r\n column?: number;\r\n data?: any;\r\n class?: string;\r\n onClick?: (() => void) | any;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport interface IHeaderFormat {\r\n type: EHeaderFormatType | any;\r\n formatParams?:IFormatParams\r\n | IDateFormatParams\r\n | INumberFormatParams\r\n | ICurrencyFormatParams;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParams {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParams extends IFormatParams {\r\n format?: string;\r\n}\r\n\r\nexport interface INumberFormatParams extends IFormatParams {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParams extends INumberFormatParams {\r\n currency: string;\r\n}\r\n\r\nexport enum EHeaderFormatType {\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}","import { Injectable } from '@angular/core';\r\nimport { IMenu } from '../models/menu.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SideBarService {\r\n constructor() { }\r\n\r\n /**\r\n * Checks parent menu and expands it if current route exists in its child menus.\r\n * @param menuLabel\r\n * @returns {boolean}\r\n */\r\n isMenuExpanded(\r\n currentRoute: string,\r\n items: IMenu[],\r\n menuLabel: string\r\n ): boolean {\r\n if (items && items.length) {\r\n // check currentRoute contains loadDataForEdit or not\r\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\r\n let detailPage = '';\r\n if(currentRoute?.toString()?.includes(\"list\")){\r\n detailPage = currentRoute.replace('list', 'detail');\r\n } \r\n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\r\n let matchedItems = [];\r\n if(currentIndex > -1){\r\n matchedItems = items[currentIndex]?.items;\r\n }\r\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl } from '../models/form.model';\r\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HeaderService {\r\n constructor() {}\r\n\r\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\r\n if (!headerInfo.column) {\r\n headerInfo.column = 3;\r\n }\r\n\r\n const headerField: IHeaderField = {\r\n label: headerInfo.label,\r\n control: headerInfo.control,\r\n value: headerInfo.value,\r\n column: headerInfo.column,\r\n data: headerInfo.data,\r\n class: headerInfo.class,\r\n onClick: headerInfo.onClick,\r\n hyperlink: headerInfo.hyperlink,\r\n disabled: headerInfo.disabled,\r\n hidden: headerInfo.hidden,\r\n permissions: headerInfo.permissions,\r\n format: headerInfo.format,\r\n showTime: headerInfo.showTime,\r\n timeOnly: headerInfo.timeOnly,\r\n };\r\n return headerField;\r\n }\r\n\r\n addLabel(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.LABEL;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n \r\n addDropdown(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.DROPDOWN;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addButton(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.BUTTON;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CHECKBOX;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.HYPERLINK;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CALENDAR;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl, IDynamicForm } from '../models/form.model';\r\nimport { AlertService } from './alert.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from '../../lib/services/utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CardService {\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\r\n let imageToDelete =\r\n imageInfo.id && imageInfo.id > 0\r\n ? { RecordId: imageInfo.id }\r\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\r\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\r\n (response: any) => {\r\n this.deleteFile(imageInfo, dynamicForm, cardId);\r\n if (imageInfo.tables) {\r\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\r\n } else {\r\n this.alertService.success('Image deleted successfully.');\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n deleteImageFromTables(tables: any[], uniqueKey: string) {\r\n this.requestService\r\n .get('/Data/BulkDelete', {\r\n UniqueKey: uniqueKey,\r\n tables: tables,\r\n })\r\n .subscribe(\r\n (response) => {\r\n this.alertService.success('Image deleted successfully.');\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n getCardData(formSections: any, id: string): any {\r\n let arr = {};\r\n formSections?.forEach((formSection: any) => {\r\n formSection.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\r\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n setFileUploadData(response: any, dynamicForm: any, id: string) {\r\n if (response) {\r\n dynamicForm.formSections?.forEach((x: any) => {\r\n x.fields.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\r\n field.card?.data?.unshift(...response);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\r\n const fieldInfo = this.getCardData(\r\n dynamicForm.formSections,\r\n id\r\n );\r\n let cardData = fieldInfo.data;\r\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\r\n\r\n dynamicForm.formSections?.forEach((section) => {\r\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\r\n if (card && card.card) {\r\n card.card.data = cardData;\r\n }\r\n });\r\n }\r\n\r\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\r\n arr = utilities.setDataFields(arr);\r\n cardInfo = utilities.objConvertToLower(cardInfo);\r\n \r\n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n }\r\n\r\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\r\n response.records?.forEach((record: any, recordIndex: any) => {\r\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\r\n if(matchCard && Object.keys(matchCard)?.length > 0){\r\n matchCard[fieldName] = record.Id;\r\n }\r\n });\r\n\r\n if(dynamicForm && Object.keys(dynamicForm)?.length){\r\n dynamicForm.formSections.forEach((section)=>{\r\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\r\n if(formField){\r\n if(cardsInfo?.length > 0){\r\n cardsInfo?.forEach((cardId)=>{\r\n cardId.id = null;\r\n })\r\n }\r\n formField.card.data = cardsInfo;\r\n };\r\n });\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of se-ui-toolkit\r\n */\r\nexport * from 'primeng/api';\r\n\r\n/**\r\n * Exported Modules\r\n */\r\n\r\nexport * from './lib/se-ui-toolkit.module';\r\n\r\n/**\r\n * Exported Components\r\n */\r\nexport * from './lib/components/base/form/form.component';\r\nexport * from \"./lib/components/base/grid/grid.component\"\r\nexport * from './lib/components/base/menu-bar/menu-bar.component';\r\nexport * from './lib/components/base/sidebar/sidebar.component';\r\nexport * from './lib/components/base/header/header.component';\r\nexport * from './lib/components/base/image-gallery/image-gallery.component';\r\nexport * from './lib/components/base/iframe/iframe.component';\r\nexport * from './lib/components/base/loader/loader.component';\r\nexport * from './lib/components/base/file-upload/file-upload.component';\r\nexport * from './lib/components/base/caption/caption.component';\r\nexport * from './lib/components/base/cards/card.component';\r\nexport * from './lib/components/base/file/file.component';\r\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\r\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nexport * from './lib/components/shared/global-filters/global-filters.component';\r\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\r\nexport * from './lib/components/base/filter/filter.component';\r\n\r\n\r\n/**\r\n * Exported Type Definitions\r\n */\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/grid.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/models/request.model';\r\nexport * from './lib/models/header.model';\r\nexport * from './lib/models/sidebar.model';\r\nexport * from './lib/models/user-info.model';\r\nexport * from './lib/models/menu.model';\r\nexport * from './lib/models/common.model'\r\n\r\n/**\r\n * Exported Services\r\n */\r\nexport * from './lib/services/alert.service';\r\nexport * from './lib/services/form.service';\r\nexport * from './lib/services/grid.service';\r\nexport * from './lib/services/dropdown.service';\r\nexport * from './lib/services/page-logger.service';\r\nexport * from './lib/services/authentication.service';\r\nexport * from './lib/services/utilities.service';\r\nexport * from './lib/services/request.service';\r\nexport * from './lib/services/sidebar.service';\r\nexport * from './lib/services/hyperlink.service';\r\nexport * from './lib/services/header.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/card.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","__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","ElementRef","DecimalPipe","ChangeDetectorRef","Router","ViewChildren","Output","Input","ViewChild","HostListener","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","ComponentFactoryResolver","ViewContainerRef","Directive","CookieService","ESidebarAction","Renderer2","Subscription","utilities.getFormFieldValue","utilities.setCardFieldsData","moveItemInArray","utilities.setFormPropValues","ToastrModule","NgModule","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.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';\r\nimport { Type } from '@angular/core';\r\nimport { IDropDownRequest, IReportBtn } from './form.model';\r\n\r\nexport interface IGridColumn {\r\n component?: Type<any>;\r\n allowSearch?: boolean;\r\n target?: EGridlink;\r\n header?: string;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n type?: EGridColumnType;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n sorting?: boolean;\r\n filtering?: boolean;\r\n filter?: IGridFilterType;\r\n format?: string | EGridFormatType | IGridFormat; // For more format options. visit https://angular.io/api/common/DatePipe\r\n data?: any;\r\n style?: string;\r\n permissions?: IPermission[];\r\n value?: any;\r\n tableAlias?: string;\r\n linkId?: string;\r\n params?: {[key: string]: any};\r\n minutesInterval?: number;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n displayText?: string;\r\n disabled?: boolean;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n allowSave?: boolean;\r\n validations?: IGridValidation[];\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n}\r\n\r\nexport interface IGridLookupControl {\r\n component?: any;\r\n data?: IGridLookupData;\r\n}\r\n\r\nexport declare type IGridLookupData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n valueField?: string;\r\n selectedValue?: string;\r\n data?: {[key: string]: any};\r\n}\r\n\r\nexport interface ILookupValue {\r\n text: string;\r\n value: string;\r\n field?:string\r\n}\r\n\r\nexport enum EGridAggregate {\r\n SUM = 'sum',\r\n AVERAGE = 'average',\r\n COUNT = 'count',\r\n}\r\n\r\nexport interface IGridAggregate {\r\n type: EGridAggregate;\r\n caption?: string;\r\n displayField?: string;\r\n aggrValue?:string;\r\n format?: IAggregateFormat;\r\n}\r\nexport interface IAggregateFormat {\r\n type: EAggregateFormat;\r\n digitsInfo?: number;\r\n}\r\n\r\nexport enum EAggregateFormat {\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGridlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n}\r\n\r\nexport interface IGridDataExport {\r\n rows: any[];\r\n headings: string[];\r\n}\r\n\r\nexport interface ISelectItem {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface IGridFilterType {\r\n type?: GridFilterControlType;\r\n data?: ISelectItem[];\r\n tableAlias?: string;\r\n showFilter?: boolean;\r\n}\r\n\r\nexport interface IAlertPopUpBtn {\r\n buttonLabel: string;\r\n buttonClass?: string;\r\n}\r\n\r\nexport interface IAlertPopUp {\r\n message: string;\r\n header?: string;\r\n buttons: IAlertPopUpBtn[];\r\n height?: string;\r\n width?: string;\r\n icon?: string;\r\n}\r\n\r\nexport enum EGridFormatter {\r\n BOOLEAN = 'boolean',\r\n CHAR = 'char',\r\n NUMERIC = 'numeric'\r\n}\r\n\r\nexport enum GridFilterControlType {\r\n INPUT = 'input',\r\n DROPDOWN = 'dropdown',\r\n CHECKBOX = 'checkbox',\r\n CALENDAR = 'calendar',\r\n CALENDAR_RANGE = 'calender_range',\r\n MULTISELECT = 'multi-select',\r\n NUMERICINPUT = 'numeric_input',\r\n NUMERIC_RANGE = 'numeric_range',\r\n DATE_RANGE = 'date_range',\r\n LOOKUP_INPUT = 'lookup_input',\r\n SPACER = 'spacer'\r\n}\r\n\r\nexport enum EDayRange {\r\n DAY = 'Day',\r\n WEEK = 'Week',\r\n MONTH = 'Month',\r\n YEAR = 'Year',\r\n}\r\n\r\nexport enum EGridSortDirection {\r\n ASC = 'asc',\r\n DESC = 'desc',\r\n}\r\n\r\nexport enum EGridColumnType {\r\n LINK = 'link',\r\n IFRAME = 'iframe',\r\n DIALOG = 'dialog',\r\n TEXT = 'text',\r\n NUMERIC = 'numeric',\r\n DATE = 'date',\r\n BOOLEAN = 'boolean',\r\n DROPDOWN = 'dropdown',\r\n LOOKUP_INPUT = 'lookup_input',\r\n ADD_BUTTON = 'add_button',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n MULTISELECT = 'multi-select',\r\n REPORT = 'report'\r\n}\r\n\r\nexport interface IGlobalFilter extends IGridFilterType, IGridFilter {\r\n displayText?: string;\r\n onFocusOut?: (value: any) => any;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n format?: string | EGridFormatType | EGlobalFilterFormatType;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n validations?: IGridValidation[];\r\n errorMessage?:string;\r\n requiredField?: boolean;\r\n}\r\n\r\nexport interface ILookupControlFilter {\r\n component?: any;\r\n data?: ILookupFilterData;\r\n}\r\n\r\nexport declare type ILookupFilterData = {\r\n header: string;\r\n width?: string;\r\n data: any;\r\n} & {\r\n [key: string]: any;\r\n};\r\n\r\nexport interface IPrimeNgSort {\r\n multisortmeta: { field: string; order: number };\r\n}\r\n\r\nexport interface IPrimeNgFilterItem {\r\n matchMode: string;\r\n operator: string;\r\n value: string | number | boolean | Date | any;\r\n}\r\n\r\nexport interface IPrimeNgFilter {\r\n filteredValue: any[];\r\n filters: Record<string, IPrimeNgFilterItem[] | IPrimeNgFilterItem>;\r\n}\r\n\r\nexport interface IGridFilter {\r\n field?: string;\r\n matchMode?: string;\r\n operator?: string;\r\n filtering?: boolean;\r\n value?: any;\r\n valueTwo?: any;\r\n tableAlias?: string;\r\n column?: string;\r\n}\r\n\r\nexport interface IGridSort {\r\n field?: string;\r\n direction?: EGridSortDirection;\r\n priority: number;\r\n tableAlias?: string;\r\n}\r\n\r\nexport class IGridServerSideEvent {\r\n filters?: IGridFilter[];\r\n sorts?: IGridSort[];\r\n page?: number;\r\n pageSize?: number;\r\n}\r\n\r\nexport interface IGridPaginationEvent {\r\n first: number;\r\n rows: number;\r\n}\r\n\r\nexport interface IGridColumnAction {\r\n icon: string; // Uses primeng/font-awesome icons. Example: 'pi pi-check'\r\n tooltip: string;\r\n width?: string;\r\n confirmDialog?: boolean;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport interface IGridRowAction {\r\n title: string;\r\n class?: string;\r\n onClick: (row: any) => void;\r\n}\r\n\r\nexport enum EGridFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n PERIOD = 'MM/yy',\r\n LONGDATE = 'MM/dd/YY, h:mm a',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport enum EGlobalFilterFormatType {\r\n SMALLDATE = 'mm/dd/y',\r\n SHORTDATE = 'mm/dd/yy',\r\n}\r\n\r\nexport enum EGridSelectionType {\r\n SINGLE = 'single',\r\n MULTIPLE = 'multiple',\r\n}\r\n\r\nexport type MenuFilterControls =\r\n | GridFilterControlType.INPUT\r\n | GridFilterControlType.NUMERICINPUT\r\n | GridFilterControlType.CALENDAR;\r\n\r\nexport type IMenuFilter = Record<MenuFilterControls, ISelectItem[]>;\r\n\r\nexport interface addColumn {\r\n target?: EGridlink;\r\n component?: Type<any>;\r\n control?: EGridColumnType;\r\n field?: string;\r\n displayField?: string;\r\n header?: string;\r\n showOption?: boolean;\r\n style?: string;\r\n type?: EGridColumnType;\r\n format?: string | EGridFormatType | IGridFormat;\r\n data?: any;\r\n filtering?: boolean;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n hidden?: boolean;\r\n hyperlink?: string;\r\n allowSearch?: boolean;\r\n minutesInterval?: number;\r\n sorting?: boolean;\r\n filter?: IGridFilterType;\r\n tableAlias?: string;\r\n linkId?: string;\r\n editable?: boolean;\r\n editLink?: boolean;\r\n params?: {[key: string]: any};\r\n displayText?: string;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n errorMessage?: string;\r\n validations?: IGridValidation[];\r\n isvalid?: boolean;\r\n saveAsString?: boolean;\r\n onClick?: (row: any) => void;\r\n onReturn?: (value?: any, column?: any, row?: any) => void;\r\n onFocusOut?: (value: any) => any;\r\n onChange?: (row: any) => void;\r\n aggregate?: IGridAggregate[];\r\n formatter?: EGridFormatter;\r\n permissions?: IPermission[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n dropDownProp?: IDropDownRequest;\r\n lookupControl?: IGridLookupControl;\r\n icon?: string;\r\n color?: string;\r\n id?: number;\r\n value?: any;\r\n}\r\n\r\nexport interface addFilterColumn {\r\n control?: GridFilterControlType;\r\n field?: string;\r\n header?: string;\r\n filter?: GridFilterControlType;\r\n filtering?: boolean;\r\n hidden?: boolean;\r\n style?: string;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n format?: string;\r\n tableAlias?: string;\r\n validations?: IGridValidation[] | any;\r\n errorMessage?: string;\r\n isvalid?: boolean;\r\n disabled?: boolean;\r\n allowSave?: boolean;\r\n permissions?: IPermission[];\r\n component?: Type<any>;\r\n type?: EGridColumnType;\r\n data?: any;\r\n}\r\n\r\nexport interface IGridValidation {\r\n type: EGridValidator | EFilterValidator;\r\n expression?: any;\r\n}\r\nexport enum EFilterValidator {\r\n REQUIRED = \"required\",\r\n}\r\nexport interface IGridReportBtn extends IReportBtn{\r\n type?: EGridColumnType.REPORT;\r\n}\r\nexport interface IGridRowProp{\r\n propName: EGridRowPropName | string; //IGridColumnPropName;\r\n propValue: any;\r\n field: string;\r\n}\r\n\r\nexport enum EGridRowPropName {\r\n DISPLAYTEXT = 'displayText',\r\n DISABLED = 'disabled',\r\n DISPLAYFIELD = 'displayField',\r\n HIDDEN = 'hidden',\r\n ICON = 'icon',\r\n}\r\n\r\nexport enum EGridValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport interface addGlobalFilter {\r\n field?: string;\r\n validations?: IGridValidation[];\r\n displayText?: string;\r\n type?: GridFilterControlType;\r\n data?: any;\r\n value?: any;\r\n valueTwo?: any;\r\n matchMode?: string;\r\n operator?: string;\r\n tableAlias?: string;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n format?: EGlobalFilterFormatType | IGridFormat | any;\r\n column?: string;\r\n onFocusOut?: (value: any) => any;\r\n filtering?: boolean;\r\n dayRange?: EDayRange;\r\n fromField?: string;\r\n toField?: string;\r\n lookupControl?: ILookupControlFilter;\r\n allowSearch?: boolean;\r\n disabled?: boolean;\r\n labelText?: string;\r\n prefix?: boolean;\r\n hidden?: boolean;\r\n color?: string;\r\n}\r\n\r\nexport interface IGridFormat {\r\n type: EGridFormatType;\r\n formatParams?:\r\n | IGridFormatParam\r\n | IGridDateFormatParam\r\n | IGridNumberFormatParam\r\n | IGridCurrencyFormatParam\r\n | IGridallowcalculateFormatParam;\r\n\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IGridFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IGridDateFormatParam extends IGridFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IGridNumberFormatParam extends IGridFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface IGridallowcalculateFormatParam extends IGridFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface IGridCurrencyFormatParam extends IGridNumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport interface IGridProp {\r\n name: string;\r\n value: any;\r\n field?: string;\r\n}\r\n\r\nexport interface IGridPropFilter {\r\n field: string;\r\n value: any;\r\n}\r\n\r\nexport interface IGridFilterInfo {\r\n [key:string]:any;\r\n}\r\n","import { Component, OnInit, Optional } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'lib-alert-pop-up',\r\n templateUrl: './alert-pop-up.component.html',\r\n styleUrls: ['./alert-pop-up.component.css']\r\n})\r\nexport class AlertPopUpComponent implements OnInit {\r\n buttons: any[]\r\n message: string;\r\n icon: string;\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef,) { }\r\n\r\n ngOnInit(): void {\r\n if(this.config?.data){\r\n this.message = this.config.data?.alertPopInfo?.message;\r\n this.buttons = this.config.data?.alertPopInfo?.buttons;\r\n this.icon = this.config.data?.alertPopInfo?.icon;\r\n }\r\n }\r\n\r\n clickedBtn(button: any){\r\n const closeBtn = document.querySelectorAll(\".alertPopUp button\")[0] as HTMLButtonElement;\r\n if(closeBtn){\r\n closeBtn?.click();\r\n this.ref.close(button);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AlertPopUpComponent } from '../components/base/alert-pop-up/alert-pop-up.component';\r\nimport { IAlertPopUp, } from '../models/grid.model';\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n \r\n constructor(\r\n private toastr: ToastrService,\r\n public dialogService: DialogService,\r\n private confirmationService: ConfirmationService\r\n ) { }\r\n\r\n success(message: string) {\r\n this.toastr.success(message, \"\", { closeButton: true });\r\n }\r\n\r\n info(message: string) {\r\n this.toastr.info(message, \"\", { closeButton: true });\r\n }\r\n\r\n warning(message: string) {\r\n this.toastr.warning(message, \"\", { closeButton: true });\r\n }\r\n\r\n error(error: string, message?: string) {\r\n this.toastr.error(error, message, { closeButton: true });\r\n }\r\n\r\n apiError(error: any) {\r\n if (typeof error === 'string' || typeof error.error === 'string') {\r\n typeof error.error === 'string' ? this.error(error.error) : this.error(error);\r\n } else if (error && error.error && error.error.errorDetails) {\r\n const [responseError] = error.error.errorDetails;\r\n this.error(responseError.errorMessage);\r\n }\r\n else if(error && error.headers && error.status !== 401) {\r\n this.error('something went wrong during api request');\r\n }\r\n }\r\n\r\n \r\n confirm({\r\n message = \"Are you sure that you want to proceed?\",\r\n header = \"Confirmation\",\r\n icon = \"pi pi-exclamation-triangle\",\r\n key= '',\r\n } = {}): Promise<any> {\r\n return new Promise(resolve => {\r\n this.confirmationService.confirm({\r\n message,\r\n header,\r\n icon,\r\n key,\r\n accept: () => {\r\n resolve([{ severity: \"info\", summary: \"Confirmed:\", detail: \"Yes\" }]);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n resolve([{ severity: \"info\", summary: \"Rejected:\", detail: \"No\" }]);\r\n this.confirmationService.close();\r\n }\r\n })\r\n });\r\n }\r\n\r\n popUp({message ='', header = 'Alert PopUp', icon = '', buttons = [{buttonLabel: '', buttonClass: 'p-button-success'}], width = '55%', height = '30%'}: IAlertPopUp): Promise<any> {\r\n return new Promise(resolve => {\r\n const ref = this.dialogService.open(AlertPopUpComponent, {\r\n styleClass: 'alertPopUp',\r\n header: header,\r\n width: width,\r\n height: height,\r\n data: { alertPopInfo: {message, icon, buttons}},\r\n });\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n resolve(res.buttonLabel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '../models/response.model';\r\nimport { Environment } from '../models/response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestService {\r\n\r\n constructor(private http: HttpClient, @Inject('env') private env: Environment) { \r\n }\r\n download(endpoint: string, data: any, baseUrl: string = this.env.baseUrl): Observable<any> {\r\n return this.http.post(`${baseUrl}${endpoint}`, data, { responseType: 'blob' });\r\n }\r\n\r\n get<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getRequest<T, K>(endpoint: string) {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}${this.getCurrentRoute()}`);\r\n }\r\n\r\n getAuth<T, K>(endpoint: string, data: K): Observable<Response<T>> {\r\n return this.http.post<Response<T>>(`${this.env.baseAuthUrl}${endpoint}${this.getCurrentRoute()}`, data);\r\n }\r\n\r\n getOne<T, K>(endpoint: string, id: string): Observable<Response<T>> {\r\n return this.http.get<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n delete<T, K>(endpoint: string, id: number): Observable<Response<T>> {\r\n return this.http.delete<Response<T>>(`${this.env.baseUrl}${endpoint}/${id}`);\r\n }\r\n\r\n getCurrentRoute(): any{\r\n let route = window.location.href;\r\n if(route && route.includes('/')){\r\n let currentRoute = route.split('/');\r\n route = currentRoute[currentRoute.length-1];\r\n const source = `?source=${route}`;\r\n return source;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\nimport { ISelectItem } from '../models/grid.model';\r\nimport { GridService } from './grid.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DropdownService {\r\n constructor(\r\n private requestService: RequestService,\r\n ) {}\r\n\r\n /**\r\n * Function to set the values for dropdown\r\n * @param response array of data\r\n * @param valueProp property name for value\r\n * @param labelProp property name for label\r\n */\r\n\r\n setDropDownList(uniqueKey: any, valueProp: string, labelProp: string, filters: any[] = [], sorts:any[]=[]) {//add sort here\r\n let dropdownvalues: ISelectItem[] = [];\r\n return new Promise((resolve, reject) => {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts }).subscribe((response) => {\r\n if (response) {\r\n dropdownvalues = this.setDropDown(response, valueProp.toLowerCase(), labelProp.toLowerCase())\r\n return resolve(dropdownvalues);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n })\r\n });\r\n }\r\n\r\n setDropDown(response: any, valueProp: string, labelProp: string) {\r\n if (valueProp) valueProp = valueProp.toLowerCase();\r\n if (labelProp) labelProp = labelProp.toLowerCase();\r\n let dropdownvalues: ISelectItem[] = [];\r\n if (response.records) {\r\n this.setDataFields(response.records).forEach((record: any) => {\r\n if (\r\n record.hasOwnProperty(valueProp && labelProp) &&\r\n record[valueProp] &&\r\n record[labelProp]\r\n ) {\r\n dropdownvalues.push({\r\n label: record[labelProp].toString().trim(),\r\n value: record[valueProp].toString().trim(),\r\n });\r\n }\r\n });\r\n }\r\n return dropdownvalues;\r\n }\r\n\r\n setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EGridColumnType } from '../models/grid.model';\r\nimport { ISidebar } from '../models/sidebar.model';\r\nimport { RequestService } from './request.service';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HyperlinkService {\r\n constructor(private requestService: RequestService) { }\r\n\r\n buildUrl(linkIds: any, params: { [key: string]: string }) {\r\n return new Promise((resolve, reject) => {\r\n if (Array.isArray(linkIds)) {\r\n this.requestService\r\n .get<any, any>('/Link/ByLinkIds', { linkIds: linkIds })\r\n .subscribe(\r\n (res: any) => {\r\n if (res) {\r\n return resolve(res);\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n } else {\r\n this.requestService\r\n .getOne<any, any>('/Link/ByLinkId', linkIds)\r\n .subscribe(\r\n (response) => {\r\n if (response) {\r\n return resolve(this.setUrl(params, response));\r\n } else {\r\n return resolve('');\r\n }\r\n },\r\n ({ error }) => {\r\n reject(error);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n setUrl(params: { [key: string]: string }, response: any) {\r\n let url: string = response.url;\r\n for (let paramKey in params) {\r\n const lowerKey = paramKey.toLowerCase();\r\n const paramValue = params[paramKey];\r\n if (\r\n url &&\r\n url.search &&\r\n url.search(lowerKey) > 0 &&\r\n paramValue &&\r\n paramValue.length > 0\r\n ) {\r\n url = url.replace(\"{{\"+/lowerKey/gi+\"}}\", params[paramKey]);\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n async addHyperlinks(columns: any) {\r\n let linkIds: any[] = [];\r\n let params: any;\r\n if (columns && Array.isArray(columns)) {\r\n columns.forEach((column) => {\r\n if (\r\n (column.type === EGridColumnType.LINK ||\r\n column.type === EGridColumnType.IFRAME||\r\n column.type === EGridColumnType.LOOKUP_INPUT) &&\r\n column.linkId &&\r\n column.params\r\n ) {\r\n linkIds.push(column.linkId);\r\n params = column.params;\r\n }\r\n });\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n } else if (columns.linkId) {\r\n linkIds.push(columns.linkId);\r\n params = columns.params;\r\n return await this.buildUrl(linkIds, params).then((res: any) => {\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n setSidebarLink(response: any, sidebar: ISidebar[]) {\r\n response.forEach((res: any) => {\r\n sidebar.forEach((item) => {\r\n if (item.onClick && item.linkId && item.linkId === res.linkId) {\r\n item.onClick(res.url);\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { IGridSort, ISelectItem } from './grid.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IDynamicForm {\r\n formSections?: IFormSection[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface ILabel {\r\n name: string;\r\n disabled?: boolean;\r\n labelControl?: IFormField;\r\n onReturn?: (value: any) => void;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface IDropDownRequest {\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters?: ISetFilter[]\r\n sorts?:IGridSort[] \r\n}\r\n\r\nexport interface ISetFilter {\r\n field?: string,\r\n value?: any,\r\n matchMode?: string,\r\n operator?: string,\r\n valueField?: string;\r\n}\r\n\r\nexport interface IFormSection {\r\n name?: string;\r\n fields: IFormField[];\r\n icon?: string;\r\n class?: string;\r\n links?: ILabel[];\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n accordionDisabled?: boolean;\r\n showAccordion?: boolean;\r\n expanded?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n}\r\n\r\nexport interface IFormField {\r\n label?: string | ILabel;\r\n class?: string;\r\n card?: IDynamicCard;\r\n control?: EFormControl;\r\n field?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n value?: any | ILookupInputValue;\r\n data?: any[];\r\n validations?: IValidation[];\r\n errorMessage?: string;\r\n minutesInterval?: number;\r\n id?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n disabledText?: boolean;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n componentControl?: IFormComponentField;\r\n column?: number;\r\n row?: number;\r\n hyperlink?: IHyperlink;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n hidden?: boolean;\r\n optionLabel?: string;\r\n optionValue?: string;\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?: any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n isvalid?: boolean;\r\n timeOnly?: boolean\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n requiredField?: boolean;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n uniqueKey?: string;\r\n azureContainer?: string;\r\n}\r\n\r\nexport interface IDynamicCard {\r\n id?: number;\r\n name?: string;\r\n data?: any[];\r\n orderByField?: string;\r\n formSections?: IFormSection[];\r\n onSort?: (value: any) => any;\r\n allowDelete?: boolean;\r\n allowDownload?: boolean;\r\n url?: string;\r\n caption?: string;\r\n width?: string;\r\n height?: string;\r\n allowEditableCaption?: boolean;\r\n onCaptionSave?: (value: any) => any;\r\n onDelete?: (value: any) => any;\r\n class?: string;\r\n cardInfo?: IViewCardProp;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\n\r\nexport interface IViewCardProp {\r\n url?: string;\r\n caption?: string;\r\n extension?: string;\r\n}\r\nexport interface IReportBtn{\r\n reportId: number;\r\n control?: EFormControl.REPORT;\r\n params?: any[];\r\n showDialog?: boolean;\r\n}\r\n\r\nexport interface IListFilter {\r\n uniqueKey: string;\r\n filters?: ISetFilter[];\r\n sorts?: IGridSort[];\r\n}\r\n\r\nexport interface IFormComponentField {\r\n component: Type<any>;\r\n id?:string;\r\n data?: {\r\n [key: string]: any;\r\n };\r\n handlers?: {\r\n [key: string]: Function;\r\n };\r\n}\r\n\r\nexport interface ILookupInputValue {\r\n text: any;\r\n value: any;\r\n}\r\n\r\nexport interface ILookupControlField {\r\n component: any;\r\n data: ILookupFieldData;\r\n id?: string;\r\n}\r\n\r\nexport declare type ILookupFieldData = {\r\n header?: string;\r\n height?: string;\r\n width?: string;\r\n data?: {[key: string]: any};\r\n valueField?: string;\r\n selectedValue?: string;\r\n} \r\n\r\nexport interface IValidation {\r\n type: EValidator;\r\n expression?: any;\r\n}\r\n\r\nexport enum ESelectFileType {\r\n EXCEL = '.excel',\r\n IMAGE = '.image, .jpg, .png, .jpeg, .gif',\r\n DOCUMENT = '.document',\r\n PDF = '.pdf',\r\n MRT = '.mrt',\r\n}\r\n\r\nexport enum EValidator {\r\n REQUIRED = 'required',\r\n MINLENGTH = 'minlength',\r\n MAXLENGTH = 'maxlength',\r\n PATTERN = 'pattern',\r\n MINIMUM = 'minimum',\r\n MAXIMUM = 'maximum',\r\n NUMERIC = 'numeric',\r\n DECIMAL = 'decimal',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n}\r\n\r\nexport enum EFormControl {\r\n BUTTON = 'button',\r\n LABEL = 'label',\r\n INPUT = 'input',\r\n CHECKBOX = 'checkbox',\r\n DROPDOWN = 'dropdown',\r\n CALENDAR = 'calender',\r\n NUMERIC = 'number',\r\n MULTISELECT = 'multi-select',\r\n TEXTAREA = 'text-area',\r\n HYPERLINK = 'hyperlink',\r\n LOOKUP_INPUT = 'lookup_input',\r\n NOTE_FIELD = 'note_field',\r\n COMPONENT = 'component',\r\n PASSWORD = 'password',\r\n AUTOCOMPLETE = 'AutoComplete',\r\n SPACER = 'spacer',\r\n SECTION_HEADER = 'section_header',\r\n FILE_UPLOAD = 'file_upload',\r\n CARD = 'card',\r\n DISPLAY_FILE = 'display_file',\r\n ADD_BUTTON = 'add_button',\r\n SWITCH = 'switch',\r\n REPORT = 'report'\r\n}\r\n\r\nexport enum EOperator {\r\n AND = 'and',\r\n OR = 'or',\r\n}\r\n\r\nexport enum EMatchMode {\r\n EQUALS = 'equals',\r\n STARTSWITH = 'startsWith',\r\n CONTAINS ='contains',\r\n IN = 'in',\r\n ENDSWITH = 'endsWith',\r\n NOTEQUALS = 'notEquals',\r\n ISNOT = 'isNot',\r\n DATEISNOT = 'dateIsNot',\r\n NOTCONTAINS ='notContains',\r\n LT = 'lt',\r\n BEFORE = 'before',\r\n DATEBEFORE = 'datebefore',\r\n LTE = 'lte',\r\n GT = 'gt',\r\n AFTER = 'after',\r\n DATEAFTER = 'dateAfter',\r\n GTE = 'gte',\r\n}\r\n\r\nexport interface IFormat {\r\n type: EFormatType;\r\n formatParams?:\r\n | IFormatParam\r\n | IDateFormatParam\r\n | INumberFormatParam\r\n | IallowCalculateFormatParam\r\n | ICurrencyFormatParam;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParam {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParam extends IFormatParam {\r\n format?: string;\r\n}\r\n\r\nexport interface IallowCalculateFormatParam extends IFormatParam {\r\n allowCalculate?: boolean;\r\n}\r\n\r\nexport interface INumberFormatParam extends IFormatParam {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParam extends INumberFormatParam {\r\n currency: string;\r\n}\r\n\r\nexport enum EFormatType {\r\n SMALLDATE = 'mm/d/y',\r\n SHORTDATE = 'mm/d/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n MONTHONLY = 'mm/yy',\r\n PERIOD = 'mm/y',\r\n BOOLEAN_YN = 'BOOLEAN_YN',\r\n CUSTOM = 'custom',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}\r\n\r\nexport interface IHyperlink {\r\n target?: EHyperlink;\r\n link?: string;\r\n linkId?: string;\r\n params?: any;\r\n width?:string;\r\n height?:string;\r\n component?: any;\r\n data?: ILookupFieldData;\r\n}\r\n\r\nexport enum EHyperlink {\r\n BLANK = '_blank',\r\n SELF = '_self',\r\n PARENT = '_parent',\r\n TOP = '_top',\r\n IFRAME = '_iframe',\r\n DIALOG = '_dialog'\r\n}\r\n\r\nexport interface AddFormField {\r\n control?: EFormControl;\r\n field?: string;\r\n class?: string;\r\n displayField?: string;\r\n showOption?: boolean;\r\n label?: string | ILabel;\r\n value?: string | any;\r\n format?: IFormat;\r\n permissions?: IPermission[];\r\n id?: string;\r\n hidden?: boolean;\r\n validations?: IValidation[] | any;\r\n hyperlink?: IHyperlink;\r\n lookupControl?: ILookupControlField;\r\n tables?: string[];\r\n minutesInterval?: number;\r\n disabled?: boolean | any;\r\n disabledText?: boolean;\r\n column?: number;\r\n row?: number;\r\n componentControl?: IFormComponentField;\r\n data?: ISelectItem[];\r\n optionLabel?: string;\r\n optionValue?: string;\r\n timeOnly?: boolean;\r\n monthOnly?: boolean;\r\n showTime?: boolean; // to show time as well in calendar form field\r\n saveAsString?: boolean;\r\n showAllValue?: boolean;\r\n onClick?: (value?: any) => any;\r\n onReturn?: (value?: any, selectedRow?:any) => void;\r\n onFocusOut?: (value: any) => void;\r\n onChange?: (value: any) => any;\r\n height?: string;\r\n showBottomBorder?: boolean;\r\n allowSearch?: boolean;\r\n selectMultipleFiles?: boolean;\r\n SetfileTypes?: ESelectFileType;\r\n icon?: string;\r\n color?: string;\r\n card?: IDynamicCard;\r\n}\r\n","import { formatDate } from '@angular/common';\r\nimport { ISidebar } from '../../public-api';\r\nimport { IDictionary, IFilterDictionary } from '../models/common.model';\r\nimport {\r\n EFormatType,\r\n EFormControl,\r\n EHyperlink,\r\n EMatchMode,\r\n EOperator,\r\n IDynamicCard,\r\n IDynamicForm,\r\n IFormat,\r\n IFormField,\r\n IFormSection,\r\n} from '../models/form.model';\r\nimport { addGlobalFilter, EGridColumnType, IGlobalFilter, IGridColumn, IGridFilter } from '../models/grid.model';\r\nimport { Subject } from 'rxjs';\r\n\r\n/* #region public methods */\r\n\r\n/**\r\n *\r\n * @param value : any\r\n * Function receives the value and expects the value to be formated.\r\n * Do not use fat arrow function as they do not preserve the context.\r\n * this.value refers to the value of IFormField Object\r\n * Modify this.value directly to receive effect\r\n */\r\n\r\n var formstate = new Subject<any>();\r\n\r\n export function changeDynamicFormState(id: any, data: any) {\r\n formstate.next({ id, data });\r\n}\r\n \r\n export function onDynamicFormStateChange() {\r\n return formstate.asObservable();\r\n }\r\n\r\n export function closeIFrame(){\r\n let close = window.parent.document.querySelector('.p-dialog-header-icon')as HTMLElement\r\n if(close) {\r\n close.click();\r\n }\r\n}\r\n\r\n export function setAddComponentData({formSections}:IDynamicForm,id:string,value:any){\r\n formSections?.forEach((section)=>{\r\n section.fields.forEach((field:any)=>{\r\n if(field.control===EFormControl.COMPONENT && field.componentControl && field.componentControl?.id===id){\r\n let keys = Object.keys(value);\r\n keys.forEach((key)=>{\r\n field.componentControl.data = { ...field.componentControl?.data,[key] : value[key]};\r\n });\r\n changeDynamicFormState(id, field.componentControl.data);\r\n };\r\n });\r\n });\r\n}\r\n\r\nexport function toDecimal(value: any): any {\r\n if (value) {\r\n return parseFloat(value.toString()).toFixed(2);\r\n }\r\n}\r\n\r\nexport function toBoolean(value: any) {\r\n return value === 'Y' ? true : false;\r\n}\r\n\r\nexport function toShortDate(value: any, format?: IFormat) {\r\n if (value && value !== '') {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toShortDateTime(value: any, format?: IFormat) {\r\n if (value && value !== '' && value?.toString() != \"Invalid Date\") {\r\n if (\r\n format &&\r\n (format.type === EFormatType.LONGDATE ||\r\n format.type === EFormatType.MEDIUMDATE)\r\n ) {\r\n return value;\r\n } else {\r\n return formatDate(value, 'MM/dd/yyyy hh:mm a', 'en-US');\r\n }\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function toTrim(text: any) {\r\n if (typeof text === 'string') {\r\n return text.trim();\r\n } else {\r\n return text;\r\n }\r\n}\r\n\r\nexport function getMatchKey(obj: any, propName: string): string {\r\n if (!obj || !propName) {\r\n return '';\r\n }\r\n\r\n let matchedKey = '';\r\n if (Array.isArray(obj)) {\r\n obj.forEach((row) => {\r\n const keys: any[] = Object.keys(row);\r\n if (!matchedKey || matchedKey.length === 0) {\r\n matchedKey = keys.find(\r\n (x) => x.toLowerCase() === propName.toLowerCase()\r\n );\r\n }\r\n });\r\n } else {\r\n const keys: any[] = Object.keys(obj);\r\n matchedKey = keys.find((x) => x.toLowerCase() === propName.toLowerCase());\r\n }\r\n\r\n return matchedKey;\r\n}\r\n\r\nexport function formatFormFieldValue(formField: IFormField, value: any): any {\r\n let formattedValue: any = value;\r\n if (formField.format) {\r\n switch (formField.format.type) {\r\n case EFormatType.DECIMAL:\r\n formattedValue = toDecimal(value);\r\n break;\r\n case EFormatType.BOOLEAN_YN:\r\n formattedValue = toBoolean(value);\r\n break;\r\n case EFormatType.SHORTDATE:\r\n formattedValue = toShortDate(value);\r\n break;\r\n case EFormatType.CUSTOM:\r\n if (formField.format.formatter) {\r\n formattedValue = formField.format.formatter(value);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return formattedValue;\r\n}\r\n\r\nexport function setFormField(\r\n { formSections }: IDynamicForm,\r\n formFieldObj: IFormField\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField: IFormField) => {\r\n if (\r\n formField.field?.toLowerCase() === formFieldObj.field?.toLowerCase() ||\r\n (formField.label && formField.label === formFieldObj.label)\r\n ) {\r\n formField = formFieldObj;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function setHyperlinkComponentData(\r\n { formSections }: IDynamicForm,\r\n label: string,\r\n data: any\r\n){\r\n formSections?.forEach((section) => {\r\n let field=section.fields.find((field)=> field.label && field.label===label)\r\n if(field && field.hyperlink) field.hyperlink.params = data;\r\n});\r\n}\r\n\r\nexport function setLookupData(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n data: any\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n section.fields.map((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data &&\r\n data\r\n ) {\r\n formField.label.labelControl.lookupControl.data.data = data;\r\n }\r\n if (formField.lookupControl && formField.lookupControl.data && data) {\r\n formField.lookupControl.data.data = data;\r\n }\r\n }\r\n });\r\n });\r\n return formSections;\r\n}\r\n\r\nexport function setLinkParamValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n params: any[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n const isLabelLink =\r\n formField.label && typeof formField.label === 'object';\r\n if (\r\n formField.field?.toLowerCase() === field?.toLowerCase() ||\r\n (isLabelLink &&\r\n formField.label?.name?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label &&\r\n typeof formField.label === 'string' &&\r\n formField.label?.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n let newLink: string = isLabelLink\r\n ? formField.label?.labelControl?.orignalLink\r\n : formField.hyperlink?.link;\r\n\r\n if (newLink && newLink.length > 0) {\r\n return params.map((paramObj: IDictionary): any => {\r\n if (\r\n (typeof paramObj.value === 'object' && paramObj.value) ||\r\n (typeof paramObj.value === 'string' && paramObj.value?.length > 0)\r\n ) {\r\n // removing https:// or http:// from hyperlink param value\r\n if (\r\n (paramObj.value?.toString().includes('https://') || paramObj.value?.toString().includes('http://')) && \r\n (newLink.includes('https://') || newLink.includes('http://')) \r\n ) {\r\n paramObj.value = paramObj.value.replace('https://', '').replace('http://', '');\r\n }\r\n const paramName: string = paramObj.name.toLowerCase();\r\n const paramFormat: string = !paramObj.value\r\n ? '{{' + paramName + '}}'\r\n : paramName;\r\n\r\n if (newLink.localeCompare(paramFormat)) {\r\n let setLink =\r\n paramFormat !== '{{' + paramFormat + '}}'\r\n ? '{{' + paramFormat + '}}'\r\n : paramFormat;\r\n\r\n newLink = newLink.replace(\r\n new RegExp(setLink, 'ig'),\r\n toTrim(paramObj.value)\r\n );\r\n if (newLink && !newLink.startsWith('http'))\r\n {\r\n newLink = \"http://\" + newLink;\r\n }\r\n }\r\n return isLabelLink\r\n ? (formField.label.labelControl.hyperlink.link = newLink)\r\n : (formField.hyperlink.link = newLink);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function setSidebarLinkParamValues(link: string, params: any[]): string {\r\n let newLink: string = link;\r\n if (params && params.length > 0) {\r\n params.map((param) => {\r\n const url = param.name ? '{{' + param.name + '}}' : '';\r\n if (newLink.localeCompare(url)) {\r\n newLink = newLink.replace(new RegExp(url, 'ig'), toTrim(param.value));\r\n }\r\n });\r\n }\r\n return newLink;\r\n}\r\n\r\nexport function setFormPropValues(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n props: IDictionary[]\r\n) {\r\n return formSections?.map((section: any) => {\r\n return section.fields.map((formField: any): any => {\r\n if (\r\n (formField.field?.toLowerCase() === field?.toLowerCase()) ||\r\n (formField.label && formField.label.toString().toLowerCase() === field?.toLowerCase())\r\n ) {\r\n return props.map((prop: IDictionary) => {\r\n if (formField.hasOwnProperty(prop.name)) {\r\n return (formField[prop.name] = prop.value);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function addNewFieldInForm(dynamicForm: IDynamicForm, sectionName:string, formField:IFormField){\r\n const section = dynamicForm?.formSections?.find((section)=> section.name === sectionName);\r\n if(section){\r\n section.fields.push(formField);\r\n }\r\n return dynamicForm;\r\n}\r\n\r\nexport function setFormFields(\r\n { formSections }: IDynamicForm,\r\n formFields: IFormField[]\r\n) {\r\n return formSections?.map((section) => {\r\n return (section.fields = section.fields.map((formField) => {\r\n let matchedField = formFields.find(\r\n (x) => x.field?.toLowerCase() == formField.field?.toLowerCase()\r\n );\r\n if (matchedField) {\r\n formField = matchedField;\r\n }\r\n return formField;\r\n }));\r\n });\r\n}\r\n\r\nexport function getGlobalFilters(\r\n globalFilters: addGlobalFilter[],\r\n field: string,\r\n) {\r\n let formFieldObj: any;\r\n globalFilters.map((filter)=>{\r\n if (filter.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = filter;\r\n }\r\n });\r\n return formFieldObj;\r\n}\r\n\r\nexport function setFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n value: any,\r\n displayText: string = ''\r\n) {\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n if (displayText && displayText.length > 0) {\r\n formField.value = { text: displayText, value: value };\r\n } else {\r\n formField.value = value;\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function getFormFields(\r\n { formSections }: IDynamicForm,\r\n formControl: EFormControl\r\n): IFormField[] {\r\n let formFields: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.control === formControl) {\r\n if (typeof(formField.value) === 'object' && formField.value?.text && typeof(formField.value.text) === 'string')\r\n {\r\n formField.value = formField.value.text.trim();\r\n }\r\n else if (formField.value && typeof(formField.value) === 'string')\r\n {\r\n formField.value = formField.value.trim();\r\n }\r\n formFields.push(formField);\r\n }\r\n });\r\n });\r\n return formFields;\r\n}\r\n\r\nexport function getFormField(\r\n { formSections }: IDynamicForm,\r\n field: string\r\n): IFormField {\r\n let formFieldObj: any;\r\n formSections?.forEach((section) => {\r\n section.fields.forEach((formField) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n formFieldObj = formField;\r\n }\r\n });\r\n });\r\n return formFieldObj;\r\n}\r\n\r\n// this function is always return a value of the field. If returnDisplayFieldValue is true and displayField\r\n// exist in the field then always return a displayField value.\r\nexport function getFormFieldValue(\r\n { formSections }: IDynamicForm,\r\n field: string,\r\n returnDisplayFieldValue:boolean = false\r\n) {\r\n let value;\r\n for (const section of formSections as any) {\r\n section.fields.forEach((formField: any) => {\r\n if (formField.field?.toLowerCase() === field?.toLowerCase()) {\r\n let isValid = typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && returnDisplayFieldValue;\r\n if (\r\n (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) &&\r\n formField.displayField\r\n ) {\r\n value = isValid ? formField.value?.text : formField.value?.value;\r\n } else {\r\n value = isValid\r\n ? formField.value?.text\r\n : typeof formField.value === 'object' && formField.control !== EFormControl.CALENDAR && formField.control !== EFormControl.MULTISELECT\r\n ? formField.value?.value\r\n : formField.value;\r\n }\r\n }\r\n });\r\n }\r\n return value;\r\n}\r\n\r\nexport function getFormFieldValueAsString(dynamicForm:IDynamicForm,field:string):string{\r\n let value:any = getFormFieldValue(dynamicForm,field, true);\r\n if (value){\r\n value = value.toString();\r\n }\r\n return value;\r\n}\r\n\r\nexport function getSectionFieldValue(\r\n formSections: IFormSection[],\r\n field: string\r\n) {\r\n let form: IDynamicForm = { formSections };\r\n return getFormFieldValue(form, field, true);\r\n}\r\n\r\nexport function setSaveFormValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let response: any = {};\r\n if (tables && tables.length > 0) {\r\n tables.forEach((tableName) => {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n\r\n sectionFields?.forEach((field) => {\r\n const table = field.tables?.map((table) => table.toLowerCase());\r\n\r\n if (table && table.includes(tableName.toLowerCase())) {\r\n if (!response[tableName]) {\r\n response[tableName] = {};\r\n }\r\n\r\n if (field.field && field.field.length > 0) {\r\n response[tableName][field.field] = formatFormFieldCValue(field);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n } else {\r\n formSections.forEach((formSection) => {\r\n const sectionFields = formSection.fields?.filter(x => x.control !== EFormControl.CARD);\r\n sectionFields?.forEach((field) => {\r\n if (field.field && field.field.length > 0) {\r\n response[field.field] = formatFormFieldCValue(field);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n\r\nexport function setSaveCardValues(\r\n formSections: IFormSection[],\r\n tables?: string[]\r\n) {\r\n let values: IFormField[] = [];\r\n formSections?.forEach((section) => {\r\n section.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.card.data) {\r\n field.card.data.forEach((cardData: any) => {\r\n if (cardData.dynamicForm.formSections) {\r\n values.push(\r\n setSaveFormValues(cardData.dynamicForm.formSections, tables)\r\n );\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return values;\r\n}\r\n\r\nexport function setEditFormFields(data: any, dynamicForm: IDynamicForm) {\r\n if (data && data.length > 0 && Array.isArray(data)) {\r\n data.forEach((dataRow) => {\r\n setEditFormFieldsInfo(dataRow, dynamicForm, data);\r\n });\r\n } else {\r\n setEditFormFieldsInfo(data, dynamicForm);\r\n }\r\n}\r\n\r\nexport function setFilter(\r\n field: string,\r\n value: any,\r\n matchMode: EMatchMode = EMatchMode.EQUALS,\r\n operator: EOperator = EOperator.AND,\r\n) {\r\n const filter: any = {\r\n field: field,\r\n matchMode: matchMode,\r\n operator: operator,\r\n value: typeof value === 'object' && (value?.value || value?.text) ? value?.value : value,\r\n };\r\n return filter;\r\n}\r\n\r\nexport function setAndFilter(field: string, value: any) {\r\n return setFilter(field, value, EMatchMode.EQUALS, EOperator.AND)\r\n}\r\n\r\nexport function getOrigDataFieldValue(data: any, propName: string): any {\r\n let value: any;\r\n if (data) {\r\n if (Array.isArray(data)) {\r\n for (let i = 0; i < data.length; i++) {\r\n value = getPropertyValue(data[i], propName);\r\n if (value) {\r\n return value;\r\n }\r\n }\r\n } else {\r\n value = getPropertyValue(data, propName);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function getOrigDataFieldValueAsString(\r\n data: any,\r\n propName: string\r\n): string {\r\n let value = getOrigDataFieldValue(data, propName);\r\n if (value) {\r\n return value.toString();\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport function setSidebarPropValues(\r\n sidebar: ISidebar[],\r\n section: string,\r\n props: IDictionary[]\r\n) {\r\n sidebar.map((sidebarItem: any) => {\r\n if (sidebarItem.section?.toLowerCase() === section.toLowerCase()) {\r\n props.map((prop) => {\r\n if (prop.name?.toLowerCase() === 'data' && sidebarItem.data?.data) {\r\n sidebarItem.data.data = prop.value;\r\n } else {\r\n return setPropValue(sidebarItem, prop);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setSectionPropValues(\r\n { formSections }: IDynamicForm,\r\n sectionName: string,\r\n props: IDictionary[]\r\n) {\r\n formSections?.map((section) => {\r\n if (section.name?.toLowerCase() === sectionName.toLowerCase()) {\r\n props.map((prop) => {\r\n return setPropValue(section, prop);\r\n });\r\n }\r\n });\r\n}\r\n\r\n/* #endregion */\r\n\r\n/* #region private methods */\r\n\r\nfunction setEditFormFieldsInfo(data: any, dynamicForm: IDynamicForm | IDynamicCard, allData: any[] = []) {\r\n if (data.records && data.records.length > 0) {\r\n data.records.forEach((record: any) => {\r\n const keys: string[] = Object.keys(record);\r\n dynamicForm.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField: any) => {\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === formField.field?.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n // set label hyperlink\r\n setLabelHyperlink(formField, record, keys, allData);\r\n }\r\n\r\n if (\r\n formField.control === EFormControl.HYPERLINK &&\r\n formField.hyperlink &&\r\n ((formField.hyperlink.linkId && formField.hyperlink.params) ||\r\n formField.hyperlink.link)\r\n ) {\r\n let params = formField.hyperlink.params;\r\n let paramKeys: string[] = [];\r\n\r\n if (\r\n !params &&\r\n formField.hyperlink.link &&\r\n formField.hyperlink.link.includes('}}')\r\n ) {\r\n paramKeys = formField.hyperlink.link.split('}}');\r\n paramKeys = paramKeys.map((paramKey) => {\r\n paramKey = paramKey.replace('{{', '').trim();\r\n return paramKey;\r\n });\r\n paramKeys = paramKeys.filter((x) => x.length > 0);\r\n } else {\r\n if(params){\r\n paramKeys = Object.keys(params);\r\n }\r\n }\r\n\r\n formField.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n formField.hyperlink.link,\r\n paramKeys,\r\n formField.hyperlink.params,\r\n allData\r\n );\r\n } else {\r\n if (formField.control === EFormControl.CALENDAR && matchedKey) {\r\n formField.value = formField.timeOnly ? record[matchedKey] : record[matchedKey]\r\n ? new Date(record[matchedKey] as string)\r\n : '';\r\n } else if (formField.control === EFormControl.CARD) {\r\n if (formField.card && formField.card.formSections) {\r\n if (!formField.card.data) {\r\n formField.card.data = data;\r\n }\r\n \r\n setEditFormFieldsInfo(data, formField.card);\r\n }\r\n } else if (\r\n formField.control === EFormControl.AUTOCOMPLETE &&\r\n matchedKey\r\n ) {\r\n let arrayValue = [];\r\n if (record[matchedKey] && formField.displayField) {\r\n arrayValue.push({[formField.displayField] : record[matchedKey]});\r\n }\r\n formField.value = arrayValue;\r\n } else if (formField.control === EFormControl.LOOKUP_INPUT || formField.control === EFormControl.INPUT) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl &&\r\n formField.label.labelControl.lookupControl.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.label.labelControl.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.label.labelControl.lookupControl.data.data = obj;\r\n }\r\n }\r\n\r\n if (\r\n formField.lookupControl &&\r\n formField.lookupControl.data &&\r\n formField.lookupControl.data.data\r\n ) {\r\n const obj = autoSetLookupData(\r\n formField.lookupControl.data.data,\r\n record\r\n );\r\n if (obj) {\r\n formField.lookupControl.data.data = obj;\r\n }\r\n }\r\n if(record[matchedKey]){\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n if (\r\n formField.displayField &&\r\n formField.displayField.length > 0\r\n ) {\r\n const matchDisplayField = getMatchKey(\r\n record,\r\n formField.displayField\r\n );\r\n if (matchDisplayField) {\r\n formField.value = {\r\n text: toTrim(record[matchDisplayField]),\r\n value: formField.value?.value,\r\n };\r\n }\r\n\r\n const matchValueField = getMatchKey(record, formField.field);\r\n if (matchValueField) {\r\n formField.value = {\r\n text: formField.value?.text,\r\n value: toTrim(record[matchValueField]),\r\n };\r\n }\r\n }\r\n } else if (\r\n formField.control === EFormControl.COMPONENT &&\r\n formField.componentControl?.data\r\n ) {\r\n formField.componentControl.data = findKeysAndValue(\r\n formField.componentControl.data,\r\n record\r\n );\r\n changeDynamicFormState(\r\n formField.componentControl.id,\r\n formField.componentControl?.data\r\n );\r\n } else if (\r\n formField.control === EFormControl.NUMERIC &&\r\n formField.label?.labelControl?.lookupControl?.data?.data\r\n ) {\r\n let setData = formField.label.labelControl.lookupControl;\r\n setData.data.data = findKeysAndValue(setData.data.data, record);\r\n changeDynamicFormState(setData.id, setData.data.data);\r\n } else if (formField.control === EFormControl.HYPERLINK \r\n && formField.hyperlink?.target === EHyperlink.DIALOG \r\n && formField.hyperlink.params\r\n ) {\r\n formField.hyperlink.params = findKeysAndValue(formField.hyperlink.params, record);\r\n } else if (matchedKey) {\r\n if (formField.format) {\r\n formField.value = formatFormFieldValue(\r\n formField,\r\n record[matchedKey]\r\n );\r\n } else if (formField.control === EFormControl.CHECKBOX) {\r\n formField.value =\r\n record[matchedKey] &&\r\n (record[matchedKey].toString() === '1' ||\r\n record[matchedKey].toString() === 'true')\r\n ? true\r\n : false;\r\n }else if (formField.control === EFormControl.DROPDOWN) {\r\n let dropValue = record[matchedKey];\r\n formField.value = dropValue\r\n ? dropValue.toString()\r\n : dropValue;\r\n } else {\r\n formField.value = toTrim(record[matchedKey]);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n//set hyperlink param value as field value\r\nexport function setHyperlinkParamValue(record:any, dynamicForm: IDynamicForm) {\r\n let keys: string[] = [];\r\n let link: string ='';\r\n let paramKeys: string[] = [];\r\n let param: any;\r\n let fieldInfo: any;\r\n dynamicForm.formSections?.forEach((section: any) => {\r\n section.fields.forEach((formField: any) => {\r\n if(formField.label && formField.label.labelControl && formField.label.labelControl.hyperlink?.link){\r\n keys = Object.keys(record);\r\n if(formField?.label?.labelControl?.orignalLink){\r\n link = formField.label.labelControl.orignalLink;\r\n }\r\n\r\n if(formField?.label?.labelControl?.hyperlink?.params){\r\n param = formField.label.labelControl.hyperlink.params;\r\n paramKeys = Object.keys(param);\r\n }\r\n fieldInfo = formField;\r\n if(record && keys && link && paramKeys && param && fieldInfo){\r\n fieldInfo.label.labelControl.hyperlink.link = setHyperlink(keys, record, link, paramKeys, param);\r\n }\r\n }\r\n });\r\n });\r\n}\r\n\r\nexport function objConvertToLower(obj: any) {\r\n return Object.keys(obj).reduce((accumulator: any, key) => {\r\n accumulator[key.toLowerCase()] = obj[key];\r\n return accumulator;\r\n }, {});\r\n}\r\n\r\nexport function clickSectionHighlight(value: any) {\r\n document.querySelectorAll('.left-sideBar .p-panelmenu .p-panelmenu-panel');\r\n const title = document.body?.querySelector('[title = \"'+ value?.name +'\"]');\r\n const allMenuItems = document.body?.querySelectorAll('.left-sideBar .p-panelmenu-panel');\r\n allMenuItems?.forEach((menauItem: any) => {\r\n menauItem?.setAttribute('class', 'p-panelmenu-panel');\r\n })\r\n title?.parentElement?.parentElement?.setAttribute('class', 'p-panelmenu-panel active');\r\n title?.parentElement?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class', 'p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n}\r\n\r\nexport function removeActiveIconClass() {\r\n const activeIcon = document.body?.querySelectorAll('.active-icon');\r\n if (activeIcon && activeIcon.length > 0) {\r\n activeIcon?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('class','p-element p-component p-panelmenu-header p-highlight');\r\n });\r\n }\r\n}\r\n\r\nexport function highlightLeftSidebar(){\r\n document.querySelector(\".form-container\")?.addEventListener(\"wheel\", () =>{\r\n const scrollTopPosition: any = document.querySelector(\".form-container\")?.scrollTop;\r\n const allIconElements: any = document.body.querySelectorAll(\".left-sideBar .p-panelmenu .p-panelmenu-panel\");\r\n\r\n allIconElements?.forEach((icon: any, index: any) => {\r\n icon?.setAttribute('tabIndex', 'section' + index);\r\n });\r\n removeActiveIconClass();\r\n document.querySelectorAll('.form-container .card')?.forEach((card: any, index: any) => {\r\n const currentId = \"section\" + index;\r\n if (scrollTopPosition >= card.offsetTop && scrollTopPosition <= card.offsetTop + card.offsetHeight){\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel active');\r\n } else{\r\n return document.body?.querySelector('[tabIndex='+ currentId + ']')?.setAttribute('class', 'p-panelmenu-panel'); \r\n }\r\n });\r\n });\r\n }\r\n\r\nexport function findKeysAndValue(data: any, record: any) {\r\n let valueKey: string = '';\r\n Object.keys(data).forEach((dataKey) => {\r\n let valueContainsKey: boolean = false;\r\n if(data[dataKey] && data[dataKey]?.toString()?.includes('{')){\r\n valueContainsKey = true;\r\n valueKey = data[dataKey]?.toString()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n }\r\n let key = Object.keys(record).find((key) => valueContainsKey ? (valueKey.toLowerCase() === key.toLowerCase()) : (dataKey.toLowerCase() === key.toLowerCase()));\r\n if (key && key.length > 0) {\r\n data = { ...data, [dataKey]: record[key] };\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nfunction setPropValue(obj: any, prop: IDictionary) {\r\n const matchedKey: string = getMatchKey(obj, prop.name);\r\n if (matchedKey) {\r\n return (obj[matchedKey] = prop.value);\r\n }\r\n}\r\n\r\nexport function hasRole(role: string): boolean {\r\n let storage = localStorage.getItem('CurrentUserInfo');\r\n if (storage) {\r\n let currentUser = JSON.parse(storage);\r\n if (currentUser && currentUser.roles && currentUser.roles.length > 0) {\r\n return currentUser.roles.some((item: any) => item.code.toString().toLowerCase() === role.toLowerCase());\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setLabelHyperlink(item: any, record: any, keys: string[], allData: any[] = []) {\r\n if (\r\n item.label &&\r\n item.label.labelControl &&\r\n item.label.labelControl.hyperlink &&\r\n item.label.labelControl.hyperlink.params\r\n ) {\r\n const paramKeys = Object.keys(item.label.labelControl.hyperlink.params);\r\n const link = item.label.labelControl.hyperlink.link;\r\n if (item.label.labelControl.hyperlink.link) {\r\n item.label.labelControl.hyperlink.link = setHyperlink(\r\n keys,\r\n record,\r\n link,\r\n paramKeys,\r\n item.label.labelControl.hyperlink.params,\r\n allData\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function setHyperlink(\r\n keys: string[],\r\n record: any,\r\n link: string,\r\n paramKeys: string[],\r\n params: any,\r\n allData: any[] = []\r\n): string {\r\n let newLink: string = link;\r\n record = objConvertToLower(record);\r\n paramKeys.forEach((paramkey) => {\r\n const param: string = '{{' + paramkey.toLowerCase() + '}}';\r\n const isParamMatched = newLink.localeCompare(param);\r\n const paramInRecord = setParamKeyValue(record, allData, paramkey);\r\n\r\n if (isParamMatched) {\r\n let paramValue = params ? params[paramkey] : null;\r\n if(paramValue === '' && paramInRecord){\r\n paramValue = '{'+paramkey+'}';\r\n }\r\n if (paramValue) {\r\n const propName = paramValue.toString().replace('{', '').replace('}', '');\r\n let propValue = record[propName.toLowerCase()];\r\n \r\n // in case of prop not found in record then try to find prop in all data array, to get its value \r\n if (!propValue && allData && allData.length > 0)\r\n {\r\n allData.forEach((data)=>{\r\n //const value = data.records.find((x)=> x[propName]);\r\n data.records.forEach((allRecord: any)=>{\r\n let keys = Object.keys(allRecord);\r\n let matchKey = keys.find((x)=> x.toLowerCase() === propName.toLowerCase());\r\n if (matchKey){\r\n propValue = allRecord[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(paramValue.toString().includes('{') ? propValue : paramValue));\r\n \r\n } else {\r\n // get param value from api response, if param key exists in it\r\n const matchedKey: any = keys.find(\r\n (x) => x.toLowerCase() === paramkey.toLowerCase()\r\n );\r\n\r\n if (matchedKey) {\r\n paramValue = record[matchedKey];\r\n if (paramValue) {\r\n newLink = newLink.replace(\r\n new RegExp(param, 'ig'),\r\n toTrim(paramValue)\r\n );\r\n } else {\r\n newLink = newLink.replace(new RegExp(param, 'ig'), toTrim(''));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n // replace the {{param}} with empty\r\n if(newLink && newLink.includes(\"{{\") && newLink.includes(\"}}\")){\r\n newLink = newLink?.replace(/{+.*?}+/g, \"\");\r\n }\r\n return newLink;\r\n}\r\n\r\n// its checking if there is no value in hyperlink param then it set key as a paramValue\r\nfunction setParamKeyValue(record: any, allData: any[] = [], paramkey: any){\r\n let paramValue: boolean = false;\r\n if(allData && allData.length > 0){\r\n allData.forEach((data: any)=>{\r\n if(data.records && data.records.length > 0){\r\n data.records.forEach((allRecord: any) =>{\r\n if(paramValue === false){\r\n paramValue = Object.keys(allRecord).some((record)=> record.toLowerCase() === paramkey.toLowerCase());\r\n };\r\n });\r\n };\r\n });\r\n }else{\r\n paramValue = Object.keys(record).some((x)=> x === paramkey.toLowerCase());\r\n }\r\n return paramValue;\r\n}\r\n\r\nfunction getPropertyValue(data: any, propName: string) {\r\n let propValue: any;\r\n data.records?.forEach((record: any) => {\r\n for (const [key, value] of Object.entries(record)) {\r\n if (key && propName && key.toLowerCase() === propName.toLowerCase()) {\r\n propValue = value;\r\n }\r\n }\r\n });\r\n return propValue;\r\n}\r\n\r\nfunction formatFormFieldCValue(field: any) {\r\n if (\r\n field.format?.type === EFormatType.BOOLEAN_YN &&\r\n field.format?.formatter?.name === 'toBoolean'\r\n ) {\r\n return (field.value === 1 || field.value === true) ? 'Y' : 'N';\r\n } else if (\r\n field.control === EFormControl.CALENDAR &&\r\n (field.value || field.value === '')\r\n ) {\r\n if(field.timeOnly && field.saveAsString){\r\n field.value = field.value;\r\n }else{\r\n field.value =\r\n field.showTime === true\r\n ? toShortDateTime(field.value, field.format)\r\n : toShortDate(field.value, field.format)\r\n }\r\n return field.value;\r\n } else if (\r\n (field.control === EFormControl.LOOKUP_INPUT || field.control === EFormControl.INPUT) &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value == undefined ? null : field.value.value;\r\n } else if (\r\n field.label &&\r\n field.label.labelControl &&\r\n field.label.labelControl.control === EFormControl.LOOKUP_INPUT &&\r\n field.value &&\r\n typeof field.value === 'object'\r\n ) {\r\n return field.value.value;\r\n } else {\r\n field.value = field.value == undefined ? null : field.value;\r\n return field.value;\r\n }\r\n}\r\n\r\nexport function autoSetLookupData(\r\n fieldData: any,\r\n response: any\r\n) {\r\n let obj = {};\r\n let record = setDataFields([response]);\r\n if (record && record.length > 0) {\r\n record.forEach((x: any) => {\r\n record = x;\r\n });\r\n }\r\n if (fieldData && record) {\r\n Object.entries(fieldData).forEach(([dataKey, dataValue]: any) => {\r\n let rowKeys = Object.keys(record);\r\n let key = rowKeys?.find((x) => x?.toLowerCase() === dataKey?.toString()?.toLowerCase());\r\n let value = rowKeys?.find(\r\n (x) => dataValue && dataValue?.toString().includes('{') && x?.toLowerCase() === dataValue?.toString()?.toLowerCase()?.replace(\"{\", \"\")?.replace(\"}\", \"\")\r\n );\r\n if (value && value.length > 0) {\r\n obj = { ...obj, [dataKey]: record[value.toLowerCase()] };\r\n } else if (key && key.length > 0) {\r\n obj = { ...obj, [dataKey]: record[key.toLowerCase()] };\r\n } else {\r\n obj = { ...obj, [dataKey]: dataValue };\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function setGridLookupData(column: IGridColumn[], field: string, data: any){\r\n let obj = column.find((x)=> x.field?.toLowerCase() === field.toLowerCase());\r\n if(obj && obj.lookupControl?.data){\r\n obj.lookupControl.data.data = data;\r\n }\r\n}\r\n\r\nexport function setDataFields(response: any[]) {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n const result = Object.keys(x).reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n\r\n data.push(result);\r\n });\r\n }\r\n return data;\r\n}\r\n\r\nexport function setDialogResponse(\r\n formField: any,\r\n formData: any,\r\n response: any\r\n) {\r\n let value: any;\r\n if (response) {\r\n // if selectedValue does not exist then consider valueField as selectedValue\r\n if (\r\n formData &&\r\n formData.data &&\r\n formData.data.valueField &&\r\n !formData.data.selectedValue\r\n ) {\r\n formData.data.selectedValue = formData.data.valueField;\r\n }\r\n\r\n const matchValueKey: string = getMatchKey(\r\n response,\r\n formData?.data?.selectedValue\r\n );\r\n const matchFieldKey: string = getMatchKey(\r\n response,\r\n formData?.data?.valueField\r\n );\r\n\r\n if (\r\n formData?.data &&\r\n formData?.data.selectedValue &&\r\n formData?.data.valueField\r\n ) {\r\n let selectedValue = response[matchValueKey];\r\n let matchText = response[matchFieldKey];\r\n if (typeof selectedValue === 'string' && typeof matchText === 'string') {\r\n selectedValue = selectedValue.trim();\r\n matchText = matchText.trim();\r\n }\r\n value = { text: matchText, value: selectedValue };\r\n } else {\r\n const FieldKey: string = getMatchKey(response, formField.field);\r\n let value = response[FieldKey];\r\n if (value) {\r\n value = value.trim();\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function currentUrl():string{\r\n let currentRoute: string = '';\r\n let url = window.location.href;\r\n if(url){\r\n let arr = url.split('/');\r\n currentRoute = arr[arr.length-1]\r\n } \r\n return currentRoute;\r\n}\r\n\r\nexport function getGridFilters(){\r\n let filters: any = [];\r\n let gridFilters = currentUrl();\r\n if(gridFilters && gridFilters.length > 0){\r\n const localFilter = JSON.parse(localStorage.getItem('SetFilters-'+gridFilters) as any);\r\n filters = localFilter?.filters;\r\n }\r\n return filters;\r\n}\r\n\r\n//update the hidden or disabled and value based off other global filters.\r\nexport function setGlobalFilterPropValues(\r\n globalFilter: IGlobalFilter[],\r\n field: string,\r\n props: IFilterDictionary[],\r\n) {\r\n return globalFilter.map((filter: any) => {\r\n if (\r\n (filter.field && filter.field.toLowerCase() === field?.toLowerCase()) ||\r\n (filter.displayText &&\r\n filter.displayText.toLowerCase() === field?.toLowerCase())\r\n ) {\r\n props?.map((prop: IFilterDictionary) => {\r\n if (filter.hasOwnProperty(prop.propName)) {\r\n return (filter[prop.propName] = prop.propValue);\r\n } else if (prop.propValue && prop.propValue.length > 0) {\r\n return (filter.value = prop.propValue);\r\n }\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function setCardFieldsData(form: any) {\r\n if (form && form.dynamicform) {\r\n const { dynamicform, ...newData } = form;\r\n dynamicform?.formSections?.forEach((section: any) => {\r\n section.fields?.forEach((field: any) => {\r\n if (newData) {\r\n setEditFormFields({ records: [newData] }, dynamicform);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n\r\n// disable Grid EditableRow Column\r\nexport function disableEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let disableObj = { ...obj, disabled: true };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = disableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n// enabled Grid EditableRow Column\r\nexport function enabledEditRowColumn(columns: IGridColumn[], field: string): IGridColumn[] {\r\n if (field && columns && columns.length > 0) {\r\n let obj = columns.find((x) => x.field?.toLowerCase() === field.toLowerCase());\r\n let enableObj = { ...obj, disabled: false };\r\n const index = columns.findIndex((i: any) => i.field.toLowerCase() === field.toLowerCase());\r\n if (index !== -1) columns[index] = enableObj;\r\n }\r\n return columns;\r\n}\r\n\r\n // check the Minutes Interval\r\n export function setMinutesInterval(value: any){\r\n if (value) {\r\n const min = value.getMinutes().toString();\r\n if (min) {\r\n value = value.setMinutes(0);\r\n }\r\n }\r\n return value;\r\n}\r\n\r\n // update the response records\r\n export function setUpdatedRecord(records: any[], rowData: any, dataKey: string): any[]{\r\n const index = records?.findIndex((record)=> record[dataKey?.toLowerCase()] == rowData[dataKey?.toLowerCase()]);\r\n if(index > -1){\r\n records[index] = rowData;\r\n }else{\r\n records.push(rowData);\r\n }\r\n return records;\r\n}\r\n\r\n//convert the time into date\r\nexport function setTimeInDate(time: any) {\r\n const convertTime12to24 = (time12h: any) => {\r\n const [time, modifier] = time12h?.toString()?.split(' ');\r\n let [hours, minutes] = time?.split(':');\r\n if (hours === '12') {\r\n hours = '00';\r\n }\r\n if (modifier === 'PM') {\r\n hours = parseInt(hours, 10) + 12;\r\n }\r\n return `${hours}:${minutes}`;\r\n };\r\n const date = convertTime12to24(time);\r\n const tempDate = new Date('July 1, 1999, ' + date + ':00');\r\n const futureDate = new Date();\r\n futureDate.setTime(tempDate.getTime());\r\n return futureDate;\r\n}\r\n\r\n// return the data of the field \r\nexport function getFieldData({ formSections }: any, field: string){\r\n let data: any = []\r\n if(formSections?.length > 0 && field){\r\n formSections.forEach((section: any)=>{\r\n if(section.fields.some((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())){\r\n data=section.fields.find((formField:any)=> formField.field?.toLowerCase() == field.toLowerCase())?.data\r\n }\r\n })\r\n }\r\n return data;\r\n}\r\n\r\nexport function setAllFormFieldsValues(\r\n { formSections }: IDynamicForm,\r\n props: IFilterDictionary[]\r\n) {\r\n formSections?.map((section: IFormSection) => {\r\n if (section) {\r\n section.fields.map((formField: any) => {\r\n return props.map((prop: IFilterDictionary) => {\r\n if (formField) {\r\n return (formField[prop.propName] = prop.propValue);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport function calenderMinMaxValue(item: any,value: any, index){\r\n let validation: string = 'equal';\r\n var validDate = new Date(item.validations[index].expression);\r\n var currentDate = new Date(value);\r\n if (validDate.getTime() < currentDate.getTime()){\r\n validation = 'greater';\r\n }\r\n else if (validDate.getTime() > currentDate.getTime()){\r\n validation = 'minimum';\r\n }\r\n return validation;\r\n}\r\n/* #endregion */\r\n","import { Injectable } from '@angular/core';\r\nimport { LazyLoadEvent } from 'primeng/api';\r\nimport { IDropDownRequest } from '../models/form.model';\r\nimport { DatePipe } from '@angular/common';\r\nimport {\r\n EGridSortDirection,\r\n GridFilterControlType,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridSort,\r\n EGridColumnType,\r\n addColumn,\r\n addFilterColumn,\r\n addGlobalFilter,\r\n IGridColumn,\r\n EGridValidator,\r\n IGridProp,\r\n IGridPropFilter,\r\n IGridRowProp,\r\n IGridReportBtn,\r\n} from '../models/grid.model';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { HyperlinkService } from './hyperlink.service';\r\nimport * as utilities from './utilities.service';\r\nimport { RequestService } from './request.service';\r\nimport { IDictionary } from '../models/common.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GridService {\r\n softCachingFilters: any = {};\r\n applyFilterEvent: boolean = true;\r\n public columnFocusedOut:boolean = false;\r\n constructor(\r\n public datepipe: DatePipe,\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService:DropdownService,\r\n private alertService:AlertService,\r\n private requestService: RequestService\r\n ) {}\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns after proper mapping\r\n */\r\n getGridFilters(event: LazyLoadEvent, columns: IGridColumn[]): IGridFilter[] {\r\n const filters = this.mapFilters(event, columns);\r\n return this.handleMultiFilterField(filters);\r\n }\r\n\r\n /**\r\n * @param filters\r\n * Receives filters and returns array after removing duplicates\r\n * and creating comma separated values for same filters\r\n */\r\n handleMultiFilterField(filters: IGridFilter[]): IGridFilter[] {\r\n return filters\r\n .map((x, i, arr) =>\r\n arr.some((y, idx) => y.field?.toLowerCase() === x.field?.toLowerCase() && i !== idx)\r\n ? {\r\n ...x,\r\n value: arr\r\n .filter((z) => z.field?.toLowerCase() === x.field?.toLowerCase())\r\n .map((a) => a.value)\r\n .join(),\r\n }\r\n : x\r\n )\r\n .filter((f, i, arr) => arr.findIndex((x) => x.value === f.value) === i);\r\n }\r\n\r\n // Prepare basic grid filters\r\n prepareBasicFilters(\r\n event: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridFilter[] {\r\n return this.mapFilters(event, columns);\r\n }\r\n\r\n /**\r\n * Checks if filters has values then converts global filter values type into IGridFilter.\r\n */\r\n prepareGlobalFilters(globalFilters: IGlobalFilter[]): IGridFilter[] {\r\n const globalData: IGridFilter[] = [];\r\n\r\n globalFilters?.forEach((filter: IGlobalFilter) => {\r\n if (\r\n ((typeof filter.value === 'string' || Array.isArray(filter.value)) &&\r\n filter.value.length) ||\r\n (typeof filter.value !== 'string' &&\r\n !Array.isArray(filter.value) &&\r\n filter.value) ||\r\n (typeof filter.value === 'boolean' && filter.value !== null) ||\r\n filter.type === GridFilterControlType.CALENDAR_RANGE\r\n ) {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE && filter.value?.toString()?.includes('|')) {\r\n // add filter for start date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode: filter.matchMode ? filter.matchMode : 'gte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n\r\n // add filter for end date\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter, false),\r\n matchMode: filter.matchMode ? filter.matchMode : 'lte',\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter, false),\r\n tableAlias: filter.tableAlias,\r\n });\r\n } else if(filter.type !== GridFilterControlType.CALENDAR_RANGE) {\r\n globalData.push({\r\n field: this.setGlobalFilterField(filter),\r\n matchMode:\r\n filter.type === GridFilterControlType.MULTISELECT\r\n ? 'in'\r\n : filter.matchMode,\r\n operator: filter.operator ? filter.operator : 'and',\r\n value: this.setGlobalFilterValue(filter),\r\n tableAlias: filter.tableAlias,\r\n });\r\n }\r\n }\r\n });\r\n return globalData;\r\n }\r\n\r\n setGlobalFilterField(\r\n filter: any,\r\n isStartDate: boolean = true\r\n ): string {\r\n if (filter.type === GridFilterControlType.CALENDAR_RANGE) {\r\n if (isStartDate) {\r\n return filter.fromField;\r\n } else {\r\n return filter.toField;\r\n }\r\n } else {\r\n return filter.field;\r\n }\r\n }\r\n\r\n // set global filter value\r\n setGlobalFilterValue(\r\n filter: IGlobalFilter,\r\n isStartDate: boolean = true\r\n ): string | number | Date | boolean {\r\n switch (filter.type) {\r\n case GridFilterControlType.MULTISELECT:\r\n return (filter.value as any[]).join(',');\r\n case GridFilterControlType.CALENDAR:\r\n return this.getFormattedDate(filter.value as Date);\r\n case GridFilterControlType.CALENDAR_RANGE:\r\n let dateValues: string[] = filter.value\r\n ? filter.value.toString().split('|')\r\n : [];\r\n if (dateValues && dateValues.length == 2) {\r\n let dateValue: Date = isStartDate\r\n ? new Date(dateValues[0])\r\n : new Date(dateValues[1]);\r\n return this.getFormattedDate(dateValue);\r\n } else {\r\n return '';\r\n }\r\n case GridFilterControlType.CHECKBOX:\r\n return filter.value ? true : false;\r\n default:\r\n return filter.value as string;\r\n }\r\n }\r\n\r\n checkValidity(columns: IGridColumn[], row: any){\r\n let isValid: boolean = true;\r\n columns.map((item: any) => {\r\n if (item.validations && !item.disabled) {\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, row[item.field], i);\r\n const valid = item.validations && item.header\r\n if (\r\n item.validations[i].type == EGridValidator.REQUIRED &&\r\n !row[item.field] &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = row[item.field]\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINLENGTH &&\r\n row[item.field].length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXLENGTH &&\r\n row[item.field].length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] < item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.MAXIMUM &&\r\n isValid \r\n ) {\r\n if(item.type === EGridColumnType.DATE){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(row[item.field] > item.validations[i].expression){\r\n isValid =\r\n row[item.field] && row[item.field].length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PATTERN &&\r\n !row[item.field].match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.NUMERIC &&\r\n !row[item.field].toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field].match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.PHONE &&\r\n !row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.DECIMAL &&\r\n !row[item.field]?.toString().match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n row[item.field] && row[item.field]?.toString().match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Enter ${item.validations[i].type} for ${valid}`\r\n );\r\n break;\r\n } else if (\r\n row[item.field] &&\r\n item.validations[i].type == EGridValidator.EMAIL &&\r\n !row[item.field]?.toString().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n row[item.field] &&\r\n row[item.field]?.toString().match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IGridColumn, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n // set basic filter value\r\n setBasicFilterValue(filter: any): any {\r\n if (filter instanceof Date) {\r\n return this.getFormattedDate(filter);\r\n } else if (typeof filter === 'boolean') {\r\n return filter ? 1 : 0;\r\n } else {\r\n return filter;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param param\r\n * Receives lazy event and returns sort array\r\n */\r\n getGridSorts(\r\n { multiSortMeta }: LazyLoadEvent,\r\n columns: IGridColumn[]\r\n ): IGridSort[] {\r\n return (multiSortMeta || []).map(({ field, order }, i): any => ({\r\n field,\r\n direction: order > 0 ? EGridSortDirection.ASC : EGridSortDirection.DESC,\r\n priority: i + 1,\r\n tableAlias: this.setTableAlias(field, columns),\r\n }));\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Handles default and lookup filters\r\n */\r\n mapFilters(event: any, columns: IGridColumn[]): IGridFilter[] {\r\n const filters: IGridFilter[] = [];\r\n Object.entries(event.filters).forEach(([field, value]: any) => {\r\n if (Array.isArray(value)) {\r\n (value as IGridFilter[]).forEach(\r\n ({ matchMode, operator, value: filter }) => {\r\n if (filter !== null) {\r\n filters.push({\r\n field,\r\n matchMode,\r\n operator,\r\n value: this.setBasicFilterValue(filter),\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n if (value.value !== '') {\r\n switch (typeof value.value) {\r\n case 'boolean':\r\n filters.push({\r\n field,\r\n matchMode: 'equals',\r\n operator: 'and',\r\n value: value.value ? 1 : 0,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'string':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'number':\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n break;\r\n case 'object':\r\n if (value.value instanceof Date) {\r\n filters.push({\r\n field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value:\r\n value.value instanceof Date\r\n ? this.getFormattedDate(value.value)\r\n : value.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n } else {\r\n (value.value || []).forEach((x: any) => {\r\n filters.push({\r\n field,\r\n matchMode: value.matchMode,\r\n operator: 'and',\r\n value: x.value,\r\n tableAlias: this.setTableAlias(field, columns),\r\n });\r\n });\r\n }\r\n break;\r\n default:\r\n null;\r\n }\r\n }\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Receives lazy event and returns page number\r\n */\r\n getGridPagination(event: any): number {\r\n return isNaN(event.first / event.rows) ? 1 : event.first / event.rows + 1;\r\n }\r\n\r\n // get formatted date\r\n getFormattedDate(value: Date): string {\r\n return new Date(`${value} Z`).toISOString().slice(0, 10);\r\n }\r\n\r\n // add simple grid column without\r\n addColumn(columnInfo: addColumn): IGridColumn {\r\n if(columnInfo.type === EGridColumnType.DROPDOWN){\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n }\r\n const column: IGridColumn = {\r\n allowSearch: columnInfo.allowSearch,\r\n field: columnInfo.field,\r\n header: columnInfo.header,\r\n style: columnInfo.style,\r\n type: columnInfo.type,\r\n format: columnInfo.format,\r\n data: columnInfo.data,\r\n filtering: columnInfo.filtering,\r\n hidden: columnInfo.hidden,\r\n sorting: columnInfo.sorting,\r\n filter: columnInfo.filter,\r\n hyperlink: columnInfo.hyperlink,\r\n tableAlias: columnInfo.tableAlias,\r\n linkId: columnInfo.linkId,\r\n minutesInterval: columnInfo.minutesInterval,\r\n params: columnInfo.params,\r\n showOption: columnInfo.showOption,\r\n displayText: columnInfo.displayText,\r\n target: columnInfo.target,\r\n disabled: columnInfo.disabled,\r\n allowSave: columnInfo.allowSave,\r\n editable: columnInfo.editable, \r\n editLink: columnInfo.editLink,\r\n saveAsString: columnInfo.saveAsString,\r\n component: columnInfo.component,\r\n onClick: columnInfo.onClick,\r\n onReturn: columnInfo.onReturn,\r\n onFocusOut: columnInfo.onFocusOut,\r\n onChange: columnInfo.onChange,\r\n aggregate: columnInfo.aggregate,\r\n formatter: columnInfo.formatter,\r\n permissions: columnInfo.permissions,\r\n optionLabel: columnInfo.optionLabel,\r\n optionValue: columnInfo.optionValue,\r\n dropDownProp: columnInfo.dropDownProp,\r\n showTime: columnInfo.showTime,\r\n timeOnly: columnInfo.timeOnly,\r\n lookupControl: columnInfo.lookupControl,\r\n displayField: columnInfo.displayField,\r\n icon: columnInfo.icon,\r\n color: columnInfo.color,\r\n id: columnInfo.id,\r\n value: columnInfo.value,\r\n validations: columnInfo.validations,\r\n };\r\n\r\n return column;\r\n }\r\n \r\n // Adding Report Button Function for Grid\r\n addReportBtn(columnInfo: IGridReportBtn){ \r\n columnInfo.type = EGridColumnType.REPORT;\r\n return columnInfo;\r\n}\r\n\r\n // add simple input grid column\r\n addInputColumn(\r\n filterColumnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n filterColumnInfo.filter = { type: GridFilterControlType.INPUT, showFilter: this.showFilterIcon(filterColumnInfo) };\r\n }\r\n return this.addColumn(filterColumnInfo);\r\n }\r\n\r\n // add simple numeric grid column without\r\n addNumericColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.NUMERICINPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.NUMERIC;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple calendar grid column without\r\n addCalendarColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.CALENDAR, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type= columnInfo.type ? columnInfo.type : EGridColumnType.DATE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add simple boolean grid column without\r\n addBooleanColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true\r\n ): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.type = EGridColumnType.BOOLEAN,\r\n columnInfo.filter = { type: GridFilterControlType.CHECKBOX, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add LookUp Field for Grid\r\n addLookUpColumn(columnInfo: addColumn, showFilter: boolean = true): IGridColumn {\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.LOOKUP_INPUT, showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n columnInfo.type = EGridColumnType.LOOKUP_INPUT;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add Button for grid column\r\n addButtonColumn(\r\n columnInfo: addColumn,\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.ADD_BUTTON;\r\n if (!columnInfo.field) {\r\n columnInfo.field = columnInfo.value ? columnInfo.value : columnInfo.icon;\r\n }\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // add AutoComplete for grid column\r\n addAutoComplete(columnInfo: addColumn): IGridColumn {\r\n columnInfo.type = EGridColumnType.AUTOCOMPLETE;\r\n return this.addColumn(columnInfo);\r\n }\r\n\r\n // Search AutoComplete Data for Grid\r\n getAutoCompleteData(column?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n column.data = this.setDataFields(response.records);\r\n });\r\n }\r\n\r\n\r\n // add simple dropdown grid column without\r\n addDropdownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n dropDownProp?: IDropDownRequest\r\n ): IGridColumn {\r\n columnInfo.type = EGridColumnType.DROPDOWN;\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.DROPDOWN,\r\n data: !columnInfo?.filter?.data && !dropDownProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (dropDownProp) {\r\n columnInfo.dropDownProp = dropDownProp;\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n }\r\n// add MultiSelectDropDown grid column\r\naddMultiSelectDropDownColumn(\r\n columnInfo: addColumn,\r\n showFilter: boolean = true,\r\n multiSelectProp?: IDropDownRequest\r\n): IGridColumn {\r\n columnInfo.optionLabel = columnInfo.optionLabel ? columnInfo.optionLabel : 'label';\r\n columnInfo.optionValue = columnInfo.optionValue ? columnInfo.optionValue : 'value';\r\n columnInfo.type = EGridColumnType.MULTISELECT;\r\n if (showFilter) {\r\n columnInfo.filter = { type: GridFilterControlType.MULTISELECT,\r\n data: !columnInfo?.filter?.data && !multiSelectProp && columnInfo.data ? columnInfo.data : columnInfo?.filter?.data ? columnInfo?.filter?.data : [], showFilter: this.showFilterIcon(columnInfo) };\r\n }\r\n if (multiSelectProp) {\r\n columnInfo.dropDownProp = multiSelectProp;\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.setDropdownData(\r\n columnInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n );\r\n }\r\n } else {\r\n return this.addColumn(columnInfo);\r\n }\r\n}\r\n\r\n showFilterIcon(columnInfo: addColumn){\r\n if(columnInfo.filter && columnInfo.filter.showFilter){\r\n return true; \r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n setDropdownData(\r\n column: IGridColumn,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any[],\r\n row?: {[key: string]: any}\r\n ): Promise <any> | any{\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters)\r\n .then((res: any) => {\r\n if(row){\r\n row[column.field+'_data'] = res;\r\n }else{\r\n column.data=res;\r\n if(column.filter && column.filter.type === \"dropdown\"){\r\n column.filter.data = res;\r\n }\r\n }\r\n return this.addColumn(column);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n\r\n // add grid column with built-in filter\r\n addFilterColumn(filterColumnInfo: addFilterColumn): IGridColumn {\r\n const column: any = {\r\n field: filterColumnInfo.field,\r\n header: filterColumnInfo.header,\r\n filter: { type: filterColumnInfo.filter },\r\n filtering: filterColumnInfo.filtering,\r\n hidden: filterColumnInfo.hidden,\r\n style: filterColumnInfo.style,\r\n tableAlias: filterColumnInfo.tableAlias,\r\n permissions: filterColumnInfo.permissions\r\n };\r\n\r\n return column;\r\n }\r\n\r\n // add date grid column with built-in filter\r\n addDateColumn(dateColumnInfo: addFilterColumn): IGridColumn {\r\n const column: IGridColumn = {\r\n field: dateColumnInfo.field,\r\n header: dateColumnInfo.header,\r\n type: dateColumnInfo.type ? dateColumnInfo.type : EGridColumnType.DATE,\r\n filtering: dateColumnInfo.filtering,\r\n filter: { type: GridFilterControlType.CALENDAR },\r\n format: dateColumnInfo.format,\r\n style: dateColumnInfo.style,\r\n tableAlias: dateColumnInfo.tableAlias,\r\n disabled: dateColumnInfo.disabled,\r\n allowSave: dateColumnInfo.allowSave,\r\n permissions: dateColumnInfo.permissions,\r\n component: dateColumnInfo.component,\r\n showTime: dateColumnInfo.showTime,\r\n timeOnly: dateColumnInfo.timeOnly,\r\n data: dateColumnInfo.data,\r\n hidden: dateColumnInfo.hidden,\r\n };\r\n return column;\r\n }\r\n\r\n setLookUpFilter(column: any, dialogService: any) {\r\n if (column.lookupControl) {\r\n let dataValue: any[]= [];\r\n let dataKey: any[] = [];\r\n let data = column.lookupControl?.data?.data;\r\n const keys = Object.keys(data);\r\n if (data && keys?.length > 0) {\r\n keys.forEach((key) => {\r\n if (data[key].toString().includes('{')) {\r\n dataValue.unshift(data[key]);\r\n dataKey.unshift(key);\r\n data[key] = '';\r\n }\r\n });\r\n }\r\n const ref = dialogService.open(\r\n column.lookupControl.component,\r\n column.lookupControl.data\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if (column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n if(dataKey?.length > 0 && dataValue?.length > 0){\r\n dataKey.forEach((key,keyIndex)=>{\r\n dataValue.forEach((value, valueIndex)=>{\r\n if(keyIndex === valueIndex){\r\n data[key] = value;\r\n }\r\n });\r\n });\r\n }\r\n if (res) {\r\n document.getElementById('lookUp_filter')?.focus();\r\n let field = column.field;\r\n let value =utilities.setDialogResponse(\r\n column,\r\n column?.lookupControl,\r\n res\r\n );\r\n column.value = value?.value ? value.value : res[field.toLowerCase()];\r\n }\r\n },\r\n ({ error }:any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n // Set Hyperlink field as a param Value\r\n setFieldAsLinkParam(columns: any, field: string, response: any) {\r\n if(columns && columns.length > 0 && field && response.records && response.records.length > 0){\r\n this.setDataFields(response.records).forEach((res: any) => {\r\n let obj = columns.find((x: any)=> x.field === field);\r\n if(obj && obj.params){\r\n const keys = Object.keys(obj.params)\r\n keys.forEach((key: any)=>{\r\n if(obj.params[key] && obj.params[key].toString().includes('{')){\r\n let value = obj.params[key].replace('{','').replace('}','').toLowerCase();\r\n obj.params[key] = res[value];\r\n }\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n hasAnyLinkColumn(columns: IGridColumn[]): boolean {\r\n return columns && columns.some((x) => x.type == EGridColumnType.LINK || x.type == EGridColumnType.IFRAME || x.type == EGridColumnType.DIALOG || \r\n (x.linkId && x.type == EGridColumnType.LOOKUP_INPUT));\r\n }\r\n\r\n setHyperlinks(fetchResponse: any, columns: IGridColumn[]): any {\r\n columns.forEach((column)=>{\r\n if(column.type === EGridColumnType.DIALOG && !column.data){\r\n this.alertService.error(`\"Data\" property is missing for \"${column.header}\" column`);\r\n }\r\n })\r\n let records: any = [];\r\n let data = fetchResponse && fetchResponse.records.length > 0 ? this.setDataFields(fetchResponse.records) : [];\r\n let newRow:any;\r\n\r\n return this.hyperlinkService\r\n .addHyperlinks(columns).then((linksResponse: any) => {\r\n data.forEach((row: any) => {\r\n newRow = { ...row };\r\n columns.forEach((col: any) => {\r\n let keys = Object.keys(row);\r\n if(col.type === EGridColumnType.DIALOG){\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n if(col.format && newRow[field].displayText){\r\n newRow[field].displayText = this.datepipe.transform(newRow[field].displayText,col.format);\r\n }\r\n if (col.data && col.data.data){\r\n newRow[field].dialogData = utilities.findKeysAndValue(col.data.data,row);\r\n }\r\n }\r\n linksResponse.forEach((linkResponse: any) => {\r\n if (\r\n (col.type === EGridColumnType.LINK ||\r\n col.type === EGridColumnType.IFRAME || col.type === EGridColumnType.LOOKUP_INPUT) &&\r\n col.linkId &&\r\n col.params &&\r\n col.linkId === linkResponse.linkId\r\n ) {\r\n const paramKeys: string[] = Object.keys(col.params);\r\n const link: any = utilities.setHyperlink(\r\n keys,\r\n row,\r\n linkResponse.url,\r\n paramKeys,\r\n col.params\r\n );\r\n\r\n let field = col.field + '_obj';\r\n newRow[field] = { ...col };\r\n newRow[field].hyperlink = link;\r\n newRow[field].displayText = col.displayText\r\n ? row[col.displayText.toLowerCase()]\r\n : row[col.field.toLowerCase()];\r\n }\r\n });\r\n });\r\n records.push(newRow);\r\n });\r\n return records;\r\n });\r\n }\r\n\r\n // add grid global filter with built-in filter\r\n addGlobalFilter(globelFilterInfo: addGlobalFilter) {\r\n const column: addGlobalFilter = {\r\n field: globelFilterInfo.field,\r\n displayText: globelFilterInfo.displayText,\r\n validations: globelFilterInfo.validations,\r\n type: globelFilterInfo.type,\r\n data: globelFilterInfo.data,\r\n value: globelFilterInfo.value,\r\n valueTwo: globelFilterInfo.valueTwo,\r\n matchMode: globelFilterInfo.matchMode,\r\n operator: globelFilterInfo.operator,\r\n tableAlias: globelFilterInfo.tableAlias,\r\n optionLabel: globelFilterInfo.optionLabel,\r\n optionValue: globelFilterInfo.optionValue,\r\n onFocusOut: globelFilterInfo.onFocusOut,\r\n filtering: globelFilterInfo.filtering,\r\n column: globelFilterInfo.column,\r\n dayRange: globelFilterInfo.dayRange,\r\n fromField: globelFilterInfo.fromField,\r\n toField:globelFilterInfo.toField,\r\n lookupControl: globelFilterInfo.lookupControl,\r\n allowSearch: globelFilterInfo.allowSearch,\r\n disabled: globelFilterInfo.disabled,\r\n hidden: globelFilterInfo.hidden,\r\n labelText: globelFilterInfo.labelText,\r\n prefix: globelFilterInfo.prefix,\r\n color: globelFilterInfo.color,\r\n format: globelFilterInfo.format,\r\n };\r\n return column;\r\n }\r\n\r\n // add global input filter\r\n addGlobalInputFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add global dropdown filter\r\n addGlobalDropdownFilter(globelFilterInfo: IGlobalFilter, dropDownProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters = dropDownProp.filters;\r\n let sorts= dropDownProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters,\r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n // add global MultiSelect dropdown filter\r\n addGlobalMultiSelectDropDownFilter(globelFilterInfo: IGlobalFilter, multiSelectProp?: IDropDownRequest): any {\r\n globelFilterInfo.type = GridFilterControlType.MULTISELECT;\r\n if (multiSelectProp) {\r\n let uniqueKey = multiSelectProp.uniqueKey;\r\n let valueProp = multiSelectProp.valueProp;\r\n let labelProp = multiSelectProp.labelProp;\r\n let filters = multiSelectProp.filters;\r\n let sorts = multiSelectProp.sorts;\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(\r\n globelFilterInfo,\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters, \r\n sorts\r\n );\r\n }\r\n } else{\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n }\r\n \r\n \r\n\r\n\r\n getDropdownData(\r\n fieldInfo: any,\r\n uniqueKey: string,\r\n valueProp: string,\r\n labelProp: string,\r\n filters: any,\r\n sorts: IGridSort[] = []\r\n ) {\r\n return this.dropdownService\r\n .setDropDownList(uniqueKey, valueProp, labelProp, filters ,sorts)\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addGlobalFilter(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n });\r\n }\r\n // add global filter Space Field\r\n addGlobalFilterSpaceField(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.SPACER;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n}\r\n\r\n // add global boolean filter\r\n addGlobalBooleanFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CHECKBOX;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.CALENDAR_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add Range Filter for global Filter\r\n addGlobalDateRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.DATE_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric Range Filter for global Filter\r\n addGlobalNumericRangeFilter(globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.NUMERIC_RANGE;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n // add Numeric input for global Filter\r\n addGlobalNumericInput(globelFilterInfo: addGlobalFilter){\r\n globelFilterInfo.type = GridFilterControlType.NUMERICINPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n // add LookUp Field for global Filter\r\n addGlobalLookupFilter (globelFilterInfo: addGlobalFilter) {\r\n globelFilterInfo.type = GridFilterControlType.LOOKUP_INPUT;\r\n return this.addGlobalFilter(globelFilterInfo);\r\n }\r\n\r\n setDataFields(response: any, dataKey: string = \"\") {\r\n let data: any = [];\r\n if (response && response.length > 0) {\r\n response.map((x: any, index: number) => {\r\n if(Object.keys(x ?? {})?.length > 0){\r\n const result:any = Object.keys(x)?.reduce(\r\n (prev, current) => ({ ...prev, [current.toLowerCase()]: x[current] }),\r\n {}\r\n );\r\n if (dataKey && dataKey.length > 0 && !Object.keys(result)?.includes(dataKey))\r\n {\r\n result[dataKey] = index;\r\n }\r\n \r\n data.push(result);\r\n }\r\n });\r\n }\r\n return data;\r\n }\r\n\r\n setColumnFields(columns: any[]) {\r\n let column: any = [];\r\n if (columns && columns.length > 0) {\r\n columns.map((col: any) => {\r\n column.push({ ...col, field: col?.field?.toLowerCase() });\r\n });\r\n return column;\r\n }\r\n }\r\n\r\n // change linkId in edit mode, if changeLink is true then it change the edited row hyperlink value\r\n setLinkId(columns: IGridColumn[], field:string, linkId: string, record: any, users: any, params:any = null, changeLink: boolean = false): any {\r\n if (columns && columns.length > 0) {\r\n columns.forEach((column: any) => {\r\n if (column.field?.toLowerCase() === field.toLowerCase()) {\r\n column.linkId = linkId;\r\n if(params){\r\n column.params = params;\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setHyperlinks({records: [record]}, columns).then((res: any)=>{\r\n if(changeLink){\r\n delete res[0][field.toLowerCase()+'_obj'];\r\n let index = users.findIndex((i:any)=> i[field.toLowerCase()] === record[field.toLowerCase()]);\r\n if(index !== -1){\r\n if(users[index][field+'_obj']){\r\n users[index][field+'_obj'].hyperlink = res[0][field+'_obj'].hyperlink;\r\n }\r\n }\r\n } \r\n });\r\n }\r\n\r\n // set grid data and set selected row based on selection value\r\n setDataWithSelectedRow(records: any, configData: any) {\r\n if (configData?.selectedValue && configData.data.selection) {\r\n records.forEach((record: any) => {\r\n Object.keys(record)?.forEach((key) => {\r\n if (key.toLowerCase() === configData.selectedValue.toLowerCase()) {\r\n if(configData.data.value && record[key] === configData.data.value){\r\n record['highlightRow'] = true;\r\n } else if(record[key] === configData.data.selection){\r\n record['highlightRow'] = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return records;\r\n }\r\n\r\n setTableAlias(field: string, columns: IGridColumn[]) {\r\n if (columns && columns.length > 0) {\r\n const column = columns.find(\r\n (x: any) => x.field.toLowerCase() == field.toLowerCase()\r\n );\r\n\r\n if (column != null && column.tableAlias && column.tableAlias.length > 0) {\r\n return column.tableAlias;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n setGridPropValues(\r\n columns: IGridColumn[],\r\n props: IGridProp[],\r\n filter?: IGridPropFilter,\r\n records?: any[],\r\n ) {\r\n if (columns && columns.length > 0 && props && props.length > 0) {\r\n let isMatched: boolean = false;\r\n if (filter && filter.field && records && records.length > 0) {\r\n isMatched = records.some((x) => utilities.objConvertToLower(x)[filter.field.toLowerCase()] === filter.value);\r\n }\r\n props.map((prop: IGridProp) => {\r\n let col: any = {};\r\n if (prop.field && !isMatched && !filter?.field) {\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n } else if (isMatched) {\r\n if(prop.field){\r\n col = columns.find((column) => column.field?.toLowerCase() === prop.field?.toLowerCase());\r\n }else {\r\n col = columns.find((column) => column.field?.toLowerCase() === filter?.field?.toLowerCase());\r\n }\r\n }\r\n if (col && col.hasOwnProperty(prop.name)) {\r\n col[prop.name] = prop.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // set grid row propValues\r\n setGridRowPropValue(row: {[key: string]: any}, props: IGridRowProp[], columns:IGridColumn[] = []){\r\n props?.forEach((prop)=>{\r\n if(prop.propName && (prop.propValue || prop.propValue === false || prop.propValue === '') && prop.field){\r\n const fieldName = Object.keys(row)?.find((key)=> key?.toLowerCase() === prop?.field?.toLowerCase());\r\n if(fieldName){\r\n if(row[fieldName]?.action){\r\n row[fieldName].action = Object.assign(row[fieldName]?.action, {[prop.propName]: prop.propValue});\r\n }else{\r\n row[fieldName] = {text: row[fieldName], action: {[prop.propName]: prop.propValue, field: fieldName}};\r\n }\r\n } else if(columns?.some((column)=> column.field?.toLowerCase() === prop?.field?.toLowerCase())){\r\n row[prop.field?.toLowerCase()] = {text: row[prop.field],extraField: true, action: {[prop.propName]: prop.propValue, field: prop.field}};\r\n };\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n // remove the rowActions from the records\r\n removeRowActions(records){\r\n if(records?.length > 0){\r\n records.forEach((row)=>{\r\n if(row.rowAction){\r\n delete row['rowAction'];\r\n }\r\n })\r\n }\r\n return records;\r\n }\r\n}","export interface IUserInfo {\r\n id: number;\r\n username: string;\r\n isADUser: boolean;\r\n token: string;\r\n activities: string[];\r\n roles: IUserRole[];\r\n }\r\n \r\n export interface IUserRole {\r\n id: number;\r\n code: string;\r\n name: string;\r\n description: string;\r\n }\r\n \r\n export interface IPermission {\r\n type: EPermissionType;\r\n roles: string[];\r\n }\r\n \r\n export enum EPermissionType {\r\n EDIT = 'edit',\r\n VIEW = 'view',\r\n DELETE = 'delete',\r\n ADDROW = 'addRow',\r\n }\r\n ","import { Injectable } from '@angular/core';\r\nimport { IUserInfo } from '../models/user-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n userInfoKey: string = 'CurrentUserInfo';\r\n\r\n login(response: any): boolean {\r\n if (response) {\r\n localStorage.setItem(this.userInfoKey, JSON.stringify(response.data));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getUserInfo() {\r\n return JSON.parse((localStorage.getItem(this.userInfoKey)) as any);\r\n }\r\n\r\n getUserRoles() {\r\n let roles: any = [];\r\n let userInfo: IUserInfo = this.getUserInfo();\r\n if (userInfo && userInfo.roles && userInfo.roles.length > 0) {\r\n roles = userInfo.roles.map((x) => x.name);\r\n }\r\n return roles;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n return this.getUserInfo() ? true : false;\r\n }\r\n\r\n logout() {\r\n // setting Function for removing the Grid Filters When User logout. \r\n let keys = Object.keys(localStorage);\r\n if(keys && keys.length > 0){\r\n keys.forEach((key)=>{\r\n if(key.includes('SetFilters-')){\r\n localStorage.removeItem(key);\r\n }\r\n });\r\n }\r\n // removing the UserName & Password When User logout.\r\n localStorage.removeItem(this.userInfoKey);\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-iframe',\r\n templateUrl: './iframe.component.html',\r\n styleUrls: ['./iframe.component.scss']\r\n})\r\nexport class IframeComponent implements OnInit,OnDestroy {\r\n url: any;\r\n id:string='';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.loadIFrameData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if(this.id){\r\n const url: any = document.getElementById(this.id);\r\n this.ref.close(url.contentWindow.location.href);\r\n }\r\n }\r\n\r\n loadIFrameData(){\r\n if (this.config.data && this.config.data.value && this.config.data.iFrameId) {\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.config.data.value\r\n );\r\n this.id = this.config.data.iFrameId;\r\n\r\n }\r\n }\r\n\r\n iframeLoaded(){\r\n let iframeEl: any = document.querySelector(\".p-dialog-content iframe\");\r\n\r\n if(iframeEl){\r\n iframeEl.contentWindow.document.body.classList.add(\"v-scrollbar\");\r\n }\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RequestService } from './request.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageLoggerService {\r\n\r\n constructor(private requestService: RequestService) { }\r\n \r\n // save page logger info\r\n savePageLoggerInfo(currentRoute, componentName: string = '') {\r\n this.requestService\r\n .get<any[], any>(\"/PageLogger/Save\", { pageName: componentName, Url: currentRoute })\r\n .subscribe(\r\n (data) => {\r\n return data;\r\n },\r\n (error) => {}\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n Optional,\r\n ElementRef,\r\n ViewChildren,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport {\r\n DynamicDialogRef,\r\n DynamicDialogConfig,\r\n DialogService,\r\n} from 'primeng/dynamicdialog';\r\nimport { saveAs } from 'file-saver';\r\nimport jsPDF from 'jspdf';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport {\r\n IGridColumn,\r\n IGridSort,\r\n IGridServerSideEvent,\r\n IGridPaginationEvent,\r\n IGlobalFilter,\r\n IGridFilter,\r\n IGridColumnAction,\r\n IGridRowAction,\r\n EGridSelectionType,\r\n EGridColumnType,\r\n EGridSortDirection,\r\n IGridDataExport,\r\n EGridAggregate,\r\n ILookupValue,\r\n EGridFormatType,\r\n IGridFilterInfo,\r\n} from '../../../models/grid.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { Table } from 'primeng/table';\r\nimport { EFormatType } from '../../../models/form.model';\r\nimport { Router } from '@angular/router';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-grid',\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss'],\r\n})\r\nexport class GridComponent implements OnInit, OnChanges {\r\n @ViewChildren('gridRow') gridRow: QueryList<ElementRef>;\r\n @Output() inlineRowCancel = new EventEmitter();\r\n @Input() set activeTestMode(val: any) {\r\n if (val === true) {\r\n debugger;\r\n }\r\n }\r\n serverFilters: IGridServerSideEvent = {};\r\n rowsData: any[];\r\n rowsDataCopy: any[] = [];\r\n roles: string[] = [];\r\n isColumnHidden: boolean = false;\r\n rowClickData: IGridColumn;\r\n componentTableRef: any;\r\n lookupObject: ILookupValue;\r\n lookupFilterObj: any;\r\n lookupBlur: boolean = true;\r\n globalFiltersArray: any[] = [];\r\n checkAction: boolean = false;\r\n calenderPreviousValue: string = '';\r\n gridFilterObj: IGridFilterInfo;\r\n defaultDate: any;\r\n dropDownFilter: any = {};\r\n dropdownInput: boolean = false;\r\n saveAllRecord: boolean = false;\r\n editAllRecord: boolean = false;\r\n cancelAllRecords: boolean = false;\r\n addNewRowCheck: boolean = false;\r\n inEditMode: boolean = false;\r\n saveRecordArray: any[] = [];\r\n disabledSaveBtn:boolean = false;\r\n setDialogData:boolean = true;\r\n\r\n editModeChecked: boolean = true;\r\n editModeunCkecked: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n setDropdownFilter:boolean = true;\r\n\r\n // apply checked/unChecked prop for CheckBox of the Table\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n hideEditAllRowsBtn: boolean = true;\r\n\r\n //apply Add/Delete/Edit prop for the grid permission\r\n addRowPermission: boolean = true;\r\n deleteRowPermission: boolean = true;\r\n editRowPermission: boolean = true;\r\n\r\n // Apply prop setAggregateFooter on Footer of the Table for aggregate.\r\n setAggregateFooter: string = '';\r\n\r\n // Boolean prop to allow Hide Aggregate Footer When Aggregate not Apply on Table.\r\n aggregateFooter: boolean = false;\r\n\r\n // Maintains previous state of rows being edited\r\n editRowsRecords: { [key: string]: any } = {};\r\n\r\n // Maintains record of rows being edited\r\n editingRowKeys: { [key: string]: any } = {};\r\n\r\n @ViewChild('dt') table: Table;\r\n\r\n // Selects items in the grid based on passed on data\r\n @Input() selectedRows: any = [];\r\n\r\n @Input() addDataKeyValue = false;\r\n\r\n private globalData: IGridFilter[] = [];\r\n\r\n sortDisabled: boolean = false;\r\n\r\n // Stores selected columns\r\n private _selectedColumns: IGridColumn[] = [];\r\n\r\n // Boolean prop to allow horizontal Scroll on Table.\r\n @Input() horizontalScroll: boolean = false;\r\n\r\n // Prop to handle loader of grid\r\n @Input() public loading = false;\r\n\r\n //this property is used to handle server side event by default it is true when it false server side event will not be called\r\n @Input() autoLoadData: boolean = true;\r\n\r\n // Boolean prop to check where selected is allowed or not.\r\n @Input() allowSelection = false;\r\n\r\n // Set column width of selected row.\r\n @Input() selectionColumnWidth: string = '80px';\r\n \r\n // Boolean prop to hide the add row button.\r\n @Input() hideOnRowAddBtn = false;\r\n\r\n // Boolean prop to allow export to pdf.\r\n @Input() allowExportToPdf = false;\r\n\r\n // Boolean prop to allow export to excel.\r\n @Input() allowExportToExcel = false;\r\n \r\n // Boolean prop to set the action column as first column.\r\n @Input() setActionColumnAsFirst = false;\r\n\r\n // If true, enables options to perform CRUD using inline row functionality\r\n @Input() useInlineCRUD = false;\r\n\r\n // Array of row actions\r\n @Input() rowActions: IGridRowAction[] = [];\r\n\r\n // Sets selection type i.e: single/multiple selection\r\n @Input() selectionType: EGridSelectionType = EGridSelectionType.SINGLE;\r\n\r\n // Unique key requires for built-in row selection of primeNg grid\r\n @Input() dataKey: string = 'id';\r\n\r\n // Flag for clear filter values button\r\n @Input() clearGridFilter = true;\r\n\r\n // Flag for search filter values button\r\n @Input() searchGridFilter = true;\r\n\r\n // Flag in case table is scrollable\r\n @Input() scrollable = true;\r\n\r\n // Sets scroll height for the table\r\n @Input() scrollHeight = '680px';\r\n\r\n // Boolean prop to allow to wrap or unWrap the grid.\r\n @Input() wordWrap: boolean = false;\r\n\r\n @Input() newGridRow: any = {};\r\n\r\n @Input() filtering = true;\r\n\r\n @Input() rowHover: boolean = false;\r\n\r\n @Input() hideFilterOptions: boolean = false;\r\n\r\n // Sets pagenation for the table Data.\r\n @Input() setPaginationLength: any[] = [5, 10, 15, { showAll: 'All' }];\r\n\r\n // set the change in the rowData\r\n @Output() rowsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n /**\r\n * Stops the loader and sets the data to grid\r\n * Clears the editing stack\r\n * Scrolls to selected element if selection found\r\n */\r\n @Input() set rows(data: any[]) {\r\n this.loading = false;\r\n if (data && data.length > 0) {\r\n if (!this.dataKey) {\r\n this.dataKey = 'id';\r\n }\r\n this.rowsData = this.gridService.setDataFields(data, this.dataKey);\r\n } else {\r\n this.rowsData = [];\r\n }\r\n\r\n // Cleaning the editing stack\r\n this.editingRowKeys = {};\r\n this.editRowsRecords = {};\r\n\r\n setTimeout(() => {\r\n if (data && data.length > 0 && this.selectedRows) {\r\n const selectedElementRef = this.gridRow.find(\r\n (x) => x.nativeElement.id === this.selectedRows[this.dataKey]\r\n );\r\n selectedElementRef &&\r\n (\r\n selectedElementRef.nativeElement as HTMLTableRowElement\r\n ).scrollIntoView({ behavior: 'smooth' });\r\n }\r\n }, 0);\r\n\r\n if (this.columns && this.columns.length > 0) {\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, {}, false);\r\n }\r\n });\r\n }\r\n //manipulate checkbox string value to true and false.\r\n this.changeCheckboxStringValue();\r\n }\r\n\r\n // Global filter server request\r\n @Input() set globalFilterData(globalFilters: IGlobalFilter[]) {\r\n this.globalData = this.gridService\r\n .prepareGlobalFilters(globalFilters)\r\n ?.filter((x) => x?.value !== false);\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = this.serverFilters.filters\r\n ? this.serverFilters.filters.concat(this.globalData)\r\n : this.globalData;\r\n\r\n if (localStorage.getItem('applyFilter') === 'false') {\r\n this.globalFiltersArray = this.globalFiltersArray?.length > 0\r\n ? this.globalFiltersArray.concat([...serverFilterValues.filters])\r\n : this.globalFiltersArray;\r\n }\r\n if (localStorage.getItem('applyFilter') === 'true') {\r\n globalFilters.forEach((globalFilter) => {\r\n this.globalFiltersArray.forEach((filterArray) => {\r\n if (\r\n filterArray.field === globalFilter.field &&\r\n globalFilter.value &&\r\n filterArray.value !== globalFilter.value\r\n ) {\r\n filterArray.value = globalFilter.value;\r\n }\r\n const findIndex = this.globalFiltersArray.findIndex(\r\n (index) => index.field === globalFilter.field && !globalFilter.value\r\n );\r\n if (findIndex !== -1) {\r\n this.globalFiltersArray.splice(findIndex, 1);\r\n }\r\n });\r\n });\r\n\r\n this.loading = this.autoLoadData;\r\n setTimeout(() => {\r\n if(this.gridService.applyFilterEvent || this.autoLoadData){\r\n this.onApplyFilter.emit();\r\n }\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n serverFilterValues.filters = serverFilterValues.filters.concat(\r\n this.globalFiltersArray\r\n );\r\n }\r\n serverFilterValues.filters = Array.from(\r\n new Set(\r\n serverFilterValues.filters\r\n .reverse()\r\n .map((filter: any) => filter.field)\r\n )\r\n ).map((field) => {\r\n return serverFilterValues.filters.find((x: any) => x.field === field);\r\n });\r\n serverFilterValues.filters = serverFilterValues.filters.filter(\r\n (obj: any) =>\r\n obj?.value && obj.value?.toString()?.length > 0 && obj.field\r\n );\r\n if (this.gridService.applyFilterEvent || this.autoLoadData === true) {\r\n // setting pagination page as first\r\n serverFilterValues.page = 1;\r\n if(this.defaultRows && this.pagination){ \r\n serverFilterValues.pageSize = this.defaultRows;\r\n }\r\n if(this.gridService.applyFilterEvent){\r\n this.onServerSideEventChange.emit(serverFilterValues)\r\n }\r\n localStorage.removeItem('applyFilter');\r\n // setting pagination page number UI\r\n this.table._first = 0;\r\n }\r\n }, 300);\r\n }\r\n }\r\n\r\n // Input decorator to receive columns to be displayed in header\r\n @Input() columns: IGridColumn[] = [];\r\n\r\n @Input() permissions: IPermission[] = [];\r\n\r\n // Optional prop to handle toggling of columns\r\n @Input() allowColumnToggle = false;\r\n\r\n // Optional prop to hide filtering of columns\r\n @Input() hideFilter = false;\r\n\r\n // Optional prop to handle lookup filters\r\n @Input() lookupFilters = false;\r\n\r\n // Optional prop to handle pagination\r\n @Input() pagination = false;\r\n\r\n // Optional prop to handle show CurrentPage Report\r\n @Input() showCurrentPageReport = false;\r\n\r\n // Displays total number of records\r\n @Input() totalRecords = 0;\r\n\r\n @Input() showconfirmDialog: boolean = true;\r\n\r\n // Sets number of rows to be shown the grid\r\n @Input() defaultRows: number;\r\n\r\n @Input() columnActions: IGridColumnAction[] = [];\r\n\r\n // Decides the grid's behavior either for client side or server side events\r\n @Input() useServerSideEvents = false;\r\n\r\n // Output event to handle row click\r\n @Output() onRowClick: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event emit when click on grid checkbox filter\r\n @Output() onCheckBoxFilterClick: EventEmitter<any>= new EventEmitter();\r\n\r\n // Output event to handle row CheckBox\r\n @Output() onRowCheckBox: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to trigger on sort change\r\n @Output() onSortChange: EventEmitter<IGridSort> = new EventEmitter();\r\n\r\n // Output event to trigger on filter change\r\n @Output() onFilterChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Output event to invoke the multiSelection click event\r\n @Output() onMultiSelectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a grid and globalFilters called\r\n @Output() onApplyFilter: EventEmitter<any> = new EventEmitter();\r\n\r\n //set header checkbox value for getting all columns on stay admin\r\n @Output() isIncludedAllColumns: EventEmitter<any> = new EventEmitter();\r\n\r\n // Calls whenever a lazy event is dispatched\r\n @Output()\r\n onServerSideEventChange: EventEmitter<IGridServerSideEvent> =\r\n new EventEmitter();\r\n\r\n // Output event to trigger on pagination\r\n @Output()\r\n onPageChange: EventEmitter<IGridPaginationEvent> = new EventEmitter();\r\n\r\n // Dispatch output event trigger on edit row\r\n @Output() onRowUpdate = new EventEmitter();\r\n\r\n // Dispatch output event trigger cancel all rows\r\n @Output() onCancelAllRows = new EventEmitter();\r\n\r\n // Dispatch output event trigger on delete row\r\n @Output() onRowDelete = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add row\r\n @Output() onRowAdd = new EventEmitter();\r\n\r\n //Dispatch output event trigger on add, update and delete row\r\n @Output() onGridRowActions = new EventEmitter();\r\n\r\n // set property allowCaching for LocalStorage\r\n @Input() allowCaching: boolean;\r\n\r\n // set property softCaching for setting the values of gridFilter\r\n @Input() softCaching: boolean = true;\r\n \r\n @Input() editAllRows: boolean = false;\r\n\r\n // set the row When Edit the row on Grid\r\n @Output() onGridRowEdit = new EventEmitter();\r\n\r\n // set the row When adding the new Row on Grid\r\n @Output() onGridRowAdd = new EventEmitter();\r\n\r\n isGridHidden: boolean = false;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private alertService: AlertService,\r\n private authService: AuthenticationService,\r\n private elementRef: ElementRef,\r\n public decimalPipe: DecimalPipe,\r\n private pageLoggerService: PageLoggerService,\r\n private cd: ChangeDetectorRef,\r\n private router: Router,\r\n private datePipe: DatePipe,\r\n public confirmationService: ConfirmationService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n get selectedColumns(): IGridColumn[] {\r\n return this._selectedColumns;\r\n }\r\n\r\n set selectedColumns(val: IGridColumn[]) {\r\n this._selectedColumns = this.columns?.filter((col) => val.includes(col));\r\n }\r\n\r\n // browser close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.editAllRows){\r\n this.disabledSaveBtn = true;\r\n }\r\n \r\n this.componentTableRef = this.table;\r\n setTimeout(() => {\r\n this.setNumericValues();\r\n }, 500);\r\n }\r\n\r\n // apply user role permissions on grid columns\r\n applyColumnsPermissions() {\r\n if (this.columns) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.columns.forEach((column: any) => {\r\n let permissions: IPermission[] = column.permissions;\r\n // if (!permissions) permissions = this.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n // else {\r\n // let index = this.columns.findIndex(\r\n // (i) => i.field === column.field\r\n // );\r\n // if (index !== -1) {\r\n // this.columns.splice(index, 1);\r\n // }\r\n // }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n column.disabled = true;\r\n } else {\r\n column.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n column.hidden = false;\r\n column.disabled = false;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (column.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isColumnHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n // apply global permissions on entire grid\r\n applyGridPermissions() {\r\n if (this.permissions && this.permissions.length > 0) {\r\n let hasValidEditPermission = false;\r\n\r\n // check if any column has any permission\r\n let hasColumnPermissions = this.columns?.some(\r\n (x) => x?.permissions && x.permissions.length > 0\r\n );\r\n\r\n this.permissions.forEach((permission) => {\r\n let isValid: boolean = false;\r\n\r\n permission.roles.forEach((role) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n this.useInlineCRUD = true;\r\n if (!isValid && !hasColumnPermissions) {\r\n this.isGridHidden = true;\r\n this.useInlineCRUD = false;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT && !isValid) {\r\n this.isGridHidden = false;\r\n hasValidEditPermission = true;\r\n this.editRowPermission = false;\r\n } else if (permission.type === EPermissionType.DELETE && !isValid) {\r\n this.deleteRowPermission = false;\r\n } else if (permission.type === EPermissionType.ADDROW && !isValid) {\r\n this.addRowPermission = false;\r\n }\r\n });\r\n }\r\n if (this.onRowAdd.observers.length == 0) this.addRowPermission = false;\r\n if (this.onRowDelete.observers.length == 0) this.deleteRowPermission = false;\r\n }\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.allowCaching !== false && this.pagination) {\r\n this.allowCaching = this.pagination;\r\n } else {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n }\r\n // add defaultRow in pagination array\r\n if (!this.setPaginationLength.includes(this.defaultRows)) {\r\n this.setPaginationLength.unshift(this.defaultRows);\r\n }\r\n const hasColumns: boolean = this.columns && this.columns.length > 0;\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions on grid columns\r\n this.applyColumnsPermissions();\r\n\r\n // apply global permissions on entire grid\r\n this.applyGridPermissions();\r\n\r\n this._selectedColumns = this.columns?.filter((x) => !x.hidden);\r\n this.cd.detectChanges();\r\n\r\n if (hasColumns) {\r\n this.columns = this.gridService.setColumnFields(this.columns);\r\n // checking filter exist or not\r\n const filter = this._selectedColumns.some(\r\n (column) => column.filtering === undefined || column.filtering === true\r\n );\r\n if (filter === false) {\r\n this.hideFilter = true;\r\n }\r\n\r\n this.columns.forEach((column: any) => {\r\n // convert string time into the date\r\n if (column.type === EGridColumnType.DATE && column.timeOnly === true) {\r\n this.rowsData.forEach((row) => {\r\n if (\r\n row[column.field] &&\r\n (row[column.field].toString().includes('PM') ||\r\n row[column.field].toString().includes('AM'))\r\n ) {\r\n row[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n });\r\n }\r\n // set filter value\r\n if (column.filter && column.value && column.filtering !== false) {\r\n this.setFilterFocusOut(column);\r\n }\r\n // add \"flex-shrink: 0\" for flex-basis Style\r\n if (column.style && column.style.includes('flex-basis')) {\r\n let style = column.style + ' !important; flex-shrink: 0 !important';\r\n column.style = style.includes(';;')\r\n ? style.replace(';;', ';')\r\n : style;\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n this.setDisplayTextValue(column);\r\n\r\n //Aggregate scenario\r\n if (column.aggregate && column.aggregate.length > 0) {\r\n this.aggregateFooter = true;\r\n this.setAggregateText(column);\r\n }\r\n\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(\r\n localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any\r\n );\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (\r\n !this.hideFilter &&\r\n searchFilters &&\r\n searchFilters.filters &&\r\n searchFilters.filters.length > 0\r\n ) {\r\n searchFilters.filters.forEach((x: any) => {\r\n if (x.value && x.field === column.field) {\r\n if(column?.filter?.type === 'calendar'){\r\n column.value = new Date(this.datePipe.transform(x.value, 'MM-dd-YY') as string);\r\n }else{\r\n column.value = x.value;\r\n }\r\n }\r\n });\r\n }\r\n // converting displayField toLowercase\r\n if (column.displayField) {\r\n column.displayField = column.displayField.toLowerCase();\r\n }\r\n // set AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n this.rowsData &&\r\n this.rowsData.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n // convert string that contains comma into arrays\r\n if (\r\n row[column.field] &&\r\n row[column.field]?.toString().includes(',')\r\n ) {\r\n row[column.field] = row[column.field]\r\n ?.toString()\r\n .split(',')\r\n ?.map((value: any) => ({ [column.displayField]: value }));\r\n }\r\n\r\n const key: any = Object.keys(row).find(\r\n (x) => x === column.field.toLowerCase()\r\n );\r\n // convert simple string into array\r\n if (!Array.isArray(row[key]) && row[key]) {\r\n row[key] = [{ [column.displayField]: row[key] }];\r\n }\r\n });\r\n }\r\n\r\n //when we add a new row, it set the default value\r\n if (column.value && Object.keys(this.newGridRow).length > 0) {\r\n const key = Object.keys(this.newGridRow).find(\r\n (x) => x === column.field\r\n );\r\n if (key && key.toLowerCase() === column.field.toLowerCase()) {\r\n this.newGridRow[key] = column.value;\r\n }\r\n }\r\n });\r\n\r\n // Searching scenario\r\n if (change.rows?.currentValue && change.columns?.currentValue) {\r\n // Checks either column value is changes (i.e., column hidden scenario)\r\n if (\r\n JSON.stringify(change.columns.currentValue).toLowerCase() !==\r\n JSON.stringify(this.columns).toLowerCase()\r\n ) {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n } else {\r\n this._selectedColumns = [];\r\n this.columns.forEach((x, i) => {\r\n if (!x.hidden) {\r\n if (this.selectedColumns[i]) {\r\n x.value = this.selectedColumns[i].value;\r\n }\r\n this._selectedColumns.push(x);\r\n }\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const classElement = document.getElementsByClassName('highlighted-row');\r\n if (classElement.length > 0) {\r\n classElement[0].scrollIntoView();\r\n }\r\n\r\n if(this.editAllRows && this.rowsData?.length > 0 && this.columns?.length > 0){ \r\n this.editAllRowsAtOnce();\r\n }\r\n }, 500);\r\n }\r\n const globalSearchbtn = document.getElementById('globalSearchbtn');\r\n if (globalSearchbtn) {\r\n this.searchGridFilter = false;\r\n }\r\n if(this.rowsData?.length > 0){\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n }\r\n }\r\n\r\n // set DisplayText when value is in curly brackets.\r\n setDisplayTextValue(column: IGridColumn) {\r\n this.rowsData?.forEach((row) => {\r\n if (\r\n column.type === EGridColumnType.LINK ||\r\n EGridColumnType.DIALOG ||\r\n EGridColumnType.IFRAME\r\n ) {\r\n const field = row[column.field + '_obj'];\r\n if (column.displayText && column.displayText.includes('{')) {\r\n const displayText = column.displayText\r\n .replace('{', '')\r\n .replace('}', '');\r\n if (displayText && field) {\r\n field.displayText = row[displayText.toLowerCase()];\r\n }\r\n } else if (column.displayText && field) {\r\n field.displayText = column.displayText;\r\n }\r\n }\r\n });\r\n }\r\n\r\n // change row key and value when using setGridRowPropValue function\r\n setRowValue(rowData: any) {\r\n Object.keys(rowData)?.forEach((row) => {\r\n if (\r\n rowData[row] &&\r\n this.typeOf(rowData[row]) === 'object' &&\r\n rowData[row]?.action?.field\r\n ) {\r\n if(rowData[row]?.extraField){\r\n delete rowData[row];\r\n } else {\r\n rowData[row] = rowData[row]?.text;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setNumericMinMxFraction(column: any) {\r\n let digitInfo = '2';\r\n if(column?.format.type === 'percent' && !column?.format?.formatParams?.allowCalculate && !column?.format?.formatParams?.digitsInfo){\r\n digitInfo = '0'\r\n }else if(column?.format?.formatParams?.digitsInfo){\r\n digitInfo = column.format.formatParams.digitsInfo;\r\n }\r\n return digitInfo;\r\n }\r\n\r\n // set the format of currency && number && decimal && percent\r\n setNumericFormat(column: any, row: any) {\r\n row = utilities.objConvertToLower(row);\r\n let value: any = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField.toLowerCase()]\r\n : (row[column.field?.toLowerCase()]?.text || row[column.field?.toLowerCase()]?.text === 0 || row[column.field?.toLowerCase()]?.text === null) \r\n ? row[column.field.toLowerCase()]?.text : row[column.field.toLowerCase()];\r\n if (this.typeOf(value) === 'number' && value === 0) {\r\n value = value.toString();\r\n }\r\n let formatParams = column.format?.formatParams;\r\n let digitsInfo = formatParams?.digitsInfo;\r\n if (column.format && value) {\r\n switch (column.format?.type) {\r\n case EGridFormatType.CURRENCY:\r\n value = new Intl.NumberFormat(\r\n formatParams?.locale ? formatParams.locale : 'en-US',\r\n {\r\n style: 'currency',\r\n currency: formatParams?.currency ? formatParams.currency : 'USD',\r\n minimumFractionDigits: digitsInfo ? digitsInfo : '2',\r\n }\r\n )?.format(value);\r\n break;\r\n case EGridFormatType.DECIMAL:\r\n value = parseFloat(value).toFixed(digitsInfo ? digitsInfo : '2');\r\n break;\r\n case EGridFormatType.PERCENT:\r\n if(!column.format?.formatParams?.allowCalculate){\r\n value = value+'%';\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n //Change dropdown vlue based on option label and optionvalue\r\n setDropdownValue(column: any, selectedRow?: any, change?: boolean) {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n this.rowsData.forEach((row) => {\r\n if (Object.keys(row)?.find((key) => key === column.field)) {\r\n if (column) {\r\n column.optionLabel = column.optionLabel\r\n ? column.optionLabel\r\n : 'label';\r\n column.optionValue = column.optionValue\r\n ? column.optionValue\r\n : 'value';\r\n }\r\n const value = column.data?.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n const editedRow = selectedRow && Object.keys(selectedRow).length > 0 ? selectedRow[this.dataKey] === row[this.dataKey] : false;\r\n if (value && editedRow) {\r\n row[column.field] = value[column.optionLabel];\r\n }else if(value && change === false){\r\n row[column.field] = value[column.optionLabel];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //manipulate checkbox string value to true and false.\r\n changeCheckboxStringValue() {\r\n if (\r\n this.columns &&\r\n this.rowsData &&\r\n this.rowsData.length > 0 &&\r\n this.columns.length > 0\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.BOOLEAN) {\r\n if (\r\n (typeof (row[column.field] === 'string') &&\r\n (row[column.field] === '1' || row[column.field] === '0')) ||\r\n row[column.field] === 'Y' ||\r\n row[column.field] === 'N'\r\n ) {\r\n row[column.field] =\r\n row[column.field] === '1' || row[column.field] === 'Y'\r\n ? true\r\n : false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowData\r\n * Passes data of clicked row to parent\r\n */\r\n handleRowClick(rowData: any) {\r\n this.rowClickData = rowData;\r\n this.onRowClick.emit(rowData);\r\n }\r\n\r\n /**\r\n *\r\n * @param columnData\r\n * Passes sorting information to parent on sort change\r\n */\r\n handleSortChange(event: any) {\r\n let sortDirection = null;\r\n let sortField: string = '';\r\n if (event.multisortmeta && event.multisortmeta[0].order) {\r\n sortDirection =\r\n event.multisortmeta[0].order == 1\r\n ? EGridSortDirection.ASC\r\n : EGridSortDirection.DESC;\r\n sortField = event.multisortmeta[0].field;\r\n }\r\n let sorts: IGridSort = {\r\n field: sortField,\r\n direction: sortDirection as EGridSortDirection,\r\n priority: 0,\r\n };\r\n this.onSortChange.emit(sorts);\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n * Passes applied filters to parent on filter change\r\n */\r\n handleFilterChange(event: any) {\r\n this.columns.forEach((filter: any) => {\r\n if (!event.filters[filter.field]?.value) {\r\n filter.value = '';\r\n }\r\n });\r\n this.onFilterChange.emit(event);\r\n }\r\n\r\n /**\r\n *\r\n * @param event : Event\r\n * @param columnAction : IGridColumnAction\r\n * @param row : any\r\n * Stop the click event propagation to parent\r\n * Callbacks the row data to parent\r\n */\r\n\r\n /**\r\n * invoke onClick event & open Iframe in grid\r\n */\r\n gridIFrame(column: any, rows: any, row: any) {\r\n this.onClickEvent(column, row);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: column.header,\r\n width: '80%',\r\n height: '80%',\r\n data: {\r\n value: rows,\r\n iFrameId: column.displayText ? column.displayText : column.field,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n } else if (res && column.onChange) {\r\n column.onChange(res);\r\n }\r\n });\r\n }\r\n\r\n addNewRow(row: any, addRow: boolean = false) {\r\n this.componentTableRef = this.table;\r\n this.columns.forEach((column) => {\r\n if (\r\n column.filter &&\r\n column.component &&\r\n column.filter.type === 'calendar'\r\n ) {\r\n if (addRow) {\r\n this.rowsData[0][column.field + '_secondType'] = EGridColumnType.DATE;\r\n } else {\r\n row[column.field + '_secondType'] = EGridColumnType.DATE;\r\n }\r\n }\r\n });\r\n this.rowClickData = row;\r\n this.addNewRowCheck = true;\r\n this.dropdownInput = false;\r\n this.sortDisabled = true;\r\n this.onGridRowAdd.emit(row);\r\n }\r\n\r\n /**\r\n * open Dialog in grid\r\n */\r\n openGridDialog(column: IGridColumn | any, row: any) {\r\n this.onClickEvent(column, row);\r\n setTimeout(() => {\r\n if(this.setDialogData){\r\n column['parentDialogData'] = column.data.data;\r\n this.setDialogData = false;\r\n }\r\n if(column.data && column.data.data && row[column.field + '_obj']){\r\n column.data.data = row[column.field + '_obj']?.dialogData;\r\n }\r\n if (column.component && column.data && this.rowClickData) {\r\n const keys = Object.keys(this.rowClickData);\r\n column.data.data = utilities.autoSetLookupData(\r\n column.parentDialogData,\r\n this.rowClickData\r\n );\r\n const ref = this.dialogService.open(column.component, column.data);\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n ref.onClose.subscribe((data: any) => {\r\n if (data && column.onReturn) {\r\n column.onReturn(data, this.rowClickData);\r\n } else if (data) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(data);\r\n }\r\n }\r\n });\r\n }\r\n }, 10);\r\n }\r\n\r\n browserCloseEvent(event: boolean = false){\r\n this.gridService.columnFocusedOut = event;\r\n }\r\n\r\n setMultiSelectData(column: IGridColumn, selectedValue:any){\r\n if(selectedValue && column.type == EGridColumnType.MULTISELECT){\r\n if(selectedValue && selectedValue?.toString()?.includes(',')){\r\n selectedValue = selectedValue?.toString()?.split(',')?.map((value)=> column.data?.find((option)=> option.value?.toString() === value?.toString())?.label)?.toString();\r\n }else{\r\n selectedValue = column.data?.find((option)=> option.value?.toString() === selectedValue?.toString())?.label;\r\n }\r\n }\r\n return selectedValue;\r\n }\r\n\r\n /**\r\n * return conditional base value and title\r\n */\r\n setConditionBaseValue(row: any, column: any) {\r\n delete row['undefined'];\r\n let value:any;\r\n if(column.type == EGridColumnType.DATE){\r\n let newValue:any;\r\n if(typeof(row[column.field]) === \"object\" && row[column.field]?.action){\r\n newValue = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.field?.toLowerCase()]?.text\r\n } else {\r\n newValue = row[column.field];\r\n }\r\n\r\n if(newValue){\r\n if(column.timeOnly){\r\n value = this.setTimeFormat(newValue);\r\n } else {\r\n let format = '';\r\n if(column.format){\r\n if(column.format === EGridFormatType.SMALLDATE){\r\n format = 'MM/dd/yy';\r\n }else if(column.format === EGridFormatType.SHORTDATE){\r\n format = 'MM/dd/yyyy';\r\n }\r\n }\r\n value = this.datePipe.transform(newValue?.toString() === \"Invalid Date\" ? null : newValue, format ? format : 'MM/dd/yy');\r\n }\r\n }\r\n } else {\r\n value = row[column.field]?.action?.displayText\r\n ? row[column.field]?.action?.displayText\r\n : row[column.field]?.action?.displayField?.toLowerCase()\r\n ? row[row[column.field]?.action?.displayField?.toLowerCase()]\r\n : row[column.displayField?.toLowerCase()]\r\n ? row[column.displayField?.toLowerCase()]\r\n : row[column.field + '_obj'] &&\r\n row[column.field + '_obj'].displayText === null\r\n ? ''\r\n : row[column.field + '_obj']?.displayText\r\n ? column?.filter?.type === 'calendar' && column.timeOnly && column.type === EGridColumnType.DIALOG ? \r\n (row[column.field + '_obj'].displayText.toString().includes('AM') || row[column.field + '_obj'].displayText.toString().includes('PM')) ? \r\n row[column.field + '_obj'].displayText : this.datePipe.transform(row[column.field + '_obj'].displayText, 'hh:mm a')\r\n : row[column.field + '_obj'].displayText\r\n : column.displayText\r\n ? column.displayText\r\n : row[column.field];\r\n }\r\n \r\n return value;\r\n }\r\n\r\n setDropdwonReadOnlyValue(row: any, column: any){\r\n delete row['undefined'];\r\n const value = row[column.displayField]\r\n ? row[column.displayField]\r\n : row[column.field];\r\n return value;\r\n }\r\n\r\n /**\r\n * open Delete Confirmation dialog when click on delete icon in Action column\r\n */\r\n handleActionClick(event: Event, columnAction: IGridColumnAction, row: any) {\r\n event.stopPropagation();\r\n if (columnAction.tooltip.toLowerCase() === 'delete') {\r\n if (columnAction.confirmDialog === false) {\r\n columnAction.onClick(row);\r\n } else {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n columnAction.onClick(row);\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n } else {\r\n columnAction.onClick(row);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param event : LazyLoadEvent\r\n * Triggers everytime a server side filter is trigger\r\n */\r\n handleServerSideEvents(event: any) {\r\n setTimeout(() => {\r\n if(this.selectedColumns && this.selectedColumns.length > 0){\r\n this.selectedColumns.forEach((x: any) => {\r\n if (event.filters[x.field]) {\r\n event.filters[x.field].value = x.value;\r\n }\r\n });\r\n }\r\n \r\n this.loading = this.autoLoadData;\r\n this.serverFilters = {\r\n filters: this.lookupFilters\r\n ? this.gridService.getGridFilters(event, this.selectedColumns)\r\n : this.gridService.prepareBasicFilters(event, this.selectedColumns),\r\n sorts: this.gridService.getGridSorts(event, this.selectedColumns),\r\n ...(this.pagination && {\r\n page: this.gridService.getGridPagination(event),\r\n pageSize: event.rows || 10,\r\n }),\r\n };\r\n\r\n if (\r\n this.serverFilters?.filters &&\r\n this.serverFilters?.filters.length > 0 &&\r\n (this.allowCaching || this.softCaching)\r\n ) {\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(this.serverFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = this.serverFilters;\r\n }\r\n }\r\n\r\n const serverFilterValues = JSON.parse(JSON.stringify(this.serverFilters));\r\n serverFilterValues.filters = (this.serverFilters.filters || []).concat(\r\n this.globalData\r\n );\r\n this.onServerSideEventChange.emit(serverFilterValues);\r\n }, 950);\r\n }\r\n\r\n /**\r\n * @param event\r\n * Passes applied pagination to parent on page change\r\n */\r\n handleServerSidePagination(event: IGridPaginationEvent) {\r\n this.onPageChange.emit(event);\r\n }\r\n\r\n selectedRow(row: any) {\r\n this.onRowCheckBox.emit(row);\r\n }\r\n\r\n // set time format\r\n setTimeFormat(date: any) {\r\n let value: any = '';\r\n if (date?.toString().includes('AM') || date?.toString().includes('PM')) {\r\n value = utilities.setTimeInDate(date);\r\n } else {\r\n value = this.datePipe.transform(date, 'hh:mm a');\r\n }\r\n return value;\r\n }\r\n\r\n //open hyperlink in edit case\r\n openLink(url: any) {\r\n if (url) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n }\r\n\r\n setFormat(column: any, row: any) {\r\n let value: any = '';\r\n if (column.format) {\r\n value = this.datePipe.transform(\r\n column.displayText ? column.displayText : row[column.field],\r\n column.format\r\n );\r\n } else {\r\n value = column.displayText ? column.displayText : row[column.field];\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sets values to editable row\r\n * Row's data is preseved to prevent mutation\r\n * Row dataKey is preserved to keep the row unique and in editable state as long as not saved\r\n */\r\n\r\n onRowEditInit(row: any) {\r\n let selectedRow = { ...row };\r\n Object.entries(selectedRow).forEach(([key, value]: any) => {\r\n this.columns.forEach((col: any) => {\r\n if(this.setDropdownFilter){\r\n this.setDropdownFilterValue(col, row, key);\r\n this.setDropdownFilter = false;\r\n }\r\n // set the autoComplete Value in edit mode\r\n if (\r\n col.type === EGridColumnType.AUTOCOMPLETE &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n value &&\r\n value.length > 0\r\n ) {\r\n let newValue = value.map((x: any) => x[col.displayField]);\r\n if (newValue?.toString()?.includes(';')) {\r\n row[col.field] = newValue\r\n ?.toString()\r\n ?.replaceAll(';', ',')\r\n ?.split(',')\r\n ?.map((x: any) => ({ [col.displayField]: x }));\r\n }\r\n }\r\n\r\n // set lookup control field based on display field.\r\n if (col.type === EGridColumnType.LOOKUP_INPUT && col.displayField) {\r\n if (col.field === key) {\r\n row[col.field] = {\r\n text: row[col.displayField],\r\n value: row[col.field],\r\n };\r\n }\r\n }\r\n\r\n if (col.type === EGridColumnType.DROPDOWN) {\r\n let option = col?.data?.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n if (\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n col.type === EGridColumnType.DATE\r\n ) {\r\n value = value?.action ? value.text : value;\r\n if (row[col.field] !== null) {\r\n if(row[key]?.action && Object.keys(row[key]?.action)?.length > 0){\r\n row[key].text = new Date(value as string);\r\n }else{\r\n row[key] = new Date(value as string);\r\n }\r\n }\r\n\r\n // check the Minutes pattern\r\n if (\r\n (col.showTime || col.timeOnly) &&\r\n col.minutesInterval &&\r\n row[key]\r\n ) {\r\n row[key] = new Date(utilities.setMinutesInterval(row[key]));\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.DIALOG &&\r\n col.filter?.type === 'calendar' &&\r\n col.field.toLowerCase() === key.toLowerCase()\r\n ) {\r\n if (value === null) {\r\n row[key] = new Date();\r\n } else {\r\n row[col.field] = new Date(value);\r\n }\r\n }\r\n if (\r\n col.type === EGridColumnType.LINK &&\r\n col.field?.toLowerCase() === key?.toLowerCase() &&\r\n (col.allowSave === true || col.allowSave === undefined)\r\n ) {\r\n if (col.editLink === true) {\r\n row[key] = row[col.field + '_obj']?.hyperlink;\r\n } else if (col.editLink === false || col.editLink === undefined) {\r\n row[key] = value;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.editRowsRecords[row[this.dataKey]] = { ...row };\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n this.checkAction = true;\r\n this.dropdownInput = true;\r\n this.rowClickData = row;\r\n this.inEditMode = true;\r\n this.cancelAllRecords = false;\r\n this.saveAllRecord = false;\r\n this.sortDisabled = true;\r\n this.onGridRowEdit.emit(row);\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * set dropdown filter value\r\n */\r\n setDropdownFilterValue(col: any, row: any, key: string) {\r\n if (col.type === EGridColumnType.DROPDOWN && col.dropDownProp) {\r\n if (Object.values(col).some((value) => value == key)) { \r\n let obj = col.dropDownProp;\r\n let newFilters: any = [];\r\n\r\n if (obj.filters && obj.filters.length > 0) {\r\n obj.filters.forEach((filter: any) => {\r\n let newFilter = { ...filter };\r\n let filterKey = Object.keys(row).find((key) => {\r\n let matchKey: string = '';\r\n if (\r\n filter.value?.includes('{') &&\r\n key.toLowerCase() ===\r\n filter.value\r\n ?.toString()\r\n ?.toLowerCase()\r\n .replace('{', '')\r\n .replace('}', '')\r\n ) {\r\n matchKey = key;\r\n }\r\n return matchKey;\r\n });\r\n if (filterKey) {\r\n newFilter.value = row[filterKey];\r\n }\r\n newFilters.push(newFilter);\r\n });\r\n }\r\n\r\n this.gridService.setDropdownData(\r\n col,\r\n obj.uniqueKey,\r\n obj.valueProp,\r\n obj.labelProp,\r\n newFilters,\r\n row\r\n );\r\n\r\n let option = col.data.find(\r\n (x: any) => x.label === row[col.field]?.toString()\r\n );\r\n if (option) {\r\n row[col.field] = option.value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Passes the edited or newly created data to parent\r\n * In case of newly created data, dataKey and isNew prop is removed\r\n */\r\n onRowEditSave(selectedRow: any) {\r\n this.selectedColumns.forEach((column: any) => {\r\n delete selectedRow[column.field + '-data'];\r\n delete selectedRow[column.field + '_secondType'];\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.displayField &&\r\n this.lookupObject\r\n ) {\r\n selectedRow[column.field] = this.lookupObject.value;\r\n }\r\n\r\n if (column.formatter) {\r\n let value: any = selectedRow[column.field];\r\n if (column.formatter === 'char') {\r\n value = value === true ? 'Y' : 'N';\r\n } else if (column.formatter === 'numeric') {\r\n value = value === true ? '1' : '0';\r\n }\r\n selectedRow = { ...selectedRow, [column.field]: value };\r\n }\r\n\r\n //convert date into time format\r\n if (\r\n column.type === EGridColumnType.DATE\r\n ) {\r\n if( column.timeOnly && column.saveAsString){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'hh:mm a');\r\n }\r\n else if(!column.timeOnly && column.showTime){\r\n selectedRow[column.field] = this.datePipe.transform(selectedRow[column.field], 'yyyy-MM-dd HH:mm:ss');\r\n }\r\n }\r\n //convert multiselect array into string\r\n if (\r\n column.type === EGridColumnType.MULTISELECT && selectedRow[column.field]\r\n ) {\r\n selectedRow[column.field] = selectedRow[column.field]?.toString();\r\n }\r\n\r\n // Saving AutoComplete Data\r\n if (\r\n column.type === EGridColumnType.AUTOCOMPLETE &&\r\n column.displayField &&\r\n selectedRow[column.field]?.length > 0\r\n ) {\r\n let arr: any = [];\r\n selectedRow[column.field].forEach((row: any) => {\r\n if (row[column.displayField]) {\r\n arr.push(row[column.displayField]);\r\n }\r\n });\r\n selectedRow[column.field] = arr.toString()?.replaceAll(',', ';');\r\n }\r\n });\r\n\r\n let row: any = { ...selectedRow };\r\n let keys = Object.keys(row);\r\n keys.forEach((key) => {\r\n if (this.lookupObject && this.lookupObject.field) {\r\n row[this.lookupObject.field] = this.lookupObject.value;\r\n }\r\n if (key.includes('_obj')) {\r\n if (this.checkAction === false) {\r\n row = { ...row, [key.split('_')[0]]: row[key].displayText };\r\n this.checkAction = true;\r\n }\r\n let obj: any = row[key];\r\n if (\r\n obj &&\r\n (obj.type === 'link' ||\r\n obj.type === 'iframe' ||\r\n obj.type === 'dialog')\r\n ) {\r\n delete row[key];\r\n }\r\n }\r\n });\r\n /**\r\n * just emit those fields who exist in the tabel\r\n */\r\n this.setRowValue(row);\r\n let obj: any = {};\r\n this.columns.forEach((column: any) => {\r\n if (\r\n column.type === EGridColumnType.LOOKUP_INPUT &&\r\n column.field &&\r\n typeof row[column.field] === 'object'\r\n ) {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n if (\r\n (column.allowSave === true || column.allowSave === undefined) &&\r\n (column.editable === true || column.editable === undefined)\r\n ) {\r\n obj[column.field] = row[column.field];\r\n if (\r\n column.type === EGridColumnType.DIALOG &&\r\n column.filter?.type === 'calendar'\r\n ) {\r\n obj[column.field] = this.datePipe.transform(\r\n obj[column.field],\r\n 'yyyy-MM-ddT00:00:00.000Z'\r\n );\r\n }\r\n\r\n //Set Decimal Fraction Value\r\n if (\r\n column.format &&\r\n column.format.type === EFormatType.DECIMAL &&\r\n row[column.field] &&\r\n !row[column.field].toString().includes('.')\r\n ) {\r\n let digitsInfo = '.00';\r\n let zero = '0';\r\n const formatParams = column.format?.formatParams;\r\n const fracDigits = column?.format?.formatParams?.digitsInfo;\r\n if (fracDigits) {\r\n for (let i = 1; i < fracDigits; i++) {\r\n zero = zero + '0';\r\n }\r\n digitsInfo = '.' + zero;\r\n }\r\n obj[column.field] = row[column.field] + digitsInfo;\r\n }\r\n } else if (\r\n row.isNew &&\r\n (column.allowSave === false || column.editable === false)\r\n ) {\r\n delete row[column.field];\r\n }\r\n });\r\n delete selectedRow['undefined'];\r\n this.gridService.checkValidity(this.columns, row);\r\n const isValid = this.gridValidation(this.columns, row);\r\n if (isValid) {\r\n // set the grid updated/inserted data\r\n this.rowActionEvents(selectedRow);\r\n this.browserCloseEvent(false);\r\n if (row.isNew) {\r\n if(this.addDataKeyValue){\r\n row['id'] = selectedRow['id'];\r\n }\r\n const { isNew, ...newRowObj } = row;\r\n delete newRowObj[this.dataKey];\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(newRowObj);\r\n }else{\r\n this.onRowAdd.emit(newRowObj);\r\n }\r\n } else {\r\n if (this.saveAllRecord) {\r\n this.saveRecordArray.push(obj);\r\n } else {\r\n this.onRowUpdate.emit(obj);\r\n }\r\n }\r\n this.editingRowKeys[row[this.dataKey]] = this.editAllRows;\r\n } else {\r\n this.editingRowKeys[row[this.dataKey]] = true;\r\n }\r\n // if all rows in read only mode then show editAllRows button. \r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.inEditMode = false;\r\n this.hideEditAllRowsBtn = true;\r\n this.sortDisabled = false;\r\n }\r\n this.selectedColumns.forEach((column: any) => {\r\n // convert date into time\r\n if (\r\n selectedRow[column.field] &&\r\n (selectedRow[column.field]?.toString()?.includes('PM') ||\r\n selectedRow[column.field]?.toString()?.includes('AM'))\r\n ) {\r\n selectedRow[column.field] = utilities.setTimeInDate(row[column.field]);\r\n }\r\n if (\r\n column.type === EGridColumnType.DROPDOWN &&\r\n column.optionLabel &&\r\n column.optionValue\r\n ) {\r\n this.setDropdownValue(column, selectedRow);\r\n }\r\n });\r\n this.addNewRowCheck = false;\r\n }\r\n\r\n // check the validation of the field\r\n gridValidation(columns: any, row: any): boolean {\r\n if (!this.gridService.checkValidity(columns, row)) {\r\n let isRequired = columns.some(\r\n (column: any) => column.errorMessage && !row[column.field]\r\n );\r\n if (isRequired) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else {\r\n this.alertService.error('Some fields are invalid', 'INVALID FIELD');\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param row : any\r\n * @param index : number\r\n * Clears out the edit row and replace with readable one\r\n */\r\n onRowEditCancel(row: any, index: number) {\r\n if (row.isNew) {\r\n this.rowsData.splice(index, 1);\r\n } else {\r\n this.rowsData[index] = this.editRowsRecords[row[this.dataKey]];\r\n delete this.editRowsRecords[row[this.dataKey]];\r\n }\r\n delete this.editingRowKeys[row[this.dataKey]];\r\n this.columns.forEach((column) => {\r\n if (column.type === EGridColumnType.DROPDOWN) {\r\n this.setDropdownValue(column, row);\r\n }\r\n });\r\n this.inEditMode = false;\r\n if(Object.values(this.editingRowKeys).every((value)=> !value)){\r\n this.sortDisabled = false;\r\n } \r\n this.addNewRowCheck = false;\r\n this.inlineRowCancel.emit(row);\r\n }\r\n\r\n /**\r\n *\r\n * @param row\r\n * Sends the row payload to parent for deletion\r\n */\r\n\r\n /**\r\n *set the gridData on row actions events\r\n */\r\n rowActionEvents(rowInfo, deleteRow: boolean = false){\r\n let action: string = '';\r\n let gridRowsData: any[] = [...this.rowsData];\r\n const index = gridRowsData.findIndex((rowData)=> rowInfo[this.dataKey] === rowData[this.dataKey]);\r\n if(index > -1){\r\n if(deleteRow){ \r\n gridRowsData.splice(index, 1);\r\n this.rowsData = [...gridRowsData];\r\n action = 'delete';\r\n } else {\r\n if(this.addNewRowCheck){\r\n action = 'insert';\r\n }else{\r\n action = 'update';\r\n }\r\n if(this.onGridRowActions.observers.length !== 0){\r\n rowInfo['rowAction']= action;\r\n }\r\n gridRowsData[index] = rowInfo;\r\n }\r\n }\r\n this.rowsChange.emit(this.rowsData);\r\n this.onGridRowActions.emit(gridRowsData);\r\n }\r\n\r\n /**\r\n * open Delete confirmation dialog when trying to delete row\r\n */\r\n deleteRecord(row: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this record?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handleInlineCRUD',\r\n accept: () => {\r\n if (this.useServerSideEvents) {\r\n this.loading = true;\r\n }\r\n // set the grid deleted data \r\n this.rowActionEvents(row, true);\r\n this.onRowDelete.emit(row);\r\n this.confirmationService.close();\r\n this.inEditMode = false;\r\n this.loading = false;\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * To set disabled the control\r\n */\r\n allowDisabled(column: any, row: any): boolean {\r\n let value: boolean = false;\r\n if (typeof (row[column.field]) === 'object' && row[column.field]?.action) {\r\n if (\r\n row[column.field]?.action &&\r\n Object.keys(row[column.field].action)?.includes('disabled') && row[column.field]?.action?.disabled === true\r\n ) {\r\n value = true;\r\n }\r\n } else if (column.disabled || column.editable === false) {\r\n value = true;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * To set aggregate in grid footer\r\n */\r\n setAggregateText(column: IGridColumn) {\r\n if (column?.aggregate) {\r\n column.aggregate.forEach((col: any) => {\r\n if (this.rowsData && this.rowsData.length > 0) {\r\n let columnType: EGridAggregate = col.type;\r\n if (columnType === EGridAggregate.COUNT) {\r\n const count = this.rowsData.length;\r\n col.aggrValue = this.setAggregateFooterText(col, count, 'Count');\r\n }\r\n\r\n if (\r\n columnType === EGridAggregate.SUM ||\r\n columnType === EGridAggregate.AVERAGE\r\n ) {\r\n const colValues: number[] = this.getColumnValues(column);\r\n if (colValues && colValues.length > 0) {\r\n const sum = colValues.reduce((acc, cur) => acc + cur, 0);\r\n if (columnType === EGridAggregate.SUM) {\r\n col.aggrValue = this.setAggregateFooterText(col, sum, 'Sum');\r\n }\r\n if (columnType === EGridAggregate.AVERAGE) {\r\n const average = sum / colValues.length || 0;\r\n col.aggrValue = this.setAggregateFooterText(\r\n col,\r\n average,\r\n 'Avg'\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n col.aggrValue = '';\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * set grid Aggregate values\r\n */\r\n setAggregateFooterText(column: any, value: number, defaultCaption: string) {\r\n const isDecimalFormat: boolean = column.format?.type === 'decimal';\r\n const digitsInfo = column.format?.digitsInfo;\r\n const caption: string =\r\n column.caption?.length > 0 ? column.caption : defaultCaption;\r\n\r\n const decimalPoint = isDecimalFormat\r\n ? value?.toFixed(digitsInfo ? digitsInfo : 2)\r\n : value?.toFixed(0);\r\n return `${caption} ${decimalPoint\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')} </br>`;\r\n }\r\n\r\n /**\r\n * set decimat and numeric values\r\n */\r\n setNumericValues() {\r\n if (this.columns?.length > 0 && this.rowsData?.length > 0) {\r\n this.columns.forEach((column: any) => {\r\n if (column.type === EGridColumnType.NUMERIC) {\r\n const digitsInfo = column?.format?.formatParams?.digitsInfo;\r\n this.rowsData.forEach((row) => {\r\n if (column?.format?.type === 'percent') {\r\n if (column.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n row[column.field] = parseFloat((row[column.field] / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n row[column.field] = row[column.field] / 100;\r\n }\r\n } else if (digitsInfo) {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo);\r\n }\r\n } else if (column?.format?.type === 'decimal') {\r\n row[column.field] = parseFloat(row[column.field]).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * get column value based on column field\r\n */\r\n getColumnValues(column: IGridColumn) {\r\n let arr: any = [];\r\n this.rowsData.forEach((row) => {\r\n let keys = Object.keys(row);\r\n keys.map((key) => {\r\n if (column.field === key) {\r\n arr.push(row[key]);\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to PDF\r\n */\r\n exportPdf() {\r\n var exportData = this.setExportData([...this.rowsData], true);\r\n let doc = new jsPDF('p', 'pt');\r\n doc.table(1, 1, exportData.rows, exportData.headings, { autoSize: true });\r\n doc.save('Export.pdf');\r\n }\r\n\r\n /**\r\n * Sub-function to set rows for export to Pdf, and Excel\r\n * @rows param for rows\r\n * @isExcel param for export to excel indication\r\n */\r\n setExportData(rows: any[] = [], isPdf: boolean = false): IGridDataExport {\r\n const headings: any = this.columns.map((column) => column.field);\r\n rows.forEach((row) => {\r\n for (var prop in row) {\r\n if (!headings.includes(prop)) {\r\n delete row[prop];\r\n }\r\n if (isPdf) {\r\n row[prop] =\r\n !row[prop] && typeof row[prop] !== 'boolean'\r\n ? ''\r\n : row[prop].toString();\r\n }\r\n }\r\n });\r\n return { rows, headings };\r\n }\r\n\r\n /**\r\n *\r\n * Export to Excel\r\n */\r\n exportExcel() {\r\n let exportData: any = this.exportDataToExcel();\r\n import('xlsx').then((xlsx) => {\r\n const worksheet: WorkSheet = xlsx.utils.json_to_sheet(exportData);\r\n\r\n let rowIndex = 0;\r\n exportData.forEach((row: any) => {\r\n let colIndex = 0;\r\n this.selectedColumns.forEach((col: any) => {\r\n const cellValue: string = row[col.header];\r\n if (cellValue && cellValue.length > 0 && cellValue.indexOf('|') > 0) {\r\n const linkText: string = cellValue.split('|')[0];\r\n let linkUrl: string = cellValue.split('|')[1];\r\n if (linkUrl && !linkUrl.startsWith('http')) {\r\n if (!linkUrl.startsWith('/')) {\r\n linkUrl = '/' + linkUrl;\r\n }\r\n\r\n linkUrl =\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n linkUrl;\r\n }\r\n\r\n const cellAddress = xlsx.utils.encode_cell({\r\n c: colIndex,\r\n r: rowIndex + 1,\r\n });\r\n\r\n worksheet[cellAddress] = {\r\n f: `=HYPERLINK(\"${linkUrl}\", \"${linkText}\")`,\r\n };\r\n }\r\n\r\n colIndex++;\r\n });\r\n\r\n rowIndex++;\r\n });\r\n\r\n const workbook = {\r\n Sheets: { sheet1: worksheet },\r\n SheetNames: ['sheet1'],\r\n };\r\n const excelBuffer: any = xlsx.write(workbook, {\r\n bookType: 'xlsx',\r\n type: 'array',\r\n });\r\n this.saveAsExcelFile(excelBuffer, 'Export.xlsx');\r\n });\r\n }\r\n\r\n exportDataToExcel() {\r\n let arr: any = [];\r\n this.rowsData.forEach((row: any) => {\r\n let obj: any = {};\r\n this.selectedColumns.forEach((column: any) => {\r\n const gridHeader = column.header;\r\n if (column.type === EGridColumnType.LINK) {\r\n const linkObj = row[column.displayText?.toLowerCase() + '_obj'];\r\n obj[gridHeader] = row[column.field] + '|' + linkObj?.hyperlink;\r\n } else {\r\n obj[gridHeader] = row[column.field];\r\n }\r\n });\r\n\r\n arr.push(obj);\r\n });\r\n return arr;\r\n }\r\n\r\n /**\r\n *\r\n * Export to excel (sub-method)\r\n */\r\n saveAsExcelFile(buffer: any, fileName: string): void {\r\n import('file-saver').then((FileSaver) => {\r\n let EXCEL_TYPE =\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n const data: Blob = new Blob([buffer], { type: EXCEL_TYPE });\r\n saveAs(data, fileName);\r\n });\r\n }\r\n\r\n /**\r\n *set config data of lookup control dialog\r\n */\r\n setLookupDialogConfig(row: any, column: any, data: any) {\r\n let selection: string = '';\r\n if (row[column.field] && typeof row[column.field] === 'object') {\r\n selection = row[column.field].text;\r\n } else if (column.displayField && row[column.displayField]) {\r\n selection = row[column.displayField];\r\n } else {\r\n selection = row[column.field];\r\n }\r\n\r\n if (column.field && typeof row[column.field] === 'object') {\r\n const newRow = { ...row };\r\n newRow[column.field] = newRow[column.field]?.value;\r\n row = { ...newRow };\r\n }\r\n\r\n if (column.type === EGridColumnType.LOOKUP_INPUT && data) {\r\n let obj = utilities.autoSetLookupData(data, row);\r\n row[column.field + '-data'] = obj;\r\n }\r\n return {\r\n rowData: row[column.field + '-data'],\r\n selection: selection,\r\n column: column,\r\n };\r\n }\r\n\r\n /**\r\n * open link on lookupControl control in read only mode when editLink set true\r\n */\r\n openLookupHyperlink(column: IGridColumn, row: any) {\r\n if (column.editLink === true && column.component) {\r\n let obj: any = this.setLookupDialogConfig(row, column, column.data?.data);\r\n obj['component'] = column.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe((res) => {\r\n if (res && column.onReturn) {\r\n column.onReturn(res);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open lookup Dialog\r\n */\r\n openLookupDialog(column: any) {\r\n const columnData = column.column?.lookupControl?.data ? column.column.lookupControl.data : column.column.data\r\n const ref = this.dialogService.open(column.component, {\r\n ...columnData,\r\n data: {\r\n selection: column.selection,\r\n field: column.column.field,\r\n valueField: column.column.lookupControl?.data?.valueField,\r\n ...column.rowData,\r\n },\r\n });\r\n const componentName = column.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return ref;\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(column: any, row?: any) {\r\n this.onClickEvent(column, row);\r\n this.lookupObject = { text: '', value: '', field: '' };\r\n if (column.lookupControl) {\r\n let obj: any = this.setLookupDialogConfig(\r\n row,\r\n column,\r\n column.lookupControl.data?.data\r\n );\r\n obj['component'] = column.lookupControl.component;\r\n const ref = this.openLookupDialog(obj);\r\n ref.onClose.subscribe(\r\n (res) => {\r\n if (column.onReturn) {\r\n column.onReturn(res, row);\r\n }\r\n if (res) {\r\n let value = utilities.setDialogResponse(\r\n column,\r\n column.lookupControl,\r\n res\r\n );\r\n if (column.displayField) {\r\n row[column.field] = {\r\n text: res[column.displayField.toLowerCase()],\r\n value: res[column.field.toLowerCase()],\r\n };\r\n this.lookupObject = row[column.field];\r\n } else if (value && value.value) {\r\n value['field'] = column.field;\r\n row[column.field] = value.value;\r\n } else {\r\n row[column.field] = res[column.field.toLowerCase()];\r\n }\r\n }\r\n if (row[column.field] !== obj.selection) {\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n setFilterLookup(column: any) {\r\n this.gridService.setLookUpFilter(column, this.dialogService);\r\n }\r\n\r\n // Check calender value is changed or not\r\n calenderChangeEvent(column: any, row: any) {\r\n let valueChange: boolean = false;\r\n if (\r\n column.timeOnly &&\r\n this.datePipe.transform(row[column.field], 'hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n column.showTime &&\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd hh:mm') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd hh:mm')\r\n ) {\r\n valueChange = true;\r\n } else if (\r\n this.datePipe.transform(row[column.field], 'yyyy-MM-dd') !==\r\n this.datePipe.transform(this.calenderPreviousValue, 'yyyy-MM-dd')\r\n ) {\r\n valueChange = true;\r\n }\r\n if(valueChange){\r\n this.browserCloseEvent(true);\r\n if(column.onChange){\r\n column.onChange(row);\r\n }\r\n }\r\n this.calenderPreviousValue = '';\r\n }\r\n\r\n onFocusOutEvent(column: IGridColumn, row: any) {\r\n this.gridService.checkValidity([column], row);\r\n if (column.type === EGridColumnType.DATE) {\r\n this.calenderChangeEvent(column, row);\r\n }\r\n if (column.onFocusOut) {\r\n column.onFocusOut(row);\r\n } else if (\r\n column.onReturn &&\r\n column.type !== EGridColumnType.LOOKUP_INPUT\r\n ) {\r\n column.onReturn(row);\r\n }\r\n }\r\n\r\n setFilterFocusOut(col: any, filter?: any, event?: any) {\r\n this.gridFilterObj = { column: col, filter: filter, event: event };\r\n const newColumn: any = { ...col };\r\n //change filter calender format\r\n if (newColumn.type === 'date' && newColumn.value) {\r\n newColumn.value = this.datePipe.transform(\r\n col.value.toString().trim(),\r\n 'yyyy-MM-dd'\r\n );\r\n }\r\n setTimeout(\r\n () => {\r\n this.filterObj(newColumn);\r\n },\r\n newColumn.type === EGridColumnType.LOOKUP_INPUT ? 250 : 0\r\n );\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n }\r\n\r\n filterObj(col: any) {\r\n const obj = {\r\n field: col.field,\r\n matchMode: col.matchMode ? col.matchMode : 'startsWith',\r\n operator: col.operator ? col.operator : 'and',\r\n tableAlias: col.tableAlias ? col.tableAlias : '',\r\n value: col.value,\r\n };\r\n this.globalFiltersArray.push(obj);\r\n }\r\n\r\n applyEnterEvent(filter: any, event: any, column: any) {\r\n this.gridService.applyFilterEvent = true;\r\n this.autoLoadData = true;\r\n this.onApplyFilter.emit();\r\n this.filterObj(column);\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (column?.filter?.type === this.dropDownFilter?.column?.filter?.type) {\r\n this.dropDownFilter.filter(this.dropDownFilter.event.target);\r\n } else {\r\n filter(event.target.value);\r\n }\r\n }\r\n\r\n removeNullCalendar(column: IGridColumn, filter: any, event: any) {\r\n if (column.value === null) {\r\n this.removeNullFilters(column);\r\n this.setFilterFocusOut(column, filter, event);\r\n }\r\n }\r\n\r\n backspaceEvent(event: any, column: any) {\r\n if (\r\n event.key === 'Backspace' &&\r\n (column.value?.toString().length === 1 ||\r\n column.value?.toString() === '' ||\r\n column.value === null)\r\n ) {\r\n this.removeNullFilters(column);\r\n } else if (column.type === EGridColumnType.DATE && column.value === null) {\r\n this.removeNullFilters(column);\r\n }\r\n }\r\n\r\n removeNullFilters(column: any) {\r\n if (this.globalFiltersArray && this.globalFiltersArray.length > 0) {\r\n let arr = [...this.globalFiltersArray];\r\n let index = arr.findIndex((i) => i.field === column.field);\r\n arr.splice(index, 1);\r\n this.globalFiltersArray = arr;\r\n }\r\n }\r\n\r\n // Removing Header Filter Value using Backspace key Event or Delete key Event.\r\n removingFilters(event: any, column: IGridColumn) {\r\n if (\r\n (event.key === 'Backspace' || event.key === 'Delete') &&\r\n column.value?.toString().length === 0\r\n ) {\r\n let searchFilters;\r\n if(!this.softCaching){\r\n searchFilters = JSON.parse(localStorage.getItem('SetFilters-' + utilities.currentUrl()) as any);\r\n }else{\r\n searchFilters = this.gridService.softCachingFilters[utilities.currentUrl()];\r\n }\r\n if (searchFilters && searchFilters.filters) {\r\n if (searchFilters.filters.length > 0) {\r\n let index = searchFilters.filters.findIndex(\r\n (x: any) => x.field === column.field\r\n );\r\n if (index !== -1) {\r\n if (searchFilters.filters.length === 1) {\r\n localStorage.removeItem('SetFilters-' + utilities.currentUrl());\r\n } else {\r\n searchFilters.filters.splice(index, 1);\r\n if(!this.softCaching){\r\n localStorage.setItem('SetFilters-' + utilities.currentUrl(),JSON.stringify(searchFilters));\r\n }else{\r\n this.gridService.softCachingFilters[utilities.currentUrl()] = searchFilters;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Add Click Button Event on Grid.\r\n onClickButton(column: any, row: any) {\r\n this.openGridDialog(column, row);\r\n }\r\n\r\n // Invoke onClick Event.\r\n onClickEvent(column: any, row: any) {\r\n if (column.type === EGridColumnType.DATE && row[column.field]) {\r\n this.calenderPreviousValue = row[column.field];\r\n } else if (\r\n !row[column.field] &&\r\n column.type === EGridColumnType.DATE &&\r\n (column.showTime || column.timeOnly) &&\r\n column.minutesInterval\r\n ) {\r\n this.defaultDate = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n if (column && column.onClick) {\r\n column.onClick(row);\r\n }\r\n }\r\n\r\n // set the select value of multi-select\r\n showOption(column, row){\r\n if(row[column.field]){\r\n if(typeof(row[column.field]) === \"string\" && !row[column.field].includes(',')){\r\n row[column.field] = [row[column.field]];\r\n } else if(row[column.field].includes(',')){\r\n row[column.field] = row[column.field].split(',');\r\n }\r\n }\r\n }\r\n\r\n onClearValue(column, row){\r\n if(column?.type === EGridColumnType.DROPDOWN && !row[column.field]){\r\n row[column.field] = null;\r\n }\r\n }\r\n\r\n // Invoke onChange Event\r\n onChangeEvent(column: any, row: any) {\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n this.displayFieldDropdownValue(column, row);\r\n this.onClearValue(column, row);\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n checkBoxChangeEvent(event:any,column: IGridColumn, row){\r\n row[column.field] = event;\r\n }\r\n\r\n // set dropdown displayField value base on optionLabel & optionValue.\r\n displayFieldDropdownValue(column: any, row: any) {\r\n if (\r\n column?.type === EGridColumnType.DROPDOWN &&\r\n column.displayField &&\r\n column.displayField?.length > 0\r\n ) {\r\n const key: any = Object.keys(row)?.find(\r\n (rowInfo) =>\r\n rowInfo?.toLowerCase() === column.displayField.toLowerCase()\r\n );\r\n const displayFieldValue = column.data.find(\r\n (record: any) =>\r\n record[column.optionValue]?.toString() ===\r\n row[column.field]?.toString()\r\n );\r\n if (key && displayFieldValue) {\r\n row[key] = displayFieldValue[column.optionLabel];\r\n }\r\n }\r\n }\r\n\r\n // Add autoSearch on Grid.\r\n autoSearch(event: any, column: any, row: any) {\r\n if (event && column && row) {\r\n column.onReturn(event.query, column, row);\r\n }\r\n }\r\n\r\n // Remove FilterValues\r\n cleargridFiltersValue() {\r\n const globalFilterClearValueBtn = document.getElementById(\r\n 'clearGlobalFilterBtn'\r\n );\r\n if (globalFilterClearValueBtn) {\r\n globalFilterClearValueBtn.click();\r\n }\r\n if (this.selectedColumns && this.selectedColumns.length > 0) {\r\n this.selectedColumns.forEach((col) => {\r\n col.value = null;\r\n this.filterObj(col);\r\n });\r\n }\r\n }\r\n\r\n editAllRowsAtOnce() {\r\n if(this.editRowPermission){\r\n if (this.getClassForEditAllRows('editRow')) {\r\n if(this.selectedColumns.some((column)=> column.type === EGridColumnType.BOOLEAN && (column.filtering === true || column.filtering === undefined))){\r\n this.editAllRecord = true;\r\n }\r\n this.hideEditAllRowsBtn = false;\r\n this.sortDisabled = true;\r\n }\r\n }\r\n }\r\n\r\n saveAllRowsAtOnce() {\r\n this.getClassForEditAllRows('saveRow');\r\n }\r\n\r\n // reset the grid rowsValue to orignal values\r\n cancelAllRowsAtOnce() {\r\n this.rowsData = [...this.rowsDataCopy];\r\n this.rowsDataCopy = JSON.parse(JSON.stringify(this.rowsData));\r\n this.selectedColumns?.forEach((column)=>{\r\n if(column.type === EGridColumnType.DATE){\r\n this.rowsData?.forEach((row)=>{\r\n if(row[column.field]){\r\n row[column.field]= new Date(row[column.field]);\r\n }\r\n })\r\n }\r\n\r\n });\r\n this.onCancelAllRows.emit(this.rowsData);\r\n }\r\n\r\n getClassForEditAllRows(className: string = '') {\r\n let success: boolean = false;\r\n const getBtns: any =\r\n this.elementRef?.nativeElement?.getElementsByClassName(className);\r\n if (getBtns && getBtns.length > 0) {\r\n success = true;\r\n if (className === 'saveRow') {\r\n this.editAllRecord = false;\r\n this.saveAllRecord = true;\r\n const records$ = [];\r\n setTimeout(()=>{\r\n for (let item of getBtns) {\r\n const rowSave = new Promise((resolve, reject) => { \r\n item.click();\r\n resolve(item);\r\n });\r\n records$.push(rowSave);\r\n }\r\n Promise.all(records$).then((response) => {\r\n console.log(\"AAAA\");\r\n this.onRowUpdate.emit(this.saveRecordArray);\r\n this.saveRecordArray = [];\r\n });\r\n },20)\r\n } else {\r\n this.saveAllRecord = false;\r\n for (let item of getBtns) {\r\n if(className == 'cancelRow'){\r\n setTimeout(() => {\r\n item.click();\r\n }, 50);\r\n }else{\r\n item.click();\r\n }\r\n }\r\n }\r\n }\r\n return success;\r\n }\r\n\r\n //Focused calender input on select date\r\n selectDate(column: any) {\r\n document.getElementById(column.field)?.focus();\r\n }\r\n\r\n //apply filter on grid when search btn clicked\r\n applyGirdFilterBtn() {\r\n if (this.gridFilterObj && Object.keys(this.gridFilterObj).length > 0) {\r\n this.applyEnterEvent(\r\n this.gridFilterObj.filter,\r\n this.gridFilterObj.event,\r\n this.gridFilterObj.column\r\n );\r\n }\r\n }\r\n\r\n // invoke multiSelection click event\r\n multiCheckBoxOnclick(rowInfo: any) {\r\n if (rowInfo) {\r\n this.onMultiSelectionChange.emit(rowInfo);\r\n }\r\n }\r\n\r\n applyDropdownFilter(filter: any, event: any) {\r\n filter(event.target);\r\n }\r\n\r\n searchDropdownFilter(filter: any, event: any, column: any) {\r\n this.setFilterFocusOut(column, filter, event);\r\n this.dropDownFilter = { filter: filter, event: event, column: column };\r\n if (column.allowSearch !== true) {\r\n this.applyDropdownFilter(filter, event);\r\n }\r\n }\r\n\r\n lookupClearValue(column: any, row?: any) {\r\n if (row) {\r\n row[column.field] = '';\r\n } else {\r\n column.value = '';\r\n this.setFilterFocusOut(column);\r\n }\r\n this.browserCloseEvent(true);\r\n if (column.onChange) {\r\n column.onChange(row);\r\n }\r\n }\r\n\r\n // invoke when click header checkbox filter\r\n clickCheckBoxFilter(column: IGridColumn) {\r\n if (this.editAllRecord) {\r\n if (\r\n column.type === EGridColumnType.BOOLEAN \r\n &&\r\n column?.filter?.type === 'checkbox' && column.filtering != false\r\n ) {\r\n this.rowsData.forEach((row) => {\r\n row[column.field] = column.value;\r\n });\r\n //this.onCheckBoxFilterClick.emit(column);\r\n }\r\n //this.onCheckBoxFilterClick.emit(column);\r\n }\r\n this.onCheckBoxFilterClick.emit(column);\r\n }\r\n //set header checkbox value for getting all columns on stay admin\r\n setHeaderCheckBoxValue(value: any){\r\n this.isIncludedAllColumns.emit(value);\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(column: any, row: any){\r\n document.getElementsByClassName(column.field + row[this.dataKey])[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if( year && year.length === 4){\r\n this.calendarFormat= 'mm/dd/yy';\r\n row[column.field] = new Date(val?.target?.value)?.toLocaleDateString(\"en-US\");\r\n } else if(year && year.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EValidator,\r\n IFormField,\r\n EFormControl,\r\n AddFormField,\r\n ISetFilter,\r\n IDropDownRequest,\r\n IListFilter,\r\n IReportBtn,\r\n} from '../models/form.model';\r\nimport { EGridSortDirection, IGridSort } from '../models/grid.model';\r\nimport { HyperlinkService } from '../services/hyperlink.service';\r\nimport { AlertService } from './alert.service';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from './utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormService {\r\n public fieldFocusedOut:boolean = false;\r\n constructor(\r\n private hyperlinkService: HyperlinkService,\r\n private dropdownService: DropdownService,\r\n private alertService: AlertService,\r\n private requestService: RequestService\r\n ) { }\r\n\r\n checkValidity(formFields: IFormField[]): boolean {\r\n let isValid: boolean = true;\r\n\r\n formFields.map((item: IFormField) => {\r\n if (item.validations && !item.disabled) {\r\n if(item.control === EFormControl.LOOKUP_INPUT && item.value && typeof(item.value) === 'object'){\r\n item.value = item.value.value;\r\n }\r\n item.errorMessage = '';\r\n item.isvalid = true;\r\n for (let i = 0; i < item.validations.length; i++) {\r\n const minMaxValidDate = utilities.calenderMinMaxValue(item, item.value, i);\r\n const valid =\r\n item.validations && typeof item.label === 'object'\r\n ? item.label.name\r\n : item.label;\r\n if (\r\n item.validations[i].type == EValidator.REQUIRED &&\r\n !item.value &&\r\n !item.hidden &&\r\n valid\r\n ) {\r\n isValid = item.value\r\n ? true\r\n : this.setErrorMessage(item, `${valid} is required`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINLENGTH &&\r\n item.value.length < item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXLENGTH &&\r\n item.value.length > item.validations[i].expression\r\n ) {\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${item.validations[i].expression} characters required`\r\n );\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MINIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'minimum' ? this.setErrorMessage(item, `Minimum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value < item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length > item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Minimum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.MAXIMUM &&\r\n isValid\r\n ) {\r\n if(item.control === EFormControl.CALENDAR){\r\n isValid = minMaxValidDate === 'greater' ? this.setErrorMessage(item, `Maximum ${valid} ${item.validations[i].expression}`) : true;\r\n }else if(item.value > item.validations[i].expression){\r\n isValid =\r\n item.value && item.value.length < item.validations[i].expression\r\n ? true\r\n : this.setErrorMessage(\r\n item,\r\n `Maximum ${valid} ${item.validations[i].expression}`\r\n );\r\n }\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PATTERN &&\r\n !item.value.match(item.validations[i].expression)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(item.validations[i].expression)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.NUMERIC &&\r\n !item.value.toString().match(/^(0|[-()1-9]\\d*)$/)\r\n ) {\r\n isValid =\r\n item.value && item.value?.toString()?.match(/^(0|[1-9]\\d*)$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.PHONE &&\r\n !item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.toString().match(/^(?=.*[0-9])[-()0-9\\s]+$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.DECIMAL &&\r\n !item.value?.toString()?.match(/^(0|[-()1-9]\\d*)(\\.\\d+)?$/)\r\n ) {\r\n isValid =\r\n item.value && item.value.match(/^(0|[1-9]\\d*)(\\.\\d+)?$/)\r\n ? true\r\n : this.setErrorMessage(item, `Enter ${item.validations[i].type} for ${valid}`);\r\n break;\r\n } else if (\r\n item.value &&\r\n item.validations[i].type == EValidator.EMAIL &&\r\n !item.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)\r\n ) {\r\n isValid =\r\n item.value &&\r\n item.value.match(\r\n /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/\r\n )\r\n ? true\r\n : this.setErrorMessage(item, `Enter valid ${valid}`);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n setErrorMessage(item: IFormField, errorMessage: string): boolean {\r\n item.errorMessage = errorMessage;\r\n item.isvalid = false;\r\n return false;\r\n }\r\n\r\n addFormField(fieldInfo: IFormField): IFormField {\r\n if (!fieldInfo.label) {\r\n fieldInfo.label = fieldInfo.field;\r\n }\r\n\r\n const formField: any = {\r\n label: fieldInfo.label,\r\n field: fieldInfo.field,\r\n displayField: fieldInfo.displayField,\r\n control: fieldInfo.control,\r\n showOption: fieldInfo.showOption,\r\n column: fieldInfo.column,\r\n row: fieldInfo.row,\r\n minutesInterval: fieldInfo.minutesInterval,\r\n value: fieldInfo.value,\r\n format: fieldInfo.format,\r\n hidden: fieldInfo.hidden,\r\n permissions: fieldInfo.permissions,\r\n validations: fieldInfo.validations,\r\n id: fieldInfo.id,\r\n hyperlink: fieldInfo.hyperlink,\r\n data: fieldInfo.data,\r\n lookupControl: fieldInfo.lookupControl,\r\n componentControl: fieldInfo.componentControl,\r\n optionLabel: fieldInfo.optionLabel,\r\n optionValue: fieldInfo.optionValue,\r\n saveAsString: fieldInfo.saveAsString,\r\n showAllValue: fieldInfo.showAllValue,\r\n onClick: fieldInfo.onClick,\r\n onReturn: fieldInfo.onReturn,\r\n onFocusOut: fieldInfo.onFocusOut,\r\n onChange: fieldInfo.onChange,\r\n tables: fieldInfo.tables,\r\n disabled: fieldInfo.disabled,\r\n disabledText: fieldInfo.disabledText,\r\n timeOnly: fieldInfo.timeOnly,\r\n monthOnly: fieldInfo.monthOnly,\r\n showTime: fieldInfo.showTime, // to show time as well in calendar form field\r\n height: fieldInfo.height,\r\n showBottomBorder: fieldInfo.showBottomBorder,\r\n allowSearch: fieldInfo.allowSearch,\r\n selectMultipleFiles: fieldInfo.selectMultipleFiles,\r\n SetfileTypes: fieldInfo.SetfileTypes,\r\n icon: fieldInfo.icon,\r\n color: fieldInfo.color,\r\n card: fieldInfo.card,\r\n uniqueKey: fieldInfo.uniqueKey,\r\n azureContainer: fieldInfo.azureContainer,\r\n class: fieldInfo.class\r\n };\r\n\r\n return formField;\r\n }\r\n\r\n addCheckbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CHECKBOX;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.INPUT;\r\n fieldInfo.disabled = true;\r\n fieldInfo.showBottomBorder = true;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addNumericTextbox(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NUMERIC;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addSpaceField(fieldInfo: AddFormField): IFormField{\r\n fieldInfo.control = EFormControl.SPACER;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addTextArea(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.TEXTAREA;\r\n return this.addFormField(fieldInfo);\r\n }\r\n \r\n // Adding Report button for DynamicForm\r\n addReportBtn(fieldInfo: IReportBtn) {\r\n fieldInfo.control = EFormControl.REPORT;\r\n return fieldInfo;\r\n }\r\n\r\n addNoteField(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.NOTE_FIELD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHyperlink(fieldInfo: AddFormField) {\r\n if(fieldInfo.hyperlink && fieldInfo.hyperlink.component){\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n return this.addFormField(fieldInfo);\r\n }else{return this.hyperlinkService.buildUrl(\r\n fieldInfo?.hyperlink?.linkId,\r\n fieldInfo.hyperlink?.params\r\n ).then((res: any) => {\r\n const params = fieldInfo?.hyperlink?.params;\r\n const link = res;\r\n if(res && params){\r\n Object.keys(params).forEach((key)=>{\r\n if(res.includes('{{'+key+'}}') && params[key] && !params[key].toString()?.includes('{')){\r\n res = res.replace('{{'+key+'}}', params[key])\r\n } \r\n })\r\n }\r\n if (fieldInfo.hyperlink?.linkId && fieldInfo.hyperlink.linkId.length > 0) {\r\n fieldInfo.hyperlink.link = res;\r\n }\r\n fieldInfo.control = EFormControl.HYPERLINK;\r\n let obj: any = this.addFormField(fieldInfo);\r\n obj['orignalLink'] = link;\r\n return obj;\r\n });\r\n }\r\n}\r\n\r\n addCalendar(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.CALENDAR;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // add AutoComplete for Form\r\n addAutoComplete(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.AUTOCOMPLETE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Search AutoComplete Data for form\r\n getAutoCompleteData(formField?: any, uniqueKey?: string, filters?: any[]): any {\r\n this.requestService.get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters}).subscribe((response: any)=>{\r\n formField.data = [...response.records];\r\n });\r\n }\r\n\r\n addDropdown(fieldInfo: AddFormField, dropDownProp?: IDropDownRequest): any {\r\n fieldInfo.control = EFormControl.DROPDOWN;\r\n if (dropDownProp) {\r\n let uniqueKey = dropDownProp.uniqueKey;\r\n let valueProp = dropDownProp.valueProp;\r\n let labelProp = dropDownProp.labelProp;\r\n let filters: ISetFilter[] = dropDownProp.filters && dropDownProp.filters.length > 0 ? dropDownProp.filters : [];\r\n if (uniqueKey && valueProp && labelProp) {\r\n return this.getDropdownData(fieldInfo, uniqueKey, valueProp, labelProp, filters);\r\n }\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getDropdownData(fieldInfo: AddFormField, uniqueKey: string, valueProp: string, labelProp: string, filters: any[]) {\r\n return this.dropdownService\r\n .setDropDownList(\r\n uniqueKey,\r\n valueProp,\r\n labelProp,\r\n filters\r\n )\r\n .then((res: any) => {\r\n fieldInfo.data = res;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error: any) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n addLookUp(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.LOOKUP_INPUT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDialog(fieldInfo: AddFormField): IFormField {\r\n return this.addLookUp(fieldInfo);\r\n }\r\n\r\n addComponent(fieldInfo: AddFormField): IFormField {\r\n fieldInfo.control = EFormControl.COMPONENT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addHeader(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SECTION_HEADER;\r\n fieldInfo.class = 'form-header';\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addMultiSelect(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.MULTISELECT;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addFileUpload(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.FILE_UPLOAD;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n addDisplayFile(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.DISPLAY_FILE;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding OnClick Button Function for DynamicForm\r\n addButton(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.ADD_BUTTON;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // Adding Switch Function for DynamicForm\r\n addSwitch(fieldInfo: IFormField): IFormField {\r\n fieldInfo.control = EFormControl.SWITCH;\r\n return this.addFormField(fieldInfo);\r\n }\r\n\r\n // start add new card functionality\r\n addCard(fieldInfo: IFormField, cardData?: IListFilter): IFormField {\r\n fieldInfo.control = EFormControl.CARD;\r\n if (cardData && cardData.uniqueKey) {\r\n if(cardData.sorts?.length > 0){\r\n cardData.sorts.forEach((res) =>{\r\n res.direction = res.direction ? res.direction : EGridSortDirection.ASC;\r\n });\r\n } \r\n return this.getCardData(fieldInfo, cardData.uniqueKey, cardData.filters, cardData.sorts);\r\n } else {\r\n return this.addFormField(fieldInfo);\r\n }\r\n }\r\n\r\n getCardData(fieldInfo: any, uniqueKey: string, filters: any[] = [], sorts: any[] = []): any {\r\n return this.getCardList(uniqueKey, filters, sorts)\r\n .then((res: any) => {\r\n fieldInfo.card.data = res.records;\r\n return this.addFormField(fieldInfo);\r\n })\r\n .catch((error) => {\r\n this.alertService.apiError(error);\r\n return this.addFormField(fieldInfo);\r\n });\r\n }\r\n\r\n getCardList(uniqueKey: string, filters: any[] = [], sorts: any[] = []) {\r\n return new Promise((resolve, reject) => {\r\n this.requestService\r\n .get<any[], any>('/Data/Fetch', { uniqueKey: uniqueKey, filters, sorts })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n return resolve(response);\r\n } else {\r\n return resolve([]);\r\n }\r\n },\r\n ({ error }: any) => {\r\n reject(error);\r\n }\r\n );\r\n });\r\n }\r\n // End add new card functionality\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'se-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.scss'],\r\n})\r\nexport class NotesComponent implements OnInit {\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) { }\r\n\r\n public note: string = '';\r\n public disabledText: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.note = this.config.data.value ?? '';\r\n this.disabledText = this.config.data.disabledText;\r\n }\r\n\r\n handleCancel() {\r\n this.ref.close();\r\n }\r\n\r\n handleOk() {\r\n this.ref.close(this.note);\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, ViewChildren, QueryList, ComponentFactory, ViewContainerRef, ElementRef, HostListener, } from '@angular/core';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { NotesComponent } from '../../shared/notes/notes.component';\r\nimport { EFormControl, EHyperlink, IFormField, IDynamicForm, IFormSection, EValidator, IDynamicCard } from '../../../models/form.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\nimport { IDictionary } from '../../../models/common.model';\r\nimport { Router } from '@angular/router';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DatePipe } from '@angular/common';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\n\r\n@Component({\r\n selector: 'se-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.scss']\r\n})\r\nexport class FormComponent implements OnInit {\r\n @Input() stickyActions: boolean = true;\r\n @Input() form: IDynamicForm;\r\n @Input() hideSaveButton: boolean = false;\r\n @Input() hideCancelButton: boolean = false;\r\n @Input() loading:boolean = false;\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n @Output() saveForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() cancelForm: EventEmitter<IFormSection[]> = new EventEmitter();\r\n @Output() dropDownChangeEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() sectionClickedEvent: EventEmitter<IFormSection> = new EventEmitter();\r\n @ViewChildren('dynamicComponentContainer', { read: ViewContainerRef })\r\n dynamicComponentContainer: QueryList<ViewContainerRef>;\r\n\r\n dynamicCase = EFormControl;\r\n permissionType = EPermissionType;\r\n roles: string[] = [];\r\n isFormDisabled: boolean = false;\r\n isFormHidden: boolean = false;\r\n componentsList: IDictionary[] = [];\r\n fileUploadUrls: any;\r\n showfileUploadError: boolean = false;\r\n cardList: IDynamicCard;\r\n calenderPreviousValue: string = '';\r\n defaultDate: string = '';\r\n lookupFocusOut: boolean = false;\r\n calendarFormat: string = 'mm/dd/y';\r\n\r\n // apply checked/unChecked prop for CheckBox of the Form\r\n checked: boolean = true;\r\n unChecked: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private formService: FormService,\r\n private alertService: AlertService,\r\n private sanitizer: DomSanitizer,\r\n public dialogService: DialogService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n private el: ElementRef,\r\n private datePipe: DatePipe,\r\n private gridService: GridService,\r\n private pageLoggerService: PageLoggerService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n \r\n // browser tab close event\r\n @HostListener('window:beforeunload', ['$event'])\r\n beforeunloadHandler(event:any) {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n return false;\r\n }else{\r\n return true;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n // start cardList reference break functionality\r\n let formValues = { ...this.form };\r\n formValues.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field:any) => {\r\n\t // convert string time into date\r\n if(field?.control === EFormControl.CALENDAR && field?.onChange){\r\n field['previousValue'] = field?.value;\r\n }\r\n if(field?.control === EFormControl.CALENDAR &&\r\n field?.timeOnly && (field?.value?.toString().includes('AM') || field?.value?.toString().includes('PM'))){\r\n field.value = utilities.setTimeInDate(field.value);\r\n }\r\n if (field?.control === EFormControl.AUTOCOMPLETE && field?.value && field?.value?.length > 0){\r\n const value = field?.value.map((value: any)=> value[field?.displayField]);\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n field.value = value.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field?.displayField] : val}));\r\n }\r\n }\r\n // convert the multiSelect string value in array\r\n if(field?.control === EFormControl.MULTISELECT && field.value && !Array.isArray(field.value)){\r\n if(field.value?.toString()?.includes(\",\")){\r\n field.value = field.value?.toString()?.split(\",\");\r\n }else {\r\n field.value = [field.value];\r\n }\r\n }\r\n if (field?.control === EFormControl.CARD) {\r\n this.form = {};\r\n setTimeout(() => {\r\n field?.card?.data?.forEach((x: any) => {\r\n if(field?.card?.formSections && field?.card?.formSections?.length > 0){\r\n x.dynamicForm = {\r\n formSections: JSON.parse(\r\n JSON.stringify(field?.card?.formSections)\r\n ),\r\n };\r\n };\r\n });\r\n this.form = formValues;\r\n }, 500);\r\n }\r\n // End cardList reference break functionality\r\n if (field?.control === EFormControl.CHECKBOX) {\r\n field.value = (field?.value?.toString()?.toLowerCase() === 'true' || field?.value?.toString()?.toLowerCase() === 'y' || field?.value?.toString() === '1') ? true : false;\r\n }\r\n });\r\n }\r\n });\r\n // apply user role permissions on form\r\n this.roles = this.authService.getUserRoles();\r\n this.applyUserPermissions();\r\n this.applyRequiredFieldValidation();\r\n this.removeWhiteSpaces();\r\n this.setHyperlinkComponentRoute();\r\n setTimeout(() => {this.setCalanderWidth();}, 3000);\r\n }\r\n }\r\n\r\n // set calender 2 Or 4 digit year format\r\n calenderInputValue(formField: IFormField){\r\n document.getElementsByClassName(formField.field)[0]?.addEventListener('keyup', (val: any) => {\r\n const year = val?.target?.value?.toString()?.split('/')[2];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n formField.value = new Date(val.target.value).toLocaleDateString(\"en-US\");\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n}\r\n\r\n// set percent and decimal values\r\n setnumericvalues() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if (field?.control === EFormControl.NUMERIC) {\r\n const digitsInfo = field?.format?.formatParams?.digitsInfo;\r\n if (field?.format?.type === 'percent') {\r\n if (!field.value?.toString()?.includes('.') && field.format?.formatParams?.allowCalculate) {\r\n if (digitsInfo) {\r\n field.value = parseFloat((field.value / 100)?.toString()).toFixed(digitsInfo);\r\n } else {\r\n field.value = field.value / 100;\r\n }\r\n } else if (digitsInfo) {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo);\r\n }\r\n } else if (field?.format?.type === 'decimal') {\r\n field.value = parseFloat(field.value).toFixed(digitsInfo ? digitsInfo : 2);\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Checks if form has any field with dynamic component;\r\n * Creates component instance using componentFactoryResolver\r\n * Injects component through viewRef.createComponent()\r\n * Passes data to component\r\n * Subscribes to the events passed to the components\r\n * Finally forces Angular to detech changes\r\n */\r\n loadDynamicComponents() {\r\n this.componentsList = [];\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field:any, fieldIndex) => {\r\n if (field.control === EFormControl.COMPONENT) {\r\n const viewRef:any = this.dynamicComponentContainer.find(\r\n (x) =>\r\n x.element.nativeElement.id ==\r\n `${formSection.name}-${fieldIndex}`\r\n );\r\n const {\r\n component: Component,\r\n data,\r\n handlers,\r\n } = field.componentControl;\r\n const componentFactory: ComponentFactory<any> = this.componentFactoryResolver.resolveComponentFactory(\r\n Component\r\n );\r\n // Passing data to component\r\n const componentRef = viewRef?.createComponent(componentFactory);\r\n if(componentRef){\r\n Object.entries(data ?? {}).forEach(([key, value]) => {\r\n componentRef.instance[key] = value;\r\n });\r\n this.componentsList.push({name: field.componentControl?.id,value:componentRef });\r\n // Subscribes to the events passed to the components\r\n if (handlers) {\r\n Object.entries(handlers).forEach(([event, handler]:any) => {\r\n (componentRef.instance[\r\n event\r\n ] as EventEmitter<any>)?.subscribe((response) => {\r\n handler(response);\r\n });\r\n });\r\n }\r\n }\r\n // invoke change detection\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n\r\n //invoke when file upload OR delete a file\r\n fileOnchangeEvent(){\r\n setTimeout(() => {\r\n this.loadDynamicComponents();\r\n }, 1000);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // load dynamic components if exist in form\r\n setTimeout(() => {\r\n this.setnumericvalues()\r\n this.onDynamicFormStateChange();\r\n this.loadDynamicComponents();\r\n }, 500);\r\n }\r\n\r\n removeWhiteSpaces(){\r\n this.form?.formSections?.forEach((section) =>{\r\n if(section.class) section.class = section.class.replace(/\\s/g, '');\r\n })\r\n }\r\n\r\n setHyperlinkComponentRoute() {\r\n this.form?.formSections?.forEach((formSection) => {\r\n formSection.fields.forEach((field) => {\r\n if (\r\n field.control === EFormControl.HYPERLINK &&\r\n field.hyperlink?.component\r\n ) {\r\n this.router.resetConfig([\r\n { path: 'hyperlink'+field.label, component: field.hyperlink.component },\r\n ...this.router.config,\r\n ]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n browserTabCloseEvent(event: boolean = false){\r\n this.formService.fieldFocusedOut = event;\r\n }\r\n\r\n /**\r\n * Listens any change in Dynamic Form component State\r\n */\r\n onDynamicFormStateChange() {\r\n utilities.onDynamicFormStateChange().subscribe((response) => {\r\n if (response.id && response.data) {\r\n const componentRefObj = this.componentsList.find((x)=>x.name === response.id )\r\n if (componentRefObj){\r\n Object.entries(response.data ?? {}).forEach(\r\n ([key, value]) => {\r\n componentRefObj.value.instance[key] = value;\r\n }\r\n );\r\n componentRefObj.value.instance.ngOnInit();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.form && this.form.formSections) {\r\n let totalFields: number = 0;\r\n let disabledFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.form.formSections.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((formField) => {\r\n let permissions: any = formField.permissions;\r\n let sectionPermissions: any = [];\r\n if (!permissions) sectionPermissions = formSection.permissions;\r\n if (!permissions) permissions = this.form.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (sectionPermissions && sectionPermissions.length > 0) {\r\n sectionPermissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formSection.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n formField.disabled = false;\r\n formSection.hidden = false;\r\n } else {\r\n formSection.accordionDisabled = true;\r\n formSection.disabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n });\r\n });\r\n } else if (permissions && permissions.length > 0){\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n formField.disabled = true;\r\n } else {\r\n formField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n formField.disabled = false;\r\n formField.hidden = false;\r\n } else {\r\n if (\r\n formField.permissions &&\r\n formField.permissions.length > 0\r\n ) {\r\n formSection.disabled = false;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n } else {\r\n formSection.disabled = true;\r\n formSection.accordionDisabled = true;\r\n formField.disabled = true;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (formField.disabled) {\r\n disabledFields++;\r\n }\r\n\r\n if (formField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.isFormDisabled = totalFields > 0 && totalFields === disabledFields;\r\n this.isFormHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n\r\n /**\r\n * Open IFrame in hyperlink Control\r\n */\r\n sectionDisabled(formSection:IFormSection){\r\n if( formSection.disabled ) {\r\n formSection.fields.map((field:IFormField) => {\r\n field.disabled=true;\r\n });\r\n return formSection;\r\n } else {\r\n return formSection;\r\n }\r\n }\r\n\r\n loadIFrame(formField: IFormField){\r\n this.handleClickEvent(formField);\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: 'Hyperlink',\r\n width:formField.hyperlink?.width ? formField.hyperlink.width : '90%',\r\n height:formField.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.hyperlink?.link, iFrameId:formField.label},\r\n });\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if(formField.onReturn){\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * open Dialog in hyperlink Control\r\n */\r\n hyperlinkDialog(formField: IFormField) {\r\n if (formField.hyperlink?.target === EHyperlink.BLANK) {\r\n var value = formField.hyperlink.params;\r\n window.open('hyperlink'+formField.label);\r\n } else if (formField.hyperlink?.target === EHyperlink.SELF) {\r\n this.router.navigate(['hyperlink'+formField.label], {\r\n queryParams: formField.hyperlink.params,\r\n });\r\n } else if (formField.hyperlink?.target === EHyperlink.DIALOG) {\r\n this.onClickEvent(formField);\r\n const dialog = this.dialogService.open(formField.hyperlink.component, {\r\n header: formField.hyperlink.data?.header ? formField.hyperlink.data?.header : 'HyperLink',\r\n width: formField.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.hyperlink.height ? formField.hyperlink.height : '80%',\r\n data: formField.hyperlink.params,\r\n });\r\n const componentName = formField.hyperlink?.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n dialog.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * open Iframe on Label\r\n */\r\n loadLabelControlIFrame(formField:any){\r\n const ref = this.dialogService.open(IframeComponent, {\r\n header: formField.label.name,\r\n width: formField.label.labelControl.hyperlink.width ? formField.hyperlink.width : '90%',\r\n height: formField.label.labelControl.hyperlink?.height ? formField.hyperlink.height : '80%',\r\n data: { value: formField.label.labelControl.hyperlink?.link ? formField.label.labelControl.hyperlink.link : '', iFrameId: formField.label.name },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n if (formField.onReturn) {\r\n formField.onReturn(res);\r\n }\r\n }\r\n });\r\n\r\n if (formField && formField.onClick) {\r\n formField.onClick();\r\n };\r\n }\r\n\r\n /**\r\n * find the required field in form\r\n */\r\n applyRequiredFieldValidation() {\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section) => {\r\n section.fields.forEach((field) => {\r\n if (field.validations && field.validations.length > 0) {\r\n field.validations.forEach((valid) => {\r\n if (valid.type === EValidator.REQUIRED) {\r\n field.requiredField = true;\r\n }\r\n })\r\n }\r\n })\r\n })\r\n }\r\n }\r\n\r\n setFileUrls(fileUrls: any){\r\n if(fileUrls && fileUrls.length > 0){\r\n this.fileUploadUrls = fileUrls;\r\n this.showfileUploadError = false;\r\n }\r\n }\r\n\r\n onSaveForm() {\r\n let validity = true;\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n if (!this.formService.checkValidity(formSection.fields)) {\r\n let field = formSection.fields.some((field) => field.requiredField && field.errorMessage && !field.value);\r\n if (validity && field) {\r\n this.alertService.error(\r\n 'Required fields are missing',\r\n 'REQUIRED FIELD'\r\n );\r\n } else{\r\n this.alertService.error(\r\n 'Some fields are invalid',\r\n 'INVALID FIELD'\r\n );\r\n }\r\n validity = false;\r\n }\r\n\r\n formSection.fields.forEach((field: any)=>{\r\n // set uploadFile URL in FormField in case of FILE_UPLOAD\r\n if (field.control === EFormControl.FILE_UPLOAD) {\r\n field.value = this.fileUploadUrls;\r\n \r\n if(field.validations && field.validations.length > 0){\r\n field.validations.forEach((x:any)=>{\r\n if(x.type === EValidator.REQUIRED && !field.value){\r\n this.showfileUploadError = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let selectedData = field.card.data.filter((x: any)=> x.selectedCard && x.selectedCard.length > 0);\r\n if(selectedData && selectedData.length > 0){\r\n field.card.data = selectedData;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n });\r\n if (validity) {\r\n let tempValue: any = []\r\n // set value as 1 or 0 in case of checkbox\r\n this.form.formSections?.forEach((formSection)=>{\r\n if (formSection.fields && validity) {\r\n formSection.fields.forEach((field: any) => {\r\n if ((field.value === '') || (field.value === undefined)) {\r\n field.value = null;\r\n }\r\n //convert date into time as string\r\n if(field.control === EFormControl.CALENDAR && field.timeOnly && field.saveAsString && !field.value?.toString()?.includes(\"AM\") && !field.value?.toString()?.includes(\"PM\")){\r\n field.value = this.datePipe.transform(field.value, 'hh:mm a');\r\n }\r\n // set value of autoComplete as strings\r\n if (field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue && field.value && field.value.length > 0) {\r\n const value = field.value.map((value: any)=> value[field.displayField])\r\n if(value && (value.toString()?.includes(\";\") || value.toString()?.includes(\",\"))){\r\n tempValue = value;\r\n field.value = value.toString().replaceAll(\",\",\";\");\r\n }\r\n }\r\n // convert multiSelect array into string\r\n if(field.control === EFormControl.MULTISELECT && field.value && Array.isArray(field.value) && field.saveAsString !==false){\r\n field.value = field.value?.toString();\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value ? 1 : 0;\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Save grid on formSave Button\r\n const saveAllGrid = document.getElementById('saveAllGridValues');\r\n const getBtns: any = this.el?.nativeElement?.getElementsByClassName('saveRow');\r\n if (saveAllGrid) {\r\n saveAllGrid.click();\r\n } else if (getBtns && getBtns.length > 0) {\r\n for (let btn of getBtns) {\r\n btn?.click();\r\n }\r\n }\r\n this.browserTabCloseEvent(false)\r\n this.saveForm.emit(this.form.formSections);\r\n this.form.formSections?.forEach((formSection) => {\r\n if (formSection.fields) {\r\n formSection.fields.forEach((field: any) => {\r\n if(field.control === EFormControl.AUTOCOMPLETE && !field.showAllValue) {\r\n field.value = tempValue.toString().replaceAll(\",\",\";\")?.split(\";\")?.map((val: any)=>({[field.displayField] : val}));\r\n }\r\n if (field.control === EFormControl.CHECKBOX) {\r\n field.value = field.value === 1 ? true : false;\r\n }\r\n\r\n if(field.control === EFormControl.CARD && field.card?.data?.length > 0){\r\n this.fileOnchangeEvent();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancelForm() {\r\n if(this.formService.fieldFocusedOut || this.gridService.columnFocusedOut){\r\n this.alertService.confirm({key: 'cancelButton', message: 'You have unsaved changes. Would you like to continue?'}).then((res)=>{\r\n if(res[0].detail === \"Yes\"){\r\n this.browserTabCloseEvent(false);\r\n this.gridService.columnFocusedOut = false;\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n })\r\n }else{\r\n this.cancelForm.emit(this.form.formSections);\r\n utilities.removeActiveIconClass();\r\n }\r\n }\r\n \r\n lookupClearValue(formField: IFormField){\r\n if(formField.value) {\r\n formField.value = ''; \r\n this.browserTabCloseEvent(true);\r\n }\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set calender width\r\n */\r\n setCalanderWidth() {\r\n const calanderElement = document.querySelectorAll(\".p-calendar\");\r\n let form: any = document.querySelector(\"form\");\r\n let width = form?.clientWidth;\r\n calanderElement?.forEach((calander:any) => {\r\n const calanderOfsetLeft = calander.offsetLeft;\r\n if(calanderOfsetLeft <= (width / 2)){\r\n calander.classList.add('open-right-side');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * set the dynamic dialog data\r\n */\r\n setDialogData(formField: IFormField, data: any): any {\r\n if (data && formField) {\r\n let value: any;\r\n data = utilities.objConvertToLower(data);\r\n let selection: string = '';\r\n if (formField.value && typeof formField.value === 'object') {\r\n if (\r\n formField.value &&\r\n formField.value.text &&\r\n formField.value.text.toString().trim()\r\n ) {\r\n selection = formField.value.text?.toString()?.trim();\r\n if(formField.displayField){\r\n value = formField.value?.value?.toString()?.trim();\r\n }\r\n }\r\n } else if (formField.value && formField.value.toString().trim()) {\r\n selection = formField.value?.toString()?.trim();\r\n }\r\n const componentName = data.component?.name;\r\n if(componentName){\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), componentName);\r\n }\r\n return this.dialogService.open(data.component, {\r\n ...data.data,\r\n data: {\r\n selection: selection,\r\n field: formField.field,\r\n value: value,\r\n valueField: data.data?.valueField,\r\n ...data.data.data,\r\n },\r\n });\r\n }\r\n }\r\n \r\n tabFocusEvent(formField: any) {\r\n const className = this.el.nativeElement.querySelector('.'+formField.field);\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n\r\n onClickEvent(formField: IFormField) {\r\n if (formField.onClick) {\r\n formField.onClick(formField);\r\n }\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl label\r\n */\r\n selectLookupLabel(formField: any) {\r\n if (\r\n formField.label &&\r\n formField.label.labelControl &&\r\n formField.label.labelControl.lookupControl\r\n ) {\r\n const ref: any = this.setDialogData(\r\n formField,\r\n formField.label.labelControl.lookupControl\r\n );\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(res){\r\n formField.value = utilities.setDialogResponse(\r\n formField,\r\n formField?.label.labelControl.lookupControl,\r\n res\r\n );\r\n }\r\n this.onFocusOutEvent(formField);\r\n if (formField.label.onReturn) formField.label.onReturn(formField.value);\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(formField: IFormField) {\r\n if(formField.lookupControl) {\r\n this.lookupFocusOut = true;\r\n let value = formField.value;\r\n const ref = this.setDialogData(formField, formField.lookupControl);\r\n ref.onClose.subscribe(\r\n (res: any) => {\r\n if(formField.field){\r\n document.getElementById(formField.field)?.focus();\r\n }\r\n if(res){\r\n formField.value = utilities.setDialogResponse(formField, formField.lookupControl, res);\r\n this.lookupFocusOut = false;\r\n this.onFocusOutEvent(formField);\r\n if (formField.onReturn) formField.onReturn(formField.value, res);\r\n }\r\n const formFieldValue = typeof formField.value === 'object' ? formField.value.text : formField.value;\r\n value = typeof value === 'object' ? value.text : value;\r\n if (formFieldValue !== value) {\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n },\r\n ({ error }: any) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * onClick event invoked && open Dialog on lookupControl field/label\r\n */\r\n handleClickEvent(formField: IFormField) {\r\n this.onClickEvent(formField);\r\n\r\n if (formField && formField.lookupControl) {\r\n this.selectLookupLabel(formField);\r\n this.selectLookupField(formField);\r\n }\r\n }\r\n\r\n /**\r\n * set Calender Date Format && set Date Minute interval\r\n */\r\n setCalenderDate(formField: IFormField){\r\n if (formField.control === EFormControl.CALENDAR) {\r\n // convert time into date format\r\n if(formField.timeOnly && (formField.value?.toString().includes(\"AM\") || formField.value?.toString().includes(\"PM\"))){\r\n formField.value = utilities.setTimeInDate(formField.value);\r\n }\r\n if((formField.showTime || formField.timeOnly) && formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(formField.value));\r\n }else if((formField.showTime || formField.timeOnly) && !formField.value && formField.minutesInterval){\r\n formField.value = new Date(utilities.setMinutesInterval(new Date()));\r\n }\r\n this.calenderPreviousValue = formField.value;\r\n }\r\n }\r\n calendarChangeValue(formField: any){\r\n if(formField.value !== formField.previousValue){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.previousValue = formField.value;\r\n formField.onChange(formField);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * invoked section Clicked event\r\n */\r\n clickedSection(section:IFormSection){\r\n this.sectionClickedEvent.emit(section);\r\n }\r\n\r\n /**\r\n * open dialog in Note_Field conrtrol\r\n */\r\n handleNoteFieldDialog(formfield: IFormField) {\r\n const dialogRef = this.dialogService.open(NotesComponent, {\r\n header: formfield.label as string,\r\n width: '50%',\r\n data: {\r\n value: formfield.value,\r\n disabledText: formfield.disabledText,\r\n },\r\n });\r\n\r\n dialogRef.onClose.subscribe(\r\n (data: any) => {\r\n if (data && formfield.onReturn) {\r\n formfield.onReturn(data);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n setClassName(formField: IFormField): string {\r\n if (formField.hidden) return ' hidden';\r\n else return '';\r\n }\r\n\r\n autoSearch(event: any, formField: any) {\r\n if(formField && event){\r\n formField.onReturn(event.query, formField);\r\n }\r\n }\r\n\r\n /**\r\n * invoked onFocusOut Event\r\n */\r\n onFocusOutEvent(formField: IFormField) {\r\n let record: any = {};\r\n this.form.formSections?.forEach((section)=>{\r\n section.fields.forEach((formField)=>{\r\n if(formField.field){\r\n record[formField.field] = formField.value;\r\n }\r\n });\r\n });\r\n utilities.setHyperlinkParamValue(record, this.form);\r\n this.formService.checkValidity([formField]);\r\n if (formField && formField.onFocusOut && this.lookupFocusOut === false) {\r\n formField.onFocusOut(formField);\r\n }\r\n }\r\n\r\n onBackSpaceEvent(formField:IFormField){\r\n if(typeof(formField.value)==='object'){\r\n formField.value.text = formField.value.text.substring(0,formField.value.text.length-1);\r\n if(formField.value.text.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n if(formField.value && formField.value.length===1){\r\n formField.value=undefined;\r\n this.formService.checkValidity([formField]);\r\n }\r\n }\r\n\r\n /**\r\n * clear the dropdown value when click on x\r\n */\r\n onClearValue(formField: IFormField, event: any) {\r\n this.formService.checkValidity([formField]);\r\n this.onChangeEvent(formField);\r\n this.dropDownChangeEvent.emit(formField);\r\n if (!event.value) {\r\n this.onFocusOutEvent(formField);\r\n }\r\n }\r\n\r\n clearDropdownValue(formField:any){\r\n this.onClickEvent(formField);\r\n }\r\n\r\n /** \r\n * Invoke onChange Event when Value Changed\r\n */\r\n onChangeEvent(formField: IFormField){\r\n this.browserTabCloseEvent(true);\r\n if(formField.onChange){\r\n formField.onChange(formField);\r\n }\r\n }\r\n\r\n typeOf(value: any) {\r\n return typeof value;\r\n }\r\n\r\n /**\r\n * convert unSafe link into safe link\r\n */\r\n sanitizeUrl(url: string){\r\n let linkUrl:any = url; \r\n if(linkUrl){\r\n linkUrl = this.sanitizer.bypassSecurityTrustUrl(linkUrl);\r\n }\r\n return linkUrl;\r\n }\r\n\r\n selectedCardClickEvent(data: any){\r\n if (this.form && this.form.formSections && this.form.formSections.length > 0) {\r\n this.form.formSections.forEach((section: any)=>{\r\n section.fields.forEach((field: any)=>{\r\n if(field.control === EFormControl.CARD){\r\n if(field.card && field.card.data?.length > 0){\r\n let obj = field.card.data[data.index];\r\n if(obj) {\r\n if(obj.selectedCard){\r\n delete obj.selectedCard;\r\n } else {\r\n obj['selectedCard'] = 'card-active';\r\n }\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n if(data.selectedCard){\r\n data['selectedCard'] = '';\r\n } else {\r\n data['selectedCard'] = 'card-active';\r\n }\r\n }\r\n\r\n}\r\n\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { ISelectItem } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss']\r\n})\r\nexport class DropdownComponent implements OnChanges {\r\n @Input() options: ISelectItem[] = [];\r\n @Input() value: ISelectItem;\r\n @Output() valueChange: EventEmitter<string> = new EventEmitter();\r\n public selectedOption: any;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.options.length) {\r\n if (this.value) {\r\n this.selectedOption = changes['value'].currentValue.toString().trim();\r\n } else {\r\n this.selectedOption = this.options[0];\r\n this.valueChange.emit(this.selectedOption.value);\r\n }\r\n }\r\n }\r\n\r\n handleValueChange(event: { value: string }) {\r\n this.valueChange.emit(event.value);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.css']\r\n})\r\nexport class GalleryComponent {\r\n \r\n @Input() galleryImage: any;\r\n @Input() width: string;\r\n\r\n responsiveOptions: any[] = [\r\n {\r\n breakpoint: '1024px',\r\n numVisible: 5\r\n },\r\n {\r\n breakpoint: '768px',\r\n numVisible: 3\r\n },\r\n {\r\n breakpoint: '560px',\r\n numVisible: 1\r\n }\r\n ];\r\n\r\n constructor() { }\r\n}","import { Directive, Input, HostListener } from '@angular/core';\r\nimport { Table } from 'primeng/table';\r\n\r\n@Directive({\r\n selector: '[pAddRow]',\r\n})\r\nexport class AddRowDirective {\r\n @Input() table: Table;\r\n @Input() newRow: any;\r\n @Input() id: string;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: Event) {\r\n // Insert a new row\r\n if (this.table && this.table.value) {\r\n this.table.value.unshift({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n }\r\n\r\n // Set the new row in edit mode\r\n this.table.initRowEdit({\r\n ...this.newRow,\r\n [this.id]: Date.now(),\r\n isNew: true,\r\n });\r\n\r\n event.preventDefault();\r\n }\r\n}\r\n","import { IMenuFilter, GridFilterControlType } from '../../../models/grid.model';\r\n\r\nexport const MenuFilters: IMenuFilter = {\r\n [GridFilterControlType.INPUT]: [\r\n { label: 'Starts with', value: 'startsWith' },\r\n { label: 'Contains', value: 'contains' },\r\n { label: 'Not contains', value: 'notContains' },\r\n { label: 'Ends With', value: 'endsWith' },\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n ],\r\n [GridFilterControlType.NUMERICINPUT]: [\r\n { label: 'Equals', value: 'equals' },\r\n { label: 'Not equals', value: 'notEquals' },\r\n { label: 'Less than', value: 'lt' },\r\n { label: 'Less than or equal to', value: 'lte' },\r\n { label: 'Greater than', value: 'gt' },\r\n { label: 'Greater than or equal to', value: 'gte' },\r\n ],\r\n [GridFilterControlType.CALENDAR]: [\r\n { label: 'Date is', value: 'dateIs' },\r\n { label: 'Date is not', value: 'dateIsNot' },\r\n { label: 'Date is before', value: 'dateBefore' },\r\n { label: 'Date is after', value: 'dateAfter' },\r\n ],\r\n};\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { IGlobalFilter, ISelectItem, MenuFilterControls } from '../../../models/grid.model';\r\nimport { MenuFilters } from '../../base/grid/grid.constant';\r\n\r\n@Component({\r\n selector: 'se-filter-menu',\r\n templateUrl: './filter-menu.component.html',\r\n styleUrls: ['./filter-menu.component.scss'],\r\n})\r\nexport class AppFilterMenuComponent implements OnInit {\r\n public isMenuOpen: boolean = false;\r\n public filterOptions: ISelectItem[] = [];\r\n\r\n @Input() globalFilter: IGlobalFilter;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.filterOptions = MenuFilters[this.globalFilter.type as MenuFilterControls];\r\n }\r\n\r\n toggleMenu() {\r\n this.isMenuOpen = !this.isMenuOpen;\r\n }\r\n\r\n handleFilterSelection({ value }: ISelectItem) {\r\n this.isMenuOpen = false;\r\n this.globalFilter.matchMode = value;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { IMenu } from '../../../models/menu.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'se-menu-bar',\r\n templateUrl: './menu-bar.component.html',\r\n styleUrls: ['./menu-bar.component.scss'],\r\n})\r\nexport class MenuBarComponent implements OnInit {\r\n @Input() hiddenPanelMenu: boolean = true;\r\n @Input() toolTip: string;\r\n @Input() menuBackColor: string;\r\n @Input() menuItems: IMenu[];\r\n @Input() menuFooter: string;\r\n @Input() menuTitle: string;\r\n @Output() onClickEvent: EventEmitter<any> = new EventEmitter();\r\n public menuBarItems: MenuItem[] = [];\r\n toggleMenu: boolean = false;\r\n roles: string[] = [];\r\n isMenubarHidden: boolean = false;\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private cookieService: CookieService,\r\n public router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n const toggleMenu = localStorage.getItem('toggleMenu');\r\n const cookieValue = this.cookieService.get('toggleMenu'); \r\n\r\n if (toggleMenu) {\r\n this.toggleMenu = JSON.parse(toggleMenu);\r\n }else if(cookieValue){\r\n this.toggleMenu = JSON.parse(cookieValue);\r\n }\r\n\r\n this.roles = this.authService.getUserRoles();\r\n\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n\r\n this.menuBarItems = this.menuItems.map((x) => ({\r\n ...x,\r\n style: x.hidden ? { display: 'none' } : x.style,\r\n }));\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n this.cookieService.set( 'toggleMenu', JSON.stringify(this.toggleMenu)); \r\n }\r\n\r\n clickEvent() {\r\n this.onClickEvent.emit();\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.menuItems) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.menuItems.forEach((menu) => {\r\n if (menu.items) {\r\n menu.items.forEach((item) => {\r\n let permissions: any = item.permissions;\r\n if (!permissions) permissions = menu.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (permission.type === EPermissionType.VIEW) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } \r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n item.style = { display: 'none' };\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n // if all items of menu is hidden then hide menu as well\r\n menu.hidden =\r\n menu.items.length === menu.items.filter((x) => x.hidden).length;\r\n }\r\n });\r\n\r\n this.isMenubarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n}\r\n\r\n","import { Type } from '@angular/core';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport const ESideBar = {\r\n LEFT: 'left-sidebar',\r\n RIGHT: 'right-sidebar',\r\n};\r\n\r\nexport interface ISidebar {\r\n icon: string;\r\n action?: string;\r\n section: string;\r\n component?: Type<any>;\r\n [key: string]: any;\r\n data?: IData;\r\n onReturn?: (data: any) => any;\r\n onClick?: (value: any) => void;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n id?: string;\r\n tooltip?: string\r\n iFrame?: IFrame;\r\n linkId?:string;\r\n params?:any;\r\n}\r\n\r\nexport enum ESidebarAction {\r\n NAVIGATION = 'navigation',\r\n OPENDIALOG = 'dialog',\r\n IFRAME = '_iframe',\r\n}\r\n\r\nexport interface IFrame {\r\n link?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface IData {\r\n header?: string;\r\n width?: string;\r\n height?: string;\r\n data?: any;\r\n scrollable?: boolean;\r\n}\r\n","import { Component, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ESidebarAction, ISidebar } from '../../../models/sidebar.model';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { HyperlinkService } from '../../../services/hyperlink.service';\r\nimport { PageLoggerService } from '../../../services/page-logger.service';\r\nimport { IframeComponent } from '../iframe/iframe.component';\r\n@Component({\r\n selector: 'se-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent implements OnInit {\r\n toggleMenu: boolean = false;\r\n openDialogs: any = [];\r\n @Input() navHidden: boolean = false;\r\n @Input() collapseSidebar: boolean = false;\r\n @Input() menuTitle: string;\r\n @Input() set sidebarItems(newSidebarItems: ISidebar[]) {\r\n if (newSidebarItems) {\r\n this.sidebarItemsList = newSidebarItems;\r\n this.initializeSideBar();\r\n }\r\n }\r\n\r\n public sidebarItemsList: ISidebar[] = [];\r\n public menuItems: MenuItem[] = [];\r\n roles: string[] = [];\r\n isSidebarHidden: boolean = false;\r\n\r\n constructor(\r\n private instance: Renderer2,\r\n private authService: AuthenticationService,\r\n public dialogService: DialogService,\r\n private router: Router,\r\n private pageLoggerService: PageLoggerService,\r\n private hyperlinkService: HyperlinkService\r\n ) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n initializeSideBar() {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions\r\n this.applyUserPermissions();\r\n this.menuItems = this.sidebarItemsList.map((x: any) => ({\r\n label: x.label,\r\n icon: x.icon,\r\n id: x.id,\r\n section: x.section,\r\n expanded: x.expanded,\r\n action: x.action,\r\n items: x.items && x.items.length > 0 ? this.setMenuItems(x) : [],\r\n title: this.setMenuTitle(x),\r\n command: ({ item }) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(x, item);\r\n } else if (x.action && x.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(x, item);\r\n } else if (x.action && x.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(x, item);\r\n } else {\r\n this.handleActiveItem(item);\r\n }\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: x.hidden ? 'none' : '',\r\n },\r\n onClick: x.onClick,\r\n onReturn: x.onReturn,\r\n disabled: x.disabled,\r\n }));\r\n }\r\n\r\n setMenuTitle(x: any): string {\r\n return x.tooltip ? x.tooltip : !x.label ? x.section : '';\r\n }\r\n\r\n setMenuItems(x: ISidebar): any {\r\n return x.items.map((menu: any) => ({\r\n label: menu.label,\r\n icon: menu.icon,\r\n id: menu.id,\r\n section: menu.section,\r\n expanded: menu.expanded,\r\n action: menu.action,\r\n title: this.setMenuTitle(x),\r\n command: ({ item }: any) => {\r\n if (x.action && x.action === ESidebarAction.NAVIGATION) {\r\n this.navigateToSection(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.OPENDIALOG) {\r\n this.openDialog(menu, item);\r\n } else if (menu.action && menu.action === ESidebarAction.IFRAME) {\r\n this.loadIFrame(menu, x);\r\n }\r\n this.handleActiveItem(item);\r\n },\r\n style: {\r\n borderBottom: '', // '1px solid #e9ecef',\r\n display: menu.hidden ? 'none' : '',\r\n },\r\n onClick: menu.onClick,\r\n onReturn: menu.onReturn,\r\n disabled: menu.disabled,\r\n }))\r\n }\r\n\r\n loadIFrame(menu: ISidebar, item: any) {\r\n if (menu) {\r\n const dialogRef = this.dialogService.open(IframeComponent, {\r\n header: menu.section,\r\n width: menu.iFrame?.width ? menu.iFrame.width : '90%',\r\n height: menu.iFrame?.height ? menu.iFrame.height : '80%',\r\n data: { value: menu.iFrame?.link, iFrameId: menu.section },\r\n });\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), 'IframeComponent');\r\n\r\n this.handleActiveItem(item);\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleSidebar() {\r\n this.toggleMenu = !this.toggleMenu;\r\n localStorage.setItem('toggleMenu', JSON.stringify(this.toggleMenu));\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.sidebarItemsList) {\r\n let totalItems: number = 0;\r\n let hiddenItems: number = 0;\r\n\r\n this.sidebarItemsList.forEach((item, index) => {\r\n let permissions: any = item.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n item.id = index.toString();\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n item.disabled = true;\r\n } else {\r\n item.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n item.disabled = false;\r\n item.hidden = false;\r\n } else {\r\n item.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalItems++;\r\n\r\n if (item.hidden) {\r\n hiddenItems++;\r\n }\r\n });\r\n\r\n this.isSidebarHidden = totalItems > 0 && totalItems === hiddenItems;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param menu\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n openDialog(menu: ISidebar, item: any): void {\r\n const menuData:any = menu.data ? menu.data : menu;\r\n if(menuData.scrollable == false) menuData.styleClass = \"small-model\";\r\n if (menu.component) {\r\n const dialogRef = this.dialogService.open(menu.component, menuData);\r\n this.pageLoggerService.savePageLoggerInfo(this.router.url?.substring(1), menu.component?.name);\r\n this.openDialogs.push(dialogRef);\r\n this.handleActiveItem(item);\r\n\r\n if (this.openDialogs && this.openDialogs.length > 1) {\r\n this.openDialogs[0].close();\r\n this.openDialogs.shift();\r\n }\r\n\r\n dialogRef.onClose.subscribe((data: any) => {\r\n this.handleActiveItem(item, false);\r\n if (data && menu.onReturn) {\r\n menu.onReturn(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @ param x\r\n * @ param item\r\n * Passes the sidebar array to contain all ISidebar property like\r\n * Passes the event of the menu\r\n */\r\n\r\n navigateToSection(x: ISidebar, item: any): void {\r\n this.instance?.selectRootElement(`.${x.section?.replace(/\\s/g, \"\")}`, true)?.scrollIntoView({ behavior: 'smooth' });\r\n this.handleActiveItem(item);\r\n }\r\n\r\n /**\r\n *\r\n * @param item\r\n * Passes the event of the menu\r\n */\r\n handleActiveItem({ icon }: any, closeDialog: boolean = true): void {\r\n this.menuItems = this.menuItems.map((x) =>\r\n x.icon === icon && closeDialog\r\n ? { ...x, styleClass: 'active-icon' }\r\n : {\r\n ...x,\r\n styleClass: '',\r\n style: {\r\n borderBottom: '1px solid #e9ecef',\r\n display: x.style?.display === 'none' ? 'none' : '',\r\n },\r\n }\r\n );\r\n }\r\n\r\n clickedMenu(menu: MenuItem[]) {\r\n menu.map((item: any) => {\r\n const matchedItem: any = this.sidebarItemsList.find((x) => x.id == item.id);\r\n if (\r\n item.styleClass === 'active-icon' &&\r\n matchedItem &&\r\n matchedItem.onClick\r\n ) {\r\n this.hyperlinkService\r\n .addHyperlinks(matchedItem)\r\n .then((response: any) => {\r\n if (matchedItem.linkId) {\r\n this.hyperlinkService.setSidebarLink(\r\n response,\r\n this.sidebarItemsList\r\n );\r\n } else {\r\n matchedItem.onClick(item);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n}","import { Component, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { IHeader } from '../../../models/header.model';\r\nimport { EFormControl } from '../../../models/form.model';\r\nimport { AuthenticationService } from '../../../services/authentication.service';\r\nimport { EPermissionType, IPermission } from '../../../models/user-info.model';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'se-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnChanges {\r\n @Input() headers: IHeader;\r\n\r\n dynamicCase = EFormControl;\r\n roles: string[] = [];\r\n isHeaderHidden: boolean = false;\r\n\r\n constructor(private authService: AuthenticationService, public datepipe: DatePipe) {}\r\n\r\n ngOnInit(): void {\r\n this.roles = this.authService.getUserRoles();\r\n // apply user role permissions on form\r\n this.applyUserPermissions();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if(this.headers && this.headers.fields){\r\n this.headers.fields.forEach((x) => {\r\n if (!x.showTime && !x.timeOnly && x.value?.toString().match(/[0-9]+-\\s?/g)) {\r\n x.value = this.datepipe.transform(x.value, 'yyyy-MM-dd');\r\n }\r\n if (x.value?.toString().includes(':') && x.timeOnly) {\r\n const index = x.value.indexOf(':');\r\n const time = x.value.substring(index - 2, index + 6);\r\n x.value = time;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // apply user role permissions\r\n applyUserPermissions() {\r\n if (this.headers) {\r\n let totalFields: number = 0;\r\n let hiddenFields: number = 0;\r\n\r\n this.headers.fields.forEach((headerField) => {\r\n let permissions: any = headerField.permissions;\r\n if (!permissions) permissions = this.headers.permissions;\r\n let hasValidEditPermission = false;\r\n\r\n if (permissions && permissions.length > 0) {\r\n permissions.forEach((permission: any) => {\r\n let isValid: boolean = false;\r\n if (permission.roles && permission.roles.length > 0) {\r\n permission.roles.forEach((role: any) => {\r\n if (!isValid && this.roles && this.roles.includes(role)) {\r\n isValid = true;\r\n }\r\n });\r\n if (\r\n permission.type === EPermissionType.VIEW &&\r\n !hasValidEditPermission\r\n ) {\r\n if (isValid) {\r\n headerField.disabled = true;\r\n } else {\r\n headerField.hidden = true;\r\n }\r\n } else if (permission.type === EPermissionType.EDIT) {\r\n if (isValid) {\r\n hasValidEditPermission = true;\r\n headerField.disabled = false;\r\n headerField.hidden = false;\r\n } else {\r\n headerField.disabled = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n totalFields++;\r\n\r\n if (headerField.hidden) {\r\n hiddenFields++;\r\n }\r\n });\r\n\r\n this.isHeaderHidden = totalFields > 0 && totalFields === hiddenFields;\r\n }\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n loaderState = new Subject<any>();\r\n\r\n constructor() {}\r\n\r\n /**\r\n * Shows loader\r\n */\r\n showLoader(isDarkBackground = true) {\r\n this.loaderState.next({ loading: true, isDarkBackground });\r\n }\r\n\r\n /**\r\n * Hides loader\r\n */\r\n hideLoader() {\r\n this.loaderState.next({ loading: false });\r\n }\r\n\r\n /**\r\n * Fires on loader state changed.\r\n * @returns {Observable<any>}\r\n */\r\n onLoaderStateChange(): Observable<any> {\r\n return this.loaderState.asObservable();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoaderService } from '../../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'se-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent implements OnInit, OnDestroy {\r\n isLoading = false;\r\n isDarkBackground = true;\r\n loaderSubscription$: Subscription = new Subscription();\r\n\r\n constructor(\r\n public loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loaderSubscription$ = this.loaderService\r\n .onLoaderStateChange()\r\n .subscribe((state: any) => {\r\n this.isLoading = state.loading ? true : false;\r\n this.isDarkBackground = state.isDarkBackground ? true : false;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.loaderSubscription$) {\r\n this.loaderSubscription$.unsubscribe();\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IFormField } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { RequestService } from '../../../services/request.service';\r\n@Component({\r\n selector: 'se-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @Input() acceptFileTypes: any;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() fields: any;\r\n @Output() fileUrl: EventEmitter<any> = new EventEmitter();\r\n @Output() uploadFileOnReturn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n uploadFile(files: any) {\r\n let fileData = new FormData(); \r\n let chooseFile:boolean = false;\r\n for (let i = 0; i < files.length; i++) {\r\n if (files[i]) {\r\n chooseFile = true;\r\n fileData.append(files[i].name, files[i]);\r\n }\r\n }\r\n\r\n if (fileData && chooseFile) {\r\n if (this.fields && this.fields.uniqueKey?.length > 0) {\r\n fileData.append('uniqueKey', this.fields?.uniqueKey);\r\n } else if (this.fields && this.fields.azureContainer?.length > 0) {\r\n fileData.append('azureContainer', this.fields?.azureContainer);\r\n }\r\n this.requestService.get<any[], any>('/Upload', fileData).subscribe(\r\n (data: any) => {\r\n if (data) {\r\n this.alertService.success('File Upload Successfully.');\r\n if (this.fields?.onReturn) {\r\n this.fields.onReturn(data.results);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n this.fileUrl.emit(data.results);\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n if (this.fields.onReturn) {\r\n this.fields.onReturn(error);\r\n this.uploadFileOnReturn.emit();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n onClickEvent() {\r\n if (this.fields && this.fields.onClick) {\r\n this.fields.onClick();\r\n console.log('this.fields: ', this.fields);\r\n }\r\n } \r\n}\r\n","import { Component, EventEmitter, OnInit, Optional, Output } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { EValidator, IDynamicForm } from '../../../models/form.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { FormService } from '../../../services/form.service';\r\nimport { RequestService } from '../../../services/request.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\n\r\n@Component({\r\n selector: 'se-caption',\r\n templateUrl: './caption.component.html',\r\n styleUrls: ['./caption.component.scss'],\r\n})\r\nexport class CaptionComponent implements OnInit {\r\n dynamicForm: IDynamicForm;\r\n id: number;\r\n caption: string;\r\n\r\n constructor(\r\n private formService: FormService,\r\n private requestService: RequestService,\r\n private alertService: AlertService,\r\n @Optional() public config: DynamicDialogConfig,\r\n @Optional() public ref: DynamicDialogRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.config.data) {\r\n this.id = this.config.data.id;\r\n this.caption = this.config.data.caption;\r\n }\r\n this.initilizeForm();\r\n }\r\n\r\n initilizeForm() {\r\n this.dynamicForm = {\r\n formSections: [\r\n {\r\n fields: [\r\n this.formService.addTextbox({\r\n field: 'fileCaption',\r\n label: 'Caption',\r\n value: this.caption,\r\n column: 12,\r\n validations: [{ type: EValidator.REQUIRED }]\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n saveForm(formFiels: any) {\r\n this.requestService\r\n .get<any[], any>('/AzureUpload/UpdateCaption', {\r\n Id: this.id,\r\n fileCaption: utilities.getFormFieldValue(\r\n this.dynamicForm,\r\n 'fileCaption'\r\n ),\r\n })\r\n .subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.alertService.success('Caption added successfully.');\r\n this.ref.close(response);\r\n }\r\n },\r\n ({ error }) => {\r\n this.ref.close();\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n cancelForm(event: any) {\r\n console.log('CancelForm: ', event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IDynamicCard, IDynamicForm, IViewCardProp } from '../../../models/form.model';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { GridService } from '../../../services/grid.service';\r\nimport * as utilities from '../../../services/utilities.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'se-card',\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n})\r\nexport class CardComponent implements OnInit {\r\n @Output() selectedCard: EventEmitter<any> = new EventEmitter();\r\n @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();\r\n @Input() data: any = [];\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n @Input() card: any;\r\n dynamicForm: IDynamicForm;\r\n showFiles: boolean = false;\r\n displayCardInfo: IViewCardProp;\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private gridService: GridService,\r\n private confirmationService: ConfirmationService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnChanges() {\r\n if (this.card) {\r\n let { data, formSections, cardInfo }: any = this.card;\r\n if(cardInfo && Object.keys(cardInfo).length){\r\n this.displayCardInfo = cardInfo;\r\n data = this.gridService.setDataFields(data);\r\n const newArr = [];\r\n data?.forEach((record)=>{\r\n if(!Object.keys(record)?.includes('azurecontainerid')){\r\n newArr.push({...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()]});\r\n } else {\r\n newArr.push(record);\r\n }\r\n });\r\n this.data = newArr;\r\n } else {\r\n this.data = this.gridService.setDataFields(data);\r\n }\r\n this.dynamicForm = { formSections };\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n this.setCardPropValue('allowDownload');\r\n this.setCardPropValue('allowDelete');\r\n this.setCardPropValue('allowEditableCaption');\r\n //files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);\r\n /** In case of when we are using this component for stand alone then if formSection is exist in\r\n the this.card and then add in the data array.\r\n */\r\n if (this.data) {\r\n this.data.forEach((x: any) => {\r\n if (!x.dynamicform) {\r\n x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));\r\n }\r\n utilities.setCardFieldsData(x);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // set the default value of allowDelete, allowEditableCaption and allowDownload\r\n setCardPropValue(prop:string){\r\n if(!this.card[prop]?.toString()?.length) {\r\n this.card[prop]= true;\r\n }\r\n }\r\n\r\n dragAndDrop(event: any) {\r\n moveItemInArray(this.data, event.previousIndex, event.currentIndex);\r\n event.item?.element?.nativeElement;\r\n this.card.data = this.data;\r\n this.card['change'] = true;\r\n if (this.card && this.card.onSort) {\r\n this.card.onSort(this.data);\r\n }\r\n }\r\n\r\n deleteImage(event: any) {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure that you want to delete this Image?',\r\n header: 'Delete Confirmation',\r\n icon: 'pi pi-exclamation-triangle',\r\n key: 'handlecolumnActions',\r\n accept: () => {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex(\r\n (i) => i.blobfileurl === event.blobfileurl\r\n );\r\n let obj = arr[index];\r\n arr.splice(index, 1);\r\n this.data = [...arr];\r\n\r\n if (this.card && this.card.onDelete) {\r\n obj = this.replacePropName(obj);\r\n this.card.onDelete(obj);\r\n this.onDeleteCard.emit();\r\n }\r\n }\r\n this.confirmationService.close();\r\n },\r\n reject: () => {\r\n this.confirmationService.close();\r\n },\r\n });\r\n }\r\n\r\n replacePropName(cardInfo:any){\r\n if(this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0){\r\n const cardProp = {...this.displayCardInfo};\r\n const obj = {...cardInfo,[cardProp.url]: cardInfo.blobfileurl,[cardProp.caption]: cardInfo.filecaption,[cardProp.extension]: cardInfo.fileextension};\r\n return obj;\r\n } else {\r\n return cardInfo;\r\n }\r\n }\r\n\r\n saveCaption(event: any) {\r\n if (this.data && event) {\r\n let arr = [...this.data];\r\n const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);\r\n let obj = arr[index];\r\n if (index !== -1) {\r\n obj.filecaption = event.caption;\r\n arr.splice(index, 1, obj);\r\n this.card.data = arr;\r\n this.card['change'] = true;\r\n }\r\n if (this.card && this.card?.onCaptionSave) {\r\n obj = this.replacePropName(obj);\r\n this.card.onCaptionSave(obj);\r\n }\r\n }\r\n }\r\n\r\n onClickEvent(data: any, index: number){\r\n data['index'] = index;\r\n this.selectedCard.emit(data);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ESelectFileType } from '../../../models/form.model';\r\n\r\n@Component({\r\n selector: 'se-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n})\r\nexport class fileComponent implements OnInit {\r\n @Input() url: string = '';\r\n @Input() caption: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '200px';\r\n @Output() onDeleteEvent: EventEmitter<any> = new EventEmitter();\r\n @Output() onSaveEvent: EventEmitter<any> = new EventEmitter();\r\n @Input() id: number;\r\n @Input() name: string = '';\r\n @Input() type: any;\r\n @Input() allowDownloadFile: boolean = true;\r\n @Input() allowEditableCaption: boolean = true;\r\n @Input() allowDeleteFile: boolean = true;\r\n editableCaption: boolean = false;\r\n\r\n constructor(private confirmationService: ConfirmationService) {}\r\n\r\n ngOnInit(): void {\r\n this.checkFileExtension();\r\n }\r\n\r\n checkFileExtension() {\r\n switch (this.type) {\r\n case 'png':\r\n case 'jpeg':\r\n case 'jfif':\r\n case 'jpg': {\r\n this.type = '.image';\r\n break;\r\n }\r\n case 'xlsx':\r\n case 'xls':\r\n case 'xlsm':\r\n case 'txt': {\r\n this.type = ESelectFileType.EXCEL;\r\n break;\r\n }\r\n case 'pdf':\r\n case 'html': {\r\n this.type = ESelectFileType.PDF;\r\n break;\r\n }\r\n case 'doc':\r\n case 'docx': {\r\n this.type = ESelectFileType.DOCUMENT;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n downloadFile(url: string) {\r\n const link: any = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.click();\r\n }\r\n\r\n captionClickEvent() {\r\n if (this.allowEditableCaption) {\r\n this.editableCaption = true;\r\n }\r\n }\r\n\r\n captionSave(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n if(caption !== null){\r\n this.caption = caption;\r\n this.editableCaption = false;\r\n this.onSaveEvent.emit(obj);\r\n }\r\n }\r\n\r\n onDeleteFile(\r\n id: number,\r\n name: string,\r\n url: string,\r\n type: any,\r\n caption: string\r\n ) {\r\n let obj = {\r\n id: id,\r\n name: name,\r\n blobfileurl: url,\r\n type: type,\r\n caption: caption,\r\n };\r\n this.onDeleteEvent.emit(obj);\r\n }\r\n\r\n cancel() {\r\n this.editableCaption = false;\r\n }\r\n}\r\n","import { Component, Input, OnInit, Optional } from '@angular/core';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { EFormControl, IDynamicForm, IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport * as utilities from '../../../../../services/utilities.service';\r\n\r\n\r\n@Component({\r\n selector: 'se-report-filter',\r\n templateUrl: './report-filter.component.html',\r\n styleUrls: ['./report-filter.component.scss']\r\n})\r\nexport class ReportFilterComponent implements OnInit {\r\n dynamicForm:IDynamicForm;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(@Optional() public config: DynamicDialogConfig,private requestService: RequestService, private alertService: AlertService) { }\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n \r\n }\r\n initializeForm(){\r\n this.dynamicForm = {\r\n formSections:[\r\n {\r\n fields: [\r\n ...this.formFields,\r\n {\r\n label: 'Download Report',\r\n control: EFormControl.ADD_BUTTON,\r\n hidden: this.config?.data?.hideGenerateReportBtn,\r\n onClick: () => {\r\n this.downloadReport();\r\n },\r\n }\r\n ]\r\n }\r\n ]\r\n \r\n }\r\n }\r\n createDynamicFields() {\r\n this.requestService.getOne<Response, any>('/ReportConfig/ById',this.config.data?.Id).subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n this.setParamFieldValue();\r\n this.initializeForm();\r\n // set dropdown data based on matched field.\r\n this.setDropDownData(reportJson);\r\n },\r\n (error) => {\r\n this.initializeForm();\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n setParamFieldValue(){\r\n if(this.config.data && this.config.data.param?.length > 0){\r\n this.config.data.param.forEach((param: any)=>{\r\n this.formFields.forEach((field)=>{\r\n const matchKey = Object.keys(param)?.find((key)=> key?.toLowerCase() === field.field?.toLowerCase());\r\n if(matchKey && matchKey.length > 0){\r\n field.value = param[matchKey];\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n setDropDownData(reportJson: any) {\r\n reportJson.Parameters?.forEach((record: any) => {\r\n if(record.isuniquekey){\r\n this.requestService.get<any[], any>('/Data/Fetch', {\r\n uniqueKey: record.isuniquekey,\r\n filters: []\r\n }).subscribe((response:any)=>{\r\n utilities.setFormPropValues(this.dynamicForm, record.paramname, [\r\n { name: 'data', value: response.records }, \r\n ]); \r\n },(error) => {\r\n this.alertService.apiError(error);\r\n })\r\n }\r\n });\r\n }\r\n getFilters(){\r\n let filters: any = [];\r\n this.dynamicForm?.formSections?.forEach((section)=>{\r\n section.fields?.forEach((field)=>{\r\n if(field && field.value){\r\n filters.push({field: field.field, matchMode: 'equal', operator:'and', value: field.value});\r\n };\r\n });\r\n }); \r\n return filters;\r\n }\r\n \r\n downloadReport(){ \r\n const filters:any = this.getFilters(); \r\n this.requestService.download('/Report/Generate', { Id: this.config?.data?.Id, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n \r\n }\r\n );\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { IFormField } from '../../../../../models/form.model';\r\nimport { AlertService } from '../../../../../services/alert.service';\r\nimport { RequestService } from '../../../../../services/request.service';\r\nimport { ReportFilterComponent } from '../../report-Filter/report-filter/report-filter.component';\r\n\r\n@Component({\r\n selector: 'se-generate-report-btn',\r\n templateUrl: './generate-report-btn.component.html',\r\n styleUrls: ['./generate-report-btn.component.scss']\r\n})\r\nexport class GenerateReportBtnComponent implements OnInit {\r\n @Input() repId: any;\r\n @Input() params: any;\r\n @Input() showDialog: boolean;\r\n formFields: IFormField[] = [];\r\n\r\n constructor(\r\n public dialogService: DialogService,\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.createDynamicFields();\r\n }\r\n\r\n reportClickEvent() {\r\n if (this.formFields.some((field) => !field.hidden) && this.showDialog === undefined || this.showDialog === true) {\r\n this.dialogService.open(ReportFilterComponent, {\r\n width: '80%',\r\n height: '100%',\r\n header: 'Generate Report',\r\n data: { Id: this.repId, param: this.params },\r\n });\r\n } else {\r\n this.downloadQuickReport();\r\n }\r\n }\r\n\r\n createDynamicFields() {\r\n this.requestService\r\n .getOne<Response, any>('/ReportConfig/ById', this.repId)\r\n .subscribe(\r\n (data: any) => {\r\n const reportJson = JSON.parse(data?.report);\r\n this.formFields = reportJson?.FormFields;\r\n },\r\n (error) => {\r\n this.alertService.error(error);\r\n }\r\n );\r\n }\r\n\r\n getFilters() {\r\n let filters: any[] = [];\r\n this.formFields.forEach((field) => {\r\n if (field && field.value?.toString()?.length > 0) {\r\n filters.push({\r\n field: field.field,\r\n matchMode: 'equal',\r\n operator: 'and',\r\n value: field.value,\r\n });\r\n }\r\n });\r\n return filters;\r\n }\r\n\r\n downloadQuickReport() {\r\n let filters: any[] = [];\r\n if(this.params && this.params.length > 0){\r\n this.params.forEach((param)=>{\r\n filters = Object.keys(param).map((key)=> ({field: key, matchMode: 'equal',operator: 'and',value: param[key]}));\r\n });\r\n } else {\r\n filters = this.getFilters();\r\n }\r\n \r\n this.requestService\r\n .download('/Report/Generate', { Id: this.repId, filters: filters })\r\n .subscribe(\r\n (response) => {\r\n var newBlob = new Blob([response], { type: 'application/pdf' });\r\n const data = window.URL.createObjectURL(newBlob);\r\n const a = document.createElement('a');\r\n a.href = data;\r\n a.download = 'report.pdf';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n },\r\n (error) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\r\nimport {\r\n IGlobalFilter,\r\n GridFilterControlType,\r\n EGridColumnType,\r\n addGlobalFilter,\r\n EDayRange,\r\n EFilterValidator,\r\n} from '../../../models/grid.model';\r\nimport { AlertService } from '../../../services/alert.service';\r\nimport { GridService } from '../../../services/grid.service';\r\n\r\n@Component({\r\n selector: 'se-global-filters',\r\n templateUrl: './global-filters.component.html',\r\n styleUrls: ['./global-filters.component.scss'],\r\n})\r\nexport class SeGlobalFilterComponent implements OnInit {\r\n @ViewChild('rangeCalendar') datePicker: any;\r\n @Input() globalFilters: IGlobalFilter[] = [];\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n @Input() set activeTestMode (val:any) { if(val === true) { debugger }}\r\n\r\n public fiterTypes = GridFilterControlType;\r\n public columnType = EGridColumnType;\r\n public showDialog: boolean = false;\r\n public startDate: Date;\r\n public endDate: Date;\r\n\r\n showInput: boolean = false;\r\n filter: any = '';\r\n hideClearFilterBtn: boolean = true;\r\n calendarFormat:string = 'mm/dd/yy';\r\n\r\n constructor(\r\n public datepipe: DatePipe,\r\n @Optional() public ref: DynamicDialogRef,\r\n @Optional() public config: DynamicDialogConfig,\r\n private gridService: GridService,\r\n public dialogService: DialogService,\r\n private alertService: AlertService,\r\n private el: ElementRef,\r\n ) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void {\r\n if(this.config && this.config.data){\r\n this.showDialog = this.config.data.openDialog;\r\n if(this.config.data.globalFilters){\r\n this.globalFilters = this.config?.data.globalFilters as IGlobalFilter[];\r\n }\r\n \r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n // spliting date range value and assign to value and valueTwo in Date_Range Control\r\n const dateRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.DATE_RANGE); \r\n dateRangeFilter.forEach((dateRange)=>{\r\n if(dateRange.value && dateRange.valueTwo){\r\n dateRange.value = (dateRange.value + \"-\" + dateRange.valueTwo)?.toString()?.split('-'); \r\n this.setDateRangeFilterValue(dateRange);\r\n }\r\n })\r\n // Filtring Numeric Range controls on global filter \r\n const numerRangeFilter = this.globalFilters.filter((filter)=> filter.type === GridFilterControlType.NUMERIC_RANGE);\r\n numerRangeFilter.forEach((numericRange) =>{\r\n if(numericRange){\r\n this.setNumericRangeValueFrom(numericRange);\r\n this.setNumericRangeValueTwo(numericRange);\r\n }\r\n })\r\n if(!(this.globalFilters.some((filter)=> filter.type === GridFilterControlType.CALENDAR_RANGE)) &&\r\n (this.globalFilters.some((filter)=> filter.value))\r\n ){\r\n this.applyFilters(false);\r\n }\r\n }, 500);\r\n }\r\n\r\n setDateRangeFilterValue(dateRange){\r\n if(dateRange?.value?.length > 1){\r\n dateRange.value[0] = new Date(dateRange.value[0]);\r\n dateRange.value[1] = new Date(dateRange.value[1]);\r\n this.selectDate(dateRange, false);\r\n }\r\n }\r\n \r\n // change calendar format on run time if user type date on the calendar field.\r\n calendarFocusEvent(globalFilter:IGlobalFilter){\r\n document.getElementsByClassName(globalFilter.displayText)[0]?.addEventListener('keyup', (a: any) => {\r\n let year = a?.target?.value?.toString()?.split('/')[2];\r\n year = year?.toString().split(\" \")[0];\r\n if(year?.length === 4){\r\n this.calendarFormat = 'mm/dd/yy';\r\n if(globalFilter.type === GridFilterControlType.CALENDAR){\r\n globalFilter.value = new Date(a.target.value).toLocaleDateString(\"en-US\");\r\n }\r\n } else if(year?.length){\r\n this.calendarFormat = 'mm/dd/y';\r\n }\r\n });\r\n }\r\n\r\n checkFilterValidation(removeError:boolean = false):boolean{\r\n let valid:boolean = false;\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.validations && filter.validations.length > 0 && filter.validations[0].type === EFilterValidator.REQUIRED && !filter.value && !removeError){\r\n valid = true;\r\n filter.errorMessage = filter.displayText+\" is required\";\r\n filter.requiredField = true;\r\n } else {\r\n filter.errorMessage = '';\r\n }\r\n })\r\n }\r\n return valid;\r\n }\r\n\r\n ngOnChanges(){\r\n this.checkFilterValidation();\r\n this.globalFilters?.forEach((filter)=>{\r\n if(filter.value && (filter.hidden === false || filter.hidden === undefined)){\r\n this.onFocusOutEvent(filter);\r\n }\r\n })\r\n // set By Defualt Calender Range\r\n this.setDefualtCalendarRange(false);\r\n const girdClearFilterBtn = document.getElementById(\r\n 'clearGridFilterValuesButton'\r\n );\r\n if(girdClearFilterBtn){\r\n if(girdClearFilterBtn.classList.contains('hide-clear-filter-button')){\r\n this.hideClearFilterBtn = true;\r\n }else{\r\n this.hideClearFilterBtn = false;\r\n }\r\n }else{\r\n this.hideClearFilterBtn = true;\r\n }\r\n }\r\n\r\n setNumericRangeValueTwo(globalFilter: IGlobalFilter, sendRequest:boolean = false){\r\n if(globalFilter.toField){\r\n this.matchSameFields(globalFilter.toField, globalFilter.valueTwo,'lte', globalFilter);\r\n }\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n\r\n matchSameFields(field: string,value:any, operator:string, numerRangeFilter: any = {}){\r\n if(field){\r\n if(numerRangeFilter && numerRangeFilter?.format?.type === 'decimal' && value){\r\n const digitInfo = numerRangeFilter?.format?.formatParams?.digitsInfo;\r\n if(digitInfo){\r\n value = parseFloat(value)?.toFixed(digitInfo);\r\n }else{\r\n value = parseFloat(value)?.toFixed(2);\r\n }\r\n }\r\n const index = this.globalFilters.findIndex((filter)=> field === filter.field);\r\n if(index > -1){\r\n this.globalFilters[index] = {field: field, matchMode:'and', operator: operator, value: value}; \r\n } else {\r\n this.globalFilters.push({field: field, matchMode:'and', operator: operator, value: value});\r\n }\r\n }\r\n }\r\n\r\n setNumericRangeValueFrom(globalFilter: IGlobalFilter, sendRequest:boolean = false) {\r\n if(globalFilter.type === GridFilterControlType.NUMERIC_RANGE && globalFilter.fromField){ \r\n this.matchSameFields(globalFilter.fromField,globalFilter.value,'gte', globalFilter);\r\n if(sendRequest){\r\n this.applyFilters();\r\n }\r\n }\r\n \r\n }\r\n\r\n setDateRangeValue(globalFilter: any, clearValue: boolean =false) {\r\n if(globalFilter.value?.length > 0){\r\n const fromDateValue = this.datepipe.transform(\r\n globalFilter.value[0],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n const toDateValue = this.datepipe.transform(\r\n globalFilter.value[1],\r\n globalFilter.format ? globalFilter.format : 'MM/dd/yyyy'\r\n );\r\n if (fromDateValue && toDateValue && globalFilter.fromField && globalFilter.toField) {\r\n this.matchSameFields(globalFilter.fromField,fromDateValue,'gte');\r\n this.matchSameFields(globalFilter.toField,toDateValue,'lte');\r\n }\r\n }else if(clearValue){\r\n this.matchSameFields(globalFilter.fromField, null, 'gte');\r\n this.matchSameFields(globalFilter.toField, null, 'lte');\r\n }\r\n }\r\n\r\n\r\n onFocusOutEvent(globalFilter: IGlobalFilter){\r\n if (globalFilter && globalFilter.onFocusOut) {\r\n globalFilter.onFocusOut(globalFilter);\r\n }\r\n setTimeout(() => {\r\n localStorage.setItem('applyFilter', JSON.stringify(false));\r\n this.filtersApplied.emit(this.globalFilters);\r\n },globalFilter.type === GridFilterControlType.LOOKUP_INPUT ? 250 : 0);\r\n }\r\n\r\n /**\r\n * Apply selected filters\r\n */\r\n applyFilters(filterEvent: boolean= true, globalFilter:any = {}) {\r\n if(globalFilter.type === GridFilterControlType.DATE_RANGE){\r\n this.setDateRangeFilterValue(globalFilter);\r\n } \r\n this.gridService.applyFilterEvent = filterEvent;\r\n const globalFilters = this.globalFilters.filter((x) => x.field);\r\n const index = globalFilters.findIndex((filter)=> filter.field && filter.type === GridFilterControlType.DATE_RANGE )\r\n if(index > -1){\r\n globalFilters.splice(index, 1);\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n if (this.showDialog) {\r\n this.ref.close(globalFilters);\r\n } else \r\n if(!this.checkFilterValidation()){\r\n this.checkFilterValidation(true);\r\n this.filtersApplied.emit(globalFilters);\r\n }\r\n }\r\n\r\n // set By Defualt Calender Range \r\n setDefualtCalendarRange(check: boolean = true){\r\n if(this.globalFilters && this.globalFilters.length > 0){\r\n this.globalFilters.forEach((filter)=>{\r\n if(filter.type === GridFilterControlType.CALENDAR_RANGE){\r\n setTimeout(() => {\r\n this.showNext(filter, check);\r\n }, 100);\r\n }\r\n });\r\n }\r\n }\r\n\r\n showNext(filter: IGlobalFilter, check: boolean = true): string {\r\n let nextValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n nextValue = this.setDayFilter(filter, true);\r\n break;\r\n case EDayRange.MONTH:\r\n nextValue = this.setMonthFilter(filter, true);\r\n break;\r\n case EDayRange.YEAR:\r\n nextValue = this.setYearFilter(filter, true);\r\n break;\r\n default:\r\n // week\r\n nextValue = this.setWeekFilter(filter, true);\r\n break;\r\n }\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.gridService.applyFilterEvent = check;\r\n this.filtersApplied.emit(this.globalFilters);\r\n return nextValue;\r\n }\r\n\r\n showPrevious(filter: IGlobalFilter): string {\r\n let previousValue: string;\r\n let dayRange: EDayRange = filter.dayRange\r\n ? filter.dayRange\r\n : EDayRange.WEEK;\r\n switch (dayRange) {\r\n case EDayRange.DAY:\r\n previousValue = this.setDayFilter(filter, false);\r\n break;\r\n case EDayRange.MONTH:\r\n previousValue = this.setMonthFilter(filter, false);\r\n break;\r\n case EDayRange.YEAR:\r\n previousValue = this.setYearFilter(filter, false);\r\n break;\r\n default:\r\n // week\r\n previousValue = this.setWeekFilter(filter, false);\r\n break;\r\n }\r\n this.gridService.applyFilterEvent = true;\r\n localStorage.setItem('applyFilter', JSON.stringify(true));\r\n this.filtersApplied.emit(this.globalFilters);\r\n return previousValue;\r\n }\r\n\r\n setCalendarRangeFilterValue(filter: IGlobalFilter): string {\r\n return (filter.value =\r\n this.datepipe.transform(\r\n this.startDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ) +\r\n '|' +\r\n this.datepipe.transform(\r\n this.endDate,\r\n filter.format ? filter.format : 'MM/dd/yyyy'\r\n ));\r\n }\r\n\r\n setDateValue(filter: any) {\r\n let value: Date;\r\n if (filter.value) {\r\n value = new Date(filter.value.split('|')[0]);\r\n return new Date(value.setMonth(value.getMonth()));\r\n } else {\r\n return new Date();\r\n }\r\n }\r\n\r\n setDayFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n )\r\n : currentDate;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() - 1\r\n )\r\n : currentDate;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth(),\r\n this.startDate.getDate() + 1\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setYearFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfYear = new Date(currentDate.getFullYear(), 0, 1);\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() + 1, 0, 1)\r\n : firstDateOfYear;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getFullYear() - 1, 0, 1)\r\n : firstDateOfYear;\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getFullYear(), 11, 31);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setMonthFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n var currentDate = this.setDateValue(filter);\r\n var firstDateOfMonth = new Date(\r\n currentDate.getFullYear(),\r\n currentDate.getMonth(),\r\n 1\r\n );\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() - 1,\r\n 1\r\n )\r\n : firstDateOfMonth;\r\n }\r\n\r\n this.endDate = new Date(\r\n this.startDate.getFullYear(),\r\n this.startDate.getMonth() + 1,\r\n 0\r\n );\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n setWeekFilter(filter: IGlobalFilter, isNext: boolean): string {\r\n let currentDate = this.setDateValue(filter);\r\n let firstDay = new Date(currentDate.setDate(filter.value ? currentDate.getDate() : currentDate.getDate() - currentDate.getDay() + 1));\r\n let weekSeconds = 7 * 24 * 60 * 60 * 1000;\r\n\r\n if (isNext) {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() + weekSeconds)\r\n : new Date(firstDay.getTime());\r\n } else {\r\n this.startDate = this.startDate\r\n ? new Date(this.startDate.getTime() - weekSeconds)\r\n : new Date(firstDay.getTime() - weekSeconds);\r\n }\r\n\r\n this.endDate = new Date(this.startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\r\n\r\n return this.setCalendarRangeFilterValue(filter);\r\n }\r\n\r\n /**\r\n * open dialog on lookupControl field\r\n */\r\n selectLookupField(globalFilters: IGlobalFilter) { \r\n this.gridService.setLookUpFilter(globalFilters, this.dialogService);\r\n }\r\n\r\n /**\r\n * Clear all filter values\r\n */\r\n clearFilters() {\r\n this.globalFilters.map((item: any) => (item.value = null));\r\n const clearGridFilter = document.getElementById('clearGridFilterValuesButton')\r\n if(clearGridFilter){\r\n clearGridFilter.click();\r\n }\r\n }\r\n\r\n /**\r\n * Clear values of Date Range Filter\r\n */\r\n clearDateRangeValue(filter: any){\r\n this.setDateRangeValue(filter, true)\r\n }\r\n\r\n /**\r\n * Close dialog without applying filters\r\n */\r\n cancel() {\r\n this.clearFilters();\r\n this.ref.close();\r\n }\r\n rangeDateclose(globalFilter: any) {\r\n this.datePicker.hideOverlay();\r\n const id: any = document.getElementById(globalFilter.displayText);\r\n id.focus();\r\n }\r\n\r\n filterInput() {\r\n this.showInput = !this.showInput;\r\n }\r\n\r\n /**\r\n * Focused the calender input\r\n */\r\n selectDate(globalFilter: any, focused: boolean = false){\r\n if(globalFilter.value?.length > 1 && globalFilter.value[1] !== null){\r\n this.setDateRangeValue(globalFilter);\r\n if(focused ==true){\r\n this.rangeDateclose(globalFilter); \r\n }\r\n }\r\n if(focused){\r\n document.getElementById(globalFilter.field)?.focus();\r\n }\r\n }\r\n tabFocusEvent(globalFilter: any) {\r\n const className = this.el.nativeElement.querySelector(\r\n '.'+globalFilter.field\r\n );\r\n if (className) {\r\n className.click();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { SeGlobalFilterComponent } from '../../shared/global-filters/global-filters.component';\r\nimport { IGlobalFilter } from '../../../models/grid.model';\r\n\r\n@Component({\r\n selector: 'se-filter',\r\n templateUrl: './filter.component.html',\r\n})\r\nexport class SeFilterComponent implements OnInit {\r\n @Input() globalFilters: IGlobalFilter[];\r\n @Input() showDialogFilter: boolean = true;\r\n @Input() clearGlobalFilterBtn: boolean = true;\r\n @Input() searchGlobalFilterBtn: boolean = true;\r\n @Output() filtersApplied: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public dialogService: DialogService) { }\r\n\r\n /**\r\n * Assignment of selected columns on page load\r\n */\r\n ngOnInit(): void { }\r\n\r\n /**\r\n * Opens the filter dialog\r\n */\r\n openFilters() {\r\n const ref = this.dialogService.open(SeGlobalFilterComponent, {\r\n header: 'Choose Filters',\r\n width: '70%',\r\n styleClass: 'global-filter-visible',\r\n data: { globalFilters: this.globalFilters, openDialog: true},\r\n });\r\n\r\n // Modal response\r\n ref.onClose.subscribe((res) => {\r\n if (res) {\r\n this.filtersApplied.emit(res);\r\n }\r\n });\r\n }\r\n\r\n globalFiltersApplied(event: any){\r\n this.filtersApplied.emit(event);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'se-grid-row-actions',\r\n templateUrl: './grid-row-actions.component.html',\r\n styleUrls: ['./grid-row-actions.component.scss']\r\n})\r\nexport class GridRowActionsComponent implements OnInit {\r\n @Input() editing: boolean;\r\n\r\n @Input() editRowPermission: boolean;\r\n\r\n @Input() deleteRowPermission: boolean;\r\n\r\n @Input() editAllRows: boolean = false;\r\n\r\n @Input() row: any;\r\n\r\n @Output() onRowEditInitBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() deleteRecordBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditSaveBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n @Output() onRowEditCancelBtn: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n onRowEditInit(row: any) {\r\n this.onRowEditInitBtn.emit(row);\r\n }\r\n\r\n deleteRecord(row: any) {\r\n this.deleteRecordBtn.emit(row);\r\n }\r\n\r\n onRowEditSave(row: any) {\r\n this.onRowEditSaveBtn.emit(row);\r\n }\r\n\r\n onRowEditCancel(row: any) {\r\n this.onRowEditCancelBtn.emit(row);\r\n }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { GridComponent } from './components/base/grid/grid.component';\r\nimport { FormComponent } from './components/base/form/form.component';\r\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\r\nimport { GalleryComponent } from './components/base/image-gallery/image-gallery.component';\r\nimport { IframeComponent } from './components/base/iframe/iframe.component';\r\n\r\n// Library\r\nimport { TableModule } from 'primeng/table';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TriStateCheckboxModule } from 'primeng/tristatecheckbox';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { AddRowDirective } from './directive/add-row.directive';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NotesComponent } from './components/shared/notes/notes.component';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { AppFilterMenuComponent } from './components/shared/filter-menu/filter-menu.component';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { RequestService } from './services/request.service';\r\nimport { Environment } from './models/response.model';\r\nimport { MenuBarComponent } from './components/base/menu-bar/menu-bar.component';\r\nimport { SidebarComponent } from './components/base/sidebar/sidebar.component';\r\nimport { HeaderComponent } from './components/base/header/header.component';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { LoaderComponent } from './components/base/loader/loader.component';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { DatePipe, DecimalPipe } from '@angular/common';\r\nimport {AvatarModule} from 'primeng/avatar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { FileUploadComponent } from './components/base/file-upload/file-upload.component';\r\nimport { CaptionComponent } from './components/base/caption/caption.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CardComponent } from './components/base/cards/card.component';\r\nimport { fileComponent } from './components/base/file/file.component';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { AlertService } from '../public-api';\r\nimport { GenerateReportBtnComponent } from './components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nimport { ReportFilterComponent } from './components/base/report/report-Filter/report-filter/report-filter.component';\r\nimport { SeGlobalFilterComponent } from './components/shared/global-filters/global-filters.component';\r\nimport { SeFilterComponent } from './components/base/filter/filter.component';\r\nimport { GridRowActionsComponent } from './components/base/grid-row-actions/grid-row-actions.component';\r\nimport { AlertPopUpComponent } from './components/base/alert-pop-up/alert-pop-up.component';\r\n\r\n\r\nexport const toasterModuleforRoot = ToastrModule.forRoot();\r\n\r\n@NgModule({\r\n declarations: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n DropdownComponent,\r\n AddRowDirective,\r\n FormComponent,\r\n NotesComponent,\r\n AppFilterMenuComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n IframeComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeGlobalFilterComponent,\r\n SeFilterComponent,\r\n AlertPopUpComponent\r\n ],\r\n\r\n providers: [DialogService,AlertService,DecimalPipe,DatePipe,RequestService],\r\n imports: [\r\n TableModule,\r\n PanelMenuModule,\r\n MenuModule,\r\n MultiSelectModule,\r\n FormsModule,\r\n BrowserAnimationsModule,\r\n TabViewModule,\r\n DropdownModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ButtonModule,\r\n ProgressSpinnerModule,\r\n RippleModule,\r\n InputTextModule,\r\n TriStateCheckboxModule,\r\n InputTextareaModule,\r\n TooltipModule,\r\n BrowserModule,\r\n GalleriaModule,\r\n AutoCompleteModule,\r\n AccordionModule,\r\n ConfirmDialogModule,\r\n MessagesModule,\r\n InputNumberModule,\r\n AvatarModule,\r\n CardModule,\r\n DragDropModule,\r\n InputSwitchModule,\r\n toasterModuleforRoot\r\n ],\r\n exports: [\r\n GridComponent,\r\n GridRowActionsComponent,\r\n FormComponent,\r\n MenuBarComponent,\r\n SidebarComponent,\r\n HeaderComponent,\r\n GalleryComponent,\r\n LoaderComponent,\r\n FileUploadComponent,\r\n CaptionComponent,\r\n CardComponent,\r\n fileComponent,\r\n GenerateReportBtnComponent,\r\n ReportFilterComponent,\r\n SeFilterComponent,\r\n SeGlobalFilterComponent\r\n ],\r\n})\r\nexport class SEToolkitModule {\r\n public static forRoot(environment: Environment): ModuleWithProviders<any> {\r\n return {\r\n ngModule: SEToolkitModule,\r\n providers: [\r\n RequestService,\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { EFormControl, IHyperlink } from './form.model';\r\nimport { IPermission } from './user-info.model';\r\n\r\nexport interface IHeader {\r\n fields: IHeaderField[];\r\n column?: number;\r\n permissions?: IPermission[];\r\n}\r\n\r\nexport interface IHeaderField {\r\n label?: string;\r\n value?: any;\r\n control?: EFormControl;\r\n data?: any[];\r\n onClick?: () => void;\r\n class?: string;\r\n column?: number;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport enum EButtonClass {\r\n NORMAL = 'p-button-sm',\r\n SUCCESS = 'p-button-success p-button-sm',\r\n INFO = 'p-button-info p-button-sm',\r\n WARNING = 'p-button-warning p-button-sm',\r\n HELP = 'p-button-help p-button-sm',\r\n DANGER = 'p-button-danger p-button-sm',\r\n}\r\n\r\nexport interface AddHeaderField {\r\n control?: EFormControl;\r\n label?: string;\r\n value?: string;\r\n column?: number;\r\n data?: any;\r\n class?: string;\r\n onClick?: (() => void) | any;\r\n hyperlink?: IHyperlink;\r\n permissions?: IPermission[];\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n format?: IHeaderFormat;\r\n showTime?: boolean;\r\n timeOnly?: boolean;\r\n}\r\n\r\nexport interface IHeaderFormat {\r\n type: EHeaderFormatType | any;\r\n formatParams?:IFormatParams\r\n | IDateFormatParams\r\n | INumberFormatParams\r\n | ICurrencyFormatParams;\r\n formatter?: (value: any) => any;\r\n}\r\n\r\nexport interface IFormatParams {\r\n locale?: string;\r\n}\r\n\r\nexport interface IDateFormatParams extends IFormatParams {\r\n format?: string;\r\n}\r\n\r\nexport interface INumberFormatParams extends IFormatParams {\r\n digitsInfo?: string;\r\n}\r\n\r\nexport interface ICurrencyFormatParams extends INumberFormatParams {\r\n currency: string;\r\n}\r\n\r\nexport enum EHeaderFormatType {\r\n SHORTDATE = 'mm/dd/yy',\r\n MEDIUMDATE = 'M d, yy',\r\n LONGDATE = 'MM d, yy',\r\n CURRENCY = 'currency',\r\n PERCENT = 'percent',\r\n DECIMAL = 'decimal',\r\n}","import { Injectable } from '@angular/core';\r\nimport { IMenu } from '../models/menu.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SideBarService {\r\n constructor() { }\r\n\r\n /**\r\n * Checks parent menu and expands it if current route exists in its child menus.\r\n * @param menuLabel\r\n * @returns {boolean}\r\n */\r\n isMenuExpanded(\r\n currentRoute: string,\r\n items: IMenu[],\r\n menuLabel: string\r\n ): boolean {\r\n if (items && items.length) {\r\n // check currentRoute contains loadDataForEdit or not\r\n currentRoute = currentRoute.includes('?') ? currentRoute.split('?')[0] : currentRoute;\r\n let detailPage = '';\r\n if(currentRoute?.toString()?.includes(\"list\")){\r\n detailPage = currentRoute.replace('list', 'detail');\r\n } \r\n const currentIndex = items.findIndex((menu) => menu.label?.toLowerCase() === menuLabel?.toLowerCase());\r\n let matchedItems = [];\r\n if(currentIndex > -1){\r\n matchedItems = items[currentIndex]?.items;\r\n }\r\n return matchedItems.length > 0 ? matchedItems.some((item: any) => item.routerLink && (currentRoute === item.routerLink[0] || currentRoute === detailPage)) : false; \r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl } from '../models/form.model';\r\nimport { AddHeaderField, IHeaderField } from '../models/header.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HeaderService {\r\n constructor() {}\r\n\r\n addHeaderField(headerInfo: AddHeaderField): IHeaderField {\r\n if (!headerInfo.column) {\r\n headerInfo.column = 3;\r\n }\r\n\r\n const headerField: IHeaderField = {\r\n label: headerInfo.label,\r\n control: headerInfo.control,\r\n value: headerInfo.value,\r\n column: headerInfo.column,\r\n data: headerInfo.data,\r\n class: headerInfo.class,\r\n onClick: headerInfo.onClick,\r\n hyperlink: headerInfo.hyperlink,\r\n disabled: headerInfo.disabled,\r\n hidden: headerInfo.hidden,\r\n permissions: headerInfo.permissions,\r\n format: headerInfo.format,\r\n showTime: headerInfo.showTime,\r\n timeOnly: headerInfo.timeOnly,\r\n };\r\n return headerField;\r\n }\r\n\r\n addLabel(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.LABEL;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n \r\n addDropdown(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.DROPDOWN;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addButton(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.BUTTON;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCheckbox(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CHECKBOX;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addHyperlink(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.HYPERLINK;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n\r\n addCalendar(headerInfo: AddHeaderField): IHeaderField {\r\n headerInfo.control = EFormControl.CALENDAR;\r\n return this.addHeaderField(headerInfo);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EFormControl, IDynamicForm } from '../models/form.model';\r\nimport { AlertService } from './alert.service';\r\nimport { RequestService } from './request.service';\r\nimport * as utilities from '../../lib/services/utilities.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CardService {\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n deleteImage(imageInfo: any, uniqueKey: string, dynamicForm: IDynamicForm, cardId: string) {\r\n let imageToDelete =\r\n imageInfo.id && imageInfo.id > 0\r\n ? { RecordId: imageInfo.id }\r\n : { UniqueKey: uniqueKey, RecordId: imageInfo.recordId };\r\n this.requestService.get('/Upload/Delete', imageToDelete).subscribe(\r\n (response: any) => {\r\n this.deleteFile(imageInfo, dynamicForm, cardId);\r\n if (imageInfo.tables) {\r\n this.deleteImageFromTables(imageInfo.tables, uniqueKey);\r\n } else {\r\n this.alertService.success('Image deleted successfully.');\r\n }\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n deleteImageFromTables(tables: any[], uniqueKey: string) {\r\n this.requestService\r\n .get('/Data/BulkDelete', {\r\n UniqueKey: uniqueKey,\r\n tables: tables,\r\n })\r\n .subscribe(\r\n (response) => {\r\n this.alertService.success('Image deleted successfully.');\r\n },\r\n ({ error }) => {\r\n this.alertService.apiError(error);\r\n }\r\n );\r\n }\r\n\r\n getCardData(formSections: any, id: string): any {\r\n let arr = {};\r\n formSections?.forEach((formSection: any) => {\r\n formSection.fields?.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id && field.card.data) {\r\n arr = { data: field.card.data, change: field.card.change, url: field.card?.cardInfo?.url };\r\n }\r\n });\r\n });\r\n return arr;\r\n }\r\n\r\n setFileUploadData(response: any, dynamicForm: any, id: string) {\r\n if (response) {\r\n dynamicForm.formSections?.forEach((x: any) => {\r\n x.fields.forEach((field: any) => {\r\n if (field.control === EFormControl.CARD && field.id && field.id === id) {\r\n field.card?.data?.unshift(...response);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n deleteFile(cardInfo: any, dynamicForm: IDynamicForm, id: string) {\r\n const fieldInfo = this.getCardData(\r\n dynamicForm.formSections,\r\n id\r\n );\r\n let cardData = fieldInfo.data;\r\n cardData = [...this.deleteFromArray(cardData, cardInfo, fieldInfo?.url)];\r\n\r\n dynamicForm.formSections?.forEach((section) => {\r\n let card = section.fields.find((x) => x.control === EFormControl.CARD && x.id === id);\r\n if (card && card.card) {\r\n card.card.data = cardData;\r\n }\r\n });\r\n }\r\n\r\n deleteFromArray(arr: any[] = [], cardInfo: any, deleteMatchKey: string = '') {\r\n arr = utilities.setDataFields(arr);\r\n cardInfo = utilities.objConvertToLower(cardInfo);\r\n \r\n const index = arr.findIndex((i) => i[deleteMatchKey] === cardInfo[deleteMatchKey] || i.blobfileurl === cardInfo.blobfileurl);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n }\r\n\r\nsetResponseId(response:any, cardsInfo:any[], fieldName:string,dynamicForm?:IDynamicForm){\r\n response.records?.forEach((record: any, recordIndex: any) => {\r\n const matchCard = cardsInfo?.find((info, cardIndex)=> recordIndex === cardIndex && record.Id);\r\n if(matchCard && Object.keys(matchCard)?.length > 0){\r\n matchCard[fieldName] = record.Id;\r\n }\r\n });\r\n\r\n if(dynamicForm && Object.keys(dynamicForm)?.length){\r\n dynamicForm.formSections.forEach((section)=>{\r\n const formField = section.fields.find((field)=> field.control === EFormControl.CARD);\r\n if(formField){\r\n if(cardsInfo?.length > 0){\r\n cardsInfo?.forEach((cardId)=>{\r\n cardId.id = null;\r\n })\r\n }\r\n formField.card.data = cardsInfo;\r\n };\r\n });\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of se-ui-toolkit\r\n */\r\nexport * from 'primeng/api';\r\n\r\n/**\r\n * Exported Modules\r\n */\r\n\r\nexport * from './lib/se-ui-toolkit.module';\r\n\r\n/**\r\n * Exported Components\r\n */\r\nexport * from './lib/components/base/form/form.component';\r\nexport * from \"./lib/components/base/grid/grid.component\"\r\nexport * from './lib/components/base/menu-bar/menu-bar.component';\r\nexport * from './lib/components/base/sidebar/sidebar.component';\r\nexport * from './lib/components/base/header/header.component';\r\nexport * from './lib/components/base/image-gallery/image-gallery.component';\r\nexport * from './lib/components/base/iframe/iframe.component';\r\nexport * from './lib/components/base/loader/loader.component';\r\nexport * from './lib/components/base/file-upload/file-upload.component';\r\nexport * from './lib/components/base/caption/caption.component';\r\nexport * from './lib/components/base/cards/card.component';\r\nexport * from './lib/components/base/file/file.component';\r\nexport * from './lib/components/base/report/report-Filter/report-filter/report-filter.component';\r\nexport * from './lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component';\r\nexport * from './lib/components/shared/global-filters/global-filters.component';\r\nexport * from './lib/components/base/grid-row-actions/grid-row-actions.component';\r\nexport * from './lib/components/base/filter/filter.component';\r\n\r\n\r\n/**\r\n * Exported Type Definitions\r\n */\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/grid.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/models/request.model';\r\nexport * from './lib/models/header.model';\r\nexport * from './lib/models/sidebar.model';\r\nexport * from './lib/models/user-info.model';\r\nexport * from './lib/models/menu.model';\r\nexport * from './lib/models/common.model'\r\n\r\n/**\r\n * Exported Services\r\n */\r\nexport * from './lib/services/alert.service';\r\nexport * from './lib/services/form.service';\r\nexport * from './lib/services/grid.service';\r\nexport * from './lib/services/dropdown.service';\r\nexport * from './lib/services/page-logger.service';\r\nexport * from './lib/services/authentication.service';\r\nexport * from './lib/services/utilities.service';\r\nexport * from './lib/services/request.service';\r\nexport * from './lib/services/sidebar.service';\r\nexport * from './lib/services/hyperlink.service';\r\nexport * from './lib/services/header.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/card.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AlertPopUpComponent as ɵe} from './lib/components/base/alert-pop-up/alert-pop-up.component';\nexport {DropdownComponent as ɵa} from './lib/components/shared/dropdown/dropdown.component';\nexport {AppFilterMenuComponent as ɵd} from './lib/components/shared/filter-menu/filter-menu.component';\nexport {NotesComponent as ɵc} from './lib/components/shared/notes/notes.component';\nexport {AddRowDirective as ɵb} from './lib/directive/add-row.directive';"],"names":["__rest","__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","ElementRef","DecimalPipe","ChangeDetectorRef","Router","ViewChildren","Output","Input","ViewChild","HostListener","utilities.onDynamicFormStateChange","utilities.removeActiveIconClass","utilities.setHyperlinkParamValue","ComponentFactoryResolver","ViewContainerRef","Directive","CookieService","ESidebarAction","Renderer2","Subscription","utilities.getFormFieldValue","utilities.setCardFieldsData","moveItemInArray","utilities.setFormPropValues","ToastrModule","NgModule","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.setDataFields"],"mappings":"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"}
|