mmhglobal-dynamicform 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"mmhglobal-dynamicform.js","sources":["../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.debug.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal-mobile.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/main.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/scrollbar.theme.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/fieldelement.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.binding.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.popup.anchor-target.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.config.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/date-range-cell-filter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.toolbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uipage/uipage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiheader/uiheader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uicontent/uicontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenucontent/uimenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenubutton/uimenubutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiappmenucontent/uiappmenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiactionbutton/uiactionbutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uivalidationmessage/uivalidationmessage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbullet/zbullet.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbuttons/zbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcard/zcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchart/zchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcheckbox/zcheckbox.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchip/zchip.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdaterange/zdaterange.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/zdatetime.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zform/zform.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgauge/zgauge.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zimg/zimg.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zkcard/zkcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zlabel/zlabel.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmfb/zmfb.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/znumeric/znumeric.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zpostselectinput/zpostselectinput.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zquerybuilder/zquerybuilder.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztext/ztext.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztextarea/ztextarea.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztexteditor/ztexteditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztree/ztree.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztreelist/ztreelist.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztrendcard/ztrendcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zudf/zudf.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zunknown/zunknown.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zupload/zupload.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zworkflowbuttons/zworkflowbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/zformcontrol/zformcontrol.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/mmhglobal-dynamicform.module.ts","../../../projects/mmhglobal-dynamicform/src/public-api.ts","../../../projects/mmhglobal-dynamicform/src/mmhglobal-dynamicform.ts"],"sourcesContent":["/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { BehaviorSubject, of, forkJoin, Observable } from 'rxjs';\r\nimport { tap, switchMap, map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AlertButton, AlertService, AuthService, FieldService, MESSAGETYPE,\r\n ResourceApiService, ToastService, WebApiService, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZTreeTemplateParams\r\n} from \"mmhglobal-zcore\";\r\nimport { MainService } from \"./main.service\";\r\nimport { ModalResponse } from 'mmhglobal-zmodal';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentDebugService {\r\n constructor(\r\n private router: Router,\r\n private alertService: AlertService,\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService\r\n ) {}\r\n\r\n private scope: any;\r\n private mainService: MainService;\r\n\r\n get debug(): any {\r\n return this.scope.group._debug;\r\n }\r\n\r\n get group(): ZGroup {\r\n return this.scope.group;\r\n }\r\n\r\n public onInitDebugger(group: ZGroup, mainService: MainService) {\r\n group._debug = new ZGroup(true);\r\n group._isDebugging = true;\r\n group._debug.zData = {\r\n collectedActivities: [],\r\n activityCount: 0,\r\n collectedWorkflowButtons: [],\r\n workflowButtonCount: 0\r\n };\r\n group._debug.zComponents = {};\r\n group.isListForm = false;\r\n this.mainService = mainService;\r\n }\r\n\r\n\r\n public onStartDebugger(fieldElements: Array<ZField>, me: any) {\r\n this.scope = me;\r\n if (!me.group._debug) {\r\n me.group._debug = {};\r\n }\r\n\r\n const d: ZGroup = me.group._debug;\r\n me.form = me.toFormGroup(fieldElements);\r\n d.form = me.form;\r\n if (me.subscription) {\r\n me.subscription.unsubscribe();\r\n }\r\n\r\n Object.assign(d, {\r\n // zData: { collectedActivities: [], activityCount: 0 },\r\n zModel: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n isEdit: true,\r\n isNew: false,\r\n _debug: me.group._debug,\r\n _group: me.group,\r\n resourceURL: this.resourceApiService.getURL('field'),\r\n treeItemTemplate: this.treeItemTemplate,\r\n onItemClick: this.onItemClick,\r\n onTreeNodeChange: this.onTreeNodeChange,\r\n onAddNode: this.onAddNode,\r\n onRemoveNode: this.onRemoveNode,\r\n treeNodesExpandAll: this.treeNodesExpandAll,\r\n treeNodesCollapseAll: this.treeNodesCollapseAll,\r\n refreshTreeModel: this.refreshTreeModel,\r\n addNode: this.addNode,\r\n refreshActivityLogData: this.LoadGridData.bind(this),\r\n GoToFieldElement: this.gotoFieldElement.bind(this),\r\n ListWatchName: this.listWatchName,\r\n onChangeWatchName: this.onChangeWatchName.bind(this),\r\n getWatchName: this.getWatchName.bind(this),\r\n fieldElementonEditorCodeChange: this.fieldElementonEditorCodeChange.bind(this),\r\n gridActivityLogColumnFields: this.fieldService.getFormFieldCode(\r\n 'debugActivityLog',\r\n \"FormField\",\r\n this.group,\r\n \"debugActivityLogField\"\r\n ),\r\n gridActivityLogOnItemClick: this.gridActivityLogOnItemClick.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n refreshWorkflowButtonData: this.loadWorkflowData.bind(this),\r\n gridWorkflowButtonColumnFields: this.fieldService.getFormFieldCode(\r\n 'debugWorkflowButton',\r\n 'FormField',\r\n this.group,\r\n \"debugWorkflowButtonField\"\r\n ),\r\n gridWorkflowButtonOnItemClick: this.gridWorkflowButtonOnItemClick.bind(this)\r\n });\r\n if (!d.zData) {\r\n d.zData = { collectedActivities: [], activityCount: 0 };\r\n }\r\n\r\n me.subscription = d.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, d, this)\r\n );\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, fieldElements, this.authService);\r\n return this.loadDebugZModel(me);\r\n }\r\n\r\n private loadDebugZModel(me: any) {\r\n const d: ZGroup = me.group._debug;\r\n\r\n const downloadList = [];\r\n downloadList.push(this.getProjectId());\r\n\r\n const formType = me.group.isListForm ? 'ListField' : 'FormField';\r\n const fieldName = me.group.fieldName;\r\n const fieldzModel = this.getFieldzModel(formType, fieldName);\r\n downloadList.push(fieldzModel);\r\n\r\n return forkJoin(downloadList);\r\n }\r\n\r\n private getProjectId() {\r\n const d = this.debug;\r\n const url = this.resourceApiService.getURL('projectsURL');\r\n return this.webApiService.getApi(url, {}, d.zData, 'ProjectOptions', null, d, false);\r\n }\r\n\r\n private getFieldzModel(type: string, activityName: string) {\r\n if (type === 'FormField') {\r\n return this.getFormFieldzModel(activityName);\r\n } else {\r\n return this.getListFieldzModel(activityName);\r\n }\r\n }\r\n\r\n private getFormFieldzModel(activityName: string) {\r\n const d: ZGroup = this.debug;\r\n const url = this.resourceApiService.getURL('field');\r\n return this.webApiService.httpGet$(url, { name: activityName, type: 'FormField' }).pipe(\r\n tap((respData: any) => {\r\n // console.log('respData: ', respData);\r\n Object.assign(d.zModel, respData);\r\n d.form.patchValue(d.zModel);\r\n d.form.markAsPristine();\r\n const fields = JSON.parse(d.zModel.Code);\r\n Object.assign(d, {\r\n treeModel: ZComponentHelper.convertTreeModel(fields)\r\n });\r\n })\r\n );\r\n }\r\n\r\n private getListFieldzModel(activityName: string) {\r\n const d = this.debug;\r\n const url = this.resourceApiService.getURL('fieldsMapping');\r\n const url2 = this.resourceApiService.getURL('field');\r\n return this.webApiService.httpGet$(url, { name: activityName }).pipe(\r\n switchMap((fieldMapping: any) => {\r\n // console.log('fieldMapping: ', fieldMapping);\r\n return this.webApiService.httpGet$(url2, { id: fieldMapping.FieldElementMasterId });\r\n }),\r\n tap((respData: any) => {\r\n Object.assign(d.zModel, respData);\r\n d.form.patchValue(d.zModel);\r\n d.form.markAsPristine();\r\n const fields = JSON.parse(d.zModel.Code);\r\n Object.assign(d, {\r\n treeModel: ZComponentHelper.convertTreeModel(fields)\r\n });\r\n })\r\n )\r\n }\r\n\r\n\r\n private subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n return;\r\n }\r\n // console.log(\"** Debug - SubjectEvent\", event);\r\n let callFunc;\r\n\r\n try {\r\n callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n me,\r\n event.target\r\n );\r\n // ZComponentHelper.getGroupValue(event.Target, group);\r\n } catch (error) {\r\n console.warn(\r\n \"Error when getGroupValue: \",\r\n event.target,\r\n \" > Error: \",\r\n error\r\n );\r\n }\r\n\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, group, me);\r\n } else if (typeof callFunc === \"string\") {\r\n if (event.type.endsWith(\"onNavigateTo\")) {\r\n const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n this.router.navigate([nUrl]);\r\n return;\r\n }\r\n\r\n if (event.type === \"zgrid-cellClick\") {\r\n // (callFunc.startsWith('edit')) { zgrid-cellClick\r\n const cName = callFunc.slice(4);\r\n // debugger;\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = cName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n\r\n // this.openModalForm(modalGroupParam);\r\n this.mainService.showzModal(event.columnFields$ || cName, group, '', {}, event.data.Id); // TODO\r\n }\r\n } else if (typeof callFunc === \"object\") {\r\n if (event.type === \"zgrid-cellClick\") {\r\n if (callFunc.navigateUrl) {\r\n const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = callFunc.ctrlName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n // modalGroupParam.formHeader = callFunc.formHeader;\r\n\r\n if (callFunc.formHeader) {\r\n // this.openModalForm(modalGroupParam);\r\n\r\n this.mainService.showzModal(event.columnFields$ || callFunc.ctrlName, group, callFunc.formHeader, {}, event.data.Id);\r\n return;\r\n }\r\n console.warn(\r\n \"Invalid callFunc type: \",\r\n callFunc,\r\n \" event.Target: \",\r\n event.target\r\n );\r\n }\r\n // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n event.target,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n private gridActivityLogOnItemClick(event: any) {\r\n // console.log('gridActivityLogOnItemClick: ', event);\r\n const rec = event.dataItem;\r\n switch (rec.type) {\r\n case 'ListField':\r\n case 'FormField':\r\n this.getFieldzModel(rec.type, rec.activityName).subscribe(() => {\r\n this.selectTab(0);\r\n });\r\n break;\r\n case 'ResourceServerAPI':\r\n const watchNameValue = '_debug.zData.collectedActivities[' + (rec.index - 1) + '].reference';\r\n this.setWatchNameValue(watchNameValue);\r\n this.selectTab(1);\r\n break;\r\n case 'HttpGet$':\r\n case 'HttpPost$':\r\n case 'HttpPut$':\r\n case 'HttpDelete$':\r\n this.setWatchNameValue('_debug.zData.collectedActivities[' + (rec.index - 1) + ']');\r\n this.selectTab(1);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private selectTab(index: number) {\r\n // debugger;\r\n // this.debug.zComponents[\"ztab_debuggerTabs\"].state.lastSelectedTabIndex = index;\r\n // ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').state.lastSelectedTabIndex = index;\r\n ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').selectTab(index);\r\n }\r\n\r\n private setWatchNameValue(newValue: string) {\r\n this.debug.zModel['DebugWatchName'] = newValue;\r\n ZComponentHelper.setModelValue('WatchName', newValue, this.debug, true);\r\n }\r\n\r\n public LoadGridData() {\r\n const activityLogGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_ActivityLogGrid');\r\n if (activityLogGrid) {\r\n activityLogGrid.setData(this.debug.zData.collectedActivities);\r\n }\r\n }\r\n\r\n private listWatchName(component: IonicSelectableComponent, searchText: string, pageNo: number,\r\n me: any, dataItem: any, recordId?: string) {\r\n\r\n const watchList = [\r\n { Name: 'group.zModel' },\r\n { Name: 'group.zData' },\r\n { Name: 'group.fields' },\r\n { Name: 'group.form.value' },\r\n { Name: 'group.backNavigationPage' },\r\n { Name: 'group.parentReferenceField' },\r\n { Name: 'group.parentReferenceId' },\r\n { Name: 'Object.keys(group.zComponents)' },\r\n { Name: 'group.gridOptions.zgrid.grid.data' }\r\n // { Name: 'Object.keys(_debug.zComponents)' },\r\n // { Name: '_debug.zModel' },\r\n // { Name: '_debug.zData' },\r\n // { Name: '_debug.zData.collectedActivities' },\r\n ];\r\n\r\n let results;\r\n if (searchText) {\r\n results = watchList.filter((s) => s.Name.toLowerCase().indexOf(searchText.toLowerCase()) !== -1);\r\n }\r\n\r\n if (pageNo === 0 && searchText) {\r\n return of({ dataSet: results });\r\n } else if (pageNo === 0) {\r\n return of({ dataSet: watchList });\r\n } else {\r\n return of({ dataSet: [] });\r\n }\r\n }\r\n\r\n private getWatchName() {\r\n return this.debug.zModel.DebugWatchName;\r\n }\r\n\r\n private onChangeWatchName(event: any, group: ZGroup, me: any) {\r\n // console.log('onChangeWatchName: ', event.data.value);\r\n const newValue = event.data.value;\r\n if (newValue) {\r\n this.debug.zModel['DebugWatchName'] = newValue.replace('group', '_group');\r\n }\r\n }\r\n\r\n private fieldElementonEditorCodeChange(el: ZComponentOutputEvent) {\r\n this.refreshTreeModel();\r\n }\r\n\r\n\r\n private treeNodesExpandAll() {\r\n this.debug.zComponents['ztree_debugZTree'].expandAll();\r\n }\r\n\r\n private treeNodesCollapseAll() {\r\n this.debug.zComponents['ztree_debugZTree'].collapseAll();\r\n }\r\n\r\n private refreshTreeModel() {\r\n try {\r\n const d = JSON.parse(this.debug.zModel.Code);\r\n // this._addNodesToTree(d);\r\n // group['treeModel'] = this.convertTreeModel(d);\r\n this.debug['treeModel'] = ZComponentHelper.convertTreeModel(d);\r\n } catch {\r\n debugger;\r\n }\r\n }\r\n\r\n private treeItemTemplate(el: ZTreeTemplateParams) {\r\n const getFieldValue = (item: any) => {\r\n if (typeof item._DataValue === \"string\") {\r\n return item._DataValue;\r\n }\r\n return \"...\";\r\n };\r\n return (\r\n el.dataItem.Name +\r\n \" - [\" +\r\n el.dataItem.Type +\r\n \"] = \" +\r\n getFieldValue(el.dataItem)\r\n );\r\n }\r\n\r\n async onItemClick(event: ZComponentOutputEvent) {\r\n // debugger;\r\n console.log(\"onItemClick data received: \", event);\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvEditFieldNodeForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n const dataItem = Object.assign({}, event.data);\r\n dataItem.Value = dataItem._DataValue;\r\n delete dataItem._DataValue;\r\n const zmodel = {\r\n nodeModel: JSON.stringify(dataItem, null, 2)\r\n };\r\n const modal = await this.mainService.showzModal(modalFields, this.debug._group, 'Field Element Info', zmodel);\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n const newData = JSON.parse(modalData.data.nodeModel);\r\n if (newData.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n this.updateTreeNode(newData, this.debug['treeModel'], event.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n this.updateModel();\r\n // this.mainService.updateModel(null, this.debug);\r\n });\r\n }\r\n\r\n private updateTreeNode(newNode: any, treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.updateTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n if (treeModel[+treeIndex[0]].Value) {\r\n newNode.Value = treeModel[+treeIndex[0]].Value;\r\n }\r\n treeModel[+treeIndex[0]] = newNode;\r\n }\r\n }\r\n\r\n\r\n\r\n private insertTreeNode(newNode: any, treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.insertTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n if (treeIndex[0]) {\r\n if (!Array.isArray(treeModel[+treeIndex[0]].Value)) {\r\n treeModel[+treeIndex[0]].Value = [];\r\n }\r\n treeModel[+treeIndex[0]].Value.push(newNode);\r\n } else {\r\n treeModel.push(newNode);\r\n }\r\n }\r\n }\r\n\r\n private removeTreeNode(treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.removeTreeNode(treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n treeModel.splice(+treeIndex[0], 1);\r\n }\r\n }\r\n\r\n private onTreeNodeChange(el: ZComponentOutputEvent) {\r\n console.log(\"onTreeNodeChange: \", el);\r\n const codeData = JSON.stringify(el.data);\r\n ZComponentHelper.setModelValue(\"Code\", codeData, this.debug);\r\n }\r\n\r\n private addNode() {\r\n const el: ZComponentOutputEvent = {\r\n data: {},\r\n rowData: {},\r\n event: \"\",\r\n target: \"\",\r\n type: \"\",\r\n columnFields$: null\r\n };\r\n this.onAddNode(el);\r\n }\r\n\r\n private async onAddNode(el: ZComponentOutputEvent) {\r\n console.log('onAddNode is called', el);\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvEditFieldNodeForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n // const dataItem = Object.assign({}, el.data);\r\n // dataItem.Value = dataItem._DataValue;\r\n // delete dataItem._DataValue;\r\n const initialModel = {\r\n Name: 'Name', DisplayName: 'Name', Value: 'Name', Type: 'text',\r\n gridColVisible: true,\r\n width: 150,\r\n minWidth: 100,\r\n enableFiltering: true,\r\n enableSorting: true,\r\n pinnedLeft: false,\r\n PlaceHolder: \"Name\",\r\n IsRequired: false,\r\n MinLength: 2,\r\n MaxLength: 50,\r\n Label: \"Name:\",\r\n DivClass: \"col-xs-12 col-sm-6 col-md-6 col-lg-3\",\r\n ReadOnly: false,\r\n ShowLabel: true,\r\n Visible: true,\r\n //EnableHiding: true,\r\n //cellFilter: \"\",\r\n //filterCellFiltered: false,\r\n //enablePinning: true,\r\n //pinnedRight: false,\r\n //UpdateOnBlur: true,\r\n //AppendDivClearFix: false,\r\n };\r\n const zmodel = {\r\n nodeModel: JSON.stringify(initialModel, null, 2)\r\n };\r\n\r\n // const modal: HTMLIonModalElement = await this.mainService.openModalForm(modalGroupParam);\r\n const modal = await this.mainService.showzModal(modalFields, this.debug, 'Add Field Element Item', zmodel);\r\n\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n const newData = JSON.parse(modalData.data.nodeModel);\r\n if (newData.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n this.insertTreeNode(newData, this.debug[\"treeModel\"], el.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n this.updateModel();\r\n // this.mainService.updateModel(null, this.debug);\r\n });\r\n }\r\n\r\n private onRemoveNode(el: ZComponentOutputEvent) {\r\n this.alertService.show('Remove Node', 'Are you sure?',\r\n [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ])\r\n .subscribe(reply => {\r\n if (reply === 'Yes') {\r\n console.log('Remove Node', el);\r\n this.removeTreeNode(this.debug[\"treeModel\"], el.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n }\r\n });\r\n }\r\n\r\n private gotoFieldElement() {\r\n this.router.navigate(['admin/field']);\r\n }\r\n\r\n private updateModel() {\r\n const debug = this.debug;\r\n const fg = this.debug.form as FormGroup;\r\n if (!fg.dirty) {\r\n console.warn(\"Debug Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n console.warn(\"Debug Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(debug.zModel)\r\n .pipe(\r\n // switchMap(zmodel => {\r\n // console.log(\"Before update, zModel:\", zmodel);\r\n // return this.beforeUpdateModel(group);\r\n // }),\r\n tap(() => {\r\n Object.assign(debug.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n return this.webApiService.httpPut$(\r\n debug.resourceURL + \"/\" + debug.zModel.Id,\r\n debug.zModel\r\n )\r\n .pipe(\r\n map(res => this.handleSuccess(res, \"Record is updated successfully.\")),\r\n );\r\n }),\r\n switchMap((zmodel: any) => {\r\n console.log(\"After Debug Form updated, zModel:\", zmodel);\r\n if (zmodel && zmodel.Data) {\r\n Object.assign(debug.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n }\r\n fg.markAsPristine();\r\n // this.afterUpdateModel(group);\r\n return of([]);\r\n }))\r\n .subscribe();\r\n }\r\n\r\n\r\n // ******************** Workflow Button ********************\r\n public loadWorkflowData() {\r\n const zgrid_WorkflowButtonGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_WorkflowButtonGrid');\r\n if (zgrid_WorkflowButtonGrid) {\r\n zgrid_WorkflowButtonGrid.setData(this.debug.zData.collectedWorkflowButtons);\r\n }\r\n }\r\n\r\n private gridWorkflowButtonOnItemClick(event: any) {\r\n const dataItem = Object.assign({}, event.dataItem);\r\n const field = dataItem.refField;\r\n const attribute = dataItem.refAttribute;\r\n\r\n // Get Mapped Info\r\n const params = new HttpParams()\r\n .set(\"ButtonId\", field.Id);\r\n this.webApiService.httpPost$(this.resourceApiService.getURL(\"e1wfs_wfc_getmappedButtonInfoURL\"), params).pipe(\r\n map(async res => {\r\n let roleInfo = [];\r\n let statusInfo = [];\r\n let parentStatusInfo = [];\r\n\r\n if (res.MappedRoleList) {\r\n roleInfo = res.MappedRoleList;\r\n }\r\n\r\n if (res.MappedStatusList) {\r\n res.MappedStatusList.forEach((_status: any) => {\r\n statusInfo.push(_status.Name + ' (' + _status.Code + ')');\r\n });\r\n }\r\n\r\n if (res.MappedParentStatusList) {\r\n res.MappedParentStatusList.forEach((_parentStatus: any) => {\r\n parentStatusInfo.push(_parentStatus.Name + ' (' + _parentStatus.Code + ')');\r\n });\r\n }\r\n\r\n const _mappedInfo = {\r\n 'mappedRoleInfo': roleInfo.length > 0 ? roleInfo : 'N.A.',\r\n 'mappedStatusInfo': statusInfo.length > 0 ? statusInfo : 'N.A.',\r\n 'mappedParentStatusInfo': parentStatusInfo.length > 0 ? parentStatusInfo : 'N.A.'\r\n };\r\n\r\n // retreive all important info\r\n const _buttonInfo = {\r\n 'WorkflowId': field.WorkflowId,\r\n 'ButtonId': field.Id,\r\n 'ButtonName': field.Name,\r\n 'ButtonCode': field.Code,\r\n 'ButtonTypeId': field.Type.Id,\r\n 'ButtonTypeName': field.Type.Name,\r\n 'ButtonTypeCode': field.Type.Code,\r\n 'ButtonVisible': attribute.Visible,\r\n 'ButtonClickEvent': attribute.ClickEvent,\r\n 'ButtonURL': attribute.URL,\r\n 'ButtonIcon': attribute.Icon\r\n };\r\n\r\n let _gotoStatusInfo = {\r\n 'GotoStatusId': 'N.A.',\r\n 'GotoStatusName': 'N.A.',\r\n 'GotoStatusCode': 'N.A.'\r\n };\r\n\r\n if (field.Status) {\r\n const _gotoStatus = field.Status\r\n _gotoStatusInfo = {\r\n 'GotoStatusId': _gotoStatus.Id,\r\n 'GotoStatusName': _gotoStatus.Name,\r\n 'GotoStatusCode': _gotoStatus.Code\r\n }\r\n }\r\n\r\n const propertiesModel = Object.assign(_buttonInfo, _gotoStatusInfo, _mappedInfo);\r\n\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvWorkflowButtonDebugForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n const modal = await this.mainService.showzModal(modalFields, this.debug._group, 'Workflow Button Info', propertiesModel);\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n });\r\n })\r\n ).subscribe();\r\n }\r\n\r\n\r\n handleSuccess(res: Response | any, successMsg: string): Response {\r\n if (res == null) {\r\n this.toastService.show(successMsg);\r\n } else if (res.Data !== undefined && res.ProcessingStatus !== undefined) {\r\n if (res.ProcessingStatus === true) {\r\n if (Array.isArray(res.Data)) {\r\n res.Data.map(s => this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success,\r\n `${successMsg} : ${s.CostCode}`, null));\r\n } else {\r\n this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success, successMsg, null);\r\n }\r\n }\r\n } else {\r\n this.toastService.show(successMsg);\r\n }\r\n return res;\r\n }\r\n\r\n handleError(res: any): Observable<any> {\r\n return this.webApiService.handleError(res);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable } from \"rxjs\";\r\nimport { DialogContentBase, DialogRef } from '@progress/kendo-angular-dialog';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZGroup, ModalPageParams,\r\n WebApiService, AlertService, ZCoreService, FieldService, ResourceApiService,\r\n ZComponentHelper, ZComponentOutputEvent\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper, ModalResponse } from 'mmhglobal-zmodal';\r\n\r\n\r\n@Component({\r\n selector: 'app-zmodal',\r\n templateUrl: './zmodal.component.html',\r\n styleUrls: ['./zmodal.component.scss'],\r\n})\r\nexport class ZmodalComponent extends DialogContentBase implements OnInit, OnDestroy {\r\n @Input() modalParams: ModalPageParams;\r\n\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n backButtonSubscription: Subscription;\r\n\r\n constructor( \r\n public dialog: DialogRef,\r\n private modalCtrl: ModalController,\r\n private zcoreService: ZCoreService,\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private fieldService: FieldService,\r\n private platform: Platform,\r\n private alertService: AlertService\r\n\r\n ) {\r\n super(dialog);\r\n }\r\n\r\n // get modalGroup() {\r\n // return this.group;\r\n // }\r\n\r\n ngOnInit() {\r\n ZmodalHelper.onInit_ModalForm(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n ZmodalHelper.onDestroy_ModalForm(this);\r\n }\r\n\r\n onCancel(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onCancel(this, event);\r\n // this.dialog.close();\r\n }\r\n\r\n onConfirm(event: ZComponentOutputEvent) {\r\n ZmodalHelper.onConfirm(this, event);\r\n // const fg = this.group.form as FormGroup;\r\n // if (!this.group.form) {\r\n // return;\r\n // }\r\n\r\n // if (!fg.dirty) {\r\n // console.warn('Form is not dirty hence modalform record is not saved.');\r\n // this.onCancel();\r\n // return;\r\n // }\r\n\r\n // if (!fg.valid) {\r\n // const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\r\n // }\r\n\r\n // Object.assign(this.group.zModel, fg.value);\r\n // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n // if (ZComponentHelper.isMobileScreen()) {\r\n // this.modalCtrl.dismiss(event.data, \"confirm\");\r\n // } else {\r\n // this.dialog.close(event.data);\r\n // }\r\n }\r\n\r\n onInitClose(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onInitClose(this,event);\r\n }\r\n\r\n isSITEnvironment() {\r\n return this.zcoreService.isDebugSession();\r\n }\r\n\r\n\r\n // to serve actionButton at formHeader\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n // const target = event.target.replace('modalGroup.', 'group.');\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const fg = this.group.form as FormGroup;\r\n Object.assign(this.group.zModel, fg.value);\r\n event.data = this.group.zModel;\r\n if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalClose') || event.target.startsWith('modalGroup.modalCancel')) {\r\n const newFunc = callFunc.bind(this);\r\n newFunc(event);\r\n } else {\r\n const newFunc = callFunc.bind(group.ctrlScope);\r\n newFunc(event);\r\n }\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n callFunc,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n getModel$(group: any, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n if (!this.isMobileScreen) {\r\n return {\r\n \"height.px\": 500,\r\n \"width.px\": 700\r\n };\r\n }\r\n return;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n// import { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\n// import { switchMap, tap } from \"rxjs/operators\";\r\nimport { Subscription, of, BehaviorSubject, Observable, fromEvent } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\n// import { FieldService } from \"../mmhglobal-zcore/field.service\";\r\n// import { ResourceApiService } from \"../mmhglobal-zcore/resourceapi.service\";\r\nimport {\r\n WebApiService, ModalPageParams,\r\n ZGroup, ZCoreService, ZComponentHelper, ZComponentOutputEvent, FieldService,\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper } from 'mmhglobal-zmodal';\r\n\r\n\r\n@Component({\r\n selector: \"app-zmodal\",\r\n templateUrl: \"./zmodal.component.html\",\r\n styleUrls: [\"./zmodal.component.scss\"]\r\n})\r\nexport class ZmodalMobileComponent implements OnInit, OnDestroy {\r\n @Input() modalParams: ModalPageParams;\r\n\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n backButtonSubscription: Subscription;\r\n\r\n constructor(\r\n private webApiService: WebApiService,\r\n private zcoreService: ZCoreService,\r\n private fieldService: FieldService // Use in mmhglobal-zmodal.helper\r\n ) {\r\n }\r\n\r\n // get modalGroup() {\r\n // return this.group;\r\n // }\r\n\r\n ngOnInit() {\r\n ZmodalHelper.onInit_ModalForm(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n ZmodalHelper.onDestroy_ModalForm(this);\r\n }\r\n\r\n onCancel(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onCancel(this, event);\r\n // this.modalCtrl.dismiss(null, \"cancel\");\r\n }\r\n\r\n onConfirm(event: ZComponentOutputEvent) {\r\n ZmodalHelper.onConfirm(this, event);\r\n // const fg = this.group.form as FormGroup;\r\n // if (!this.group.form) {\r\n // return;\r\n // }\r\n\r\n // if (!fg.dirty) {\r\n // console.warn('Form is not dirty hence modalform record is not saved.');\r\n // this.onCancel();\r\n // return;\r\n // }\r\n\r\n // if (!fg.valid) {\r\n // const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\r\n // }\r\n\r\n // // Object.assign(this.group.zModel, fg.value);\r\n // // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n // // if (ZComponentHelper.isMobileScreen()) {\r\n // this.modalCtrl.dismiss(event.data, \"confirm\");\r\n // // } else {\r\n // // this.dialog.close(event.data);\r\n // // }\r\n }\r\n\r\n onInitClose(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onInitClose(this, event);\r\n }\r\n\r\n // to serve actionButton at formHeader\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n // const target = event.target.replace('modalGroup.', 'group.');\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const fg = this.group.form as FormGroup;\r\n Object.assign(this.group.zModel, fg.value);\r\n event.data = this.group.zModel;\r\n if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalCancel')) {\r\n const newFunc = callFunc.bind(this);\r\n newFunc(event);\r\n } else {\r\n const newFunc = callFunc.bind(group.ctrlScope);\r\n newFunc(event);\r\n }\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n callFunc,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n getModel$(group: any, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n if (!this.isMobileScreen) {\r\n return {\r\n \"height.px\": 500,\r\n \"width.px\": 700\r\n };\r\n }\r\n return;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isSITEnvironment() {\r\n return this.zcoreService.isDebugSession();\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, NavController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { Observable, BehaviorSubject, Subscription, of, from } from 'rxjs';\r\nimport { tap, switchMap, take, map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AlertButton, MESSAGETYPE, ModalPageParams,\r\n AlertService, CacheService, FieldService, ResourceApiService, ToastService, WebApiService,\r\n ZComponentHelper, ZComponentOutputEvent, ZComponentSize, ZCoreService, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\nimport { ModalService, ModalResponse } from 'mmhglobal-zmodal';\r\n// import { ModalService } from '../zmodal/modal.service';\r\nimport { ZComponentDebugService } from './zcomponent.debug.service';\r\nimport { ZmodalComponent } from '../zmodal/zmodal.component';\r\nimport { ZmodalMobileComponent } from '../zmodal/zmodal-mobile.component';\r\nimport { ZGrid } from '../zgrid/zgrid.component';\r\n// import { ZmodalPage } from '../zmodal/zmodal.page';\r\n\r\n// import { ZComponentHelper, ZComponentOutputEvent, ModalPageParams, ZGrid } from '../dynamicform/zcomponent.model';\r\n// import { ZGroup, ZField } from '../model/zgroup.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MainService {\r\n private group: ZGroup;\r\n private oauthEnvironmentUrl: string;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalCtrl: ModalController,\r\n private navController: NavController,\r\n private alertService: AlertService,\r\n private cacheService: CacheService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService,\r\n private zcoreService: ZCoreService,\r\n private modalService: ModalService,\r\n private debugService: ZComponentDebugService\r\n ) {\r\n console.log('MainService constructor');\r\n this.oauthEnvironmentUrl = this.zcoreService.getEnvironment().e1OauthUrl + '/';\r\n }\r\n\r\n startUp() {\r\n console.log('At main.service (StartUp) ...');\r\n }\r\n\r\n setGroup(group: ZGroup) {\r\n this.group = group;\r\n this.fieldService.setGroup(group);\r\n this.resourceApiService.setGroup(group);\r\n this.webApiService.setGroup(group);\r\n const isDebugging = this.zcoreService.isDebugSession() || false;\r\n if (isDebugging) {\r\n this.debugService.onInitDebugger(group, this);\r\n }\r\n }\r\n\r\n getResourceServerData() {\r\n return this.resourceApiService.loadData();\r\n }\r\n\r\n getGroupFields(\r\n ctrlName: string,\r\n formType: \"ListField\" | \"FormField\",\r\n group: ZGroup,\r\n propertyName: string\r\n ) {\r\n return this.fieldService.getFormFieldCode(\r\n ctrlName,\r\n formType,\r\n group,\r\n propertyName\r\n );\r\n }\r\n\r\n initializeGroup(\r\n group: ZGroup,\r\n ctrlName: string,\r\n pageName: string,\r\n me: any\r\n ): Subscription {\r\n if (me.subscription) {\r\n me.subscription.unsubscribe();\r\n }\r\n const resourceName = group.resourceURLName || ctrlName;\r\n group.resourceURLName = resourceName;\r\n\r\n Object.assign(group, {\r\n resourceURL: this.resourceApiService.getURL(resourceName),\r\n gridColumnFields: this.fieldService.getFormFieldCode(\r\n ctrlName,\r\n \"FormField\",\r\n null,\r\n null\r\n ),\r\n ctrlScope: me,\r\n pageName,\r\n ctrlName,\r\n // createModelURL: \"/create\" + ctrlName.toLowerCase(),\r\n editModelURL: ctrlName.toLowerCase(),\r\n // listModelURL: \"/list\" + ctrlName.toLowerCase(),\r\n // formHeader: \"...\",\r\n isLoading: true,\r\n fields: [],\r\n zModel: {},\r\n zComponents: {},\r\n zData: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n // form: null as FormGroup, // removed for bug fix.\r\n cancelButtonName: \"Close\",\r\n zButtonsCount: 0,\r\n // topRightActionButton: [],\r\n // onAction: this.onAction.bind(this),\r\n backNavigation: this.backNavigation.bind(this),\r\n historyBack: this.historyBack.bind(this),\r\n refreshPage: this.refreshPage,\r\n refreshGrid: this.refreshGrid.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n createModel: this.createModel.bind(this),\r\n cloneNewModel: this.cloneNewModel.bind(this),\r\n deleteModel: this.deleteModel.bind(this),\r\n newModel: this.newModel.bind(this),\r\n // _isDebugging: environment.debugSession || false,\r\n // _debug: {\r\n // zData: { collectedActivities: [], activityCount: 0 }\r\n // }\r\n // afterGetModelSuccess: null,\r\n // beforeUpdateModel: null,\r\n // isEdit: false\r\n });\r\n\r\n me.subscription = group.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, group, me)\r\n );\r\n\r\n return me.subscription;\r\n }\r\n\r\n getModel$(group: ZGroup, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService\r\n .httpGet$(group.resourceURL + \"/\" + recId, null)\r\n .pipe(\r\n tap((zmodel) => {\r\n group.zModel = zmodel;\r\n if (\r\n group.parentReferenceField &&\r\n Object.keys(zmodel).indexOf(group.parentReferenceField) !== -1 &&\r\n !group.backNavigationPage.endsWith(\".edit\")\r\n ) {\r\n group.backNavigationPage =\r\n group.backNavigationPage +\r\n \"/\" +\r\n zmodel[group.parentReferenceField].toString() +\r\n \"/edit\";\r\n }\r\n }),\r\n switchMap(() => {\r\n if (group.afterGetModelSuccess) {\r\n return this.afterGetModelSuccess(group);\r\n }\r\n return of([]);\r\n })\r\n );\r\n }\r\n\r\n canExit(form: FormGroup): boolean | Observable<boolean> {\r\n if (!form || !form.dirty) {\r\n return true;\r\n }\r\n\r\n if (form['skipDirtyCheck']) {\r\n return true;\r\n }\r\n\r\n return this.alertService\r\n .show(\"Data not save yet\", \"Are you sure want to discard the changes?\", [\r\n \"Cancel\",\r\n \"Discard Changes\",\r\n ])\r\n .pipe(\r\n switchMap((reply) => {\r\n if (reply === \"Discard Changes\") {\r\n return of(true);\r\n }\r\n return of(false);\r\n })\r\n );\r\n // const replySub = new Subject<boolean>();\r\n // this.alertCtrl\r\n // .create({\r\n // header: \"Data not save yet\",\r\n // // subHeader: 'SubHeader statement here',\r\n // message: \"Are you sure want to discard the changes?\",\r\n // buttons: [\r\n // {\r\n // text: \"Cancel\",\r\n // role: \"cancel\",\r\n // cssClass: \"secondary\",\r\n // handler: () => {\r\n // replySub.next(false);\r\n // }\r\n // },\r\n // {\r\n // text: \"Discard Changes\",\r\n // cssClass: \"warning\",\r\n // handler: () => {\r\n // replySub.next(true);\r\n // }\r\n // }\r\n // ]\r\n // })\r\n // .then(alertElement => {\r\n // alertElement.present();\r\n // });\r\n // return replySub.asObservable().pipe(take(1));\r\n }\r\n\r\n // async openModalForm(modalParams: ModalPageParams) {\r\n // // console.log(\"openModalForm\");\r\n // console.error(\r\n // \"Please use ModalService.show instead of MainService.openModalForm!\"\r\n // );\r\n // // const modal = this.modalService.show(modalParams.colFields$ || modalParams.controllerName, modalParams.parentGroup,\r\n // // modalParams.formHeader, modalParams.zModel, modalParams.referId);\r\n // const modal = await this.modalCtrl.create({\r\n // component: ZmodalPage,\r\n // backdropDismiss: true,\r\n // componentProps: {\r\n // modalParams,\r\n // },\r\n // });\r\n // modal.present();\r\n // return modal;\r\n // // .onWillDismiss((zmodel: any) => {\r\n // // this.\r\n // // });\r\n // }\r\n\r\n closeModalForm() {\r\n this.modalCtrl.dismiss();\r\n }\r\n\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n let callFunc;\r\n\r\n try {\r\n callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n group.ctrlScope,\r\n event.target,\r\n group\r\n );\r\n // ZComponentHelper.getGroupValue(event.Target, group);\r\n } catch (error) {\r\n console.warn(\r\n \"Error when getGroupValue: \",\r\n event.target,\r\n \" > Error: \",\r\n error\r\n );\r\n }\r\n\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, group, me);\r\n } else if (typeof callFunc === \"string\") {\r\n if (event.type.endsWith(\"onNavigateTo\")) {\r\n const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n this.router.navigate([nUrl]);\r\n return;\r\n }\r\n\r\n if (event.type === \"zgrid-cellClick\") {\r\n // (callFunc.startsWith('edit')) { zgrid-cellClick\r\n const cName = callFunc.slice(4);\r\n // // debugger;\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = cName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n\r\n // this.openModalForm(modalGroupParam);\r\n this.modalService.show(\r\n event.columnFields$ || cName,\r\n group,\r\n \"\",\r\n {},\r\n event.data.Id\r\n );\r\n }\r\n } else if (typeof callFunc === \"object\") {\r\n if (event.type === \"zgrid-cellClick\") {\r\n if (callFunc.navigateUrl) {\r\n const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n\r\n const modalGroupParam: ModalPageParams = {};\r\n modalGroupParam.controllerName = callFunc.ctrlName;\r\n modalGroupParam.referId = event.data.Id;\r\n modalGroupParam.colFields$ = event.columnFields$;\r\n modalGroupParam.parentGroup = me.group;\r\n modalGroupParam.formHeader = callFunc.formHeader;\r\n\r\n if (callFunc.formHeader) {\r\n // this.openModalForm(modalGroupParam);\r\n this.modalService.show(\r\n event.columnFields$ || callFunc.ctrlName,\r\n group,\r\n callFunc.formHeader,\r\n {},\r\n event.data.Id\r\n );\r\n return;\r\n }\r\n console.warn(\r\n \"Invalid callFunc type: \",\r\n callFunc,\r\n \" event.Target: \",\r\n event.target\r\n );\r\n }\r\n // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n event.target,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n handleSuccess(res: Response | any, successMsg: string): Response {\r\n this.group.isTriggered = false;\r\n if (res == null) {\r\n this.toastService.show(successMsg);\r\n } else if (res.Data !== undefined && res.ProcessingStatus !== undefined) {\r\n if (res.ProcessingStatus === true) {\r\n if (Array.isArray(res.Data)) {\r\n res.Data.map((s) =>\r\n this.webApiService.showHttpResponseMessage(\r\n MESSAGETYPE.Success,\r\n `${successMsg} : ${s.CostCode}`,\r\n null\r\n )\r\n );\r\n } else {\r\n this.webApiService.showHttpResponseMessage(\r\n MESSAGETYPE.Success,\r\n successMsg,\r\n null\r\n );\r\n }\r\n }\r\n } else {\r\n this.toastService.show(successMsg);\r\n }\r\n return res;\r\n }\r\n\r\n handleError(res: any): Observable<any> {\r\n this.group.isTriggered = false;\r\n return this.webApiService.handleError(res);\r\n }\r\n\r\n private backNavigation(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (group.beforeBackNavigationPage) {\r\n group.beforeBackNavigationPage(group).subscribe(() => {\r\n group['isTriggered'] = false;\r\n this.router.navigate([group.backNavigationPage]);\r\n\r\n //if (group['reload']) {\r\n // group['isTriggered'] = false;\r\n // this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n // return false;\r\n // }\r\n // this.router.onSameUrlNavigation = 'reload';\r\n //}\r\n //this.router.navigate([group.backNavigationPage],);\r\n })\r\n }\r\n else {\r\n group['isTriggered'] = false;\r\n \r\n //this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n // return false;\r\n //}\r\n //this.router.onSameUrlNavigation = 'reload';\r\n\r\n this.router.navigate([group.backNavigationPage]);\r\n }\r\n }\r\n\r\n private historyBack() {\r\n this.group.isTriggered = false;\r\n this.navController.pop();\r\n }\r\n\r\n public refreshGrid(\r\n event: ZComponentOutputEvent,\r\n group: ZGroup,\r\n me: any,\r\n gridOptionName?: string\r\n ) {\r\n gridOptionName = gridOptionName || \"gridOptions\";\r\n if (event && event.target) {\r\n const gridOption = event.target\r\n .trim()\r\n .replace(\"(\", \"\")\r\n .replace(\")\", \"\")\r\n .replace(\"group.refreshGrid\", \"\");\r\n if (gridOption.length > 0) {\r\n gridOptionName = gridOption;\r\n }\r\n }\r\n\r\n const zgridControl = group[gridOptionName] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group['isTriggered'] = false;\r\n }\r\n\r\n private refreshPage() {\r\n if (this.group) {\r\n this.group.isTriggered = false;\r\n }\r\n location.reload();\r\n // this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n // this.router.onSameUrlNavigation = 'reload';\r\n // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n // this.router.navigate(['/crm/customer']);\r\n }\r\n\r\n getCloneNewCacheZModel(group: ZGroup) {\r\n const cacheZModel = this.cacheService.getCache(\"cloneNewModel\");\r\n if (cacheZModel) {\r\n this.cacheService.clearCache(\"cloneNewModel\");\r\n group.zModel = cacheZModel;\r\n group.zModel.Id = 0;\r\n }\r\n group.isTriggered = false;\r\n }\r\n\r\n private newModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n of([])\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before new, zModel:\", zmodel);\r\n return this.beforeNewModel(_group);\r\n }),\r\n tap(() => {\r\n const referenceId = group.parentReferenceId || \"0\";\r\n console.log(\"current url: \", this.router.url);\r\n const pathSegment = this.router.url.split(\"/\");\r\n const lastSegment = pathSegment[pathSegment.length - 1];\r\n if (lastSegment === \"edit\") {\r\n const newPath = pathSegment.slice(0, pathSegment.length - 2);\r\n newPath.push(referenceId);\r\n newPath.push(\"new\");\r\n const cacheZModel = this.cacheService.getCache(\"cloneNewModel\");\r\n if (!cacheZModel) {\r\n // Skip if it CloneNew\r\n this.router.navigateByUrl(this.group.backNavigationPage, { skipLocationChange: true }).then(() => {\r\n this.group.zModel = {};\r\n this.group.isEdit = false;\r\n this.group.isNew = true;\r\n this.group.isTriggered = false;\r\n this.router.navigate(newPath);\r\n });\r\n }\r\n else {\r\n this.router.navigate(newPath);\r\n }\r\n } else if (lastSegment === \"new\") {\r\n group.zModel = {};\r\n group.form.reset();\r\n //group.form.markAsPristine();\r\n group.isEdit = false;\r\n group.isNew = true;\r\n group.isTriggered = false;\r\n group.zModel[\r\n group.parentReferenceField\r\n ] = group.parentReferenceId.toString();\r\n } else {\r\n group.isTriggered = false;\r\n this.router.navigate([group.editModelURL, referenceId, \"new\"], {\r\n relativeTo: group.ctrlScope.activatedRoute,\r\n });\r\n //this.router.navigate([group.editModelURL, referenceId, \"new\"]);\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public createModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n let createModelres = null;\r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n \r\n if (!fg.dirty) {\r\n console.warn(\"Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService, group);\r\n console.warn(\"Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before create, zModel:\", zmodel);\r\n return this.beforeCreateModel(_group);\r\n }),\r\n tap(() => {\r\n Object.assign(_group.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n const newModel = Object.assign({}, _group.zModel);\r\n ZComponentHelper.removeNullFields(newModel);\r\n // Object.keys(newModel).forEach((key) => {\r\n // if (newModel[key] === null) {\r\n // delete newModel[key];\r\n // }\r\n // });\r\n // if (!newModel.Id) {\r\n // newModel.Id = 0;\r\n // }\r\n\r\n return this.webApiService\r\n .httpPost$(\r\n _group.resourceURL, // + \"/\" + group.zModel.Id,\r\n newModel\r\n )\r\n .pipe(\r\n tap((resp) => {\r\n createModelres = resp;\r\n return resp;\r\n }),\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is created successfully.\")\r\n )\r\n ); \r\n }),\r\n switchMap((zmodel: any) => {\r\n\r\n console.log(\"After created, zModel:\", zmodel);\r\n if (zmodel) {\r\n\r\n //support old and new webapi method\r\n if (zmodel.Data) {\r\n Object.assign(_group.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n }\r\n else if (zmodel[\"Id\"]) {\r\n Object.assign(_group.zModel, zmodel);\r\n fg.patchValue(zmodel);\r\n }\r\n\r\n _group.referenceId = _group.zModel.Id;\r\n fg.markAsPristine();\r\n }\r\n\r\n return this.afterCreateModel(_group);\r\n }),\r\n tap((resp) => {\r\n if (createModelres.ProcessingStatus == null || createModelres.ProcessingStatus == true) {\r\n if (resp && _group.zModel.Id !== 0) {\r\n _group.isNew = false;\r\n _group.isEdit = true;\r\n _group.isTriggered = false;\r\n _group.cancelButtonName = \"Close\";\r\n Object.assign(_group.zModel, resp);\r\n fg.patchValue(resp);\r\n }\r\n fg.markAsPristine();\r\n } else {\r\n fg.markAsDirty();\r\n }\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n // this.toastService.show(\"Record is created successfully.\");\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public updateModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n if (!fg.dirty) {\r\n console.warn(\"Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService, group);\r\n console.warn(\"Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before update, zModel:\", zmodel);\r\n return this.beforeUpdateModel(_group);\r\n }),\r\n tap(() => {\r\n Object.assign(_group.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n return this.webApiService\r\n .httpPut$(_group.resourceURL + \"/\" + _group.zModel.Id, _group.zModel)\r\n .pipe(\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is updated successfully.\")\r\n )\r\n );\r\n }),\r\n switchMap((zmodel: any) => {\r\n console.log(\"After updated, zModel:\", zmodel);\r\n if (zmodel && zmodel.Data) {\r\n Object.assign(_group.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n }\r\n else if (zmodel && zmodel[\"Id\"]) {\r\n Object.assign(_group.zModel, zmodel);\r\n fg.patchValue(zmodel);\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n }\r\n\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n\r\n fg.markAsPristine();\r\n return this.afterUpdateModel(_group);\r\n })\r\n )\r\n .subscribe();\r\n // Object.assign(group.zModel, fg.value);\r\n // this.webApiService\r\n // .httpPut$(group.resourceURL + \"/\" + group.zModel.Id, group.zModel)\r\n // .subscribe(resp => {\r\n // Object.assign(group.zModel, resp);\r\n // fg.patchValue(resp);\r\n // fg.markAsPristine();\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n // });\r\n }\r\n\r\n private cloneNewModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n Object.assign(_group.zModel, _group.form.value);\r\n _group.zModel.Id = 0;\r\n\r\n const clearFields = [\"WFS_DocumentId\", \"WFS_StatusCode\", \"WFS_StatusName\"];\r\n clearFields.forEach((field) => {\r\n if (_group.zModel.hasOwnProperty(field)) {\r\n _group.zModel[field] = null;\r\n }\r\n });\r\n\r\n this.cacheService.setCache(\"cloneNewModel\", group.zModel);\r\n this.newModel(null, group);\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n }\r\n\r\n private deleteModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n \r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before delete, zModel:\", zmodel);\r\n return this.beforeDeleteModel(_group);\r\n }),\r\n switchMap(() => {\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n return this.alertService.show(\"Delete Record\", \"Are you sure?\",\r\n [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ]);\r\n }),\r\n switchMap((reply: string) => {\r\n if (reply === \"Yes\") {\r\n Object.assign(_group.zModel, fg.value);\r\n _group.zModel.Disabled = true;\r\n\r\n return this.webApiService\r\n .httpPut$(_group.resourceURL + \"/\" + _group.zModel.Id, _group.zModel)\r\n .pipe(\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is deleted successfully.\")\r\n ),\r\n switchMap((zmodel) => {\r\n console.log(\"After deleted, zModel:\", zmodel);\r\n return this.afterDeleteModel(_group);\r\n }),\r\n tap((resp) => {\r\n this.historyBack();\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private beforeUpdateModel(group: ZGroup) {\r\n if (!group.beforeUpdateModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeUpdateModel(group);\r\n }\r\n\r\n private beforeDeleteModel(group: ZGroup) {\r\n if (!group.beforeDeleteModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeDeleteModel(group);\r\n }\r\n\r\n private beforeNewModel(group: ZGroup) {\r\n if (!group.beforeNewModel) {\r\n console.warn(\"group.beforeNewodel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeNewModel(group);\r\n }\r\n\r\n private beforeCreateModel(group: ZGroup) {\r\n if (!group.beforeCreateModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeCreateModel(group);\r\n }\r\n\r\n beforePageInitialise(group: ZGroup) {\r\n if (!group.beforePageInitialise) {\r\n console.warn(\"group.beforePageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.beforePageInitialise(group);\r\n }\r\n\r\n private afterGetModelSuccess(group: ZGroup): Observable<any> {\r\n if (!group.zModel.Id) {\r\n console.warn(\"zModel.Id is not defined\", group.zModel);\r\n return of({});\r\n }\r\n if (!group.afterGetModelSuccess) {\r\n console.warn(\"group.afterGetModelSuccess is not defined\");\r\n return of({});\r\n }\r\n return group.afterGetModelSuccess(group);\r\n }\r\n\r\n afterNewModel(group: ZGroup): Observable<any> {\r\n if (!group.afterNewModel) {\r\n console.warn(\"group.afterNewModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterNewModel(group);\r\n }\r\n\r\n private afterCreateModel(group: ZGroup): Observable<any> {\r\n if (!group.afterCreateModel) {\r\n console.warn(\"group.afterCreateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterCreateModel(group);\r\n }\r\n\r\n private afterUpdateModel(group: ZGroup): Observable<any> {\r\n if (!group.afterUpdateModel) {\r\n console.warn(\"group.afterUpdateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterUpdateModel(group);\r\n }\r\n\r\n private afterDeleteModel(group: ZGroup): Observable<any> {\r\n if (!group.afterDeleteModel) {\r\n console.warn(\"group.afterDeleteModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterDeleteModel(group);\r\n }\r\n\r\n afterPageInitialise(group: ZGroup) {\r\n if (!group.afterPageInitialise) {\r\n console.warn(\"group.afterPageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.afterPageInitialise(group);\r\n }\r\n\r\n // private onAction(group: ZGroup) {\r\n // this.actionSheetCtrl\r\n // .create({\r\n // header: \"Choose an Action\",\r\n // buttons: group.topRightActionButton\r\n // })\r\n // .then(actionSheetEl => {\r\n // actionSheetEl.present();\r\n // });\r\n // }\r\n\r\n // setModelValue(propertyName: string, value: any, group: ZGroup) {\r\n // group.zModel[propertyName] = value;\r\n // if (group.isLoading) {\r\n // return;\r\n // }\r\n // const fg = group.form as FormGroup;\r\n // if (!fg) {\r\n // eslint-disable-next-line , no-debugger\r\n // debugger;\r\n // }\r\n // const fc = fg.controls[propertyName];\r\n // if (!fc) {\r\n // eslint-disable-next-line no-debugger\r\n // debugger;\r\n // }\r\n // fc.setValue(value);\r\n // fc.markAsDirty();\r\n // }\r\n\r\n public async showzModal(\r\n colFields$: string | Observable<Array<ZField>>,\r\n parentGroup: ZGroup,\r\n formHeader: string,\r\n zModel?: any,\r\n referId?: string,\r\n componentSize?: ZComponentSize,\r\n skipIsDirtyCheck?: boolean\r\n ) {\r\n const modalcomponent = ZmodalComponent;\r\n const modalmobilecomponent = ZmodalMobileComponent;\r\n\r\n if (parentGroup) {\r\n // disable isTriggered before display the popup.\r\n parentGroup.isTriggered = false;\r\n }\r\n return await this.modalService.show(colFields$, parentGroup, formHeader, modalcomponent, modalmobilecomponent, zModel, referId, componentSize, skipIsDirtyCheck)\r\n //const modal = await this.modalService.show();\r\n }\r\n\r\n\r\n public cookieStorePost(name: string, value: any): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores\";\r\n const cookieStoreValue = {\r\n 'Name': name,\r\n 'Value': JSON.stringify(value)\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) {\r\n console.log(\"grid config saved(\" + res.status + \"): \", res);\r\n return res;\r\n }\r\n })); \r\n } \r\n\r\n public cookieStoreGet(name: string, accessToken: string): Observable<any> {\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores/?name=\" + name;\r\n\r\n return this.webApiService.httpGet$(cookieStoreURL, { headers: accessToken }).pipe(map(res => {\r\n if (res) { \r\n return res;\r\n }\r\n })); \r\n }\r\n\r\n public cookieStoreDeleteMultiple(name: string): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"Admin/DeleteMultipleCookies\";\r\n const cookieStoreValue = {\r\n 'containName': name\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) { \r\n return res;\r\n }\r\n }));\r\n }\r\n}\r\n\r\nexport function refreshGrid(group: ZGroup) {\r\n const zgridControl = group[\"gridOptions\"] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group.isTriggered = false;\r\n}\r\n","import { NgModule, Directive, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appScrollbarTheme]'\r\n})\r\nexport class ScrollbarThemeDirective implements OnInit {\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n private stylesheet = `\r\n ::-webkit-scrollbar {\r\n width: 5px;\r\n }\r\n ::-webkit-scrollbar-track {\r\n background: var(--ion-color-light);\r\n }\r\n ::-webkit-scrollbar-thumb {\r\n border-radius: 2px;\r\n background: var(--ion-color-light-shade);\r\n border: 0 solid #020202;\r\n }\r\n ::-webkit-scrollbar-thumb:hover {\r\n }\r\n `;\r\n\r\n // background: linear-gradient(var(--ion-color-medium-tint), var(--ion-color-light));\r\n\r\n ngOnInit(): void {\r\n const styleElmt = this.el.nativeElement.shadowRoot.querySelector('style');\r\n if (styleElmt) {\r\n styleElmt.append(this.stylesheet);\r\n } else {\r\n const barStyle = document.createElement('style');\r\n barStyle.append(this.stylesheet);\r\n this.el.nativeElement.shadowRoot.appendChild(barStyle);\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fieldelement]'\r\n})\r\nexport class FieldElementDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, OnInit, OnDestroy, Input, Inject } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Router } from \"@angular/router\";\r\nimport { Subscription, Observable, Subject, of, AsyncSubject } from \"rxjs\";\r\nimport { tap, delay, switchMap, concatMap } from \"rxjs/operators\";\r\nimport {\r\n DataBindingDirective,\r\n GridComponent,\r\n DataStateChangeEvent,\r\n PageChangeEvent,\r\n} from \"@progress/kendo-angular-grid\";\r\nimport {\r\n SortDescriptor,\r\n State,\r\n FilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, GridCaching, WebApiService,\r\n ZComponentHelper, ZField, ZGridPostApiParams, ZGridColumnSettings,\r\n ZGridStatePersistingService, ZGroup, StorageSessionService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Directive({\r\n selector: \"[zgridbinding]\",\r\n})\r\nexport class ZGridBindingDirective extends DataBindingDirective implements OnInit, OnDestroy {\r\n private serviceSubscription: Subscription;\r\n @Input() zgridbinding: {\r\n data: ZField;\r\n group: ZGroup;\r\n params: ZGridPostApiParams;\r\n gridSubject: Subject<any>;\r\n };\r\n\r\n state: State = {\r\n skip: 0,\r\n take: 10,\r\n };\r\n\r\n gridColumns: any[] = [];\r\n\r\n usableColumns: any[] = [];\r\n\r\n resourceURL = null;\r\n\r\n paginationApiPostUrl = null;\r\n\r\n dataSource = null;\r\n\r\n get field() {\r\n return this.zgridbinding.data;\r\n }\r\n\r\n get grp() {\r\n return this.zgridbinding.group;\r\n }\r\n\r\n get gridSubject() {\r\n return this.zgridbinding.gridSubject;\r\n }\r\n\r\n get params(): ZGridPostApiParams {\r\n return this.zgridbinding.params;\r\n }\r\n\r\n get getData() {\r\n return this.grid.data;\r\n }\r\n\r\n constructor(\r\n @Inject(GridComponent) grid,\r\n private webapiService: WebApiService,\r\n private authService: AuthService,\r\n private storageService: StorageSessionService,\r\n private router: Router,\r\n private zGridStatePersistingService: ZGridStatePersistingService\r\n ) {\r\n super(grid);\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.field.SkipDirective) {\r\n return;\r\n }\r\n\r\n super.ngOnInit();\r\n this.grid.loading = true;\r\n this.state.take = this.field.PageSize || 20;\r\n this.pageSize = this.state.take;\r\n this.dataSource = this.field.DataSource ? this.field.DataSource : null;\r\n\r\n if (!this.dataSource) {\r\n this.resourceURL = ZComponentHelper.getGroupValue(\r\n this.field.ResourceURL,\r\n this.grp\r\n );\r\n // console.log(\"At zgrid.component (OnInit) resourceURL: \", resourceURL);\r\n if (!this.resourceURL) {\r\n this.grid.loading = false;\r\n if (this.zgridbinding.data.Name !== \"ActivityLogGrid\") {\r\n console.warn(\r\n \"No initialise for Field.ResourceURL: \",\r\n this.field.ResourceURL\r\n );\r\n }\r\n return;\r\n }\r\n\r\n const array = this.resourceURL.split(\"/api/\");\r\n if (!!array[1]) {\r\n array[1] = \"Page\" + array[1];\r\n this.paginationApiPostUrl = array.join(\"/api/\");\r\n } else {\r\n const arr = this.resourceURL.split(\"/\");\r\n arr[arr.length - 2] = \"Page\" + arr[arr.length - 2];\r\n this.paginationApiPostUrl = arr.join(\"/\");\r\n }\r\n\r\n this.setFilterParamsByParentRefId();\r\n }\r\n\r\n this.gridSubject.next(this);\r\n this.generateGridColumns();\r\n }\r\n\r\n private setFilterParamsByParentRefId() {\r\n // Use field own referenceId if available\r\n const refId = this.getFieldReferenceId() || this.grp.referenceId;\r\n const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n if (refId && refField) {\r\n const filterValue = {\r\n key: refField,\r\n ops: \"=\",\r\n value: refId,\r\n };\r\n // if (this.params.filterParams.find(x => x.key === filterValue.key) === undefined) {\r\n this.params.filterParams.push(filterValue);\r\n // }\r\n }\r\n }\r\n\r\n private getFieldReferenceId() {\r\n let fieldReferenceId = null;\r\n if (this.field.ReferenceId) {\r\n fieldReferenceId = ZComponentHelper.getGroupValue(\r\n this.field.ReferenceId,\r\n this.grp\r\n );\r\n }\r\n return fieldReferenceId;\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.serviceSubscription) {\r\n this.serviceSubscription.unsubscribe();\r\n }\r\n super.ngOnDestroy();\r\n }\r\n\r\n public generateGridColumns() {\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.field.ColumnFields,\r\n this.grp\r\n );\r\n columnFields$\r\n .pipe(\r\n tap((data) => {\r\n const gridSetting = this.getGridSettings();\r\n const fieldName = this.field[\"FieldElementName\"];\r\n\r\n ZComponentHelper.getGridColumns(\r\n data,\r\n this.gridColumns,\r\n this.zgridbinding.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n this.usableColumns\r\n );\r\n this.getFilterParamsColumns();\r\n this.getFilter();\r\n this.getFilterParams();\r\n this.getSorting();\r\n this.getGrantType();\r\n this.setHiddenColumn(gridSetting);\r\n\r\n this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;\r\n //}),\r\n //switchMap(() => {\r\n // //Get Session\r\n // return this.getGridSessionFilter(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Before get grid data\r\n // return this.beforeGridGetData(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Set grid data\r\n // return this.setGridSessionFilter(this.grp, this);\r\n })\r\n )\r\n .subscribe(() => {\r\n this.getDataBinding();\r\n });\r\n }\r\n\r\n private getFilterParamsColumns() {\r\n const colFields: Array<string> = [];\r\n this.gridColumns.forEach((field) => {\r\n if (field.valueExpr) {\r\n colFields.push(field.valueExpr + \" as \" + field.field);\r\n } else {\r\n colFields.push(field.field);\r\n }\r\n });\r\n\r\n if (colFields.length > 0) {\r\n if (colFields.indexOf(\"Id\") === -1) {\r\n colFields.push(\"Id\");\r\n }\r\n }\r\n\r\n let tmpGridColumn: any[] = [];\r\n tmpGridColumn.push(colFields.join(\",\"));\r\n if (this.usableColumns.length > 0) {\r\n tmpGridColumn.push(this.usableColumns.join(\",\"));\r\n }\r\n this.params.columns = tmpGridColumn.join(\",\");\r\n }\r\n\r\n private getFilter() {\r\n if (this.params.filters && this.field.Filters) {\r\n this.params.filters = this.params.filters + \" && \" + this.field.Filters;\r\n } else if (!this.params.filters && this.field.Filters) {\r\n this.params.filters = this.field.Filters;\r\n }\r\n\r\n if (this.field.Filters && this.field.Filters.indexOf(\"group.\") !== -1) {\r\n const filterKeyValPairs = this.field.Filters.split(\" \");\r\n const grpValues = filterKeyValPairs.filter(\r\n (element) => element.trim().indexOf(\"group.\") !== -1\r\n );\r\n\r\n grpValues.forEach((val) => {\r\n const actualVal = ZComponentHelper.getGroupValue(val, this.grp);\r\n this.params.filters = this.params.filters.replace(val, actualVal);\r\n });\r\n }\r\n }\r\n\r\n private getFilterParams() {\r\n if (this.field['FilterParams']) {\r\n if (this.field['FilterParams'].indexOf(\"group.\") !== -1) {\r\n this.params.filterParams = ZComponentHelper.getGroupValue(this.field['FilterParams'], this.grp);\r\n } else {\r\n this.params.filterParams = this.field['FilterParams'];\r\n }\r\n }\r\n }\r\n\r\n private getSorting() {\r\n if (this.field.SortOrder) {\r\n if (this.field.SortOrder.indexOf(\"group.\") !== -1) {\r\n this.params.sortOrder = ZComponentHelper.getGroupValue(this.field.SortOrder, this.grp);\r\n } else {\r\n this.params.sortOrder = this.field.SortOrder;\r\n }\r\n }\r\n }\r\n\r\n private getGrantType() {\r\n if (this.field.GrantType) {\r\n this.params.grantType = ZComponentHelper.getGroupValue(this.field.GrantType.toString(), this.grp);\r\n }\r\n }\r\n\r\n private setHiddenColumn(gridSetting: ZGridColumnSettings[]) {\r\n if (this.gridColumns && gridSetting) {\r\n // filter out hidden == false array.\r\n const gridSettingHiddenCol = gridSetting.filter(function (item) {\r\n return item['hidden'] == true;\r\n });\r\n\r\n // find and set the hidden to current column setting.\r\n Object.values(gridSettingHiddenCol).forEach(value => {\r\n if (this.gridColumns.find((c) => c.field === value.field)) {\r\n this.gridColumns.find((c) => c.field === value.field)['hidden'] = value['hidden'];\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n public getDataBinding(): void {\r\n this.grid.loading = true;\r\n\r\n if (!this.dataSource) {\r\n this.params.pageSize = this.state.take;\r\n if (this.field.ExternalPagination) {\r\n // For POST method Page WebAPI\r\n this.webapiService\r\n .postApi(\r\n this.paginationApiPostUrl,\r\n this.params,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n this.aggregateHandling(data.dataSet);\r\n this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n });\r\n } else {\r\n // For GET method\r\n this.webapiService\r\n .getApi(this.resourceURL, null, null, null, null, null, true)\r\n .subscribe((data) => {\r\n let _data = null;\r\n let _totalCount = 0;\r\n\r\n if (data.dataSet) {\r\n _data = data.dataSet;\r\n _totalCount = data.totalCount;\r\n } else {\r\n _data = data;\r\n _totalCount = data.length;\r\n }\r\n\r\n this.aggregateHandling(_data);\r\n this.grid.data = { data: _data, total: _totalCount };\r\n this.grid.pageSize = _totalCount;\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n });\r\n }\r\n } else {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.field.DataSource,\r\n this.grp\r\n );\r\n\r\n if (ds) {\r\n this.grid.data = {\r\n data: ds,\r\n total: ds.length,\r\n };\r\n this.grid.pageSize = ds.length;\r\n }\r\n this.gridSubject.next(this);\r\n this.grid.loading = false;\r\n }\r\n }\r\n\r\n public clearData(): void {\r\n this.grid.data = { data: [], total: 0 };\r\n }\r\n\r\n\r\n private aggregateHandling(data: any) {\r\n const aggregateColumns = this.gridColumns.filter(x => x.aggregateType);\r\n\r\n aggregateColumns.forEach(col => {\r\n const field = col.field;\r\n\r\n let _aggregateValue = null;\r\n switch (col.aggregateType.slice(0, -1).toLowerCase()) {\r\n case \"total\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n break;\r\n }\r\n case \"sum\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n break;\r\n }\r\n case \"average\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0) / data.length;\r\n break;\r\n }\r\n case \"count\": {\r\n _aggregateValue = data.length;\r\n break;\r\n }\r\n case \"max\": {\r\n _aggregateValue = data.reduce((p, c) => p[field] > c[field] ? p : c)[field];\r\n break;\r\n }\r\n case \"min\": {\r\n _aggregateValue = data.reduce((p, c) => p[field] < c[field] ? p : c)[field];\r\n break;\r\n }\r\n }\r\n\r\n col.aggregateValue = _aggregateValue;\r\n });\r\n }\r\n\r\n private aggregateResetValue() {\r\n const aggregateColumns = this.gridColumns.filter(x => x.aggregateType);\r\n aggregateColumns.forEach(col => {\r\n col.aggregateValue = 0;\r\n });\r\n }\r\n\r\n\r\n public pageChange(event: PageChangeEvent): void {\r\n this.params.pageNo = event.skip / this.params.pageSize;\r\n this.state.skip = event.skip;\r\n this.getDataBinding();\r\n }\r\n\r\n public sortChange(sort: SortDescriptor[]): void {\r\n this.sort = sort;\r\n this.params.sortColumnNames = [];\r\n this.params.sortOrders = [];\r\n\r\n sort.forEach((f) => {\r\n if (f.dir) {\r\n this.params.sortOrders.push(f.dir);\r\n\r\n const field = this.gridColumns.find((c) => c.field === f.field);\r\n if (field.valueExpr !== undefined) {\r\n this.params.sortColumnNames.push(field.valueExpr);\r\n } else {\r\n this.params.sortColumnNames.push(f.field);\r\n }\r\n }\r\n });\r\n this.getDataBinding();\r\n }\r\n\r\n public filterChange(event: any): void {\r\n this.params.pageNo = 0;\r\n this.params.filterParams = [];\r\n this.setFilterParamsByParentRefId();\r\n\r\n console.log(event);\r\n if (event) {\r\n if (event.filters.length > 0) {\r\n event.filters.forEach((item) => {\r\n const field = this.gridColumns.find((c) => c.field === item.field);\r\n\r\n if (item.filters) {\r\n item.filters.forEach((f: FilterDescriptor) => {\r\n if (f.value === null) {\r\n f.value = \"\"; // convert null to \"\"\r\n }\r\n this.params.filterParams.push({\r\n key: f.field as string,\r\n ops: this.mapFilterOperator(f.operator),\r\n value: f.value,\r\n });\r\n });\r\n } else {\r\n if (item.value === null) {\r\n item.value = \"\"; // convert null to \"\"\r\n }\r\n this.params.filterParams.push({\r\n key:\r\n field.valueExpr !== undefined\r\n ? `(${field.valueExpr})`\r\n : item.field,\r\n ops: this.mapFilterOperator(item.operator),\r\n value: item.value,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n this.setGridSessionFilter(this.grp, this);\r\n this.getDataBinding();\r\n\r\n\r\n }\r\n\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n // this.state = state;\r\n this.skip = state.skip;\r\n this.pageSize = state.take;\r\n this.state.skip = state.skip;\r\n this.state.take = state.take;\r\n this.grid.loading = true;\r\n this.aggregateResetValue();\r\n }\r\n\r\n private mapFilterOperator(operator: any) {\r\n switch (operator) {\r\n case \"eq\":\r\n return \"eq\";\r\n case \"neq\":\r\n return \"neq\";\r\n case \"lt\":\r\n return \"lt\";\r\n case \"lte\":\r\n return \"lte\";\r\n case \"gt\":\r\n return \"gt\";\r\n case \"gte\":\r\n return \"gte\";\r\n case \"startswith\":\r\n return \"startswith\";\r\n case \"endswith\":\r\n return \"endswith\";\r\n case \"isnull\":\r\n return \"isnull\";\r\n case \"isnotnull\":\r\n return \"isnotnull\";\r\n case \"contains\": {\r\n if (!this.field['FilterContainsUsingEqual']) {\r\n return \"contains\";\r\n } \r\n }\r\n default:\r\n return \"==\";\r\n // eq, neq, isnull, isnotnull, endswith, startswith\r\n }\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.field.Name + '::' + this.router.url;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching) {\r\n const _gridCaching: GridCaching = JSON.parse(_arrGridCaching['Value']);\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n public beforeGridGetData(group: ZGroup, me: any) {\r\n console.warn(\"beforeDataBinding triggered\");\r\n if (!group.beforeGridGetData) {\r\n console.warn(\"group.beforeDataBinding is undefined\");\r\n return of(true);\r\n }\r\n return group.beforeGridGetData(group, me);\r\n }\r\n\r\n private getGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return of([]);\r\n }\r\n\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n if (this.storageService) {\r\n const subject = new Subject<string>();\r\n\r\n of(true)\r\n .pipe(\r\n switchMap(() => {\r\n return this.storageService.get(StorageKey);\r\n }),\r\n tap(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n subject.next(); \r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.state.filter = JSON.parse(result[\"StateFilter\"]);\r\n this.params.filterParams = JSON.parse(result[\"FilterParams\"]);\r\n\r\n this.state.filter.filters.forEach((d: any) => {\r\n if (d.field.includes('UTC')) {\r\n d.value = new Date(d.value);\r\n }\r\n });\r\n\r\n subject.next(); \r\n }\r\n })\r\n ).subscribe();\r\n\r\n return subject.asObservable();\r\n }\r\n else {\r\n return of([]);\r\n }\r\n }\r\n\r\n private setGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n\r\n const StorageKey = group[\"GridStorageKey\"]; \r\n\r\n if (me.state.filter && this.storageService && this.field['SaveFilter']) {\r\n //list of data for StateFilter and FilterParams\r\n const lstGridFilter = { \"StateFilter\": JSON.stringify(me.state.filter), \"FilterParams\": JSON.stringify(me.params.filterParams) }\r\n //create session storage\r\n this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[popupAnchor]',\r\n exportAs: 'popupAnchor'\r\n})\r\nexport class ZGridPopupAnchorDirective {\r\n constructor(public element: ElementRef\r\n ) {\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Directive({\r\n selector: 'kendo-combobox[openOnFocus]'\r\n})\r\nexport class OpenOnFocusDirective {\r\n\r\n @Input() openOnFocus: ComboBoxComponent;\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this.openOnFocus) {\r\n if (!this.openOnFocus.readonly) {\r\n this.openOnFocus.toggle(true);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('blur') onBlur() {\r\n if (this.openOnFocus) {\r\n this.openOnFocus.toggle(false);\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"dateParser\",\r\n pure: true,\r\n})\r\nexport class DateParserFilter implements PipeTransform {\r\n transform(items: any): any {\r\n // debugger;\r\n if (!items) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n try {\r\n const d = new Date(items);\r\n return d;\r\n } catch (error) {\r\n console.log(\"DateParserFilter error: \", error);\r\n return null;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Pipe({\r\n name: 'editorfilter',\r\n pure: false\r\n})\r\nexport class EditorFilter implements PipeTransform {\r\n transform(source: any): any {\r\n if (!source) {\r\n return;\r\n }\r\n if (typeof source === \"string\") {\r\n try {\r\n const jsonValue = JSON.parse(source);\r\n return JSON.stringify(jsonValue, null, 2);\r\n // return this.safeStringify(jsonValue);\r\n } catch {\r\n return source;\r\n }\r\n }\r\n if (typeof source === \"object\" || Array.isArray(source)) {\r\n try {\r\n return JSON.stringify(source, null, 2);\r\n // return this.safeStringify(source);\r\n } catch {\r\n return \"problem - [Circular structure to JSON]\";\r\n }\r\n }\r\n\r\n }\r\n\r\n private safeStringify(jsonValue: any) {\r\n // Note: cache should not be re-used by repeated calls to JSON.stringify.\r\n const cache: Array<any> = [];\r\n return JSON.stringify(jsonValue, (key, value) => {\r\n if (typeof value === 'object' && value !== null) {\r\n // Duplicate reference found, discard key\r\n if (cache.includes(value)) {\r\n // debugger;\r\n // return \"problem - [Circular structure to JSON]\";\r\n return;\r\n }\r\n // Store value in our collection\r\n cache.push(value);\r\n }\r\n return value;\r\n }, 2);\r\n // cache = null; // Enable garbage collection\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'divzlayout',\r\n pure: true\r\n})\r\nexport class DivzLayout implements PipeTransform {\r\n transform(items: any, zlayout: string): any {\r\n if (!items || !zlayout) {\r\n return items;\r\n }\r\n\r\n // if got zlayout, in div: 2 = 2 col per row; 3 = 1 col per row; \r\n if (zlayout == \"2\") {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-6\";\r\n });\r\n }\r\n else if (zlayout == '3') {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-12\";\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n}","import { Component, Injectable } from \"@angular/core\";\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zreport\",\r\n templateUrl: \"./zreport.component.html\",\r\n styleUrls: [\"./zreport.component.scss\"],\r\n})\r\n\r\n// @dynamic\r\nexport class ExportOptions {\r\n viewerToolTipOpening = null;\r\n resourceURL = null;\r\n ReportSource = null;\r\n ready = null;\r\n exportBegin = null;\r\n exportEnd = null;\r\n onRenderingEnd = null;\r\n viewerContainerStyle = null;\r\n isVisible = null;\r\n paramToResizeReportViewer = null;\r\n resizeReportView = null;\r\n // public static instance: ExportOptions;\r\n // public static init(component: any) {\r\n // if (!ExportOptions.instance) {\r\n // ExportOptions.instance = new ExportOptions();\r\n // }\r\n // ExportOptions.instance.bindEvents(component);\r\n\r\n // // Add the options when init. Sometime it will not init the class.\r\n // ExportOptions.instance.hideOptions = [\"PDF\", \"CSV\", \"XLS\", \"XLSX\", \"RTF\", \"IMAGE\", \"MHTML\", \"XPS\"];\r\n // }\r\n\r\n private largeMenuBound = false;\r\n private sideMenuBound = false;\r\n private reportSource = \"\";\r\n private hideOptions = [];\r\n\r\n public update(reportSource: string) {\r\n this.reportSource = reportSource;\r\n // show all extensions\r\n //$('[data-command-parameter]').show();\r\n\r\n // check to hide options\r\n this.hideUnwantedOptions();\r\n }\r\n\r\n public bindEvents(component: any) {\r\n this.exportOption(component);\r\n\r\n const sideMenu = $(\".trv-side-menu\").children(\"ul\").data('kendoPanelBar');\r\n const largeMenu = $(\".trv-menu-large\").data(\"kendoMenu\");\r\n const smallMenu = $(\".trv-menu-small\");\r\n\r\n // hide export button if all option is not available\r\n if (this.hideOptions.length == 8) {\r\n const exportButton = $(\"[data-command*='telerik_ReportViewer_export']\")\r\n exportButton.hide();\r\n }\r\n\r\n // bind to the 'open' event of the main menu\r\n if (!this.largeMenuBound && largeMenu) {\r\n largeMenu.bind(\"open\", () => {\r\n this.hideUnwantedOptions();\r\n });\r\n\r\n this.largeMenuBound = true;\r\n }\r\n\r\n // bind to the 'expand' event of the side menu\r\n if (!this.sideMenuBound && smallMenu) {\r\n if (sideMenu) {\r\n sideMenu.bind(\"expand\", () => {\r\n // recheck export options\r\n //if (reloadHideOptions) {\r\n // thisComponent.exportOption(thisComponent);\r\n //}\r\n this.hideUnwantedOptions();\r\n });\r\n }\r\n\r\n this.sideMenuBound = true;\r\n }\r\n }\r\n\r\n public exportOption(component: any) {\r\n const _data = component.data;\r\n if (_data.EnableExportPDF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"PDF\");\r\n }\r\n if (_data.EnableExportCSV) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"CSV\");\r\n }\r\n if (_data.EnableExportExcel) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XLS\");\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XLSX\");\r\n }\r\n if (_data.EnableExportRTF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"RTF\");\r\n }\r\n if (_data.EnableExportTIFF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"IMAGE\");\r\n }\r\n if (_data.EnableExportMHTML) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"MHTML\");\r\n }\r\n if (_data.EnableExportXPS) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XPS\");\r\n }\r\n }\r\n\r\n public hideUnwantedOptions() {\r\n // show all extensions\r\n $('[data-command-parameter]').show();\r\n\r\n // hide the specified extensions\r\n $.each(this.hideOptions, function (index, item) {\r\n var hiddenOption = $('[data-command-parameter=\"' + item + '\"]');\r\n if (hiddenOption && hiddenOption.length) {\r\n hiddenOption.hide();\r\n }\r\n });\r\n }\r\n\r\n public resizeViewer() {\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'tabfilter',\r\n pure: true\r\n})\r\nexport class TabFilter implements PipeTransform {\r\n transform(items: any, filter: string): any {\r\n // debugger;\r\n if (!items || !filter) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n return items.filter(item => {\r\n const target = item.TabArea + '';\r\n return target.indexOf(filter) !== -1;\r\n });\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { BaseFilterCellComponent, FilterService } from \"@progress/kendo-angular-grid\";\r\nimport { FilterDescriptor, CompositeFilterDescriptor } from \"@progress/kendo-data-query/dist/es/main\";\r\n\r\n@Component({\r\n selector: 'date-range-filter-cell',\r\n styles: [`\r\n kendo-daterange > kendo-dateinput.range-filter {\r\n display: inline-block;\r\n }\r\n .k-button {\r\n margin-left: 4px;\r\n }\r\n ` ],\r\n template: `\r\n <kendo-daterange >\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeStartInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"start\"\r\n (valueChange)=\"filterRange($event, end)\"\r\n style=\"width:84px\">\r\n </kendo-dateinput>\r\n -\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeEndInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"end\"\r\n (valueChange)=\"filterRange(start, $event)\"\r\n style=\"width:85px\">\r\n </kendo-dateinput>\r\n </kendo-daterange>\r\n <button\r\n *ngIf=\"hasFilter\"\r\n class=\"k-button k-button-icon\"\r\n title=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <span class=\"k-icon k-i-filter-clear\" style=\"width:15px\"></span>\r\n </button>\r\n `\r\n})\r\nexport class DateRangeFilterCellComponent extends BaseFilterCellComponent {\r\n @Input()\r\n public filter: any;\r\n\r\n @Input()\r\n public field: string;\r\n\r\n constructor(filterService: FilterService) {\r\n super(filterService);\r\n }\r\n\r\n public get start(): Date {\r\n const first = this.findByOperator(\"gte\");\r\n\r\n return (first || <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get end(): Date {\r\n const end = this.findByOperator(\"lte\");\r\n return (end || <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get hasFilter(): boolean {\r\n return this.filtersByField(this.field).length > 0;\r\n }\r\n\r\n public clearFilter(): void {\r\n this.filterService.filter(\r\n this.removeFilter(this.field)\r\n );\r\n }\r\n\r\n public filterRange(start: Date, end: Date): void {\r\n this.filter = this.removeFilter(this.field);\r\n\r\n const filters = [];\r\n\r\n if (start) {\r\n filters.push({\r\n field: this.field,\r\n operator: \"gte\",\r\n value: start\r\n });\r\n }\r\n\r\n if (end) {\r\n filters.push({\r\n field: this.field,\r\n operator: \"lte\",\r\n value: end\r\n });\r\n }\r\n\r\n const root = this.filter || {\r\n logic: \"and\",\r\n filters: []\r\n };\r\n\r\n if (filters.length) {\r\n root.filters.push(...filters);\r\n }\r\n\r\n this.filterService.filter(root);\r\n }\r\n\r\n private findByOperator(op: string): FilterDescriptor {\r\n return this.filtersByField(this.field)\r\n .filter(({ operator }) => operator === op)[0];\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, HostListener } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from \"rxjs\";\r\nimport { delay, take } from \"rxjs/operators\";\r\nimport { ToolbarService } from \"@progress/kendo-angular-scheduler\";\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Component({\r\n selector: \"zschedulertoolbar\",\r\n template: `\r\n <div class=\"k-scheduler-navigation\">\r\n <button class=\"k-nav-today\" (click)=\"today()\">\r\n Today\r\n </button>\r\n <button class=\"k-nav-prev\" (click)=\"prev($event)\">\r\n <span class=\"k-icon k-i-arrow-60-left\"></span>\r\n </button> &nbsp;\r\n <span>\r\n <a class=\"k-nav-current\" #anchor\r\n >\r\n <!-- <span class=\"k-icon k-i-calendar\"></span> -->\r\n {{ selectedDate | kendoDate: \"dd-MMM-yyyy\" }}\r\n </a>\r\n </span> &nbsp;\r\n <button class=\"k-nav-next\" (click)=\"next($event)\">\r\n <span class=\"k-icon k-i-arrow-60-right\"></span>\r\n </button>\r\n </div>\r\n <kendo-popup\r\n style=\"margin:15px 0px 0px 0px;\"\r\n [anchor]=\"anchor\"\r\n (anchorViewportLeave)=\"showCalendar = false\"\r\n *ngIf=\"showCalendar\"\r\n >\r\n <kendo-calendar\r\n [focusedDate]=\"selectedDate\"\r\n (blur)=\"onBlur_Calendar()\"\r\n (valueChange)=\"onChange_Calendar($event)\"\r\n ></kendo-calendar>\r\n </kendo-popup>\r\n `,\r\n styleUrls: [\"./zscheduler.toolbar.component.css\"]\r\n})\r\nexport class ZSchedulerToolBarComponent {\r\n @Input() local: any = {};\r\n @Input() public selectedDate: Date;\r\n showCalendar = false;\r\n\r\n constructor(public toolbarService: ToolbarService) {}\r\n\r\n public today(): void {\r\n this.toolbarService.navigate({\r\n type: \"today\"\r\n });\r\n }\r\n\r\n public next(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"next\"\r\n });\r\n }\r\n\r\n public prev(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"prev\"\r\n });\r\n }\r\n\r\n onChange_Calendar(value: any): void {\r\n this.local.inProgress = true;\r\n this.toolbarService.navigate({\r\n type: 'select-date',\r\n date: value\r\n });\r\n this.toggleCalendar();\r\n of([])\r\n .pipe(take(1), delay(1000))\r\n .subscribe(() => (this.local.inProgress = false));\r\n }\r\n\r\n onBlur_Calendar(): void {\r\n this.toggleCalendar();\r\n }\r\n\r\n toggleCalendar(status?: boolean) {\r\n if (status === false) {\r\n this.showCalendar = false;\r\n return;\r\n }\r\n this.showCalendar = !this.showCalendar;\r\n }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n public keydown(event: any): void {\r\n if (event.keyCode === 27 && this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n public documentClick(event: any): void {\r\n if (event.target.className === \"k-nav-current\") {\r\n this.toggleCalendar();\r\n } else {\r\n if (this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, of, Observable } from \"rxjs\";\r\nimport { switchMap, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZGroup, IDeactivateComponent } from \"mmhglobal-zcore\";\r\n// import { IDeactivateComponent } from \"src/app/services/candeactivate.guard\";\r\n\r\n\r\n@Component({\r\n template: ``,\r\n})\r\nexport class UipageComponent implements IDeactivateComponent {\r\n // ctrlName = \"e1crm_bpactivity\";\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n\r\n constructor(\r\n // public fieldService: FieldService,\r\n public mainService: MainService,\r\n public activatedRoute: ActivatedRoute\r\n ) {\r\n mainService.setGroup(this.group);\r\n // console.log(\"At \" + this.ctrlName + \" (constructor)\");\r\n }\r\n\r\n canExit(): boolean | Observable<boolean> {\r\n return this.mainService.canExit(this.group.form);\r\n }\r\n\r\n pageOnInit(ctrlName: string, pageName: string, isListForm: boolean, projectName?: string) {\r\n this.group._projectName = projectName;\r\n\r\n return this.mainService.getResourceServerData().pipe(\r\n switchMap((rsData) => {\r\n this.group.isListForm = isListForm;\r\n return this.activatedRoute.paramMap;\r\n }),\r\n tap((paramMap) => {\r\n const actName = paramMap.get(\"act\");\r\n this.group.isNew = actName === \"new\" ? true : false;\r\n this.group.isEdit = actName === \"edit\" ? true : false;\r\n if (actName === \"edit\") {\r\n this.group.referenceId = paramMap.get(\"id\");\r\n } else if (actName === \"new\") {\r\n this.group.parentReferenceId =\r\n paramMap.get(\"parentreferenceid\") || paramMap.get(\"id\");\r\n this.group.backNavigationPage =\r\n this.group.backNavigationPage +\r\n \"/\" +\r\n this.group.parentReferenceId.toString() +\r\n \"/edit\";\r\n }\r\n if (actName) {\r\n this.group.actName = actName;\r\n }\r\n this.mainService.initializeGroup(this.group, ctrlName, pageName, this);\r\n\r\n if (\r\n actName === \"new\" &&\r\n this.group.parentReferenceField &&\r\n this.group.parentReferenceId\r\n ) {\r\n this.group.zModel[\r\n this.group.parentReferenceField\r\n ] = this.group.parentReferenceId.toString();\r\n }\r\n }),\r\n switchMap(() => {\r\n const formType = isListForm ? \"ListField\" : \"FormField\";\r\n const formFieldName = this.group.fieldName\r\n ? this.group.fieldName\r\n : ctrlName;\r\n this.group.fieldName = formFieldName;\r\n return this.mainService.getGroupFields(\r\n formFieldName,\r\n formType,\r\n this.group,\r\n \"fields\"\r\n );\r\n }),\r\n switchMap((fields) => {\r\n return this.mainService.beforePageInitialise(this.group);\r\n }),\r\n switchMap((fields) => {\r\n if (this.group.actName === \"new\") {\r\n this.mainService.getCloneNewCacheZModel(this.group);\r\n return this.mainService.afterNewModel(this.group);\r\n } else {\r\n return of(fields);\r\n }\r\n }),\r\n switchMap(() => {\r\n // console.log('CtrName: ' + ctrlName + ' field Element: ', fields);\r\n if (this.group.referenceId && this.group.referenceId !== \"0\") {\r\n if (typeof this.group.getModel === \"function\") {\r\n return this.group.getModel(this.group, this.group.referenceId);\r\n } else {\r\n return this.mainService.getModel$(\r\n this.group,\r\n this.group.referenceId\r\n );\r\n }\r\n } else {\r\n return of({});\r\n }\r\n }),\r\n switchMap((zmodel) => {\r\n if (this.group.parentReferenceField) {\r\n this.group.parentReferenceId = this.group.zModel[\r\n this.group.parentReferenceField\r\n ];\r\n }\r\n return this.mainService.afterPageInitialise(this.group);\r\n })\r\n );\r\n // .subscribe(() => {\r\n // console.log(\"At activity-one.page ngOnInit() completed\");\r\n // this.group.isLoading = false;\r\n // });\r\n }\r\n\r\n pageDestroy(): void {\r\n console.log(this.group.pageName + \" ngOnDestroy.\");\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup, ZCoreService, AuthService, ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-uiheader\",\r\n templateUrl: \"./uiheader.component.html\",\r\n styleUrls: [\"./uiheader.component.scss\"]\r\n})\r\nexport class UiheaderComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() topFormHeader: string;\r\n public formHeader: string;\r\n public profileImgUrl: string;\r\n public username: string;\r\n public userDisplayName: string;\r\n // backNavigate = null;\r\n\r\n constructor(\r\n private router: Router,\r\n private zcoreService: ZCoreService,\r\n private authService: AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // if (this.group.backNavigationPage) {\r\n // if (this.group.backNavigationPage.indexOf('/', 1) > 1) {\r\n // this.backNavigate = this.group.backNavigationPage;\r\n // } else {\r\n // this.backNavigate = \"/_appmenu/\" + this.group.backNavigationPage;\r\n // }\r\n // }\r\n const environment = this.zcoreService.getEnvironment();\r\n this.profileImgUrl = environment.e1OauthUrl + '/api/ProfileImage?id=' + this.authService.e1Token.myProfile.UserName + '&size=80x80';\r\n const _myProfile = this.authService.e1Token.myProfile;\r\n if (_myProfile) {\r\n this.username = _myProfile.UserName;\r\n this.userDisplayName = _myProfile.LastName;\r\n }\r\n\r\n if (this.topFormHeader) {\r\n this.formHeader = this.topFormHeader;\r\n }\r\n }\r\n\r\n public bindFormHeader() { \r\n if (!this.topFormHeader) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n \r\n public onLogout() {\r\n this.authService.logout();\r\n this.router.navigateByUrl('/auth');\r\n }\r\n\r\n public isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n// import { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { ZGroup, ZComponentHelper, ZCoreService } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uicontent',\r\n templateUrl: './uicontent.component.html',\r\n styleUrls: ['./uicontent.component.scss'],\r\n})\r\nexport class UicontentComponent implements OnInit {\r\n\r\n @Input() group: ZGroup;\r\n\r\n constructor(\r\n private zcoreService: ZCoreService\r\n ) { }\r\n\r\n ngOnInit() {\r\n console.log(this.group);\r\n }\r\n\r\n isSITEnvironment() {\r\n // return environment.e1OauthUrl.startsWith('https://oauthdev.');\r\n return this.zcoreService.isDebugSession() && !this.isFieldElement();\r\n }\r\n\r\n isFieldElement() {\r\n return this.group.fieldName === 'field';\r\n // return false;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { FaIconLibrary } from '@fortawesome/angular-fontawesome';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup } from \"mmhglobal-zcore\";\r\n\r\n\r\nexport interface UiMenuContentItem {\r\n url: string;\r\n icon: string | Array<string>;\r\n title: string;\r\n}\r\n\r\nexport interface UiMenuContentCategory {\r\n category:string;\r\n content:Array<UiMenuContentItem>\r\n}\r\n\r\n@Component({\r\n selector: 'app-uimenucontent',\r\n templateUrl: './uimenucontent.component.html',\r\n styleUrls: ['./uimenucontent.component.scss'],\r\n})\r\nexport class UimenucontentComponent implements OnInit {\r\n @Input() items: Array<UiMenuContentCategory> | Array<UiMenuContentItem>;\r\n\r\n \r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.items && this.items.length > 0) {\r\n console.error('Pls stop use hardcode submenu. Now the submenu can define in e1 Menu Relationship.');\r\n }\r\n }\r\n\r\n CheckisCategory(e: UiMenuContentCategory | UiMenuContentItem): e is UiMenuContentCategory { \r\n return (<UiMenuContentCategory>e).category !== undefined;\r\n }\r\n\r\n isCategory(){\r\n let v = false;\r\n if (this.items.length > 0) {\r\n if (this.CheckisCategory(this.items[0])) {\r\n v = true;\r\n }\r\n }\r\n return v; \r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { MenuController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\n// import { AsyncSubject, of } from 'rxjs';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uimenubutton',\r\n templateUrl: './uimenubutton.component.html',\r\n styleUrls: ['./uimenubutton.component.scss'],\r\n})\r\nexport class UimenubuttonComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n\r\n constructor(\r\n public menuCtrl: MenuController,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n\r\n toggleMenu() {\r\n this.menuCtrl.toggle();\r\n }\r\n\r\n backNavigate() {\r\n if (this.group.beforeBackNavigationPage) {\r\n this.group.beforeBackNavigationPage(this.group).subscribe(() => {\r\n this.router.navigate([this.group.backNavigationPage]);\r\n })\r\n }\r\n else {\r\n this.router.navigate([this.group.backNavigationPage]);\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { OAuthMenuItem, MenuService, AuthService, ZComponentHelper, ZCoreService } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uiappmenucontent',\r\n templateUrl: './uiappmenucontent.component.html',\r\n styleUrls: ['./uiappmenucontent.component.scss'],\r\n})\r\nexport class UiappmenucontentComponent implements OnInit {\r\n @Input() items: Array<OAuthMenuItem>;\r\n\r\n colorArray: any[] = [\r\n { stroke: '#F59600', color: '#F59600' },\r\n\r\n { stroke: '#F5C800', color: '#F5C800' },\r\n { stroke: '#F5EF00', color: '#F5EF00' },\r\n { stroke: '#8FE300', color: '#8FE300' },\r\n { stroke: '#00B33D', color: '#00B33D' },\r\n { stroke: '#095D9D', color: '#095D9D' },\r\n { stroke: '#2116AA', color: '#2116AA' },\r\n\r\n { stroke: '#6509A4', color: '#6509A4' },\r\n { stroke: '#C4006F', color: '#C4006F' },\r\n { stroke: '#F52B00', color: '#F52B00' }\r\n ];\r\n\r\n constructor(\r\n private router: Router,\r\n private menuService: MenuService,\r\n private authService: AuthService,\r\n private zcoreService: ZCoreService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public getDivClass(item) {\r\n return item.Type === 'dropdown-submenu' ? 'flex-show' : 'col-xs-4 col-sm-4 col-md-3 col-xl-2';\r\n }\r\n\r\n public getMenuList(item) {\r\n return item.Type === 'dropdown-submenu' ? this.menuService.getMenuFolder(item.URL) : null;\r\n }\r\n\r\n public menuOnClick(pathName: string, appClientPath?: string) {\r\n const startupPage: string = this.zcoreService.getEnvironment().startUpPage;\r\n\r\n if (appClientPath && startupPage.toLocaleLowerCase() == 'launcher') {\r\n ZComponentHelper.openAppClientPath(pathName, appClientPath, this.authService); \r\n return false;\r\n }\r\n else {\r\n this.router.navigate([pathName]);\r\n }\r\n } \r\n\r\n private setMapInput(key: string, value: string) {\r\n const mapInput = document.createElement('input');\r\n mapInput.type = 'hidden';\r\n mapInput.name = key;\r\n mapInput.setAttribute('value', value);\r\n\r\n return mapInput;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, Directive } from '@angular/core'; \r\nimport { Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\nimport { ActionSheetController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, WebApiService, ResourceApiService, WorkflowService,\r\n ZGroup, ZField, ZComponentProperties, ZComponentHelper,\r\n ZComponentOutputEvent\r\n} from 'mmhglobal-zcore'; \r\n\r\n\r\n@Component({\r\n selector: 'app-uiactionbutton',\r\n templateUrl: './uiactionbutton.component.html',\r\n styleUrls: ['./uiactionbutton.component.scss'],\r\n})\r\n\r\nexport class UiactionbuttonComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n topRightActionButton: any[] = [];\r\n actionBtnList: Array<ZField>;\r\n isWorkflowButton: boolean = false;\r\n // visible:boolean = true;\r\n private data: any;\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService,\r\n private actionSheetCtrl: ActionSheetController\r\n ) { }\r\n\r\n /******************** Common function ********************/\r\n ngOnInit() {\r\n this.data = this.getFirstzButton(this.group.fields);\r\n // this.visible = ZComponentHelper.isVisible(buttonData);\r\n\r\n if (this.data) {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {\r\n // handle as zWorkflowButton\r\n this.isWorkflowButton = true;\r\n this.loadWorkflowButton();\r\n }\r\n else {\r\n // handle as zButton\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n field$.subscribe((data: Array<ZField>) => {\r\n this.actionBtnList = data;\r\n this.reloadButtonList();\r\n });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n private isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n /******************** zButton ********************/\r\n getFirstzButton(data: any[]) {\r\n // data.forEach(d => {\r\n for (let i = 0; i < data.length - 1; i++) {\r\n if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n return data[i];\r\n } else {\r\n if (Array.isArray(data[i].Value)) {\r\n this.getFirstzButton(data[i].Value);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onAction() {\r\n if (this.isWorkflowButton) {\r\n //this.loadWorkflowButton();\r\n this.actionSheetCtrl\r\n .create({\r\n header: \"Choose an Action\",\r\n buttons: this.topRightActionButton\r\n })\r\n .then(actionSheetEl => {\r\n actionSheetEl.present();\r\n });\r\n }\r\n else {\r\n //this.reloadButtonList();\r\n this.actionSheetCtrl\r\n .create({\r\n header: \"Choose an Action\",\r\n buttons: this.topRightActionButton\r\n })\r\n .then(actionSheetEl => {\r\n actionSheetEl.present();\r\n });\r\n }\r\n }\r\n\r\n private reloadButtonList() {\r\n this.topRightActionButton = [];\r\n this.actionBtnList.forEach((button: ZField) => {\r\n const visible = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n button.Visible,\r\n this.group\r\n );\r\n if (visible !== false) {\r\n const label = this.getButtonLabel(button);\r\n const buttonRole = this.getButtonRole(button, label);\r\n this.topRightActionButton.push({\r\n text: label,\r\n handler: () => {\r\n this.buttonClick(button);\r\n },\r\n role: buttonRole\r\n });\r\n }\r\n });\r\n }\r\n\r\n private buttonClick(button: any) {\r\n // debugger;\r\n this.group['DismissType'] = button.DismissType;\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private getButtonLabel(button: any) {\r\n let buttonLabel = button.Label;\r\n if (!buttonLabel) {\r\n buttonLabel = button.Name;\r\n }\r\n\r\n let labelExpr = buttonLabel.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return buttonLabel;\r\n }\r\n }\r\n\r\n private getButtonRole(button: any, label: string) {\r\n // console.log(\"getButtonRole: \", label, button.ClickEvent);\r\n const lowerCaseLabel = label.toLowerCase();\r\n if (\r\n lowerCaseLabel.indexOf(\"cancel\") !== -1 ||\r\n lowerCaseLabel.indexOf(\"close\") !== -1\r\n ) {\r\n return \"cancel\";\r\n }\r\n return null;\r\n }\r\n\r\n /******************** zWorkflowButton ********************/\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n private loadWorkflowButton() {\r\n // actionBtnList: Array<ZField>;\r\n this.topRightActionButton = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n try {\r\n // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(false)\r\n );\r\n\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n\r\n if (_isVisible) {\r\n this.topRightActionButton.push({\r\n text: buttonLabel,\r\n fieldAttribute: button,\r\n iconName: attributes.Icon,\r\n handler: (y) => {\r\n this.workflowButtonClick(button);\r\n }\r\n });\r\n }\r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n });\r\n\r\n if (!this.data.DisableSyncWorkflowStatus) {\r\n // Set default status\r\n // eslint-disable-next-line @typescript-eslint/dot-notation\r\n if (!this.group.zModel[\"WFS_StatusName\"]) {\r\n const params = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n map(res => {\r\n if (res.Data) {\r\n ZComponentHelper.presetModelValue(\"WFS_StatusId\", res.Data[\"Id\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusName\", res.Data[\"Name\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusCode\", res.Data[\"Code\"], this.group);\r\n\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n ).subscribe();\r\n } else {\r\n // When loading also to get current Status Information if any.\r\n const docInfoParam = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode,\r\n \"DocumentId\": documentId,\r\n };\r\n\r\n this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n map(res => {\r\n this.workflowService.setCurrentDocumentStatus(res);\r\n if (res.Data) {\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n workflowButtonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {\r\n this.loadWorkflowButton();\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup, ZField, ZComponentHelper } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uivalidationmessage',\r\n templateUrl: './uivalidationmessage.component.html',\r\n styleUrls: ['./uivalidationmessage.component.scss'],\r\n})\r\nexport class UivalidationmessageComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() data: ZField;\r\n @Input() form: FormGroup;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n getValidationError(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getValidationError(form, data);\r\n } \r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIconClass() {\r\n if (!this.isMobileScreen()) {\r\n return \"k-icon k-i-warning validation_icon\"\r\n }\r\n else {\r\n return \"k-icon k-i-warning\"\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zbullet',\r\n templateUrl: './zbullet.component.html',\r\n styleUrls: ['./zbullet.component.scss'],\r\n})\r\nexport class ZBulletComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n dataSource: Array<any>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.data.ListType = this.data.ListType ? this.data.ListType : \"ul\";\r\n this.setupDataSource();\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n \r\n private setupDataSource() {\r\n if (!this.data.DataSource) {\r\n console.error(\"No data source found for zhip\");\r\n return;\r\n }\r\n\r\n if (this.data.DataSource.indexOf(\"group.\") !== -1) {\r\n this.dataSource = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n }\r\n else {\r\n this.dataSource = this.data.DataSource as any;\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isVisible() {\r\n if (this.componentProperties.isVisible === null) {\r\n return ZComponentHelper.isVisible.call(this, this.data);\r\n } else {\r\n return this.componentProperties.isVisible;\r\n }\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setData = (data: any) => {\r\n this.dataSource = data;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass}`;\r\n }\r\n}","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, ZComponent, ZComponentHelper, \r\n ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup, FontAweSomeService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-zbuttons\",\r\n templateUrl: \"./zbuttons.component.html\",\r\n styleUrls: [\"./zbuttons.component.scss\"]\r\n})\r\nexport class ZbuttonsComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n items: Array<any> = [];\r\n FirstZbtn = false;\r\n componentProperties = new ZComponentProperties();\r\n expand = \"\";\r\n\r\n constructor(\r\n private fieldService: FieldService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\", null, null\r\n );\r\n\r\n this.group.zButtonsCount++;\r\n if (this.group.zButtonsCount === 1) {\r\n this.FirstZbtn = true;\r\n }\r\n\r\n this.expand = this.data.Expand || \"\";\r\n\r\n try {\r\n field$.subscribe(data => {\r\n // this.items = data;\r\n data.forEach((button: any) => {\r\n if (this.data.SubType) {\r\n button.Name = this.data.SubType + '_' + button.Name; \r\n } \r\n\r\n const label = this.getButtonLabel(button);\r\n\r\n let buttonDisabled = null;\r\n\r\n if (button.Disabled != \"\" && button.Disabled) {\r\n buttonDisabled = button.Disabled === 'true' ? true : ZComponentHelper.getGroupEvalValue.call(this, button.Disabled);\r\n }\r\n\r\n const fill = button['Fill'] ? button['Fill'] : 'outline';\r\n const color = button.Color ? button.Color : 'dark';\r\n\r\n this.items.push({\r\n name: button.Name,\r\n text: label,\r\n icon: ZComponentHelper.getIcon(button.Icon),\r\n visible: button.Visible,\r\n disabled: buttonDisabled,\r\n clickEvent: button.ClickEvent,\r\n iconName: button.Icon,\r\n dismissType: button.DismissType,\r\n disableTriggerTimer: button.DisableTriggerTimer,\r\n fill: fill,\r\n color: color,\r\n SubType: this.data.SubType,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n }); \r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n public setLabelText(newText: string, name: string) {\r\n const btn = this.items.find(x => x.name === name);\r\n if (btn) {\r\n btn.text = newText;\r\n }\r\n }\r\n\r\n private buttonClick(button: any) {\r\n // debugger;\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!this.data['DisableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n BtnClick(item: any) {\r\n // debugger;\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!item['disableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n this.group['DismissType'] = item.dismissType;\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: item.clickEvent,\r\n data: item\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private getButtonLabel(button: any) {\r\n if (button.Label) {\r\n let labelExpr = button.Label.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return button.Label;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private getButtonRole(button: any, label: string) {\r\n // console.log(\"getButtonRole: \", label, button.ClickEvent);\r\n const lowerCaseLabel = label.toLowerCase();\r\n if (\r\n lowerCaseLabel.indexOf(\"cancel\") !== -1 ||\r\n lowerCaseLabel.indexOf(\"close\") !== -1\r\n ) {\r\n return \"cancel\";\r\n }\r\n return null;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties, AuthService, FontAweSomeService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zcard\",\r\n templateUrl: \"./zcard.component.html\",\r\n styleUrls: [\"./zcard.component.scss\"],\r\n})\r\nexport class ZcardComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n // classStyleObservables: Array<BehaviorSubject<string>>;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) { }\r\n\r\n options = {\r\n Title: '',\r\n Icon:'Folder'\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.Title = field.Title.includes(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(this, field.Title) : field.Title;\r\n //options.Icon = ZComponentHelper.getIcon(field.Icon.toString())||options.Icon;\r\n }\r\n \r\n public setData = (gData: any) => {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n // getFontAwesome(iconName: string) {\r\n // return ZComponentHelper.getFontAwesome(iconName);\r\n // }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { groupBy, GroupResult } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zchart',\r\n templateUrl: './zchart.component.html',\r\n styleUrls: ['./zchart.component.scss'],\r\n})\r\nexport class ZchartComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private series: any[] = [];\r\n // = [{\r\n // type: '',\r\n // style: 'smooth',\r\n // name: 'India',\r\n // data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]\r\n // }, {\r\n // type: '',\r\n // style: 'smooth',\r\n // name: 'Russian Federation',\r\n // data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]\r\n // }, {\r\n // type: 'bar',\r\n // style: 'smooth',\r\n // name: 'Germany',\r\n // data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]\r\n // }, {\r\n // type: 'area',\r\n // style: 'smooth',\r\n // name: 'World',\r\n // data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]\r\n // }];\r\n\r\n private categories = [];\r\n // [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\r\n\r\n options = {\r\n title: 'Chart Title Here',\r\n renderAs: 'canvas', // svg\r\n pannable: false,\r\n zoomable: false,\r\n categoryAxis: {\r\n categories: this.categories,\r\n max: 10,\r\n maxDivisions: null,\r\n labels: { rotation: 'auto' }\r\n },\r\n labels: {\r\n visible: false,\r\n background: \"transparent\"\r\n },\r\n series: this.series,\r\n dataType: 'bar',\r\n dataStyle: 'smooth',\r\n legendPosition: 'bottom',\r\n legendOrientation: 'horizontal',\r\n tooltipFormat: '{0}%',\r\n aggregateType: 'sum',\r\n dataField: null,\r\n categoryField: null,\r\n color: '#05A2FE',\r\n };\r\n\r\n // fieldElement01 = [{\r\n // Name: 'chart01',\r\n // Type: 'zchart',\r\n // Options: 'group.chart01Options',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n // fieldElement02 = [{\r\n // Name: 'chart01',\r\n // Type: 'zchart',\r\n // Title: 'Chart01 Title',\r\n // RenderAs: 'svg',\r\n // Pannable: true,\r\n // Zoomable: true,\r\n // Categories: 'group.chart01Categories',\r\n // Max: 10,\r\n // MaxDivisions: null,\r\n // Rotation: 'auto',\r\n // Series: 'group.chart01Series',\r\n // DataType: 'bar',\r\n // DataStyle: 'smooth',\r\n // LegendPosition: 'bottom',\r\n // LegendOrientation: 'horizonal',\r\n // TooltipFormat: '{0}',\r\n // AggregateType: 'sum',\r\n // DataField: null,\r\n // CategoryField: null,\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof(optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n if (this.data.Options && this.data.Options.categoryAxis && this.data.Options.categoryAxis.categories && typeof (this.data.Options.categoryAxis.categories) === 'string') {\r\n this.options.categoryAxis.categories =\r\n ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.categoryAxis.categories);\r\n }\r\n\r\n if (this.data.Options && this.data.Options.series && typeof (this.data.Options.series) === 'string') {\r\n this.options.series =\r\n ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.series);\r\n }\r\n\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.title = field.Title || options.title;\r\n options.renderAs = field.RenderAs || options.renderAs;\r\n options.pannable = field.Pannable || options.pannable;\r\n options.zoomable = field.Zoomable || options.zoomable;\r\n options.categoryAxis.categories = ZComponentHelper.getGroupEvalValue.call(this, field.Categories) || [];\r\n options.categoryAxis.max = field.Max || options.categoryAxis.max;\r\n options.categoryAxis.maxDivisions = field.MaxDivisions || options.categoryAxis.maxDivisions;\r\n options.categoryAxis.labels.rotation = field.Rotation || options.categoryAxis.labels.rotation;\r\n options.series = ZComponentHelper.getGroupEvalValue.call(this, field.Series) || [];\r\n options.dataType = field.DataType || options.dataType;\r\n options.dataStyle = field.DataStyle || options.dataStyle;\r\n options.legendPosition = field.LegendPosition || options.legendPosition;\r\n options.legendOrientation = field.LegendOrientation || options.legendOrientation;\r\n options.tooltipFormat = field.TooltipFormat || options.tooltipFormat;\r\n options.aggregateType = field.AggregateType || options.aggregateType;\r\n options.dataField = field.DataField || options.dataField;\r\n options.categoryField = field.CategoryField || options.categoryField;\r\n }\r\n\r\n public onRender(e): void {\r\n // console.log('render');\r\n }\r\n\r\n public onAxisLabelClick(e): void {\r\n // console.log('axisLabelClick', e);\r\n }\r\n\r\n public onLegendItemClick(e): void {\r\n // console.log('legendItemClick', e);\r\n }\r\n\r\n public onLegendItemHover(e): void {\r\n // console.log('legendItemHover', e);\r\n }\r\n\r\n public onPlotAreaClick(e): void {\r\n // console.log('plotAreaClick', e);\r\n }\r\n\r\n public onPlotAreaHover(e): void {\r\n // console.log('plotAreaHover', e);\r\n }\r\n\r\n public onSeriesClick(e): void {\r\n // console.log('seriesClick', e);\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc(e);\r\n }\r\n return;\r\n }\r\n\r\n public onSeriesHover(e): void {\r\n // console.log('seriesHover', e);\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zcheckbox\",\r\n templateUrl: \"./zcheckbox.component.html\",\r\n styleUrls: [\"./zcheckbox.component.scss\"],\r\n})\r\nexport class ZcheckboxComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: any = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n public useKendoSwitch: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.tooltipsInfo = this.data['TooltipsInfo'];\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo['Icon'] != null || this.tooltipsInfo['Icon'] != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo['SideBySide']) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n \r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n this.useKendoSwitch = this.data.UseKendoSwitch ? this.data.UseKendoSwitch : false;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n onSwitchChange(event: any) {\r\n ZComponentHelper.setModelValue(this.data.Value, event, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: { value: event, field: this.data },\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onChange(event: any) {\r\n if (this.data.OnChange) {\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.OnChange\r\n );\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(this.group.ctrlScope);\r\n newFunc(event);\r\n }\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n };\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n };\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(\r\n status,\r\n this.group,\r\n this.data.Value,\r\n this.componentProperties,\r\n Validators.required\r\n );\r\n };\r\n\r\n public getLabelStyle() {\r\n return {\r\n order:\r\n this.data.LabelOrder &&\r\n this.data.LabelOrder === \"end\" &&\r\n this.data.LabelPosition !== \"stacked\"\r\n ? 2\r\n : 0,\r\n \"white-space\": \"normal\",\r\n };\r\n }\r\n\r\n public getCheckboxClass() {\r\n const classList = [];\r\n if (this.data.LabelDivClass) {\r\n this.data.LabelDivClass.split(\" \").forEach((x) => {\r\n if (x.indexOf(\"col\") !== -1) {\r\n const divClassSegment = x.split(\"-\");\r\n divClassSegment[divClassSegment.length - 1] = (\r\n 12 - parseInt(divClassSegment[divClassSegment.length - 1])\r\n ).toString();\r\n classList.push(divClassSegment.join(\"-\"));\r\n } else {\r\n classList.push(x);\r\n }\r\n });\r\n }\r\n\r\n return classList.join(\" \");\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `ionItem ${this.data.Class}`;\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo['TextColor']) {\r\n return this.tooltipsInfo['TextColor'];\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() { \r\n if (this.tooltipsInfo ) {\r\n if (this.tooltipsInfo ['SideBySide'] && !this.showTooltipsInfoIcon) {\r\n return 'tooltipsinfo-right';\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n return 'notooltipsinfo-adjustment';\r\n }\r\n\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TooltipDirective } from '@progress/kendo-angular-tooltip';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties, AuthService \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zchip',\r\n templateUrl: './zchip.component.html',\r\n styleUrls: ['./zchip.component.scss'],\r\n})\r\nexport class ZChipComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n private icon = \"k-icon k-i-cancel\";\r\n private selectedIcon = \"k-icon k-i-check-circle\";\r\n public componentProperties = new ZComponentProperties();\r\n public dataSource;\r\n @ViewChild(TooltipDirective, { static: false }) public tooltipDir: TooltipDirective;\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.setupDataSource();\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n private setupDataSource() {\r\n if (!this.data.DataSource) {\r\n console.error(\"No data source found for zhip\");\r\n return;\r\n }\r\n\r\n if (this.data.DataSource.indexOf(\"group.\") !== -1) {\r\n this.dataSource = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n }\r\n else {\r\n this.dataSource = this.data.DataSource;\r\n }\r\n\r\n if (Array.isArray(this.dataSource)) {\r\n this.dataSource.forEach(x => {\r\n x.Label = x.Label ? x.Label : x.Value,\r\n x.Icon = !!x.Selected ? null : (x.Icon ? x.Icon : this.icon),\r\n x.SelectedIcon = x.SelectedIcon ? x.SelectedIcon : this.selectedIcon,\r\n x._Icon = x.Icon ? x.Icon : this.icon;\r\n x._Selected = x.Selected;\r\n })\r\n }\r\n }\r\n\r\n public getClass() {\r\n return this.data.DivClass;\r\n }\r\n\r\n public getChipClass(chip) {\r\n return chip.Class ? chip.Class : \"\";\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public chipListChangeSelection(selectedChipIndexes: any): void {\r\n let ind = 0;\r\n for (let chip of this.dataSource) {\r\n if (selectedChipIndexes.includes(ind)) {\r\n chip.Icon = null\r\n }\r\n else {\r\n chip.Icon = this.dataSource.find(x => x.Value === chip.Value)._Icon;\r\n }\r\n ind++;\r\n }\r\n }\r\n\r\n public chipChangeSelection(chip: any) {\r\n this.dataSource.find(x => x.Value === chip.Value)._Selected = !chip._Selected;\r\n\r\n if (this.data.OnChange) {\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public getDataValue(): any {\r\n return this.dataSource as any;\r\n }\r\n\r\n public mouseover(event: any, chip: any) {\r\n if (this.data.OnHover) {\r\n this.group.subject.next({\r\n type: \"onHover\",\r\n target: this.data.OnHover,\r\n data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n if (!!this.data['IsShowToolTip']) {\r\n this.showTooltip(event);\r\n }\r\n }\r\n\r\n public showTooltip(e: MouseEvent): void {\r\n const element = e.target as HTMLElement;\r\n this.tooltipDir.toggle(element);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from \"rxjs\";\r\nimport { delay } from \"rxjs/operators\";\r\nimport { AceEditorComponent } from \"ng2-ace-editor\";\r\nimport \"brace\";\r\nimport \"brace/theme/eclipse\";\r\nimport \"brace/mode/json\";\r\nimport \"brace/mode/javascript\";\r\nimport \"brace/mode/html\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\ndeclare let ace: any;\r\n\r\n// import { EditorComponent } from 'ngx-monaco-editor';\r\n// import { EditorOptions } from \"ngx-monaco-editor\";\r\n\r\n@Component({\r\n selector: \"app-zcodeeditor\",\r\n templateUrl: \"./zcodeeditor.component.html\",\r\n styleUrls: [\"./zcodeeditor.component.scss\"]\r\n})\r\nexport class ZcodeeditorComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n code: string | string[] = \"\";\r\n theme = \"eclipse\";\r\n mode = \"javascript\";\r\n subscription: Subscription;\r\n componentProperties = new ZComponentProperties();\r\n \r\n private widthReduce: number;\r\n private heightReduce: number;\r\n\r\n @ViewChild(\"editor\") editor: AceEditorComponent;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n\r\n // const codeValue = this.getValue();\r\n // if (codeValue) {\r\n // this.code = codeValue;\r\n // }\r\n if (this.data.Type === \"textareajson\") {\r\n this.mode = \"json\";\r\n } else if (this.data.Type === \"textareahtml\") {\r\n this.mode = \"html\";\r\n }\r\n console.log(\"zcodeeditor OnInit\");\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // https://github.com/fxmontigny/ng2-ace-editor/blob/master/sample/src/app/app.component.ts\r\n // ngAfterViewInit() {\r\n // const Range = ace.require('ace/range')['Range'];\r\n // this.editor\r\n // .getEditor()\r\n // .session.addMarker(new Range(0, 0, 2, 1), 'myMarker', 'fullLine');\r\n\r\n // this.editor.getEditor().session.setOption('useWorker', true);\r\n // }\r\n\r\n getValue() {\r\n let v;\r\n if (this.data.Value.indexOf('.') !== -1) {\r\n v = this.data.Value;\r\n } else {\r\n v = \"group.zModel.\" + this.data.Value;\r\n }\r\n const evalValue = ZComponentHelper.getEvalValue.call(this, v);\r\n if (typeof evalValue === 'function') {\r\n const nextValue = evalValue();\r\n if (nextValue) {\r\n try {\r\n const evalNextValue = ZComponentHelper.getEvalValue.call(this, nextValue, true);\r\n if (typeof evalNextValue === 'boolean') {\r\n return evalNextValue.toString();\r\n }\r\n if (evalNextValue === undefined) {\r\n return 'undefined';\r\n }\r\n if (evalNextValue === null) {\r\n return 'null';\r\n }\r\n return evalNextValue;\r\n } catch {\r\n return;\r\n }\r\n } else {\r\n return;\r\n }\r\n } else {\r\n return evalValue;\r\n }\r\n // if (this.data.Type === \"textareajson\") {\r\n // if (typeof evalValue === \"string\") {\r\n // const jsonValue = JSON.parse(evalValue);\r\n // return JSON.stringify(jsonValue, null, 2);\r\n // }\r\n // if (typeof evalValue === \"object\" || Array.isArray(evalValue)) {\r\n // return JSON.stringify(evalValue, null, 2);\r\n // }\r\n // }\r\n // if (typeof evalValue === 'string') {\r\n // return evalValue;\r\n // }\r\n // // debugger;\r\n // console.warn(\r\n // \"zcodeeditor - Invalid field.Value (\" + this.data.Value + \") setting \",\r\n // evalValue\r\n // );\r\n // return \"\";\r\n }\r\n\r\n getEditorStyle() {\r\n // debugger;\r\n // return { \"height.px\": 500, \"width.px\": window.innerWidth - 60 }; // \"width.px\": this.innerWidth - 25\r\n return {\r\n \"height.px\": this.getEditorHeight(),\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n };\r\n }\r\n\r\n private getEditorHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 180) ? 180 : h;\r\n }\r\n\r\n onTextChange(newValue: any) {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n // console.log('onTextChange: ', newValue);\r\n this.subscription = of([])\r\n .pipe(delay(500))\r\n .subscribe(() => {\r\n ZComponentHelper.setModelValue(this.data.Value, newValue, this.group, true);\r\n this.group.subject.next({\r\n type: \"zcodeeditor-TextChanged\",\r\n target: this.data.OnChange,\r\n data: newValue\r\n } as ZComponentOutputEvent);\r\n });\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DateRangeService } from '@progress/kendo-angular-dateinputs';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zdaterange',\r\n templateUrl: './zdaterange.component.html',\r\n styleUrls: ['./zdaterange.component.scss'],\r\n})\r\nexport class ZdaterangeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild('zdaterange') public zdaterange: DateRangeService;\r\n // @ViewChild('endDateInput', { static: true }) public endInput: ElementRef;\r\n range: { start: Date, end: Date} = { start: null, end: null};\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n const rangeDateArray = this.data.Value.split(',');\r\n const fromDateString = rangeDateArray[0].trim();\r\n const toDateString = rangeDateArray[1].trim();\r\n \r\n const fromDate = ZComponentHelper.getGroupEvalValue.call(this, fromDateString);\r\n const toDate = ZComponentHelper.getGroupEvalValue.call(this, toDateString);\r\n // this.range = {\r\n // start: fromDate,\r\n // end: toDate\r\n // }\r\n\r\n\r\n const options = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (options) {\r\n if (options.min && options.max) {\r\n this.setNewRange(new Date(options.min), new Date(options.max));\r\n }\r\n }\r\n\r\n }\r\n\r\n setNewRange(min: Date, max: Date) {\r\n this.zdaterange.setRange({\r\n start: min,\r\n end: max\r\n });\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { PreventableEvent } from '@progress/kendo-angular-dateinputs';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zdatetime\",\r\n templateUrl: \"./zdatetime.component.html\",\r\n styleUrls: [\"./zdatetime.component.scss\"],\r\n})\r\nexport class ZdatetimeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n dateFormat = \"DD-MMM-YYYY\";\r\n // dateValue = null;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Type === \"ztime\") {\r\n this.dateFormat = \"HH:mm\";\r\n }\r\n if (this.data.Type === \"zuidatetime\") {\r\n this.dateFormat = \"DD-MMM-YYYY h:mm A\";\r\n }\r\n if (this.data.Type === \"zuitime\") {\r\n this.dateFormat = \"HH:mm:ss\";\r\n }\r\n\tif (this.data.Type === \"zshortdate\") {\r\n this.dateFormat = \"MMM-YYYY\";\r\n }\r\n // if (this.group.zModel[this.data.Value]) {\r\n // this.dateValue = new Date(this.group.zModel[this.data.Value]);\r\n // }\r\n }\r\n\r\n toKendoDateFormat() {\r\n return this.dateFormat\r\n .replace(\"DD\", \"dd\")\r\n .replace(\"YYYY\", \"yyyy\")\r\n .replace(\"h\", \"H\")\r\n .replace(\"A\", \"a\");\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.ReadOnly,\r\n this.group\r\n );\r\n if (typeof readOnlyValue === \"function\") {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getDateValue() {\r\n const value = this.form.controls[this.data.Value].value;\r\n if (value) {\r\n return new Date(value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public GetDate(date: Date) {\r\n // convert the date to ISOString\r\n const myDate = new Date(date).toISOString();\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(this.data.Value, myDate, this.group);\r\n }\r\n\r\n public onChange(value: Date): void {\r\n // console.log(\r\n // \"date change \",\r\n // value.toISOString(),\r\n // \" date value: \",\r\n // new Date(value.toISOString())\r\n // );\r\n // // this.group.zModel[this.data.Value] = value.toISOString();\r\n // const v = value.toISOString();\r\n // this.dateValue = new Date(value.toISOString());\r\n if (value === null) {\r\n ZComponentHelper.setModelValue(\r\n this.data.Value,\r\n value,\r\n this.group\r\n );\r\n } else {\r\n ZComponentHelper.setModelValue(\r\n this.data.Value,\r\n value.toISOString(),\r\n this.group\r\n );\r\n\r\n const fc = this.form.controls[this.data.Value];\r\n fc.setValue(value.toISOString());\r\n }\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: value,\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public SetDateRange = (MinDate: string,MaxDate: string): any =>\r\n {\r\n var thisComponent = this;\r\n\r\n if (!isNaN(Date.parse(MinDate)))\r\n {\r\n this.data.MinDate = new Date(MinDate);\r\n }\r\n if (!isNaN(Date.parse(MaxDate)))\r\n {\r\n this.data.MaxDate = new Date(MaxDate);\r\n }\r\n }\r\n\r\n public handlePreventableEvent(event: PreventableEvent, eventName: string, preventDefault: boolean): void {\r\n // keep \"this\" to use in binding.\r\n var thisComponent = this;\r\n\r\n // need a timeout for ui to display the calender popup\r\n setTimeout(function () {\r\n // only available when popup is shown, get the element by class\r\n // for date\r\n thisComponent.dateAppendEvent(thisComponent);\r\n\r\n // for time\r\n thisComponent.timeAppendEvent(thisComponent);\r\n }, 500);\r\n }\r\n\r\n private dateAppendEvent(thisComponent: any) {\r\n let dateCell = $(\"tbody.k-calendar-tbody\").find(\"td.k-calendar-td\");\r\n for (var i = 0; i < dateCell.length; i++) {\r\n const node = dateCell[i];\r\n\r\n if (node.title != \"\") {\r\n // when date clicked\r\n node.addEventListener(\"click\", function () {\r\n if (!isNaN(Date.parse(node.title))) {\r\n const nodeDate = new Date(node.title).toISOString();\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(thisComponent.data.Value, nodeDate, thisComponent.group);\r\n }\r\n\r\n // timeout append time click event\r\n setTimeout(function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n }, 500);\r\n });\r\n }\r\n }\r\n\r\n // Today clicked\r\n const todayDate = $(\"span.k-today\")[0];\r\n todayDate.addEventListener(\"click\", function () {\r\n const dateNow = new Date().toJSON().slice(0, 10).replace(/-/g, '/');\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, dateNow);\r\n\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n });\r\n }\r\n\r\n private timeAppendEvent(thisComponent: any) {\r\n var timeTab = $(\"button.k-button.k-time-tab\")[0];\r\n timeTab.addEventListener(\"click\", function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n });\r\n }\r\n\r\n private nowOnClick(thisComponent: any) {\r\n const nowTime = $(\"button.k-button.k-bare.k-time-now\")[0];\r\n if (nowTime) {\r\n nowTime.addEventListener(\"click\", function (e) {\r\n // get model current value\r\n let valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n const dateTimeNow = new Date();\r\n\r\n // convert current value to datetime\r\n valueDateTime.setHours(dateTimeNow.getHours());\r\n valueDateTime.setMinutes(dateTimeNow.getMinutes());\r\n valueDateTime.setSeconds(dateTimeNow.getSeconds());\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n\r\n private hoursOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const hour = timeWrapper[0].children;\r\n\r\n for (var i = 0; i < hour.length; i++) {\r\n hour[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n let valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new hour\r\n valueDateTime.setHours(nodeValue);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private minutesOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const minutes = timeWrapper[1].children;\r\n\r\n for (var i = 0; i < minutes.length; i++) {\r\n minutes[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n const valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new minute\r\n valueDateTime.setMinutes(nodeValue);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private ampmOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const ampm = timeWrapper[2].children;\r\n\r\n for (var i = 0; i < ampm.length; i++) {\r\n ampm[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n const valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new minutes\r\n var _hour = valueDateTime.getHours();\r\n if (nodeValue.toLowerCase() == \"am\") {\r\n _hour -= 12;\r\n }\r\n else {\r\n _hour += 12;\r\n }\r\n valueDateTime.setHours(_hour);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private currentDateTimeValue(thisComponent: any) {\r\n // get current value\r\n const zModelValue = ZComponentHelper.getZModelValue(thisComponent.data.Value, thisComponent.group, thisComponent.group.zModel);\r\n\r\n let valueDateTime = new Date();\r\n\r\n if (zModelValue != \"\" && zModelValue != undefined) {\r\n // convert current value to datetime\r\n valueDateTime = new Date(zModelValue);\r\n }\r\n\r\n return valueDateTime\r\n }\r\n\r\n private setDateTimeToModel(thisComponent: any, valueDateTime: any) {\r\n // convert the date to ISOString\r\n const newDateTime = new Date(valueDateTime).toISOString();\r\n\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(thisComponent.data.Value, newDateTime, thisComponent.group);\r\n\r\n // set timeout do add event again after node clicked. if not it only work 1 time.\r\n setTimeout(function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n }, 500);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties, AuthService,\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zdiv',\r\n templateUrl: './zdiv.component.html',\r\n styleUrls: ['./zdiv.component.scss'],\r\n})\r\nexport class ZdivComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n }\r\n\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, FormControl, ValidatorFn } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from 'rxjs';\r\nimport { switchMap, delay } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { AuthService, FieldService, ZComponentHelper, ZGroup, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-zform\",\r\n templateUrl: \"./zform.component.html\",\r\n styleUrls: [\"./zform.component.scss\"]\r\n})\r\nexport class ZformComponent implements OnInit, OnDestroy {\r\n @Input() group: ZGroup;\r\n @Input() fieldName: string;\r\n form: FormGroup;\r\n fields: Array<ZField>;\r\n isLoading = true;\r\n subscription: Subscription;\r\n fieldIndex = [];\r\n // @ViewChild('frm', {static: true}) form: NgForm;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private debugService: ZComponentDebugService\r\n // private modalService: ModalService,\r\n // private router: Router\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (!this.fieldName) {\r\n this.onInitNormal();\r\n // this.form = this.toFormGroup(this.group.fields);\r\n // this.group.form = this.form;\r\n // this.fields = this.group.fields;\r\n this.isLoading = false;\r\n } else {\r\n this.fieldService.getFormFieldCode(this.fieldName, 'FormField', this, 'fields').pipe(\r\n switchMap(fieldElements => {\r\n if (this.fieldName === 'debug') {\r\n return this.debugService.onStartDebugger(fieldElements, this);\r\n } else {\r\n this.group.fields = fieldElements;\r\n this.onInitNormal();\r\n }\r\n }),\r\n switchMap(() => {\r\n this.isLoading = false;\r\n if (this.group._isDebugging && this.group._debug.isLoading) {\r\n this.group._debug.isLoading = false;\r\n }\r\n return of([]);\r\n }),\r\n delay(500))\r\n .subscribe(() => {\r\n this.debugService.LoadGridData();\r\n this.debugService.loadWorkflowData();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) { // for debugger subscription\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n getGroup() {\r\n if (this.fieldName !== 'debug') {\r\n return this.group;\r\n } else {\r\n return this.group._debug;\r\n }\r\n }\r\n\r\n private onInitNormal() {\r\n this.form = this.toFormGroup(this.group.fields);\r\n this.group.form = this.form;\r\n this.fields = this.group.fields;\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.fields, this.authService);\r\n }\r\n\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n private toFormGroup(fieldElements: Array<ZField>) {\r\n const formControls: { [key: string]: FormControl } = {};\r\n this.getFormControls(fieldElements, formControls);\r\n const newFormGroup = new FormGroup(formControls);\r\n return newFormGroup;\r\n }\r\n\r\n private addToFieldIndex(field: ZField) {\r\n if (!field.Name) {\r\n console.error('Field Name undefined: ', field);\r\n }\r\n if (field.Name && !this.fieldIndex.includes(field.Name)) {\r\n this.fieldIndex.push(field.Name);\r\n } else {\r\n console.error('Field Name Duplication: ' + field.Name + '; ', field);\r\n }\r\n }\r\n\r\n\r\n private getFormControls(\r\n fieldArray: Array<ZField>,\r\n formControls: { [key: string]: FormControl }\r\n ) {\r\n fieldArray.forEach(field => {\r\n this.addToFieldIndex(field);\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n } else {\r\n if (Array.isArray(field.Value)) {\r\n this.getFormControls(field.Value, formControls);\r\n } else {\r\n const isFormControl = ZComponentHelper.isFormControl(field);\r\n const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired);\r\n formControls[field.Value] = new FormControl(\r\n this.group.zModel[field.Value], validators\r\n );\r\n if (ZComponentHelper.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new FormControl(\r\n this.group.zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getReadOnlyValue(field: ZField) {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, field.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n trackByFn(index: number, item): number {\r\n //return item['Type'] + '-' + item['Name'];\r\n return index;\r\n }\r\n\r\n // private getValue(field: ZField) {\r\n // if (field.Type.indexOf('date') !== -1) {\r\n // return new Date(this.group.zModel[field.Value]);\r\n // } else {\r\n // return this.group.zModel[field.Value];\r\n // }\r\n // }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zgauge',\r\n templateUrl: './zgauge.component.html',\r\n styleUrls: ['./zgauge.component.scss'],\r\n})\r\nexport class ZgaugeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private value = 0;\r\n private title = \"\";\r\n private color = [];\r\n private majorTicks = [{ visible: true, color: '#0000ff' }];\r\n private minorTicks = [{ visible: true, color: '#0000ff' }];\r\n private startAngle = 0;\r\n private endAngle = 180;\r\n private minValue = 0;\r\n private maxValue = 200;\r\n\r\n options = {\r\n value: this.value,\r\n title: this.title,\r\n scaleMax: 50,\r\n colors: this.color,\r\n transitions: false,\r\n majorTicks: this.majorTicks,\r\n minorTicks: this.minorTicks,\r\n minValue: this.minValue,\r\n maxValue: this.maxValue,\r\n reverse: false,\r\n startAngle: this.startAngle,\r\n endAngle: this.endAngle,\r\n rangePlaceholderColor: '#e6e5e5',\r\n labelsColor: '#0000ff',\r\n rangeFrom: 0,\r\n rangeTo: 100,\r\n rangeColor: '#ff6358',\r\n rangeLineCap: 'round',\r\n showLabels: true,\r\n rangeSize: 10,\r\n };\r\n\r\n // fieldElement01 = [{\r\n // Name: 'gauge01',\r\n // Type: 'zgauge',\r\n // Value: 'group.gauge01Value',\r\n // title: 'group.gauge01Title',\r\n // majorTicks: 'group.gauge01MajorTicks',\r\n // minorTicks: 'group.gauge01MinorTicks',\r\n // minValue:'group.gauge01MinValue',\r\n // maxValue:'group.gauge01MaxValue',\r\n // Max: 100,\r\n // Color: 'group.gauge01Color',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true,\r\n // transitions:false,\r\n // reverse:false,\r\n // startAngle: 'group.gauge01StartAngle',\r\n // endAngle: 'group.gauge01EndAngle',\r\n // rangePlaceholderColor:'#e6e5e5',\r\n // labelsColor:'#0000ff',\r\n // rangeFrom:0,\r\n // rangeTo:50,\r\n // rangeColor:'#ff6358',\r\n // rangeLineCap:'round',\r\n // showLabels: true,\r\n // rangeSize:10,\r\n // }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;\r\n options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.scaleMax = field.Max || options.scaleMax;\r\n options.minValue = ZComponentHelper.getGroupEvalValue.call(this, field.MinValue) || options.minValue;\r\n options.maxValue = ZComponentHelper.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue;\r\n options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors;\r\n options.transitions = field.Transitions || options.transitions;\r\n options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;\r\n options.showLabels = field.ShowLabels || options.showLabels;\r\n options.style = field.Style || options.style;\r\n options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;\r\n options.reverse = field.Reverse || options.reverse;\r\n options.startAngle = ZComponentHelper.getGroupEvalValue.call(this, field.StartAngle) || options.startAngle;\r\n options.endAngle = ZComponentHelper.getGroupEvalValue.call(this, field.EndAngle) || options.endAngle;\r\n options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;\r\n options.rangeFrom = ZComponentHelper.getGroupEvalValue.call(this, field.RangeFrom) || options.rangeFrom;\r\n options.rangeTo = ZComponentHelper.getGroupEvalValue.call(this, field.RangeTo) || options.rangeTo;\r\n options.rangeColor = field.RangeColor || options.rangeColor;\r\n options.rangeLineCap = field.RangeLineCap || options.rangeLineCap;\r\n options.rangeSize = field.RangeSize || options.rangeSize;\r\n options.GaugeAlignment = ZComponentHelper.getGroupEvalValue.call(this, field.GaugeAlignment) || options.GaugeAlignment;\r\n options.paddingValue = options.value.toString() === 'NaN' ? options.GaugeAlignment : '0%';\r\n }\r\n\r\n alignment() {\r\n const alignmentStyle = {\r\n \"padding-right\": this.options[\"paddingValue\"]\r\n };\r\n\r\n return alignmentStyle;\r\n }\r\n\r\n public setEnable(status: boolean) {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible(status: boolean) {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire(status: boolean) {\r\n this.componentProperties.isRequired = status;\r\n }\r\n\r\n public setData(gData: any) {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, FormBuilder, Validators, FormControl, FormArray, ValidatorFn } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, of, Subject, Subscription } from \"rxjs\";\r\nimport { tap, delay, map, switchMap, concatMap } from \"rxjs/operators\";\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { GridItem, SelectableSettings } from '@progress/kendo-angular-grid';\r\nimport { SortDescriptor, State, process } from \"@progress/kendo-data-query\";\r\nimport { TooltipDirective } from '@progress/kendo-angular-tooltip';\r\nimport {\r\n GridDataResult,\r\n DataStateChangeEvent,\r\n PageChangeEvent,\r\n CellClickEvent,\r\n GridComponent,\r\n RowArgs,\r\n ColumnReorderEvent\r\n} from \"@progress/kendo-angular-grid\";\r\n\r\n/********** Component & Service **********/\r\n// import { environment } from \"src/environments/environment\";\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZGridBindingDirective } from \"./zgrid.binding.directive\";\r\nimport {\r\n AuthService, WebApiService, ToastService, GridCaching,\r\n ZField, ZGroup, ZComponent, ZComponentProperties, ZComponentHelper, ZComponentOutputEvent, ZCoreService,\r\n ZGridStatePersistingService, ZGridPostApiParams, ZGridSettings, ZGridColumnSettings, ZGridCustomColumn, StorageSessionService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\nexport interface ZGrid {\r\n params: ZGridPostApiParams;\r\n state: State;\r\n columns: any[];\r\n paginationApiPostUrl: string;\r\n data: ZField;\r\n group: ZGroup;\r\n zgrid: ZGridBindingDirective;\r\n inlineEditedFormGroups: FormGroup;\r\n getGridData: () => any[];\r\n getData: () => void;\r\n clearData: () => void;\r\n setData: (data: any) => void;\r\n setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => void;\r\n}\r\n\r\n@Component({\r\n selector: \"app-zgrid\",\r\n templateUrl: \"./zgrid.component.html\",\r\n styleUrls: [\"./zgrid.component.scss\"]\r\n})\r\nexport class ZgridComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(TooltipDirective) public tooltipDir: TooltipDirective;\r\n // @ViewChild(ZGridBindingDirective, { static: false }) zgrid: ZGridBindingDirective;\r\n zgrid: any = null;\r\n oauthUrl: string = null;\r\n\r\n gridData: GridDataResult;\r\n selectableSettings: SelectableSettings;\r\n mySelection: any[] = [];\r\n inlineEditedFormGroups: FormGroup;\r\n public formGroup: FormGroup; // for kendo grid built-in\r\n public previousNext: boolean;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n _state: State = {\r\n skip: 0,\r\n take: 10\r\n };\r\n\r\n params: ZGridPostApiParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\",\r\n filters: \"\",\r\n columns: \"\",\r\n grantType: 4\r\n };\r\n\r\n gridSubject: Subject<any> = new Subject<any>();\r\n\r\n private widthReduce: number;\r\n private heightReduce: number;\r\n private gData: any;\r\n\r\n columns: any[];\r\n editableColumns: any[];\r\n subscription: Subscription;\r\n pageSizes: boolean | any[];\r\n isLoading: boolean;\r\n gridStorageKey: string;\r\n gridDefaultStateExist: boolean = false;\r\n isNew: boolean = true;\r\n private editedRowIndex: number;\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private formBuilder: FormBuilder,\r\n private authService: AuthService,\r\n private webApiService: WebApiService,\r\n private zGridStatePersistingService: ZGridStatePersistingService,\r\n private toastService: ToastService,\r\n private zcoreService: ZCoreService,\r\n private storageService: StorageSessionService,\r\n private mainService: MainService\r\n ) {\r\n this.oauthUrl = this.zcoreService.getEnvironment().e1OauthUrl + \"/\";\r\n this.allResults = this.allResults.bind(this);\r\n this.refreshData = this.refreshData.bind(this);\r\n this.clearData = this.clearData.bind(this);\r\n this.saveGridSettings = this.saveGridSettings.bind(this);\r\n this.restoreGridSettings = this.restoreGridSettings.bind(this);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // Grid saved setting key(Used in CookieStore & LocalStorage)\r\n this.gridStorageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;\r\n\r\n of(true)\r\n .pipe(\r\n //concatMap(() => {\r\n // // try get gridsetting from cookiestore\r\n // return this.mainService.cookieStoreGet(this.gridStorageKey, this.authService.e1Token.access_token);\r\n //}),\r\n //switchMap(savedGridCache => {\r\n // if (savedGridCache) { \r\n // // Keep the gridSetting from cookiestore to localStorage\r\n // this.zGridStatePersistingService.set(this.gridStorageKey, savedGridCache);\r\n // return of(true);\r\n // }\r\n // return of(false);\r\n //}),\r\n switchMap(() => {\r\n // Grid default setting\r\n this.columns = [];\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n this._state.take = this.data.PageSize || 20;\r\n this.pageSizes = [20, 50, 100, 200, 500];\r\n this.previousNext = this.data['EnablePreviousNextButton'] || false;\r\n\r\n // [Mobile] Disable PageSize\r\n if (this.data.PageSizes === false || ZComponentHelper.isMobileScreen()) {\r\n this.pageSizes = false;\r\n }\r\n\r\n // Grid Selection column\r\n if (this.data.SelectOptions) {\r\n this.selectableSettings = {\r\n // checkboxOnly: this.checkboxOnly,\r\n mode: this.data.SelectOptions === 'single' ? 'single' : 'multiple'\r\n };\r\n }\r\n\r\n // bind this to group using Grid value\r\n if (this.data.Value.startsWith('group.')) {\r\n const gridValue = this.data.Value.slice(6);\r\n this.group[gridValue] = this;\r\n }\r\n\r\n // clear any Subscription\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // if no ResourceURL, still generate Column first, then insert grid data using DataSource\r\n if (!this.data.ResourceURL) {\r\n this.generateGridColumns().subscribe(() => {\r\n if (this.data.DataSource && this.data.SkipDirective) {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n this.setData(ds);\r\n }\r\n });\r\n }\r\n\r\n // subscribe to set grid setting from directive to component\r\n this.subscription = this.gridSubject.subscribe(grid => {\r\n this.zgrid = grid;\r\n this._state = this.zgrid.state;\r\n this.columns = this.zgrid.gridColumns;\r\n if (this.zgrid && this.zgrid.grid.data) {\r\n this.gridData = Object.assign({}, this.zgrid.grid.data);\r\n this.createFormControls();\r\n }\r\n });\r\n\r\n // Check Grid setting exist in localstorage\r\n this.stateExist();\r\n\r\n // Set Filter SessionKey\r\n if (this.data['SaveFilter']) {\r\n this.setGridSessionKey(this.group);\r\n }\r\n return of(true);\r\n }),\r\n tap(() => {\r\n this.gridCallback(this.group);\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n /* Start Grid State (pagination, sortable, filter, ordering) */\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n private stateExist() {\r\n const userGridState = this.zGridStatePersistingService.get(this.gridStorageKey);\r\n\r\n if (userGridState) {\r\n this.gridDefaultStateExist = true;\r\n }\r\n else {\r\n this.gridDefaultStateExist = false;\r\n }\r\n }\r\n\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n if (this.zgrid) {\r\n this.zgrid.dataStateChange(state);\r\n } else {\r\n this.gridData = process(this.gData, state);\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public locked(colSetting: any) {\r\n if (colSetting['pinnedLeft'] == true) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /* End Grid State (pagination, sortable, filter, ordering) */\r\n\r\n /* Start Grid Styling, Display */\r\n public getGridStyle() {\r\n return {\r\n \"height.px\": this.getGridHeight(), // window.innerHeight - this.heightReduce, // 450,\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n }; // \"width.px\": this.innerWidth - 35\r\n }\r\n\r\n private getGridHeight() {\r\n const gridHeight = window.innerHeight - this.heightReduce;\r\n return (gridHeight < 250) ? 250 : gridHeight;\r\n // const v = ZComponentHelper.isMobileScreen();\r\n // if(v){\r\n // const h = window.innerHeight - this.heightReduce;\r\n // return (h < 250) ? 250 : h;\r\n // }else{\r\n // return \"auto\";\r\n // } \r\n }\r\n /* End Grid Styling, Display */\r\n\r\n\r\n /* Start Grid Columns */\r\n public isSelectOption() {\r\n let selectOptionExist = false;\r\n if (this.data.SelectOptions) {\r\n this.selectableSettings = {\r\n checkboxOnly: false,\r\n mode: (this.data.SelectOptions == \"multiple\") ? \"multiple\" : \"single\"\r\n };\r\n selectOptionExist = true;\r\n }\r\n return selectOptionExist;\r\n }\r\n\r\n public setColumns(columnName: string, columns: Array<ZGridCustomColumn>) {\r\n this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n this.generateGridColumns().subscribe();\r\n }\r\n\r\n private wrapColumnNamesInFieldElement(columnList: Array<ZGridCustomColumn>) {\r\n return of(columnList.map(c => {\r\n const isHidden: boolean = c.Hidden;\r\n return {\r\n Name: c.Name,\r\n Value: c.Code,\r\n Type: c.Type,\r\n gridColVisible: !isHidden,\r\n width: 100 + c.Name.length * 4,\r\n enableFiltering: false,\r\n enableSorting: true,\r\n enablePinning: true,\r\n DivClass: \"col-xs-12 col-sm-6\",\r\n IsEditableInGrid: c.Editable\r\n };\r\n }));\r\n }\r\n\r\n private generateGridColumns(): Observable<any> {\r\n const gridSetting = this.getGridSettings();\r\n\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.data.ColumnFields,\r\n this.group\r\n );\r\n if (!this.data.ColumnFields) {\r\n console.warn('Invalid/Empty grid(' + this.data.Name + ') columnField');\r\n }\r\n return columnFields$.pipe(\r\n tap(data => {\r\n if (!data) {\r\n console.warn('Invalid/Empty grid(' + this.data.Name + ') data to generate column');\r\n }\r\n const fieldName = this.data['FieldElementName'];\r\n this.columns = [];\r\n ZComponentHelper.getGridColumns(data,\r\n this.columns,\r\n this.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n null,\r\n this.data);\r\n }),\r\n //switchMap(() => {\r\n // //Get Session\r\n // return this.getGridSessionFilter(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Before get grid data\r\n // return this.beforeGridGetData(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Set grid data\r\n // return this.setGridSessionFilter(this.grp, this);\r\n //})\r\n );\r\n }\r\n\r\n /* End Grid Columns */\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n // Edit incell field\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n // When clicked route to page\r\n this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n }\r\n\r\n public gridCallback(group: ZGroup) {\r\n if (this.data['AfterloadCallback']) {\r\n const me = Object.assign({}, this);\r\n\r\n this.group.subject.next({\r\n type: \"zgrid-AfterloadCallback\",\r\n target: this.data['AfterloadCallback'],\r\n data: me\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.gridData = {\r\n data: gData,\r\n total: (gData ? gData.length : 0)\r\n };\r\n this.gData = gData;\r\n\r\n if (this.zgrid) {\r\n this.zgrid.grid['pageSize'] = gData.length; // set grid size\r\n }\r\n\r\n if (!!this.data.ShowRecordNumber) {\r\n if (this.gridData.data) {\r\n this.gridData.data.forEach((d, i) => {\r\n d.GridNo = i + 1;\r\n });\r\n }\r\n }\r\n\r\n if (this.gData) {\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public getData() {\r\n if (this.zgrid) {\r\n this.zgrid.getDataBinding();\r\n }\r\n\r\n if (this.data.SkipDirective) {\r\n this.gridData = process(this.gData, this.state);\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public getGridData() {\r\n return this.gData;\r\n }\r\n\r\n\r\n public getFormControl(rowIndex: number, property: string) {\r\n const formArray: FormArray = this.inlineEditedFormGroups.get('items') as FormArray;\r\n const formItem = formArray.at(rowIndex);\r\n\r\n if (formItem) {\r\n return formItem.get(property);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private createFormControls() {\r\n if (this.columns) {\r\n // only create if there is at least 1 editable column\r\n if (this.columns.find(c => c.isEditableInGrid) === undefined) {\r\n return;\r\n }\r\n\r\n this.inlineEditedFormGroups = new FormGroup({ items: new FormArray([]) });\r\n\r\n if (Array.isArray(this.gridData.data)) {\r\n this.gridData.data.forEach(d => {\r\n const items = {};\r\n this.columns.forEach(c => {\r\n items[c.field] = new FormControl(d[c.field]);\r\n });\r\n const formGroup = new FormGroup(items);\r\n (<FormArray>this.inlineEditedFormGroups.get(\"items\")).push(formGroup);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public createFormGroup(dataItem: any, fieldName: any): FormGroup {\r\n return this.formBuilder.group({\r\n [fieldName]: dataItem[fieldName]\r\n });\r\n }\r\n\r\n public getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(this.data.Value, this.group);\r\n }\r\n\r\n\r\n\r\n public onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n this.onNavigateTo(event, colSetting, rowData, cellData);\r\n }\r\n\r\n public cellClickHandler(event: CellClickEvent) {\r\n const disableAllColumnCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n const isCommandColumn = event.column.constructor.name == 'CommandColumnComponent' ? true : false;\r\n\r\n if (!disableAllColumnCellClickHandler && !isCommandColumn) {\r\n const inCellEditable = this.data.InCellEditable ? this.data.InCellEditable : false;\r\n if (inCellEditable) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n if (!!this.editableColumns) {\r\n this.editableColumns.map(s => event.sender.editCell(event.rowIndex, event.columnIndex, this.createFormGroup(event.dataItem, s.field)));\r\n }\r\n } else {\r\n console.log(\"cellClick event: \", event);\r\n if (this.data.OnItemClick) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n }\r\n }\r\n\r\n public editCellCloseHandler(args: any) {\r\n const { formGroup, dataItem } = args;\r\n if (!formGroup.valid) {\r\n args.preventDefault();\r\n } else if (formGroup.dirty) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n this.editableColumns.map(s =>\r\n Object.assign(dataItem, { [s.field]: formGroup.value[s.field] }));\r\n this.mySelection.map(s => (s.Id === dataItem.Id) ? Object.assign(s, dataItem) : null);\r\n }\r\n }\r\n\r\n\r\n public onNavigateTo(event: any, clickAction: any, rowData: any, cellData: string) {\r\n // debugger;\r\n // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction.Click);\r\n if (n) {\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: clickAction.Click,\r\n rowData: rowData,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public showTooltip(e: MouseEvent): void {\r\n const element = e.target as HTMLElement;\r\n\r\n let isCommandColumn = false;\r\n element.classList.forEach(data => {\r\n if (data == 'k-command-cell') {\r\n isCommandColumn = true;\r\n }\r\n });\r\n\r\n if (((element.nodeName === 'TD' || element.nodeName === 'TH') && element.offsetWidth < element.scrollWidth) && !isCommandColumn) {\r\n this.tooltipDir.toggle(element);\r\n }\r\n else {\r\n this.tooltipDir.hide();\r\n }\r\n }\r\n\r\n public rowSelectionKey(context: RowArgs): any {\r\n return context.dataItem;\r\n }\r\n\r\n public getSeletectedValues(): any {\r\n return this.mySelection;\r\n }\r\n\r\n public refreshGrid(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n const _gridOptionSegment = event.target.trim().split('.');\r\n const _gridOption = _gridOptionSegment[1];\r\n if (_gridOption) {\r\n const zgridControl = group[_gridOption] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n } else {\r\n console.log('Unable to find grid value: ' + _gridOption);\r\n }\r\n } else {\r\n console.log('Invalid refreshGrid event: ', event);\r\n }\r\n }\r\n\r\n public refreshData() {\r\n this.getData();\r\n }\r\n\r\n public clearData() {\r\n this.zgrid.clearData();\r\n }\r\n\r\n\r\n public allResults(): Observable<ExcelExportData> {\r\n const _zgridControl = this.zgrid as ZGrid;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _data = _zgridComponent.data as GridDataResult;\r\n\r\n const paginationApiPostUrl = _zgridControl.paginationApiPostUrl;\r\n\r\n // Need to clone, if not will affect the grid params.\r\n const params = Object.assign({}, this.params);\r\n params.pageNo = 0;\r\n params.pageSize = _data.total;\r\n\r\n return this.webApiService.httpPost$(paginationApiPostUrl, params).pipe(\r\n map((data: any) => {\r\n const result: ExcelExportData = {\r\n data: process(data.dataSet, {}).data\r\n };\r\n\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n public getClass(dataItem: any, col: any) {\r\n let ngClass = \"gridCell \";\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += \"rightAligned \";\r\n }\r\n\r\n if (dataItem[col.field + '_Class']) {\r\n ngClass += dataItem[col.field + '_Class'] + \" \";\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += col.Class + \" \";\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n public getFormat(col: any, defaultFormat?: any) {\r\n let format = \"\";\r\n if (col.FormatOptions === undefined) {\r\n format = defaultFormat ? defaultFormat : \"\";\r\n } else {\r\n const formatArr = col.FormatOptions.split(\".\")\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = \"1.\" + dp + \"-\" + dp;\r\n }\r\n }\r\n return format;\r\n }\r\n\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\r\n }\r\n\r\n public setGridSessionKey(group: ZGroup) {\r\n if (group[\"GridStorageKey\"]) {\r\n return;\r\n }\r\n else {\r\n group[\"GridStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n }\r\n\r\n }\r\n\r\n public trackBy(index: number, item: GridItem): any {\r\n //console.log(item.data['Id'] || index);\r\n return index;\r\n }\r\n\r\n /* Grid configuration function */\r\n public saveGridSettings(): void {\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _columns = _zgridComponent.columns;\r\n\r\n of(this.columns)\r\n .pipe(\r\n switchMap(() => {\r\n const configValue: ZGridColumnSettings[] = _columns.toArray().map(item => {\r\n const _zGridColumnSettings: ZGridColumnSettings = Object.keys(item)\r\n .filter(propName => {\r\n return !propName.toLowerCase().includes('template')\r\n })\r\n .reduce((acc, curr) => (\r\n {\r\n ...acc,\r\n ...{ [curr]: item[curr] }\r\n })\r\n , {} as ZGridColumnSettings);\r\n return _zGridColumnSettings;\r\n });\r\n\r\n // remove extra element form array\r\n configValue.forEach(item => {\r\n delete item['headerStyle'];\r\n delete item['__ngContext__'];\r\n });\r\n\r\n const gridSetting: ZGridSettings = {\r\n // state: this.state,\r\n columnsConfig: configValue\r\n };\r\n\r\n // Find any setting from localstorage and update, if not just add in.\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(this.gridStorageKey);\r\n let _gridConfig: GridCaching = null;\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n _gridConfig = _arrGridCaching.find(x => x['dataFormFields'] === this.gridStorageKey);\r\n\r\n if (_gridConfig) {\r\n _gridConfig.gridSettings = gridSetting;\r\n }\r\n }\r\n else {\r\n _arrGridCaching = [];\r\n }\r\n\r\n if (!_gridConfig) {\r\n _gridConfig = {\r\n dataFormFields: this.gridStorageKey,\r\n gridSettings: gridSetting\r\n };\r\n\r\n _arrGridCaching.push(_gridConfig);\r\n }\r\n return _arrGridCaching;\r\n }),\r\n concatMap(gridCache => {\r\n // Save grid caching to localstorage\r\n this.zGridStatePersistingService.set(this.gridStorageKey, gridCache);\r\n // Save to CookieStore\r\n return this.mainService.cookieStorePost(this.gridStorageKey, gridCache);\r\n }),\r\n tap(savedGridCache => {\r\n // check is saved state exist to enable/hide restore button\r\n this.stateExist();\r\n }),\r\n tap(() => {\r\n // Alert\r\n this.toastService.show('Grid Setting Saved', \"top\", true, 2000, 'success');\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public restoreGridSettings() {\r\n of(true)\r\n .pipe(\r\n switchMap(() => {\r\n // Clear localstorage grid setting\r\n this.zGridStatePersistingService.remove(this.gridStorageKey);\r\n return of(true)\r\n }),\r\n switchMap(() => {\r\n // delete cookiestore gridSetting by storagekey as name\r\n return this.mainService.cookieStoreDeleteMultiple(this.gridStorageKey);\r\n }),\r\n concatMap(() => {\r\n // Use original column setting\r\n return this.generateGridColumns();\r\n }),\r\n tap(() => {\r\n // check is saved state exist\r\n this.stateExist();\r\n // Alert\r\n this.toastService.show('Grid Setting Restored', \"top\", true, 2000, 'success');\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching) {\r\n const _gridCaching: GridCaching = JSON.parse(_arrGridCaching['Value']);\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n /* Inline setting */\r\n public getInlineField(value: any) {\r\n return this.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(rowIndex: number) {\r\n const formArray: FormArray = this.inlineEditedFormGroups.get('items') as FormArray;\r\n return formArray.at(rowIndex)\r\n }\r\n\r\n public getFormControlData(value: any) {\r\n return this.inlineEditedFormGroups.value.items;\r\n }\r\n\r\n\r\n /* Event */\r\n public beforeGridGetData(group: ZGroup, me: any) {\r\n console.warn(\"beforeDataBinding triggered\");\r\n if (!group.beforeGridGetData) {\r\n console.warn(\"group.beforeDataBinding is undefined\");\r\n return of(true);\r\n }\r\n return group.beforeGridGetData(group, me);\r\n }\r\n\r\n public async getGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n if (this.storageService) {\r\n await this.storageService.get(StorageKey)\r\n .then(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n return null;\r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.state.filter = JSON.parse(result[\"StateFilter\"]);\r\n this.params.filterParams = JSON.parse(result[\"FilterParams\"]);\r\n\r\n this.state.filter.filters.forEach((stateFilter: any) => {\r\n if (stateFilter.field.includes('UTC')) {\r\n stateFilter.value = new Date(stateFilter.value);\r\n }\r\n });\r\n\r\n return data;\r\n }\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public setGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n let lstGridFilter: { [key: string]: string } = {};\r\n\r\n if (me.state.filter && this.storageService && this.data['SaveFilter']) {\r\n //list of data for StateFilter and FilterParams\r\n lstGridFilter = { \"StateFilter\": JSON.stringify(me.state.filter), \"FilterParams\": JSON.stringify(me.params.filterParams) }\r\n //create session storage\r\n this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));\r\n }\r\n }\r\n\r\n /* Available Functions */\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n /* onchange Events */\r\n public filterChange(event: any): void {\r\n if (this.zgrid) {\r\n this.zgrid.filterChange(event);\r\n }\r\n }\r\n\r\n public pageChange(event: PageChangeEvent): void { \r\n if (this.zgrid) {\r\n this.zgrid.pageChange(event);\r\n }\r\n }\r\n\r\n public sortChange(sort: SortDescriptor[]): void {\r\n if (this.zgrid) {\r\n this.zgrid.sortChange(sort);\r\n }\r\n }\r\n\r\n public inCellCheckBoxOnChange(event: any, rowIndex: any, column: any) {\r\n const isChecked = event.detail.checked;\r\n this.gData[rowIndex][column.Value] = isChecked;\r\n }\r\n\r\n public columnsOrderChanged(event: ColumnReorderEvent): void {\r\n const _zgridControl = this.zgrid as ZGrid;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _data = _zgridComponent.data as GridDataResult;\r\n\r\n if (this.zgrid) {\r\n const _zgrid = this.zgrid;\r\n }\r\n }\r\n\r\n\r\n /* */\r\n public addHandler({ sender }) {\r\n this.isNew = true;\r\n\r\n // close any existing editor\r\n this.closeEditor(sender);\r\n\r\n // loop all column to get validation and create form control\r\n const colFormControl = {};\r\n this.zgrid.gridColumns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n } \r\n\r\n colFormControl[col.Value] = new FormControl(null, validators); \r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new FormGroup(colFormControl);\r\n\r\n // add to grid row\r\n sender.addRow(this.formGroup);\r\n }\r\n\r\n public saveHandler({ sender, rowIndex, formGroup, isNew }): void {\r\n // get grid data.\r\n const gridExistingData = this.gData ? this.gData : [];\r\n\r\n // if valid\r\n if (formGroup.valid) {\r\n // check for duplicate UniqueKey\r\n let uniqueKeyExist = false;\r\n const uniqueKey = this.data['UniqueKey'];\r\n if (uniqueKey) {\r\n gridExistingData.forEach(data => {\r\n if (data[uniqueKey] === formGroup.value[uniqueKey]) {\r\n uniqueKeyExist = true;\r\n }\r\n });\r\n }\r\n\r\n if (!uniqueKeyExist) {\r\n if (isNew) {\r\n // if new, push to data\r\n gridExistingData.push(formGroup.value);\r\n }\r\n else {\r\n // if edit, update data\r\n gridExistingData[rowIndex] = formGroup.value;\r\n }\r\n\r\n this.setData(gridExistingData);\r\n\r\n sender.closeRow(rowIndex);\r\n }\r\n }\r\n }\r\n\r\n public cancelHandler({ sender, rowIndex }) {\r\n // cancel any existing editor\r\n sender.closeRow(rowIndex);\r\n }\r\n\r\n public editHandler({ sender, rowIndex, dataItem }) {\r\n this.isNew = false;\r\n\r\n // close any existing editor\r\n this.closeEditor(sender);\r\n \r\n // loop all column to get validation and create form control, append current row value\r\n const colFormControl = {};\r\n this.zgrid.gridColumns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n }\r\n \r\n colFormControl[col.Value] = new FormControl(dataItem[col.Value], validators);\r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new FormGroup(colFormControl);\r\n\r\n // set grid row to edit\r\n this.editedRowIndex = rowIndex; \r\n sender.editRow(rowIndex, this.formGroup);\r\n }\r\n\r\n public removeHandler({ sender, dataItem }) {\r\n const index = this.getItemIndex(dataItem, this.gData, this.data['UniqueKey']);\r\n this.gData.splice(index, 1);\r\n\r\n sender.cancelCell();\r\n }\r\n\r\n private closeEditor(grid, rowIndex = this.editedRowIndex) {\r\n grid.closeRow(rowIndex);\r\n this.editedRowIndex = undefined;\r\n this.formGroup = undefined;\r\n }\r\n\r\n private getItemIndex(item: any, data: any[], key: string): number {\r\n for (let idx = 0; idx < data.length; idx++) {\r\n if (data[idx][key] === item[key]) {\r\n return idx;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Subscription } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZField, ZGroup, ZComponentProperties,\r\n WebApiService, AttachmentService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zimg\",\r\n templateUrl: \"./zimg.component.html\",\r\n styleUrls: [\"./zimg.component.scss\"]\r\n})\r\nexport class ZimgComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n imgWidth: string = null;\r\n imgHeight: string = null;\r\n imgSrc: string = null;\r\n randomNumber = Math.random();\r\n componentProperties = new ZComponentProperties();\r\n // imgSourceAvailable = false;\r\n subscription: Subscription;\r\n\r\n Guid;\r\n FileName;\r\n Image:string;\r\n constructor(private attachmentService: AttachmentService) { }\r\n\r\n async ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n if (this.data.Size && this.data.Size.toLowerCase().indexOf(\"x\") !== -1) {\r\n const imgSize = this.data.Size.toLowerCase().split(\"x\");\r\n this.imgWidth = imgSize[0];\r\n this.imgHeight = imgSize[1];\r\n }\r\n\r\n this.Guid = this.getGroupValue(this.data['Guid'], this.group);//this.data['Guid'];//this.getGroupValue(this.data['Guid'], this.group);\r\n this.FileName = this.getGroupValue(this.data['FileName'], this.group);//this.getGroupValue(this.data['FileName'], this.group);\r\n\r\n if(this.Guid != undefined && this.FileName != undefined){\r\n let blobfile = await this.attachmentService.getImageBlob(this.FileName, this.Guid);\r\n this.Image= await this.attachmentService.convertBlobToBase64(blobfile);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // this.subscription = this.group.zModel$\r\n // .asObservable()\r\n // .subscribe((zmodel: any) => {\r\n // this.onDataSourceChange(zmodel);\r\n // });\r\n }\r\n\r\n\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n onDataSourceChange() {\r\n const value = this.getGroupValue(this.data.Value, this.group);\r\n const sourceUrl = this.getGroupValue(this.data.SourceUrl, this.group);\r\n\r\n if (value && sourceUrl) {\r\n // this.imgSrc =\r\n // this.imgSourceAvailable = true;\r\n return (\r\n sourceUrl +\r\n \"?id=\" +\r\n value +\r\n \"&size=\" +\r\n this.data.Size\r\n // + \"&r=\" + this.randomNumber\r\n );\r\n // console.log(\"image source: \", this.imgSrc);\r\n } else {\r\n // this.imgSourceAvailable = false;\r\n }\r\n }\r\n\r\n getGroupValue(value: string, group: any) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n // getValue(data: string) {\r\n // let gArray: Array<string>;\r\n // if (data) {\r\n // gArray = data.split(\".\");\r\n\r\n // if (gArray.length === 3 && data.startsWith(\"group.zModel\")) {\r\n // return this.group.zModel[gArray[2]];\r\n // } else if (gArray.length === 2 && data.startsWith(\"group.\")) {\r\n // return this.group[gArray[1]];\r\n // }\r\n // }\r\n // return null;\r\n // }\r\n\r\n getImgStyle(): any { }\r\n\r\n onIconClick() {\r\n const iconClick = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick, this.group);\r\n if (typeof iconClick === 'function') {\r\n return iconClick();\r\n }\r\n\r\n if (!iconClick) {\r\n console.warn('ZImg OnItemClick property is invalid: ', iconClick);\r\n return;\r\n }\r\n\r\n if (typeof iconClick !== 'function') {\r\n console.warn('ZImg OnItemClick property is not a function: ', iconClick);\r\n return;\r\n }\r\n }\r\n\r\n getIconName() {\r\n const iconName = ZComponentHelper.getGroupEvalValue.call(this, this.data.Icon, this.group);\r\n return iconName;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { delay, tap } from 'rxjs/operators';\r\nimport { LabelSettings } from '@progress/kendo-angular-progressbar';\r\nimport { State } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, ZField, ZGroup, ResourceApiService, WebApiService, GridCaching,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGridStatePersistingService, ZGridColumnSettings, ZGridPostApiParams\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zkcard',\r\n templateUrl: './zkcard.component.html',\r\n styleUrls: ['./zkcard.component.scss'],\r\n})\r\nexport class ZkcardComponent implements ZComponent, OnInit, OnDestroy {\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private resourceApiService: ResourceApiService,\r\n private authService: AuthService,\r\n private zGridStatePersistingService: ZGridStatePersistingService,\r\n private webapiService: WebApiService,\r\n private router: Router,\r\n ) { }\r\n\r\n data: ZField;\r\n group: ZGroup;\r\n form: FormGroup;\r\n zgrid: any = null;\r\n scrollViewCards: any = { data: [], total: 0 };\r\n responseData: any = { data: [], total: 0 };\r\n params: ZGridPostApiParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\",\r\n filters: \"\",\r\n columns: \"\",\r\n grantType: 4\r\n };\r\n //gridData: GridDataResult;\r\n columns: any[];\r\n gridColumns: any[] = [];\r\n usableColumns: any[] = [];\r\n dataSource = null;\r\n state: State = {\r\n skip: 0,\r\n take: 10,\r\n };\r\n paginationApiPostUrl = null;\r\n resourceURL = null;\r\n subscription: Subscription;\r\n public filterItems: Array<string> = [];\r\n public progressStyles: { [key: string]: any } = {\r\n color: '',\r\n background: 'green'\r\n };\r\n public loadingPanelVisible = false;\r\n\r\n\r\n public label: LabelSettings = {\r\n visible: true,\r\n format: 'percent',\r\n position: 'center'\r\n };\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.dataSource = this.field.DataSource ? this.field.DataSource : null;\r\n this.filterItems = this.group['filterItems'];\r\n if (!this.dataSource) {\r\n this.resourceURL = ZComponentHelper.getGroupValue(\r\n this.field.ResourceURL,\r\n this.grp\r\n );\r\n // console.log(\"At zgrid.component (OnInit) resourceURL: \", resourceURL);\r\n if (!this.resourceURL) {\r\n // this.grid.loading = false;\r\n //if (this.zgridbinding.data.Name !== \"ActivityLogGrid\") {\r\n // console.warn(\r\n // \"No initialise for Field.ResourceURL: \",\r\n // this.field.ResourceURL\r\n // );\r\n //}\r\n return;\r\n }\r\n\r\n const array = this.resourceURL.split(\"/api/\");\r\n if (!!array[1]) {\r\n array[1] = \"Page\" + array[1];\r\n this.paginationApiPostUrl = array.join(\"/api/\");\r\n } else {\r\n const arr = this.resourceURL.split(\"/\");\r\n arr[arr.length - 2] = \"Page\" + arr[arr.length - 2];\r\n this.paginationApiPostUrl = arr.join(\"/\");\r\n }\r\n\r\n this.setFilterParamsByParentRefId();\r\n }\r\n\r\n this.generateGridColumns();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n getData() {\r\n if (this.zgrid) {\r\n this.zgrid.getDataBinding();\r\n }\r\n //if (this.data.SkipDirective) {\r\n // this.gridData = process(this.gData, this.state);\r\n // this.createFormControls();\r\n //}\r\n }\r\n\r\n generateGridColumns() {\r\n this.loadingPanelVisible = true;\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.field.ColumnFields,\r\n this.grp\r\n );\r\n columnFields$\r\n .pipe(\r\n tap((data) => {\r\n\r\n const gridSetting = this.getGridSettings();\r\n const fieldName = this.field[\"FieldElementName\"];\r\n ZComponentHelper.getGridColumns(\r\n data,\r\n this.gridColumns,\r\n this.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n this.usableColumns\r\n );\r\n this.getFilterParamsColumns();\r\n this.getFilter();\r\n //this.getSorting();\r\n //this.getGrantType();\r\n //this.setHiddenColumn(gridSetting);\r\n //this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;\r\n }),\r\n tap(() => {\r\n this.getDataBinding();\r\n })\r\n )\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n getDataBinding(): void {\r\n if (!this.dataSource) {\r\n this.param.pageSize = this.field.PageSize ?? 50;\r\n if (this.field.ExternalPagination) {\r\n // For POST method Page WebAPI\r\n this.webapiService\r\n .postApi(\r\n this.paginationApiPostUrl,\r\n this.param,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n delay(2500)\r\n this.responseData = { data: data.dataSet, total: data.totalCount };\r\n this.scrollViewCards = { data: data.dataSet, total: data.totalCount };\r\n if (data.dataSet.length > 0) {\r\n this.getRecordsSummary();\r\n }\r\n\r\n if (this.data.ResourceURLAlt) {\r\n this.getNewSurvey();\r\n }\r\n //this.aggregateHandling(data.dataSet);\r\n //this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n //this.grid.loading = false;\r\n this.loadingPanelVisible = false;\r\n //this.notifyDataChange();\r\n });\r\n } else {\r\n // For GET method\r\n this.webapiService\r\n .getApi(this.resourceURL, null, null, null, null, null, true)\r\n .subscribe((data) => {\r\n let _data = null;\r\n let _totalCount = 0;\r\n\r\n if (data.dataSet) {\r\n _data = data.dataSet;\r\n _totalCount = data.totalCount;\r\n } else {\r\n _data = data;\r\n _totalCount = data.length;\r\n }\r\n this.loadingPanelVisible = false;\r\n //this.aggregateHandling(_data);\r\n //this.grid.data = { data: _data, total: _totalCount };\r\n //this.grid.pageSize = _totalCount;\r\n //this.grid.loading = false;\r\n //this.notifyDataChange();\r\n });\r\n }\r\n } else {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.field.DataSource,\r\n this.grp\r\n );\r\n }\r\n }\r\n\r\n getRecordsSummary() {\r\n let SurveyIds = [];\r\n\r\n this.responseData.data.forEach(value => {\r\n SurveyIds.push(value.Id);\r\n });\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getURL('ppsapsurveysummaryinfoURL'),\r\n SurveyIds,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe(data => {\r\n this.responseData.data.forEach(value => {\r\n data.forEach(x => {\r\n if (x.SurveyId == value.Id) {\r\n value['value'] = Number.isNaN(((x.TotalTakenQuestions / x.TotalQuestions) * 100)) ? 0 : Math.round(((x.TotalTakenQuestions / x.TotalQuestions) * 100));\r\n // value['value'] = 100;\r\n }\r\n })\r\n });\r\n })\r\n }\r\n\r\n getNewSurvey() {\r\n let requestBody = {\r\n columns: \"PartnerMillId,SurveyTemplateId,WFS_StatusCode,WFS_StatusName\",\r\n pageSize: this.field.PageSize ?? 50,\r\n };\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getPageUrl(this.data.ResourceURLAlt),\r\n requestBody,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n data.dataSet.forEach(value => {\r\n value['value'] = 0;\r\n this.scrollViewCards.data.push(value);\r\n this.scrollViewCards.total += 1;\r\n\r\n //data.forEach(x => {\r\n // if (x.SurveyId == value.Id) {\r\n // value['value'] = Number.isNaN(((x.TotalTakenQuestions / x.TotalQuestions) * 100)) ? 0 : Math.round(((x.TotalTakenQuestions / x.TotalQuestions) * 100));\r\n // }\r\n //})\r\n });\r\n })\r\n }\r\n\r\n get field() {\r\n return this.data;\r\n }\r\n\r\n get grp() {\r\n return this.group;\r\n }\r\n\r\n get param(): ZGridPostApiParams {\r\n return this.params;\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.field.Name + '::' + this.field.Value;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n const _gridCaching: GridCaching = _arrGridCaching.find(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n private setFilterParamsByParentRefId() {\r\n // Use field own referenceId if available\r\n const refId = this.getFieldReferenceId() || this.grp.referenceId;\r\n const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n if (refId && this.grp.parentReferenceField) {\r\n const filterValue = {\r\n key: refField,\r\n ops: \"=\",\r\n value: refId,\r\n };\r\n // if (this.params.filterParams.find(x => x.key === filterValue.key) === undefined) {\r\n this.params.filterParams.push(filterValue);\r\n // }\r\n }\r\n }\r\n\r\n private getFieldReferenceId() {\r\n let fieldReferenceId = null;\r\n if (this.field.ReferenceId) {\r\n fieldReferenceId = ZComponentHelper.getGroupValue(\r\n this.field.ReferenceId,\r\n this.grp\r\n );\r\n }\r\n return fieldReferenceId;\r\n }\r\n\r\n private getFilterParamsColumns() {\r\n const colFields: Array<string> = [];\r\n this.gridColumns.forEach((field) => {\r\n if (field.valueExpr) {\r\n colFields.push(field.valueExpr + \" as \" + field.field);\r\n } else {\r\n colFields.push(field.field);\r\n }\r\n });\r\n\r\n if (colFields.length > 0) {\r\n if (colFields.indexOf(\"Id\") === -1) {\r\n colFields.push(\"Id\");\r\n }\r\n }\r\n\r\n let tmpGridColumn: any[] = [];\r\n tmpGridColumn.push(colFields.join(\",\"));\r\n if (this.usableColumns.length > 0) {\r\n tmpGridColumn.push(this.usableColumns.join(\",\"));\r\n }\r\n this.params.columns = tmpGridColumn.join(\",\");\r\n }\r\n\r\n start(event: any) {\r\n this.group;\r\n this.group.isLoading = true;\r\n if (event.WFS_StatusName == 'New') {\r\n let param = {\r\n UserId: this.group['PSAPUSERID'],\r\n SurveyMillId: event.Id\r\n }\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getURL('ppsapsurveycreateURL'),\r\n param,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n this.group.isLoading = false;\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: event,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, data.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n\r\n });\r\n }\r\n else {\r\n this.group.isLoading = false;\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: event,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, event.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n }\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n\r\n private getFilter() {\r\n if (this.params.filters && this.field.Filters) {\r\n this.params.filters = this.params.filters + \" && \" + this.field.Filters;\r\n } else if (!this.params.filters && this.field.Filters) {\r\n this.params.filters = this.field.Filters;\r\n }\r\n\r\n if (this.field.Filters && this.field.Filters.indexOf(\"group.\") !== -1) {\r\n const filterKeyValPairs = this.field.Filters.split(\" \");\r\n const grpValues = filterKeyValPairs.filter(\r\n (element) => element.trim().indexOf(\"group.\") !== -1\r\n );\r\n\r\n grpValues.forEach((val) => {\r\n const actualVal = ZComponentHelper.getGroupValue(val, this.grp);\r\n this.params.filters = this.params.filters.replace(val, actualVal);\r\n });\r\n }\r\n }\r\n\r\n valueChange(event: any) {\r\n if (event.length < 1) {\r\n this.scrollViewCards.data = this.responseData.data;\r\n this.scrollViewCards.total = this.responseData.total;\r\n return;\r\n }\r\n this.scrollViewCards.data = this.responseData.data.filter(x => event.includes(x.WFS_StatusName));\r\n this.scrollViewCards.total = this.responseData.data.filter(x => event.includes(x.WFS_StatusName)).length;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zlabel',\r\n templateUrl: './zlabel.component.html',\r\n styleUrls: ['./zlabel.component.scss'],\r\n})\r\nexport class ZlabelComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n labelText = \"\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.labelText = ZComponentHelper.getGroupValue(this.data.Label.toString(), this.group);\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isVisible() {\r\n if (this.componentProperties.isVisible === null) {\r\n return ZComponentHelper.isVisible.call(this, this.data);\r\n } else {\r\n return this.componentProperties.isVisible;\r\n }\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass}`;\r\n }\r\n\r\n public setData = (data: any) => {\r\n this.labelText = data;\r\n }\r\n}","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DialItemClickEvent, FabAlign, FabPositionMode } from '@progress/kendo-angular-buttons';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, ResourceApiService, WebApiService, WorkflowService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zmfb',\r\n templateUrl: './zmfb.component.html',\r\n styleUrls: ['./zmfb.component.scss'],\r\n})\r\nexport class ZmfbComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n positionMode: FabPositionMode = 'fixed';\r\n bottomEnd: FabAlign = { vertical: 'bottom', horizontal: 'end' };\r\n items: Array<any> = [];\r\n dialOpen: boolean = false; \r\n isWorkflowButton: boolean = false;\r\n buttonColor: string = 'info';\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService\r\n ) { }\r\n\r\n/******************** Common function ********************/\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.data = this.getFirstzButton(this.group.fields);\r\n\r\n if (this.data) {\r\n if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {\r\n // handle as zWorkflowButton\r\n this.isWorkflowButton = true;\r\n this.loadWorkflowButton();\r\n }\r\n else {\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n\r\n\r\n try {\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n if (_isVisible) {\r\n this.items.push({\r\n label: label,\r\n icon: ZComponentHelper.getIcon(button.Icon),\r\n 'clickEvent': button.ClickEvent,\r\n 'click': (y) => {\r\n this.buttonClick(button);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n \r\n /******************** zButton ********************/\r\n private getFirstzButton(data: any[]) {\r\n // data.forEach(d => {\r\n for (let i = 0; i < data.length - 1; i++) {\r\n if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n return data[i];\r\n } else {\r\n if (Array.isArray(data[i].Value)) {\r\n this.getFirstzButton(data[i].Value);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private getButtonLabel(button: any) { \r\n let buttonLabel = button.Label;\r\n if (!buttonLabel) {\r\n buttonLabel = button.Name;\r\n }\r\n\r\n let labelExpr = buttonLabel.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return buttonLabel;\r\n }\r\n }\r\n\r\n private buttonClick(button: any) { \r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public events: string[] = [];\r\n\r\n public onBlur(): void {\r\n //console.log('blur');\r\n }\r\n\r\n public onFocus(): void {\r\n if (this.isWorkflowButton) {\r\n this.loadWorkflowButton();\r\n }\r\n //console.log('focus');\r\n }\r\n\r\n public onOpen(e): void {\r\n this.dialOpen = true;\r\n console.log('open');\r\n }\r\n\r\n public onClose(e): void {\r\n this.dialOpen = false;\r\n console.log('close');\r\n }\r\n\r\n public onDialItemClick(e: DialItemClickEvent): void { \r\n e.item.click(); \r\n }\r\n\r\n /******************** zWorkflowButton ********************/\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n private loadWorkflowButton() {\r\n // actionBtnList: Array<ZField>;\r\n this.items = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n try {\r\n // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(false)\r\n );\r\n\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n\r\n if (_isVisible) { \r\n this.items.push({\r\n label: buttonLabel,\r\n fieldAttribute: button,\r\n icon: ZComponentHelper.getIcon(attributes.Icon),\r\n 'clickEvent': button.ClickEvent,\r\n 'click': (y) => {\r\n this.workflowButtonClick(button);\r\n }\r\n });\r\n } \r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n }); \r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n workflowButtonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {\r\n this.loadWorkflowButton();\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: 'app-znumeric',\r\n templateUrl: './znumeric.component.html',\r\n styleUrls: ['./znumeric.component.scss'],\r\n})\r\nexport class ZnumericComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup; \r\n\r\n componentProperties = new ZComponentProperties();\r\n constructor() { }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.RightAlign) {\r\n var thisComponent = this;\r\n setTimeout(function () {\r\n // only available when popup is shown, get the element by class \r\n let numericTextbox = $(\"#\" + thisComponent.data.Value).find(\"input\");\r\n if (numericTextbox.length > 0) {\r\n numericTextbox[0].style.textAlign = \"right\";\r\n }\r\n }, 750);\r\n }\r\n // FormatOption can be \"#.00\\\\%\" | \"$#.000\" | \"#\"\r\n }\r\n\r\n valueHandler() {\r\n const dataValue = this.form.get(this.data.Value).value;\r\n if (dataValue != \"\") {\r\n var value: number = +dataValue;//the \"+\" converts string to number\r\n return value;\r\n }\r\n }\r\n \r\n onChange(value: any) { \r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value: value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n \r\n // Mobile View\r\n public getStyle(RightAlign: boolean) {\r\n let ngStyle = \"\";\r\n if (RightAlign) {\r\n ngStyle += \"right\";\r\n } else {\r\n ngStyle += \"left\";\r\n }\r\n return ngStyle;\r\n } \r\n\r\n public autocorrectHandler() {\r\n if (this.data.AutoCorrect) {\r\n return \"on\";\r\n }\r\n else {\r\n return \"off\";\r\n }\r\n }\r\n\r\n public inputmodeHandler() {\r\n return \"decimal\";\r\n }\r\n \r\n getKendoStyle() {\r\n const isReadOnly = (!!this.componentProperties.isReadOnlyField ? this.group[this.componentProperties.isReadOnlyField] : this.componentProperties.isReadOnly);\r\n \r\n if (isReadOnly) {\r\n return {\r\n \"margin\": \"7px 0 0 0\",\r\n \"width\": \"100%\",\r\n \"background-color\": \"#eaeaea\",\r\n \"color\": \"#545454\"\r\n };\r\n }\r\n else {\r\n return {\r\n \"margin\": \"7px 0 0 0\",\r\n \"width\": \"100%\"\r\n };\r\n }\r\n }\r\n}\r\n","\r\n/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable, of } from \"rxjs\";\r\nimport { delay } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n CacheService, ResourceApiService, WebApiService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zpostselectinput\",\r\n templateUrl: \"./zpostselectinput.component.html\",\r\n styleUrls: [\"./zpostselectinput.component.scss\"]\r\n})\r\nexport class ZpostselectinputComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"selectComponent\", { static: true })\r\n selectComponent: IonicSelectableComponent;\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n // subscription: Subscription;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private debounceSub: Subscription;\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n\r\n constructor(\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService,\r\n private cacheService: CacheService\r\n ) { }\r\n\r\n ngOnDestroy(): void {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n ZComponentHelper.setSelectMultipleTextValue(this.data.CCSelectOptions, this);\r\n\r\n const fieldValue = this.data.CCValue;\r\n let getzDataForzModel$: Observable<any>;\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$\r\n && this.group.zModel && this.group.zModel[fieldValue]) {\r\n const recordId = this.group.zModel[fieldValue];\r\n getzDataForzModel$ = ZComponentHelper.getInfiniteData(null, '', this, recordId.toString());\r\n if (getzDataForzModel$) {\r\n getzDataForzModel$.subscribe((zdata) => {\r\n console.log(this.data.Name, ' - initial zData load: ', zdata);\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n if (!ZComponentHelper.isMobileScreen()) {\r\n this.handleFilter(null, true);\r\n }\r\n } else {\r\n if (this.data.CCOptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(() => {\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n }\r\n\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.CCOptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.CCOptionSort;\r\n filterParam.columns = this.data.CCOptionColumns;\r\n filterParam.filters = this.data.CCOptionFilter;\r\n\r\n return ZComponentHelper.getDataOptions(\r\n this.data.CCOptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n\r\n getItemsData() {\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n const optionName = this.data.CCOptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n if (Array.isArray(this.data.CCSelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n // return selectionOptions;\r\n // return this.data.SelectOptions;\r\n this.group.zData[optionName.slice(12)] = this.data.CCSelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n // this.items = this.group.zData[optionName.slice(6)];\r\n return this.group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n // this.items = this.group.zData[optionName.slice(12)];\r\n return this.group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n // this.items = this.group[optionName.slice(6)];\r\n return this.group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n // this.items = this.group[optionName];\r\n return this.group[optionName] || [];\r\n }\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n }\r\n\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.CCOnChange,\r\n event,\r\n data: {value, field: this.data}\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.CCValue, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n onChange(event: { component: IonicSelectableComponent; value: any }) {\r\n console.log(\"zselectmultiple (onChange): \", event.value);\r\n ZComponentHelper.setModelValue(this.data.CCValue, event.value, this.group);\r\n const fc = this.form.controls[this.data.CCValue];\r\n this.handleClose();\r\n\r\n if (\r\n this.data.CCIsRequired &&\r\n (event.value === null || event.value.length === 0)\r\n ) {\r\n fc.setErrors({ required: true });\r\n } else {\r\n fc.setErrors(null);\r\n }\r\n\r\n this.onChangeEvent(event.value);\r\n }\r\n\r\n clearItems() {\r\n this.selectComponent.clear();\r\n this.selectComponent.close();\r\n }\r\n\r\n toggleItems() {\r\n this.selectComponent.toggleItems(this.toggleSelectable);\r\n this.toggleSelectable = !this.toggleSelectable;\r\n }\r\n\r\n confirmItems() {\r\n this.selectComponent.confirm();\r\n this.selectComponent.close();\r\n }\r\n\r\n onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n const component = event.component;\r\n if (component) {\r\n component.startSearch();\r\n component.enableInfiniteScroll();\r\n }\r\n\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n this.infiniteScrollPageNo = 0;\r\n }\r\n this.getInfiniteData(event);\r\n } else {\r\n this.infiniteScrollPageNo = 0;\r\n if (component) {\r\n component.items = [];\r\n }\r\n const params = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 15,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\"\r\n };\r\n const searchFields = this.data.SearchFields\r\n ? this.data.SearchFields\r\n : this.itemTextField;\r\n const filteritems = ZComponentHelper.filterSearchItems(\r\n this.getItemsData(),\r\n // this.items,\r\n event.text,\r\n searchFields,\r\n params.pageNo,\r\n params.pageSize\r\n );\r\n if (component) {\r\n const items = component.items.concat(filteritems);\r\n component.items = items;\r\n component.endInfiniteScroll();\r\n component.endSearch();\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n getInfiniteData(event: {\r\n component: IonicSelectableComponent;\r\n text: string;\r\n }) {\r\n ZComponentHelper.getInfiniteData(event.component, event.text, this);\r\n }\r\n\r\n handleFilter(value: any, justOneTime?: boolean) {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n this.isLoading = true;\r\n this.onSearch({ component: null, text: value });\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.unsubscribe();\r\n // }\r\n // this.loadInfiniteDataSub = new Subject(false);\r\n // this.handleFilter(null);\r\n // interval(2000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.onSearch({ component: null, text: value });\r\n // if (justOneTime) {\r\n // this.handleClose();\r\n // }\r\n // });\r\n });\r\n }\r\n\r\n handleOpen() {\r\n if (this.data.HasInfiniteScroll) {\r\n this.handleFilter(null);\r\n // // if (this.loadInfiniteDataSub) {\r\n // // this.loadInfiniteDataSub.unsubscribe();\r\n // // }\r\n // // this.loadInfiniteDataSub = new Subject();\r\n // // // this.handleFilter(null);\r\n // // interval(3000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.handleFilter(null);\r\n // // });\r\n }\r\n }\r\n\r\n handleClose() {\r\n // if (this.data.HasInfiniteScroll) {\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.next(true);\r\n // // this.loadInfiniteDataSub.complete();\r\n // }\r\n // }\r\n }\r\n\r\n handleBlur() {\r\n // this.handleClose();\r\n }\r\n \r\n getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.ItemTemplate\r\n );\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n // return item[itemTextField];\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n if (ZComponentHelper.hasCCField(this.data.Type)) {\r\n ZComponentHelper.changeValidator(status, this.group, this.data.CCValue, this.componentProperties, Validators.required);\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n if (!form) {\r\n //debugger;\r\n }\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { QueryBuilderConfig, QueryBuilderClassNames, QueryBuilderComponent } from 'angular2-query-builder';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n FieldService, ZComponentHelper, ZComponentProperties, ZField, ZGroup,\r\n FontAweSomeService, DefaultPageSettingParams, WebApiService, ResourceApiService\r\n} from 'mmhglobal-zcore';\r\nimport { of } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-zquerybuilder',\r\n templateUrl: './zquerybuilder.component.html',\r\n styleUrls: ['./zquerybuilder.component.scss'],\r\n})\r\nexport class ZquerybuilderComponent implements OnInit {\r\n @ViewChild(QueryBuilderComponent, { static: false }) queryBuilder: QueryBuilderComponent;\r\n @Input() classNames: QueryBuilderClassNames;\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n //qbItems: Array<any> = [];\r\n qbItems = {};\r\n\r\n public componentProperties = new ZComponentProperties();\r\n public queryCtrl: any;\r\n public currentConfig: QueryBuilderConfig = {\r\n fields: {},\r\n allowEmptyRulesets: true\r\n };\r\n public allowRuleset: boolean = true;\r\n public allowCollapse: boolean= false;\r\n public persistValueOnFieldChange: boolean = false; \r\n public isDisabled: boolean = false;\r\n public rule: any;\r\n public value: any;\r\n private fields: any;\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService\r\n ) {\r\n }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n \r\n if (this.data['AllowCollapse'] === true) {\r\n this.allowCollapse = this.data['AllowCollapse'];\r\n }\r\n\r\n if (this.data['AllowRuleset'] === false) {\r\n this.allowRuleset = this.data['AllowRuleset'];\r\n }\r\n\r\n this.fields = this.fieldService.getFormFieldCode(this.data.Value, \"FormField\", null, null); \r\n \r\n try {\r\n this.fields.subscribe(data => { \r\n data.forEach((field: any) => {\r\n // Handle Options\r\n let optionList = [];\r\n\r\n if (field.Type == 'category' || field.Type == 'multiselect') {\r\n if (field['ValueOptions']) {\r\n field['ValueOptions'].forEach((valueOption: any) => {\r\n optionList.push({\r\n name: valueOption.Name,\r\n value: valueOption.Value\r\n });\r\n });\r\n }\r\n else {\r\n const selectOptions = field['SelectOptions'];\r\n\r\n const param = Object.assign({}, DefaultPageSettingParams);\r\n param.pageSize = selectOptions['PageSize'];\r\n param.columns = selectOptions['Columns'];\r\n param.filters += selectOptions['Filters'];\r\n param.sortColumnName = selectOptions['SortColumnName'];\r\n param.sortOrder = selectOptions['SortOrder'];\r\n\r\n this.webApiService\r\n .httpPost$(this.resourceApiService.getPageUrl(selectOptions['ResourceURL']), param)\r\n .pipe(\r\n map((resp) => {\r\n resp.dataSet.forEach((item: any) => {\r\n optionList.push({\r\n name: item[selectOptions['Name']],\r\n value: item[selectOptions['Value']]\r\n });\r\n })\r\n\r\n this.qbItems[field.Value]['options'] = optionList\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n // Default rule to display\r\n this.qbItems[field.Value] = {\r\n name: field.Name,\r\n value: field.Value,\r\n type: field.Type,\r\n operatorList: field['Operators'],\r\n options: optionList,\r\n nullable: field['IsNullable'],\r\n defaultValue: field['DefaultValue'] ? field['DefaultValue'] : null\r\n } \r\n });\r\n \r\n this.currentConfig = {\r\n fields: this.qbItems,\r\n allowEmptyRulesets: true\r\n };\r\n \r\n });\r\n\r\n // append default query if any.\r\n if (this.data['DefaultQuery']) {\r\n let defaultQueryValueString = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['DefaultQuery'],\r\n this.group\r\n ); \r\n\r\n if (defaultQueryValueString) {\r\n this.setQueryValue(defaultQueryValueString);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n } \r\n }\r\n \r\n public completeRule(isUndo: boolean, queryValue: any) {\r\n this.isDisabled = isUndo; \r\n const qbResultValueName = this.data.Type + '_' + this.data.Value;\r\n this.group[qbResultValueName] = this.queryBuilder.value \r\n\r\n if (queryValue) {\r\n this.group[qbResultValueName] = queryValue;\r\n }\r\n\r\n if (!isUndo) {\r\n this.group[qbResultValueName] = [];\r\n }\r\n\r\n if (this.group.zModel) {\r\n ZComponentHelper.setModelValue(this.data.Value, this.group[qbResultValueName], this.group);\r\n }\r\n\r\n if (this.data['OnApplyClick'] && !queryValue) {\r\n let callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['OnApplyClick'],\r\n this.group\r\n );\r\n const newFunc = callFunc.bind(this);\r\n newFunc(this.group, this.group[qbResultValueName], this.fields);\r\n } \r\n }\r\n \r\n public bootstrapClassNames: QueryBuilderClassNames = {\r\n arrowIcon: 'fa fa-chevron-right px-2',\r\n button: 'btn',\r\n buttonGroup: 'btn-group',\r\n rightAlign: 'order-12 ml-auto',\r\n switchRow: 'd-flex px-2',\r\n switchGroup: 'd-flex align-items-center',\r\n switchRadio: 'custom-control-input',\r\n switchLabel: 'custom-control-label',\r\n switchControl: 'custom-control custom-radio custom-control-inline',\r\n row: 'row p-2 m-1',\r\n rule: 'border',\r\n ruleSet: 'border',\r\n invalidRuleSet: 'alert alert-danger',\r\n emptyWarning: 'text-danger mx-auto',\r\n operatorControl: 'form-control',\r\n operatorControlSize: 'col-auto pr-0',\r\n fieldControl: 'form-control',\r\n fieldControlSize: 'col-auto pr-0',\r\n entityControl: 'form-control',\r\n entityControlSize: 'col-auto pr-0',\r\n inputControl: 'form-control',\r\n inputControlSize: 'col-auto'\r\n };\r\n\r\n public conditionList: Array<string> = [\r\n \"AND\",\r\n \"OR\"\r\n ];\r\n\r\n public getOperators(defaultOperatorList: any, rule: any) {\r\n return this.qbItems[rule.field].operatorList ? this.qbItems[rule.field].operatorList : defaultOperatorList;\r\n }\r\n \r\n public getOptionList(optionsList: any, rule: any) {\r\n return this.qbItems[rule.field].options ? this.qbItems[rule.field].options : optionsList;\r\n }\r\n\r\n public setQueryValue(queryValueString: string) {\r\n if (queryValueString) {\r\n const defaultQueryValueJson = toQueryRule(JSON.parse(queryValueString));\r\n this.queryCtrl = defaultQueryValueJson;\r\n\r\n // default lock the query builder if there default query\r\n this.completeRule(true, defaultQueryValueJson);\r\n }\r\n }\r\n}\r\n\r\nexport interface QueryRule {\r\n condition: string;\r\n rules: QueryRule[];\r\n field: string;\r\n type: string;\r\n operator: string;\r\n value: string[];\r\n}\r\n\r\nexport function toQueryRule(queryBuilderModel: any): QueryRule {\r\n let rule = <QueryRule>{};\r\n if (queryBuilderModel.condition) {\r\n rule.condition = queryBuilderModel.condition;\r\n rule.rules = queryBuilderModel.rules.map(q => toQueryRule(q));\r\n } else {\r\n rule.field = queryBuilderModel.field;\r\n rule.type = queryBuilderModel.type;\r\n rule.operator = queryBuilderModel.operator;\r\n rule.value = queryBuilderModel.value instanceof Array\r\n ? queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value\r\n : [queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value];\r\n }\r\n return rule;\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, Input, ViewEncapsulation } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ExportOptions } from \"./zreport.config\";\r\nimport { TelerikReportViewerComponent } from \"@progress/telerik-angular-report-viewer\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ResourceApiService, ZField, ZGroup, ZComponentProperties, ZComponentHelper\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zreport\",\r\n templateUrl: \"./zreport.component.html\",\r\n styleUrls: [\"./zreport.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ZreportComponent implements OnInit {\r\n constructor(private resourceApiService: ResourceApiService) { }\r\n\r\n @ViewChild(\"ReportViewer\")\r\n viewer: TelerikReportViewerComponent;\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n title = \"Report Viewer\";\r\n viewerContainerStyle = {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"800px\",\r\n [\"font-family\"]: \"ms sans serif\"\r\n };\r\n\r\n resourceURL = null;\r\n ReportSource = null;\r\n\r\n isVisible = true;\r\n\r\n paramToResizeReportViewer = false;\r\n public resizeReportView: Function;\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.resizeReportView = this.onPageReady.bind(this);\r\n\r\n this.resourceURL = this.resourceApiService.getURL(this.data.ResourceURL);\r\n\r\n if (!this.resourceURL) {\r\n this.resourceURL = this.resourceApiService.getURL('e1wfs_wfm_workflowMasterReportURL');\r\n //this.isVisible = false;\r\n }\r\n\r\n if (!!this.data.IsAutoGenerateReport) {\r\n this.ReportSource = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReportSource);\r\n }\r\n }\r\n\r\n public generateReport() {\r\n const rs = this.group[\"ReportSource\"];\r\n this.resourceURL = rs['url'];\r\n this.viewer.setReportSource(rs);\r\n this.viewer.refreshReport();\r\n\r\n if (this.data['AutoResize']) {\r\n this.paramToResizeReportViewer = true;\r\n } else {\r\n this.paramToResizeReportViewer = false;\r\n }\r\n\r\n const thisComponent = this;\r\n const exportButton = $(\"#trv-main-menu-export-command\");\r\n exportButton.on(\"mouseover\", function () {\r\n // trigger to hide list, sometime element not loaded yet.\r\n setTimeout(function () {\r\n // ExportOptions.instance.exportOption(thisComponent);\r\n // ExportOptions.instance.hideUnwantedOptions();\r\n }, 300);\r\n });\r\n }\r\n\r\n ready(thisComponent: any) {\r\n // console.log(\"ready\");\r\n // ExportOptions.init(thisComponent);\r\n }\r\n\r\n viewerToolTipOpening(args: any) {\r\n // console.log(\"viewerToolTipOpening \" + args.toolTip.text);\r\n }\r\n\r\n onRenderingEnd(e, args): void {\r\n // Occurs after rendering the report.\r\n // ExportOptions.instance.update(e.target.reportSource().report);\r\n }\r\n\r\n exportBegin(args: any) {\r\n }\r\n\r\n exportEnd(args: any) {\r\n }\r\n\r\n onPageReady(e: any, args:any) {\r\n if (this.paramToResizeReportViewer) {\r\n var pageHeight = $(\".trv-pages-area .trv-page-wrapper\").height() + $(\".trv-nav\").outerHeight() + 20, // Calculate the report page height\r\n viewer = $(\"#reportViewer1\"),\r\n viewerHeight = viewer.height();\r\n\r\n if (viewerHeight !== pageHeight ) {\r\n viewer.height(pageHeight);\r\n var documentMapSplitter = $(\".trv-document-map-splitter\").data(\"kendoSplitter\");\r\n if (documentMapSplitter !==undefined) {\r\n documentMapSplitter.resize(true);\r\n }\r\n var parameterSplitter = $(\".trv-parameters-splitter\").data(\"kendoSplitter\");\r\n if (parameterSplitter !==undefined) {\r\n parameterSplitter.resize(true);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties, StorageSessionService, AuthService\r\n} from \"mmhglobal-zcore\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\nimport {\r\n DateChangeEvent,\r\n SlotClickEvent,\r\n EventClickEvent,\r\n EventStyleArgs,\r\n SlotClassArgs\r\n} from \"@progress/kendo-angular-scheduler\";\r\nimport { of } from 'rxjs';\r\nimport { delay, take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: \"app-zscheduler\",\r\n templateUrl: \"./zscheduler.component.html\",\r\n styleUrls: [\"./zscheduler.component.scss\"]\r\n})\r\nexport class ZschedulerComponent implements ZComponent, OnInit, AfterViewInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() ngStyle: { [klass: string]: any; }\r\n\r\n\r\n isLoading = true;\r\n events: any[] = [];\r\n selectedDate = new Date();\r\n local = {\r\n inProgress: false,\r\n ctrlScope: null\r\n };\r\n // selectedDate: Date = new Date();\r\n selectedViewIndex = 3;\r\n componentProperties = new ZComponentProperties();\r\n\r\n // eventFields: SchedulerModelFields = {\r\n // id: \"Id\",\r\n // title: \"Objective\",\r\n // description: \"Description\",\r\n // // startTimezone: 'StartTimezone',\r\n // start: \"Date_UTC\",\r\n // end: \"End_UTC\"\r\n // // endTimezone: 'EndTimezone',\r\n // // isAllDay: 'IsAllDay',\r\n // // recurrenceRule: 'RecurrenceRule',\r\n // // recurrenceId: 'RecurrenceID',\r\n // // recurrenceExceptions: 'RecurrenceException'\r\n // };\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private storageService: StorageSessionService,\r\n private authService: AuthService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.local.ctrlScope = this.group.ctrlScope;\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n //\r\n if (this.data['SaveFilter']) {\r\n this.setSchedulerSessionKey(this.group);\r\n this.getSchedulerSessionFilter(this.group);\r\n }\r\n this.getItems();\r\n }\r\n\r\n ngAfterViewInit() {\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n }\r\n\r\n getEventStyles = (args: EventStyleArgs) => {\r\n\r\n if(args && args.event && args.event.dataItem)\r\n {\r\n const BGColor=args.event.dataItem[\"backgroundColor\"];\r\n const BorderColor=args.event.dataItem[\"borderColor\"];\r\n\r\n if (BGColor && BorderColor) \r\n { return { backgroundColor: BGColor, bordercolor: BorderColor, color: \"white\" }; }\r\n else {\r\n return { backgroundColor: \"#ff7c73\", bordercolor: \"#ff7c73\" , color: \"white\" };\r\n }\r\n\r\n }\r\n }\r\n\r\n public getSlotClass = (args: SlotClassArgs) => {\r\n const hour = args.start.getHours();\r\n args.resources = this.events\r\n return {\r\n args\r\n };\r\n }\r\n\r\n getItems() {\r\n // if (this.isLoading) {\r\n // return [];\r\n // }\r\n // debugger;\r\n const v = this.data.Value;\r\n if (Array.isArray(v)) {\r\n return v;\r\n } else {\r\n const evalValue = ZComponentHelper.getGroupEvalValue.call(this, v);\r\n // debugger;\r\n if (evalValue) {\r\n this.events = evalValue;\r\n if (this.events) {\r\n this.isLoading = false;\r\n }\r\n } else {\r\n console.warn(\"Invalid field.Value setting \", this.data.Value);\r\n return [];\r\n }\r\n }\r\n }\r\n\r\n onDateChange(args: DateChangeEvent): void {\r\n\r\n // this.events = generateEvents(args.dateRange.start, 7);\r\n\r\n if (this.local.inProgress) {\r\n return;\r\n }\r\n\r\n //Set session values\r\n this.group[\"selectedDate\"] = args.selectedDate;\r\n\r\n console.log(\"zschedule component date-change selection: \", args.dateRange);\r\n // this.local.selectedDate = args.dateRange.start;\r\n this.group.subject.next({\r\n type: \"zscheduler-onDateChange\",\r\n target: this.data.CalendarOptions + \".dateClick\",\r\n event: args.dateRange\r\n } as ZComponentOutputEvent);\r\n // We're setting the events after the current change detection cycle\r\n // has completed, hence we need to trigger a new one.\r\n this.changeDetector.detectChanges();\r\n\r\n }\r\n\r\n onSlotDblClick({ sender, start, end, isAllDay }: SlotClickEvent): void {\r\n console.log(\r\n \"zscheduler component slot-double-click: \",\r\n sender,\r\n start,\r\n end,\r\n isAllDay\r\n );\r\n\r\n if (\r\n sender.selectedView.name === \"month\" ||\r\n sender.selectedView.name === \"week\"\r\n ) {\r\n this.local.inProgress = true;\r\n this.selectedViewIndex = 3;\r\n this.selectedDate = start;\r\n of([]).pipe(take(1), delay(1000)).subscribe(() => this.local.inProgress = false);\r\n }\r\n\r\n // this.group.subject.next({\r\n // Type: \"zscheduler-onSlotDblClick\",\r\n // Target: this.data.CalendarOptions + 'select',\r\n // event: { sender, start, end, isAllDay }\r\n // });\r\n // this.closeEditor(sender);\r\n // this.formGroup = this.formBuilder.group({\r\n // 'Start': [start, Validators.required],\r\n // 'End': [end, Validators.required],\r\n // 'StartTimezone': new FormControl(),\r\n // 'EndTimezone': new FormControl(),\r\n // 'IsAllDay': isAllDay,\r\n // 'Title': new FormControl(''),\r\n // 'Description': new FormControl(''),\r\n // 'RecurrenceRule': new FormControl(),\r\n // 'RecurrenceID': new FormControl()\r\n // });\r\n // sender.addEvent(this.formGroup);\r\n }\r\n\r\n onEventDblClick({ sender, event }: EventClickEvent): void {\r\n console.log(\"zscheduler component event-double-click: \", sender, event);\r\n\r\n // this.group.subject.next({\r\n // type: \"zscheduler-onEventDblClick\" + \".eventClick\",\r\n // target: this.data.CalendarOptions,\r\n // event: { sender, event }\r\n // } as ZComponentOutputEvent);\r\n\r\n // this.closeEditor(sender);\r\n // let dataItem = event.dataItem;\r\n // if (this.editService.isRecurring(dataItem)) {\r\n // sender.openRecurringConfirmationDialog(CrudOperation.Edit)\r\n // // The result will be undefined if the dialog was closed.\r\n // .pipe(filter(editMode => editMode !== undefined))\r\n // .subscribe((editMode: EditMode) => {\r\n // if (editMode === EditMode.Series) {\r\n // dataItem = this.editService.findRecurrenceMaster(dataItem);\r\n // }\r\n // this.formGroup = this.createFormGroup(dataItem);\r\n // sender.editEvent(dataItem, { group: this.formGroup, mode: editMode });\r\n // });\r\n // } else {\r\n // this.formGroup = this.createFormGroup(dataItem);\r\n // sender.editEvent(dataItem, { group: this.formGroup });\r\n // }\r\n\r\n if (this.data.OnItemClick) {\r\n\r\n //Restore session\r\n this.beforeSchedulerGetData(this.group);\r\n this.setSchedulerSessionFilter(this.group);\r\n\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n\r\n }\r\n \r\n public setData = (gData: any) => {\r\n this.selectedViewIndex = gData || this.selectedViewIndex;\r\n //reset data\r\n this.getItems();\r\n\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n public setSchedulerSessionKey(group: ZGroup) {\r\n\r\n if (group[\"SchedulerStorageKey\"]) {\r\n return;\r\n }\r\n else {\r\n group[\"SchedulerStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n }\r\n\r\n }\r\n\r\n public beforeSchedulerGetData(group: ZGroup) {\r\n console.warn(\"beforeDateRangeBinding triggered\");\r\n if (!group.beforeSchedulerGetData) {\r\n console.warn(\"group.beforeDateRangeBinding is undefined\");\r\n return of(true);\r\n }\r\n\r\n return group.beforeSchedulerGetData(group);\r\n }\r\n\r\n async setSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n let lstFilter: { [key: string]: string } = {};\r\n\r\n if (group && this.storageService && this.data['SaveFilter']) {\r\n\r\n //list of data for StateFilter and FilterParams\r\n lstFilter = {\r\n \"SelectedDate\": JSON.stringify(group[\"selectedDate\"])\r\n }\r\n //create session storage \r\n this.storageService.set(StorageKey, JSON.stringify(lstFilter));\r\n\r\n }\r\n\r\n }\r\n\r\n async getSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n if (this.storageService) {\r\n await this.storageService.get(StorageKey)\r\n .then(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n return null;\r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.selectedDate = new Date(JSON.parse(result[\"SelectedDate\"]));\r\n\r\n return data;\r\n }\r\n });\r\n }\r\n else { return null; }\r\n\r\n }\r\n\r\n}\r\n","\r\n/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy, AfterViewInit } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { interval, throwError, Subscription, Observable, of, Subject, timer } from \"rxjs\";\r\nimport { catchError, tap, debounceTime, delay, timeInterval, takeUntil } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ResourceApiService, WebApiService, CacheService, ClickableIcons, ButtonList,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams, zSelectMultipleParams,\r\n ZGroup, ZField, ZComponentProperties, TooltipsInfoProperties \r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zselectmultiple\",\r\n templateUrl: \"./zselectmultiple.component.html\",\r\n styleUrls: [\"./zselectmultiple.component.scss\"]\r\n})\r\nexport class ZselectmultipleComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() iconList: ClickableIcons[];\r\n @Input() buttonList: ButtonList[];\r\n @ViewChild(\"selectComponent\") selectComponent: IonicSelectableComponent;\r\n\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: TooltipsInfoProperties = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n // subscription: Subscription;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private debounceSub: Subscription;\r\n allowCustomValue = false;\r\n autoClose: boolean = true;\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n\r\n // private loadInfiniteDataSub: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService,\r\n private cacheService: CacheService\r\n ) { }\r\n\r\n ngOnDestroy(): void {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n }\r\n\r\n public virtual: any = {\r\n itemHeight: 28,\r\n pageSize: 15\r\n };\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setSelectMultipleTextValue(this.data.SelectOptions, this);\r\n\r\n this.tooltipsInfo = this.data.TooltipsInfo;\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo.Icon != null || this.tooltipsInfo.Icon != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo.SideBySide) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n\r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n // [Dropdownlist Multiple] - auto close menu when lose focus.\r\n if (this.data.AutoClose === false) this.autoClose = this.data.AutoClose;\r\n\r\n // Handle Clickable Icons\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = \"\";\r\n } else {\r\n i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = \"top\";\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Handle Button beside dropdown\r\n this.buttonList = this.data.ButtonList;\r\n if (this.buttonList) { \r\n this.buttonList.forEach(button => {\r\n if (button.tooltip) {\r\n button.tooltip = ZComponentHelper.getGroupEvalValue.call(this, button.tooltip);\r\n } \r\n \r\n }); \r\n }\r\n\r\n // dropdown configuration\r\n this.allowCustomValue = this.data.AllowCustomValue || false; // Allow enter text in dropdownbox\r\n const fieldValue = this.data.Value;\r\n const data = this.data;\r\n const zModel = this.group.zModel;\r\n\r\n /*\r\n * 4 Styles of declare the component�s option list data source.\r\n * Style #1 - Field.SelectOptions defined as an array of object that contain text and value.\r\n * Style #2 - Field.SelectOptions defined as a phase like �item.Id as item.Name for item in group.zData.ProjectOptions�.\r\n * Style #3 - Field.OptionResourceURL defined the name of resource server api.\r\n * Style #4 - Field.InfiniteScroll$ defined the method name as �group.getMoreDataAsScroll�.\r\n */\r\n\r\n if (data.HasInfiniteScroll && data.InfiniteScroll$) {\r\n // when infinitie scroll\r\n let recordId = null;\r\n if (zModel && zModel[fieldValue]) {\r\n // get zModel Value\r\n recordId = zModel[fieldValue].toString();\r\n }\r\n\r\n let getzDataForzModel$: Observable<any> = ZComponentHelper.getInfiniteData(null, '', this, recordId);\r\n if (getzDataForzModel$) {\r\n getzDataForzModel$.subscribe((zdata) => {\r\n console.log(data.Name, ' - initial zData load: ', zdata);\r\n\r\n if(this.group){\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n\r\n if (!ZComponentHelper.isMobileScreen()) {\r\n this.handleFilter(null, true);\r\n }\r\n }\r\n else {\r\n // Style #1, #2, #3\r\n const isRequired = ZComponentHelper.getGroupEvalValue.call(this, data.IsRequired);\r\n\r\n if (this.data.OptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(res => {\r\n const optionData = res.dataSet ? res.dataSet : res;\r\n\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);\r\n }\r\n\r\n if(this.group){\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n }\r\n else {\r\n const optionData = ZComponentHelper.getGroupEvalValue.call(this, this.itemDataField);\r\n // append data via timeout after data is loaded.\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n const thisComponent = this;\r\n setTimeout(function () {\r\n thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);\r\n\r\n if(this.group){\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n }, 100);\r\n }\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n // Auto select first option (if required & only 1 option)\r\n private autoSelectFirstOption(required: boolean, data: any, zModelPropertyName: string, id: any) {\r\n if (ZComponentHelper.isNullUndefinedEmpty(id) && required) {\r\n var optionId = data.Id;\r\n if (this.data.Multiple) {\r\n optionId = [optionId];\r\n }\r\n ZComponentHelper.setModelValue(zModelPropertyName, optionId, this.group);\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { ['value']: optionId, field: this.data }\r\n } as ZComponentOutputEvent);\r\n\r\n this.form.markAsPristine();\r\n }\r\n }\r\n\r\n // Style #3\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.OptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.OptionSort;\r\n filterParam.columns = this.data.OptionColumns;\r\n filterParam.filters = this.data.OptionFilter;\r\n\r\n return ZComponentHelper.getDataOptions(\r\n this.data.OptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n // Style #4, used in ionic-selectable\r\n getInfiniteData(event: {\r\n component: IonicSelectableComponent;\r\n text: string;\r\n }) {\r\n ZComponentHelper.getInfiniteData(event.component, event.text, this);\r\n }\r\n\r\n getItemsData() {\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n\r\n const optionName = this.data.OptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n if (Array.isArray(this.data.SelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n // return selectionOptions;\r\n // return this.data.SelectOptions;\r\n this.group.zData[optionName.slice(12)] = this.data.SelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n return this.group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n return this.group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n return this.group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n return this.group[optionName] || [];\r\n }\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n }\r\n\r\n onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n // event.component is for mobile only\r\n const component = event.component;\r\n if (component) {\r\n component.startSearch();\r\n component.enableInfiniteScroll();\r\n }\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n // If search text, reset page to 0. Get infinite data\r\n if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n this.infiniteScrollPageNo = 0;\r\n this.modelzData = [];\r\n }\r\n this.getInfiniteData(event);\r\n }\r\n else {\r\n // Reset scroll page, empty items\r\n this.infiniteScrollPageNo = 0;\r\n if (component) {\r\n component.items = [];\r\n }\r\n\r\n // Filter zData and push to items\r\n const params: zSelectMultipleParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\"\r\n };\r\n\r\n const searchFields = this.data.SearchFields ? this.data.SearchFields : this.itemTextField;\r\n const filteritems = ZComponentHelper.filterSearchItems(\r\n this.getItemsData(),\r\n event.text,\r\n searchFields,\r\n params.pageNo,\r\n params.pageSize\r\n );\r\n if (component) {\r\n const items = component.items.concat(filteritems);\r\n component.items = items;\r\n component.endInfiniteScroll();\r\n component.endSearch();\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n handleFilter(value: any, justOneTime?: boolean) {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n this.isLoading = true;\r\n this.onSearch({ component: null, text: value });\r\n\r\n if(this.group){\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.unsubscribe();\r\n // }\r\n // this.loadInfiniteDataSub = new Subject(false);\r\n // this.handleFilter(null);\r\n // interval(2000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.onSearch({ component: null, text: value });\r\n // if (justOneTime) {\r\n // this.handleClose();\r\n // }\r\n // });\r\n });\r\n }\r\n\r\n handleOpen() {\r\n if (this.data.HasInfiniteScroll) {\r\n this.handleFilter(null);\r\n // // if (this.loadInfiniteDataSub) {\r\n // // this.loadInfiniteDataSub.unsubscribe();\r\n // // }\r\n // // this.loadInfiniteDataSub = new Subject();\r\n // // // this.handleFilter(null);\r\n // // interval(3000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // // this.handleFilter(null);\r\n // // });\r\n }\r\n }\r\n\r\n handleClose() {\r\n // if (this.data.HasInfiniteScroll) {\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.next(true);\r\n // // this.loadInfiniteDataSub.complete();\r\n // }\r\n // }\r\n }\r\n\r\n handleBlur() {\r\n // this.handleClose();\r\n }\r\n\r\n getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, this.data.ItemTemplate);\r\n\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n // return item[itemTextField];\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n getIsRequiredValue() {\r\n const IsRequiredValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.IsRequired);\r\n if (typeof IsRequiredValue === 'function') {\r\n const callFunc = IsRequiredValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n\r\n }\r\n return IsRequiredValue;\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n const ionInvalidClass = this.getIon_InvalidClass(form, data);\r\n return `${ionInvalidClass ? ionInvalidClass : ''} ${this.data.Class}`;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n if (!form) {\r\n //debugger;\r\n }\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n\r\n // Component basic function\r\n clearData() {\r\n ZComponentHelper.setModelValue(this.data.Value, \"\", this.group);\r\n }\r\n\r\n clearItems() {\r\n this.selectComponent.clear();\r\n this.selectComponent.close();\r\n }\r\n\r\n confirmItems() {\r\n this.selectComponent.confirm();\r\n this.selectComponent.close();\r\n }\r\n\r\n toggleItems() {\r\n this.selectComponent.toggleItems(this.toggleSelectable);\r\n this.toggleSelectable = !this.toggleSelectable;\r\n\r\n // Confirm items and close Select page\r\n // without having the user to click Confirm button.\r\n // this.confirm();\r\n }\r\n\r\n // Extra icon beside dropdown. Mainly for popup\r\n onIconClick(clickAction: string) {\r\n this.onNavigateTo(clickAction); \r\n }\r\n\r\n onNavigateTo(clickAction: string) {\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction);\r\n if (n) {\r\n this.group.subject.next({\r\n type: 'ztext-onNavigateTo',\r\n target: clickAction,\r\n data: this.group.zModel[this.data.Value]\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n // Disable Open On Focus\r\n disableOpenOnFocus(comboboxComponent: any) {\r\n if (this.data.DisableOpenOnFocus) {\r\n return null;\r\n }\r\n else {\r\n return comboboxComponent;\r\n }\r\n }\r\n\r\n // OnChange\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n onChange(event: { component: IonicSelectableComponent; value: any }) {\r\n console.log(\"zselectmultiple (onChange): \", event.value);\r\n ZComponentHelper.setModelValue(this.data.Value, event.value, this.group);\r\n const fc = this.form.controls[this.data.Value];\r\n this.handleClose();\r\n\r\n if (\r\n // this.data.IsRequired &&\r\n this.getIsRequiredValue() &&\r\n (event.value === null || event.value.length === 0)\r\n ) {\r\n fc.setErrors({ required: true });\r\n } else {\r\n fc.setErrors(null);\r\n }\r\n\r\n this.onChangeEvent(event.value);\r\n }\r\n\r\n // Common function\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public setLabelText(newText: string) {\r\n this.data.Label = newText;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoClass() {\r\n if (this.tooltipsInfo && !this.showTooltipsInfoIcon && this.showTooltipsInfoBySide) {\r\n return 'tooltipsinfo-text';\r\n }\r\n return 'tooltipsinfo-text-wide';\r\n }\r\n\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo.TextColor) {\r\n return this.tooltipsInfo.TextColor;\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() {\r\n if (this.tooltipsInfo) {\r\n if (this.showTooltipsInfoBySide && !this.showTooltipsInfoIcon ) {\r\n return 'ion-row divselectmultiple tooltipsinfo-right';\r\n }\r\n }\r\n return 'ion-row divselectmultiple';\r\n }\r\n \r\n public getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TabStripComponent } from '@progress/kendo-angular-layout';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZTabItem, ZGroup, ZField, \r\n ZComponentProperties, AuthService \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztab',\r\n templateUrl: './ztab.component.html',\r\n styleUrls: ['./ztab.component.scss'],\r\n})\r\nexport class ZtabComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // private lastSelectedTabIndex: number;\r\n @ViewChild('kendoTabStripInstance') public tabstrip: TabStripComponent;\r\n public state = {\r\n lastSelectedTabIndex: 0,\r\n currentTabs: Array<ZTabItem>(),\r\n allTabs: Array<ZTabItem>()\r\n };\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) {\r\n // this.lastSelectedTabIndex = 0;\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n this.setCurrentTabs();\r\n this.restoreTabSelection();\r\n }\r\n\r\n private setCurrentTabs() {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n\r\n if (this.data.TabVisibleFalseIndex) {\r\n this.setTabsVisible(this.data.TabVisibleFalseIndex, false);\r\n }\r\n\r\n } else if (this.data.TabItems) {\r\n let ind = 0;\r\n for (const field of this.data.TabItems) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: field.Label as string,\r\n Icon: field.Icon ? field.Icon as string : null,\r\n Visible: ZComponentHelper.getGroupValue(field.Visible as string, this.group),\r\n Counter: typeof (field[\"Counter\"]) === \"string\" ? ZComponentHelper.getGroupValue(field[\"Counter\"] as string, this.group) : field[\"Counter\"],\r\n Index: ind++\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n }\r\n }\r\n\r\n private refreshCurrentTabs() {\r\n const previousStateTabs = this.state.allTabs;\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n const previousTab = previousStateTabs.filter(x => x.Label == this.data.Label[index]);\r\n const previousTabVisible = previousTab.length > 0 ? previousTab[0].Visible : false;\r\n\r\n const isVisible = previousTabVisible;\r\n if (isVisible) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n }\r\n } else {\r\n Object.assign(this.state.currentTabs, this.state.allTabs);\r\n }\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public selectTab = (index: number) => {\r\n this.state.lastSelectedTabIndex = index;\r\n }\r\n\r\n getSelectedTab(tabIndex: number) {\r\n return this.state.lastSelectedTabIndex === tabIndex;\r\n }\r\n\r\n public setSelectTab(tabIndex: number) {\r\n this.state.lastSelectedTabIndex = tabIndex;\r\n }\r\n\r\n restoreTabSelection(): void {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n\r\n let tabSelections: Map<string, number> = \"tabSelections\" in this.group ? this.group['tabSelections'] : null;\r\n if (tabSelections !== null && tabSelections.has(this.data.Name)) { // subsequent loads\r\n this.state.lastSelectedTabIndex = tabSelections.get(this.data.Name);\r\n\r\n } else if (tabSelections === null) { // first load of first tab\r\n tabSelections = new Map<string, number>();\r\n this.group['tabSelections'] = tabSelections;\r\n tabSelections.set(this.data.Name, 0);\r\n\r\n } else if (!tabSelections.has(this.data.Name)) { // first load of rest tabs\r\n tabSelections.set(this.data.Name, 0);\r\n }\r\n }\r\n\r\n public onTabSelect(e) {\r\n this.state.lastSelectedTabIndex = e.index;\r\n this.saveState(e);\r\n\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.ClickEvent);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(e);\r\n }\r\n }\r\n\r\n private saveState(e) {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n\r\n const tabSelections = this.group['tabSelections'] as Map<string, number>;\r\n tabSelections.set(this.data.Name, e.index);\r\n }\r\n\r\n public setTabsVisible = (tabIndexes: number[], status: boolean) => {\r\n if (this.state.allTabs.length <= Math.max.apply(null, tabIndexes) || Math.min.apply(null, tabIndexes) < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndexes.join(\",\"));\r\n return;\r\n }\r\n\r\n tabIndexes.forEach(index => {\r\n this.state.allTabs[index].Visible = status;\r\n });\r\n this.refreshCurrentTabs();\r\n }\r\n\r\n public setTabCounter = (tabIndex: number, counter: number | string) => {\r\n const labels = this.data.Label ? this.data.Label : this.data.TabItems;\r\n if (labels.length <= tabIndex || tabIndex < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndex);\r\n return;\r\n }\r\n\r\n this.state.currentTabs[tabIndex].Counter = counter;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ClickableIcons, AdornmentProperties, TooltipsInfoProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-ztext\",\r\n templateUrl: \"./ztext.component.html\",\r\n styleUrls: [\"./ztext.component.scss\"]\r\n})\r\nexport class ZtextComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() iconList: ClickableIcons[];\r\n @Input() adornmentList: any[];\r\n\r\n componentProperties = new ZComponentProperties();\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: TooltipsInfoProperties = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n public showClearButton: any;\r\n public clearButtonIcon: string = \"time-circle\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // this.fControl = this.form.controls[this.data.Value]; //.get(this.data.Value);\r\n // this.fControl = this.form.get(this.data.Value) as FormControl;\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.adornmentList = this.data.AdornmentList;\r\n\r\n if (this.data.OnClick && !this.data.ReadOnly) {\r\n this.componentProperties.isReadOnly = true;\r\n }\r\n\r\n if (!this.componentProperties.isReadOnly) {\r\n this.showClearButton = this.data.ClearButton;\r\n }\r\n\r\n this.tooltipsInfo = this.data.TooltipsInfo;\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo.Icon != null || this.tooltipsInfo.Icon != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo.SideBySide) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n // Handle Clickable Icons\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = \"\";\r\n } else {\r\n if (i.Tooltip.indexOf(\"group.\") !== -1) {\r\n i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = \"top\";\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n mapInputType(fieldType: string): string {\r\n switch (fieldType) {\r\n case \"date\":\r\n return \"date\";\r\n case \"ztext\":\r\n return \"text\";\r\n case \"number\":\r\n return \"number\";\r\n case \"currency\":\r\n return \"number\";\r\n case \"email\":\r\n return \"email\";\r\n case \"password\":\r\n return \"password\";\r\n case \"search\":\r\n return \"search\";\r\n case \"tel\":\r\n return \"tel\";\r\n case \"text\":\r\n return \"text\";\r\n case \"time\":\r\n return \"time\";\r\n case \"url\":\r\n return \"url\";\r\n default:\r\n return \"text\";\r\n }\r\n }\r\n\r\n mapInputMode(fieldType: string): string {\r\n switch (fieldType) {\r\n case \"date\":\r\n return \"none\";\r\n case \"ztext\":\r\n return \"text\";\r\n case \"number\":\r\n return \"decimal\";\r\n case \"currency\":\r\n return \"decimal\";\r\n case \"email\":\r\n return \"email\";\r\n case \"password\":\r\n return \"text\";\r\n case \"search\":\r\n return \"search\";\r\n case \"tel\":\r\n return \"tel\";\r\n case \"text\":\r\n return \"text\";\r\n case \"time\":\r\n return \"none\";\r\n case \"url\":\r\n return \"url\";\r\n default:\r\n return \"text\";\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n public getStyle(RightAlign: boolean) {\r\n let ngStyle = \"\";\r\n if (RightAlign) {\r\n ngStyle += \"right\";\r\n } else {\r\n ngStyle += \"left\";\r\n }\r\n return ngStyle;\r\n }\r\n\r\n public setTextboxClass() {\r\n if (this.data.OnClick && !this.data.ReadOnly) {\r\n return \"notmobile-textbox-onfocus\";\r\n }\r\n return \"notmobile-textbox\";\r\n }\r\n\r\n /********** Textbox Event **********/\r\n public textboxOnClick(): void {\r\n //console.log('TextBox is focused: ', event);\r\n this.group.subject.next({\r\n type: \"ztext-OnClick\",\r\n target: this.data.OnClick,\r\n event,\r\n data: { value: event['OnClick'], field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onChange(event: any) {\r\n // console.log('ztext.component - onChange: ', event.target.value); \r\n ZComponentHelper.setComponentModelValue(this.data, event.target.value, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value: event.data, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n /********** Icon Button **********/\r\n onIconClick(clickAction: string) {\r\n this.onNavigateTo(clickAction);\r\n }\r\n\r\n onNavigateTo(clickAction: string) {\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction);\r\n if (n) {\r\n this.group.subject.next({\r\n type: 'ztext-onNavigateTo',\r\n target: clickAction,\r\n data: this.group.zModel[this.data.Value]\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n\r\n /********** Adornment **********/\r\n public getAdornmentBackgroundColor(adornment: AdornmentProperties) {\r\n if (adornment.BackgroundColor) {\r\n return adornment.BackgroundColor + \"!important\";\r\n }\r\n\r\n return \"transparent !important\";\r\n }\r\n\r\n public adornmentLook(adornment: AdornmentProperties) {\r\n if (adornment.AdornmentLook) {\r\n return adornment.AdornmentLook;\r\n }\r\n\r\n return 'clear'\r\n }\r\n\r\n public onAdornmentClick(adornment: AdornmentProperties) {\r\n if (adornment.OnClick) {\r\n this.group.subject.next({\r\n type: 'ztext-adornment',\r\n target: adornment.OnClick,\r\n data: adornment\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public readOnlyOnClear() {\r\n ZComponentHelper.setModelValue(this.data.Value, null, this.group);\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoClass() {\r\n if (this.tooltipsInfo && !this.showTooltipsInfoIcon && this.showTooltipsInfoBySide) {\r\n return 'tooltipsinfo-text';\r\n }\r\n return 'tooltipsinfo-text-wide';\r\n }\r\n\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo.TextColor) {\r\n return this.tooltipsInfo.TextColor;\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() {\r\n if (this.tooltipsInfo) {\r\n if (this.showTooltipsInfoBySide && !this.showTooltipsInfoIcon && this.adornmentList.length < 1) {\r\n return 'ion-row divtextbox tooltipsinfo-right';\r\n }\r\n }\r\n return 'ion-row divtextbox';\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztextarea',\r\n templateUrl: './ztextarea.component.html',\r\n styleUrls: ['./ztextarea.component.scss'],\r\n})\r\nexport class ZtextareaComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n modelzData: Array<any>;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly, this.group);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n const ionInvalidClass = this.getIon_InvalidClass(form, data);\r\n return `${ionInvalidClass ? ionInvalidClass : ''} ${this.data.Class}`;\r\n }\r\n\r\n onClick() {\r\n if (this.data.OnItemClick) {\r\n this.group.subject.next({\r\n type: \"ztextarea-onClick\",\r\n target: this.data.OnItemClick,\r\n data: this.form.value\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztexteditor',\r\n templateUrl: './ztexteditor.component.html',\r\n styleUrls: ['./ztexteditor.component.scss'],\r\n})\r\nexport class ZtexteditorComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n private widthReduce: number;\r\n private heightReduce: number;\r\n public value = \"\";\r\n labelText = \"\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n getCompStyle() {\r\n return {\r\n \"height.px\": this.getCompHeight(),\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n }\r\n }\r\n\r\n private getCompHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 250) ? 250 : h;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, ElementRef, AfterViewInit } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport {\r\n TreeItemDropEvent,\r\n TreeItemDragEvent\r\n} from \"@progress/kendo-angular-treeview\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties,\r\n ZField, ZGroup, ZTreeTemplateParams\r\n} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n selector: \"app-ztree\",\r\n templateUrl: \"./ztree.component.html\",\r\n styleUrls: [\"./ztree.component.scss\"]\r\n})\r\nexport class ZtreeComponent implements ZComponent, OnInit, AfterViewInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"nodetemplate\", { static: true }) nodetemplate: ElementRef;\r\n items: Array<any> = [];\r\n originalItemList: any = null;\r\n // modelzData: Array<any>;\r\n // modelName: string;\r\n // dataSet: any[] = null;\r\n isNodeDrop = false;\r\n private nodeCounter = 1;\r\n private clickActName = null;\r\n public state = { expandedkeys: [] };\r\n public itemIndex = [];\r\n public selectedKeys: any[] = [];\r\n public absoluteText: boolean = false;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.TreeviewExpandAll) {\r\n this.expandAll();\r\n }\r\n\r\n // fix text align issue\r\n if (this.data.OnAddNode || this.data.OnRemoveNode) {\r\n this.absoluteText = true; \r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // const componentId = ZComponentHelper.getComponentId(this.data);\r\n // this.group.zComponents[componentId] = this;\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n getItems() {\r\n // if (this.modelName) {\r\n // return this.group[this.modelName];\r\n // }\r\n const fieldValue = this.data.Value;\r\n if (fieldValue) {\r\n this.nodeCounter = 1;\r\n const fValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n return fValue;\r\n } else {\r\n console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n }\r\n // if (fieldValue && fieldValue.startsWith('group.')) {\r\n // // const newDataSet = JSON.parse(JSON.stringify(this.dataSet));\r\n // const name = fieldValue.slice(6);\r\n // this.nodeCounter = 1;\r\n // // this.group[name] = this.setValuePropToNullAtLeafLeave(this.group[name]);\r\n // this.modelName = name;\r\n // return this.group[name];\r\n // } else {\r\n // console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n // }\r\n }\r\n\r\n public isExpanded = (dataItem: any, index: string) => {\r\n // console.log(index);\r\n return this.state.expandedkeys.indexOf(index) > -1;\r\n // return true;\r\n }\r\n\r\n public expandNode = (field:string, value: string, setAsSelected: boolean) => {\r\n this.itemIndex = [];\r\n const node = this.getItems();\r\n\r\n this.searchNodeIndex(node, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n if (setAsSelected) {\r\n this.selectedKeys = index;\r\n }\r\n const indexArr = [];\r\n index.forEach((i:any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x:any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n this.state.expandedkeys = this.state.expandedkeys.concat(indexArr);\r\n }\r\n\r\n public collapseNode = (field:string, value: string, collapseParent: boolean) => {\r\n this.itemIndex = [];\r\n const node = this.getItems();\r\n\r\n this.searchNodeIndex(node, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n let indexArr = [];\r\n if (collapseParent) {\r\n index.forEach((i:any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x:any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n } else {\r\n indexArr = index;\r\n }\r\n\r\n this.state.expandedkeys = this.state.expandedkeys.filter(v => {\r\n return !indexArr.includes(v);\r\n });\r\n }\r\n\r\n public searchNodeIndex(node: any, value: string, key: string, field: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (d[field] === Number(value) || d[field] === value) {\r\n this.itemIndex = this.itemIndex.concat(key + '' + i);\r\n }\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.searchNodeIndex(d.Value, value, k, field);\r\n }\r\n });\r\n }\r\n\r\n public expandAll = () => {\r\n const node = this.getItems();\r\n if (node) {\r\n this.expandAllNode(node, '');\r\n } \r\n }\r\n\r\n public collapseAll = () => {\r\n this.state.expandedkeys = [];\r\n }\r\n\r\n private expandAllNode(node: any, key: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.state.expandedkeys = this.state.expandedkeys.concat(k);\r\n this.expandAllNode(d.Value, k);\r\n }\r\n });\r\n }\r\n\r\n public handleCollapse(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.filter(k => k !== node.index);\r\n }\r\n\r\n public handleExpand(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.concat(node.index);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getTemplate(dataItem: any, data: ZField, group: ZGroup) {\r\n if (data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n data.ItemTemplate\r\n );\r\n if (!getTemplateFunc) {\r\n console.warn(\r\n \"The (\" +\r\n data.ItemTemplate +\r\n \") is not defined correctly. Value contains: \",\r\n getTemplateFunc\r\n );\r\n return;\r\n }\r\n\r\n return getTemplateFunc({\r\n dataItem,\r\n data,\r\n group\r\n } as ZTreeTemplateParams);\r\n } else {\r\n return Object.values(dataItem)\r\n .filter(data => typeof data === \"string\")\r\n .join(\", \");\r\n }\r\n }\r\n\r\n convertToTreeItems(dataSet: any[]) {\r\n const toTreeItems: any[] = [];\r\n const treeIndex: any = {};\r\n const pendingItems: any[] = [];\r\n dataSet.forEach((d: any) => {\r\n if (!d.ParentId) {\r\n toTreeItems.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n if (!parentItem.Value) {\r\n parentItem.Value = [];\r\n }\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n pendingItems.push(d);\r\n }\r\n }\r\n });\r\n\r\n if (pendingItems.length > 0) {\r\n pendingItems.forEach((d: any) => {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n }\r\n });\r\n }\r\n\r\n return toTreeItems;\r\n }\r\n\r\n onSelectionChange(event: any) {\r\n let targetName: string;\r\n if (this.clickActName) {\r\n switch (this.clickActName) {\r\n case 'AddNode':\r\n targetName = this.data.OnAddNode;\r\n break;\r\n case 'RemoveNode':\r\n targetName = this.data.OnRemoveNode;\r\n break;\r\n }\r\n } else {\r\n targetName = this.data.OnItemClick;\r\n }\r\n this.clickActName = null;\r\n this.group.subject.next({\r\n type: \"ztree_onSelectionChange\",\r\n target: targetName,\r\n data: event.dataItem,\r\n event: event.index\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onAddNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'AddNode';\r\n // event.stopPropagation();\r\n // if (this.data.OnAddNode) {\r\n // const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddNode);\r\n // if (typeof func === 'function') {\r\n // const callFunc = func.bind(this.group.ctrlScope);\r\n // callFunc(dataItem, data, group, event.index);\r\n // }\r\n // return;\r\n // }\r\n }\r\n\r\n onRemoveNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'RemoveNode';\r\n }\r\n\r\n onEditNode(event: any) {\r\n if (this.data.OnEditNode) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnEditNode);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n handleNodeDrop(event: TreeItemDropEvent): void {\r\n if(this.data.Draggable === false){\r\n event.setValid(false);\r\n return;\r\n }\r\n\r\n this.isNodeDrop = true;\r\n const dropHandler = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.OnDrop\r\n );\r\n if (typeof dropHandler === \"function\") {\r\n const callFunc = dropHandler.bind(this);\r\n callFunc(event);\r\n }\r\n\r\n // prevent drop if attempting to add to file\r\n // if (isFile(event.destinationItem.item.dataItem.text) && event.dropPosition === DropPosition.Over) {\r\n // event.setValid(false);\r\n // }\r\n }\r\n\r\n handleNodeDragEnd(event: TreeItemDragEvent) {\r\n if (!this.isNodeDrop) {\r\n return;\r\n }\r\n this.isNodeDrop = false;\r\n const items = this.getItems();\r\n // console.log('Items: ', this.items);\r\n const target = [];\r\n this.updateChangeToDataSet(items, target);\r\n // this.dataSet = target;\r\n ZComponentHelper.setModelValue(this.data.Value, target, this.group);\r\n this.group.subject.next({\r\n type: \"ztree-onTreeNodeDragEnd\",\r\n target: this.data.OnChange,\r\n data: target\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private updateChangeToDataSet(source: Array<any>, target: Array<any>) {\r\n source.forEach(d => {\r\n if (Array.isArray(d.Value)) {\r\n const t = JSON.parse(JSON.stringify(d));\r\n t.Value = [];\r\n target.push(t);\r\n this.updateChangeToDataSet(d.Value, t.Value);\r\n } else {\r\n const t = Object.assign({}, d);\r\n t.Value = t._DataValue;\r\n delete t._DataValue;\r\n target.push(t);\r\n }\r\n });\r\n }\r\n\r\n // #region search feature - filterable: true\r\n public handleFilter(value: string): void {\r\n if (this.items.length == 0) {\r\n this.items = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n if (this.originalItemList == null) {\r\n this.originalItemList = this.items.map(item => Object.assign({}, item));\r\n }\r\n }\r\n\r\n this.items = this.originalItemList.map(item => Object.assign({}, item));\r\n const target = this.search(this.items, value);\r\n const gridValue = this.filterPrefix(this.data.Value);\r\n this.group[gridValue] = target;\r\n }\r\n\r\n private filterPrefix(valueName: any) {\r\n if (valueName.startsWith('zData.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName.startsWith('group.zData.')) {\r\n return valueName.slice(12);\r\n }\r\n if (valueName.startsWith('group.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName) {\r\n return valueName;\r\n }\r\n }\r\n\r\n private search(items: any[], term: string): any[] {\r\n return items.reduce((acc, item) => {\r\n if (this.contains(item.Name, term)) {\r\n acc.push(item);\r\n } else if (item.Value && item.Value.length > 0) {\r\n const newItems = this.search(item.Value, term);\r\n\r\n if (newItems.length > 0) {\r\n var filterItem = item;\r\n filterItem.Value = newItems;\r\n acc.push(filterItem);\r\n }\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n private contains(text: string, term: string): boolean {\r\n return text.toLowerCase().indexOf((term || \"\").toLowerCase()) >= 0;\r\n }\r\n // #endregion search feature - filterable: true\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, forkJoin, Observable, Subscription, Subject } from 'rxjs';\r\nimport { tap, switchMap } from 'rxjs/operators';\r\nimport { CellClickEvent } from '@progress/kendo-angular-treelist';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties, FieldService,\r\n WebApiService, AuthService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\nexport interface ZTreeListColumn {\r\n field: string;\r\n title: string;\r\n width: number;\r\n visible: boolean | any;\r\n fieldType: string;\r\n navigateTo: string;\r\n command: any;\r\n class: any;\r\n footerTemplate: boolean;\r\n aggregateType: string;\r\n aggregateTitle: string;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport class ZTreeListOptions {\r\n constructor(\r\n public sortable?: boolean,\r\n public resizable?: boolean,\r\n public filterable?: boolean,\r\n public reorderable?: boolean,\r\n public columnMenu?: boolean,\r\n public scrollable?: boolean,\r\n public refresh?: boolean,\r\n public autoBind?: boolean,\r\n public dataSource?: string,\r\n public dataBound?: any,\r\n public idField?: string,\r\n public parentIdField?: string,\r\n public columns?: Array<any>,\r\n public aggregate?: any,\r\n public pageAble?: any,\r\n ) { }\r\n}\r\n\r\n@Component({\r\n selector: \"app-ztreelist\",\r\n templateUrl: \"./ztreelist.component.html\",\r\n styleUrls: [\"./ztreelist.component.scss\"],\r\n})\r\nexport class ZtreelistComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // @ViewChild(ZTreeListBindingDirective, { static: false }) ztreelist: ZTreeListBindingDirective;\r\n ztreelist: any = null;\r\n subscription: Subscription;\r\n dataSource: string;\r\n idField = \"Id\";\r\n parentIdField = \"ParentId\";\r\n options: ZTreeListOptions = new ZTreeListOptions();\r\n componentProperties = new ZComponentProperties();\r\n fieldgridColVisible: any[];\r\n pageSize = 20;\r\n inlineEditedFormGroups: Array<any> = [];\r\n isLoading: boolean;\r\n treelistSubject: Subject<any> = new Subject<any>();\r\n // treelistSubject: Subject<any> = new Subject<any>();\r\n // subscription: Subscription;\r\n // ztreelist: any = null;\r\n // columns: any[];\r\n\r\n private widthReduce: number;\r\n\r\n private heightReduce: number;\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private webapiService: WebApiService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private authService: AuthService) { }\r\n // ngAfterViewInit(): void {\r\n // // this.ztreelist.setOptions({data: this.data, group: this.group});\r\n // }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n this.pageSize = this.data.PageSize || 20;\r\n if (!!this.data.Options) {\r\n this.setLocalOptions();\r\n } else {\r\n this.setFieldElementOptions();\r\n }\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n return {\r\n \"height.px\": this.getGridHeight(), // window.innerHeight - this.heightReduce, // 450,\r\n \"width.px\": window.innerWidth - this.widthReduce,\r\n }; // \"width.px\": this.innerWidth - 35\r\n }\r\n\r\n private getGridHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return h < 180 ? 180 : h;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.dataSource = gData;\r\n this.createFormControlsForInlineEdit(gData);\r\n if (gData && this.inlineEditedFormGroups && this.inlineEditedFormGroups.length > 0) {\r\n gData.forEach(data => {\r\n const fgVal = this.inlineEditedFormGroups.find(i => i[this.idField] === data[this.idField]);\r\n const fg = fgVal.Fg;\r\n if (fgVal && fg) {\r\n const ke = Object.keys(fg.controls);\r\n Object.keys(fg.controls).forEach(k => {\r\n const fc = fg.controls[k];\r\n if (fc) {\r\n fc.setValue(data[k]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n public isButtonHidden(col: any, cellContain: any) {\r\n if (col.visible) {\r\n return ZComponentHelper.getGroupEvalValue.call(this, col.visible, cellContain.viewItem.data);\r\n }\r\n\r\n if (!col.hiddenParam || col.hiddenValue === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === null) {\r\n return true;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === col.hiddenValue) {\r\n return true;\r\n } else { return false; }\r\n }\r\n\r\n public buttonClick(button: any, cellContext: any) {\r\n if (button.edit) {\r\n button.edit(cellContext);\r\n } else {\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: cellContext\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public onNavigateTo(event: any, colSetting: any, rowData: any, cellData: string) {\r\n // debugger;\r\n // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: colSetting.navigateTo,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public isColumnsVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n private setLocalOptions() {\r\n const options: ZTreeListOptions = ZComponentHelper.getGroupValue(\r\n this.data.Options,\r\n this.group\r\n );\r\n if (!options) {\r\n console.warn(\"No initialise for Field.Options: \", this.data.Options);\r\n return;\r\n }\r\n this.options = options;\r\n this.options.idField = this.options.idField || this.idField;\r\n this.options.parentIdField = this.options.parentIdField || this.parentIdField;\r\n\r\n\r\n const _translationFullList = this.authService.SystemLocaleTranslation;\r\n //debugger;\r\n //const _translationFilteredList = _translationFullList ? _translationFullList.filter(x => x['ProjectName'] === projectName && x['ElementName'] === fieldName) : null;\r\n\r\n\r\n //if (this.options.columns && )\r\n //const translatedTitle = _translationFilteredList.find(x => x['PhraseKey'] === field.Name.toLowerCase());\r\n //if (translatedTitle) {\r\n // const _label = field.Label.toString().trim();\r\n //}\r\n\r\n if (\r\n this.options.dataSource &&\r\n typeof this.options.dataSource === \"string\"\r\n ) {\r\n if (this.options.dataSource.startsWith(\"group.\")) {\r\n this.dataSource = ZComponentHelper.getGroupValue(this.options.dataSource, this.group);\r\n } else {\r\n console.error(this.data.Name + \" - has invalid dataSource\");\r\n }\r\n } else {\r\n console.error(this.data.Name + \" - dataSource property is not declared.\");\r\n }\r\n }\r\n\r\n private setFieldElementOptions() {\r\n this.options.sortable = true;\r\n this.options.resizable = true;\r\n this.options.filterable = true;\r\n this.options.resizable = true;\r\n this.options.columnMenu = this.data.DisableGridColumnMenu ? false : true;\r\n this.options.scrollable = true;\r\n this.options.idField = this.data[\"idField\"] || this.idField;\r\n this.options.parentIdField = this.data[\"parentIdField\"] || this.parentIdField;\r\n this.options.columns = [];\r\n this.options.aggregate = [];\r\n this.options.pageAble = this.data.PageSize ? true : false;\r\n\r\n let zfields = [];\r\n this.fieldService.getFormFieldCode(this.data[\"ColumnFieldCode\"], \"FormField\", null, null).pipe(\r\n switchMap(fields => {\r\n zfields = fields;\r\n return this.getButtonsFromZButtons(fields);\r\n }),\r\n tap((buttons) => {\r\n this.setTreeListColumns(zfields, buttons);\r\n }),\r\n switchMap(() => {\r\n return this.getDataBinding();\r\n }),\r\n tap(data => {\r\n this.createFormControlsForInlineEdit(data);\r\n })\r\n ).subscribe(data => {\r\n if (data) {\r\n this.dataSource = data;\r\n }\r\n });\r\n }\r\n\r\n // const zbuttonFields = [] as Array<ZField>;\r\n // fields.forEach(field => {\r\n // if (field.Type === \"zbuttons\") {\r\n // let fieldColVisible = field.gridColVisible;\r\n // if (field.gridColVisible && field.gridColVisible.toString().startsWith('group.')) {\r\n // // field.gridColVisible = ZComponentHelper.getGroupValue(field.gridColVisible.toString(), this.group);\r\n // fieldColVisible = ZComponentHelper.getGroupValue(field.gridColVisible.toString(), this.group);\r\n // }\r\n // // if (field.gridColVisible === true) {\r\n // if (fieldColVisible === true) {\r\n // zbuttonFields.push(field);\r\n // }\r\n // }\r\n // });\r\n\r\n // if (zbuttonFields.length === 0) {\r\n // return of([]);\r\n // }\r\n // zbuttonFields.forEach(zbuttonField => {\r\n // zbuttonResult.push(\r\n // this.fieldService.getFormFieldCode(zbuttonField.Value, \"FormField\", null, null).pipe(\r\n // switchMap(buttons => {\r\n // return of({ zbuttonField, buttons });\r\n // }))\r\n // );\r\n // });\r\n\r\n private getButtonsFromZButtons(fields: Array<ZField>): Observable<any> {\r\n const buttonCmd = [];\r\n const zbuttonResult = [];\r\n fields.forEach(field => {\r\n if (field.Type === \"zbuttons\" && ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group)) {\r\n zbuttonResult.push(\r\n this.fieldService.getFormFieldCode(field.Value, \"FormField\", null, null).pipe(\r\n switchMap(buttons => {\r\n return of({ field, buttons });\r\n }))\r\n );\r\n }\r\n });\r\n\r\n if (zbuttonResult.length === 0) {\r\n return of([]);\r\n }\r\n\r\n return forkJoin(zbuttonResult).pipe(\r\n tap(resp => {\r\n resp.forEach(zbuttonsArray =>\r\n zbuttonsArray[\"buttons\"].forEach((button: any) => {\r\n buttonCmd.push({\r\n zbuttonsName: zbuttonsArray[\"field\"].Value,\r\n name: button.Value,\r\n class: button.Class,\r\n text: button.Label,\r\n icon: button.Icon,\r\n visible: button.Visible,\r\n hiddenParam: button[\"hiddenParam\"],\r\n hiddenValue: button[\"hiddenValue\"],\r\n edit: button.edit,\r\n ClickEvent: button.ClickEvent,\r\n ShowLabel: button.ShowLabel,\r\n color: button.Color\r\n });\r\n })\r\n );\r\n }),\r\n switchMap(() => {\r\n return of(buttonCmd);\r\n })\r\n );\r\n }\r\n\r\n private setTreeListColumns(fields: Array<ZField>, buttons: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.setTreeListColumns(field.Value, buttons);\r\n }\r\n if (ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group) === true) {\r\n if (field.Type === \"zbuttons\") {\r\n this.insertCommand(field, buttons);\r\n } else {\r\n if (field.AggregateType && field.AggregateType !== \"\") {\r\n let aggregatetitle = \"\";\r\n if (field.AggregateType === \"sum\") {\r\n aggregatetitle = \"Total: \";\r\n } else {\r\n aggregatetitle = field.AggregateType + \": \";\r\n }\r\n this.insertFooterTemplateField(field, aggregatetitle);\r\n this.options.aggregate.push({\r\n field: field.Value,\r\n aggregate: field.AggregateType\r\n });\r\n } else {\r\n this.insertField(field);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private insertField(field: ZField) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push(\r\n Object.assign(field, {\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: \"\",\r\n aggregateTitle: \"\",\r\n isEditableInGrid: field.IsEditableInGrid\r\n })\r\n );\r\n }\r\n\r\n private insertCommand(field: ZField, buttons: any) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Name,\r\n title: colTitle,\r\n width: field.width,\r\n visible: field.Visible,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: buttons.filter(x => x.zbuttonsName === field.Value),\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: \"\",\r\n aggregateTitle: \"\",\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private insertFooterTemplateField(field: ZField, aggregatetitle: string) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: true,\r\n aggregateType: field.AggregateType,\r\n aggregateTitle: aggregatetitle,\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private getDataBinding(): Observable<any> {\r\n if (this.data.DataSource) {\r\n return of(ZComponentHelper.getGroupValue(this.data.DataSource, this.group));\r\n }\r\n\r\n const resourceUrl = this.getResouceURL();\r\n if (resourceUrl) {\r\n return this.webapiService.getApi(resourceUrl, null, null, null, null, null, true);\r\n }\r\n return of([]);\r\n }\r\n\r\n private getResouceURL() {\r\n return ZComponentHelper.getGroupValue(\r\n this.data.ResourceURL,\r\n this.group\r\n );\r\n }\r\n\r\n cellClickHandler(event: CellClickEvent) {\r\n if (!!this.data.DisableCellClickHandler) {\r\n return;\r\n }\r\n\r\n console.log(\"cellClick event: \", event);\r\n if (this.data.OnItemClick) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n // const currentPath = this.activatedRoute['_routerState'].snapshot.url;\r\n // this.router.navigate([currentPath + \"/\" + this.group.editModelURL, dataItem.Id]);\r\n }\r\n }\r\n\r\n private createFormControlsForInlineEdit(data: any) {\r\n if (this.options.columns.find(c => c.isEditableInGrid) === undefined || !data) {\r\n return;\r\n }\r\n\r\n this.inlineEditedFormGroups = [];\r\n\r\n data.forEach(d => {\r\n const items = {};\r\n this.options.columns.forEach(c => {\r\n items[c.field] = new FormControl(d[c.field]);\r\n });\r\n const formGroup = new FormGroup(items);\r\n this.inlineEditedFormGroups.push({ Id: d[this.idField], Fg: formGroup });\r\n });\r\n }\r\n\r\n public getInlineField(value: any) {\r\n return this.options.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(dataItem: any) {\r\n return this.inlineEditedFormGroups.find(x => x.Id === dataItem[this.idField]).Fg;\r\n }\r\n\r\n public isInlineEditColVisible(dataItem: any, column: any) {\r\n const isVisible = dataItem[`${column.Value}_Visible`];\r\n return !(isVisible === false);\r\n }\r\n\r\n public getFormat(col: any) {\r\n let format = \"\";\r\n const formatArr = col.FormatOptions.split(\".\")\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = \"1.\" + dp + \"-\" + dp;\r\n }\r\n\r\n return format;\r\n }\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.options.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName || col.field === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public getColClass(dataItem: any, col: any) {\r\n let ngClass = \"gridCell \";\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += \"rightAligned \";\r\n }\r\n\r\n if (dataItem[col.field + '_Class']) {\r\n ngClass += dataItem[col.field + '_Class'] + \" \";\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += col.Class + \" \";\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\r\n }\r\n\r\n onFilterChange(event: any): void {\r\n if (this.ztreelist) {\r\n // to be implement.\r\n }\r\n }\r\n\r\n private mapFilterOperator(operator: any) {\r\n switch (operator) {\r\n case \"eq\":\r\n return \"eq\";\r\n case \"neq\":\r\n return \"neq\";\r\n case \"lt\":\r\n return \"lt\";\r\n case \"lte\":\r\n return \"lte\";\r\n case \"gt\":\r\n return \"gt\";\r\n case \"gte\":\r\n return \"gte\";\r\n case \"startswith\":\r\n return \"startswith\";\r\n case \"endswith\":\r\n return \"endswith\";\r\n case \"isnull\":\r\n return \"isnull\";\r\n case \"isnotnull\":\r\n return \"isnotnull\";\r\n default:\r\n return \"==\";\r\n // eq, neq, isnull, isnotnull, endswith, startswith\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentProperties,\r\n ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztrendcard',\r\n templateUrl: './ztrendcard.component.html',\r\n styleUrls: ['./ztrendcard.component.scss'],\r\n})\r\nexport class ZtrendcardComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private title = \"Undefined\";\r\n private icon = \"address-card\";\r\n private color = \"#000000\";\r\n private value = 0;\r\n\r\n options = {\r\n title: this.title,\r\n icon: this.icon,\r\n color: this.color,\r\n value: this.value\r\n };\r\n\r\n// fieldElement01 = [\r\n// {\"Name\": \"myTrendCard1\",\r\n// \"Value\": \"group.myTrendCard01Value\",\r\n// \"Type\": \"ztrendcard\",\r\n// \"Visible\": \"true\",\r\n// \"DivClass\": \"col-md-3 col-lg-3\",\r\n// \"AppendDivClearFix\": false,\r\n// \"Title\": \"Upcoming Call/Follow-Up Call\",\r\n// \"Icon\": \"phone\",\r\n// \"Color\": \"#F7BC46\",\r\n// }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.icon =ZComponentHelper.getGroupEvalValue.call(this, field.Icon) || options.icon;\r\n options.color =ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.color;\r\n options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n }\r\n\r\n public setData = (gData: any) => {\r\n if(!gData)\r\n {\r\n this.options.value=0;\r\n }\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormControl, FormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { AsyncSubject, forkJoin, Observable, of } from \"rxjs\";\r\nimport { concatMap, map, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZField,\r\n AlertService, AuthService, FieldService, ResourceApiService, ToastService, WebApiService,\r\n ZGroup, ZComponentProperties, ZComponentHelper\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zudf',\r\n templateUrl: './zudf.component.html',\r\n styleUrls: ['./zudf.component.scss'],\r\n})\r\nexport class ZudfComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n formField: ZField[];\r\n\r\n componentProperties = new ZComponentProperties();\r\n initialDataValue: any;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService\r\n ) { }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // keep data Value\r\n this.initialDataValue = this.data.Value;\r\n\r\n if (ZComponentHelper.isNullUndefinedEmpty(this.data.Value)) {\r\n this.loadEmptyForm();\r\n }\r\n else {\r\n this.loadZudfForm(); \r\n }\r\n }\r\n\r\n private loadEmptyForm() {\r\n of(true).pipe(\r\n tap(() => {\r\n this.data.SubType = 'zudf';\r\n\r\n // change the value to the result field form \r\n this.data.Value = [];\r\n\r\n // change zudf to zdiv\r\n //this.data.Type = 'zdiv';\r\n }),\r\n tap(() => { \r\n if (!this.group['_zudf_' + this.data.Name]) {\r\n this.group['_zudf_' + this.data.Name] = new ZGroup;\r\n }\r\n\r\n const grp = this.group['_zudf_' + this.data.Name];\r\n \r\n grp.zModel = {};\r\n\r\n // create as new Form Group\r\n this.form = this.toFormGroup(this.data.Value);\r\n\r\n // set to zGroup scope\r\n grp.form = this.form;\r\n }),\r\n tap(() => {\r\n // set to formField for display\r\n this.formField = this.data.Value;\r\n })\r\n ).subscribe(() => {\r\n // set Field div class\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n });\r\n }\r\n\r\n private loadZudfForm() {\r\n of(true).pipe(\r\n concatMap(fieldElements => {\r\n const asyncSubject = new AsyncSubject<any>();\r\n this.fieldService.getFormFieldCode(this.data.Value, 'FormField', this, 'fields').pipe(\r\n map(formFieldResult => {\r\n // rename add prefix to all udf field to prevent duplicate from main form\r\n this.appendPrefix(formFieldResult, 'zudf_' + this.data.Name);\r\n\r\n // change the value to the result field form \r\n this.data.Value = formFieldResult;\r\n\r\n // change zudf to zdiv\r\n //this.data.Type = 'zdiv';\r\n\r\n // end subject\r\n asyncSubject.next(true);\r\n asyncSubject.complete();\r\n })\r\n ).subscribe();\r\n\r\n return asyncSubject.asObservable();\r\n }),\r\n tap(() => {\r\n if (!this.group['_zudf_' + this.data.Name]) {\r\n this.group['_zudf_' + this.data.Name] = new ZGroup;\r\n }\r\n\r\n const grp = this.group['_zudf_' + this.data.Name];\r\n\r\n grp.zModel = {};\r\n\r\n // create as new Form Group\r\n this.form = this.toFormGroup(this.data.Value);\r\n\r\n // set to zGroup scope\r\n grp.form = this.form;\r\n }),\r\n tap(() => {\r\n // set to formField for display\r\n this.formField = this.data.Value;\r\n })\r\n ).subscribe(() => {\r\n // set Field div class\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n\r\n // TODO: get saved record\r\n //this.getFormFieldzModel();\r\n\r\n // change back the data.Value\r\n if (this.data['DisableReplaceValue']) {\r\n this.data.Value = this.initialDataValue;\r\n }\r\n });\r\n }\r\n\r\n private getFormFieldzModel() {\r\n const form = this.group['_zudf_' + this.data.Name].form;\r\n const zModel = this.group['_zudf_' + this.data.Name].zModel;\r\n const url = this.resourceApiService.getURL('field');\r\n\r\n const respData = { 'parentFormId': 5722, 'zudf_Name': 'test' };\r\n\r\n Object.assign(zModel, respData);\r\n form.patchValue(zModel);\r\n form.markAsPristine();\r\n\r\n //return this.webApiService.httpGet$(url, { name: this.group.fieldName, type: 'FormField' }).pipe(\r\n // tap((respData: any) => {\r\n // debugger;\r\n // Object.assign(zModel, respData);\r\n // form.patchValue(zModel);\r\n // form.markAsPristine();\r\n // })\r\n //);\r\n }\r\n\r\n private toFormGroup(fieldElements: Array<ZField>) {\r\n const formControls: { [key: string]: FormControl } = {};\r\n this.getFormControls(fieldElements, formControls);\r\n const newFormGroup = new FormGroup(formControls);\r\n return newFormGroup;\r\n }\r\n\r\n private getFormControls(fieldArray: Array<ZField>, formControls: { [key: string]: FormControl }) {\r\n fieldArray.forEach(field => {\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n }\r\n else {\r\n if (Array.isArray(field.Value)) {\r\n this.getFormControls(field.Value, formControls);\r\n }\r\n else {\r\n const isFormControl = ZComponentHelper.isFormControl(field);\r\n const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired);\r\n formControls[field.Value] = new FormControl(\r\n this.group['_zudf_' + this.data.Name].zModel[field.Value],\r\n validators\r\n );\r\n if (ZComponentHelper.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new FormControl(\r\n this.group['_zudf_' + this.data.Name].zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n }\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n private appendPrefix(fields: ZField[], prefix: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.appendPrefix(field.Value, prefix);\r\n }\r\n else {\r\n field.Name = prefix + '_' + field.Name;\r\n if (field.Type != 'zbuttons') {\r\n field.Value = prefix + '_' + field.Value;\r\n }\r\n field.SubType = prefix;\r\n }\r\n });\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public appendFormControl(zudfControlName: string, zudfControl: FormControl, fieldData: ZField) {\r\n this.form.addControl(zudfControlName, zudfControl);\r\n this.formField.push(fieldData);\r\n }\r\n \r\n public clearFormControl() {\r\n this.formField.forEach(data => {\r\n this.form.removeControl(data.Value); \r\n });\r\n\r\n this.data.Value = this.initialDataValue;\r\n\r\n this.formField = [];\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponent, ZGroup, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zunknown',\r\n templateUrl: './zunknown.component.html',\r\n styleUrls: ['./zunknown.component.scss'],\r\n})\r\nexport class ZunknownComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, NgZone, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { environment } from \"src/environments/environment\";\r\nimport { take } from 'rxjs/operators';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport {\r\n FileInfo,\r\n SuccessEvent,\r\n RemoveEvent,\r\n UploadEvent,\r\n FileRestrictions,\r\n ChunkSettings,\r\n SelectEvent,\r\n UploadComponent\r\n} from \"@progress/kendo-angular-upload\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, ZCoreService, CompressImageService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties,\r\n ZField, ZGroup, UploadMetaData, ImageCompressionConfig\r\n} from \"mmhglobal-zcore\";\r\n\r\nexport class MyFileInfo implements FileInfo {\r\n name: string;\r\n uid?: string;\r\n myUid?: string;\r\n}\r\n\r\n@Component({\r\n selector: \"app-zupload\",\r\n templateUrl: \"./zupload.component.html\",\r\n styleUrls: [\"./zupload.component.scss\"],\r\n})\r\nexport class ZuploadComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"uploadComponent\") uploadComponent: UploadComponent;\r\n\r\n componentProperties = new ZComponentProperties();\r\n uploadAttachmentUrl: string = null;\r\n uploadSaveUrl = \"/Attachment/Chunk_Upload_Save\"; // should represent an actual API endpoint\r\n uploadRemoveUrl = \"/Attachment/Chunk_Upload_Remove\"; // should represent an actual API endpoint\r\n downloadFileUrl = \"/Attachment/downloadFile\";\r\n getImageUrl = \"/Attachment/getImage\"; // GET method\r\n isAutoUpload = false;\r\n isMultiple = false;\r\n imagePreviews: any[] = [];\r\n uid: string[] = [];\r\n showFileList = true;\r\n fileList: any[] = [];\r\n\r\n public restrictions: FileRestrictions = {\r\n\r\n minFileSize: 1,\r\n maxFileSize: 4194304,\r\n allowedExtensions: [\r\n \"jpg\",\r\n \"jpeg\",\r\n \"png\",\r\n \"bmp\",\r\n \"pdf\",\r\n \"txt\",\r\n \"docx\",\r\n \"doc\",\r\n \"xlsx\",\r\n \"xls\",\r\n \"ppt\",\r\n \"pptx\",\r\n \"csv\",\r\n ],\r\n };\r\n\r\n public chunkSettings: ChunkSettings = {\r\n size: 102400,\r\n maxAutoRetries: 3,\r\n };\r\n\r\n // zModelValue = [{\r\n // name: \"RXJS 01.png\",\r\n // size: 128753,\r\n // uid: \"c96e234d-af61-4587-adcc-3b400ddef884\"\r\n // }];\r\n\r\n // fieldElement = [{\r\n // Name: 'FileUploadList',\r\n // Type: 'zupload',\r\n // Value: 'FileUploadList',\r\n // SelectionOptions: ['jpg', 'jpeg', 'png', 'bmp', 'pdf'],\r\n // UploadMetaData: 'group.UploadMetaData',\r\n // AutoUpload: false,\r\n // AllowRemove: true,\r\n // Multiple: false,\r\n // OnSuccess: 'group.onSuccess()',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private compressImage: CompressImageService,\r\n private zcoreService: ZCoreService,\r\n private ngZone: NgZone\r\n ) {\r\n this.uploadAttachmentUrl = this.zcoreService.getEnvironment().uploadAttachmentUrl;\r\n this.uploadSaveUrl = this.uploadAttachmentUrl + this.uploadSaveUrl;\r\n this.uploadRemoveUrl = this.uploadAttachmentUrl + this.uploadRemoveUrl;\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // this.group['UploadMetaData'] = new UploadMetaData(null, '15', 'SO-No-1234', 'SaleOrder');\r\n\r\n\r\n // this.uploadSaveUrl = uploadAttachmentUrl + this.uploadSaveUrl;\r\n // this.uploadRemoveUrl = uploadAttachmentUrl + this.uploadRemoveUrl;\r\n\r\n if (this.data.SelectOptions) {\r\n this.restrictions.allowedExtensions = (this.data\r\n .SelectOptions as unknown) as string[];\r\n }\r\n\r\n if (this.data.MinFileSize) {\r\n this.restrictions.minFileSize = this.data.MinFileSize;\r\n }\r\n\r\n if (this.data.MaxFileSize) {\r\n this.restrictions.maxFileSize = this.data.MaxFileSize;\r\n }\r\n\r\n this.isAutoUpload = this.data.AutoUpload || false;\r\n\r\n if (!this.data.AllowRemove) {\r\n this.uploadRemoveUrl = \"\";\r\n }\r\n\r\n if (this.data.Multiple) {\r\n this.isMultiple = this.data.Multiple;\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n };\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n };\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(\r\n status,\r\n this.group,\r\n this.data.Value,\r\n this.componentProperties,\r\n Validators.required\r\n );\r\n };\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onSuccess(e: SuccessEvent): void {\r\n // angular kendo upload didn't filter away Sent event for remove, so we have to handle it here\r\n // upload progress not required for removal, thus it's also removed\r\n // @ts-ignore\r\n if (e.operation === \"remove\" && (e.response.type === HttpEventType.Sent || e.response.type === HttpEventType.UploadProgress)) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(this.group.zModel[this.data.Value])) {\r\n this.group.zModel[this.data.Value] = [];\r\n }\r\n\r\n const file = e.files[0] as MyFileInfo;\r\n const existingFileIndex = this.group.zModel[this.data.Value].findIndex(f => f.name === file.name && f.uid === file.uid);\r\n if (e.operation === \"upload\") {\r\n // console.log('upload Success: ', e);\r\n file.myUid = file.uid;\r\n delete file['httpSubscription'];\r\n\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value][existingFileIndex] = file;\r\n } else {\r\n this.group.zModel[this.data.Value].push(file);\r\n }\r\n\r\n } else if (e.operation === \"remove\") {\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value].splice(existingFileIndex, 1);\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"zupload-onSuccess\",\r\n target: this.data.OnSuccess,\r\n event: e,\r\n data: { value: e.files[0], field: this.data },\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private compressionConfigHandler(imgConfig: ImageCompressionConfig): ImageCompressionConfig {\r\n if (imgConfig.FileSizeMaxSize) {\r\n imgConfig.FileSizeMaxSizeByte = this.convertSizeToByte(imgConfig.FileSizeMaxSize);\r\n }\r\n\r\n if (imgConfig.FileSizeMinSize) {\r\n imgConfig.FileSizeMinSizeByte = this.convertSizeToByte(imgConfig.FileSizeMinSize);\r\n }\r\n else {\r\n imgConfig.FileSizeMinSizeByte = 0;\r\n }\r\n\r\n return imgConfig;\r\n }\r\n\r\n private convertSizeToByte(sizeString: string): number {\r\n let _tempFileSizeMaxSize: number = 0;\r\n let sizeByByte: number = 0;\r\n let sizeType = 'b';\r\n\r\n // remove all space\r\n const _tempFileSize = sizeString.replace(/ /g, '');\r\n\r\n // check last char is alphabetic\r\n const lastChar = _tempFileSize.substr(_tempFileSize.length - 1);\r\n if (isNaN(parseFloat(lastChar))) {\r\n const secLastChar = _tempFileSize.substr(_tempFileSize.length - 2).slice(0, -1);\r\n\r\n if (isNaN(parseFloat(secLastChar))) {\r\n // check last 2nd char is alphabetic\r\n sizeType = secLastChar + sizeType;\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -2));\r\n }\r\n else {\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -1));\r\n }\r\n\r\n switch (sizeType.toLowerCase()) {\r\n case \"b\":\r\n sizeByByte = _tempFileSizeMaxSize\r\n break;\r\n case \"kb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1024\r\n break;\r\n case \"mb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1048576\r\n break;\r\n case \"gb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1073741824\r\n break;\r\n }\r\n }\r\n else {\r\n // default using bytes if no size type\r\n sizeByByte = parseFloat(_tempFileSize);\r\n }\r\n\r\n return sizeByByte;\r\n }\r\n\r\n uploadEventHandler(e: UploadEvent) {\r\n // Image Preview\r\n const me = this;\r\n e.files.forEach((file: FileInfo) => {\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n if (me.data.EnableImagePreview) {\r\n if (!me.uid.includes(file.uid)) {\r\n me.uid.push(file.uid);\r\n me.imagePreviews.push({ ...file, src: <string>reader.result });\r\n }\r\n }\r\n }\r\n reader.readAsDataURL(file.rawFile);\r\n }\r\n }\r\n });\r\n\r\n // Add metadata to the upload event\r\n let additional: UploadMetaData = ZComponentHelper.getGroupEvalValue.call(this, this.data.UploadMetaData);\r\n\r\n if (!(additional instanceof UploadMetaData)) {\r\n console.error(\"UploadMetaData defined at \" + this.data.UploadMetaData + \" is invalid: \", additional);\r\n additional = new UploadMetaData(null, \"0\");\r\n }\r\n\r\n const str = JSON.stringify(additional);\r\n\r\n e.data = { additional: str, };\r\n e.headers = e.headers.append(\"Authorization\", \"Bearer \" + this.authService.e1AccessToken);\r\n }\r\n\r\n onRemove(e: RemoveEvent): void {\r\n // remove file from component memory\r\n const index = this.fileList.findIndex(\r\n (item) => item.uid === e.files[0].uid\r\n );\r\n\r\n if (index >= 0) {\r\n this.fileList.splice(index, 1);\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n\r\n if (this.data['FileRemovedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileRemovedEvent\",\r\n target: this.data['FileRemovedEvent'],\r\n data: e\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n const myFile: MyFileInfo = e.files[0] as MyFileInfo;\r\n\r\n // console.log('remove done: ', e);\r\n e.data = {\r\n id: myFile.myUid,\r\n };\r\n e.headers = e.headers.append(\r\n \"Authorization\",\r\n \"Bearer \" + this.authService.e1AccessToken\r\n );\r\n\r\n if (this.data.EnableImagePreview) {\r\n e.files.forEach((file: FileInfo) => {\r\n this.imagePreviews = this.imagePreviews.filter(f => f.uid !== file.uid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onChange(file: FileInfo[]): void {\r\n if (this.data['FileChangedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileChangedEvent\",\r\n target: this.data['FileChangedEvent'],\r\n data: file\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n selectEventHandler(e: SelectEvent) {\r\n const me = this;\r\n\r\n if (this.data['SelectFileOnly']) {\r\n // append all file to component memory\r\n e.files.forEach(async (file: FileInfo) => {\r\n if (file.rawFile) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n // clone the data and also add the readed file to the object\r\n const fileData = Object.assign({}, file);\r\n fileData['file'] = ev.target[\"result\"];\r\n // push to component fileList\r\n me.fileList.push(fileData);\r\n me.group['zupload_' + me.data.Value] = me.fileList;\r\n\r\n if (me.data['FileSelectedEvent']) {\r\n // call the project event\r\n me.group.subject.next({\r\n type: \"zupload-fileSelectedEvent\",\r\n target: me.data['FileSelectedEvent'],\r\n data: me.fileList\r\n } as ZComponentOutputEvent);\r\n }\r\n };\r\n await reader.readAsDataURL(file.rawFile);\r\n }\r\n });\r\n }\r\n else {\r\n // Only workable for Auto Upload = false\r\n if (!this.data.AutoUpload) {\r\n // Compression for image file\r\n const imageCompressionEnabled = this.data.Compression ? true : false;\r\n\r\n //Check if Image Compression is enabled.\r\n if (imageCompressionEnabled === true) {\r\n e.files.forEach((file: FileInfo) => {\r\n // Compress only if it is an image file\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const imgConfig = this.compressionConfigHandler(this.data.Compression);\r\n if (file.size > imgConfig.FileSizeMinSizeByte) {\r\n me.compressImage.compress(file.rawFile, imgConfig) //Pass in parameter to set the Compression Options\r\n .pipe(take(1))\r\n .subscribe(compressFile => {\r\n this.ngZone.run(() => {\r\n file.rawFile = compressFile;\r\n file.size = compressFile.size;\r\n\r\n // clone the data and also add the readed file to the object\r\n const fileData = Object.assign({}, file);\r\n // push to component fileList\r\n me.fileList.push(fileData);\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file.rawFile);\r\n });\r\n console.log(`Compressed file size: ${(file.rawFile.size / 1024).toFixed(2)}KB`);\r\n });\r\n } // file size check\r\n } // validationErrors check\r\n } // file type check\r\n }) // loop each file\r\n } // imagecompression check\r\n\r\n // add to group scope\r\n me.group['zupload_' + me.data.Value] = e.files;\r\n }\r\n }\r\n }\r\n\r\n clearFiles() {\r\n this.uploadComponent.clearFiles();\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { concatMap, map, switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from '../services/main.service';\r\nimport {\r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, WebApiService, ResourceApiService, WorkflowService, FontAweSomeService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zworkflowbuttons',\r\n templateUrl: './zworkflowbuttons.component.html',\r\n styleUrls: ['./zworkflowbuttons.component.scss']\r\n})\r\nexport class ZworkflowbuttonsComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n //domainURL = \"https://localhost:44300/\";\r\n //e1wfs_wfcGetWorkflowButtonURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowClientButtons/\";\r\n //e1wfs_wfc_getWorkflowInitialStatusURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowInitialStatus/\";\r\n //e1wfs_wfc_getDocumentStatusURL = this.domainURL + \"/api/WorkflowClients/GetDocumentStatus/\";\r\n\r\n items: Array<any> = [];\r\n dataFormFields: any = {};\r\n FirstZbtn = false;\r\n isLoading = true;\r\n isLocalHostAPI: boolean = false;\r\n\r\n constructor(\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // Check project resourceURL is it localhost\r\n if (this.group.resourceURL) {\r\n this.isLocalHostAPI = this.group.resourceURL.toLowerCase().includes(\"localhost\") ? true : false;\r\n }\r\n\r\n this.loadButton();\r\n }\r\n\r\n private loadButton() {\r\n this.items = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n // button count\r\n this.group.zButtonsCount++;\r\n if (this.group.zButtonsCount === 1) {\r\n this.FirstZbtn = true;\r\n }\r\n\r\n try {\r\n\r\n of(true)\r\n .pipe(\r\n concatMap(() => {\r\n // retrieve the workflow button\r\n return this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(this.isLocalHostAPI)\r\n )\r\n }),\r\n tap(resultData => {\r\n if (resultData) {\r\n resultData.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n this.items.push({\r\n text: buttonLabel,\r\n icon: ZComponentHelper.getIcon(attributes.Icon),\r\n visible: attributes.Visible,\r\n fieldAttribute: button,\r\n iconName: attributes.Icon,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n });\r\n\r\n const mappedInfo = {\r\n 'role': [],\r\n 'status': [],\r\n 'parentStatus': []\r\n };\r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n }\r\n else {\r\n console.warn('unable to get workflow button. data returned null.');\r\n }\r\n }),\r\n map(() => {\r\n if (!this.data.DisableSyncWorkflowStatus) {\r\n // Set default status\r\n // eslint-disable-next-line @typescript-eslint/dot-notation\r\n if (!this.group.zModel[\"WFS_StatusName\"]) {\r\n const params = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n map(res => {\r\n if (res.Data) {\r\n ZComponentHelper.presetModelValue(\"WFS_StatusId\", res.Data[\"Id\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusName\", res.Data[\"Name\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusCode\", res.Data[\"Code\"], this.group);\r\n\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n } else {\r\n // When loading also to get current Status Information if any.\r\n const docInfoParam = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode,\r\n \"DocumentId\": documentId,\r\n };\r\n\r\n this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n map(res => {\r\n this.workflowService.setCurrentDocumentStatus(res);\r\n if (res.Data) {\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n }\r\n }\r\n })\r\n\r\n ).subscribe();\r\n\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n buttonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!attributes['DisableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n this.group.isTriggered = true;\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, this.isLocalHostAPI).subscribe(res => {\r\n this.loadButton();\r\n this.group.isTriggered = false;\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n /******************** Button Config ********************/\r\n private getButtonLabel(button: any) {\r\n let labelExpr = button.Name.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return button.Name;\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n/******************** Common ********************/\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n if (iconName == \"\") {\r\n iconName = \"help\";\r\n }\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable, ComponentFactoryResolver, EmbeddedViewRef } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Service & Directive **********/\r\nimport { ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { FieldElementDirective } from '../directives/fieldelement.directive';\r\n// import { ZGridBindingDirective } from \"../zgrid/zgrid.binding.directive\";\r\n\r\n/********** zComponent **********/\r\nimport { ZBulletComponent } from \"../zbullet/zbullet.component\";\r\nimport { ZbuttonsComponent } from \"../zbuttons/zbuttons.component\";\r\nimport { ZcardComponent } from \"../zcard/zcard.component\";\r\nimport { ZchartComponent } from '../zchart/zchart.component';\r\nimport { ZcheckboxComponent } from '../zcheckbox/zcheckbox.component';\r\nimport { ZChipComponent } from \"../zchip/zchip.component\"; \r\nimport { ZcodeeditorComponent } from '../zcodeeditor/zcodeeditor.component';\r\nimport { ZdatetimeComponent } from '../zdatetime/zdatetime.component';\r\nimport { ZdivComponent } from '../zdiv/zdiv.component';\r\nimport { ZgaugeComponent } from '../zgauge/zgauge.component';\r\nimport { ZgridComponent } from '../zgrid/zgrid.component';\r\nimport { ZimgComponent } from '../zimg/zimg.component';\r\nimport { ZkcardComponent } from '../zkcard/zkcard.component';\r\nimport { ZlabelComponent } from '../zlabel/zlabel.component';\r\nimport { ZmfbComponent } from '../zmfb/zmfb.component';\r\nimport { ZnumericComponent } from '../znumeric/znumeric.component';\r\nimport { ZpostselectinputComponent } from '../zpostselectinput/zpostselectinput.component';\r\nimport { ZquerybuilderComponent } from '../zquerybuilder/zquerybuilder.component';\r\nimport { ZreportComponent } from '../zreport/zreport.component';\r\nimport { ZschedulerComponent } from '../zscheduler/zscheduler.component';\r\nimport { ZselectmultipleComponent } from \"../zselectmultiple/zselectmultiple.component\";\r\nimport { ZtabComponent } from \"../ztab/ztab.component\";\r\nimport { ZtextComponent } from \"../ztext/ztext.component\";\r\nimport { ZtextareaComponent } from '../ztextarea/ztextarea.component';\r\nimport { ZtexteditorComponent } from '../ztexteditor/ztexteditor.component';\r\nimport { ZtreeComponent } from '../ztree/ztree.component';\r\nimport { ZtreelistComponent } from '../ztreelist/ztreelist.component';\r\nimport { ZtrendcardComponent } from '../ztrendcard/ztrendcard.component';\r\nimport { ZudfComponent } from \"../zudf/zudf.component\";\r\nimport { ZunknownComponent } from \"../zunknown/zunknown.component\";\r\nimport { ZuploadComponent } from '../zupload/zupload.component';\r\nimport { ZworkflowbuttonsComponent } from \"../zworkflowbuttons/zworkflowbuttons.component\";\r\n// import { ZComponentServiceModule } from './zcomponent.service.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentService {\r\n constructor() { }\r\n\r\n mapByName(name: string) {\r\n const _name = name.toLocaleLowerCase();\r\n\r\n const data = {\r\n zbullet: ZBulletComponent,\r\n zbuttons: ZbuttonsComponent,\r\n zcard: ZcardComponent,\r\n zchart: ZchartComponent,\r\n checkbox: ZcheckboxComponent,\r\n zchip: ZChipComponent,\r\n textareajson: ZcodeeditorComponent,\r\n textareahtml: ZcodeeditorComponent,\r\n zdate: ZdatetimeComponent,\r\n zdatetime: ZdatetimeComponent,\r\n zshortdate: ZdatetimeComponent,\r\n zuidatetime: ZdatetimeComponent,\r\n zuitime: ZdatetimeComponent,\r\n zdiv: ZdivComponent,\r\n zgauge: ZgaugeComponent,\r\n zgrid: ZgridComponent,\r\n zimg: ZimgComponent,\r\n zkcard: ZkcardComponent,\r\n zlabel: ZlabelComponent,\r\n zmfb: ZmfbComponent,\r\n znumeric: ZnumericComponent,\r\n post_select_input: ZpostselectinputComponent,\r\n pre_select_input: ZpostselectinputComponent,\r\n zphone_countrycode: ZpostselectinputComponent,\r\n zquerybuilder: ZquerybuilderComponent,\r\n zreport: ZreportComponent,\r\n zcalendar: ZschedulerComponent,\r\n zuiselectmultiple: ZselectmultipleComponent,\r\n zuiselectmultiple_button: ZselectmultipleComponent,\r\n select: ZselectmultipleComponent,\r\n ztab: ZtabComponent,\r\n number: ZtextComponent,\r\n numeric: ZtextComponent,\r\n date: ZtextComponent,\r\n email: ZtextComponent,\r\n password: ZtextComponent,\r\n search: ZtextComponent,\r\n tel: ZtextComponent,\r\n text: ZtextComponent,\r\n url: ZtextComponent,\r\n currency: ZtextComponent,\r\n textarea: ZtextareaComponent,\r\n ztexteditor: ZtexteditorComponent,\r\n ztree: ZtreeComponent,\r\n ktree_list: ZtreelistComponent,\r\n ztrendcard: ZtrendcardComponent,\r\n unknown: ZunknownComponent,\r\n zudf: ZudfComponent,\r\n zupload: ZuploadComponent,\r\n zworkflowbuttons: ZworkflowbuttonsComponent\r\n // kdate_rangepicker: ZdaterangeComponent\r\n };\r\n\r\n return data[_name];\r\n }\r\n\r\n isSkipComponentType(componentType: string): boolean {\r\n return ZComponentHelper.isSkipComponentType(componentType);\r\n }\r\n\r\n loadComponent(\r\n componentFactoryResolver: ComponentFactoryResolver,\r\n fieldElement: FieldElementDirective,\r\n field: any,\r\n group: any,\r\n form: FormGroup\r\n ) {\r\n // if(field.Name === 'FormDetailContactGrid') {\r\n // debugger;\r\n // }\r\n\r\n if (this.isSkipComponentType(field.Type)) {\r\n return;\r\n }\r\n\r\n let componentFactory;\r\n const componentName = this.mapByName(field.Type);\r\n if (componentName) {\r\n componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n componentName\r\n );\r\n } else {\r\n componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n this.mapByName(\"unknown\")\r\n );\r\n }\r\n\r\n const viewContainerRef = fieldElement.viewContainerRef;\r\n viewContainerRef.clear();\r\n if (!form) {\r\n console.warn('FormGroup is empty!');\r\n debugger;\r\n }\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance as ZComponent).data = field;\r\n (componentRef.instance as ZComponent).group = group;\r\n (componentRef.instance as ZComponent).form = form;\r\n // (componentRef.instance as ZComponent).outputEvent.subscribe((event: any) => group.outputEvent(event));\r\n }\r\n\r\n appendComponentToDynamicForm(\r\n componentFactoryResolver: ComponentFactoryResolver,\r\n injector: any,\r\n appRef: any,\r\n field: any,\r\n group: any,\r\n containerId: string\r\n ) {\r\n if (this.isSkipComponentType(field.Type)) {\r\n return;\r\n }\r\n\r\n let componentRef;\r\n const componentName = this.mapByName(field.Type);\r\n // 1. Create a component reference from the component\r\n if (componentName) {\r\n componentRef = componentFactoryResolver\r\n .resolveComponentFactory(componentName)\r\n .create(injector);\r\n } else {\r\n componentRef = componentFactoryResolver\r\n .resolveComponentFactory(this.mapByName(\"unknown\"))\r\n .create(injector);\r\n }\r\n\r\n // 2. Attach component to the appRef so that it's inside the ng component tree\r\n appRef.attachView(componentRef.hostView);\r\n\r\n // 3. Get DOM element from component\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // 4. Append DOM element to the body\r\n const dynamicFormHost: any = document.querySelector(\"#\" + containerId);\r\n dynamicFormHost.appendChild(domElem);\r\n\r\n (componentRef.instance as ZComponent).data = field;\r\n (componentRef.instance as ZComponent).group = group;\r\n return componentRef;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input, ViewChild, ComponentFactoryResolver } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { FieldElementDirective } from \"../directives/fieldelement.directive\";\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZField, ZGroup } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zformcontrol\",\r\n templateUrl: \"./zformcontrol.component.html\",\r\n styleUrls: [\"./zformcontrol.component.scss\"]\r\n})\r\nexport class ZformcontrolComponent implements OnInit, OnDestroy {\r\n\r\n @Input() field: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // @Input() containerid: string;\r\n @ViewChild(FieldElementDirective, { static: true }) fieldElement: FieldElementDirective;\r\n componentRef: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private zcomponentService: ZComponentService\r\n // private appRef: ApplicationRef,\r\n // private injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.zcomponentService.loadComponent(this.componentFactoryResolver, this.fieldElement, this.field, this.group, this.form);\r\n // this.componentRef = ZComponentHelper.appendComponentToDynamicForm(\r\n // this.componentFactoryResolver,\r\n // this.injector,\r\n // this.appRef,\r\n // this.field,\r\n // this.group,\r\n // this.containerid\r\n // );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // this.appRef.detachView(this.componentRef.hostView);\r\n // this.componentRef.destroy();\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n// import { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { IonicSelectableModule } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { AceEditorModule } from 'ng2-ace-editor';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { QueryBuilderModule } from \"angular2-query-builder\";\r\n\r\n/********** Kendo **********/\r\nimport { ArcGaugeModule } from '@progress/kendo-angular-gauges';\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\nimport { ChartsModule } from '@progress/kendo-angular-charts';\r\nimport { CalendarModule, DateInputsModule } from '@progress/kendo-angular-dateinputs';\r\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\r\nimport { EditorModule } from '@progress/kendo-angular-editor';\r\nimport { ExcelModule, GridModule } from '@progress/kendo-angular-grid';\r\nimport { IndicatorsModule } from \"@progress/kendo-angular-indicators\";\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\nimport { InputsModule, SwitchModule, TextBoxModule } from '@progress/kendo-angular-inputs';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { LayoutModule, PanelBarModule, TabStripModule } from '@progress/kendo-angular-layout';\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { ProgressBarModule } from \"@progress/kendo-angular-progressbar\";\r\nimport { TelerikReportingModule } from '@progress/telerik-angular-report-viewer';\r\nimport { SchedulerModule } from '@progress/kendo-angular-scheduler';\r\nimport { TreeListModule } from '@progress/kendo-angular-treelist';\r\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\r\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\r\nimport { UploadModule, UploadsModule } from '@progress/kendo-angular-upload';\r\n\r\n/********** Service & Directive **********/\r\nimport { ZCoreModule, ZGroup } from 'mmhglobal-zcore';\r\nimport { MmhglobalZmodalModule, ModalService } from 'mmhglobal-zmodal';\r\nimport { MainService } from './services/main.service';\r\nimport { ScrollbarThemeDirective } from './directives/scrollbar.theme.directive';\r\nimport { FieldElementDirective } from './directives/fieldelement.directive';\r\nimport { ZGridBindingDirective } from './zgrid/zgrid.binding.directive';\r\nimport { ZGridPopupAnchorDirective } from './zgrid/zgrid.popup.anchor-target.directive';\r\nimport { OpenOnFocusDirective } from './zselectmultiple/zselectmultiple.directive';\r\n\r\n/********** Addon **********/\r\nimport { DateParserFilter } from './zdatetime/dateParser.pipe';\r\nimport { EditorFilter } from './zcodeeditor/zcodeeditor.pipe';\r\nimport { DivzLayout } from './zdiv/zdiv.pipe';\r\nimport { ExportOptions } from './zreport/zreport.config';\r\nimport { TabFilter } from './ztab/ztab.pipe';\r\nimport { DateRangeFilterCellComponent } from './zgrid/date-range-cell-filter.component';\r\nimport { ZSchedulerToolBarComponent } from './zscheduler/zscheduler.toolbar.component';\r\n\r\n/********** zComponent **********/\r\nimport { UipageComponent } from './uipage/uipage.component';\r\nimport { UiheaderComponent } from './uiheader/uiheader.component';\r\nimport { UicontentComponent } from './uicontent/uicontent.component';\r\n\r\nimport { UimenucontentComponent } from './uimenucontent/uimenucontent.component';\r\nimport { UimenubuttonComponent } from './uimenubutton/uimenubutton.component';\r\nimport { UiappmenucontentComponent } from './uiappmenucontent/uiappmenucontent.component';\r\nimport { UiactionbuttonComponent } from './uiactionbutton/uiactionbutton.component';\r\nimport { UivalidationmessageComponent } from './uivalidationmessage/uivalidationmessage.component';\r\n\r\nimport { ZBulletComponent } from \"./zbullet/zbullet.component\";\r\nimport { ZbuttonsComponent } from \"./zbuttons/zbuttons.component\";\r\nimport { ZcardComponent } from \"./zcard/zcard.component\";\r\nimport { ZchartComponent } from './zchart/zchart.component';\r\nimport { ZcheckboxComponent } from './zcheckbox/zcheckbox.component';\r\nimport { ZChipComponent } from \"./zchip/zchip.component\";\r\nimport { ZcodeeditorComponent } from './zcodeeditor/zcodeeditor.component';\r\nimport { ZdaterangeComponent } from './zdaterange/zdaterange.component';\r\nimport { ZdatetimeComponent } from './zdatetime/zdatetime.component';\r\nimport { ZdivComponent } from './zdiv/zdiv.component';\r\nimport { ZformComponent } from \"./zform/zform.component\";\r\nimport { ZformcontrolComponent } from \"./zformcontrol/zformcontrol.component\";\r\nimport { ZgaugeComponent } from './zgauge/zgauge.component';\r\nimport { ZgridComponent } from \"./zgrid/zgrid.component\";\r\nimport { ZimgComponent } from './zimg/zimg.component';\r\nimport { ZkcardComponent } from './zkcard/zkcard.component';\r\nimport { ZlabelComponent } from './zlabel/zlabel.component';\r\nimport { ZmfbComponent } from './zmfb/zmfb.component';\r\nimport { ZmodalComponent } from \"./zmodal/zmodal.component\";\r\nimport { ZmodalMobileComponent } from \"./zmodal/zmodal-mobile.component\";\r\nimport { ZnumericComponent } from './znumeric/znumeric.component';\r\nimport { ZpostselectinputComponent } from './zpostselectinput/zpostselectinput.component'; \r\nimport { ZquerybuilderComponent } from './zquerybuilder/zquerybuilder.component';\r\nimport { ZreportComponent } from './zreport/zreport.component';\r\nimport { ZschedulerComponent } from './zscheduler/zscheduler.component';\r\nimport { ZselectmultipleComponent } from \"./zselectmultiple/zselectmultiple.component\";\r\nimport { ZtabComponent } from \"./ztab/ztab.component\";\r\nimport { ZtextComponent } from \"./ztext/ztext.component\";\r\nimport { ZtextareaComponent } from './ztextarea/ztextarea.component';\r\nimport { ZtexteditorComponent } from './ztexteditor/ztexteditor.component';\r\nimport { ZtreeComponent } from './ztree/ztree.component';\r\nimport { ZtreelistComponent } from './ztreelist/ztreelist.component';\r\nimport { ZtrendcardComponent } from './ztrendcard/ztrendcard.component';\r\nimport { ZunknownComponent } from \"./zunknown/zunknown.component\";\r\nimport { ZudfComponent } from './zudf/zudf.component';\r\nimport { ZuploadComponent } from './zupload/zupload.component';\r\nimport { ZworkflowbuttonsComponent } from \"./zworkflowbuttons/zworkflowbuttons.component\"; \r\n\r\n@NgModule({\r\n declarations: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\r\n ZGridPopupAnchorDirective,\r\n OpenOnFocusDirective,\r\n DateParserFilter, // zgrid addon\r\n EditorFilter, // zcode addon\r\n DivzLayout, // zdiv addon\r\n ExportOptions, // zreport addon\r\n TabFilter, // ztab addon\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon \r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent,\r\n UiactionbuttonComponent,\r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UivalidationmessageComponent, \r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n imports: [\r\n IonicModule,\r\n IonicSelectableModule,\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AceEditorModule,\r\n FontAwesomeModule,\r\n QueryBuilderModule,\r\n ArcGaugeModule,\r\n ButtonsModule,\r\n ChartsModule,\r\n CalendarModule,\r\n DateInputsModule,\r\n DropDownsModule,\r\n EditorModule,\r\n GridModule,\r\n ExcelModule,\r\n IndicatorsModule,\r\n IntlModule,\r\n InputsModule,\r\n SwitchModule,\r\n TextBoxModule,\r\n LabelModule,\r\n LayoutModule,\r\n PanelBarModule,\r\n TabStripModule,\r\n PopupModule,\r\n ProgressBarModule,\r\n TelerikReportingModule,\r\n SchedulerModule,\r\n TreeListModule,\r\n TreeViewModule,\r\n TooltipModule,\r\n UploadModule,\r\n UploadsModule,\r\n ZCoreModule,\r\n MmhglobalZmodalModule\r\n ],\r\n exports: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\r\n ZGridPopupAnchorDirective,\r\n OpenOnFocusDirective,\r\n DateParserFilter, // zdatetime addon\r\n EditorFilter, // zcode addon\r\n DivzLayout, // zdiv addon\r\n ExportOptions, // zreport addon\r\n TabFilter, // ztab addon\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon\r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent, \r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UiactionbuttonComponent,\r\n UivalidationmessageComponent,\r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n entryComponents: [\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon\r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent,\r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UiactionbuttonComponent,\r\n UivalidationmessageComponent,\r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n providers: [\r\n ModalService\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class MmhglobalDynamicformModule { }\r\n","/*\r\n * Public API Surface of dynamic-form\r\n */\r\n\r\n/********** Service **********/\r\nexport * from './lib/services/main.service';\r\n// export * from './lib/zmodal/modal.service';\r\n// export * from './lib/services/zcomponent.service';\r\n// export * from './lib/services/zcomponent.debug.service';\r\n\r\n\r\n/********** Directive **********/\r\nexport * from './lib/directives/scrollbar.theme.directive';\r\nexport * from './lib/directives/fieldelement.directive';\r\nexport * from './lib/zgrid/zgrid.binding.directive';\r\nexport * from './lib/zgrid/zgrid.popup.anchor-target.directive'\r\nexport * from './lib/zselectmultiple/zselectmultiple.directive';\r\n\r\n\r\n/********** Module **********/\r\nexport * from './lib/mmhglobal-dynamicform.module'; \r\n\r\n\r\n/********** Addon **********/\r\nexport * from './lib/zdatetime/dateParser.pipe';\r\nexport * from './lib/zcodeeditor/zcodeeditor.pipe';\r\nexport * from './lib/zdiv/zdiv.pipe';\r\nexport * from './lib/zreport/zreport.config';\r\nexport * from './lib/ztab/ztab.pipe';\r\n// export * from './lib/zmodal/zmodal.module';\r\nexport * from './lib/zgrid/date-range-cell-filter.component';\r\nexport * from './lib/zscheduler/zscheduler.toolbar.component';\r\n\r\n\r\n/********** zComponent **********/\r\nexport * from './lib/uicontent/uicontent.component';\r\nexport * from './lib/uiheader/uiheader.component';\r\nexport * from './lib/uipage/uipage.component';\r\nexport * from './lib/uimenucontent/uimenucontent.component';\r\nexport * from './lib/uimenubutton/uimenubutton.component';\r\nexport * from './lib/uiappmenucontent/uiappmenucontent.component';\r\nexport * from './lib/uiactionbutton/uiactionbutton.component';\r\nexport * from './lib/uivalidationmessage/uivalidationmessage.component';\r\nexport * from './lib/zbullet/zbullet.component';\r\nexport * from './lib/zbuttons/zbuttons.component';\r\nexport * from './lib/zcard/zcard.component';\r\nexport * from './lib/zchart/zchart.component';\r\nexport * from './lib/zcheckbox/zcheckbox.component';\r\nexport * from './lib/zchip/zchip.component';\r\nexport * from './lib/zcodeeditor/zcodeeditor.component';\r\nexport * from './lib/zdaterange/zdaterange.component';\r\nexport * from './lib/zdatetime/zdatetime.component';\r\nexport * from './lib/zdiv/zdiv.component';\r\nexport * from './lib/zform/zform.component';\r\nexport * from './lib/zformcontrol/zformcontrol.component';\r\nexport * from './lib/zgauge/zgauge.component';\r\nexport * from './lib/zgrid/zgrid.component';\r\nexport * from './lib/zimg/zimg.component';\r\nexport * from './lib/zkcard/zkcard.component';\r\nexport * from './lib/zlabel/zlabel.component';\r\nexport * from './lib/zmfb/zmfb.component';\r\nexport * from './lib/zmodal/zmodal.component';\r\nexport * from './lib/zmodal/zmodal-mobile.component';\r\nexport * from './lib/znumeric/znumeric.component';\r\nexport * from './lib/zpostselectinput/zpostselectinput.component';\r\nexport * from './lib/zquerybuilder/zquerybuilder.component';\r\nexport * from './lib/zreport/zreport.component';\r\nexport * from './lib/zscheduler/zscheduler.component';\r\nexport * from './lib/zselectmultiple/zselectmultiple.component';\r\nexport * from './lib/ztab/ztab.component';\r\nexport * from './lib/ztext/ztext.component';\r\nexport * from './lib/ztextarea/ztextarea.component';\r\nexport * from './lib/ztexteditor/ztexteditor.component';\r\nexport * from './lib/ztree/ztree.component';\r\nexport * from './lib/ztreelist/ztreelist.component';\r\nexport * from './lib/ztrendcard/ztrendcard.component';\r\nexport * from './lib/zudf/zudf.component';\r\nexport * from './lib/zunknown/zunknown.component';\r\nexport * from './lib/zupload/zupload.component';\r\nexport * from './lib/zworkflowbuttons/zworkflowbuttons.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ZComponentDebugService as ɵa} from './lib/services/zcomponent.debug.service';\nexport {ZComponentService as ɵb} from './lib/services/zcomponent.service';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmhglobal-dynamicform.js","sources":["../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.debug.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal-mobile.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/main.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/scrollbar.theme.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/fieldelement.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.binding.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.popup.anchor-target.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.config.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/date-range-cell-filter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.toolbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uipage/uipage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiheader/uiheader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uicontent/uicontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenucontent/uimenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenubutton/uimenubutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiappmenucontent/uiappmenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiactionbutton/uiactionbutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uivalidationmessage/uivalidationmessage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbullet/zbullet.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbuttons/zbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcard/zcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchart/zchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcheckbox/zcheckbox.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchip/zchip.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdaterange/zdaterange.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/zdatetime.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zform/zform.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgauge/zgauge.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zimg/zimg.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zkcard/zkcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zlabel/zlabel.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmfb/zmfb.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/znumeric/znumeric.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zpostselectinput/zpostselectinput.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zquerybuilder/zquerybuilder.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztext/ztext.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztextarea/ztextarea.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztexteditor/ztexteditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztree/ztree.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztreelist/ztreelist.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztrendcard/ztrendcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zudf/zudf.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zunknown/zunknown.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zupload/zupload.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zworkflowbuttons/zworkflowbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/zformcontrol/zformcontrol.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/mmhglobal-dynamicform.module.ts","../../../projects/mmhglobal-dynamicform/src/public-api.ts","../../../projects/mmhglobal-dynamicform/src/mmhglobal-dynamicform.ts"],"sourcesContent":["/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { BehaviorSubject, of, forkJoin, Observable } from 'rxjs';\r\nimport { tap, switchMap, map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AlertButton, AlertService, AuthService, FieldService, MESSAGETYPE,\r\n ResourceApiService, ToastService, WebApiService, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZTreeTemplateParams\r\n} from \"mmhglobal-zcore\";\r\nimport { MainService } from \"./main.service\";\r\nimport { ModalResponse } from 'mmhglobal-zmodal';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentDebugService {\r\n constructor(\r\n private router: Router,\r\n private alertService: AlertService,\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService\r\n ) {}\r\n\r\n private scope: any;\r\n private mainService: MainService;\r\n\r\n get debug(): any {\r\n return this.scope.group._debug;\r\n }\r\n\r\n get group(): ZGroup {\r\n return this.scope.group;\r\n }\r\n\r\n public onInitDebugger(group: ZGroup, mainService: MainService) {\r\n group._debug = new ZGroup(true);\r\n group._isDebugging = true;\r\n group._debug.zData = {\r\n collectedActivities: [],\r\n activityCount: 0,\r\n collectedWorkflowButtons: [],\r\n workflowButtonCount: 0\r\n };\r\n group._debug.zComponents = {};\r\n group.isListForm = false;\r\n this.mainService = mainService;\r\n }\r\n\r\n\r\n public onStartDebugger(fieldElements: Array<ZField>, me: any) {\r\n this.scope = me;\r\n if (!me.group._debug) {\r\n me.group._debug = {};\r\n }\r\n\r\n const d: ZGroup = me.group._debug;\r\n me.form = me.toFormGroup(fieldElements);\r\n d.form = me.form;\r\n if (me.subscription) {\r\n me.subscription.unsubscribe();\r\n }\r\n\r\n Object.assign(d, {\r\n // zData: { collectedActivities: [], activityCount: 0 },\r\n zModel: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n isEdit: true,\r\n isNew: false,\r\n _debug: me.group._debug,\r\n _group: me.group,\r\n resourceURL: this.resourceApiService.getURL('field'),\r\n treeItemTemplate: this.treeItemTemplate,\r\n onItemClick: this.onItemClick,\r\n onTreeNodeChange: this.onTreeNodeChange,\r\n onAddNode: this.onAddNode,\r\n onRemoveNode: this.onRemoveNode,\r\n treeNodesExpandAll: this.treeNodesExpandAll,\r\n treeNodesCollapseAll: this.treeNodesCollapseAll,\r\n refreshTreeModel: this.refreshTreeModel,\r\n addNode: this.addNode,\r\n refreshActivityLogData: this.LoadGridData.bind(this),\r\n GoToFieldElement: this.gotoFieldElement.bind(this),\r\n ListWatchName: this.listWatchName,\r\n onChangeWatchName: this.onChangeWatchName.bind(this),\r\n getWatchName: this.getWatchName.bind(this),\r\n fieldElementonEditorCodeChange: this.fieldElementonEditorCodeChange.bind(this),\r\n gridActivityLogColumnFields: this.fieldService.getFormFieldCode(\r\n 'debugActivityLog',\r\n \"FormField\",\r\n this.group,\r\n \"debugActivityLogField\"\r\n ),\r\n gridActivityLogOnItemClick: this.gridActivityLogOnItemClick.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n refreshWorkflowButtonData: this.loadWorkflowData.bind(this),\r\n gridWorkflowButtonColumnFields: this.fieldService.getFormFieldCode(\r\n 'debugWorkflowButton',\r\n 'FormField',\r\n this.group,\r\n \"debugWorkflowButtonField\"\r\n ),\r\n gridWorkflowButtonOnItemClick: this.gridWorkflowButtonOnItemClick.bind(this)\r\n });\r\n if (!d.zData) {\r\n d.zData = { collectedActivities: [], activityCount: 0 };\r\n }\r\n\r\n me.subscription = d.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, d, this)\r\n );\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, fieldElements, this.authService);\r\n return this.loadDebugZModel(me);\r\n }\r\n\r\n private loadDebugZModel(me: any) {\r\n const d: ZGroup = me.group._debug;\r\n\r\n const downloadList = [];\r\n downloadList.push(this.getProjectId());\r\n\r\n const formType = me.group.isListForm ? 'ListField' : 'FormField';\r\n const fieldName = me.group.fieldName;\r\n const fieldzModel = this.getFieldzModel(formType, fieldName);\r\n downloadList.push(fieldzModel);\r\n\r\n return forkJoin(downloadList);\r\n }\r\n\r\n private getProjectId() {\r\n const d = this.debug;\r\n const url = this.resourceApiService.getURL('projectsURL');\r\n return this.webApiService.getApi(url, {}, d.zData, 'ProjectOptions', null, d, false);\r\n }\r\n\r\n private getFieldzModel(type: string, activityName: string) {\r\n if (type === 'FormField') {\r\n return this.getFormFieldzModel(activityName);\r\n } else {\r\n return this.getListFieldzModel(activityName);\r\n }\r\n }\r\n\r\n private getFormFieldzModel(activityName: string) {\r\n const d: ZGroup = this.debug;\r\n const url = this.resourceApiService.getURL('field');\r\n return this.webApiService.httpGet$(url, { name: activityName, type: 'FormField' }).pipe(\r\n tap((respData: any) => {\r\n // console.log('respData: ', respData);\r\n Object.assign(d.zModel, respData);\r\n d.form.patchValue(d.zModel);\r\n d.form.markAsPristine();\r\n const fields = JSON.parse(d.zModel.Code);\r\n Object.assign(d, {\r\n treeModel: ZComponentHelper.convertTreeModel(fields)\r\n });\r\n })\r\n );\r\n }\r\n\r\n private getListFieldzModel(activityName: string) {\r\n const d = this.debug;\r\n const url = this.resourceApiService.getURL('fieldsMapping');\r\n const url2 = this.resourceApiService.getURL('field');\r\n return this.webApiService.httpGet$(url, { name: activityName }).pipe(\r\n switchMap((fieldMapping: any) => {\r\n // console.log('fieldMapping: ', fieldMapping);\r\n return this.webApiService.httpGet$(url2, { id: fieldMapping.FieldElementMasterId });\r\n }),\r\n tap((respData: any) => {\r\n Object.assign(d.zModel, respData);\r\n d.form.patchValue(d.zModel);\r\n d.form.markAsPristine();\r\n const fields = JSON.parse(d.zModel.Code);\r\n Object.assign(d, {\r\n treeModel: ZComponentHelper.convertTreeModel(fields)\r\n });\r\n })\r\n )\r\n }\r\n\r\n\r\n private subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n return;\r\n }\r\n // console.log(\"** Debug - SubjectEvent\", event);\r\n let callFunc;\r\n\r\n try {\r\n callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n me,\r\n event.target\r\n );\r\n // ZComponentHelper.getGroupValue(event.Target, group);\r\n } catch (error) {\r\n console.warn(\r\n \"Error when getGroupValue: \",\r\n event.target,\r\n \" > Error: \",\r\n error\r\n );\r\n }\r\n\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, group, me);\r\n } else if (typeof callFunc === \"string\") {\r\n if (event.type.endsWith(\"onNavigateTo\")) {\r\n const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n this.router.navigate([nUrl]);\r\n return;\r\n }\r\n\r\n if (event.type === \"zgrid-cellClick\") {\r\n // (callFunc.startsWith('edit')) { zgrid-cellClick\r\n const cName = callFunc.slice(4);\r\n // debugger;\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = cName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n\r\n // this.openModalForm(modalGroupParam);\r\n this.mainService.showzModal(event.columnFields$ || cName, group, '', {}, event.data.Id); // TODO\r\n }\r\n } else if (typeof callFunc === \"object\") {\r\n if (event.type === \"zgrid-cellClick\") {\r\n if (callFunc.navigateUrl) {\r\n const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = callFunc.ctrlName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n // modalGroupParam.formHeader = callFunc.formHeader;\r\n\r\n if (callFunc.formHeader) {\r\n // this.openModalForm(modalGroupParam);\r\n\r\n this.mainService.showzModal(event.columnFields$ || callFunc.ctrlName, group, callFunc.formHeader, {}, event.data.Id);\r\n return;\r\n }\r\n console.warn(\r\n \"Invalid callFunc type: \",\r\n callFunc,\r\n \" event.Target: \",\r\n event.target\r\n );\r\n }\r\n // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n event.target,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n private gridActivityLogOnItemClick(event: any) {\r\n // console.log('gridActivityLogOnItemClick: ', event);\r\n const rec = event.dataItem;\r\n switch (rec.type) {\r\n case 'ListField':\r\n case 'FormField':\r\n this.getFieldzModel(rec.type, rec.activityName).subscribe(() => {\r\n this.selectTab(0);\r\n });\r\n break;\r\n case 'ResourceServerAPI':\r\n const watchNameValue = '_debug.zData.collectedActivities[' + (rec.index - 1) + '].reference';\r\n this.setWatchNameValue(watchNameValue);\r\n this.selectTab(1);\r\n break;\r\n case 'HttpGet$':\r\n case 'HttpPost$':\r\n case 'HttpPut$':\r\n case 'HttpDelete$':\r\n this.setWatchNameValue('_debug.zData.collectedActivities[' + (rec.index - 1) + ']');\r\n this.selectTab(1);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private selectTab(index: number) {\r\n // debugger;\r\n // this.debug.zComponents[\"ztab_debuggerTabs\"].state.lastSelectedTabIndex = index;\r\n // ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').state.lastSelectedTabIndex = index;\r\n ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').selectTab(index);\r\n }\r\n\r\n private setWatchNameValue(newValue: string) {\r\n this.debug.zModel['DebugWatchName'] = newValue;\r\n ZComponentHelper.setModelValue('WatchName', newValue, this.debug, true);\r\n }\r\n\r\n public LoadGridData() {\r\n const activityLogGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_ActivityLogGrid');\r\n if (activityLogGrid) {\r\n activityLogGrid.setData(this.debug.zData.collectedActivities);\r\n }\r\n }\r\n\r\n private listWatchName(component: IonicSelectableComponent, searchText: string, pageNo: number,\r\n me: any, dataItem: any, recordId?: string) {\r\n\r\n const watchList = [\r\n { Name: 'group.zModel' },\r\n { Name: 'group.zData' },\r\n { Name: 'group.fields' },\r\n { Name: 'group.form.value' },\r\n { Name: 'group.backNavigationPage' },\r\n { Name: 'group.parentReferenceField' },\r\n { Name: 'group.parentReferenceId' },\r\n { Name: 'Object.keys(group.zComponents)' },\r\n { Name: 'group.gridOptions.zgrid.grid.data' }\r\n // { Name: 'Object.keys(_debug.zComponents)' },\r\n // { Name: '_debug.zModel' },\r\n // { Name: '_debug.zData' },\r\n // { Name: '_debug.zData.collectedActivities' },\r\n ];\r\n\r\n let results;\r\n if (searchText) {\r\n results = watchList.filter((s) => s.Name.toLowerCase().indexOf(searchText.toLowerCase()) !== -1);\r\n }\r\n\r\n if (pageNo === 0 && searchText) {\r\n return of({ dataSet: results });\r\n } else if (pageNo === 0) {\r\n return of({ dataSet: watchList });\r\n } else {\r\n return of({ dataSet: [] });\r\n }\r\n }\r\n\r\n private getWatchName() {\r\n return this.debug.zModel.DebugWatchName;\r\n }\r\n\r\n private onChangeWatchName(event: any, group: ZGroup, me: any) {\r\n // console.log('onChangeWatchName: ', event.data.value);\r\n const newValue = event.data.value;\r\n if (newValue) {\r\n this.debug.zModel['DebugWatchName'] = newValue.replace('group', '_group');\r\n }\r\n }\r\n\r\n private fieldElementonEditorCodeChange(el: ZComponentOutputEvent) {\r\n this.refreshTreeModel();\r\n }\r\n\r\n\r\n private treeNodesExpandAll() {\r\n this.debug.zComponents['ztree_debugZTree'].expandAll();\r\n }\r\n\r\n private treeNodesCollapseAll() {\r\n this.debug.zComponents['ztree_debugZTree'].collapseAll();\r\n }\r\n\r\n private refreshTreeModel() {\r\n try {\r\n const d = JSON.parse(this.debug.zModel.Code);\r\n // this._addNodesToTree(d);\r\n // group['treeModel'] = this.convertTreeModel(d);\r\n this.debug['treeModel'] = ZComponentHelper.convertTreeModel(d);\r\n } catch {\r\n debugger;\r\n }\r\n }\r\n\r\n private treeItemTemplate(el: ZTreeTemplateParams) {\r\n const getFieldValue = (item: any) => {\r\n if (typeof item._DataValue === \"string\") {\r\n return item._DataValue;\r\n }\r\n return \"...\";\r\n };\r\n return (\r\n el.dataItem.Name +\r\n \" - [\" +\r\n el.dataItem.Type +\r\n \"] = \" +\r\n getFieldValue(el.dataItem)\r\n );\r\n }\r\n\r\n async onItemClick(event: ZComponentOutputEvent) {\r\n // debugger;\r\n console.log(\"onItemClick data received: \", event);\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvEditFieldNodeForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n const dataItem = Object.assign({}, event.data);\r\n dataItem.Value = dataItem._DataValue;\r\n delete dataItem._DataValue;\r\n const zmodel = {\r\n nodeModel: JSON.stringify(dataItem, null, 2)\r\n };\r\n const modal = await this.mainService.showzModal(modalFields, this.debug._group, 'Field Element Info', zmodel);\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n const newData = JSON.parse(modalData.data.nodeModel);\r\n if (newData.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n this.updateTreeNode(newData, this.debug['treeModel'], event.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n this.updateModel();\r\n // this.mainService.updateModel(null, this.debug);\r\n });\r\n }\r\n\r\n private updateTreeNode(newNode: any, treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.updateTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n if (treeModel[+treeIndex[0]].Value) {\r\n newNode.Value = treeModel[+treeIndex[0]].Value;\r\n }\r\n treeModel[+treeIndex[0]] = newNode;\r\n }\r\n }\r\n\r\n\r\n\r\n private insertTreeNode(newNode: any, treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.insertTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n if (treeIndex[0]) {\r\n if (!Array.isArray(treeModel[+treeIndex[0]].Value)) {\r\n treeModel[+treeIndex[0]].Value = [];\r\n }\r\n treeModel[+treeIndex[0]].Value.push(newNode);\r\n } else {\r\n treeModel.push(newNode);\r\n }\r\n }\r\n }\r\n\r\n private removeTreeNode(treeModel: any, index: string) {\r\n const treeIndex = index.split(\"_\");\r\n if (treeIndex.length > 1) {\r\n const newIndex = treeIndex.slice(1).join(\"_\");\r\n this.removeTreeNode(treeModel[+treeIndex[0]].Value, newIndex);\r\n } else {\r\n treeModel.splice(+treeIndex[0], 1);\r\n }\r\n }\r\n\r\n private onTreeNodeChange(el: ZComponentOutputEvent) {\r\n console.log(\"onTreeNodeChange: \", el);\r\n const codeData = JSON.stringify(el.data);\r\n ZComponentHelper.setModelValue(\"Code\", codeData, this.debug);\r\n }\r\n\r\n private addNode() {\r\n const el: ZComponentOutputEvent = {\r\n data: {},\r\n rowData: {},\r\n event: \"\",\r\n target: \"\",\r\n type: \"\",\r\n columnFields$: null\r\n };\r\n this.onAddNode(el);\r\n }\r\n\r\n private async onAddNode(el: ZComponentOutputEvent) {\r\n console.log('onAddNode is called', el);\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvEditFieldNodeForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n // const dataItem = Object.assign({}, el.data);\r\n // dataItem.Value = dataItem._DataValue;\r\n // delete dataItem._DataValue;\r\n const initialModel = {\r\n Name: 'Name', DisplayName: 'Name', Value: 'Name', Type: 'text',\r\n gridColVisible: true,\r\n width: 150,\r\n minWidth: 100,\r\n enableFiltering: true,\r\n enableSorting: true,\r\n pinnedLeft: false,\r\n PlaceHolder: \"Name\",\r\n IsRequired: false,\r\n MinLength: 2,\r\n MaxLength: 50,\r\n Label: \"Name:\",\r\n DivClass: \"col-xs-12 col-sm-6 col-md-6 col-lg-3\",\r\n ReadOnly: false,\r\n ShowLabel: true,\r\n Visible: true,\r\n //EnableHiding: true,\r\n //cellFilter: \"\",\r\n //filterCellFiltered: false,\r\n //enablePinning: true,\r\n //pinnedRight: false,\r\n //UpdateOnBlur: true,\r\n //AppendDivClearFix: false,\r\n };\r\n const zmodel = {\r\n nodeModel: JSON.stringify(initialModel, null, 2)\r\n };\r\n\r\n // const modal: HTMLIonModalElement = await this.mainService.openModalForm(modalGroupParam);\r\n const modal = await this.mainService.showzModal(modalFields, this.debug, 'Add Field Element Item', zmodel);\r\n\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n const newData = JSON.parse(modalData.data.nodeModel);\r\n if (newData.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n this.insertTreeNode(newData, this.debug[\"treeModel\"], el.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n this.updateModel();\r\n // this.mainService.updateModel(null, this.debug);\r\n });\r\n }\r\n\r\n private onRemoveNode(el: ZComponentOutputEvent) {\r\n this.alertService.show('Remove Node', 'Are you sure?',\r\n [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ])\r\n .subscribe(reply => {\r\n if (reply === 'Yes') {\r\n console.log('Remove Node', el);\r\n this.removeTreeNode(this.debug[\"treeModel\"], el.event);\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n }\r\n });\r\n }\r\n\r\n private gotoFieldElement() {\r\n this.router.navigate(['admin/field']);\r\n }\r\n\r\n private updateModel() {\r\n const debug = this.debug;\r\n const fg = this.debug.form as FormGroup;\r\n if (!fg.dirty) {\r\n console.warn(\"Debug Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n console.warn(\"Debug Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(debug.zModel)\r\n .pipe(\r\n // switchMap(zmodel => {\r\n // console.log(\"Before update, zModel:\", zmodel);\r\n // return this.beforeUpdateModel(group);\r\n // }),\r\n tap(() => {\r\n Object.assign(debug.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n return this.webApiService.httpPut$(\r\n debug.resourceURL + \"/\" + debug.zModel.Id,\r\n debug.zModel\r\n )\r\n .pipe(\r\n map(res => this.handleSuccess(res, \"Record is updated successfully.\")),\r\n );\r\n }),\r\n switchMap((zmodel: any) => {\r\n console.log(\"After Debug Form updated, zModel:\", zmodel);\r\n if (zmodel && zmodel.Data) {\r\n Object.assign(debug.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n }\r\n fg.markAsPristine();\r\n // this.afterUpdateModel(group);\r\n return of([]);\r\n }))\r\n .subscribe();\r\n }\r\n\r\n\r\n // ******************** Workflow Button ********************\r\n public loadWorkflowData() {\r\n const zgrid_WorkflowButtonGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_WorkflowButtonGrid');\r\n if (zgrid_WorkflowButtonGrid) {\r\n zgrid_WorkflowButtonGrid.setData(this.debug.zData.collectedWorkflowButtons);\r\n }\r\n }\r\n\r\n private gridWorkflowButtonOnItemClick(event: any) {\r\n const dataItem = Object.assign({}, event.dataItem);\r\n const field = dataItem.refField;\r\n const attribute = dataItem.refAttribute;\r\n\r\n // Get Mapped Info\r\n const params = new HttpParams()\r\n .set(\"ButtonId\", field.Id);\r\n this.webApiService.httpPost$(this.resourceApiService.getURL(\"e1wfs_wfc_getmappedButtonInfoURL\"), params).pipe(\r\n map(async res => {\r\n let roleInfo = [];\r\n let statusInfo = [];\r\n let parentStatusInfo = [];\r\n\r\n if (res.MappedRoleList) {\r\n roleInfo = res.MappedRoleList;\r\n }\r\n\r\n if (res.MappedStatusList) {\r\n res.MappedStatusList.forEach((_status: any) => {\r\n statusInfo.push(_status.Name + ' (' + _status.Code + ')');\r\n });\r\n }\r\n\r\n if (res.MappedParentStatusList) {\r\n res.MappedParentStatusList.forEach((_parentStatus: any) => {\r\n parentStatusInfo.push(_parentStatus.Name + ' (' + _parentStatus.Code + ')');\r\n });\r\n }\r\n\r\n const _mappedInfo = {\r\n 'mappedRoleInfo': roleInfo.length > 0 ? roleInfo : 'N.A.',\r\n 'mappedStatusInfo': statusInfo.length > 0 ? statusInfo : 'N.A.',\r\n 'mappedParentStatusInfo': parentStatusInfo.length > 0 ? parentStatusInfo : 'N.A.'\r\n };\r\n\r\n // retreive all important info\r\n const _buttonInfo = {\r\n 'WorkflowId': field.WorkflowId,\r\n 'ButtonId': field.Id,\r\n 'ButtonName': field.Name,\r\n 'ButtonCode': field.Code,\r\n 'ButtonTypeId': field.Type.Id,\r\n 'ButtonTypeName': field.Type.Name,\r\n 'ButtonTypeCode': field.Type.Code,\r\n 'ButtonVisible': attribute.Visible,\r\n 'ButtonClickEvent': attribute.ClickEvent,\r\n 'ButtonURL': attribute.URL,\r\n 'ButtonIcon': attribute.Icon\r\n };\r\n\r\n let _gotoStatusInfo = {\r\n 'GotoStatusId': 'N.A.',\r\n 'GotoStatusName': 'N.A.',\r\n 'GotoStatusCode': 'N.A.'\r\n };\r\n\r\n if (field.Status) {\r\n const _gotoStatus = field.Status\r\n _gotoStatusInfo = {\r\n 'GotoStatusId': _gotoStatus.Id,\r\n 'GotoStatusName': _gotoStatus.Name,\r\n 'GotoStatusCode': _gotoStatus.Code\r\n }\r\n }\r\n\r\n const propertiesModel = Object.assign(_buttonInfo, _gotoStatusInfo, _mappedInfo);\r\n\r\n const modalFields = this.fieldService.getFormFieldCode(\r\n \"mvWorkflowButtonDebugForm\",\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n const modal = await this.mainService.showzModal(modalFields, this.debug._group, 'Workflow Button Info', propertiesModel);\r\n modal.subscribe((modalData: ModalResponse) => {\r\n if (modalData.responseType === \"cancel\") {\r\n return;\r\n }\r\n });\r\n })\r\n ).subscribe();\r\n }\r\n\r\n\r\n handleSuccess(res: Response | any, successMsg: string): Response {\r\n if (res == null) {\r\n this.toastService.show(successMsg);\r\n } else if (res.Data !== undefined && res.ProcessingStatus !== undefined) {\r\n if (res.ProcessingStatus === true) {\r\n if (Array.isArray(res.Data)) {\r\n res.Data.map(s => this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success,\r\n `${successMsg} : ${s.CostCode}`, null));\r\n } else {\r\n this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success, successMsg, null);\r\n }\r\n }\r\n } else {\r\n this.toastService.show(successMsg);\r\n }\r\n return res;\r\n }\r\n\r\n handleError(res: any): Observable<any> {\r\n return this.webApiService.handleError(res);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable } from \"rxjs\";\r\nimport { DialogContentBase, DialogRef } from '@progress/kendo-angular-dialog';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZGroup, ModalPageParams,\r\n WebApiService, AlertService, ZCoreService, FieldService, ResourceApiService,\r\n ZComponentHelper, ZComponentOutputEvent\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper, ModalResponse } from 'mmhglobal-zmodal';\r\n\r\n\r\n@Component({\r\n selector: 'app-zmodal',\r\n templateUrl: './zmodal.component.html',\r\n styleUrls: ['./zmodal.component.scss'],\r\n})\r\nexport class ZmodalComponent extends DialogContentBase implements OnInit, OnDestroy {\r\n @Input() modalParams: ModalPageParams;\r\n\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n backButtonSubscription: Subscription;\r\n\r\n constructor( \r\n public dialog: DialogRef,\r\n private modalCtrl: ModalController,\r\n private zcoreService: ZCoreService,\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private fieldService: FieldService,\r\n private platform: Platform,\r\n private alertService: AlertService\r\n\r\n ) {\r\n super(dialog);\r\n }\r\n\r\n // get modalGroup() {\r\n // return this.group;\r\n // }\r\n\r\n ngOnInit() {\r\n ZmodalHelper.onInit_ModalForm(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n ZmodalHelper.onDestroy_ModalForm(this);\r\n }\r\n\r\n onCancel(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onCancel(this, event);\r\n // this.dialog.close();\r\n }\r\n\r\n onConfirm(event: ZComponentOutputEvent) {\r\n ZmodalHelper.onConfirm(this, event);\r\n // const fg = this.group.form as FormGroup;\r\n // if (!this.group.form) {\r\n // return;\r\n // }\r\n\r\n // if (!fg.dirty) {\r\n // console.warn('Form is not dirty hence modalform record is not saved.');\r\n // this.onCancel();\r\n // return;\r\n // }\r\n\r\n // if (!fg.valid) {\r\n // const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\r\n // }\r\n\r\n // Object.assign(this.group.zModel, fg.value);\r\n // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n // if (ZComponentHelper.isMobileScreen()) {\r\n // this.modalCtrl.dismiss(event.data, \"confirm\");\r\n // } else {\r\n // this.dialog.close(event.data);\r\n // }\r\n }\r\n\r\n onInitClose(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onInitClose(this,event);\r\n }\r\n\r\n isSITEnvironment() {\r\n return this.zcoreService.isDebugSession();\r\n }\r\n\r\n\r\n // to serve actionButton at formHeader\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n // const target = event.target.replace('modalGroup.', 'group.');\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const fg = this.group.form as FormGroup;\r\n Object.assign(this.group.zModel, fg.value);\r\n event.data = this.group.zModel;\r\n if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalClose') || event.target.startsWith('modalGroup.modalCancel')) {\r\n const newFunc = callFunc.bind(this);\r\n newFunc(event);\r\n } else {\r\n const newFunc = callFunc.bind(group.ctrlScope);\r\n newFunc(event);\r\n }\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n callFunc,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n getModel$(group: any, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n if (!this.isMobileScreen) {\r\n return {\r\n \"height.px\": 500,\r\n \"width.px\": 700\r\n };\r\n }\r\n return;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n// import { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\n// import { switchMap, tap } from \"rxjs/operators\";\r\nimport { Subscription, of, BehaviorSubject, Observable, fromEvent } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\n// import { FieldService } from \"../mmhglobal-zcore/field.service\";\r\n// import { ResourceApiService } from \"../mmhglobal-zcore/resourceapi.service\";\r\nimport {\r\n WebApiService, ModalPageParams,\r\n ZGroup, ZCoreService, ZComponentHelper, ZComponentOutputEvent, FieldService,\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper } from 'mmhglobal-zmodal';\r\n\r\n\r\n@Component({\r\n selector: \"app-zmodal\",\r\n templateUrl: \"./zmodal.component.html\",\r\n styleUrls: [\"./zmodal.component.scss\"]\r\n})\r\nexport class ZmodalMobileComponent implements OnInit, OnDestroy {\r\n @Input() modalParams: ModalPageParams;\r\n\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n backButtonSubscription: Subscription;\r\n\r\n constructor(\r\n private webApiService: WebApiService,\r\n private zcoreService: ZCoreService,\r\n private fieldService: FieldService // Use in mmhglobal-zmodal.helper\r\n ) {\r\n }\r\n\r\n // get modalGroup() {\r\n // return this.group;\r\n // }\r\n\r\n ngOnInit() {\r\n ZmodalHelper.onInit_ModalForm(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n ZmodalHelper.onDestroy_ModalForm(this);\r\n }\r\n\r\n onCancel(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onCancel(this, event);\r\n // this.modalCtrl.dismiss(null, \"cancel\");\r\n }\r\n\r\n onConfirm(event: ZComponentOutputEvent) {\r\n ZmodalHelper.onConfirm(this, event);\r\n // const fg = this.group.form as FormGroup;\r\n // if (!this.group.form) {\r\n // return;\r\n // }\r\n\r\n // if (!fg.dirty) {\r\n // console.warn('Form is not dirty hence modalform record is not saved.');\r\n // this.onCancel();\r\n // return;\r\n // }\r\n\r\n // if (!fg.valid) {\r\n // const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\r\n // }\r\n\r\n // // Object.assign(this.group.zModel, fg.value);\r\n // // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n // // if (ZComponentHelper.isMobileScreen()) {\r\n // this.modalCtrl.dismiss(event.data, \"confirm\");\r\n // // } else {\r\n // // this.dialog.close(event.data);\r\n // // }\r\n }\r\n\r\n onInitClose(event?: ZComponentOutputEvent) {\r\n ZmodalHelper.onInitClose(this, event);\r\n }\r\n\r\n // to serve actionButton at formHeader\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n // const target = event.target.replace('modalGroup.', 'group.');\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const fg = this.group.form as FormGroup;\r\n Object.assign(this.group.zModel, fg.value);\r\n event.data = this.group.zModel;\r\n if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalCancel')) {\r\n const newFunc = callFunc.bind(this);\r\n newFunc(event);\r\n } else {\r\n const newFunc = callFunc.bind(group.ctrlScope);\r\n newFunc(event);\r\n }\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n callFunc,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n getModel$(group: any, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n if (!this.isMobileScreen) {\r\n return {\r\n \"height.px\": 500,\r\n \"width.px\": 700\r\n };\r\n }\r\n return;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isSITEnvironment() {\r\n return this.zcoreService.isDebugSession();\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, NavController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { Observable, BehaviorSubject, Subscription, of, from } from 'rxjs';\r\nimport { tap, switchMap, take, map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AlertButton, MESSAGETYPE, ModalPageParams,\r\n AlertService, CacheService, FieldService, ResourceApiService, ToastService, WebApiService,\r\n ZComponentHelper, ZComponentOutputEvent, ZComponentSize, ZCoreService, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\nimport { ModalService, ModalResponse } from 'mmhglobal-zmodal';\r\n// import { ModalService } from '../zmodal/modal.service';\r\nimport { ZComponentDebugService } from './zcomponent.debug.service';\r\nimport { ZmodalComponent } from '../zmodal/zmodal.component';\r\nimport { ZmodalMobileComponent } from '../zmodal/zmodal-mobile.component';\r\nimport { ZGrid } from '../zgrid/zgrid.component';\r\n// import { ZmodalPage } from '../zmodal/zmodal.page';\r\n\r\n// import { ZComponentHelper, ZComponentOutputEvent, ModalPageParams, ZGrid } from '../dynamicform/zcomponent.model';\r\n// import { ZGroup, ZField } from '../model/zgroup.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MainService {\r\n private group: ZGroup;\r\n private oauthEnvironmentUrl: string;\r\n\r\n constructor(\r\n private router: Router,\r\n private modalCtrl: ModalController,\r\n private navController: NavController,\r\n private alertService: AlertService,\r\n private cacheService: CacheService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService,\r\n private zcoreService: ZCoreService,\r\n private modalService: ModalService,\r\n private debugService: ZComponentDebugService\r\n ) {\r\n console.log('MainService constructor');\r\n this.oauthEnvironmentUrl = this.zcoreService.getEnvironment().e1OauthUrl + '/';\r\n }\r\n\r\n startUp() {\r\n console.log('At main.service (StartUp) ...');\r\n }\r\n\r\n setGroup(group: ZGroup) {\r\n this.group = group;\r\n this.fieldService.setGroup(group);\r\n this.resourceApiService.setGroup(group);\r\n this.webApiService.setGroup(group);\r\n const isDebugging = this.zcoreService.isDebugSession() || false;\r\n if (isDebugging) {\r\n this.debugService.onInitDebugger(group, this);\r\n }\r\n }\r\n\r\n getResourceServerData() {\r\n return this.resourceApiService.loadData();\r\n }\r\n\r\n getGroupFields(\r\n ctrlName: string,\r\n formType: \"ListField\" | \"FormField\",\r\n group: ZGroup,\r\n propertyName: string\r\n ) {\r\n return this.fieldService.getFormFieldCode(\r\n ctrlName,\r\n formType,\r\n group,\r\n propertyName\r\n );\r\n }\r\n\r\n initializeGroup(\r\n group: ZGroup,\r\n ctrlName: string,\r\n pageName: string,\r\n me: any\r\n ): Subscription {\r\n if (me.subscription) {\r\n me.subscription.unsubscribe();\r\n }\r\n const resourceName = group.resourceURLName || ctrlName;\r\n group.resourceURLName = resourceName;\r\n\r\n Object.assign(group, {\r\n resourceURL: this.resourceApiService.getURL(resourceName),\r\n gridColumnFields: this.fieldService.getFormFieldCode(\r\n ctrlName,\r\n \"FormField\",\r\n null,\r\n null\r\n ),\r\n ctrlScope: me,\r\n pageName,\r\n ctrlName,\r\n // createModelURL: \"/create\" + ctrlName.toLowerCase(),\r\n editModelURL: ctrlName.toLowerCase(),\r\n // listModelURL: \"/list\" + ctrlName.toLowerCase(),\r\n // formHeader: \"...\",\r\n isLoading: true,\r\n fields: [],\r\n zModel: {},\r\n zComponents: {},\r\n zData: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n // form: null as FormGroup, // removed for bug fix.\r\n cancelButtonName: \"Close\",\r\n zButtonsCount: 0,\r\n // topRightActionButton: [],\r\n // onAction: this.onAction.bind(this),\r\n backNavigation: this.backNavigation.bind(this),\r\n historyBack: this.historyBack.bind(this),\r\n refreshPage: this.refreshPage,\r\n refreshGrid: this.refreshGrid.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n createModel: this.createModel.bind(this),\r\n cloneNewModel: this.cloneNewModel.bind(this),\r\n deleteModel: this.deleteModel.bind(this),\r\n newModel: this.newModel.bind(this),\r\n // _isDebugging: environment.debugSession || false,\r\n // _debug: {\r\n // zData: { collectedActivities: [], activityCount: 0 }\r\n // }\r\n // afterGetModelSuccess: null,\r\n // beforeUpdateModel: null,\r\n // isEdit: false\r\n });\r\n\r\n me.subscription = group.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, group, me)\r\n );\r\n\r\n return me.subscription;\r\n }\r\n\r\n getModel$(group: ZGroup, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService\r\n .httpGet$(group.resourceURL + \"/\" + recId, null)\r\n .pipe(\r\n tap((zmodel) => {\r\n group.zModel = zmodel;\r\n if (\r\n group.parentReferenceField &&\r\n Object.keys(zmodel).indexOf(group.parentReferenceField) !== -1 &&\r\n !group.backNavigationPage.endsWith(\".edit\")\r\n ) {\r\n group.backNavigationPage =\r\n group.backNavigationPage +\r\n \"/\" +\r\n zmodel[group.parentReferenceField].toString() +\r\n \"/edit\";\r\n }\r\n }),\r\n switchMap(() => {\r\n if (group.afterGetModelSuccess) {\r\n return this.afterGetModelSuccess(group);\r\n }\r\n return of([]);\r\n })\r\n );\r\n }\r\n\r\n canExit(form: FormGroup): boolean | Observable<boolean> {\r\n if (!form || !form.dirty) {\r\n return true;\r\n }\r\n\r\n if (form['skipDirtyCheck']) {\r\n return true;\r\n }\r\n\r\n return this.alertService\r\n .show(\"Data not save yet\", \"Are you sure want to discard the changes?\", [\r\n \"Cancel\",\r\n \"Discard Changes\",\r\n ])\r\n .pipe(\r\n switchMap((reply) => {\r\n if (reply === \"Discard Changes\") {\r\n return of(true);\r\n }\r\n return of(false);\r\n })\r\n );\r\n // const replySub = new Subject<boolean>();\r\n // this.alertCtrl\r\n // .create({\r\n // header: \"Data not save yet\",\r\n // // subHeader: 'SubHeader statement here',\r\n // message: \"Are you sure want to discard the changes?\",\r\n // buttons: [\r\n // {\r\n // text: \"Cancel\",\r\n // role: \"cancel\",\r\n // cssClass: \"secondary\",\r\n // handler: () => {\r\n // replySub.next(false);\r\n // }\r\n // },\r\n // {\r\n // text: \"Discard Changes\",\r\n // cssClass: \"warning\",\r\n // handler: () => {\r\n // replySub.next(true);\r\n // }\r\n // }\r\n // ]\r\n // })\r\n // .then(alertElement => {\r\n // alertElement.present();\r\n // });\r\n // return replySub.asObservable().pipe(take(1));\r\n }\r\n\r\n // async openModalForm(modalParams: ModalPageParams) {\r\n // // console.log(\"openModalForm\");\r\n // console.error(\r\n // \"Please use ModalService.show instead of MainService.openModalForm!\"\r\n // );\r\n // // const modal = this.modalService.show(modalParams.colFields$ || modalParams.controllerName, modalParams.parentGroup,\r\n // // modalParams.formHeader, modalParams.zModel, modalParams.referId);\r\n // const modal = await this.modalCtrl.create({\r\n // component: ZmodalPage,\r\n // backdropDismiss: true,\r\n // componentProps: {\r\n // modalParams,\r\n // },\r\n // });\r\n // modal.present();\r\n // return modal;\r\n // // .onWillDismiss((zmodel: any) => {\r\n // // this.\r\n // // });\r\n // }\r\n\r\n closeModalForm() {\r\n this.modalCtrl.dismiss();\r\n }\r\n\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n let callFunc;\r\n\r\n try {\r\n callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n group.ctrlScope,\r\n event.target,\r\n group\r\n );\r\n // ZComponentHelper.getGroupValue(event.Target, group);\r\n } catch (error) {\r\n console.warn(\r\n \"Error when getGroupValue: \",\r\n event.target,\r\n \" > Error: \",\r\n error\r\n );\r\n }\r\n\r\n // callFunc(event);\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, group, me);\r\n } else if (typeof callFunc === \"string\") {\r\n if (event.type.endsWith(\"onNavigateTo\")) {\r\n const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n this.router.navigate([nUrl]);\r\n return;\r\n }\r\n\r\n if (event.type === \"zgrid-cellClick\") {\r\n // (callFunc.startsWith('edit')) { zgrid-cellClick\r\n const cName = callFunc.slice(4);\r\n // // debugger;\r\n // const modalGroupParam: ModalPageParams = {};\r\n // modalGroupParam.controllerName = cName;\r\n // modalGroupParam.referId = event.data.Id;\r\n // modalGroupParam.colFields$ = event.columnFields$;\r\n // modalGroupParam.parentGroup = me.group;\r\n\r\n // this.openModalForm(modalGroupParam);\r\n this.modalService.show(\r\n event.columnFields$ || cName,\r\n group,\r\n \"\",\r\n {},\r\n event.data.Id\r\n );\r\n }\r\n } else if (typeof callFunc === \"object\") {\r\n if (event.type === \"zgrid-cellClick\") {\r\n if (callFunc.navigateUrl) {\r\n const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n\r\n const modalGroupParam: ModalPageParams = {};\r\n modalGroupParam.controllerName = callFunc.ctrlName;\r\n modalGroupParam.referId = event.data.Id;\r\n modalGroupParam.colFields$ = event.columnFields$;\r\n modalGroupParam.parentGroup = me.group;\r\n modalGroupParam.formHeader = callFunc.formHeader;\r\n\r\n if (callFunc.formHeader) {\r\n // this.openModalForm(modalGroupParam);\r\n this.modalService.show(\r\n event.columnFields$ || callFunc.ctrlName,\r\n group,\r\n callFunc.formHeader,\r\n {},\r\n event.data.Id\r\n );\r\n return;\r\n }\r\n console.warn(\r\n \"Invalid callFunc type: \",\r\n callFunc,\r\n \" event.Target: \",\r\n event.target\r\n );\r\n }\r\n // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n event.target,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n handleSuccess(res: Response | any, successMsg: string): Response {\r\n this.group.isTriggered = false;\r\n\r\n if (res) {\r\n if (res.ProcessingStatus) {\r\n this.webApiService.showHttpResponseMessage(\r\n MESSAGETYPE.Success,\r\n successMsg,\r\n null\r\n );\r\n }\r\n return res;\r\n }\r\n }\r\n\r\n handleError(res: any): Observable<any> {\r\n this.group.isTriggered = false;\r\n return this.webApiService.handleError(res);\r\n }\r\n\r\n private backNavigation(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (group.beforeBackNavigationPage) {\r\n group.beforeBackNavigationPage(group).subscribe(() => {\r\n group['isTriggered'] = false;\r\n this.router.navigate([group.backNavigationPage]);\r\n\r\n //if (group['reload']) {\r\n // group['isTriggered'] = false;\r\n // this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n // return false;\r\n // }\r\n // this.router.onSameUrlNavigation = 'reload';\r\n //}\r\n //this.router.navigate([group.backNavigationPage],);\r\n })\r\n }\r\n else {\r\n group['isTriggered'] = false;\r\n \r\n //this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n // return false;\r\n //}\r\n //this.router.onSameUrlNavigation = 'reload';\r\n\r\n this.router.navigate([group.backNavigationPage]);\r\n }\r\n }\r\n\r\n private historyBack() {\r\n this.group.isTriggered = false;\r\n this.navController.pop();\r\n }\r\n\r\n public refreshGrid(\r\n event: ZComponentOutputEvent,\r\n group: ZGroup,\r\n me: any,\r\n gridOptionName?: string\r\n ) {\r\n gridOptionName = gridOptionName || \"gridOptions\";\r\n if (event && event.target) {\r\n const gridOption = event.target\r\n .trim()\r\n .replace(\"(\", \"\")\r\n .replace(\")\", \"\")\r\n .replace(\"group.refreshGrid\", \"\");\r\n if (gridOption.length > 0) {\r\n gridOptionName = gridOption;\r\n }\r\n }\r\n\r\n const zgridControl = group[gridOptionName] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group['isTriggered'] = false;\r\n }\r\n\r\n private refreshPage() {\r\n if (this.group) {\r\n this.group.isTriggered = false;\r\n }\r\n location.reload();\r\n // this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n // this.router.onSameUrlNavigation = 'reload';\r\n // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n // this.router.navigate(['/crm/customer']);\r\n }\r\n\r\n getCloneNewCacheZModel(group: ZGroup) {\r\n const cacheZModel = this.cacheService.getCache(\"cloneNewModel\");\r\n if (cacheZModel) {\r\n this.cacheService.clearCache(\"cloneNewModel\");\r\n group.zModel = cacheZModel;\r\n group.zModel.Id = 0;\r\n }\r\n group.isTriggered = false;\r\n }\r\n\r\n private newModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n of([])\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before new, zModel:\", zmodel);\r\n return this.beforeNewModel(_group);\r\n }),\r\n tap(() => {\r\n const referenceId = group.parentReferenceId || \"0\";\r\n console.log(\"current url: \", this.router.url);\r\n const pathSegment = this.router.url.split(\"/\");\r\n const lastSegment = pathSegment[pathSegment.length - 1];\r\n if (lastSegment === \"edit\") {\r\n const newPath = pathSegment.slice(0, pathSegment.length - 2);\r\n newPath.push(referenceId);\r\n newPath.push(\"new\");\r\n const cacheZModel = this.cacheService.getCache(\"cloneNewModel\");\r\n if (!cacheZModel) {\r\n // Skip if it CloneNew\r\n this.router.navigateByUrl(this.group.backNavigationPage, { skipLocationChange: true }).then(() => {\r\n this.group.zModel = {};\r\n this.group.isEdit = false;\r\n this.group.isNew = true;\r\n this.group.isTriggered = false;\r\n this.router.navigate(newPath);\r\n });\r\n }\r\n else {\r\n this.router.navigate(newPath);\r\n }\r\n } else if (lastSegment === \"new\") {\r\n group.zModel = {};\r\n group.form.reset();\r\n //group.form.markAsPristine();\r\n group.isEdit = false;\r\n group.isNew = true;\r\n group.isTriggered = false;\r\n group.zModel[\r\n group.parentReferenceField\r\n ] = group.parentReferenceId.toString();\r\n } else {\r\n group.isTriggered = false;\r\n this.router.navigate([group.editModelURL, referenceId, \"new\"], {\r\n relativeTo: group.ctrlScope.activatedRoute,\r\n });\r\n //this.router.navigate([group.editModelURL, referenceId, \"new\"]);\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public createModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n let createModelres = null;\r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n \r\n if (!fg.dirty) {\r\n console.warn(\"Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService, group);\r\n console.warn(\"Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before create, zModel:\", zmodel);\r\n return this.beforeCreateModel(_group);\r\n }),\r\n tap(() => {\r\n Object.assign(_group.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n const newModel = Object.assign({}, _group.zModel);\r\n ZComponentHelper.removeNullFields(newModel);\r\n // Object.keys(newModel).forEach((key) => {\r\n // if (newModel[key] === null) {\r\n // delete newModel[key];\r\n // }\r\n // });\r\n // if (!newModel.Id) {\r\n // newModel.Id = 0;\r\n // }\r\n\r\n return this.webApiService\r\n .httpPost$(\r\n _group.resourceURL, // + \"/\" + group.zModel.Id,\r\n newModel\r\n )\r\n .pipe(\r\n tap((resp) => {\r\n createModelres = resp;\r\n return resp;\r\n }),\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is created successfully.\")\r\n )\r\n ); \r\n }),\r\n switchMap((zmodel: any) => {\r\n\r\n console.log(\"After created, zModel:\", zmodel);\r\n if (zmodel) {\r\n\r\n //support old and new webapi method\r\n if (zmodel.Data) {\r\n Object.assign(_group.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n }\r\n else if (zmodel[\"Id\"]) {\r\n Object.assign(_group.zModel, zmodel);\r\n fg.patchValue(zmodel);\r\n }\r\n\r\n _group.referenceId = _group.zModel.Id;\r\n fg.markAsPristine();\r\n }\r\n\r\n return this.afterCreateModel(_group);\r\n }),\r\n tap((resp) => {\r\n if (createModelres.ProcessingStatus == null || createModelres.ProcessingStatus == true) {\r\n if (resp && _group.zModel.Id !== 0) {\r\n _group.isNew = false;\r\n _group.isEdit = true;\r\n _group.isTriggered = false;\r\n _group.cancelButtonName = \"Close\";\r\n Object.assign(_group.zModel, resp);\r\n fg.patchValue(resp);\r\n }\r\n fg.markAsPristine();\r\n } else {\r\n fg.markAsDirty();\r\n }\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n // this.toastService.show(\"Record is created successfully.\");\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n public updateModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n if (!fg.dirty) {\r\n console.warn(\"Form is not dirty hence record is not save.\");\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService, group);\r\n console.warn(\"Form Validation got error(s):\", errors);\r\n return;\r\n }\r\n\r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before update, zModel:\", zmodel);\r\n return this.beforeUpdateModel(_group);\r\n }),\r\n tap(() => {\r\n Object.assign(_group.zModel, fg.value);\r\n }),\r\n switchMap(() => {\r\n return this.webApiService\r\n .httpPut$(_group.resourceURL + \"/\" + _group.zModel.Id, _group.zModel)\r\n .pipe(\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is updated successfully.\")\r\n )\r\n );\r\n }),\r\n switchMap((zmodel: any) => {\r\n console.log(\"After updated, zModel:\", zmodel);\r\n if (zmodel && zmodel.Data) {\r\n Object.assign(_group.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n }\r\n else if (zmodel && zmodel[\"Id\"]) {\r\n Object.assign(_group.zModel, zmodel);\r\n fg.patchValue(zmodel);\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n }\r\n\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n\r\n fg.markAsPristine();\r\n return this.afterUpdateModel(_group);\r\n })\r\n )\r\n .subscribe();\r\n // Object.assign(group.zModel, fg.value);\r\n // this.webApiService\r\n // .httpPut$(group.resourceURL + \"/\" + group.zModel.Id, group.zModel)\r\n // .subscribe(resp => {\r\n // Object.assign(group.zModel, resp);\r\n // fg.patchValue(resp);\r\n // fg.markAsPristine();\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n // });\r\n }\r\n\r\n private cloneNewModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n\r\n Object.assign(_group.zModel, _group.form.value);\r\n _group.zModel.Id = 0;\r\n\r\n const clearFields = [\"WFS_DocumentId\", \"WFS_StatusCode\", \"WFS_StatusName\"];\r\n clearFields.forEach((field) => {\r\n if (_group.zModel.hasOwnProperty(field)) {\r\n _group.zModel[field] = null;\r\n }\r\n });\r\n\r\n this.cacheService.setCache(\"cloneNewModel\", group.zModel);\r\n this.newModel(null, group);\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n }\r\n\r\n private deleteModel(event: ZComponentOutputEvent, group: ZGroup) { \r\n let fg: FormGroup = group.form as FormGroup;\r\n let _group: ZGroup = group;\r\n\r\n if (event) {\r\n if (event.data && event.data.SubType) {\r\n fg = group['_' + event.data.SubType].form as FormGroup;\r\n _group = group['_' + event.data.SubType];\r\n }\r\n }\r\n \r\n of(_group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before delete, zModel:\", zmodel);\r\n return this.beforeDeleteModel(_group);\r\n }),\r\n switchMap(() => {\r\n group.isTriggered = false;\r\n _group.isTriggered = false;\r\n return this.alertService.show(\"Delete Record\", \"Are you sure?\",\r\n [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ]);\r\n }),\r\n switchMap((reply: string) => {\r\n if (reply === \"Yes\") {\r\n Object.assign(_group.zModel, fg.value);\r\n _group.zModel.Disabled = true;\r\n\r\n return this.webApiService\r\n .httpPut$(_group.resourceURL + \"/\" + _group.zModel.Id, _group.zModel)\r\n .pipe(\r\n map((res) =>\r\n this.handleSuccess(res, \"Record is deleted successfully.\")\r\n ),\r\n switchMap((zmodel) => {\r\n console.log(\"After deleted, zModel:\", zmodel);\r\n return this.afterDeleteModel(_group);\r\n }),\r\n tap((resp) => {\r\n this.historyBack();\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private beforeUpdateModel(group: ZGroup) {\r\n if (!group.beforeUpdateModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeUpdateModel(group);\r\n }\r\n\r\n private beforeDeleteModel(group: ZGroup) {\r\n if (!group.beforeDeleteModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeDeleteModel(group);\r\n }\r\n\r\n private beforeNewModel(group: ZGroup) {\r\n if (!group.beforeNewModel) {\r\n console.warn(\"group.beforeNewodel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeNewModel(group);\r\n }\r\n\r\n private beforeCreateModel(group: ZGroup) {\r\n if (!group.beforeCreateModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeCreateModel(group);\r\n }\r\n\r\n beforePageInitialise(group: ZGroup) {\r\n if (!group.beforePageInitialise) {\r\n console.warn(\"group.beforePageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.beforePageInitialise(group);\r\n }\r\n\r\n private afterGetModelSuccess(group: ZGroup): Observable<any> {\r\n if (!group.zModel.Id) {\r\n console.warn(\"zModel.Id is not defined\", group.zModel);\r\n return of({});\r\n }\r\n if (!group.afterGetModelSuccess) {\r\n console.warn(\"group.afterGetModelSuccess is not defined\");\r\n return of({});\r\n }\r\n return group.afterGetModelSuccess(group);\r\n }\r\n\r\n afterNewModel(group: ZGroup): Observable<any> {\r\n if (!group.afterNewModel) {\r\n console.warn(\"group.afterNewModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterNewModel(group);\r\n }\r\n\r\n private afterCreateModel(group: ZGroup): Observable<any> {\r\n if (!group.afterCreateModel) {\r\n console.warn(\"group.afterCreateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterCreateModel(group);\r\n }\r\n\r\n private afterUpdateModel(group: ZGroup): Observable<any> {\r\n if (!group.afterUpdateModel) {\r\n console.warn(\"group.afterUpdateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterUpdateModel(group);\r\n }\r\n\r\n private afterDeleteModel(group: ZGroup): Observable<any> {\r\n if (!group.afterDeleteModel) {\r\n console.warn(\"group.afterDeleteModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterDeleteModel(group);\r\n }\r\n\r\n afterPageInitialise(group: ZGroup) {\r\n if (!group.afterPageInitialise) {\r\n console.warn(\"group.afterPageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.afterPageInitialise(group);\r\n }\r\n\r\n // private onAction(group: ZGroup) {\r\n // this.actionSheetCtrl\r\n // .create({\r\n // header: \"Choose an Action\",\r\n // buttons: group.topRightActionButton\r\n // })\r\n // .then(actionSheetEl => {\r\n // actionSheetEl.present();\r\n // });\r\n // }\r\n\r\n // setModelValue(propertyName: string, value: any, group: ZGroup) {\r\n // group.zModel[propertyName] = value;\r\n // if (group.isLoading) {\r\n // return;\r\n // }\r\n // const fg = group.form as FormGroup;\r\n // if (!fg) {\r\n // eslint-disable-next-line , no-debugger\r\n // debugger;\r\n // }\r\n // const fc = fg.controls[propertyName];\r\n // if (!fc) {\r\n // eslint-disable-next-line no-debugger\r\n // debugger;\r\n // }\r\n // fc.setValue(value);\r\n // fc.markAsDirty();\r\n // }\r\n\r\n public async showzModal(\r\n colFields$: string | Observable<Array<ZField>>,\r\n parentGroup: ZGroup,\r\n formHeader: string,\r\n zModel?: any,\r\n referId?: string,\r\n componentSize?: ZComponentSize,\r\n skipIsDirtyCheck?: boolean\r\n ) {\r\n const modalcomponent = ZmodalComponent;\r\n const modalmobilecomponent = ZmodalMobileComponent;\r\n\r\n if (parentGroup) {\r\n // disable isTriggered before display the popup.\r\n parentGroup.isTriggered = false;\r\n }\r\n return await this.modalService.show(colFields$, parentGroup, formHeader, modalcomponent, modalmobilecomponent, zModel, referId, componentSize, skipIsDirtyCheck)\r\n //const modal = await this.modalService.show();\r\n }\r\n\r\n\r\n public cookieStorePost(name: string, value: any): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores\";\r\n const cookieStoreValue = {\r\n 'Name': name,\r\n 'Value': JSON.stringify(value)\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) {\r\n console.log(\"grid config saved(\" + res.status + \"): \", res);\r\n return res;\r\n }\r\n })); \r\n } \r\n\r\n public cookieStoreGet(name: string, accessToken: string): Observable<any> {\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores/?name=\" + name;\r\n\r\n return this.webApiService.httpGet$(cookieStoreURL, { headers: accessToken }).pipe(map(res => {\r\n if (res) { \r\n return res;\r\n }\r\n })); \r\n }\r\n\r\n public cookieStoreDeleteMultiple(name: string): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"Admin/DeleteMultipleCookies\";\r\n const cookieStoreValue = {\r\n 'containName': name\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) { \r\n return res;\r\n }\r\n }));\r\n }\r\n}\r\n\r\nexport function refreshGrid(group: ZGroup) {\r\n const zgridControl = group[\"gridOptions\"] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group.isTriggered = false;\r\n}\r\n","import { NgModule, Directive, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appScrollbarTheme]'\r\n})\r\nexport class ScrollbarThemeDirective implements OnInit {\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n private stylesheet = `\r\n ::-webkit-scrollbar {\r\n width: 5px;\r\n }\r\n ::-webkit-scrollbar-track {\r\n background: var(--ion-color-light);\r\n }\r\n ::-webkit-scrollbar-thumb {\r\n border-radius: 2px;\r\n background: var(--ion-color-light-shade);\r\n border: 0 solid #020202;\r\n }\r\n ::-webkit-scrollbar-thumb:hover {\r\n }\r\n `;\r\n\r\n // background: linear-gradient(var(--ion-color-medium-tint), var(--ion-color-light));\r\n\r\n ngOnInit(): void {\r\n const styleElmt = this.el.nativeElement.shadowRoot.querySelector('style');\r\n if (styleElmt) {\r\n styleElmt.append(this.stylesheet);\r\n } else {\r\n const barStyle = document.createElement('style');\r\n barStyle.append(this.stylesheet);\r\n this.el.nativeElement.shadowRoot.appendChild(barStyle);\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fieldelement]'\r\n})\r\nexport class FieldElementDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, OnInit, OnDestroy, Input, Inject } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Router } from \"@angular/router\";\r\nimport { Subscription, Observable, Subject, of, AsyncSubject } from \"rxjs\";\r\nimport { tap, delay, switchMap, concatMap } from \"rxjs/operators\";\r\nimport {\r\n DataBindingDirective,\r\n GridComponent,\r\n DataStateChangeEvent,\r\n PageChangeEvent,\r\n} from \"@progress/kendo-angular-grid\";\r\nimport {\r\n SortDescriptor,\r\n State,\r\n FilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, GridCaching, WebApiService,\r\n ZComponentHelper, ZField, ZGridPostApiParams, ZGridColumnSettings,\r\n ZGridStatePersistingService, ZGroup, StorageSessionService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Directive({\r\n selector: \"[zgridbinding]\",\r\n})\r\nexport class ZGridBindingDirective extends DataBindingDirective implements OnInit, OnDestroy {\r\n private serviceSubscription: Subscription;\r\n @Input() zgridbinding: {\r\n data: ZField;\r\n group: ZGroup;\r\n params: ZGridPostApiParams;\r\n gridSubject: Subject<any>;\r\n };\r\n\r\n state: State = {\r\n skip: 0,\r\n take: 10,\r\n };\r\n\r\n gridColumns: any[] = [];\r\n\r\n usableColumns: any[] = [];\r\n\r\n resourceURL = null;\r\n\r\n paginationApiPostUrl = null;\r\n\r\n dataSource = null;\r\n\r\n get field() {\r\n return this.zgridbinding.data;\r\n }\r\n\r\n get grp() {\r\n return this.zgridbinding.group;\r\n }\r\n\r\n get gridSubject() {\r\n return this.zgridbinding.gridSubject;\r\n }\r\n\r\n get params(): ZGridPostApiParams {\r\n return this.zgridbinding.params;\r\n }\r\n\r\n get getData() {\r\n return this.grid.data;\r\n }\r\n\r\n constructor(\r\n @Inject(GridComponent) grid,\r\n private webapiService: WebApiService,\r\n private authService: AuthService,\r\n private storageService: StorageSessionService,\r\n private router: Router,\r\n private zGridStatePersistingService: ZGridStatePersistingService\r\n ) {\r\n super(grid);\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.field.SkipDirective) {\r\n return;\r\n }\r\n\r\n super.ngOnInit();\r\n this.grid.loading = true;\r\n this.state.take = this.field.PageSize || 20;\r\n this.pageSize = this.state.take;\r\n this.dataSource = this.field.DataSource ? this.field.DataSource : null;\r\n\r\n if (!this.dataSource) {\r\n this.resourceURL = ZComponentHelper.getGroupValue(\r\n this.field.ResourceURL,\r\n this.grp\r\n );\r\n // console.log(\"At zgrid.component (OnInit) resourceURL: \", resourceURL);\r\n if (!this.resourceURL) {\r\n this.grid.loading = false;\r\n if (this.zgridbinding.data.Name !== \"ActivityLogGrid\") {\r\n console.warn(\r\n \"No initialise for Field.ResourceURL: \",\r\n this.field.ResourceURL\r\n );\r\n }\r\n return;\r\n }\r\n\r\n const array = this.resourceURL.split(\"/api/\");\r\n if (!!array[1]) {\r\n array[1] = \"Page\" + array[1];\r\n this.paginationApiPostUrl = array.join(\"/api/\");\r\n } else {\r\n const arr = this.resourceURL.split(\"/\");\r\n arr[arr.length - 2] = \"Page\" + arr[arr.length - 2];\r\n this.paginationApiPostUrl = arr.join(\"/\");\r\n }\r\n\r\n this.setFilterParamsByParentRefId();\r\n }\r\n\r\n this.gridSubject.next(this);\r\n this.generateGridColumns();\r\n }\r\n\r\n private setFilterParamsByParentRefId() {\r\n // Use field own referenceId if available\r\n const refId = this.getFieldReferenceId() || this.grp.referenceId;\r\n const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n if (refId && refField) {\r\n const filterValue = {\r\n key: refField,\r\n ops: \"=\",\r\n value: refId,\r\n };\r\n // if (this.params.filterParams.find(x => x.key === filterValue.key) === undefined) {\r\n this.params.filterParams.push(filterValue);\r\n // }\r\n }\r\n }\r\n\r\n private getFieldReferenceId() {\r\n let fieldReferenceId = null;\r\n if (this.field.ReferenceId) {\r\n fieldReferenceId = ZComponentHelper.getGroupValue(\r\n this.field.ReferenceId,\r\n this.grp\r\n );\r\n }\r\n return fieldReferenceId;\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.serviceSubscription) {\r\n this.serviceSubscription.unsubscribe();\r\n }\r\n super.ngOnDestroy();\r\n }\r\n\r\n public generateGridColumns() {\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.field.ColumnFields,\r\n this.grp\r\n );\r\n columnFields$\r\n .pipe(\r\n tap((data) => {\r\n const gridSetting = this.getGridSettings();\r\n const fieldName = this.field[\"FieldElementName\"];\r\n\r\n ZComponentHelper.getGridColumns(\r\n data,\r\n this.gridColumns,\r\n this.zgridbinding.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n this.usableColumns\r\n );\r\n this.getFilterParamsColumns();\r\n this.getFilter();\r\n this.getFilterParams();\r\n this.getSorting();\r\n this.getGrantType();\r\n this.setHiddenColumn(gridSetting);\r\n\r\n this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;\r\n //}),\r\n //switchMap(() => {\r\n // //Get Session\r\n // return this.getGridSessionFilter(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Before get grid data\r\n // return this.beforeGridGetData(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Set grid data\r\n // return this.setGridSessionFilter(this.grp, this);\r\n })\r\n )\r\n .subscribe(() => {\r\n this.getDataBinding();\r\n });\r\n }\r\n\r\n private getFilterParamsColumns() {\r\n const colFields: Array<string> = [];\r\n this.gridColumns.forEach((field) => {\r\n if (field.valueExpr) {\r\n colFields.push(field.valueExpr + \" as \" + field.field);\r\n } else {\r\n colFields.push(field.field);\r\n }\r\n });\r\n\r\n if (colFields.length > 0) {\r\n if (colFields.indexOf(\"Id\") === -1) {\r\n colFields.push(\"Id\");\r\n }\r\n }\r\n\r\n let tmpGridColumn: any[] = [];\r\n tmpGridColumn.push(colFields.join(\",\"));\r\n if (this.usableColumns.length > 0) {\r\n tmpGridColumn.push(this.usableColumns.join(\",\"));\r\n }\r\n this.params.columns = tmpGridColumn.join(\",\");\r\n }\r\n\r\n private getFilter() {\r\n if (this.params.filters && this.field.Filters) {\r\n this.params.filters = this.params.filters + \" && \" + this.field.Filters;\r\n } else if (!this.params.filters && this.field.Filters) {\r\n this.params.filters = this.field.Filters;\r\n }\r\n\r\n if (this.field.Filters && this.field.Filters.indexOf(\"group.\") !== -1) {\r\n const filterKeyValPairs = this.field.Filters.split(\" \");\r\n const grpValues = filterKeyValPairs.filter(\r\n (element) => element.trim().indexOf(\"group.\") !== -1\r\n );\r\n\r\n grpValues.forEach((val) => {\r\n const actualVal = ZComponentHelper.getGroupValue(val, this.grp);\r\n this.params.filters = this.params.filters.replace(val, actualVal);\r\n });\r\n }\r\n }\r\n\r\n private getFilterParams() {\r\n if (this.field['FilterParams']) {\r\n if (this.field['FilterParams'].indexOf(\"group.\") !== -1) {\r\n this.params.filterParams = ZComponentHelper.getGroupValue(this.field['FilterParams'], this.grp);\r\n } else {\r\n this.params.filterParams = this.field['FilterParams'];\r\n }\r\n }\r\n }\r\n\r\n private getSorting() {\r\n if (this.field.SortOrder) {\r\n if (this.field.SortOrder.indexOf(\"group.\") !== -1) {\r\n this.params.sortOrder = ZComponentHelper.getGroupValue(this.field.SortOrder, this.grp);\r\n } else {\r\n this.params.sortOrder = this.field.SortOrder;\r\n }\r\n }\r\n }\r\n\r\n private getGrantType() {\r\n if (this.field.GrantType) {\r\n this.params.grantType = ZComponentHelper.getGroupValue(this.field.GrantType.toString(), this.grp);\r\n }\r\n }\r\n\r\n private setHiddenColumn(gridSetting: ZGridColumnSettings[]) {\r\n if (this.gridColumns && gridSetting) {\r\n // filter out hidden == false array.\r\n const gridSettingHiddenCol = gridSetting.filter(function (item) {\r\n return item['hidden'] == true;\r\n });\r\n\r\n // find and set the hidden to current column setting.\r\n Object.values(gridSettingHiddenCol).forEach(value => {\r\n if (this.gridColumns.find((c) => c.field === value.field)) {\r\n this.gridColumns.find((c) => c.field === value.field)['hidden'] = value['hidden'];\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n public getDataBinding(): void {\r\n this.grid.loading = true;\r\n\r\n if (!this.dataSource) {\r\n this.params.pageSize = this.state.take;\r\n if (this.field.ExternalPagination) {\r\n // For POST method Page WebAPI\r\n this.webapiService\r\n .postApi(\r\n this.paginationApiPostUrl,\r\n this.params,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n this.aggregateHandling(data.dataSet);\r\n this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n });\r\n } else {\r\n // For GET method\r\n this.webapiService\r\n .getApi(this.resourceURL, null, null, null, null, null, true)\r\n .subscribe((data) => {\r\n let _data = null;\r\n let _totalCount = 0;\r\n\r\n if (data.dataSet) {\r\n _data = data.dataSet;\r\n _totalCount = data.totalCount;\r\n } else {\r\n _data = data;\r\n _totalCount = data.length;\r\n }\r\n\r\n this.aggregateHandling(_data);\r\n this.grid.data = { data: _data, total: _totalCount };\r\n this.grid.pageSize = _totalCount;\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n });\r\n }\r\n } else {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.field.DataSource,\r\n this.grp\r\n );\r\n\r\n if (ds) {\r\n this.grid.data = {\r\n data: ds,\r\n total: ds.length,\r\n };\r\n this.grid.pageSize = ds.length;\r\n }\r\n this.gridSubject.next(this);\r\n this.grid.loading = false;\r\n }\r\n }\r\n\r\n public clearData(): void {\r\n this.grid.data = { data: [], total: 0 };\r\n }\r\n\r\n\r\n private aggregateHandling(data: any) {\r\n const aggregateColumns = this.gridColumns.filter(x => x.aggregateType);\r\n\r\n aggregateColumns.forEach(col => {\r\n const field = col.field;\r\n\r\n let _aggregateValue = null;\r\n switch (col.aggregateType.slice(0, -1).toLowerCase()) {\r\n case \"total\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n break;\r\n }\r\n case \"sum\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n break;\r\n }\r\n case \"average\": {\r\n _aggregateValue = data.reduce((total, next) => total + next[field], 0) / data.length;\r\n break;\r\n }\r\n case \"count\": {\r\n _aggregateValue = data.length;\r\n break;\r\n }\r\n case \"max\": {\r\n _aggregateValue = data.reduce((p, c) => p[field] > c[field] ? p : c)[field];\r\n break;\r\n }\r\n case \"min\": {\r\n _aggregateValue = data.reduce((p, c) => p[field] < c[field] ? p : c)[field];\r\n break;\r\n }\r\n }\r\n\r\n col.aggregateValue = _aggregateValue;\r\n });\r\n }\r\n\r\n private aggregateResetValue() {\r\n const aggregateColumns = this.gridColumns.filter(x => x.aggregateType);\r\n aggregateColumns.forEach(col => {\r\n col.aggregateValue = 0;\r\n });\r\n }\r\n\r\n\r\n public pageChange(event: PageChangeEvent): void {\r\n this.params.pageNo = event.skip / this.params.pageSize;\r\n this.state.skip = event.skip;\r\n this.getDataBinding();\r\n }\r\n\r\n public sortChange(sort: SortDescriptor[]): void {\r\n this.sort = sort;\r\n this.params.sortColumnNames = [];\r\n this.params.sortOrders = [];\r\n\r\n sort.forEach((f) => {\r\n if (f.dir) {\r\n this.params.sortOrders.push(f.dir);\r\n\r\n const field = this.gridColumns.find((c) => c.field === f.field);\r\n if (field.valueExpr !== undefined) {\r\n this.params.sortColumnNames.push(field.valueExpr);\r\n } else {\r\n this.params.sortColumnNames.push(f.field);\r\n }\r\n }\r\n });\r\n this.getDataBinding();\r\n }\r\n\r\n public filterChange(event: any): void {\r\n this.params.pageNo = 0;\r\n this.params.filterParams = [];\r\n this.setFilterParamsByParentRefId();\r\n\r\n console.log(event);\r\n if (event) {\r\n if (event.filters.length > 0) {\r\n event.filters.forEach((item) => {\r\n const field = this.gridColumns.find((c) => c.field === item.field);\r\n\r\n if (item.filters) {\r\n item.filters.forEach((f: FilterDescriptor) => {\r\n if (f.value === null) {\r\n f.value = \"\"; // convert null to \"\"\r\n }\r\n this.params.filterParams.push({\r\n key: f.field as string,\r\n ops: this.mapFilterOperator(f.operator),\r\n value: f.value,\r\n });\r\n });\r\n } else {\r\n if (item.value === null) {\r\n item.value = \"\"; // convert null to \"\"\r\n }\r\n this.params.filterParams.push({\r\n key:\r\n field.valueExpr !== undefined\r\n ? `(${field.valueExpr})`\r\n : item.field,\r\n ops: this.mapFilterOperator(item.operator),\r\n value: item.value,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n this.setGridSessionFilter(this.grp, this);\r\n this.getDataBinding();\r\n\r\n\r\n }\r\n\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n // this.state = state;\r\n this.skip = state.skip;\r\n this.pageSize = state.take;\r\n this.state.skip = state.skip;\r\n this.state.take = state.take;\r\n this.grid.loading = true;\r\n this.aggregateResetValue();\r\n }\r\n\r\n private mapFilterOperator(operator: any) {\r\n switch (operator) {\r\n case \"eq\":\r\n return \"eq\";\r\n case \"neq\":\r\n return \"neq\";\r\n case \"lt\":\r\n return \"lt\";\r\n case \"lte\":\r\n return \"lte\";\r\n case \"gt\":\r\n return \"gt\";\r\n case \"gte\":\r\n return \"gte\";\r\n case \"startswith\":\r\n return \"startswith\";\r\n case \"endswith\":\r\n return \"endswith\";\r\n case \"isnull\":\r\n return \"isnull\";\r\n case \"isnotnull\":\r\n return \"isnotnull\";\r\n case \"contains\": {\r\n if (!this.field['FilterContainsUsingEqual']) {\r\n return \"contains\";\r\n } \r\n }\r\n default:\r\n return \"==\";\r\n // eq, neq, isnull, isnotnull, endswith, startswith\r\n }\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.field.Name + '::' + this.router.url;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching) {\r\n const _gridCaching: GridCaching = JSON.parse(_arrGridCaching['Value']);\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n public beforeGridGetData(group: ZGroup, me: any) {\r\n console.warn(\"beforeDataBinding triggered\");\r\n if (!group.beforeGridGetData) {\r\n console.warn(\"group.beforeDataBinding is undefined\");\r\n return of(true);\r\n }\r\n return group.beforeGridGetData(group, me);\r\n }\r\n\r\n private getGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return of([]);\r\n }\r\n\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n if (this.storageService) {\r\n const subject = new Subject<string>();\r\n\r\n of(true)\r\n .pipe(\r\n switchMap(() => {\r\n return this.storageService.get(StorageKey);\r\n }),\r\n tap(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n subject.next(); \r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.state.filter = JSON.parse(result[\"StateFilter\"]);\r\n this.params.filterParams = JSON.parse(result[\"FilterParams\"]);\r\n\r\n this.state.filter.filters.forEach((d: any) => {\r\n if (d.field.includes('UTC')) {\r\n d.value = new Date(d.value);\r\n }\r\n });\r\n\r\n subject.next(); \r\n }\r\n })\r\n ).subscribe();\r\n\r\n return subject.asObservable();\r\n }\r\n else {\r\n return of([]);\r\n }\r\n }\r\n\r\n private setGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n\r\n const StorageKey = group[\"GridStorageKey\"]; \r\n\r\n if (me.state.filter && this.storageService && this.field['SaveFilter']) {\r\n //list of data for StateFilter and FilterParams\r\n const lstGridFilter = { \"StateFilter\": JSON.stringify(me.state.filter), \"FilterParams\": JSON.stringify(me.params.filterParams) }\r\n //create session storage\r\n this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[popupAnchor]',\r\n exportAs: 'popupAnchor'\r\n})\r\nexport class ZGridPopupAnchorDirective {\r\n constructor(public element: ElementRef\r\n ) {\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Directive({\r\n selector: 'kendo-combobox[openOnFocus]'\r\n})\r\nexport class OpenOnFocusDirective {\r\n\r\n @Input() openOnFocus: ComboBoxComponent;\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this.openOnFocus) {\r\n if (!this.openOnFocus.readonly) {\r\n this.openOnFocus.toggle(true);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('blur') onBlur() {\r\n if (this.openOnFocus) {\r\n this.openOnFocus.toggle(false);\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"dateParser\",\r\n pure: true,\r\n})\r\nexport class DateParserFilter implements PipeTransform {\r\n transform(items: any): any {\r\n // debugger;\r\n if (!items) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n try {\r\n const d = new Date(items);\r\n return d;\r\n } catch (error) {\r\n console.log(\"DateParserFilter error: \", error);\r\n return null;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Pipe({\r\n name: 'editorfilter',\r\n pure: false\r\n})\r\nexport class EditorFilter implements PipeTransform {\r\n transform(source: any): any {\r\n if (!source) {\r\n return;\r\n }\r\n if (typeof source === \"string\") {\r\n try {\r\n const jsonValue = JSON.parse(source);\r\n return JSON.stringify(jsonValue, null, 2);\r\n // return this.safeStringify(jsonValue);\r\n } catch {\r\n return source;\r\n }\r\n }\r\n if (typeof source === \"object\" || Array.isArray(source)) {\r\n try {\r\n return JSON.stringify(source, null, 2);\r\n // return this.safeStringify(source);\r\n } catch {\r\n return \"problem - [Circular structure to JSON]\";\r\n }\r\n }\r\n\r\n }\r\n\r\n private safeStringify(jsonValue: any) {\r\n // Note: cache should not be re-used by repeated calls to JSON.stringify.\r\n const cache: Array<any> = [];\r\n return JSON.stringify(jsonValue, (key, value) => {\r\n if (typeof value === 'object' && value !== null) {\r\n // Duplicate reference found, discard key\r\n if (cache.includes(value)) {\r\n // debugger;\r\n // return \"problem - [Circular structure to JSON]\";\r\n return;\r\n }\r\n // Store value in our collection\r\n cache.push(value);\r\n }\r\n return value;\r\n }, 2);\r\n // cache = null; // Enable garbage collection\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'divzlayout',\r\n pure: true\r\n})\r\nexport class DivzLayout implements PipeTransform {\r\n transform(items: any, zlayout: string): any {\r\n if (!items || !zlayout) {\r\n return items;\r\n }\r\n\r\n // if got zlayout, in div: 2 = 2 col per row; 3 = 1 col per row; \r\n if (zlayout == \"2\") {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-6\";\r\n });\r\n }\r\n else if (zlayout == '3') {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-12\";\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n}","import { Component, Injectable } from \"@angular/core\";\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zreport\",\r\n templateUrl: \"./zreport.component.html\",\r\n styleUrls: [\"./zreport.component.scss\"],\r\n})\r\n\r\n// @dynamic\r\nexport class ExportOptions {\r\n viewerToolTipOpening = null;\r\n resourceURL = null;\r\n ReportSource = null;\r\n ready = null;\r\n exportBegin = null;\r\n exportEnd = null;\r\n onRenderingEnd = null;\r\n viewerContainerStyle = null;\r\n isVisible = null;\r\n paramToResizeReportViewer = null;\r\n resizeReportView = null;\r\n // public static instance: ExportOptions;\r\n // public static init(component: any) {\r\n // if (!ExportOptions.instance) {\r\n // ExportOptions.instance = new ExportOptions();\r\n // }\r\n // ExportOptions.instance.bindEvents(component);\r\n\r\n // // Add the options when init. Sometime it will not init the class.\r\n // ExportOptions.instance.hideOptions = [\"PDF\", \"CSV\", \"XLS\", \"XLSX\", \"RTF\", \"IMAGE\", \"MHTML\", \"XPS\"];\r\n // }\r\n\r\n private largeMenuBound = false;\r\n private sideMenuBound = false;\r\n private reportSource = \"\";\r\n private hideOptions = [];\r\n\r\n public update(reportSource: string) {\r\n this.reportSource = reportSource;\r\n // show all extensions\r\n //$('[data-command-parameter]').show();\r\n\r\n // check to hide options\r\n this.hideUnwantedOptions();\r\n }\r\n\r\n public bindEvents(component: any) {\r\n this.exportOption(component);\r\n\r\n const sideMenu = $(\".trv-side-menu\").children(\"ul\").data('kendoPanelBar');\r\n const largeMenu = $(\".trv-menu-large\").data(\"kendoMenu\");\r\n const smallMenu = $(\".trv-menu-small\");\r\n\r\n // hide export button if all option is not available\r\n if (this.hideOptions.length == 8) {\r\n const exportButton = $(\"[data-command*='telerik_ReportViewer_export']\")\r\n exportButton.hide();\r\n }\r\n\r\n // bind to the 'open' event of the main menu\r\n if (!this.largeMenuBound && largeMenu) {\r\n largeMenu.bind(\"open\", () => {\r\n this.hideUnwantedOptions();\r\n });\r\n\r\n this.largeMenuBound = true;\r\n }\r\n\r\n // bind to the 'expand' event of the side menu\r\n if (!this.sideMenuBound && smallMenu) {\r\n if (sideMenu) {\r\n sideMenu.bind(\"expand\", () => {\r\n // recheck export options\r\n //if (reloadHideOptions) {\r\n // thisComponent.exportOption(thisComponent);\r\n //}\r\n this.hideUnwantedOptions();\r\n });\r\n }\r\n\r\n this.sideMenuBound = true;\r\n }\r\n }\r\n\r\n public exportOption(component: any) {\r\n const _data = component.data;\r\n if (_data.EnableExportPDF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"PDF\");\r\n }\r\n if (_data.EnableExportCSV) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"CSV\");\r\n }\r\n if (_data.EnableExportExcel) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XLS\");\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XLSX\");\r\n }\r\n if (_data.EnableExportRTF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"RTF\");\r\n }\r\n if (_data.EnableExportTIFF) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"IMAGE\");\r\n }\r\n if (_data.EnableExportMHTML) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"MHTML\");\r\n }\r\n if (_data.EnableExportXPS) {\r\n this.hideOptions = this.hideOptions.filter(item => item !== \"XPS\");\r\n }\r\n }\r\n\r\n public hideUnwantedOptions() {\r\n // show all extensions\r\n $('[data-command-parameter]').show();\r\n\r\n // hide the specified extensions\r\n $.each(this.hideOptions, function (index, item) {\r\n var hiddenOption = $('[data-command-parameter=\"' + item + '\"]');\r\n if (hiddenOption && hiddenOption.length) {\r\n hiddenOption.hide();\r\n }\r\n });\r\n }\r\n\r\n public resizeViewer() {\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'tabfilter',\r\n pure: true\r\n})\r\nexport class TabFilter implements PipeTransform {\r\n transform(items: any, filter: string): any {\r\n // debugger;\r\n if (!items || !filter) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n return items.filter(item => {\r\n const target = item.TabArea + '';\r\n return target.indexOf(filter) !== -1;\r\n });\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { BaseFilterCellComponent, FilterService } from \"@progress/kendo-angular-grid\";\r\nimport { FilterDescriptor, CompositeFilterDescriptor } from \"@progress/kendo-data-query/dist/es/main\";\r\n\r\n@Component({\r\n selector: 'date-range-filter-cell',\r\n styles: [`\r\n kendo-daterange > kendo-dateinput.range-filter {\r\n display: inline-block;\r\n }\r\n .k-button {\r\n margin-left: 4px;\r\n }\r\n ` ],\r\n template: `\r\n <kendo-daterange >\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeStartInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"start\"\r\n (valueChange)=\"filterRange($event, end)\"\r\n style=\"width:84px\">\r\n </kendo-dateinput>\r\n -\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeEndInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"end\"\r\n (valueChange)=\"filterRange(start, $event)\"\r\n style=\"width:85px\">\r\n </kendo-dateinput>\r\n </kendo-daterange>\r\n <button\r\n *ngIf=\"hasFilter\"\r\n class=\"k-button k-button-icon\"\r\n title=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <span class=\"k-icon k-i-filter-clear\" style=\"width:15px\"></span>\r\n </button>\r\n `\r\n})\r\nexport class DateRangeFilterCellComponent extends BaseFilterCellComponent {\r\n @Input()\r\n public filter: any;\r\n\r\n @Input()\r\n public field: string;\r\n\r\n constructor(filterService: FilterService) {\r\n super(filterService);\r\n }\r\n\r\n public get start(): Date {\r\n const first = this.findByOperator(\"gte\");\r\n\r\n return (first || <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get end(): Date {\r\n const end = this.findByOperator(\"lte\");\r\n return (end || <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get hasFilter(): boolean {\r\n return this.filtersByField(this.field).length > 0;\r\n }\r\n\r\n public clearFilter(): void {\r\n this.filterService.filter(\r\n this.removeFilter(this.field)\r\n );\r\n }\r\n\r\n public filterRange(start: Date, end: Date): void {\r\n this.filter = this.removeFilter(this.field);\r\n\r\n const filters = [];\r\n\r\n if (start) {\r\n filters.push({\r\n field: this.field,\r\n operator: \"gte\",\r\n value: start\r\n });\r\n }\r\n\r\n if (end) {\r\n filters.push({\r\n field: this.field,\r\n operator: \"lte\",\r\n value: end\r\n });\r\n }\r\n\r\n const root = this.filter || {\r\n logic: \"and\",\r\n filters: []\r\n };\r\n\r\n if (filters.length) {\r\n root.filters.push(...filters);\r\n }\r\n\r\n this.filterService.filter(root);\r\n }\r\n\r\n private findByOperator(op: string): FilterDescriptor {\r\n return this.filtersByField(this.field)\r\n .filter(({ operator }) => operator === op)[0];\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, HostListener } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from \"rxjs\";\r\nimport { delay, take } from \"rxjs/operators\";\r\nimport { ToolbarService } from \"@progress/kendo-angular-scheduler\";\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Component({\r\n selector: \"zschedulertoolbar\",\r\n template: `\r\n <div class=\"k-scheduler-navigation\">\r\n <button class=\"k-nav-today\" (click)=\"today()\">\r\n Today\r\n </button>\r\n <button class=\"k-nav-prev\" (click)=\"prev($event)\">\r\n <span class=\"k-icon k-i-arrow-60-left\"></span>\r\n </button> &nbsp;\r\n <span>\r\n <a class=\"k-nav-current\" #anchor\r\n >\r\n <!-- <span class=\"k-icon k-i-calendar\"></span> -->\r\n {{ selectedDate | kendoDate: \"dd-MMM-yyyy\" }}\r\n </a>\r\n </span> &nbsp;\r\n <button class=\"k-nav-next\" (click)=\"next($event)\">\r\n <span class=\"k-icon k-i-arrow-60-right\"></span>\r\n </button>\r\n </div>\r\n <kendo-popup\r\n style=\"margin:15px 0px 0px 0px;\"\r\n [anchor]=\"anchor\"\r\n (anchorViewportLeave)=\"showCalendar = false\"\r\n *ngIf=\"showCalendar\"\r\n >\r\n <kendo-calendar\r\n [focusedDate]=\"selectedDate\"\r\n (blur)=\"onBlur_Calendar()\"\r\n (valueChange)=\"onChange_Calendar($event)\"\r\n ></kendo-calendar>\r\n </kendo-popup>\r\n `,\r\n styleUrls: [\"./zscheduler.toolbar.component.css\"]\r\n})\r\nexport class ZSchedulerToolBarComponent {\r\n @Input() local: any = {};\r\n @Input() public selectedDate: Date;\r\n showCalendar = false;\r\n\r\n constructor(public toolbarService: ToolbarService) {}\r\n\r\n public today(): void {\r\n this.toolbarService.navigate({\r\n type: \"today\"\r\n });\r\n }\r\n\r\n public next(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"next\"\r\n });\r\n }\r\n\r\n public prev(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"prev\"\r\n });\r\n }\r\n\r\n onChange_Calendar(value: any): void {\r\n this.local.inProgress = true;\r\n this.toolbarService.navigate({\r\n type: 'select-date',\r\n date: value\r\n });\r\n this.toggleCalendar();\r\n of([])\r\n .pipe(take(1), delay(1000))\r\n .subscribe(() => (this.local.inProgress = false));\r\n }\r\n\r\n onBlur_Calendar(): void {\r\n this.toggleCalendar();\r\n }\r\n\r\n toggleCalendar(status?: boolean) {\r\n if (status === false) {\r\n this.showCalendar = false;\r\n return;\r\n }\r\n this.showCalendar = !this.showCalendar;\r\n }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n public keydown(event: any): void {\r\n if (event.keyCode === 27 && this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n public documentClick(event: any): void {\r\n if (event.target.className === \"k-nav-current\") {\r\n this.toggleCalendar();\r\n } else {\r\n if (this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, of, Observable } from \"rxjs\";\r\nimport { switchMap, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZGroup, IDeactivateComponent } from \"mmhglobal-zcore\";\r\n// import { IDeactivateComponent } from \"src/app/services/candeactivate.guard\";\r\n\r\n\r\n@Component({\r\n template: ``,\r\n})\r\nexport class UipageComponent implements IDeactivateComponent {\r\n // ctrlName = \"e1crm_bpactivity\";\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n\r\n constructor(\r\n // public fieldService: FieldService,\r\n public mainService: MainService,\r\n public activatedRoute: ActivatedRoute\r\n ) {\r\n mainService.setGroup(this.group);\r\n // console.log(\"At \" + this.ctrlName + \" (constructor)\");\r\n }\r\n\r\n canExit(): boolean | Observable<boolean> {\r\n return this.mainService.canExit(this.group.form);\r\n }\r\n\r\n pageOnInit(ctrlName: string, pageName: string, isListForm: boolean, projectName?: string) {\r\n this.group._projectName = projectName;\r\n\r\n return this.mainService.getResourceServerData().pipe(\r\n switchMap((rsData) => {\r\n this.group.isListForm = isListForm;\r\n return this.activatedRoute.paramMap;\r\n }),\r\n tap((paramMap) => {\r\n const actName = paramMap.get(\"act\");\r\n this.group.isNew = actName === \"new\" ? true : false;\r\n this.group.isEdit = actName === \"edit\" ? true : false;\r\n if (actName === \"edit\") {\r\n this.group.referenceId = paramMap.get(\"id\");\r\n } else if (actName === \"new\") {\r\n this.group.parentReferenceId =\r\n paramMap.get(\"parentreferenceid\") || paramMap.get(\"id\");\r\n this.group.backNavigationPage =\r\n this.group.backNavigationPage +\r\n \"/\" +\r\n this.group.parentReferenceId.toString() +\r\n \"/edit\";\r\n }\r\n if (actName) {\r\n this.group.actName = actName;\r\n }\r\n this.mainService.initializeGroup(this.group, ctrlName, pageName, this);\r\n\r\n if (\r\n actName === \"new\" &&\r\n this.group.parentReferenceField &&\r\n this.group.parentReferenceId\r\n ) {\r\n this.group.zModel[\r\n this.group.parentReferenceField\r\n ] = this.group.parentReferenceId.toString();\r\n }\r\n }),\r\n switchMap(() => {\r\n const formType = isListForm ? \"ListField\" : \"FormField\";\r\n const formFieldName = this.group.fieldName\r\n ? this.group.fieldName\r\n : ctrlName;\r\n this.group.fieldName = formFieldName;\r\n return this.mainService.getGroupFields(\r\n formFieldName,\r\n formType,\r\n this.group,\r\n \"fields\"\r\n );\r\n }),\r\n switchMap((fields) => {\r\n return this.mainService.beforePageInitialise(this.group);\r\n }),\r\n switchMap((fields) => {\r\n if (this.group.actName === \"new\") {\r\n this.mainService.getCloneNewCacheZModel(this.group);\r\n return this.mainService.afterNewModel(this.group);\r\n } else {\r\n return of(fields);\r\n }\r\n }),\r\n switchMap(() => {\r\n // console.log('CtrName: ' + ctrlName + ' field Element: ', fields);\r\n if (this.group.referenceId && this.group.referenceId !== \"0\") {\r\n if (typeof this.group.getModel === \"function\") {\r\n return this.group.getModel(this.group, this.group.referenceId);\r\n } else {\r\n return this.mainService.getModel$(\r\n this.group,\r\n this.group.referenceId\r\n );\r\n }\r\n } else {\r\n return of({});\r\n }\r\n }),\r\n switchMap((zmodel) => {\r\n if (this.group.parentReferenceField) {\r\n this.group.parentReferenceId = this.group.zModel[\r\n this.group.parentReferenceField\r\n ];\r\n }\r\n return this.mainService.afterPageInitialise(this.group);\r\n })\r\n );\r\n // .subscribe(() => {\r\n // console.log(\"At activity-one.page ngOnInit() completed\");\r\n // this.group.isLoading = false;\r\n // });\r\n }\r\n\r\n pageDestroy(): void {\r\n console.log(this.group.pageName + \" ngOnDestroy.\");\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup, ZCoreService, AuthService, ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-uiheader\",\r\n templateUrl: \"./uiheader.component.html\",\r\n styleUrls: [\"./uiheader.component.scss\"]\r\n})\r\nexport class UiheaderComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() topFormHeader: string;\r\n public formHeader: string;\r\n public profileImgUrl: string;\r\n public username: string;\r\n public userDisplayName: string;\r\n // backNavigate = null;\r\n\r\n constructor(\r\n private router: Router,\r\n private zcoreService: ZCoreService,\r\n private authService: AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // if (this.group.backNavigationPage) {\r\n // if (this.group.backNavigationPage.indexOf('/', 1) > 1) {\r\n // this.backNavigate = this.group.backNavigationPage;\r\n // } else {\r\n // this.backNavigate = \"/_appmenu/\" + this.group.backNavigationPage;\r\n // }\r\n // }\r\n const environment = this.zcoreService.getEnvironment();\r\n this.profileImgUrl = environment.e1OauthUrl + '/api/ProfileImage?id=' + this.authService.e1Token.myProfile.UserName + '&size=80x80';\r\n const _myProfile = this.authService.e1Token.myProfile;\r\n if (_myProfile) {\r\n this.username = _myProfile.UserName;\r\n this.userDisplayName = _myProfile.LastName;\r\n }\r\n\r\n if (this.topFormHeader) {\r\n this.formHeader = this.topFormHeader;\r\n }\r\n }\r\n\r\n public bindFormHeader() { \r\n if (!this.topFormHeader) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n \r\n public onLogout() {\r\n this.authService.logout();\r\n this.router.navigateByUrl('/auth');\r\n }\r\n\r\n public isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n// import { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { ZGroup, ZComponentHelper, ZCoreService } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uicontent',\r\n templateUrl: './uicontent.component.html',\r\n styleUrls: ['./uicontent.component.scss'],\r\n})\r\nexport class UicontentComponent implements OnInit {\r\n\r\n @Input() group: ZGroup;\r\n\r\n constructor(\r\n private zcoreService: ZCoreService\r\n ) { }\r\n\r\n ngOnInit() {\r\n console.log(this.group);\r\n }\r\n\r\n isSITEnvironment() {\r\n // return environment.e1OauthUrl.startsWith('https://oauthdev.');\r\n return this.zcoreService.isDebugSession() && !this.isFieldElement();\r\n }\r\n\r\n isFieldElement() {\r\n return this.group.fieldName === 'field';\r\n // return false;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { FaIconLibrary } from '@fortawesome/angular-fontawesome';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup } from \"mmhglobal-zcore\";\r\n\r\n\r\nexport interface UiMenuContentItem {\r\n url: string;\r\n icon: string | Array<string>;\r\n title: string;\r\n}\r\n\r\nexport interface UiMenuContentCategory {\r\n category:string;\r\n content:Array<UiMenuContentItem>\r\n}\r\n\r\n@Component({\r\n selector: 'app-uimenucontent',\r\n templateUrl: './uimenucontent.component.html',\r\n styleUrls: ['./uimenucontent.component.scss'],\r\n})\r\nexport class UimenucontentComponent implements OnInit {\r\n @Input() items: Array<UiMenuContentCategory> | Array<UiMenuContentItem>;\r\n\r\n \r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.items && this.items.length > 0) {\r\n console.error('Pls stop use hardcode submenu. Now the submenu can define in e1 Menu Relationship.');\r\n }\r\n }\r\n\r\n CheckisCategory(e: UiMenuContentCategory | UiMenuContentItem): e is UiMenuContentCategory { \r\n return (<UiMenuContentCategory>e).category !== undefined;\r\n }\r\n\r\n isCategory(){\r\n let v = false;\r\n if (this.items.length > 0) {\r\n if (this.CheckisCategory(this.items[0])) {\r\n v = true;\r\n }\r\n }\r\n return v; \r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { MenuController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\n// import { AsyncSubject, of } from 'rxjs';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uimenubutton',\r\n templateUrl: './uimenubutton.component.html',\r\n styleUrls: ['./uimenubutton.component.scss'],\r\n})\r\nexport class UimenubuttonComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n\r\n constructor(\r\n public menuCtrl: MenuController,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n\r\n toggleMenu() {\r\n this.menuCtrl.toggle();\r\n }\r\n\r\n backNavigate() {\r\n if (this.group.beforeBackNavigationPage) {\r\n this.group.beforeBackNavigationPage(this.group).subscribe(() => {\r\n this.router.navigate([this.group.backNavigationPage]);\r\n })\r\n }\r\n else {\r\n this.router.navigate([this.group.backNavigationPage]);\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { OAuthMenuItem, MenuService, AuthService, ZComponentHelper, ZCoreService } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uiappmenucontent',\r\n templateUrl: './uiappmenucontent.component.html',\r\n styleUrls: ['./uiappmenucontent.component.scss'],\r\n})\r\nexport class UiappmenucontentComponent implements OnInit {\r\n @Input() items: Array<OAuthMenuItem>;\r\n\r\n colorArray: any[] = [\r\n { stroke: '#F59600', color: '#F59600' },\r\n\r\n { stroke: '#F5C800', color: '#F5C800' },\r\n { stroke: '#F5EF00', color: '#F5EF00' },\r\n { stroke: '#8FE300', color: '#8FE300' },\r\n { stroke: '#00B33D', color: '#00B33D' },\r\n { stroke: '#095D9D', color: '#095D9D' },\r\n { stroke: '#2116AA', color: '#2116AA' },\r\n\r\n { stroke: '#6509A4', color: '#6509A4' },\r\n { stroke: '#C4006F', color: '#C4006F' },\r\n { stroke: '#F52B00', color: '#F52B00' }\r\n ];\r\n\r\n constructor(\r\n private router: Router,\r\n private menuService: MenuService,\r\n private authService: AuthService,\r\n private zcoreService: ZCoreService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public getDivClass(item) {\r\n return item.Type === 'dropdown-submenu' ? 'flex-show' : 'col-xs-4 col-sm-4 col-md-3 col-xl-2';\r\n }\r\n\r\n public getMenuList(item) {\r\n return item.Type === 'dropdown-submenu' ? this.menuService.getMenuFolder(item.URL) : null;\r\n }\r\n\r\n public menuOnClick(pathName: string, appClientPath?: string) {\r\n const startupPage: string = this.zcoreService.getEnvironment().startUpPage;\r\n\r\n if (appClientPath && startupPage.toLocaleLowerCase() == 'launcher') {\r\n ZComponentHelper.openAppClientPath(pathName, appClientPath, this.authService); \r\n return false;\r\n }\r\n else {\r\n this.router.navigate([pathName]);\r\n }\r\n } \r\n\r\n private setMapInput(key: string, value: string) {\r\n const mapInput = document.createElement('input');\r\n mapInput.type = 'hidden';\r\n mapInput.name = key;\r\n mapInput.setAttribute('value', value);\r\n\r\n return mapInput;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, Directive } from '@angular/core'; \r\nimport { Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\nimport { ActionSheetController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, WebApiService, ResourceApiService, WorkflowService,\r\n ZGroup, ZField, ZComponentProperties, ZComponentHelper,\r\n ZComponentOutputEvent\r\n} from 'mmhglobal-zcore'; \r\n\r\n\r\n@Component({\r\n selector: 'app-uiactionbutton',\r\n templateUrl: './uiactionbutton.component.html',\r\n styleUrls: ['./uiactionbutton.component.scss'],\r\n})\r\n\r\nexport class UiactionbuttonComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n topRightActionButton: any[] = [];\r\n actionBtnList: Array<ZField>;\r\n isWorkflowButton: boolean = false;\r\n // visible:boolean = true;\r\n private data: any;\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService,\r\n private actionSheetCtrl: ActionSheetController\r\n ) { }\r\n\r\n /******************** Common function ********************/\r\n ngOnInit() {\r\n this.data = this.getFirstzButton(this.group.fields);\r\n // this.visible = ZComponentHelper.isVisible(buttonData);\r\n\r\n if (this.data) {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {\r\n // handle as zWorkflowButton\r\n this.isWorkflowButton = true;\r\n this.loadWorkflowButton();\r\n }\r\n else {\r\n // handle as zButton\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n field$.subscribe((data: Array<ZField>) => {\r\n this.actionBtnList = data;\r\n this.reloadButtonList();\r\n });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n private isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n /******************** zButton ********************/\r\n getFirstzButton(data: any[]) {\r\n // data.forEach(d => {\r\n for (let i = 0; i < data.length - 1; i++) {\r\n if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n return data[i];\r\n } else {\r\n if (Array.isArray(data[i].Value)) {\r\n this.getFirstzButton(data[i].Value);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onAction() {\r\n if (this.isWorkflowButton) {\r\n //this.loadWorkflowButton();\r\n this.actionSheetCtrl\r\n .create({\r\n header: \"Choose an Action\",\r\n buttons: this.topRightActionButton\r\n })\r\n .then(actionSheetEl => {\r\n actionSheetEl.present();\r\n });\r\n }\r\n else {\r\n //this.reloadButtonList();\r\n this.actionSheetCtrl\r\n .create({\r\n header: \"Choose an Action\",\r\n buttons: this.topRightActionButton\r\n })\r\n .then(actionSheetEl => {\r\n actionSheetEl.present();\r\n });\r\n }\r\n }\r\n\r\n private reloadButtonList() {\r\n this.topRightActionButton = [];\r\n this.actionBtnList.forEach((button: ZField) => {\r\n const visible = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n button.Visible,\r\n this.group\r\n );\r\n if (visible !== false) {\r\n const label = this.getButtonLabel(button);\r\n const buttonRole = this.getButtonRole(button, label);\r\n this.topRightActionButton.push({\r\n text: label,\r\n handler: () => {\r\n this.buttonClick(button);\r\n },\r\n role: buttonRole\r\n });\r\n }\r\n });\r\n }\r\n\r\n private buttonClick(button: any) {\r\n // debugger;\r\n this.group['DismissType'] = button.DismissType;\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private getButtonLabel(button: any) {\r\n let buttonLabel = button.Label;\r\n if (!buttonLabel) {\r\n buttonLabel = button.Name;\r\n }\r\n\r\n let labelExpr = buttonLabel.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return buttonLabel;\r\n }\r\n }\r\n\r\n private getButtonRole(button: any, label: string) {\r\n // console.log(\"getButtonRole: \", label, button.ClickEvent);\r\n const lowerCaseLabel = label.toLowerCase();\r\n if (\r\n lowerCaseLabel.indexOf(\"cancel\") !== -1 ||\r\n lowerCaseLabel.indexOf(\"close\") !== -1\r\n ) {\r\n return \"cancel\";\r\n }\r\n return null;\r\n }\r\n\r\n /******************** zWorkflowButton ********************/\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n private loadWorkflowButton() {\r\n // actionBtnList: Array<ZField>;\r\n this.topRightActionButton = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n try {\r\n // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(false)\r\n );\r\n\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n\r\n if (_isVisible) {\r\n this.topRightActionButton.push({\r\n text: buttonLabel,\r\n fieldAttribute: button,\r\n iconName: attributes.Icon,\r\n handler: (y) => {\r\n this.workflowButtonClick(button);\r\n }\r\n });\r\n }\r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n });\r\n\r\n if (!this.data.DisableSyncWorkflowStatus) {\r\n // Set default status\r\n // eslint-disable-next-line @typescript-eslint/dot-notation\r\n if (!this.group.zModel[\"WFS_StatusName\"]) {\r\n const params = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n map(res => {\r\n if (res.Data) {\r\n ZComponentHelper.presetModelValue(\"WFS_StatusId\", res.Data[\"Id\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusName\", res.Data[\"Name\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusCode\", res.Data[\"Code\"], this.group);\r\n\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n ).subscribe();\r\n } else {\r\n // When loading also to get current Status Information if any.\r\n const docInfoParam = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode,\r\n \"DocumentId\": documentId,\r\n };\r\n\r\n this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n map(res => {\r\n this.workflowService.setCurrentDocumentStatus(res);\r\n if (res.Data) {\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n workflowButtonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {\r\n this.loadWorkflowButton();\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup, ZField, ZComponentHelper } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-uivalidationmessage',\r\n templateUrl: './uivalidationmessage.component.html',\r\n styleUrls: ['./uivalidationmessage.component.scss'],\r\n})\r\nexport class UivalidationmessageComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() data: ZField;\r\n @Input() form: FormGroup;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n getValidationError(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getValidationError(form, data);\r\n } \r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIconClass() {\r\n if (!this.isMobileScreen()) {\r\n return \"k-icon k-i-warning validation_icon\"\r\n }\r\n else {\r\n return \"k-icon k-i-warning\"\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zbullet',\r\n templateUrl: './zbullet.component.html',\r\n styleUrls: ['./zbullet.component.scss'],\r\n})\r\nexport class ZBulletComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n dataSource: Array<any>;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.data.ListType = this.data.ListType ? this.data.ListType : \"ul\";\r\n this.setupDataSource();\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n \r\n private setupDataSource() {\r\n if (!this.data.DataSource) {\r\n console.error(\"No data source found for zhip\");\r\n return;\r\n }\r\n\r\n if (this.data.DataSource.indexOf(\"group.\") !== -1) {\r\n this.dataSource = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n }\r\n else {\r\n this.dataSource = this.data.DataSource as any;\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isVisible() {\r\n if (this.componentProperties.isVisible === null) {\r\n return ZComponentHelper.isVisible.call(this, this.data);\r\n } else {\r\n return this.componentProperties.isVisible;\r\n }\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setData = (data: any) => {\r\n this.dataSource = data;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass}`;\r\n }\r\n}","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, ZComponent, ZComponentHelper, \r\n ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup, FontAweSomeService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-zbuttons\",\r\n templateUrl: \"./zbuttons.component.html\",\r\n styleUrls: [\"./zbuttons.component.scss\"]\r\n})\r\nexport class ZbuttonsComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n items: Array<any> = [];\r\n FirstZbtn = false;\r\n componentProperties = new ZComponentProperties();\r\n expand = \"\";\r\n\r\n constructor(\r\n private fieldService: FieldService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\", null, null\r\n );\r\n\r\n this.group.zButtonsCount++;\r\n if (this.group.zButtonsCount === 1) {\r\n this.FirstZbtn = true;\r\n }\r\n\r\n this.expand = this.data.Expand || \"\";\r\n\r\n try {\r\n field$.subscribe(data => {\r\n // this.items = data;\r\n data.forEach((button: any) => {\r\n if (this.data.SubType) {\r\n button.Name = this.data.SubType + '_' + button.Name; \r\n } \r\n\r\n const label = this.getButtonLabel(button);\r\n\r\n let buttonDisabled = null;\r\n\r\n if (button.Disabled != \"\" && button.Disabled) {\r\n buttonDisabled = button.Disabled === 'true' ? true : ZComponentHelper.getGroupEvalValue.call(this, button.Disabled);\r\n }\r\n\r\n const fill = button['Fill'] ? button['Fill'] : 'outline';\r\n const color = button.Color ? button.Color : 'dark';\r\n\r\n this.items.push({\r\n name: button.Name,\r\n text: label,\r\n icon: ZComponentHelper.getIcon(button.Icon),\r\n visible: button.Visible,\r\n disabled: buttonDisabled,\r\n clickEvent: button.ClickEvent,\r\n iconName: button.Icon,\r\n dismissType: button.DismissType,\r\n disableTriggerTimer: button.DisableTriggerTimer,\r\n fill: fill,\r\n color: color,\r\n SubType: this.data.SubType,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n }); \r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n public setLabelText(newText: string, name: string) {\r\n const btn = this.items.find(x => x.name === name);\r\n if (btn) {\r\n btn.text = newText;\r\n }\r\n }\r\n\r\n private buttonClick(button: any) {\r\n // debugger;\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!this.data['DisableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n BtnClick(item: any) {\r\n // debugger;\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!item['disableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n this.group['DismissType'] = item.dismissType;\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: item.clickEvent,\r\n data: item\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private getButtonLabel(button: any) {\r\n if (button.Label) {\r\n let labelExpr = button.Label.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return button.Label;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private getButtonRole(button: any, label: string) {\r\n // console.log(\"getButtonRole: \", label, button.ClickEvent);\r\n const lowerCaseLabel = label.toLowerCase();\r\n if (\r\n lowerCaseLabel.indexOf(\"cancel\") !== -1 ||\r\n lowerCaseLabel.indexOf(\"close\") !== -1\r\n ) {\r\n return \"cancel\";\r\n }\r\n return null;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties, AuthService, FontAweSomeService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zcard\",\r\n templateUrl: \"./zcard.component.html\",\r\n styleUrls: [\"./zcard.component.scss\"],\r\n})\r\nexport class ZcardComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n // classStyleObservables: Array<BehaviorSubject<string>>;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) { }\r\n\r\n options = {\r\n Title: '',\r\n Icon:'Folder'\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.Title = field.Title.includes(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(this, field.Title) : field.Title;\r\n //options.Icon = ZComponentHelper.getIcon(field.Icon.toString())||options.Icon;\r\n }\r\n \r\n public setData = (gData: any) => {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n // getFontAwesome(iconName: string) {\r\n // return ZComponentHelper.getFontAwesome(iconName);\r\n // }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { groupBy, GroupResult } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zchart',\r\n templateUrl: './zchart.component.html',\r\n styleUrls: ['./zchart.component.scss'],\r\n})\r\nexport class ZchartComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private series: any[] = [];\r\n // = [{\r\n // type: '',\r\n // style: 'smooth',\r\n // name: 'India',\r\n // data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]\r\n // }, {\r\n // type: '',\r\n // style: 'smooth',\r\n // name: 'Russian Federation',\r\n // data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]\r\n // }, {\r\n // type: 'bar',\r\n // style: 'smooth',\r\n // name: 'Germany',\r\n // data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]\r\n // }, {\r\n // type: 'area',\r\n // style: 'smooth',\r\n // name: 'World',\r\n // data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]\r\n // }];\r\n\r\n private categories = [];\r\n // [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011];\r\n\r\n options = {\r\n title: 'Chart Title Here',\r\n renderAs: 'canvas', // svg\r\n pannable: false,\r\n zoomable: false,\r\n categoryAxis: {\r\n categories: this.categories,\r\n max: 10,\r\n maxDivisions: null,\r\n labels: { rotation: 'auto' }\r\n },\r\n labels: {\r\n visible: false,\r\n background: \"transparent\"\r\n },\r\n series: this.series,\r\n dataType: 'bar',\r\n dataStyle: 'smooth',\r\n legendPosition: 'bottom',\r\n legendOrientation: 'horizontal',\r\n tooltipFormat: '{0}%',\r\n aggregateType: 'sum',\r\n dataField: null,\r\n categoryField: null,\r\n color: '#05A2FE',\r\n };\r\n\r\n // fieldElement01 = [{\r\n // Name: 'chart01',\r\n // Type: 'zchart',\r\n // Options: 'group.chart01Options',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n // fieldElement02 = [{\r\n // Name: 'chart01',\r\n // Type: 'zchart',\r\n // Title: 'Chart01 Title',\r\n // RenderAs: 'svg',\r\n // Pannable: true,\r\n // Zoomable: true,\r\n // Categories: 'group.chart01Categories',\r\n // Max: 10,\r\n // MaxDivisions: null,\r\n // Rotation: 'auto',\r\n // Series: 'group.chart01Series',\r\n // DataType: 'bar',\r\n // DataStyle: 'smooth',\r\n // LegendPosition: 'bottom',\r\n // LegendOrientation: 'horizonal',\r\n // TooltipFormat: '{0}',\r\n // AggregateType: 'sum',\r\n // DataField: null,\r\n // CategoryField: null,\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof(optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n if (this.data.Options && this.data.Options.categoryAxis && this.data.Options.categoryAxis.categories && typeof (this.data.Options.categoryAxis.categories) === 'string') {\r\n this.options.categoryAxis.categories =\r\n ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.categoryAxis.categories);\r\n }\r\n\r\n if (this.data.Options && this.data.Options.series && typeof (this.data.Options.series) === 'string') {\r\n this.options.series =\r\n ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.series);\r\n }\r\n\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.title = field.Title || options.title;\r\n options.renderAs = field.RenderAs || options.renderAs;\r\n options.pannable = field.Pannable || options.pannable;\r\n options.zoomable = field.Zoomable || options.zoomable;\r\n options.categoryAxis.categories = ZComponentHelper.getGroupEvalValue.call(this, field.Categories) || [];\r\n options.categoryAxis.max = field.Max || options.categoryAxis.max;\r\n options.categoryAxis.maxDivisions = field.MaxDivisions || options.categoryAxis.maxDivisions;\r\n options.categoryAxis.labels.rotation = field.Rotation || options.categoryAxis.labels.rotation;\r\n options.series = ZComponentHelper.getGroupEvalValue.call(this, field.Series) || [];\r\n options.dataType = field.DataType || options.dataType;\r\n options.dataStyle = field.DataStyle || options.dataStyle;\r\n options.legendPosition = field.LegendPosition || options.legendPosition;\r\n options.legendOrientation = field.LegendOrientation || options.legendOrientation;\r\n options.tooltipFormat = field.TooltipFormat || options.tooltipFormat;\r\n options.aggregateType = field.AggregateType || options.aggregateType;\r\n options.dataField = field.DataField || options.dataField;\r\n options.categoryField = field.CategoryField || options.categoryField;\r\n }\r\n\r\n public onRender(e): void {\r\n // console.log('render');\r\n }\r\n\r\n public onAxisLabelClick(e): void {\r\n // console.log('axisLabelClick', e);\r\n }\r\n\r\n public onLegendItemClick(e): void {\r\n // console.log('legendItemClick', e);\r\n }\r\n\r\n public onLegendItemHover(e): void {\r\n // console.log('legendItemHover', e);\r\n }\r\n\r\n public onPlotAreaClick(e): void {\r\n // console.log('plotAreaClick', e);\r\n }\r\n\r\n public onPlotAreaHover(e): void {\r\n // console.log('plotAreaHover', e);\r\n }\r\n\r\n public onSeriesClick(e): void {\r\n // console.log('seriesClick', e);\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc(e);\r\n }\r\n return;\r\n }\r\n\r\n public onSeriesHover(e): void {\r\n // console.log('seriesHover', e);\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zcheckbox\",\r\n templateUrl: \"./zcheckbox.component.html\",\r\n styleUrls: [\"./zcheckbox.component.scss\"],\r\n})\r\nexport class ZcheckboxComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: any = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n public useKendoSwitch: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.tooltipsInfo = this.data['TooltipsInfo'];\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo['Icon'] != null || this.tooltipsInfo['Icon'] != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo['SideBySide']) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n \r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n this.useKendoSwitch = this.data.UseKendoSwitch ? this.data.UseKendoSwitch : false;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n onSwitchChange(event: any) {\r\n ZComponentHelper.setModelValue(this.data.Value, event, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: { value: event, field: this.data },\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onChange(event: any) {\r\n if (this.data.OnChange) {\r\n const callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.OnChange\r\n );\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(this.group.ctrlScope);\r\n newFunc(event);\r\n }\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n };\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n };\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(\r\n status,\r\n this.group,\r\n this.data.Value,\r\n this.componentProperties,\r\n Validators.required\r\n );\r\n };\r\n\r\n public getLabelStyle() {\r\n return {\r\n order:\r\n this.data.LabelOrder &&\r\n this.data.LabelOrder === \"end\" &&\r\n this.data.LabelPosition !== \"stacked\"\r\n ? 2\r\n : 0,\r\n \"white-space\": \"normal\",\r\n };\r\n }\r\n\r\n public getCheckboxClass() {\r\n const classList = [];\r\n if (this.data.LabelDivClass) {\r\n this.data.LabelDivClass.split(\" \").forEach((x) => {\r\n if (x.indexOf(\"col\") !== -1) {\r\n const divClassSegment = x.split(\"-\");\r\n divClassSegment[divClassSegment.length - 1] = (\r\n 12 - parseInt(divClassSegment[divClassSegment.length - 1])\r\n ).toString();\r\n classList.push(divClassSegment.join(\"-\"));\r\n } else {\r\n classList.push(x);\r\n }\r\n });\r\n }\r\n\r\n return classList.join(\" \");\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `ionItem ${this.data.Class}`;\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo['TextColor']) {\r\n return this.tooltipsInfo['TextColor'];\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() { \r\n if (this.tooltipsInfo ) {\r\n if (this.tooltipsInfo ['SideBySide'] && !this.showTooltipsInfoIcon) {\r\n return 'tooltipsinfo-right';\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n return 'notooltipsinfo-adjustment';\r\n }\r\n\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TooltipDirective } from '@progress/kendo-angular-tooltip';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties, AuthService \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zchip',\r\n templateUrl: './zchip.component.html',\r\n styleUrls: ['./zchip.component.scss'],\r\n})\r\nexport class ZChipComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n private icon = \"k-icon k-i-cancel\";\r\n private selectedIcon = \"k-icon k-i-check-circle\";\r\n public componentProperties = new ZComponentProperties();\r\n public dataSource;\r\n @ViewChild(TooltipDirective, { static: false }) public tooltipDir: TooltipDirective;\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.setupDataSource();\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n private setupDataSource() {\r\n if (!this.data.DataSource) {\r\n console.error(\"No data source found for zhip\");\r\n return;\r\n }\r\n\r\n if (this.data.DataSource.indexOf(\"group.\") !== -1) {\r\n this.dataSource = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n }\r\n else {\r\n this.dataSource = this.data.DataSource;\r\n }\r\n\r\n if (Array.isArray(this.dataSource)) {\r\n this.dataSource.forEach(x => {\r\n x.Label = x.Label ? x.Label : x.Value,\r\n x.Icon = !!x.Selected ? null : (x.Icon ? x.Icon : this.icon),\r\n x.SelectedIcon = x.SelectedIcon ? x.SelectedIcon : this.selectedIcon,\r\n x._Icon = x.Icon ? x.Icon : this.icon;\r\n x._Selected = x.Selected;\r\n })\r\n }\r\n }\r\n\r\n public getClass() {\r\n return this.data.DivClass;\r\n }\r\n\r\n public getChipClass(chip) {\r\n return chip.Class ? chip.Class : \"\";\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public chipListChangeSelection(selectedChipIndexes: any): void {\r\n let ind = 0;\r\n for (let chip of this.dataSource) {\r\n if (selectedChipIndexes.includes(ind)) {\r\n chip.Icon = null\r\n }\r\n else {\r\n chip.Icon = this.dataSource.find(x => x.Value === chip.Value)._Icon;\r\n }\r\n ind++;\r\n }\r\n }\r\n\r\n public chipChangeSelection(chip: any) {\r\n this.dataSource.find(x => x.Value === chip.Value)._Selected = !chip._Selected;\r\n\r\n if (this.data.OnChange) {\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public getDataValue(): any {\r\n return this.dataSource as any;\r\n }\r\n\r\n public mouseover(event: any, chip: any) {\r\n if (this.data.OnHover) {\r\n this.group.subject.next({\r\n type: \"onHover\",\r\n target: this.data.OnHover,\r\n data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n if (!!this.data['IsShowToolTip']) {\r\n this.showTooltip(event);\r\n }\r\n }\r\n\r\n public showTooltip(e: MouseEvent): void {\r\n const element = e.target as HTMLElement;\r\n this.tooltipDir.toggle(element);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from \"rxjs\";\r\nimport { delay } from \"rxjs/operators\";\r\nimport { AceEditorComponent } from \"ng2-ace-editor\";\r\nimport \"brace\";\r\nimport \"brace/theme/eclipse\";\r\nimport \"brace/mode/json\";\r\nimport \"brace/mode/javascript\";\r\nimport \"brace/mode/html\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\ndeclare let ace: any;\r\n\r\n// import { EditorComponent } from 'ngx-monaco-editor';\r\n// import { EditorOptions } from \"ngx-monaco-editor\";\r\n\r\n@Component({\r\n selector: \"app-zcodeeditor\",\r\n templateUrl: \"./zcodeeditor.component.html\",\r\n styleUrls: [\"./zcodeeditor.component.scss\"]\r\n})\r\nexport class ZcodeeditorComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n code: string | string[] = \"\";\r\n theme = \"eclipse\";\r\n mode = \"javascript\";\r\n subscription: Subscription;\r\n componentProperties = new ZComponentProperties();\r\n \r\n private widthReduce: number;\r\n private heightReduce: number;\r\n\r\n @ViewChild(\"editor\") editor: AceEditorComponent;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n\r\n // const codeValue = this.getValue();\r\n // if (codeValue) {\r\n // this.code = codeValue;\r\n // }\r\n if (this.data.Type === \"textareajson\") {\r\n this.mode = \"json\";\r\n } else if (this.data.Type === \"textareahtml\") {\r\n this.mode = \"html\";\r\n }\r\n console.log(\"zcodeeditor OnInit\");\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n // https://github.com/fxmontigny/ng2-ace-editor/blob/master/sample/src/app/app.component.ts\r\n // ngAfterViewInit() {\r\n // const Range = ace.require('ace/range')['Range'];\r\n // this.editor\r\n // .getEditor()\r\n // .session.addMarker(new Range(0, 0, 2, 1), 'myMarker', 'fullLine');\r\n\r\n // this.editor.getEditor().session.setOption('useWorker', true);\r\n // }\r\n\r\n getValue() {\r\n let v;\r\n if (this.data.Value.indexOf('.') !== -1) {\r\n v = this.data.Value;\r\n } else {\r\n v = \"group.zModel.\" + this.data.Value;\r\n }\r\n const evalValue = ZComponentHelper.getEvalValue.call(this, v);\r\n if (typeof evalValue === 'function') {\r\n const nextValue = evalValue();\r\n if (nextValue) {\r\n try {\r\n const evalNextValue = ZComponentHelper.getEvalValue.call(this, nextValue, true);\r\n if (typeof evalNextValue === 'boolean') {\r\n return evalNextValue.toString();\r\n }\r\n if (evalNextValue === undefined) {\r\n return 'undefined';\r\n }\r\n if (evalNextValue === null) {\r\n return 'null';\r\n }\r\n return evalNextValue;\r\n } catch {\r\n return;\r\n }\r\n } else {\r\n return;\r\n }\r\n } else {\r\n return evalValue;\r\n }\r\n // if (this.data.Type === \"textareajson\") {\r\n // if (typeof evalValue === \"string\") {\r\n // const jsonValue = JSON.parse(evalValue);\r\n // return JSON.stringify(jsonValue, null, 2);\r\n // }\r\n // if (typeof evalValue === \"object\" || Array.isArray(evalValue)) {\r\n // return JSON.stringify(evalValue, null, 2);\r\n // }\r\n // }\r\n // if (typeof evalValue === 'string') {\r\n // return evalValue;\r\n // }\r\n // // debugger;\r\n // console.warn(\r\n // \"zcodeeditor - Invalid field.Value (\" + this.data.Value + \") setting \",\r\n // evalValue\r\n // );\r\n // return \"\";\r\n }\r\n\r\n getEditorStyle() {\r\n // debugger;\r\n // return { \"height.px\": 500, \"width.px\": window.innerWidth - 60 }; // \"width.px\": this.innerWidth - 25\r\n return {\r\n \"height.px\": this.getEditorHeight(),\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n };\r\n }\r\n\r\n private getEditorHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 180) ? 180 : h;\r\n }\r\n\r\n onTextChange(newValue: any) {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n // console.log('onTextChange: ', newValue);\r\n this.subscription = of([])\r\n .pipe(delay(500))\r\n .subscribe(() => {\r\n ZComponentHelper.setModelValue(this.data.Value, newValue, this.group, true);\r\n this.group.subject.next({\r\n type: \"zcodeeditor-TextChanged\",\r\n target: this.data.OnChange,\r\n data: newValue\r\n } as ZComponentOutputEvent);\r\n });\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DateRangeService } from '@progress/kendo-angular-dateinputs';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zdaterange',\r\n templateUrl: './zdaterange.component.html',\r\n styleUrls: ['./zdaterange.component.scss'],\r\n})\r\nexport class ZdaterangeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild('zdaterange') public zdaterange: DateRangeService;\r\n // @ViewChild('endDateInput', { static: true }) public endInput: ElementRef;\r\n range: { start: Date, end: Date} = { start: null, end: null};\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n const rangeDateArray = this.data.Value.split(',');\r\n const fromDateString = rangeDateArray[0].trim();\r\n const toDateString = rangeDateArray[1].trim();\r\n \r\n const fromDate = ZComponentHelper.getGroupEvalValue.call(this, fromDateString);\r\n const toDate = ZComponentHelper.getGroupEvalValue.call(this, toDateString);\r\n // this.range = {\r\n // start: fromDate,\r\n // end: toDate\r\n // }\r\n\r\n\r\n const options = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (options) {\r\n if (options.min && options.max) {\r\n this.setNewRange(new Date(options.min), new Date(options.max));\r\n }\r\n }\r\n\r\n }\r\n\r\n setNewRange(min: Date, max: Date) {\r\n this.zdaterange.setRange({\r\n start: min,\r\n end: max\r\n });\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { PreventableEvent } from '@progress/kendo-angular-dateinputs';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zdatetime\",\r\n templateUrl: \"./zdatetime.component.html\",\r\n styleUrls: [\"./zdatetime.component.scss\"],\r\n})\r\nexport class ZdatetimeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n dateFormat = \"DD-MMM-YYYY\";\r\n // dateValue = null;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Type === \"ztime\") {\r\n this.dateFormat = \"HH:mm\";\r\n }\r\n if (this.data.Type === \"zuidatetime\") {\r\n this.dateFormat = \"DD-MMM-YYYY h:mm A\";\r\n }\r\n if (this.data.Type === \"zuitime\") {\r\n this.dateFormat = \"HH:mm:ss\";\r\n }\r\n\tif (this.data.Type === \"zshortdate\") {\r\n this.dateFormat = \"MMM-YYYY\";\r\n }\r\n // if (this.group.zModel[this.data.Value]) {\r\n // this.dateValue = new Date(this.group.zModel[this.data.Value]);\r\n // }\r\n }\r\n\r\n toKendoDateFormat() {\r\n return this.dateFormat\r\n .replace(\"DD\", \"dd\")\r\n .replace(\"YYYY\", \"yyyy\")\r\n .replace(\"h\", \"H\")\r\n .replace(\"A\", \"a\");\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.ReadOnly,\r\n this.group\r\n );\r\n if (typeof readOnlyValue === \"function\") {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getDateValue() {\r\n const value = this.form.controls[this.data.Value].value;\r\n if (value) {\r\n return new Date(value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public GetDate(date: Date) {\r\n // convert the date to ISOString\r\n const myDate = new Date(date).toISOString();\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(this.data.Value, myDate, this.group);\r\n }\r\n\r\n public onChange(value: Date): void {\r\n // console.log(\r\n // \"date change \",\r\n // value.toISOString(),\r\n // \" date value: \",\r\n // new Date(value.toISOString())\r\n // );\r\n // // this.group.zModel[this.data.Value] = value.toISOString();\r\n // const v = value.toISOString();\r\n // this.dateValue = new Date(value.toISOString());\r\n if (value === null) {\r\n ZComponentHelper.setModelValue(\r\n this.data.Value,\r\n value,\r\n this.group\r\n );\r\n } else {\r\n ZComponentHelper.setModelValue(\r\n this.data.Value,\r\n value.toISOString(),\r\n this.group\r\n );\r\n\r\n const fc = this.form.controls[this.data.Value];\r\n fc.setValue(value.toISOString());\r\n }\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n data: value,\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public SetDateRange = (MinDate: string,MaxDate: string): any =>\r\n {\r\n var thisComponent = this;\r\n\r\n if (!isNaN(Date.parse(MinDate)))\r\n {\r\n this.data.MinDate = new Date(MinDate);\r\n }\r\n if (!isNaN(Date.parse(MaxDate)))\r\n {\r\n this.data.MaxDate = new Date(MaxDate);\r\n }\r\n }\r\n\r\n public handlePreventableEvent(event: PreventableEvent, eventName: string, preventDefault: boolean): void {\r\n // keep \"this\" to use in binding.\r\n var thisComponent = this;\r\n\r\n // need a timeout for ui to display the calender popup\r\n setTimeout(function () {\r\n // only available when popup is shown, get the element by class\r\n // for date\r\n thisComponent.dateAppendEvent(thisComponent);\r\n\r\n // for time\r\n thisComponent.timeAppendEvent(thisComponent);\r\n }, 500);\r\n }\r\n\r\n private dateAppendEvent(thisComponent: any) {\r\n let dateCell = $(\"tbody.k-calendar-tbody\").find(\"td.k-calendar-td\");\r\n for (var i = 0; i < dateCell.length; i++) {\r\n const node = dateCell[i];\r\n\r\n if (node.title != \"\") {\r\n // when date clicked\r\n node.addEventListener(\"click\", function () {\r\n if (!isNaN(Date.parse(node.title))) {\r\n const nodeDate = new Date(node.title).toISOString();\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(thisComponent.data.Value, nodeDate, thisComponent.group);\r\n }\r\n\r\n // timeout append time click event\r\n setTimeout(function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n }, 500);\r\n });\r\n }\r\n }\r\n\r\n // Today clicked\r\n const todayDate = $(\"span.k-today\")[0];\r\n todayDate.addEventListener(\"click\", function () {\r\n const dateNow = new Date().toJSON().slice(0, 10).replace(/-/g, '/');\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, dateNow);\r\n\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n });\r\n }\r\n\r\n private timeAppendEvent(thisComponent: any) {\r\n var timeTab = $(\"button.k-button.k-time-tab\")[0];\r\n timeTab.addEventListener(\"click\", function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n });\r\n }\r\n\r\n private nowOnClick(thisComponent: any) {\r\n const nowTime = $(\"button.k-button.k-bare.k-time-now\")[0];\r\n if (nowTime) {\r\n nowTime.addEventListener(\"click\", function (e) {\r\n // get model current value\r\n let valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n const dateTimeNow = new Date();\r\n\r\n // convert current value to datetime\r\n valueDateTime.setHours(dateTimeNow.getHours());\r\n valueDateTime.setMinutes(dateTimeNow.getMinutes());\r\n valueDateTime.setSeconds(dateTimeNow.getSeconds());\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n\r\n private hoursOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const hour = timeWrapper[0].children;\r\n\r\n for (var i = 0; i < hour.length; i++) {\r\n hour[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n let valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new hour\r\n valueDateTime.setHours(nodeValue);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private minutesOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const minutes = timeWrapper[1].children;\r\n\r\n for (var i = 0; i < minutes.length; i++) {\r\n minutes[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n const valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new minute\r\n valueDateTime.setMinutes(nodeValue);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private ampmOnClick(thisComponent: any) {\r\n const timeWrapper = $(\"div.k-time-list-wrapper\").find(\"ul\");\r\n if (timeWrapper.length > 0) {\r\n const ampm = timeWrapper[2].children;\r\n\r\n for (var i = 0; i < ampm.length; i++) {\r\n ampm[i].addEventListener(\"click\", function (e) {\r\n // get clicked node value\r\n const nodeValue = e.currentTarget.textContent;\r\n\r\n // get model current value\r\n const valueDateTime = thisComponent.currentDateTimeValue(thisComponent);\r\n\r\n // set new minutes\r\n var _hour = valueDateTime.getHours();\r\n if (nodeValue.toLowerCase() == \"am\") {\r\n _hour -= 12;\r\n }\r\n else {\r\n _hour += 12;\r\n }\r\n valueDateTime.setHours(_hour);\r\n\r\n // set to Model\r\n thisComponent.setDateTimeToModel(thisComponent, valueDateTime);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private currentDateTimeValue(thisComponent: any) {\r\n // get current value\r\n const zModelValue = ZComponentHelper.getZModelValue(thisComponent.data.Value, thisComponent.group, thisComponent.group.zModel);\r\n\r\n let valueDateTime = new Date();\r\n\r\n if (zModelValue != \"\" && zModelValue != undefined) {\r\n // convert current value to datetime\r\n valueDateTime = new Date(zModelValue);\r\n }\r\n\r\n return valueDateTime\r\n }\r\n\r\n private setDateTimeToModel(thisComponent: any, valueDateTime: any) {\r\n // convert the date to ISOString\r\n const newDateTime = new Date(valueDateTime).toISOString();\r\n\r\n // assign to the zModel\r\n ZComponentHelper.setModelValue(thisComponent.data.Value, newDateTime, thisComponent.group);\r\n\r\n // set timeout do add event again after node clicked. if not it only work 1 time.\r\n setTimeout(function () {\r\n thisComponent.hoursOnClick(thisComponent);\r\n thisComponent.minutesOnClick(thisComponent);\r\n thisComponent.ampmOnClick(thisComponent);\r\n thisComponent.nowOnClick(thisComponent);\r\n }, 500);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties, AuthService,\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zdiv',\r\n templateUrl: './zdiv.component.html',\r\n styleUrls: ['./zdiv.component.scss'],\r\n})\r\nexport class ZdivComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n }\r\n\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, FormControl, ValidatorFn } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from 'rxjs';\r\nimport { switchMap, delay } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { AuthService, FieldService, ZComponentHelper, ZGroup, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-zform\",\r\n templateUrl: \"./zform.component.html\",\r\n styleUrls: [\"./zform.component.scss\"]\r\n})\r\nexport class ZformComponent implements OnInit, OnDestroy {\r\n @Input() group: ZGroup;\r\n @Input() fieldName: string;\r\n form: FormGroup;\r\n fields: Array<ZField>;\r\n isLoading = true;\r\n subscription: Subscription;\r\n fieldIndex = [];\r\n // @ViewChild('frm', {static: true}) form: NgForm;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private debugService: ZComponentDebugService\r\n // private modalService: ModalService,\r\n // private router: Router\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (!this.fieldName) {\r\n this.onInitNormal();\r\n // this.form = this.toFormGroup(this.group.fields);\r\n // this.group.form = this.form;\r\n // this.fields = this.group.fields;\r\n this.isLoading = false;\r\n } else {\r\n this.fieldService.getFormFieldCode(this.fieldName, 'FormField', this, 'fields').pipe(\r\n switchMap(fieldElements => {\r\n if (this.fieldName === 'debug') {\r\n return this.debugService.onStartDebugger(fieldElements, this);\r\n } else {\r\n this.group.fields = fieldElements;\r\n this.onInitNormal();\r\n }\r\n }),\r\n switchMap(() => {\r\n this.isLoading = false;\r\n if (this.group._isDebugging && this.group._debug.isLoading) {\r\n this.group._debug.isLoading = false;\r\n }\r\n return of([]);\r\n }),\r\n delay(500))\r\n .subscribe(() => {\r\n this.debugService.LoadGridData();\r\n this.debugService.loadWorkflowData();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) { // for debugger subscription\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n getGroup() {\r\n if (this.fieldName !== 'debug') {\r\n return this.group;\r\n } else {\r\n return this.group._debug;\r\n }\r\n }\r\n\r\n private onInitNormal() {\r\n this.form = this.toFormGroup(this.group.fields);\r\n this.group.form = this.form;\r\n this.fields = this.group.fields;\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.fields, this.authService);\r\n }\r\n\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n private toFormGroup(fieldElements: Array<ZField>) {\r\n const formControls: { [key: string]: FormControl } = {};\r\n this.getFormControls(fieldElements, formControls);\r\n const newFormGroup = new FormGroup(formControls);\r\n return newFormGroup;\r\n }\r\n\r\n private addToFieldIndex(field: ZField) {\r\n if (!field.Name) {\r\n console.error('Field Name undefined: ', field);\r\n }\r\n if (field.Name && !this.fieldIndex.includes(field.Name)) {\r\n this.fieldIndex.push(field.Name);\r\n } else {\r\n console.error('Field Name Duplication: ' + field.Name + '; ', field);\r\n }\r\n }\r\n\r\n\r\n private getFormControls(\r\n fieldArray: Array<ZField>,\r\n formControls: { [key: string]: FormControl }\r\n ) {\r\n fieldArray.forEach(field => {\r\n this.addToFieldIndex(field);\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n } else {\r\n if (Array.isArray(field.Value)) {\r\n this.getFormControls(field.Value, formControls);\r\n } else {\r\n const isFormControl = ZComponentHelper.isFormControl(field);\r\n const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired);\r\n formControls[field.Value] = new FormControl(\r\n this.group.zModel[field.Value], validators\r\n );\r\n if (ZComponentHelper.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new FormControl(\r\n this.group.zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getReadOnlyValue(field: ZField) {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, field.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n trackByFn(index: number, item): number {\r\n //return item['Type'] + '-' + item['Name'];\r\n return index;\r\n }\r\n\r\n // private getValue(field: ZField) {\r\n // if (field.Type.indexOf('date') !== -1) {\r\n // return new Date(this.group.zModel[field.Value]);\r\n // } else {\r\n // return this.group.zModel[field.Value];\r\n // }\r\n // }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zgauge',\r\n templateUrl: './zgauge.component.html',\r\n styleUrls: ['./zgauge.component.scss'],\r\n})\r\nexport class ZgaugeComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private value = 0;\r\n private title = \"\";\r\n private color = [];\r\n private majorTicks = [{ visible: true, color: '#0000ff' }];\r\n private minorTicks = [{ visible: true, color: '#0000ff' }];\r\n private startAngle = 0;\r\n private endAngle = 180;\r\n private minValue = 0;\r\n private maxValue = 200;\r\n\r\n options = {\r\n value: this.value,\r\n title: this.title,\r\n scaleMax: 50,\r\n colors: this.color,\r\n transitions: false,\r\n majorTicks: this.majorTicks,\r\n minorTicks: this.minorTicks,\r\n minValue: this.minValue,\r\n maxValue: this.maxValue,\r\n reverse: false,\r\n startAngle: this.startAngle,\r\n endAngle: this.endAngle,\r\n rangePlaceholderColor: '#e6e5e5',\r\n labelsColor: '#0000ff',\r\n rangeFrom: 0,\r\n rangeTo: 100,\r\n rangeColor: '#ff6358',\r\n rangeLineCap: 'round',\r\n showLabels: true,\r\n rangeSize: 10,\r\n };\r\n\r\n // fieldElement01 = [{\r\n // Name: 'gauge01',\r\n // Type: 'zgauge',\r\n // Value: 'group.gauge01Value',\r\n // title: 'group.gauge01Title',\r\n // majorTicks: 'group.gauge01MajorTicks',\r\n // minorTicks: 'group.gauge01MinorTicks',\r\n // minValue:'group.gauge01MinValue',\r\n // maxValue:'group.gauge01MaxValue',\r\n // Max: 100,\r\n // Color: 'group.gauge01Color',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true,\r\n // transitions:false,\r\n // reverse:false,\r\n // startAngle: 'group.gauge01StartAngle',\r\n // endAngle: 'group.gauge01EndAngle',\r\n // rangePlaceholderColor:'#e6e5e5',\r\n // labelsColor:'#0000ff',\r\n // rangeFrom:0,\r\n // rangeTo:50,\r\n // rangeColor:'#ff6358',\r\n // rangeLineCap:'round',\r\n // showLabels: true,\r\n // rangeSize:10,\r\n // }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;\r\n options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.scaleMax = field.Max || options.scaleMax;\r\n options.minValue = ZComponentHelper.getGroupEvalValue.call(this, field.MinValue) || options.minValue;\r\n options.maxValue = ZComponentHelper.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue;\r\n options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors;\r\n options.transitions = field.Transitions || options.transitions;\r\n options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;\r\n options.showLabels = field.ShowLabels || options.showLabels;\r\n options.style = field.Style || options.style;\r\n options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;\r\n options.reverse = field.Reverse || options.reverse;\r\n options.startAngle = ZComponentHelper.getGroupEvalValue.call(this, field.StartAngle) || options.startAngle;\r\n options.endAngle = ZComponentHelper.getGroupEvalValue.call(this, field.EndAngle) || options.endAngle;\r\n options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;\r\n options.rangeFrom = ZComponentHelper.getGroupEvalValue.call(this, field.RangeFrom) || options.rangeFrom;\r\n options.rangeTo = ZComponentHelper.getGroupEvalValue.call(this, field.RangeTo) || options.rangeTo;\r\n options.rangeColor = field.RangeColor || options.rangeColor;\r\n options.rangeLineCap = field.RangeLineCap || options.rangeLineCap;\r\n options.rangeSize = field.RangeSize || options.rangeSize;\r\n options.GaugeAlignment = ZComponentHelper.getGroupEvalValue.call(this, field.GaugeAlignment) || options.GaugeAlignment;\r\n options.paddingValue = options.value.toString() === 'NaN' ? options.GaugeAlignment : '0%';\r\n }\r\n\r\n alignment() {\r\n const alignmentStyle = {\r\n \"padding-right\": this.options[\"paddingValue\"]\r\n };\r\n\r\n return alignmentStyle;\r\n }\r\n\r\n public setEnable(status: boolean) {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible(status: boolean) {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire(status: boolean) {\r\n this.componentProperties.isRequired = status;\r\n }\r\n\r\n public setData(gData: any) {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, FormBuilder, Validators, FormControl, FormArray, ValidatorFn } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, of, Subject, Subscription } from \"rxjs\";\r\nimport { tap, delay, map, switchMap, concatMap } from \"rxjs/operators\";\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { GridItem, SelectableSettings } from '@progress/kendo-angular-grid';\r\nimport { SortDescriptor, State, process } from \"@progress/kendo-data-query\";\r\nimport { TooltipDirective } from '@progress/kendo-angular-tooltip';\r\nimport {\r\n GridDataResult,\r\n DataStateChangeEvent,\r\n PageChangeEvent,\r\n CellClickEvent,\r\n GridComponent,\r\n RowArgs,\r\n ColumnReorderEvent\r\n} from \"@progress/kendo-angular-grid\";\r\n\r\n/********** Component & Service **********/\r\n// import { environment } from \"src/environments/environment\";\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZGridBindingDirective } from \"./zgrid.binding.directive\";\r\nimport {\r\n AuthService, WebApiService, ToastService, GridCaching,\r\n ZField, ZGroup, ZComponent, ZComponentProperties, ZComponentHelper, ZComponentOutputEvent, ZCoreService,\r\n ZGridStatePersistingService, ZGridPostApiParams, ZGridSettings, ZGridColumnSettings, ZGridCustomColumn, StorageSessionService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\nexport interface ZGrid {\r\n params: ZGridPostApiParams;\r\n state: State;\r\n columns: any[];\r\n paginationApiPostUrl: string;\r\n data: ZField;\r\n group: ZGroup;\r\n zgrid: ZGridBindingDirective;\r\n inlineEditedFormGroups: FormGroup;\r\n getGridData: () => any[];\r\n getData: () => void;\r\n clearData: () => void;\r\n setData: (data: any) => void;\r\n setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => void;\r\n}\r\n\r\n@Component({\r\n selector: \"app-zgrid\",\r\n templateUrl: \"./zgrid.component.html\",\r\n styleUrls: [\"./zgrid.component.scss\"]\r\n})\r\nexport class ZgridComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(TooltipDirective) public tooltipDir: TooltipDirective;\r\n // @ViewChild(ZGridBindingDirective, { static: false }) zgrid: ZGridBindingDirective;\r\n zgrid: any = null;\r\n oauthUrl: string = null;\r\n\r\n gridData: GridDataResult;\r\n selectableSettings: SelectableSettings;\r\n mySelection: any[] = [];\r\n inlineEditedFormGroups: FormGroup;\r\n public formGroup: FormGroup; // for kendo grid built-in\r\n public previousNext: boolean;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n _state: State = {\r\n skip: 0,\r\n take: 10\r\n };\r\n\r\n params: ZGridPostApiParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\",\r\n filters: \"\",\r\n columns: \"\",\r\n grantType: 4\r\n };\r\n\r\n gridSubject: Subject<any> = new Subject<any>();\r\n\r\n private widthReduce: number;\r\n private heightReduce: number;\r\n private gData: any;\r\n\r\n columns: any[];\r\n editableColumns: any[];\r\n subscription: Subscription;\r\n pageSizes: boolean | any[];\r\n isLoading: boolean;\r\n gridStorageKey: string;\r\n gridDefaultStateExist: boolean = false;\r\n isNew: boolean = true;\r\n private editedRowIndex: number;\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private formBuilder: FormBuilder,\r\n private authService: AuthService,\r\n private webApiService: WebApiService,\r\n private zGridStatePersistingService: ZGridStatePersistingService,\r\n private toastService: ToastService,\r\n private zcoreService: ZCoreService,\r\n private storageService: StorageSessionService,\r\n private mainService: MainService\r\n ) {\r\n this.oauthUrl = this.zcoreService.getEnvironment().e1OauthUrl + \"/\";\r\n this.allResults = this.allResults.bind(this);\r\n this.refreshData = this.refreshData.bind(this);\r\n this.clearData = this.clearData.bind(this);\r\n this.saveGridSettings = this.saveGridSettings.bind(this);\r\n this.restoreGridSettings = this.restoreGridSettings.bind(this);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // Grid saved setting key(Used in CookieStore & LocalStorage)\r\n this.gridStorageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;\r\n\r\n of(true)\r\n .pipe(\r\n //concatMap(() => {\r\n // // try get gridsetting from cookiestore\r\n // return this.mainService.cookieStoreGet(this.gridStorageKey, this.authService.e1Token.access_token);\r\n //}),\r\n //switchMap(savedGridCache => {\r\n // if (savedGridCache) { \r\n // // Keep the gridSetting from cookiestore to localStorage\r\n // this.zGridStatePersistingService.set(this.gridStorageKey, savedGridCache);\r\n // return of(true);\r\n // }\r\n // return of(false);\r\n //}),\r\n switchMap(() => {\r\n // Grid default setting\r\n this.columns = [];\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n this._state.take = this.data.PageSize || 20;\r\n this.pageSizes = [20, 50, 100, 200, 500];\r\n this.previousNext = this.data['EnablePreviousNextButton'] || false;\r\n\r\n // [Mobile] Disable PageSize\r\n if (this.data.PageSizes === false || ZComponentHelper.isMobileScreen()) {\r\n this.pageSizes = false;\r\n }\r\n\r\n // Grid Selection column\r\n if (this.data.SelectOptions) {\r\n this.selectableSettings = {\r\n // checkboxOnly: this.checkboxOnly,\r\n mode: this.data.SelectOptions === 'single' ? 'single' : 'multiple'\r\n };\r\n }\r\n\r\n // bind this to group using Grid value\r\n if (this.data.Value.startsWith('group.')) {\r\n const gridValue = this.data.Value.slice(6);\r\n this.group[gridValue] = this;\r\n }\r\n\r\n // clear any Subscription\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // if no ResourceURL, still generate Column first, then insert grid data using DataSource\r\n if (!this.data.ResourceURL) {\r\n this.generateGridColumns().subscribe(() => {\r\n if (this.data.DataSource && this.data.SkipDirective) {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.data.DataSource,\r\n this.group\r\n );\r\n this.setData(ds);\r\n }\r\n });\r\n }\r\n\r\n // subscribe to set grid setting from directive to component\r\n this.subscription = this.gridSubject.subscribe(grid => {\r\n this.zgrid = grid;\r\n this._state = this.zgrid.state;\r\n this.columns = this.zgrid.gridColumns;\r\n if (this.zgrid && this.zgrid.grid.data) {\r\n this.gridData = Object.assign({}, this.zgrid.grid.data);\r\n this.createFormControls();\r\n }\r\n });\r\n\r\n // Check Grid setting exist in localstorage\r\n this.stateExist();\r\n\r\n // Set Filter SessionKey\r\n if (this.data['SaveFilter']) {\r\n this.setGridSessionKey(this.group);\r\n }\r\n return of(true);\r\n }),\r\n tap(() => {\r\n this.gridCallback(this.group);\r\n }),\r\n ).subscribe();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n /* Start Grid State (pagination, sortable, filter, ordering) */\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n private stateExist() {\r\n const userGridState = this.zGridStatePersistingService.get(this.gridStorageKey);\r\n\r\n if (userGridState) {\r\n this.gridDefaultStateExist = true;\r\n }\r\n else {\r\n this.gridDefaultStateExist = false;\r\n }\r\n }\r\n\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n if (this.zgrid) {\r\n this.zgrid.dataStateChange(state);\r\n } else {\r\n this.gridData = process(this.gData, state);\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public locked(colSetting: any) {\r\n if (colSetting['pinnedLeft'] == true) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /* End Grid State (pagination, sortable, filter, ordering) */\r\n\r\n /* Start Grid Styling, Display */\r\n public getGridStyle() {\r\n return {\r\n \"height.px\": this.getGridHeight(), // window.innerHeight - this.heightReduce, // 450,\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n }; // \"width.px\": this.innerWidth - 35\r\n }\r\n\r\n private getGridHeight() {\r\n const gridHeight = window.innerHeight - this.heightReduce;\r\n return (gridHeight < 250) ? 250 : gridHeight;\r\n // const v = ZComponentHelper.isMobileScreen();\r\n // if(v){\r\n // const h = window.innerHeight - this.heightReduce;\r\n // return (h < 250) ? 250 : h;\r\n // }else{\r\n // return \"auto\";\r\n // } \r\n }\r\n /* End Grid Styling, Display */\r\n\r\n\r\n /* Start Grid Columns */\r\n public isSelectOption() {\r\n let selectOptionExist = false;\r\n if (this.data.SelectOptions) {\r\n this.selectableSettings = {\r\n checkboxOnly: false,\r\n mode: (this.data.SelectOptions == \"multiple\") ? \"multiple\" : \"single\"\r\n };\r\n selectOptionExist = true;\r\n }\r\n return selectOptionExist;\r\n }\r\n\r\n public setColumns(columnName: string, columns: Array<ZGridCustomColumn>) {\r\n this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n this.generateGridColumns().subscribe();\r\n }\r\n\r\n private wrapColumnNamesInFieldElement(columnList: Array<ZGridCustomColumn>) {\r\n return of(columnList.map(c => {\r\n const isHidden: boolean = c.Hidden;\r\n return {\r\n Name: c.Name,\r\n Value: c.Code,\r\n Type: c.Type,\r\n gridColVisible: !isHidden,\r\n width: 100 + c.Name.length * 4,\r\n enableFiltering: false,\r\n enableSorting: true,\r\n enablePinning: true,\r\n DivClass: \"col-xs-12 col-sm-6\",\r\n IsEditableInGrid: c.Editable\r\n };\r\n }));\r\n }\r\n\r\n private generateGridColumns(): Observable<any> {\r\n const gridSetting = this.getGridSettings();\r\n\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.data.ColumnFields,\r\n this.group\r\n );\r\n if (!this.data.ColumnFields) {\r\n console.warn('Invalid/Empty grid(' + this.data.Name + ') columnField');\r\n }\r\n return columnFields$.pipe(\r\n tap(data => {\r\n if (!data) {\r\n console.warn('Invalid/Empty grid(' + this.data.Name + ') data to generate column');\r\n }\r\n const fieldName = this.data['FieldElementName'];\r\n this.columns = [];\r\n ZComponentHelper.getGridColumns(data,\r\n this.columns,\r\n this.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n null,\r\n this.data);\r\n }),\r\n //switchMap(() => {\r\n // //Get Session\r\n // return this.getGridSessionFilter(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Before get grid data\r\n // return this.beforeGridGetData(this.grp, this);\r\n //}),\r\n //switchMap(() => {\r\n // //Set grid data\r\n // return this.setGridSessionFilter(this.grp, this);\r\n //})\r\n );\r\n }\r\n\r\n /* End Grid Columns */\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n // Edit incell field\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n // When clicked route to page\r\n this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n }\r\n\r\n public gridCallback(group: ZGroup) {\r\n if (this.data['AfterloadCallback']) {\r\n const me = Object.assign({}, this);\r\n\r\n this.group.subject.next({\r\n type: \"zgrid-AfterloadCallback\",\r\n target: this.data['AfterloadCallback'],\r\n data: me\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.gridData = {\r\n data: gData,\r\n total: (gData ? gData.length : 0)\r\n };\r\n this.gData = gData;\r\n\r\n if (this.zgrid) {\r\n this.zgrid.grid['pageSize'] = gData.length; // set grid size\r\n }\r\n\r\n if (!!this.data.ShowRecordNumber) {\r\n if (this.gridData.data) {\r\n this.gridData.data.forEach((d, i) => {\r\n d.GridNo = i + 1;\r\n });\r\n }\r\n }\r\n\r\n if (this.gData) {\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public getData() {\r\n if (this.zgrid) {\r\n this.zgrid.getDataBinding();\r\n }\r\n\r\n if (this.data.SkipDirective) {\r\n this.gridData = process(this.gData, this.state);\r\n this.createFormControls();\r\n }\r\n }\r\n\r\n public getGridData() {\r\n return this.gData;\r\n }\r\n\r\n\r\n public getFormControl(rowIndex: number, property: string) {\r\n const formArray: FormArray = this.inlineEditedFormGroups.get('items') as FormArray;\r\n const formItem = formArray.at(rowIndex);\r\n\r\n if (formItem) {\r\n return formItem.get(property);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n private createFormControls() {\r\n if (this.columns) {\r\n // only create if there is at least 1 editable column\r\n if (this.columns.find(c => c.isEditableInGrid) === undefined) {\r\n return;\r\n }\r\n\r\n this.inlineEditedFormGroups = new FormGroup({ items: new FormArray([]) });\r\n\r\n if (Array.isArray(this.gridData.data)) {\r\n this.gridData.data.forEach(d => {\r\n const items = {};\r\n this.columns.forEach(c => {\r\n items[c.field] = new FormControl(d[c.field]);\r\n });\r\n const formGroup = new FormGroup(items);\r\n (<FormArray>this.inlineEditedFormGroups.get(\"items\")).push(formGroup);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public createFormGroup(dataItem: any, fieldName: any): FormGroup {\r\n return this.formBuilder.group({\r\n [fieldName]: dataItem[fieldName]\r\n });\r\n }\r\n\r\n public getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(this.data.Value, this.group);\r\n }\r\n\r\n\r\n\r\n public onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n this.onNavigateTo(event, colSetting, rowData, cellData);\r\n }\r\n\r\n public cellClickHandler(event: CellClickEvent) {\r\n const disableAllColumnCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n const isCommandColumn = event.column.constructor.name == 'CommandColumnComponent' ? true : false;\r\n\r\n if (!disableAllColumnCellClickHandler && !isCommandColumn) {\r\n const inCellEditable = this.data.InCellEditable ? this.data.InCellEditable : false;\r\n if (inCellEditable) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n if (!!this.editableColumns) {\r\n this.editableColumns.map(s => event.sender.editCell(event.rowIndex, event.columnIndex, this.createFormGroup(event.dataItem, s.field)));\r\n }\r\n } else {\r\n console.log(\"cellClick event: \", event);\r\n if (this.data.OnItemClick) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n }\r\n }\r\n\r\n public editCellCloseHandler(args: any) {\r\n const { formGroup, dataItem } = args;\r\n if (!formGroup.valid) {\r\n args.preventDefault();\r\n } else if (formGroup.dirty) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n this.editableColumns.map(s =>\r\n Object.assign(dataItem, { [s.field]: formGroup.value[s.field] }));\r\n this.mySelection.map(s => (s.Id === dataItem.Id) ? Object.assign(s, dataItem) : null);\r\n }\r\n }\r\n\r\n\r\n public onNavigateTo(event: any, clickAction: any, rowData: any, cellData: string) {\r\n // debugger;\r\n // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction.Click);\r\n if (n) {\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: clickAction.Click,\r\n rowData: rowData,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public showTooltip(e: MouseEvent): void {\r\n const element = e.target as HTMLElement;\r\n\r\n let isCommandColumn = false;\r\n element.classList.forEach(data => {\r\n if (data == 'k-command-cell') {\r\n isCommandColumn = true;\r\n }\r\n });\r\n\r\n if (((element.nodeName === 'TD' || element.nodeName === 'TH') && element.offsetWidth < element.scrollWidth) && !isCommandColumn) {\r\n this.tooltipDir.toggle(element);\r\n }\r\n else {\r\n this.tooltipDir.hide();\r\n }\r\n }\r\n\r\n public rowSelectionKey(context: RowArgs): any {\r\n return context.dataItem;\r\n }\r\n\r\n public getSeletectedValues(): any {\r\n return this.mySelection;\r\n }\r\n\r\n public refreshGrid(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n const _gridOptionSegment = event.target.trim().split('.');\r\n const _gridOption = _gridOptionSegment[1];\r\n if (_gridOption) {\r\n const zgridControl = group[_gridOption] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n } else {\r\n console.log('Unable to find grid value: ' + _gridOption);\r\n }\r\n } else {\r\n console.log('Invalid refreshGrid event: ', event);\r\n }\r\n }\r\n\r\n public refreshData() {\r\n this.getData();\r\n }\r\n\r\n public clearData() {\r\n this.zgrid.clearData();\r\n }\r\n\r\n\r\n public allResults(): Observable<ExcelExportData> {\r\n const _zgridControl = this.zgrid as ZGrid;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _data = _zgridComponent.data as GridDataResult;\r\n\r\n const paginationApiPostUrl = _zgridControl.paginationApiPostUrl;\r\n\r\n // Need to clone, if not will affect the grid params.\r\n const params = Object.assign({}, this.params);\r\n params.pageNo = 0;\r\n params.pageSize = _data.total;\r\n\r\n return this.webApiService.httpPost$(paginationApiPostUrl, params).pipe(\r\n map((data: any) => {\r\n const result: ExcelExportData = {\r\n data: process(data.dataSet, {}).data\r\n };\r\n\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n public getClass(dataItem: any, col: any) {\r\n let ngClass = \"gridCell \";\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += \"rightAligned \";\r\n }\r\n\r\n if (dataItem[col.field + '_Class']) {\r\n ngClass += dataItem[col.field + '_Class'] + \" \";\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += col.Class + \" \";\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n public getFormat(col: any, defaultFormat?: any) {\r\n let format = \"\";\r\n if (col.FormatOptions === undefined) {\r\n format = defaultFormat ? defaultFormat : \"\";\r\n } else {\r\n const formatArr = col.FormatOptions.split(\".\")\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = \"1.\" + dp + \"-\" + dp;\r\n }\r\n }\r\n return format;\r\n }\r\n\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\r\n }\r\n\r\n public setGridSessionKey(group: ZGroup) {\r\n if (group[\"GridStorageKey\"]) {\r\n return;\r\n }\r\n else {\r\n group[\"GridStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n }\r\n\r\n }\r\n\r\n public trackBy(index: number, item: GridItem): any {\r\n //console.log(item.data['Id'] || index);\r\n return index;\r\n }\r\n\r\n /* Grid configuration function */\r\n public saveGridSettings(): void {\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _columns = _zgridComponent.columns;\r\n\r\n of(this.columns)\r\n .pipe(\r\n switchMap(() => {\r\n const configValue: ZGridColumnSettings[] = _columns.toArray().map(item => {\r\n const _zGridColumnSettings: ZGridColumnSettings = Object.keys(item)\r\n .filter(propName => {\r\n return !propName.toLowerCase().includes('template')\r\n })\r\n .reduce((acc, curr) => (\r\n {\r\n ...acc,\r\n ...{ [curr]: item[curr] }\r\n })\r\n , {} as ZGridColumnSettings);\r\n return _zGridColumnSettings;\r\n });\r\n\r\n // remove extra element form array\r\n configValue.forEach(item => {\r\n delete item['headerStyle'];\r\n delete item['__ngContext__'];\r\n });\r\n\r\n const gridSetting: ZGridSettings = {\r\n // state: this.state,\r\n columnsConfig: configValue\r\n };\r\n\r\n // Find any setting from localstorage and update, if not just add in.\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(this.gridStorageKey);\r\n let _gridConfig: GridCaching = null;\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n _gridConfig = _arrGridCaching.find(x => x['dataFormFields'] === this.gridStorageKey);\r\n\r\n if (_gridConfig) {\r\n _gridConfig.gridSettings = gridSetting;\r\n }\r\n }\r\n else {\r\n _arrGridCaching = [];\r\n }\r\n\r\n if (!_gridConfig) {\r\n _gridConfig = {\r\n dataFormFields: this.gridStorageKey,\r\n gridSettings: gridSetting\r\n };\r\n\r\n _arrGridCaching.push(_gridConfig);\r\n }\r\n return _arrGridCaching;\r\n }),\r\n concatMap(gridCache => {\r\n // Save grid caching to localstorage\r\n this.zGridStatePersistingService.set(this.gridStorageKey, gridCache);\r\n // Save to CookieStore\r\n return this.mainService.cookieStorePost(this.gridStorageKey, gridCache);\r\n }),\r\n tap(savedGridCache => {\r\n // check is saved state exist to enable/hide restore button\r\n this.stateExist();\r\n }),\r\n tap(() => {\r\n // Alert\r\n this.toastService.show('Grid Setting Saved', \"top\", true, 2000, 'success');\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public restoreGridSettings() {\r\n of(true)\r\n .pipe(\r\n switchMap(() => {\r\n // Clear localstorage grid setting\r\n this.zGridStatePersistingService.remove(this.gridStorageKey);\r\n return of(true)\r\n }),\r\n switchMap(() => {\r\n // delete cookiestore gridSetting by storagekey as name\r\n return this.mainService.cookieStoreDeleteMultiple(this.gridStorageKey);\r\n }),\r\n concatMap(() => {\r\n // Use original column setting\r\n return this.generateGridColumns();\r\n }),\r\n tap(() => {\r\n // check is saved state exist\r\n this.stateExist();\r\n // Alert\r\n this.toastService.show('Grid Setting Restored', \"top\", true, 2000, 'success');\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching) {\r\n const _gridCaching: GridCaching = JSON.parse(_arrGridCaching['Value']);\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n /* Inline setting */\r\n public getInlineField(value: any) {\r\n return this.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(rowIndex: number) {\r\n const formArray: FormArray = this.inlineEditedFormGroups.get('items') as FormArray;\r\n return formArray.at(rowIndex)\r\n }\r\n\r\n public getFormControlData(value: any) {\r\n return this.inlineEditedFormGroups.value.items;\r\n }\r\n\r\n\r\n /* Event */\r\n public beforeGridGetData(group: ZGroup, me: any) {\r\n console.warn(\"beforeDataBinding triggered\");\r\n if (!group.beforeGridGetData) {\r\n console.warn(\"group.beforeDataBinding is undefined\");\r\n return of(true);\r\n }\r\n return group.beforeGridGetData(group, me);\r\n }\r\n\r\n public async getGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n if (this.storageService) {\r\n await this.storageService.get(StorageKey)\r\n .then(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n return null;\r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.state.filter = JSON.parse(result[\"StateFilter\"]);\r\n this.params.filterParams = JSON.parse(result[\"FilterParams\"]);\r\n\r\n this.state.filter.filters.forEach((stateFilter: any) => {\r\n if (stateFilter.field.includes('UTC')) {\r\n stateFilter.value = new Date(stateFilter.value);\r\n }\r\n });\r\n\r\n return data;\r\n }\r\n });\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public setGridSessionFilter(group: ZGroup, me: any) {\r\n if (!group[\"GridStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"GridStorageKey\"];\r\n\r\n let lstGridFilter: { [key: string]: string } = {};\r\n\r\n if (me.state.filter && this.storageService && this.data['SaveFilter']) {\r\n //list of data for StateFilter and FilterParams\r\n lstGridFilter = { \"StateFilter\": JSON.stringify(me.state.filter), \"FilterParams\": JSON.stringify(me.params.filterParams) }\r\n //create session storage\r\n this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));\r\n }\r\n }\r\n\r\n /* Available Functions */\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n /* onchange Events */\r\n public filterChange(event: any): void {\r\n if (this.zgrid) {\r\n this.zgrid.filterChange(event);\r\n }\r\n }\r\n\r\n public pageChange(event: PageChangeEvent): void { \r\n if (this.zgrid) {\r\n this.zgrid.pageChange(event);\r\n }\r\n }\r\n\r\n public sortChange(sort: SortDescriptor[]): void {\r\n if (this.zgrid) {\r\n this.zgrid.sortChange(sort);\r\n }\r\n }\r\n\r\n public inCellCheckBoxOnChange(event: any, rowIndex: any, column: any) {\r\n const isChecked = event.detail.checked;\r\n this.gData[rowIndex][column.Value] = isChecked;\r\n }\r\n\r\n public columnsOrderChanged(event: ColumnReorderEvent): void {\r\n const _zgridControl = this.zgrid as ZGrid;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _data = _zgridComponent.data as GridDataResult;\r\n\r\n if (this.zgrid) {\r\n const _zgrid = this.zgrid;\r\n }\r\n }\r\n\r\n\r\n /* grid command handler */\r\n public addHandler({ sender }) {\r\n this.isNew = true;\r\n\r\n // close any existing editor\r\n this.closeEditor(sender);\r\n\r\n // loop all column to get validation and create form control\r\n const colFormControl = {};\r\n this.zgrid.gridColumns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n } \r\n\r\n colFormControl[col.Value] = new FormControl(null, validators); \r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new FormGroup(colFormControl);\r\n\r\n // add to grid row\r\n sender.addRow(this.formGroup);\r\n }\r\n\r\n public saveHandler({ sender, rowIndex, formGroup, isNew }): void {\r\n // get grid data.\r\n const gridExistingData = this.gData ? this.gData : this.gridData ? this.gridData.data : [];\r\n\r\n // if valid\r\n if (formGroup.valid) {\r\n // check for duplicate UniqueKey\r\n let uniqueKeyExist: boolean;\r\n const uniqueKey = this.data['UniqueKey'];\r\n if (uniqueKey) { \r\n const formUniqueKeyValue = formGroup.value[uniqueKey];\r\n\r\n if (isNew || (!isNew && (gridExistingData[rowIndex][uniqueKey] != formUniqueKeyValue))) {\r\n // if new...\r\n // if edit... if current field, uniquekey value changed. need to check. \r\n gridExistingData.forEach(data => {\r\n if (data[uniqueKey] === formUniqueKeyValue) {\r\n uniqueKeyExist = true;\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!uniqueKeyExist) {\r\n if (isNew) {\r\n // if new, push to data\r\n gridExistingData.push(formGroup.value);\r\n }\r\n else {\r\n // if edit, update data\r\n gridExistingData[rowIndex] = formGroup.value;\r\n }\r\n\r\n this.setData(gridExistingData);\r\n\r\n sender.closeRow(rowIndex);\r\n }\r\n else {\r\n this.toastService.show('Error occur: Duplicated unique field entry.', 'top', true, 3000, 'danger');\r\n }\r\n }\r\n }\r\n\r\n public cancelHandler({ sender, rowIndex }) {\r\n // cancel any existing editor\r\n sender.closeRow(rowIndex);\r\n }\r\n\r\n public editHandler({ sender, rowIndex, dataItem }) {\r\n this.isNew = false;\r\n\r\n // close any existing editor\r\n this.closeEditor(sender);\r\n \r\n // loop all column to get validation and create form control, append current row value\r\n const colFormControl = {};\r\n this.zgrid.gridColumns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n }\r\n \r\n colFormControl[col.Value] = new FormControl(dataItem[col.Value], validators);\r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new FormGroup(colFormControl);\r\n\r\n // set grid row to edit\r\n this.editedRowIndex = rowIndex; \r\n sender.editRow(rowIndex, this.formGroup);\r\n }\r\n\r\n public removeHandler({ sender, dataItem }) {\r\n const index = this.getItemIndex(dataItem, this.gData, this.data['UniqueKey']);\r\n this.gData.splice(index, 1);\r\n\r\n sender.cancelCell();\r\n }\r\n\r\n private closeEditor(grid, rowIndex = this.editedRowIndex) {\r\n grid.closeRow(rowIndex);\r\n this.editedRowIndex = undefined;\r\n this.formGroup = undefined;\r\n }\r\n\r\n private getItemIndex(item: any, data: any[], key: string): number {\r\n for (let idx = 0; idx < data.length; idx++) {\r\n if (data[idx][key] === item[key]) {\r\n return idx;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Subscription } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZField, ZGroup, ZComponentProperties,\r\n WebApiService, AttachmentService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zimg\",\r\n templateUrl: \"./zimg.component.html\",\r\n styleUrls: [\"./zimg.component.scss\"]\r\n})\r\nexport class ZimgComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n imgWidth: string = null;\r\n imgHeight: string = null;\r\n imgSrc: string = null;\r\n randomNumber = Math.random();\r\n componentProperties = new ZComponentProperties();\r\n // imgSourceAvailable = false;\r\n subscription: Subscription;\r\n\r\n Guid;\r\n FileName;\r\n Image:string;\r\n constructor(private attachmentService: AttachmentService) { }\r\n\r\n async ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n if (this.data.Size && this.data.Size.toLowerCase().indexOf(\"x\") !== -1) {\r\n const imgSize = this.data.Size.toLowerCase().split(\"x\");\r\n this.imgWidth = imgSize[0];\r\n this.imgHeight = imgSize[1];\r\n }\r\n\r\n this.Guid = this.getGroupValue(this.data['Guid'], this.group);//this.data['Guid'];//this.getGroupValue(this.data['Guid'], this.group);\r\n this.FileName = this.getGroupValue(this.data['FileName'], this.group);//this.getGroupValue(this.data['FileName'], this.group);\r\n\r\n if(this.Guid != undefined && this.FileName != undefined){\r\n let blobfile = await this.attachmentService.getImageBlob(this.FileName, this.Guid);\r\n this.Image= await this.attachmentService.convertBlobToBase64(blobfile);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // this.subscription = this.group.zModel$\r\n // .asObservable()\r\n // .subscribe((zmodel: any) => {\r\n // this.onDataSourceChange(zmodel);\r\n // });\r\n }\r\n\r\n\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n onDataSourceChange() {\r\n const value = this.getGroupValue(this.data.Value, this.group);\r\n const sourceUrl = this.getGroupValue(this.data.SourceUrl, this.group);\r\n\r\n if (value && sourceUrl) {\r\n // this.imgSrc =\r\n // this.imgSourceAvailable = true;\r\n return (\r\n sourceUrl +\r\n \"?id=\" +\r\n value +\r\n \"&size=\" +\r\n this.data.Size\r\n // + \"&r=\" + this.randomNumber\r\n );\r\n // console.log(\"image source: \", this.imgSrc);\r\n } else {\r\n // this.imgSourceAvailable = false;\r\n }\r\n }\r\n\r\n getGroupValue(value: string, group: any) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n // getValue(data: string) {\r\n // let gArray: Array<string>;\r\n // if (data) {\r\n // gArray = data.split(\".\");\r\n\r\n // if (gArray.length === 3 && data.startsWith(\"group.zModel\")) {\r\n // return this.group.zModel[gArray[2]];\r\n // } else if (gArray.length === 2 && data.startsWith(\"group.\")) {\r\n // return this.group[gArray[1]];\r\n // }\r\n // }\r\n // return null;\r\n // }\r\n\r\n getImgStyle(): any { }\r\n\r\n onIconClick() {\r\n const iconClick = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick, this.group);\r\n if (typeof iconClick === 'function') {\r\n return iconClick();\r\n }\r\n\r\n if (!iconClick) {\r\n console.warn('ZImg OnItemClick property is invalid: ', iconClick);\r\n return;\r\n }\r\n\r\n if (typeof iconClick !== 'function') {\r\n console.warn('ZImg OnItemClick property is not a function: ', iconClick);\r\n return;\r\n }\r\n }\r\n\r\n getIconName() {\r\n const iconName = ZComponentHelper.getGroupEvalValue.call(this, this.data.Icon, this.group);\r\n return iconName;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { delay, tap } from 'rxjs/operators';\r\nimport { LabelSettings } from '@progress/kendo-angular-progressbar';\r\nimport { State } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, ZField, ZGroup, ResourceApiService, WebApiService, GridCaching,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGridStatePersistingService, ZGridColumnSettings, ZGridPostApiParams\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zkcard',\r\n templateUrl: './zkcard.component.html',\r\n styleUrls: ['./zkcard.component.scss'],\r\n})\r\nexport class ZkcardComponent implements ZComponent, OnInit, OnDestroy {\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private resourceApiService: ResourceApiService,\r\n private authService: AuthService,\r\n private zGridStatePersistingService: ZGridStatePersistingService,\r\n private webapiService: WebApiService,\r\n private router: Router,\r\n ) { }\r\n\r\n data: ZField;\r\n group: ZGroup;\r\n form: FormGroup;\r\n zgrid: any = null;\r\n scrollViewCards: any = { data: [], total: 0 };\r\n responseData: any = { data: [], total: 0 };\r\n params: ZGridPostApiParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\",\r\n filters: \"\",\r\n columns: \"\",\r\n grantType: 4\r\n };\r\n //gridData: GridDataResult;\r\n columns: any[];\r\n gridColumns: any[] = [];\r\n usableColumns: any[] = [];\r\n dataSource = null;\r\n state: State = {\r\n skip: 0,\r\n take: 10,\r\n };\r\n paginationApiPostUrl = null;\r\n resourceURL = null;\r\n subscription: Subscription;\r\n public filterItems: Array<string> = [];\r\n public progressStyles: { [key: string]: any } = {\r\n color: '',\r\n background: 'green'\r\n };\r\n public loadingPanelVisible = false;\r\n\r\n\r\n public label: LabelSettings = {\r\n visible: true,\r\n format: 'percent',\r\n position: 'center'\r\n };\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.dataSource = this.field.DataSource ? this.field.DataSource : null;\r\n this.filterItems = this.group['filterItems'];\r\n if (!this.dataSource) {\r\n this.resourceURL = ZComponentHelper.getGroupValue(\r\n this.field.ResourceURL,\r\n this.grp\r\n );\r\n // console.log(\"At zgrid.component (OnInit) resourceURL: \", resourceURL);\r\n if (!this.resourceURL) {\r\n // this.grid.loading = false;\r\n //if (this.zgridbinding.data.Name !== \"ActivityLogGrid\") {\r\n // console.warn(\r\n // \"No initialise for Field.ResourceURL: \",\r\n // this.field.ResourceURL\r\n // );\r\n //}\r\n return;\r\n }\r\n\r\n const array = this.resourceURL.split(\"/api/\");\r\n if (!!array[1]) {\r\n array[1] = \"Page\" + array[1];\r\n this.paginationApiPostUrl = array.join(\"/api/\");\r\n } else {\r\n const arr = this.resourceURL.split(\"/\");\r\n arr[arr.length - 2] = \"Page\" + arr[arr.length - 2];\r\n this.paginationApiPostUrl = arr.join(\"/\");\r\n }\r\n\r\n this.setFilterParamsByParentRefId();\r\n }\r\n\r\n this.generateGridColumns();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n getData() {\r\n if (this.zgrid) {\r\n this.zgrid.getDataBinding();\r\n }\r\n //if (this.data.SkipDirective) {\r\n // this.gridData = process(this.gData, this.state);\r\n // this.createFormControls();\r\n //}\r\n }\r\n\r\n generateGridColumns() {\r\n this.loadingPanelVisible = true;\r\n const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.field.ColumnFields,\r\n this.grp\r\n );\r\n columnFields$\r\n .pipe(\r\n tap((data) => {\r\n\r\n const gridSetting = this.getGridSettings();\r\n const fieldName = this.field[\"FieldElementName\"];\r\n ZComponentHelper.getGridColumns(\r\n data,\r\n this.gridColumns,\r\n this.group,\r\n this.authService,\r\n fieldName,\r\n gridSetting,\r\n this.usableColumns\r\n );\r\n this.getFilterParamsColumns();\r\n this.getFilter();\r\n //this.getSorting();\r\n //this.getGrantType();\r\n //this.setHiddenColumn(gridSetting);\r\n //this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;\r\n }),\r\n tap(() => {\r\n this.getDataBinding();\r\n })\r\n )\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n getDataBinding(): void {\r\n if (!this.dataSource) {\r\n this.param.pageSize = this.field.PageSize ?? 50;\r\n if (this.field.ExternalPagination) {\r\n // For POST method Page WebAPI\r\n this.webapiService\r\n .postApi(\r\n this.paginationApiPostUrl,\r\n this.param,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n delay(2500)\r\n this.responseData = { data: data.dataSet, total: data.totalCount };\r\n this.scrollViewCards = { data: data.dataSet, total: data.totalCount };\r\n if (data.dataSet.length > 0) {\r\n this.getRecordsSummary();\r\n }\r\n\r\n if (this.data.ResourceURLAlt) {\r\n this.getNewSurvey();\r\n }\r\n //this.aggregateHandling(data.dataSet);\r\n //this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n //this.grid.loading = false;\r\n this.loadingPanelVisible = false;\r\n //this.notifyDataChange();\r\n });\r\n } else {\r\n // For GET method\r\n this.webapiService\r\n .getApi(this.resourceURL, null, null, null, null, null, true)\r\n .subscribe((data) => {\r\n let _data = null;\r\n let _totalCount = 0;\r\n\r\n if (data.dataSet) {\r\n _data = data.dataSet;\r\n _totalCount = data.totalCount;\r\n } else {\r\n _data = data;\r\n _totalCount = data.length;\r\n }\r\n this.loadingPanelVisible = false;\r\n //this.aggregateHandling(_data);\r\n //this.grid.data = { data: _data, total: _totalCount };\r\n //this.grid.pageSize = _totalCount;\r\n //this.grid.loading = false;\r\n //this.notifyDataChange();\r\n });\r\n }\r\n } else {\r\n const ds = ZComponentHelper.getGroupValue(\r\n this.field.DataSource,\r\n this.grp\r\n );\r\n }\r\n }\r\n\r\n getRecordsSummary() {\r\n let SurveyIds = [];\r\n\r\n this.responseData.data.forEach(value => {\r\n SurveyIds.push(value.Id);\r\n });\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getURL('ppsapsurveysummaryinfoURL'),\r\n SurveyIds,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe(data => {\r\n this.responseData.data.forEach(value => {\r\n data.forEach(x => {\r\n if (x.SurveyId == value.Id) {\r\n value['value'] = Number.isNaN(((x.TotalTakenQuestions / x.TotalQuestions) * 100)) ? 0 : Math.round(((x.TotalTakenQuestions / x.TotalQuestions) * 100));\r\n // value['value'] = 100;\r\n }\r\n })\r\n });\r\n })\r\n }\r\n\r\n getNewSurvey() {\r\n let requestBody = {\r\n columns: \"PartnerMillId,SurveyTemplateId,WFS_StatusCode,WFS_StatusName\",\r\n pageSize: this.field.PageSize ?? 50,\r\n };\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getPageUrl(this.data.ResourceURLAlt),\r\n requestBody,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n data.dataSet.forEach(value => {\r\n value['value'] = 0;\r\n this.scrollViewCards.data.push(value);\r\n this.scrollViewCards.total += 1;\r\n\r\n //data.forEach(x => {\r\n // if (x.SurveyId == value.Id) {\r\n // value['value'] = Number.isNaN(((x.TotalTakenQuestions / x.TotalQuestions) * 100)) ? 0 : Math.round(((x.TotalTakenQuestions / x.TotalQuestions) * 100));\r\n // }\r\n //})\r\n });\r\n })\r\n }\r\n\r\n get field() {\r\n return this.data;\r\n }\r\n\r\n get grp() {\r\n return this.group;\r\n }\r\n\r\n get param(): ZGridPostApiParams {\r\n return this.params;\r\n }\r\n\r\n private getGridSettings(): ZGridColumnSettings[] {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.field.Name + '::' + this.field.Value;\r\n\r\n // Find any setting from localstorage..\r\n let _arrGridCaching: GridCaching[] = this.zGridStatePersistingService.get(_storageKey);\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n const _gridCaching: GridCaching = _arrGridCaching.find(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridCaching) {\r\n return _gridCaching.gridSettings.columnsConfig.sort((a, b) => a.orderIndex - b.orderIndex);\r\n }\r\n }\r\n }\r\n\r\n private setFilterParamsByParentRefId() {\r\n // Use field own referenceId if available\r\n const refId = this.getFieldReferenceId() || this.grp.referenceId;\r\n const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n if (refId && this.grp.parentReferenceField) {\r\n const filterValue = {\r\n key: refField,\r\n ops: \"=\",\r\n value: refId,\r\n };\r\n // if (this.params.filterParams.find(x => x.key === filterValue.key) === undefined) {\r\n this.params.filterParams.push(filterValue);\r\n // }\r\n }\r\n }\r\n\r\n private getFieldReferenceId() {\r\n let fieldReferenceId = null;\r\n if (this.field.ReferenceId) {\r\n fieldReferenceId = ZComponentHelper.getGroupValue(\r\n this.field.ReferenceId,\r\n this.grp\r\n );\r\n }\r\n return fieldReferenceId;\r\n }\r\n\r\n private getFilterParamsColumns() {\r\n const colFields: Array<string> = [];\r\n this.gridColumns.forEach((field) => {\r\n if (field.valueExpr) {\r\n colFields.push(field.valueExpr + \" as \" + field.field);\r\n } else {\r\n colFields.push(field.field);\r\n }\r\n });\r\n\r\n if (colFields.length > 0) {\r\n if (colFields.indexOf(\"Id\") === -1) {\r\n colFields.push(\"Id\");\r\n }\r\n }\r\n\r\n let tmpGridColumn: any[] = [];\r\n tmpGridColumn.push(colFields.join(\",\"));\r\n if (this.usableColumns.length > 0) {\r\n tmpGridColumn.push(this.usableColumns.join(\",\"));\r\n }\r\n this.params.columns = tmpGridColumn.join(\",\");\r\n }\r\n\r\n start(event: any) {\r\n this.group;\r\n this.group.isLoading = true;\r\n if (event.WFS_StatusName == 'New') {\r\n let param = {\r\n UserId: this.group['PSAPUSERID'],\r\n SurveyMillId: event.Id\r\n }\r\n\r\n this.webapiService\r\n .postApi(\r\n this.resourceApiService.getURL('ppsapsurveycreateURL'),\r\n param,\r\n null,\r\n null,\r\n null,\r\n null,\r\n true\r\n )\r\n .subscribe((data) => {\r\n this.group.isLoading = false;\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: event,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, data.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n\r\n });\r\n }\r\n else {\r\n this.group.isLoading = false;\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: event,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, event.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n }\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n\r\n private getFilter() {\r\n if (this.params.filters && this.field.Filters) {\r\n this.params.filters = this.params.filters + \" && \" + this.field.Filters;\r\n } else if (!this.params.filters && this.field.Filters) {\r\n this.params.filters = this.field.Filters;\r\n }\r\n\r\n if (this.field.Filters && this.field.Filters.indexOf(\"group.\") !== -1) {\r\n const filterKeyValPairs = this.field.Filters.split(\" \");\r\n const grpValues = filterKeyValPairs.filter(\r\n (element) => element.trim().indexOf(\"group.\") !== -1\r\n );\r\n\r\n grpValues.forEach((val) => {\r\n const actualVal = ZComponentHelper.getGroupValue(val, this.grp);\r\n this.params.filters = this.params.filters.replace(val, actualVal);\r\n });\r\n }\r\n }\r\n\r\n valueChange(event: any) {\r\n if (event.length < 1) {\r\n this.scrollViewCards.data = this.responseData.data;\r\n this.scrollViewCards.total = this.responseData.total;\r\n return;\r\n }\r\n this.scrollViewCards.data = this.responseData.data.filter(x => event.includes(x.WFS_StatusName));\r\n this.scrollViewCards.total = this.responseData.data.filter(x => event.includes(x.WFS_StatusName)).length;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper,\r\n ZField, ZGroup, ZComponentProperties \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zlabel',\r\n templateUrl: './zlabel.component.html',\r\n styleUrls: ['./zlabel.component.scss'],\r\n})\r\nexport class ZlabelComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n labelText = \"\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.labelText = ZComponentHelper.getGroupValue(this.data.Label.toString(), this.group);\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isVisible() {\r\n if (this.componentProperties.isVisible === null) {\r\n return ZComponentHelper.isVisible.call(this, this.data);\r\n } else {\r\n return this.componentProperties.isVisible;\r\n }\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass}`;\r\n }\r\n\r\n public setData = (data: any) => {\r\n this.labelText = data;\r\n }\r\n}","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DialItemClickEvent, FabAlign, FabPositionMode } from '@progress/kendo-angular-buttons';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n FieldService, ResourceApiService, WebApiService, WorkflowService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zmfb',\r\n templateUrl: './zmfb.component.html',\r\n styleUrls: ['./zmfb.component.scss'],\r\n})\r\nexport class ZmfbComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n positionMode: FabPositionMode = 'fixed';\r\n bottomEnd: FabAlign = { vertical: 'bottom', horizontal: 'end' };\r\n items: Array<any> = [];\r\n dialOpen: boolean = false; \r\n isWorkflowButton: boolean = false;\r\n buttonColor: string = 'info';\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService\r\n ) { }\r\n\r\n/******************** Common function ********************/\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.data = this.getFirstzButton(this.group.fields);\r\n\r\n if (this.data) {\r\n if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {\r\n // handle as zWorkflowButton\r\n this.isWorkflowButton = true;\r\n this.loadWorkflowButton();\r\n }\r\n else {\r\n const field$ = this.fieldService.getFormFieldCode(\r\n this.data.Value,\r\n \"FormField\",\r\n null,\r\n null\r\n );\r\n\r\n\r\n try {\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n if (_isVisible) {\r\n this.items.push({\r\n label: label,\r\n icon: ZComponentHelper.getIcon(button.Icon),\r\n 'clickEvent': button.ClickEvent,\r\n 'click': (y) => {\r\n this.buttonClick(button);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n \r\n /******************** zButton ********************/\r\n private getFirstzButton(data: any[]) {\r\n // data.forEach(d => {\r\n for (let i = 0; i < data.length - 1; i++) {\r\n if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n return data[i];\r\n } else {\r\n if (Array.isArray(data[i].Value)) {\r\n this.getFirstzButton(data[i].Value);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private getButtonLabel(button: any) { \r\n let buttonLabel = button.Label;\r\n if (!buttonLabel) {\r\n buttonLabel = button.Name;\r\n }\r\n\r\n let labelExpr = buttonLabel.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return buttonLabel;\r\n }\r\n }\r\n\r\n private buttonClick(button: any) { \r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public events: string[] = [];\r\n\r\n public onBlur(): void {\r\n //console.log('blur');\r\n }\r\n\r\n public onFocus(): void {\r\n if (this.isWorkflowButton) {\r\n this.loadWorkflowButton();\r\n }\r\n //console.log('focus');\r\n }\r\n\r\n public onOpen(e): void {\r\n this.dialOpen = true;\r\n console.log('open');\r\n }\r\n\r\n public onClose(e): void {\r\n this.dialOpen = false;\r\n console.log('close');\r\n }\r\n\r\n public onDialItemClick(e: DialItemClickEvent): void { \r\n e.item.click(); \r\n }\r\n\r\n /******************** zWorkflowButton ********************/\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n private loadWorkflowButton() {\r\n // actionBtnList: Array<ZField>;\r\n this.items = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n try {\r\n // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(false)\r\n );\r\n\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n\r\n if (_isVisible) { \r\n this.items.push({\r\n label: buttonLabel,\r\n fieldAttribute: button,\r\n icon: ZComponentHelper.getIcon(attributes.Icon),\r\n 'clickEvent': button.ClickEvent,\r\n 'click': (y) => {\r\n this.workflowButtonClick(button);\r\n }\r\n });\r\n } \r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n }); \r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n workflowButtonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {\r\n this.loadWorkflowButton();\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: 'app-znumeric',\r\n templateUrl: './znumeric.component.html',\r\n styleUrls: ['./znumeric.component.scss'],\r\n})\r\nexport class ZnumericComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup; \r\n\r\n componentProperties = new ZComponentProperties();\r\n constructor() { }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.RightAlign) {\r\n var thisComponent = this;\r\n setTimeout(function () {\r\n // only available when popup is shown, get the element by class \r\n let numericTextbox = $(\"#\" + thisComponent.data.Value).find(\"input\");\r\n if (numericTextbox.length > 0) {\r\n numericTextbox[0].style.textAlign = \"right\";\r\n }\r\n }, 750);\r\n }\r\n // FormatOption can be \"#.00\\\\%\" | \"$#.000\" | \"#\"\r\n }\r\n\r\n valueHandler() {\r\n const dataValue = this.form.get(this.data.Value).value;\r\n if (dataValue != \"\") {\r\n var value: number = +dataValue;//the \"+\" converts string to number\r\n return value;\r\n }\r\n }\r\n \r\n onChange(value: any) { \r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value: value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n \r\n // Mobile View\r\n public getStyle(RightAlign: boolean) {\r\n let ngStyle = \"\";\r\n if (RightAlign) {\r\n ngStyle += \"right\";\r\n } else {\r\n ngStyle += \"left\";\r\n }\r\n return ngStyle;\r\n } \r\n\r\n public autocorrectHandler() {\r\n if (this.data.AutoCorrect) {\r\n return \"on\";\r\n }\r\n else {\r\n return \"off\";\r\n }\r\n }\r\n\r\n public inputmodeHandler() {\r\n return \"decimal\";\r\n }\r\n \r\n getKendoStyle() {\r\n const isReadOnly = (!!this.componentProperties.isReadOnlyField ? this.group[this.componentProperties.isReadOnlyField] : this.componentProperties.isReadOnly);\r\n \r\n if (isReadOnly) {\r\n return {\r\n \"margin\": \"7px 0 0 0\",\r\n \"width\": \"100%\",\r\n \"background-color\": \"#eaeaea\",\r\n \"color\": \"#545454\"\r\n };\r\n }\r\n else {\r\n return {\r\n \"margin\": \"7px 0 0 0\",\r\n \"width\": \"100%\"\r\n };\r\n }\r\n }\r\n}\r\n","\r\n/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable, of } from \"rxjs\";\r\nimport { delay } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n CacheService, ResourceApiService, WebApiService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams,\r\n ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zpostselectinput\",\r\n templateUrl: \"./zpostselectinput.component.html\",\r\n styleUrls: [\"./zpostselectinput.component.scss\"]\r\n})\r\nexport class ZpostselectinputComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"selectComponent\", { static: true })\r\n selectComponent: IonicSelectableComponent;\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n // subscription: Subscription;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private debounceSub: Subscription;\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n\r\n constructor(\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService,\r\n private cacheService: CacheService\r\n ) { }\r\n\r\n ngOnDestroy(): void {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n ZComponentHelper.setSelectMultipleTextValue(this.data.CCSelectOptions, this);\r\n\r\n const fieldValue = this.data.CCValue;\r\n let getzDataForzModel$: Observable<any>;\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$\r\n && this.group.zModel && this.group.zModel[fieldValue]) {\r\n const recordId = this.group.zModel[fieldValue];\r\n getzDataForzModel$ = ZComponentHelper.getInfiniteData(null, '', this, recordId.toString());\r\n if (getzDataForzModel$) {\r\n getzDataForzModel$.subscribe((zdata) => {\r\n console.log(this.data.Name, ' - initial zData load: ', zdata);\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n if (!ZComponentHelper.isMobileScreen()) {\r\n this.handleFilter(null, true);\r\n }\r\n } else {\r\n if (this.data.CCOptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(() => {\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n }\r\n\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.CCOptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.CCOptionSort;\r\n filterParam.columns = this.data.CCOptionColumns;\r\n filterParam.filters = this.data.CCOptionFilter;\r\n\r\n return ZComponentHelper.getDataOptions(\r\n this.data.CCOptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n\r\n getItemsData() {\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n const optionName = this.data.CCOptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n if (Array.isArray(this.data.CCSelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n // return selectionOptions;\r\n // return this.data.SelectOptions;\r\n this.group.zData[optionName.slice(12)] = this.data.CCSelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n // this.items = this.group.zData[optionName.slice(6)];\r\n return this.group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n // this.items = this.group.zData[optionName.slice(12)];\r\n return this.group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n // this.items = this.group[optionName.slice(6)];\r\n return this.group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n // this.items = this.group[optionName];\r\n return this.group[optionName] || [];\r\n }\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n }\r\n\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.CCOnChange,\r\n event,\r\n data: {value, field: this.data}\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.CCValue, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n onChange(event: { component: IonicSelectableComponent; value: any }) {\r\n console.log(\"zselectmultiple (onChange): \", event.value);\r\n ZComponentHelper.setModelValue(this.data.CCValue, event.value, this.group);\r\n const fc = this.form.controls[this.data.CCValue];\r\n this.handleClose();\r\n\r\n if (\r\n this.data.CCIsRequired &&\r\n (event.value === null || event.value.length === 0)\r\n ) {\r\n fc.setErrors({ required: true });\r\n } else {\r\n fc.setErrors(null);\r\n }\r\n\r\n this.onChangeEvent(event.value);\r\n }\r\n\r\n clearItems() {\r\n this.selectComponent.clear();\r\n this.selectComponent.close();\r\n }\r\n\r\n toggleItems() {\r\n this.selectComponent.toggleItems(this.toggleSelectable);\r\n this.toggleSelectable = !this.toggleSelectable;\r\n }\r\n\r\n confirmItems() {\r\n this.selectComponent.confirm();\r\n this.selectComponent.close();\r\n }\r\n\r\n onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n const component = event.component;\r\n if (component) {\r\n component.startSearch();\r\n component.enableInfiniteScroll();\r\n }\r\n\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n this.infiniteScrollPageNo = 0;\r\n }\r\n this.getInfiniteData(event);\r\n } else {\r\n this.infiniteScrollPageNo = 0;\r\n if (component) {\r\n component.items = [];\r\n }\r\n const params = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 15,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\"\r\n };\r\n const searchFields = this.data.SearchFields\r\n ? this.data.SearchFields\r\n : this.itemTextField;\r\n const filteritems = ZComponentHelper.filterSearchItems(\r\n this.getItemsData(),\r\n // this.items,\r\n event.text,\r\n searchFields,\r\n params.pageNo,\r\n params.pageSize\r\n );\r\n if (component) {\r\n const items = component.items.concat(filteritems);\r\n component.items = items;\r\n component.endInfiniteScroll();\r\n component.endSearch();\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n getInfiniteData(event: {\r\n component: IonicSelectableComponent;\r\n text: string;\r\n }) {\r\n ZComponentHelper.getInfiniteData(event.component, event.text, this);\r\n }\r\n\r\n handleFilter(value: any, justOneTime?: boolean) {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n this.isLoading = true;\r\n this.onSearch({ component: null, text: value });\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.unsubscribe();\r\n // }\r\n // this.loadInfiniteDataSub = new Subject(false);\r\n // this.handleFilter(null);\r\n // interval(2000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.onSearch({ component: null, text: value });\r\n // if (justOneTime) {\r\n // this.handleClose();\r\n // }\r\n // });\r\n });\r\n }\r\n\r\n handleOpen() {\r\n if (this.data.HasInfiniteScroll) {\r\n this.handleFilter(null);\r\n // // if (this.loadInfiniteDataSub) {\r\n // // this.loadInfiniteDataSub.unsubscribe();\r\n // // }\r\n // // this.loadInfiniteDataSub = new Subject();\r\n // // // this.handleFilter(null);\r\n // // interval(3000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.handleFilter(null);\r\n // // });\r\n }\r\n }\r\n\r\n handleClose() {\r\n // if (this.data.HasInfiniteScroll) {\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.next(true);\r\n // // this.loadInfiniteDataSub.complete();\r\n // }\r\n // }\r\n }\r\n\r\n handleBlur() {\r\n // this.handleClose();\r\n }\r\n \r\n getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.ItemTemplate\r\n );\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n // return item[itemTextField];\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n if (ZComponentHelper.hasCCField(this.data.Type)) {\r\n ZComponentHelper.changeValidator(status, this.group, this.data.CCValue, this.componentProperties, Validators.required);\r\n }\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n if (!form) {\r\n //debugger;\r\n }\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { QueryBuilderConfig, QueryBuilderClassNames, QueryBuilderComponent } from 'angular2-query-builder';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n FieldService, ZComponentHelper, ZComponentProperties, ZField, ZGroup,\r\n FontAweSomeService, DefaultPageSettingParams, WebApiService, ResourceApiService\r\n} from 'mmhglobal-zcore';\r\nimport { of } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-zquerybuilder',\r\n templateUrl: './zquerybuilder.component.html',\r\n styleUrls: ['./zquerybuilder.component.scss'],\r\n})\r\nexport class ZquerybuilderComponent implements OnInit {\r\n @ViewChild(QueryBuilderComponent, { static: false }) queryBuilder: QueryBuilderComponent;\r\n @Input() classNames: QueryBuilderClassNames;\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n //qbItems: Array<any> = [];\r\n qbItems = {};\r\n\r\n public componentProperties = new ZComponentProperties();\r\n public queryCtrl: any;\r\n public currentConfig: QueryBuilderConfig = {\r\n fields: {},\r\n allowEmptyRulesets: true\r\n };\r\n public allowRuleset: boolean = true;\r\n public allowCollapse: boolean= false;\r\n public persistValueOnFieldChange: boolean = false; \r\n public isDisabled: boolean = false;\r\n public rule: any;\r\n public value: any;\r\n private fields: any;\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService\r\n ) {\r\n }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n \r\n if (this.data['AllowCollapse'] === true) {\r\n this.allowCollapse = this.data['AllowCollapse'];\r\n }\r\n\r\n if (this.data['AllowRuleset'] === false) {\r\n this.allowRuleset = this.data['AllowRuleset'];\r\n }\r\n\r\n this.fields = this.fieldService.getFormFieldCode(this.data.Value, \"FormField\", null, null); \r\n \r\n try {\r\n this.fields.subscribe(data => { \r\n data.forEach((field: any) => {\r\n // Handle Options\r\n let optionList = [];\r\n\r\n if (field.Type == 'category' || field.Type == 'multiselect') {\r\n if (field['ValueOptions']) {\r\n field['ValueOptions'].forEach((valueOption: any) => {\r\n optionList.push({\r\n name: valueOption.Name,\r\n value: valueOption.Value\r\n });\r\n });\r\n }\r\n else {\r\n const selectOptions = field['SelectOptions'];\r\n\r\n const param = Object.assign({}, DefaultPageSettingParams);\r\n param.pageSize = selectOptions['PageSize'];\r\n param.columns = selectOptions['Columns'];\r\n param.filters += selectOptions['Filters'];\r\n param.sortColumnName = selectOptions['SortColumnName'];\r\n param.sortOrder = selectOptions['SortOrder'];\r\n\r\n this.webApiService\r\n .httpPost$(this.resourceApiService.getPageUrl(selectOptions['ResourceURL']), param)\r\n .pipe(\r\n map((resp) => {\r\n resp.dataSet.forEach((item: any) => {\r\n optionList.push({\r\n name: item[selectOptions['Name']],\r\n value: item[selectOptions['Value']]\r\n });\r\n })\r\n\r\n this.qbItems[field.Value]['options'] = optionList\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n // Default rule to display\r\n this.qbItems[field.Value] = {\r\n name: field.Name,\r\n value: field.Value,\r\n type: field.Type,\r\n operatorList: field['Operators'],\r\n options: optionList,\r\n nullable: field['IsNullable'],\r\n defaultValue: field['DefaultValue'] ? field['DefaultValue'] : null\r\n } \r\n });\r\n \r\n this.currentConfig = {\r\n fields: this.qbItems,\r\n allowEmptyRulesets: true\r\n };\r\n \r\n });\r\n\r\n // append default query if any.\r\n if (this.data['DefaultQuery']) {\r\n let defaultQueryValueString = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['DefaultQuery'],\r\n this.group\r\n ); \r\n\r\n if (defaultQueryValueString) {\r\n this.setQueryValue(defaultQueryValueString);\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n } \r\n }\r\n \r\n public completeRule(isUndo: boolean, queryValue: any) {\r\n this.isDisabled = isUndo; \r\n const qbResultValueName = this.data.Type + '_' + this.data.Value;\r\n this.group[qbResultValueName] = this.queryBuilder.value \r\n\r\n if (queryValue) {\r\n this.group[qbResultValueName] = queryValue;\r\n }\r\n\r\n if (!isUndo) {\r\n this.group[qbResultValueName] = [];\r\n }\r\n\r\n if (this.group.zModel) {\r\n ZComponentHelper.setModelValue(this.data.Value, this.group[qbResultValueName], this.group);\r\n }\r\n\r\n if (this.data['OnApplyClick'] && !queryValue) {\r\n let callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['OnApplyClick'],\r\n this.group\r\n );\r\n const newFunc = callFunc.bind(this);\r\n newFunc(this.group, this.group[qbResultValueName], this.fields);\r\n } \r\n }\r\n \r\n public bootstrapClassNames: QueryBuilderClassNames = {\r\n arrowIcon: 'fa fa-chevron-right px-2',\r\n button: 'btn',\r\n buttonGroup: 'btn-group',\r\n rightAlign: 'order-12 ml-auto',\r\n switchRow: 'd-flex px-2',\r\n switchGroup: 'd-flex align-items-center',\r\n switchRadio: 'custom-control-input',\r\n switchLabel: 'custom-control-label',\r\n switchControl: 'custom-control custom-radio custom-control-inline',\r\n row: 'row p-2 m-1',\r\n rule: 'border',\r\n ruleSet: 'border',\r\n invalidRuleSet: 'alert alert-danger',\r\n emptyWarning: 'text-danger mx-auto',\r\n operatorControl: 'form-control',\r\n operatorControlSize: 'col-auto pr-0',\r\n fieldControl: 'form-control',\r\n fieldControlSize: 'col-auto pr-0',\r\n entityControl: 'form-control',\r\n entityControlSize: 'col-auto pr-0',\r\n inputControl: 'form-control',\r\n inputControlSize: 'col-auto'\r\n };\r\n\r\n public conditionList: Array<string> = [\r\n \"AND\",\r\n \"OR\"\r\n ];\r\n\r\n public getOperators(defaultOperatorList: any, rule: any) {\r\n return this.qbItems[rule.field].operatorList ? this.qbItems[rule.field].operatorList : defaultOperatorList;\r\n }\r\n \r\n public getOptionList(optionsList: any, rule: any) {\r\n return this.qbItems[rule.field].options ? this.qbItems[rule.field].options : optionsList;\r\n }\r\n\r\n public setQueryValue(queryValueString: string) {\r\n if (queryValueString) {\r\n const defaultQueryValueJson = toQueryRule(JSON.parse(queryValueString));\r\n this.queryCtrl = defaultQueryValueJson;\r\n\r\n // default lock the query builder if there default query\r\n this.completeRule(true, defaultQueryValueJson);\r\n }\r\n }\r\n}\r\n\r\nexport interface QueryRule {\r\n condition: string;\r\n rules: QueryRule[];\r\n field: string;\r\n type: string;\r\n operator: string;\r\n value: string[];\r\n}\r\n\r\nexport function toQueryRule(queryBuilderModel: any): QueryRule {\r\n let rule = <QueryRule>{};\r\n if (queryBuilderModel.condition) {\r\n rule.condition = queryBuilderModel.condition;\r\n rule.rules = queryBuilderModel.rules.map(q => toQueryRule(q));\r\n } else {\r\n rule.field = queryBuilderModel.field;\r\n rule.type = queryBuilderModel.type;\r\n rule.operator = queryBuilderModel.operator;\r\n rule.value = queryBuilderModel.value instanceof Array\r\n ? queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value\r\n : [queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value];\r\n }\r\n return rule;\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, Input, ViewEncapsulation } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ExportOptions } from \"./zreport.config\";\r\nimport { TelerikReportViewerComponent } from \"@progress/telerik-angular-report-viewer\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ResourceApiService, ZField, ZGroup, ZComponentProperties, ZComponentHelper\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n// import * as $ from 'jquery';\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"app-zreport\",\r\n templateUrl: \"./zreport.component.html\",\r\n styleUrls: [\"./zreport.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ZreportComponent implements OnInit {\r\n constructor(private resourceApiService: ResourceApiService) { }\r\n\r\n @ViewChild(\"ReportViewer\")\r\n viewer: TelerikReportViewerComponent;\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n title = \"Report Viewer\";\r\n viewerContainerStyle = {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"800px\",\r\n [\"font-family\"]: \"ms sans serif\"\r\n };\r\n\r\n resourceURL = null;\r\n ReportSource = null;\r\n\r\n isVisible = true;\r\n\r\n paramToResizeReportViewer = false;\r\n public resizeReportView: Function;\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.resizeReportView = this.onPageReady.bind(this);\r\n\r\n this.resourceURL = this.resourceApiService.getURL(this.data.ResourceURL);\r\n\r\n if (!this.resourceURL) {\r\n this.resourceURL = this.resourceApiService.getURL('e1wfs_wfm_workflowMasterReportURL');\r\n //this.isVisible = false;\r\n }\r\n\r\n if (!!this.data.IsAutoGenerateReport) {\r\n this.ReportSource = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReportSource);\r\n }\r\n }\r\n\r\n public generateReport() {\r\n const rs = this.group[\"ReportSource\"];\r\n this.resourceURL = rs['url'];\r\n this.viewer.setReportSource(rs);\r\n this.viewer.refreshReport();\r\n\r\n if (this.data['AutoResize']) {\r\n this.paramToResizeReportViewer = true;\r\n } else {\r\n this.paramToResizeReportViewer = false;\r\n }\r\n\r\n const thisComponent = this;\r\n const exportButton = $(\"#trv-main-menu-export-command\");\r\n exportButton.on(\"mouseover\", function () {\r\n // trigger to hide list, sometime element not loaded yet.\r\n setTimeout(function () {\r\n // ExportOptions.instance.exportOption(thisComponent);\r\n // ExportOptions.instance.hideUnwantedOptions();\r\n }, 300);\r\n });\r\n }\r\n\r\n ready(thisComponent: any) {\r\n // console.log(\"ready\");\r\n // ExportOptions.init(thisComponent);\r\n }\r\n\r\n viewerToolTipOpening(args: any) {\r\n // console.log(\"viewerToolTipOpening \" + args.toolTip.text);\r\n }\r\n\r\n onRenderingEnd(e, args): void {\r\n // Occurs after rendering the report.\r\n // ExportOptions.instance.update(e.target.reportSource().report);\r\n }\r\n\r\n exportBegin(args: any) {\r\n }\r\n\r\n exportEnd(args: any) {\r\n }\r\n\r\n onPageReady(e: any, args:any) {\r\n if (this.paramToResizeReportViewer) {\r\n var pageHeight = $(\".trv-pages-area .trv-page-wrapper\").height() + $(\".trv-nav\").outerHeight() + 20, // Calculate the report page height\r\n viewer = $(\"#reportViewer1\"),\r\n viewerHeight = viewer.height();\r\n\r\n if (viewerHeight !== pageHeight ) {\r\n viewer.height(pageHeight);\r\n var documentMapSplitter = $(\".trv-document-map-splitter\").data(\"kendoSplitter\");\r\n if (documentMapSplitter !==undefined) {\r\n documentMapSplitter.resize(true);\r\n }\r\n var parameterSplitter = $(\".trv-parameters-splitter\").data(\"kendoSplitter\");\r\n if (parameterSplitter !==undefined) {\r\n parameterSplitter.resize(true);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties, StorageSessionService, AuthService\r\n} from \"mmhglobal-zcore\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\nimport {\r\n DateChangeEvent,\r\n SlotClickEvent,\r\n EventClickEvent,\r\n EventStyleArgs,\r\n SlotClassArgs\r\n} from \"@progress/kendo-angular-scheduler\";\r\nimport { of } from 'rxjs';\r\nimport { delay, take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: \"app-zscheduler\",\r\n templateUrl: \"./zscheduler.component.html\",\r\n styleUrls: [\"./zscheduler.component.scss\"]\r\n})\r\nexport class ZschedulerComponent implements ZComponent, OnInit, AfterViewInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() ngStyle: { [klass: string]: any; }\r\n\r\n\r\n isLoading = true;\r\n events: any[] = [];\r\n selectedDate = new Date();\r\n local = {\r\n inProgress: false,\r\n ctrlScope: null\r\n };\r\n // selectedDate: Date = new Date();\r\n selectedViewIndex = 3;\r\n componentProperties = new ZComponentProperties();\r\n\r\n // eventFields: SchedulerModelFields = {\r\n // id: \"Id\",\r\n // title: \"Objective\",\r\n // description: \"Description\",\r\n // // startTimezone: 'StartTimezone',\r\n // start: \"Date_UTC\",\r\n // end: \"End_UTC\"\r\n // // endTimezone: 'EndTimezone',\r\n // // isAllDay: 'IsAllDay',\r\n // // recurrenceRule: 'RecurrenceRule',\r\n // // recurrenceId: 'RecurrenceID',\r\n // // recurrenceExceptions: 'RecurrenceException'\r\n // };\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private storageService: StorageSessionService,\r\n private authService: AuthService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n this.local.ctrlScope = this.group.ctrlScope;\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n //\r\n if (this.data['SaveFilter']) {\r\n this.setSchedulerSessionKey(this.group);\r\n this.getSchedulerSessionFilter(this.group);\r\n }\r\n this.getItems();\r\n }\r\n\r\n ngAfterViewInit() {\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n }\r\n\r\n getEventStyles = (args: EventStyleArgs) => {\r\n\r\n if(args && args.event && args.event.dataItem)\r\n {\r\n const BGColor=args.event.dataItem[\"backgroundColor\"];\r\n const BorderColor=args.event.dataItem[\"borderColor\"];\r\n\r\n if (BGColor && BorderColor) \r\n { return { backgroundColor: BGColor, bordercolor: BorderColor, color: \"white\" }; }\r\n else {\r\n return { backgroundColor: \"#ff7c73\", bordercolor: \"#ff7c73\" , color: \"white\" };\r\n }\r\n\r\n }\r\n }\r\n\r\n public getSlotClass = (args: SlotClassArgs) => {\r\n const hour = args.start.getHours();\r\n args.resources = this.events\r\n return {\r\n args\r\n };\r\n }\r\n\r\n getItems() {\r\n // if (this.isLoading) {\r\n // return [];\r\n // }\r\n // debugger;\r\n const v = this.data.Value;\r\n if (Array.isArray(v)) {\r\n return v;\r\n } else {\r\n const evalValue = ZComponentHelper.getGroupEvalValue.call(this, v);\r\n // debugger;\r\n if (evalValue) {\r\n this.events = evalValue;\r\n if (this.events) {\r\n this.isLoading = false;\r\n }\r\n } else {\r\n console.warn(\"Invalid field.Value setting \", this.data.Value);\r\n return [];\r\n }\r\n }\r\n }\r\n\r\n onDateChange(args: DateChangeEvent): void {\r\n\r\n // this.events = generateEvents(args.dateRange.start, 7);\r\n\r\n if (this.local.inProgress) {\r\n return;\r\n }\r\n\r\n //Set session values\r\n this.group[\"selectedDate\"] = args.selectedDate;\r\n\r\n console.log(\"zschedule component date-change selection: \", args.dateRange);\r\n // this.local.selectedDate = args.dateRange.start;\r\n this.group.subject.next({\r\n type: \"zscheduler-onDateChange\",\r\n target: this.data.CalendarOptions + \".dateClick\",\r\n event: args.dateRange\r\n } as ZComponentOutputEvent);\r\n // We're setting the events after the current change detection cycle\r\n // has completed, hence we need to trigger a new one.\r\n this.changeDetector.detectChanges();\r\n\r\n }\r\n\r\n onSlotDblClick({ sender, start, end, isAllDay }: SlotClickEvent): void {\r\n console.log(\r\n \"zscheduler component slot-double-click: \",\r\n sender,\r\n start,\r\n end,\r\n isAllDay\r\n );\r\n\r\n if (\r\n sender.selectedView.name === \"month\" ||\r\n sender.selectedView.name === \"week\"\r\n ) {\r\n this.local.inProgress = true;\r\n this.selectedViewIndex = 3;\r\n this.selectedDate = start;\r\n of([]).pipe(take(1), delay(1000)).subscribe(() => this.local.inProgress = false);\r\n }\r\n\r\n // this.group.subject.next({\r\n // Type: \"zscheduler-onSlotDblClick\",\r\n // Target: this.data.CalendarOptions + 'select',\r\n // event: { sender, start, end, isAllDay }\r\n // });\r\n // this.closeEditor(sender);\r\n // this.formGroup = this.formBuilder.group({\r\n // 'Start': [start, Validators.required],\r\n // 'End': [end, Validators.required],\r\n // 'StartTimezone': new FormControl(),\r\n // 'EndTimezone': new FormControl(),\r\n // 'IsAllDay': isAllDay,\r\n // 'Title': new FormControl(''),\r\n // 'Description': new FormControl(''),\r\n // 'RecurrenceRule': new FormControl(),\r\n // 'RecurrenceID': new FormControl()\r\n // });\r\n // sender.addEvent(this.formGroup);\r\n }\r\n\r\n onEventDblClick({ sender, event }: EventClickEvent): void {\r\n console.log(\"zscheduler component event-double-click: \", sender, event);\r\n\r\n // this.group.subject.next({\r\n // type: \"zscheduler-onEventDblClick\" + \".eventClick\",\r\n // target: this.data.CalendarOptions,\r\n // event: { sender, event }\r\n // } as ZComponentOutputEvent);\r\n\r\n // this.closeEditor(sender);\r\n // let dataItem = event.dataItem;\r\n // if (this.editService.isRecurring(dataItem)) {\r\n // sender.openRecurringConfirmationDialog(CrudOperation.Edit)\r\n // // The result will be undefined if the dialog was closed.\r\n // .pipe(filter(editMode => editMode !== undefined))\r\n // .subscribe((editMode: EditMode) => {\r\n // if (editMode === EditMode.Series) {\r\n // dataItem = this.editService.findRecurrenceMaster(dataItem);\r\n // }\r\n // this.formGroup = this.createFormGroup(dataItem);\r\n // sender.editEvent(dataItem, { group: this.formGroup, mode: editMode });\r\n // });\r\n // } else {\r\n // this.formGroup = this.createFormGroup(dataItem);\r\n // sender.editEvent(dataItem, { group: this.formGroup });\r\n // }\r\n\r\n if (this.data.OnItemClick) {\r\n\r\n //Restore session\r\n this.beforeSchedulerGetData(this.group);\r\n this.setSchedulerSessionFilter(this.group);\r\n\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n\r\n }\r\n \r\n public setData = (gData: any) => {\r\n this.selectedViewIndex = gData || this.selectedViewIndex;\r\n //reset data\r\n this.getItems();\r\n\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n public setSchedulerSessionKey(group: ZGroup) {\r\n\r\n if (group[\"SchedulerStorageKey\"]) {\r\n return;\r\n }\r\n else {\r\n group[\"SchedulerStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n }\r\n\r\n }\r\n\r\n public beforeSchedulerGetData(group: ZGroup) {\r\n console.warn(\"beforeDateRangeBinding triggered\");\r\n if (!group.beforeSchedulerGetData) {\r\n console.warn(\"group.beforeDateRangeBinding is undefined\");\r\n return of(true);\r\n }\r\n\r\n return group.beforeSchedulerGetData(group);\r\n }\r\n\r\n async setSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n let lstFilter: { [key: string]: string } = {};\r\n\r\n if (group && this.storageService && this.data['SaveFilter']) {\r\n\r\n //list of data for StateFilter and FilterParams\r\n lstFilter = {\r\n \"SelectedDate\": JSON.stringify(group[\"selectedDate\"])\r\n }\r\n //create session storage \r\n this.storageService.set(StorageKey, JSON.stringify(lstFilter));\r\n\r\n }\r\n\r\n }\r\n\r\n async getSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n if (this.storageService) {\r\n await this.storageService.get(StorageKey)\r\n .then(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n return null;\r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.selectedDate = new Date(JSON.parse(result[\"SelectedDate\"]));\r\n\r\n return data;\r\n }\r\n });\r\n }\r\n else { return null; }\r\n\r\n }\r\n\r\n}\r\n","\r\n/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy, AfterViewInit } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { interval, throwError, Subscription, Observable, of, Subject, timer } from \"rxjs\";\r\nimport { catchError, tap, debounceTime, delay, timeInterval, takeUntil } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ResourceApiService, WebApiService, CacheService, ClickableIcons, ButtonList,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams, zSelectMultipleParams,\r\n ZGroup, ZField, ZComponentProperties, TooltipsInfoProperties \r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zselectmultiple\",\r\n templateUrl: \"./zselectmultiple.component.html\",\r\n styleUrls: [\"./zselectmultiple.component.scss\"]\r\n})\r\nexport class ZselectmultipleComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() iconList: ClickableIcons[];\r\n @Input() buttonList: ButtonList[];\r\n @ViewChild(\"selectComponent\") selectComponent: IonicSelectableComponent;\r\n\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: TooltipsInfoProperties = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n // subscription: Subscription;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private debounceSub: Subscription;\r\n allowCustomValue = false;\r\n autoClose: boolean = true;\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n\r\n // private loadInfiniteDataSub: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n private resourceApiService: ResourceApiService,\r\n private webApiService: WebApiService,\r\n private cacheService: CacheService\r\n ) { }\r\n\r\n ngOnDestroy(): void {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n }\r\n\r\n public virtual: any = {\r\n itemHeight: 28,\r\n pageSize: 15\r\n };\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setSelectMultipleTextValue(this.data.SelectOptions, this);\r\n\r\n this.tooltipsInfo = this.data.TooltipsInfo;\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo.Icon != null || this.tooltipsInfo.Icon != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo.SideBySide) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n\r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n // [Dropdownlist Multiple] - auto close menu when lose focus.\r\n if (this.data.AutoClose === false) this.autoClose = this.data.AutoClose;\r\n\r\n // Handle Clickable Icons\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = \"\";\r\n } else {\r\n i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = \"top\";\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Handle Button beside dropdown\r\n this.buttonList = this.data.ButtonList;\r\n if (this.buttonList) {\r\n this.buttonList.forEach(button => {\r\n if (button.tooltip) {\r\n button.tooltip = ZComponentHelper.getGroupEvalValue.call(this, button.tooltip);\r\n }\r\n\r\n });\r\n }\r\n\r\n // dropdown configuration\r\n this.allowCustomValue = this.data.AllowCustomValue || false; // Allow enter text in dropdownbox\r\n const fieldValue = this.data.Value;\r\n const data = this.data;\r\n const zModel = this.group.zModel;\r\n\r\n /*\r\n * 4 Styles of declare the component�s option list data source.\r\n * Style #1 - Field.SelectOptions defined as an array of object that contain text and value.\r\n * Style #2 - Field.SelectOptions defined as a phase like �item.Id as item.Name for item in group.zData.ProjectOptions�.\r\n * Style #3 - Field.OptionResourceURL defined the name of resource server api.\r\n * Style #4 - Field.InfiniteScroll$ defined the method name as �group.getMoreDataAsScroll�.\r\n */\r\n\r\n if (data.HasInfiniteScroll && data.InfiniteScroll$) {\r\n // when infinitie scroll\r\n let recordId = null;\r\n if (zModel && zModel[fieldValue]) {\r\n // get zModel Value\r\n recordId = zModel[fieldValue].toString();\r\n }\r\n\r\n let getzDataForzModel$: Observable<any> = ZComponentHelper.getInfiniteData(null, '', this, recordId);\r\n if (getzDataForzModel$) {\r\n getzDataForzModel$.subscribe((zdata) => {\r\n console.log(data.Name, ' - initial zData load: ', zdata);\r\n\r\n if (this.group) {\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n\r\n if (!ZComponentHelper.isMobileScreen()) {\r\n this.handleFilter(null, true);\r\n }\r\n }\r\n else {\r\n // Style #1, #2, #3\r\n const isRequired = ZComponentHelper.getGroupEvalValue.call(this, data.IsRequired);\r\n\r\n if (this.data.OptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(res => {\r\n const optionData = res.dataSet ? res.dataSet : res;\r\n\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);\r\n }\r\n\r\n if (this.group) {\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n }\r\n else {\r\n if (Array.isArray(this.data.SelectOptions) && this.data.SelectOptions) {\r\n //skip eval if selectoptions is exist\r\n }\r\n else {\r\n const optionData = ZComponentHelper.getGroupEvalValue.call(this, this.itemDataField);\r\n // append data via timeout after data is loaded.\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n const thisComponent = this;\r\n setTimeout(function () {\r\n thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);\r\n\r\n if (this.group) {\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n }, 100);\r\n }\r\n }\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n // Auto select first option (if required & only 1 option)\r\n private autoSelectFirstOption(required: boolean, data: any, zModelPropertyName: string, id: any) {\r\n if (ZComponentHelper.isNullUndefinedEmpty(id) && required) {\r\n var optionId = data.Id;\r\n if (this.data.Multiple) {\r\n optionId = [optionId];\r\n }\r\n ZComponentHelper.setModelValue(zModelPropertyName, optionId, this.group);\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { ['value']: optionId, field: this.data }\r\n } as ZComponentOutputEvent);\r\n\r\n this.form.markAsPristine();\r\n }\r\n }\r\n\r\n // Style #3\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.OptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.OptionSort;\r\n filterParam.columns = this.data.OptionColumns;\r\n filterParam.filters = this.data.OptionFilter;\r\n\r\n return ZComponentHelper.getDataOptions(\r\n this.data.OptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n // Style #4, used in ionic-selectable\r\n getInfiniteData(event: {\r\n component: IonicSelectableComponent;\r\n text: string;\r\n }) {\r\n ZComponentHelper.getInfiniteData(event.component, event.text, this);\r\n }\r\n\r\n getItemsData() {\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n\r\n const optionName = this.data.OptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n if (Array.isArray(this.data.SelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n // return selectionOptions;\r\n // return this.data.SelectOptions;\r\n this.group.zData[optionName.slice(12)] = this.data.SelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n return this.group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n return this.group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n return this.group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n return this.group[optionName] || [];\r\n }\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n }\r\n\r\n onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n // event.component is for mobile only\r\n const component = event.component;\r\n if (component) {\r\n component.startSearch();\r\n component.enableInfiniteScroll();\r\n }\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n // If search text, reset page to 0. Get infinite data\r\n if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n this.infiniteScrollPageNo = 0;\r\n this.modelzData = [];\r\n }\r\n this.getInfiniteData(event);\r\n }\r\n else {\r\n // Reset scroll page, empty items\r\n this.infiniteScrollPageNo = 0;\r\n if (component) {\r\n component.items = [];\r\n }\r\n\r\n // Filter zData and push to items\r\n const params: zSelectMultipleParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\"\r\n };\r\n\r\n const searchFields = this.data.SearchFields ? this.data.SearchFields : this.itemTextField;\r\n const filteritems = ZComponentHelper.filterSearchItems(\r\n this.getItemsData(),\r\n event.text,\r\n searchFields,\r\n params.pageNo,\r\n params.pageSize\r\n );\r\n if (component) {\r\n const items = component.items.concat(filteritems);\r\n component.items = items;\r\n component.endInfiniteScroll();\r\n component.endSearch();\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n handleFilter(value: any, justOneTime?: boolean) {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n this.isLoading = true;\r\n this.onSearch({ component: null, text: value });\r\n\r\n if(this.group){\r\n if (this.group.afterLoadzDataOptions) {\r\n this.group.afterLoadzDataOptions(this.group);\r\n }\r\n }\r\n\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.unsubscribe();\r\n // }\r\n // this.loadInfiniteDataSub = new Subject(false);\r\n // this.handleFilter(null);\r\n // interval(2000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // this.onSearch({ component: null, text: value });\r\n // if (justOneTime) {\r\n // this.handleClose();\r\n // }\r\n // });\r\n });\r\n }\r\n\r\n handleOpen() {\r\n if (this.data.HasInfiniteScroll) {\r\n this.handleFilter(null);\r\n // // if (this.loadInfiniteDataSub) {\r\n // // this.loadInfiniteDataSub.unsubscribe();\r\n // // }\r\n // // this.loadInfiniteDataSub = new Subject();\r\n // // // this.handleFilter(null);\r\n // // interval(3000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n // // this.handleFilter(null);\r\n // // });\r\n }\r\n }\r\n\r\n handleClose() {\r\n // if (this.data.HasInfiniteScroll) {\r\n // if (this.loadInfiniteDataSub) {\r\n // this.loadInfiniteDataSub.next(true);\r\n // // this.loadInfiniteDataSub.complete();\r\n // }\r\n // }\r\n }\r\n\r\n handleBlur() {\r\n // this.handleClose();\r\n }\r\n\r\n getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, this.data.ItemTemplate);\r\n\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n // return item[itemTextField];\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n getIsRequiredValue() {\r\n const IsRequiredValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.IsRequired);\r\n if (typeof IsRequiredValue === 'function') {\r\n const callFunc = IsRequiredValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n\r\n }\r\n return IsRequiredValue;\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(value, group);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n const ionInvalidClass = this.getIon_InvalidClass(form, data);\r\n return `${ionInvalidClass ? ionInvalidClass : ''} ${this.data.Class}`;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n if (!form) {\r\n //debugger;\r\n }\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n\r\n // Component basic function\r\n clearData() {\r\n ZComponentHelper.setModelValue(this.data.Value, \"\", this.group);\r\n }\r\n\r\n clearItems() {\r\n this.selectComponent.clear();\r\n this.selectComponent.close();\r\n }\r\n\r\n confirmItems() {\r\n this.selectComponent.confirm();\r\n this.selectComponent.close();\r\n }\r\n\r\n toggleItems() {\r\n this.selectComponent.toggleItems(this.toggleSelectable);\r\n this.toggleSelectable = !this.toggleSelectable;\r\n\r\n // Confirm items and close Select page\r\n // without having the user to click Confirm button.\r\n // this.confirm();\r\n }\r\n\r\n // Extra icon beside dropdown. Mainly for popup\r\n onIconClick(clickAction: string) {\r\n this.onNavigateTo(clickAction); \r\n }\r\n\r\n onNavigateTo(clickAction: string) {\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction);\r\n if (n) {\r\n this.group.subject.next({\r\n type: 'ztext-onNavigateTo',\r\n target: clickAction,\r\n data: this.group.zModel[this.data.Value]\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n // Disable Open On Focus\r\n disableOpenOnFocus(comboboxComponent: any) {\r\n if (this.data.DisableOpenOnFocus) {\r\n return null;\r\n }\r\n else {\r\n return comboboxComponent;\r\n }\r\n }\r\n\r\n // OnChange\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n onChange(event: { component: IonicSelectableComponent; value: any }) {\r\n console.log(\"zselectmultiple (onChange): \", event.value);\r\n ZComponentHelper.setModelValue(this.data.Value, event.value, this.group);\r\n const fc = this.form.controls[this.data.Value];\r\n this.handleClose();\r\n\r\n if (\r\n // this.data.IsRequired &&\r\n this.getIsRequiredValue() &&\r\n (event.value === null || event.value.length === 0)\r\n ) {\r\n fc.setErrors({ required: true });\r\n } else {\r\n fc.setErrors(null);\r\n }\r\n\r\n this.onChangeEvent(event.value);\r\n }\r\n\r\n // Common function\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public setLabelText(newText: string) {\r\n this.data.Label = newText;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoClass() {\r\n if (this.tooltipsInfo && !this.showTooltipsInfoIcon && this.showTooltipsInfoBySide) {\r\n return 'tooltipsinfo-text';\r\n }\r\n return 'tooltipsinfo-text-wide';\r\n }\r\n\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo.TextColor) {\r\n return this.tooltipsInfo.TextColor;\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() {\r\n if (this.tooltipsInfo) {\r\n if (this.showTooltipsInfoBySide && !this.showTooltipsInfoIcon ) {\r\n return 'ion-row divselectmultiple tooltipsinfo-right';\r\n }\r\n }\r\n return 'ion-row divselectmultiple';\r\n }\r\n \r\n public getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TabStripComponent } from '@progress/kendo-angular-layout';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n ZComponent, ZComponentHelper, ZTabItem, ZGroup, ZField, \r\n ZComponentProperties, AuthService \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztab',\r\n templateUrl: './ztab.component.html',\r\n styleUrls: ['./ztab.component.scss'],\r\n})\r\nexport class ZtabComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // private lastSelectedTabIndex: number;\r\n @ViewChild('kendoTabStripInstance') public tabstrip: TabStripComponent;\r\n public state = {\r\n lastSelectedTabIndex: 0,\r\n currentTabs: Array<ZTabItem>(),\r\n allTabs: Array<ZTabItem>()\r\n };\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private authService: AuthService\r\n ) {\r\n // this.lastSelectedTabIndex = 0;\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n this.setCurrentTabs();\r\n this.restoreTabSelection();\r\n }\r\n\r\n private setCurrentTabs() {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n\r\n if (this.data.TabVisibleFalseIndex) {\r\n this.setTabsVisible(this.data.TabVisibleFalseIndex, false);\r\n }\r\n\r\n } else if (this.data.TabItems) {\r\n let ind = 0;\r\n for (const field of this.data.TabItems) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: field.Label as string,\r\n Icon: field.Icon ? field.Icon as string : null,\r\n Visible: ZComponentHelper.getGroupValue(field.Visible as string, this.group),\r\n Counter: typeof (field[\"Counter\"]) === \"string\" ? ZComponentHelper.getGroupValue(field[\"Counter\"] as string, this.group) : field[\"Counter\"],\r\n Index: ind++\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n }\r\n }\r\n\r\n private refreshCurrentTabs() {\r\n const previousStateTabs = this.state.allTabs;\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n const previousTab = previousStateTabs.filter(x => x.Label == this.data.Label[index]);\r\n const previousTabVisible = previousTab.length > 0 ? previousTab[0].Visible : false;\r\n\r\n const isVisible = previousTabVisible;\r\n if (isVisible) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n }\r\n } else {\r\n Object.assign(this.state.currentTabs, this.state.allTabs);\r\n }\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public selectTab = (index: number) => {\r\n this.state.lastSelectedTabIndex = index;\r\n }\r\n\r\n getSelectedTab(tabIndex: number) {\r\n return this.state.lastSelectedTabIndex === tabIndex;\r\n }\r\n\r\n public setSelectTab(tabIndex: number) {\r\n this.state.lastSelectedTabIndex = tabIndex;\r\n }\r\n\r\n restoreTabSelection(): void {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n\r\n let tabSelections: Map<string, number> = \"tabSelections\" in this.group ? this.group['tabSelections'] : null;\r\n if (tabSelections !== null && tabSelections.has(this.data.Name)) { // subsequent loads\r\n this.state.lastSelectedTabIndex = tabSelections.get(this.data.Name);\r\n\r\n } else if (tabSelections === null) { // first load of first tab\r\n tabSelections = new Map<string, number>();\r\n this.group['tabSelections'] = tabSelections;\r\n tabSelections.set(this.data.Name, 0);\r\n\r\n } else if (!tabSelections.has(this.data.Name)) { // first load of rest tabs\r\n tabSelections.set(this.data.Name, 0);\r\n }\r\n }\r\n\r\n public onTabSelect(e) {\r\n this.state.lastSelectedTabIndex = e.index;\r\n this.saveState(e);\r\n\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.ClickEvent);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(e);\r\n }\r\n }\r\n\r\n private saveState(e) {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n\r\n const tabSelections = this.group['tabSelections'] as Map<string, number>;\r\n tabSelections.set(this.data.Name, e.index);\r\n }\r\n\r\n public setTabsVisible = (tabIndexes: number[], status: boolean) => {\r\n if (this.state.allTabs.length <= Math.max.apply(null, tabIndexes) || Math.min.apply(null, tabIndexes) < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndexes.join(\",\"));\r\n return;\r\n }\r\n\r\n tabIndexes.forEach(index => {\r\n this.state.allTabs[index].Visible = status;\r\n });\r\n this.refreshCurrentTabs();\r\n }\r\n\r\n public setTabCounter = (tabIndex: number, counter: number | string) => {\r\n const labels = this.data.Label ? this.data.Label : this.data.TabItems;\r\n if (labels.length <= tabIndex || tabIndex < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndex);\r\n return;\r\n }\r\n\r\n this.state.currentTabs[tabIndex].Counter = counter;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ClickableIcons, AdornmentProperties, TooltipsInfoProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: \"app-ztext\",\r\n templateUrl: \"./ztext.component.html\",\r\n styleUrls: [\"./ztext.component.scss\"]\r\n})\r\nexport class ZtextComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @Input() iconList: ClickableIcons[];\r\n @Input() adornmentList: any[];\r\n\r\n componentProperties = new ZComponentProperties();\r\n public showTooltipsInfoIcon: boolean = false;\r\n public showTooltipsInfoBySide: boolean = false;\r\n public tooltipsInfo: TooltipsInfoProperties = null;\r\n public tooltipsDisplayText: string = null;\r\n public tooltipsDisplayIcon: any;\r\n public showClearButton: any;\r\n public clearButtonIcon: string = \"time-circle\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // this.fControl = this.form.controls[this.data.Value]; //.get(this.data.Value);\r\n // this.fControl = this.form.get(this.data.Value) as FormControl;\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.adornmentList = this.data.AdornmentList;\r\n\r\n if (this.data.OnClick && !this.data.ReadOnly) {\r\n this.componentProperties.isReadOnly = true;\r\n }\r\n\r\n if (!this.componentProperties.isReadOnly) {\r\n this.showClearButton = this.data.ClearButton;\r\n }\r\n\r\n this.tooltipsInfo = this.data.TooltipsInfo;\r\n if (this.tooltipsInfo) {\r\n if ((this.tooltipsInfo.Icon != null || this.tooltipsInfo.Icon != undefined) && !this.isMobileScreen()) {\r\n this.showTooltipsInfoIcon = true;\r\n this.setTooltipsInfoIcon();\r\n }\r\n if (this.tooltipsInfo.SideBySide) {\r\n this.showTooltipsInfoBySide = true;\r\n }\r\n this.setTooltipsDisplayText();\r\n }\r\n\r\n // Handle Clickable Icons\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = \"\";\r\n } else {\r\n if (i.Tooltip.indexOf(\"group.\") !== -1) {\r\n i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = \"top\";\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n mapInputType(fieldType: string): string {\r\n switch (fieldType) {\r\n case \"date\":\r\n return \"date\";\r\n case \"ztext\":\r\n return \"text\";\r\n case \"number\":\r\n return \"number\";\r\n case \"currency\":\r\n return \"number\";\r\n case \"email\":\r\n return \"email\";\r\n case \"password\":\r\n return \"password\";\r\n case \"search\":\r\n return \"search\";\r\n case \"tel\":\r\n return \"tel\";\r\n case \"text\":\r\n return \"text\";\r\n case \"time\":\r\n return \"time\";\r\n case \"url\":\r\n return \"url\";\r\n default:\r\n return \"text\";\r\n }\r\n }\r\n\r\n mapInputMode(fieldType: string): string {\r\n switch (fieldType) {\r\n case \"date\":\r\n return \"none\";\r\n case \"ztext\":\r\n return \"text\";\r\n case \"number\":\r\n return \"decimal\";\r\n case \"currency\":\r\n return \"decimal\";\r\n case \"email\":\r\n return \"email\";\r\n case \"password\":\r\n return \"text\";\r\n case \"search\":\r\n return \"search\";\r\n case \"tel\":\r\n return \"tel\";\r\n case \"text\":\r\n return \"text\";\r\n case \"time\":\r\n return \"none\";\r\n case \"url\":\r\n return \"url\";\r\n default:\r\n return \"text\";\r\n }\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n public getStyle(RightAlign: boolean) {\r\n let ngStyle = \"\";\r\n if (RightAlign) {\r\n ngStyle += \"right\";\r\n } else {\r\n ngStyle += \"left\";\r\n }\r\n return ngStyle;\r\n }\r\n\r\n public setTextboxClass() {\r\n if (this.data.OnClick && !this.data.ReadOnly) {\r\n return \"notmobile-textbox-onfocus\";\r\n }\r\n return \"notmobile-textbox\";\r\n }\r\n\r\n /********** Textbox Event **********/\r\n public textboxOnClick(): void {\r\n //console.log('TextBox is focused: ', event);\r\n this.group.subject.next({\r\n type: \"ztext-OnClick\",\r\n target: this.data.OnClick,\r\n event,\r\n data: { value: event['OnClick'], field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onChange(event: any) {\r\n // console.log('ztext.component - onChange: ', event.target.value); \r\n ZComponentHelper.setComponentModelValue(this.data, event.target.value, this.group);\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value: event.data, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n /********** Icon Button **********/\r\n onIconClick(clickAction: string) {\r\n this.onNavigateTo(clickAction);\r\n }\r\n\r\n onNavigateTo(clickAction: string) {\r\n const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction);\r\n if (n) {\r\n this.group.subject.next({\r\n type: 'ztext-onNavigateTo',\r\n target: clickAction,\r\n data: this.group.zModel[this.data.Value]\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n\r\n /********** Adornment **********/\r\n public getAdornmentBackgroundColor(adornment: AdornmentProperties) {\r\n if (adornment.BackgroundColor) {\r\n return adornment.BackgroundColor + \"!important\";\r\n }\r\n\r\n return \"transparent !important\";\r\n }\r\n\r\n public adornmentLook(adornment: AdornmentProperties) {\r\n if (adornment.AdornmentLook) {\r\n return adornment.AdornmentLook;\r\n }\r\n\r\n return 'clear'\r\n }\r\n\r\n public onAdornmentClick(adornment: AdornmentProperties) {\r\n if (adornment.OnClick) {\r\n this.group.subject.next({\r\n type: 'ztext-adornment',\r\n target: adornment.OnClick,\r\n data: adornment\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public readOnlyOnClear() {\r\n ZComponentHelper.setModelValue(this.data.Value, null, this.group);\r\n }\r\n\r\n /********** TooltipsInfo **********/\r\n public setTooltipsInfoClass() {\r\n if (this.tooltipsInfo && !this.showTooltipsInfoIcon && this.showTooltipsInfoBySide) {\r\n return 'tooltipsinfo-text';\r\n }\r\n return 'tooltipsinfo-text-wide';\r\n }\r\n\r\n public setTooltipsInfoColor() {\r\n if (this.tooltipsInfo) {\r\n if (this.tooltipsInfo.TextColor) {\r\n return this.tooltipsInfo.TextColor;\r\n }\r\n }\r\n\r\n return \"#acacac\"; // default grey\r\n }\r\n\r\n public setTooltipsInfoIcon(displayIcon?: string) {\r\n if (this.showTooltipsInfoIcon) {\r\n if (this.tooltipsInfo.Icon != '') {\r\n if (displayIcon) {\r\n this.tooltipsDisplayIcon = displayIcon;\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayIcon = 'question-circle'\r\n }\r\n }\r\n }\r\n\r\n public setTooltipsDisplayText(displayText?: string) {\r\n if (this.tooltipsInfo) {\r\n if (displayText) {\r\n this.tooltipsDisplayText = displayText;\r\n }\r\n else {\r\n this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;\r\n }\r\n }\r\n else {\r\n this.tooltipsDisplayText = '<Display text error>';\r\n }\r\n }\r\n\r\n public setTooltipsInfoSideBySide() {\r\n if (this.tooltipsInfo) {\r\n if (this.showTooltipsInfoBySide && !this.showTooltipsInfoIcon && this.adornmentList.length < 1) {\r\n return 'ion-row divtextbox tooltipsinfo-right';\r\n }\r\n }\r\n return 'ion-row divtextbox';\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztextarea',\r\n templateUrl: './ztextarea.component.html',\r\n styleUrls: ['./ztextarea.component.scss'],\r\n})\r\nexport class ZtextareaComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n modelzData: Array<any>;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n onValueChange(value: any) {\r\n // console.log(\"zselectmultiple (onValueChange): \", value);\r\n ZComponentHelper.setModelValue(this.data.Value, value, this.group);\r\n this.onChangeEvent(value);\r\n }\r\n\r\n private onChangeEvent(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { value, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly, this.group);\r\n if (typeof readOnlyValue === 'function') {\r\n return readOnlyValue();\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n getClass(form: FormGroup, data: ZField) {\r\n const ionInvalidClass = this.getIon_InvalidClass(form, data);\r\n return `${ionInvalidClass ? ionInvalidClass : ''} ${this.data.Class}`;\r\n }\r\n\r\n onClick() {\r\n if (this.data.OnItemClick) {\r\n this.group.subject.next({\r\n type: \"ztextarea-onClick\",\r\n target: this.data.OnItemClick,\r\n data: this.form.value\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZField, ZGroup, ZComponentProperties,\r\n ZComponent, ZComponentHelper\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztexteditor',\r\n templateUrl: './ztexteditor.component.html',\r\n styleUrls: ['./ztexteditor.component.scss'],\r\n})\r\nexport class ZtexteditorComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n private widthReduce: number;\r\n private heightReduce: number;\r\n public value = \"\";\r\n labelText = \"\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n getCompStyle() {\r\n return {\r\n \"height.px\": this.getCompHeight(),\r\n \"width.px\": window.innerWidth - this.widthReduce\r\n }\r\n }\r\n\r\n private getCompHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 250) ? 250 : h;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, ElementRef, AfterViewInit } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport {\r\n TreeItemDropEvent,\r\n TreeItemDragEvent\r\n} from \"@progress/kendo-angular-treeview\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties,\r\n ZField, ZGroup, ZTreeTemplateParams\r\n} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n selector: \"app-ztree\",\r\n templateUrl: \"./ztree.component.html\",\r\n styleUrls: [\"./ztree.component.scss\"]\r\n})\r\nexport class ZtreeComponent implements ZComponent, OnInit, AfterViewInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"nodetemplate\", { static: true }) nodetemplate: ElementRef;\r\n items: Array<any> = [];\r\n originalItemList: any = null;\r\n // modelzData: Array<any>;\r\n // modelName: string;\r\n // dataSet: any[] = null;\r\n isNodeDrop = false;\r\n private nodeCounter = 1;\r\n private clickActName = null;\r\n public state = { expandedkeys: [] };\r\n public itemIndex = [];\r\n public selectedKeys: any[] = [];\r\n public absoluteText: boolean = false;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.TreeviewExpandAll) {\r\n this.expandAll();\r\n }\r\n\r\n // fix text align issue\r\n if (this.data.OnAddNode || this.data.OnRemoveNode) {\r\n this.absoluteText = true; \r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // const componentId = ZComponentHelper.getComponentId(this.data);\r\n // this.group.zComponents[componentId] = this;\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n getItems() {\r\n // if (this.modelName) {\r\n // return this.group[this.modelName];\r\n // }\r\n const fieldValue = this.data.Value;\r\n if (fieldValue) {\r\n this.nodeCounter = 1;\r\n const fValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n return fValue;\r\n } else {\r\n console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n }\r\n // if (fieldValue && fieldValue.startsWith('group.')) {\r\n // // const newDataSet = JSON.parse(JSON.stringify(this.dataSet));\r\n // const name = fieldValue.slice(6);\r\n // this.nodeCounter = 1;\r\n // // this.group[name] = this.setValuePropToNullAtLeafLeave(this.group[name]);\r\n // this.modelName = name;\r\n // return this.group[name];\r\n // } else {\r\n // console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n // }\r\n }\r\n\r\n public isExpanded = (dataItem: any, index: string) => {\r\n // console.log(index);\r\n return this.state.expandedkeys.indexOf(index) > -1;\r\n // return true;\r\n }\r\n\r\n public expandNode = (field:string, value: string, setAsSelected: boolean) => {\r\n this.itemIndex = [];\r\n const node = this.getItems();\r\n\r\n this.searchNodeIndex(node, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n if (setAsSelected) {\r\n this.selectedKeys = index;\r\n }\r\n const indexArr = [];\r\n index.forEach((i:any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x:any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n this.state.expandedkeys = this.state.expandedkeys.concat(indexArr);\r\n }\r\n\r\n public collapseNode = (field:string, value: string, collapseParent: boolean) => {\r\n this.itemIndex = [];\r\n const node = this.getItems();\r\n\r\n this.searchNodeIndex(node, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n let indexArr = [];\r\n if (collapseParent) {\r\n index.forEach((i:any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x:any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n } else {\r\n indexArr = index;\r\n }\r\n\r\n this.state.expandedkeys = this.state.expandedkeys.filter(v => {\r\n return !indexArr.includes(v);\r\n });\r\n }\r\n\r\n public searchNodeIndex(node: any, value: string, key: string, field: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (d[field] === Number(value) || d[field] === value) {\r\n this.itemIndex = this.itemIndex.concat(key + '' + i);\r\n }\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.searchNodeIndex(d.Value, value, k, field);\r\n }\r\n });\r\n }\r\n\r\n public expandAll = () => {\r\n const node = this.getItems();\r\n if (node) {\r\n this.expandAllNode(node, '');\r\n } \r\n }\r\n\r\n public collapseAll = () => {\r\n this.state.expandedkeys = [];\r\n }\r\n\r\n private expandAllNode(node: any, key: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.state.expandedkeys = this.state.expandedkeys.concat(k);\r\n this.expandAllNode(d.Value, k);\r\n }\r\n });\r\n }\r\n\r\n public handleCollapse(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.filter(k => k !== node.index);\r\n }\r\n\r\n public handleExpand(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.concat(node.index);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n getTemplate(dataItem: any, data: ZField, group: ZGroup) {\r\n if (data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n data.ItemTemplate\r\n );\r\n if (!getTemplateFunc) {\r\n console.warn(\r\n \"The (\" +\r\n data.ItemTemplate +\r\n \") is not defined correctly. Value contains: \",\r\n getTemplateFunc\r\n );\r\n return;\r\n }\r\n\r\n return getTemplateFunc({\r\n dataItem,\r\n data,\r\n group\r\n } as ZTreeTemplateParams);\r\n } else {\r\n return Object.values(dataItem)\r\n .filter(data => typeof data === \"string\")\r\n .join(\", \");\r\n }\r\n }\r\n\r\n convertToTreeItems(dataSet: any[]) {\r\n const toTreeItems: any[] = [];\r\n const treeIndex: any = {};\r\n const pendingItems: any[] = [];\r\n dataSet.forEach((d: any) => {\r\n if (!d.ParentId) {\r\n toTreeItems.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n if (!parentItem.Value) {\r\n parentItem.Value = [];\r\n }\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n pendingItems.push(d);\r\n }\r\n }\r\n });\r\n\r\n if (pendingItems.length > 0) {\r\n pendingItems.forEach((d: any) => {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n }\r\n });\r\n }\r\n\r\n return toTreeItems;\r\n }\r\n\r\n onSelectionChange(event: any) {\r\n let targetName: string;\r\n if (this.clickActName) {\r\n switch (this.clickActName) {\r\n case 'AddNode':\r\n targetName = this.data.OnAddNode;\r\n break;\r\n case 'RemoveNode':\r\n targetName = this.data.OnRemoveNode;\r\n break;\r\n }\r\n } else {\r\n targetName = this.data.OnItemClick;\r\n }\r\n this.clickActName = null;\r\n this.group.subject.next({\r\n type: \"ztree_onSelectionChange\",\r\n target: targetName,\r\n data: event.dataItem,\r\n event: event.index\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n onAddNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'AddNode';\r\n // event.stopPropagation();\r\n // if (this.data.OnAddNode) {\r\n // const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddNode);\r\n // if (typeof func === 'function') {\r\n // const callFunc = func.bind(this.group.ctrlScope);\r\n // callFunc(dataItem, data, group, event.index);\r\n // }\r\n // return;\r\n // }\r\n }\r\n\r\n onRemoveNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'RemoveNode';\r\n }\r\n\r\n onEditNode(event: any) {\r\n if (this.data.OnEditNode) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnEditNode);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n handleNodeDrop(event: TreeItemDropEvent): void {\r\n if(this.data.Draggable === false){\r\n event.setValid(false);\r\n return;\r\n }\r\n\r\n this.isNodeDrop = true;\r\n const dropHandler = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data.OnDrop\r\n );\r\n if (typeof dropHandler === \"function\") {\r\n const callFunc = dropHandler.bind(this);\r\n callFunc(event);\r\n }\r\n\r\n // prevent drop if attempting to add to file\r\n // if (isFile(event.destinationItem.item.dataItem.text) && event.dropPosition === DropPosition.Over) {\r\n // event.setValid(false);\r\n // }\r\n }\r\n\r\n handleNodeDragEnd(event: TreeItemDragEvent) {\r\n if (!this.isNodeDrop) {\r\n return;\r\n }\r\n this.isNodeDrop = false;\r\n const items = this.getItems();\r\n // console.log('Items: ', this.items);\r\n const target = [];\r\n this.updateChangeToDataSet(items, target);\r\n // this.dataSet = target;\r\n ZComponentHelper.setModelValue(this.data.Value, target, this.group);\r\n this.group.subject.next({\r\n type: \"ztree-onTreeNodeDragEnd\",\r\n target: this.data.OnChange,\r\n data: target\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private updateChangeToDataSet(source: Array<any>, target: Array<any>) {\r\n source.forEach(d => {\r\n if (Array.isArray(d.Value)) {\r\n const t = JSON.parse(JSON.stringify(d));\r\n t.Value = [];\r\n target.push(t);\r\n this.updateChangeToDataSet(d.Value, t.Value);\r\n } else {\r\n const t = Object.assign({}, d);\r\n t.Value = t._DataValue;\r\n delete t._DataValue;\r\n target.push(t);\r\n }\r\n });\r\n }\r\n\r\n // #region search feature - filterable: true\r\n public handleFilter(value: string): void {\r\n if (this.items.length == 0) {\r\n this.items = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n if (this.originalItemList == null) {\r\n this.originalItemList = this.items.map(item => Object.assign({}, item));\r\n }\r\n }\r\n\r\n this.items = this.originalItemList.map(item => Object.assign({}, item));\r\n const target = this.search(this.items, value);\r\n const gridValue = this.filterPrefix(this.data.Value);\r\n this.group[gridValue] = target;\r\n }\r\n\r\n private filterPrefix(valueName: any) {\r\n if (valueName.startsWith('zData.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName.startsWith('group.zData.')) {\r\n return valueName.slice(12);\r\n }\r\n if (valueName.startsWith('group.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName) {\r\n return valueName;\r\n }\r\n }\r\n\r\n private search(items: any[], term: string): any[] {\r\n return items.reduce((acc, item) => {\r\n if (this.contains(item.Name, term)) {\r\n acc.push(item);\r\n } else if (item.Value && item.Value.length > 0) {\r\n const newItems = this.search(item.Value, term);\r\n\r\n if (newItems.length > 0) {\r\n var filterItem = item;\r\n filterItem.Value = newItems;\r\n acc.push(filterItem);\r\n }\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n private contains(text: string, term: string): boolean {\r\n return text.toLowerCase().indexOf((term || \"\").toLowerCase()) >= 0;\r\n }\r\n // #endregion search feature - filterable: true\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, forkJoin, Observable, Subscription, Subject } from 'rxjs';\r\nimport { tap, switchMap } from 'rxjs/operators';\r\nimport { CellClickEvent } from '@progress/kendo-angular-treelist';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZField, ZGroup, ZComponentProperties, FieldService,\r\n WebApiService, AuthService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\nexport interface ZTreeListColumn {\r\n field: string;\r\n title: string;\r\n width: number;\r\n visible: boolean | any;\r\n fieldType: string;\r\n navigateTo: string;\r\n command: any;\r\n class: any;\r\n footerTemplate: boolean;\r\n aggregateType: string;\r\n aggregateTitle: string;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport class ZTreeListOptions {\r\n constructor(\r\n public sortable?: boolean,\r\n public resizable?: boolean,\r\n public filterable?: boolean,\r\n public reorderable?: boolean,\r\n public columnMenu?: boolean,\r\n public scrollable?: boolean,\r\n public refresh?: boolean,\r\n public autoBind?: boolean,\r\n public dataSource?: string,\r\n public dataBound?: any,\r\n public idField?: string,\r\n public parentIdField?: string,\r\n public columns?: Array<any>,\r\n public aggregate?: any,\r\n public pageAble?: any,\r\n ) { }\r\n}\r\n\r\n@Component({\r\n selector: \"app-ztreelist\",\r\n templateUrl: \"./ztreelist.component.html\",\r\n styleUrls: [\"./ztreelist.component.scss\"],\r\n})\r\nexport class ZtreelistComponent implements ZComponent, OnInit, OnDestroy {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // @ViewChild(ZTreeListBindingDirective, { static: false }) ztreelist: ZTreeListBindingDirective;\r\n ztreelist: any = null;\r\n subscription: Subscription;\r\n dataSource: string;\r\n idField = \"Id\";\r\n parentIdField = \"ParentId\";\r\n options: ZTreeListOptions = new ZTreeListOptions();\r\n componentProperties = new ZComponentProperties();\r\n fieldgridColVisible: any[];\r\n pageSize = 20;\r\n inlineEditedFormGroups: Array<any> = [];\r\n isLoading: boolean;\r\n treelistSubject: Subject<any> = new Subject<any>();\r\n // treelistSubject: Subject<any> = new Subject<any>();\r\n // subscription: Subscription;\r\n // ztreelist: any = null;\r\n // columns: any[];\r\n\r\n private widthReduce: number;\r\n\r\n private heightReduce: number;\r\n\r\n constructor(\r\n private fieldService: FieldService,\r\n private webapiService: WebApiService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private authService: AuthService) { }\r\n // ngAfterViewInit(): void {\r\n // // this.ztreelist.setOptions({data: this.data, group: this.group});\r\n // }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n this.widthReduce = this.data.WidthReduce || 60;\r\n this.heightReduce = this.data.HeightReduce || 560;\r\n this.pageSize = this.data.PageSize || 20;\r\n if (!!this.data.Options) {\r\n this.setLocalOptions();\r\n } else {\r\n this.setFieldElementOptions();\r\n }\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n // if (this.subscription) {\r\n // this.subscription.unsubscribe();\r\n // }\r\n }\r\n\r\n getGridStyle() {\r\n // debugger;\r\n return {\r\n \"height.px\": this.getGridHeight(), // window.innerHeight - this.heightReduce, // 450,\r\n \"width.px\": window.innerWidth - this.widthReduce,\r\n }; // \"width.px\": this.innerWidth - 35\r\n }\r\n\r\n private getGridHeight() {\r\n const h = window.innerHeight - this.heightReduce;\r\n return h < 180 ? 180 : h;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.dataSource = gData;\r\n this.createFormControlsForInlineEdit(gData);\r\n if (gData && this.inlineEditedFormGroups && this.inlineEditedFormGroups.length > 0) {\r\n gData.forEach(data => {\r\n const fgVal = this.inlineEditedFormGroups.find(i => i[this.idField] === data[this.idField]);\r\n const fg = fgVal.Fg;\r\n if (fgVal && fg) {\r\n const ke = Object.keys(fg.controls);\r\n Object.keys(fg.controls).forEach(k => {\r\n const fc = fg.controls[k];\r\n if (fc) {\r\n fc.setValue(data[k]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n public isButtonHidden(col: any, cellContain: any) {\r\n if (col.visible) {\r\n return ZComponentHelper.getGroupEvalValue.call(this, col.visible, cellContain.viewItem.data);\r\n }\r\n\r\n if (!col.hiddenParam || col.hiddenValue === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === null) {\r\n return true;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === col.hiddenValue) {\r\n return true;\r\n } else { return false; }\r\n }\r\n\r\n public buttonClick(button: any, cellContext: any) {\r\n if (button.edit) {\r\n button.edit(cellContext);\r\n } else {\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: cellContext\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public onNavigateTo(event: any, colSetting: any, rowData: any, cellData: string) {\r\n // debugger;\r\n // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: colSetting.navigateTo,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public isColumnsVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n private setLocalOptions() {\r\n const options: ZTreeListOptions = ZComponentHelper.getGroupValue(\r\n this.data.Options,\r\n this.group\r\n );\r\n if (!options) {\r\n console.warn(\"No initialise for Field.Options: \", this.data.Options);\r\n return;\r\n }\r\n this.options = options;\r\n this.options.idField = this.options.idField || this.idField;\r\n this.options.parentIdField = this.options.parentIdField || this.parentIdField;\r\n\r\n\r\n const _translationFullList = this.authService.SystemLocaleTranslation;\r\n //debugger;\r\n //const _translationFilteredList = _translationFullList ? _translationFullList.filter(x => x['ProjectName'] === projectName && x['ElementName'] === fieldName) : null;\r\n\r\n\r\n //if (this.options.columns && )\r\n //const translatedTitle = _translationFilteredList.find(x => x['PhraseKey'] === field.Name.toLowerCase());\r\n //if (translatedTitle) {\r\n // const _label = field.Label.toString().trim();\r\n //}\r\n\r\n if (\r\n this.options.dataSource &&\r\n typeof this.options.dataSource === \"string\"\r\n ) {\r\n if (this.options.dataSource.startsWith(\"group.\")) {\r\n this.dataSource = ZComponentHelper.getGroupValue(this.options.dataSource, this.group);\r\n } else {\r\n console.error(this.data.Name + \" - has invalid dataSource\");\r\n }\r\n } else {\r\n console.error(this.data.Name + \" - dataSource property is not declared.\");\r\n }\r\n }\r\n\r\n private setFieldElementOptions() {\r\n this.options.sortable = true;\r\n this.options.resizable = true;\r\n this.options.filterable = true;\r\n this.options.resizable = true;\r\n this.options.columnMenu = this.data.DisableGridColumnMenu ? false : true;\r\n this.options.scrollable = true;\r\n this.options.idField = this.data[\"idField\"] || this.idField;\r\n this.options.parentIdField = this.data[\"parentIdField\"] || this.parentIdField;\r\n this.options.columns = [];\r\n this.options.aggregate = [];\r\n this.options.pageAble = this.data.PageSize ? true : false;\r\n\r\n let zfields = [];\r\n this.fieldService.getFormFieldCode(this.data[\"ColumnFieldCode\"], \"FormField\", null, null).pipe(\r\n switchMap(fields => {\r\n zfields = fields;\r\n return this.getButtonsFromZButtons(fields);\r\n }),\r\n tap((buttons) => {\r\n this.setTreeListColumns(zfields, buttons);\r\n }),\r\n switchMap(() => {\r\n return this.getDataBinding();\r\n }),\r\n tap(data => {\r\n this.createFormControlsForInlineEdit(data);\r\n })\r\n ).subscribe(data => {\r\n if (data) {\r\n this.dataSource = data;\r\n }\r\n });\r\n }\r\n\r\n // const zbuttonFields = [] as Array<ZField>;\r\n // fields.forEach(field => {\r\n // if (field.Type === \"zbuttons\") {\r\n // let fieldColVisible = field.gridColVisible;\r\n // if (field.gridColVisible && field.gridColVisible.toString().startsWith('group.')) {\r\n // // field.gridColVisible = ZComponentHelper.getGroupValue(field.gridColVisible.toString(), this.group);\r\n // fieldColVisible = ZComponentHelper.getGroupValue(field.gridColVisible.toString(), this.group);\r\n // }\r\n // // if (field.gridColVisible === true) {\r\n // if (fieldColVisible === true) {\r\n // zbuttonFields.push(field);\r\n // }\r\n // }\r\n // });\r\n\r\n // if (zbuttonFields.length === 0) {\r\n // return of([]);\r\n // }\r\n // zbuttonFields.forEach(zbuttonField => {\r\n // zbuttonResult.push(\r\n // this.fieldService.getFormFieldCode(zbuttonField.Value, \"FormField\", null, null).pipe(\r\n // switchMap(buttons => {\r\n // return of({ zbuttonField, buttons });\r\n // }))\r\n // );\r\n // });\r\n\r\n private getButtonsFromZButtons(fields: Array<ZField>): Observable<any> {\r\n const buttonCmd = [];\r\n const zbuttonResult = [];\r\n fields.forEach(field => {\r\n if (field.Type === \"zbuttons\" && ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group)) {\r\n zbuttonResult.push(\r\n this.fieldService.getFormFieldCode(field.Value, \"FormField\", null, null).pipe(\r\n switchMap(buttons => {\r\n return of({ field, buttons });\r\n }))\r\n );\r\n }\r\n });\r\n\r\n if (zbuttonResult.length === 0) {\r\n return of([]);\r\n }\r\n\r\n return forkJoin(zbuttonResult).pipe(\r\n tap(resp => {\r\n resp.forEach(zbuttonsArray =>\r\n zbuttonsArray[\"buttons\"].forEach((button: any) => {\r\n buttonCmd.push({\r\n zbuttonsName: zbuttonsArray[\"field\"].Value,\r\n name: button.Value,\r\n class: button.Class,\r\n text: button.Label,\r\n icon: button.Icon,\r\n visible: button.Visible,\r\n hiddenParam: button[\"hiddenParam\"],\r\n hiddenValue: button[\"hiddenValue\"],\r\n edit: button.edit,\r\n ClickEvent: button.ClickEvent,\r\n ShowLabel: button.ShowLabel,\r\n color: button.Color\r\n });\r\n })\r\n );\r\n }),\r\n switchMap(() => {\r\n return of(buttonCmd);\r\n })\r\n );\r\n }\r\n\r\n private setTreeListColumns(fields: Array<ZField>, buttons: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.setTreeListColumns(field.Value, buttons);\r\n }\r\n if (ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group) === true) {\r\n if (field.Type === \"zbuttons\") {\r\n this.insertCommand(field, buttons);\r\n } else {\r\n if (field.AggregateType && field.AggregateType !== \"\") {\r\n let aggregatetitle = \"\";\r\n if (field.AggregateType === \"sum\") {\r\n aggregatetitle = \"Total: \";\r\n } else {\r\n aggregatetitle = field.AggregateType + \": \";\r\n }\r\n this.insertFooterTemplateField(field, aggregatetitle);\r\n this.options.aggregate.push({\r\n field: field.Value,\r\n aggregate: field.AggregateType\r\n });\r\n } else {\r\n this.insertField(field);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private insertField(field: ZField) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push(\r\n Object.assign(field, {\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: \"\",\r\n aggregateTitle: \"\",\r\n isEditableInGrid: field.IsEditableInGrid\r\n })\r\n );\r\n }\r\n\r\n private insertCommand(field: ZField, buttons: any) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Name,\r\n title: colTitle,\r\n width: field.width,\r\n visible: field.Visible,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: buttons.filter(x => x.zbuttonsName === field.Value),\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: \"\",\r\n aggregateTitle: \"\",\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private insertFooterTemplateField(field: ZField, aggregatetitle: string) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: true,\r\n aggregateType: field.AggregateType,\r\n aggregateTitle: aggregatetitle,\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private getDataBinding(): Observable<any> {\r\n if (this.data.DataSource) {\r\n return of(ZComponentHelper.getGroupValue(this.data.DataSource, this.group));\r\n }\r\n\r\n const resourceUrl = this.getResouceURL();\r\n if (resourceUrl) {\r\n return this.webapiService.getApi(resourceUrl, null, null, null, null, null, true);\r\n }\r\n return of([]);\r\n }\r\n\r\n private getResouceURL() {\r\n return ZComponentHelper.getGroupValue(\r\n this.data.ResourceURL,\r\n this.group\r\n );\r\n }\r\n\r\n cellClickHandler(event: CellClickEvent) {\r\n if (!!this.data.DisableCellClickHandler) {\r\n return;\r\n }\r\n\r\n console.log(\"cellClick event: \", event);\r\n if (this.data.OnItemClick) {\r\n const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n // TODO:\r\n // debugger;\r\n // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: \"zgrid-cellClick\",\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n // const currentPath = this.activatedRoute['_routerState'].snapshot.url;\r\n // this.router.navigate([currentPath + \"/\" + this.group.editModelURL, dataItem.Id]);\r\n }\r\n }\r\n\r\n private createFormControlsForInlineEdit(data: any) {\r\n if (this.options.columns.find(c => c.isEditableInGrid) === undefined || !data) {\r\n return;\r\n }\r\n\r\n this.inlineEditedFormGroups = [];\r\n\r\n data.forEach(d => {\r\n const items = {};\r\n this.options.columns.forEach(c => {\r\n items[c.field] = new FormControl(d[c.field]);\r\n });\r\n const formGroup = new FormGroup(items);\r\n this.inlineEditedFormGroups.push({ Id: d[this.idField], Fg: formGroup });\r\n });\r\n }\r\n\r\n public getInlineField(value: any) {\r\n return this.options.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(dataItem: any) {\r\n return this.inlineEditedFormGroups.find(x => x.Id === dataItem[this.idField]).Fg;\r\n }\r\n\r\n public isInlineEditColVisible(dataItem: any, column: any) {\r\n const isVisible = dataItem[`${column.Value}_Visible`];\r\n return !(isVisible === false);\r\n }\r\n\r\n public getFormat(col: any) {\r\n let format = \"\";\r\n const formatArr = col.FormatOptions.split(\".\")\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = \"1.\" + dp + \"-\" + dp;\r\n }\r\n\r\n return format;\r\n }\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.options.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName || col.field === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public getColClass(dataItem: any, col: any) {\r\n let ngClass = \"gridCell \";\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += \"rightAligned \";\r\n }\r\n\r\n if (dataItem[col.field + '_Class']) {\r\n ngClass += dataItem[col.field + '_Class'] + \" \";\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += col.Class + \" \";\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\r\n }\r\n\r\n onFilterChange(event: any): void {\r\n if (this.ztreelist) {\r\n // to be implement.\r\n }\r\n }\r\n\r\n private mapFilterOperator(operator: any) {\r\n switch (operator) {\r\n case \"eq\":\r\n return \"eq\";\r\n case \"neq\":\r\n return \"neq\";\r\n case \"lt\":\r\n return \"lt\";\r\n case \"lte\":\r\n return \"lte\";\r\n case \"gt\":\r\n return \"gt\";\r\n case \"gte\":\r\n return \"gte\";\r\n case \"startswith\":\r\n return \"startswith\";\r\n case \"endswith\":\r\n return \"endswith\";\r\n case \"isnull\":\r\n return \"isnull\";\r\n case \"isnotnull\":\r\n return \"isnotnull\";\r\n default:\r\n return \"==\";\r\n // eq, neq, isnull, isnotnull, endswith, startswith\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentHelper, ZComponentProperties,\r\n ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztrendcard',\r\n templateUrl: './ztrendcard.component.html',\r\n styleUrls: ['./ztrendcard.component.scss'],\r\n})\r\nexport class ZtrendcardComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private title = \"Undefined\";\r\n private icon = \"address-card\";\r\n private color = \"#000000\";\r\n private value = 0;\r\n\r\n options = {\r\n title: this.title,\r\n icon: this.icon,\r\n color: this.color,\r\n value: this.value\r\n };\r\n\r\n// fieldElement01 = [\r\n// {\"Name\": \"myTrendCard1\",\r\n// \"Value\": \"group.myTrendCard01Value\",\r\n// \"Type\": \"ztrendcard\",\r\n// \"Visible\": \"true\",\r\n// \"DivClass\": \"col-md-3 col-lg-3\",\r\n// \"AppendDivClearFix\": false,\r\n// \"Title\": \"Upcoming Call/Follow-Up Call\",\r\n// \"Icon\": \"phone\",\r\n// \"Color\": \"#F7BC46\",\r\n// }];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.icon =ZComponentHelper.getGroupEvalValue.call(this, field.Icon) || options.icon;\r\n options.color =ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.color;\r\n options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n }\r\n\r\n public setData = (gData: any) => {\r\n if(!gData)\r\n {\r\n this.options.value=0;\r\n }\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormControl, FormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { AsyncSubject, forkJoin, Observable, of } from \"rxjs\";\r\nimport { concatMap, map, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZField,\r\n AlertService, AuthService, FieldService, ResourceApiService, ToastService, WebApiService,\r\n ZGroup, ZComponentProperties, ZComponentHelper\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zudf',\r\n templateUrl: './zudf.component.html',\r\n styleUrls: ['./zudf.component.scss'],\r\n})\r\nexport class ZudfComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n formField: ZField[];\r\n\r\n componentProperties = new ZComponentProperties();\r\n initialDataValue: any;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private authService: AuthService,\r\n private fieldService: FieldService,\r\n private resourceApiService: ResourceApiService,\r\n private toastService: ToastService,\r\n private webApiService: WebApiService\r\n ) { }\r\n \r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // keep data Value\r\n this.initialDataValue = this.data.Value;\r\n\r\n if (ZComponentHelper.isNullUndefinedEmpty(this.data.Value)) {\r\n this.loadEmptyForm();\r\n }\r\n else {\r\n this.loadZudfForm(); \r\n }\r\n }\r\n\r\n private loadEmptyForm() {\r\n of(true).pipe(\r\n tap(() => {\r\n this.data.SubType = 'zudf';\r\n\r\n // change the value to the result field form \r\n this.data.Value = [];\r\n\r\n // change zudf to zdiv\r\n //this.data.Type = 'zdiv';\r\n }),\r\n tap(() => { \r\n if (!this.group['_zudf_' + this.data.Name]) {\r\n this.group['_zudf_' + this.data.Name] = new ZGroup;\r\n }\r\n\r\n const grp = this.group['_zudf_' + this.data.Name];\r\n \r\n grp.zModel = {};\r\n\r\n // create as new Form Group\r\n this.form = this.toFormGroup(this.data.Value);\r\n\r\n // set to zGroup scope\r\n grp.form = this.form;\r\n }),\r\n tap(() => {\r\n // set to formField for display\r\n this.formField = this.data.Value;\r\n })\r\n ).subscribe(() => {\r\n // set Field div class\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n });\r\n }\r\n\r\n private loadZudfForm() {\r\n of(true).pipe(\r\n concatMap(fieldElements => {\r\n const asyncSubject = new AsyncSubject<any>();\r\n this.fieldService.getFormFieldCode(this.data.Value, 'FormField', this, 'fields').pipe(\r\n map(formFieldResult => {\r\n // rename add prefix to all udf field to prevent duplicate from main form\r\n this.appendPrefix(formFieldResult, 'zudf_' + this.data.Name);\r\n\r\n // change the value to the result field form \r\n this.data.Value = formFieldResult;\r\n\r\n // change zudf to zdiv\r\n //this.data.Type = 'zdiv';\r\n\r\n // end subject\r\n asyncSubject.next(true);\r\n asyncSubject.complete();\r\n })\r\n ).subscribe();\r\n\r\n return asyncSubject.asObservable();\r\n }),\r\n tap(() => {\r\n if (!this.group['_zudf_' + this.data.Name]) {\r\n this.group['_zudf_' + this.data.Name] = new ZGroup;\r\n }\r\n\r\n const grp = this.group['_zudf_' + this.data.Name];\r\n\r\n grp.zModel = {};\r\n\r\n // create as new Form Group\r\n this.form = this.toFormGroup(this.data.Value);\r\n\r\n // set to zGroup scope\r\n grp.form = this.form;\r\n }),\r\n tap(() => {\r\n // set to formField for display\r\n this.formField = this.data.Value;\r\n })\r\n ).subscribe(() => {\r\n // set Field div class\r\n ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n\r\n // TODO: get saved record\r\n //this.getFormFieldzModel();\r\n\r\n // change back the data.Value\r\n if (this.data['DisableReplaceValue']) {\r\n this.data.Value = this.initialDataValue;\r\n }\r\n });\r\n }\r\n\r\n private getFormFieldzModel() {\r\n const form = this.group['_zudf_' + this.data.Name].form;\r\n const zModel = this.group['_zudf_' + this.data.Name].zModel;\r\n const url = this.resourceApiService.getURL('field');\r\n\r\n const respData = { 'parentFormId': 5722, 'zudf_Name': 'test' };\r\n\r\n Object.assign(zModel, respData);\r\n form.patchValue(zModel);\r\n form.markAsPristine();\r\n\r\n //return this.webApiService.httpGet$(url, { name: this.group.fieldName, type: 'FormField' }).pipe(\r\n // tap((respData: any) => {\r\n // debugger;\r\n // Object.assign(zModel, respData);\r\n // form.patchValue(zModel);\r\n // form.markAsPristine();\r\n // })\r\n //);\r\n }\r\n\r\n private toFormGroup(fieldElements: Array<ZField>) {\r\n const formControls: { [key: string]: FormControl } = {};\r\n this.getFormControls(fieldElements, formControls);\r\n const newFormGroup = new FormGroup(formControls);\r\n return newFormGroup;\r\n }\r\n\r\n private getFormControls(fieldArray: Array<ZField>, formControls: { [key: string]: FormControl }) {\r\n fieldArray.forEach(field => {\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n }\r\n else {\r\n if (Array.isArray(field.Value)) {\r\n this.getFormControls(field.Value, formControls);\r\n }\r\n else {\r\n const isFormControl = ZComponentHelper.isFormControl(field);\r\n const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired);\r\n formControls[field.Value] = new FormControl(\r\n this.group['_zudf_' + this.data.Name].zModel[field.Value],\r\n validators\r\n );\r\n if (ZComponentHelper.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new FormControl(\r\n this.group['_zudf_' + this.data.Name].zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n }\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n private appendPrefix(fields: ZField[], prefix: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.appendPrefix(field.Value, prefix);\r\n }\r\n else {\r\n field.Name = prefix + '_' + field.Name;\r\n if (field.Type != 'zbuttons') {\r\n field.Value = prefix + '_' + field.Value;\r\n }\r\n field.SubType = prefix;\r\n }\r\n });\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n public appendFormControl(zudfControlName: string, zudfControl: FormControl, fieldData: ZField) {\r\n this.form.addControl(zudfControlName, zudfControl);\r\n this.formField.push(fieldData);\r\n }\r\n \r\n public clearFormControl() {\r\n this.formField.forEach(data => {\r\n this.form.removeControl(data.Value); \r\n });\r\n\r\n this.data.Value = this.initialDataValue;\r\n\r\n this.formField = [];\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponent, ZGroup, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zunknown',\r\n templateUrl: './zunknown.component.html',\r\n styleUrls: ['./zunknown.component.scss'],\r\n})\r\nexport class ZunknownComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, NgZone, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { environment } from \"src/environments/environment\";\r\nimport { take } from 'rxjs/operators';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport {\r\n FileInfo,\r\n SuccessEvent,\r\n RemoveEvent,\r\n UploadEvent,\r\n FileRestrictions,\r\n ChunkSettings,\r\n SelectEvent,\r\n UploadComponent\r\n} from \"@progress/kendo-angular-upload\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n AuthService, ZCoreService, CompressImageService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties,\r\n ZField, ZGroup, UploadMetaData, ImageCompressionConfig\r\n} from \"mmhglobal-zcore\";\r\n\r\nexport class MyFileInfo implements FileInfo {\r\n name: string;\r\n uid?: string;\r\n myUid?: string;\r\n}\r\n\r\n@Component({\r\n selector: \"app-zupload\",\r\n templateUrl: \"./zupload.component.html\",\r\n styleUrls: [\"./zupload.component.scss\"],\r\n})\r\nexport class ZuploadComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n @ViewChild(\"uploadComponent\") uploadComponent: UploadComponent;\r\n\r\n componentProperties = new ZComponentProperties();\r\n uploadAttachmentUrl: string = null;\r\n uploadSaveUrl = \"/Attachment/Chunk_Upload_Save\"; // should represent an actual API endpoint\r\n uploadRemoveUrl = \"/Attachment/Chunk_Upload_Remove\"; // should represent an actual API endpoint\r\n downloadFileUrl = \"/Attachment/downloadFile\";\r\n getImageUrl = \"/Attachment/getImage\"; // GET method\r\n isAutoUpload = false;\r\n isMultiple = false;\r\n imagePreviews: any[] = [];\r\n uid: string[] = [];\r\n showFileList = true;\r\n fileList: any[] = [];\r\n\r\n public restrictions: FileRestrictions = {\r\n\r\n minFileSize: 1,\r\n maxFileSize: 4194304,\r\n allowedExtensions: [\r\n \"jpg\",\r\n \"jpeg\",\r\n \"png\",\r\n \"bmp\",\r\n \"pdf\",\r\n \"txt\",\r\n \"docx\",\r\n \"doc\",\r\n \"xlsx\",\r\n \"xls\",\r\n \"ppt\",\r\n \"pptx\",\r\n \"csv\",\r\n ],\r\n };\r\n\r\n public chunkSettings: ChunkSettings = {\r\n size: 102400,\r\n maxAutoRetries: 3,\r\n };\r\n\r\n // zModelValue = [{\r\n // name: \"RXJS 01.png\",\r\n // size: 128753,\r\n // uid: \"c96e234d-af61-4587-adcc-3b400ddef884\"\r\n // }];\r\n\r\n // fieldElement = [{\r\n // Name: 'FileUploadList',\r\n // Type: 'zupload',\r\n // Value: 'FileUploadList',\r\n // SelectionOptions: ['jpg', 'jpeg', 'png', 'bmp', 'pdf'],\r\n // UploadMetaData: 'group.UploadMetaData',\r\n // AutoUpload: false,\r\n // AllowRemove: true,\r\n // Multiple: false,\r\n // OnSuccess: 'group.onSuccess()',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private compressImage: CompressImageService,\r\n private zcoreService: ZCoreService,\r\n private ngZone: NgZone\r\n ) {\r\n this.uploadAttachmentUrl = this.zcoreService.getEnvironment().uploadAttachmentUrl;\r\n this.uploadSaveUrl = this.uploadAttachmentUrl + this.uploadSaveUrl;\r\n this.uploadRemoveUrl = this.uploadAttachmentUrl + this.uploadRemoveUrl;\r\n }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // this.group['UploadMetaData'] = new UploadMetaData(null, '15', 'SO-No-1234', 'SaleOrder');\r\n\r\n\r\n // this.uploadSaveUrl = uploadAttachmentUrl + this.uploadSaveUrl;\r\n // this.uploadRemoveUrl = uploadAttachmentUrl + this.uploadRemoveUrl;\r\n\r\n if (this.data.SelectOptions) {\r\n this.restrictions.allowedExtensions = (this.data\r\n .SelectOptions as unknown) as string[];\r\n }\r\n\r\n if (this.data.MinFileSize) {\r\n this.restrictions.minFileSize = this.data.MinFileSize;\r\n }\r\n\r\n if (this.data.MaxFileSize) {\r\n this.restrictions.maxFileSize = this.data.MaxFileSize;\r\n }\r\n\r\n this.isAutoUpload = this.data.AutoUpload || false;\r\n\r\n if (!this.data.AllowRemove) {\r\n this.uploadRemoveUrl = \"\";\r\n }\r\n\r\n if (this.data.Multiple) {\r\n this.isMultiple = this.data.Multiple;\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group.form.controls[this.data.Value];\r\n status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n };\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n };\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(\r\n status,\r\n this.group,\r\n this.data.Value,\r\n this.componentProperties,\r\n Validators.required\r\n );\r\n };\r\n\r\n getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n onSuccess(e: SuccessEvent): void {\r\n // angular kendo upload didn't filter away Sent event for remove, so we have to handle it here\r\n // upload progress not required for removal, thus it's also removed\r\n // @ts-ignore\r\n if (e.operation === \"remove\" && (e.response.type === HttpEventType.Sent || e.response.type === HttpEventType.UploadProgress)) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(this.group.zModel[this.data.Value])) {\r\n this.group.zModel[this.data.Value] = [];\r\n }\r\n\r\n const file = e.files[0] as MyFileInfo;\r\n const existingFileIndex = this.group.zModel[this.data.Value].findIndex(f => f.name === file.name && f.uid === file.uid);\r\n if (e.operation === \"upload\") {\r\n // console.log('upload Success: ', e);\r\n file.myUid = file.uid;\r\n delete file['httpSubscription'];\r\n\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value][existingFileIndex] = file;\r\n } else {\r\n this.group.zModel[this.data.Value].push(file);\r\n }\r\n\r\n } else if (e.operation === \"remove\") {\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value].splice(existingFileIndex, 1);\r\n }\r\n }\r\n\r\n this.group.subject.next({\r\n type: \"zupload-onSuccess\",\r\n target: this.data.OnSuccess,\r\n event: e,\r\n data: { value: e.files[0], field: this.data },\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private compressionConfigHandler(imgConfig: ImageCompressionConfig): ImageCompressionConfig {\r\n if (imgConfig.FileSizeMaxSize) {\r\n imgConfig.FileSizeMaxSizeByte = this.convertSizeToByte(imgConfig.FileSizeMaxSize);\r\n }\r\n\r\n if (imgConfig.FileSizeMinSize) {\r\n imgConfig.FileSizeMinSizeByte = this.convertSizeToByte(imgConfig.FileSizeMinSize);\r\n }\r\n else {\r\n imgConfig.FileSizeMinSizeByte = 0;\r\n }\r\n\r\n return imgConfig;\r\n }\r\n\r\n private convertSizeToByte(sizeString: string): number {\r\n let _tempFileSizeMaxSize: number = 0;\r\n let sizeByByte: number = 0;\r\n let sizeType = 'b';\r\n\r\n // remove all space\r\n const _tempFileSize = sizeString.replace(/ /g, '');\r\n\r\n // check last char is alphabetic\r\n const lastChar = _tempFileSize.substr(_tempFileSize.length - 1);\r\n if (isNaN(parseFloat(lastChar))) {\r\n const secLastChar = _tempFileSize.substr(_tempFileSize.length - 2).slice(0, -1);\r\n\r\n if (isNaN(parseFloat(secLastChar))) {\r\n // check last 2nd char is alphabetic\r\n sizeType = secLastChar + sizeType;\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -2));\r\n }\r\n else {\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -1));\r\n }\r\n\r\n switch (sizeType.toLowerCase()) {\r\n case \"b\":\r\n sizeByByte = _tempFileSizeMaxSize\r\n break;\r\n case \"kb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1024\r\n break;\r\n case \"mb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1048576\r\n break;\r\n case \"gb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1073741824\r\n break;\r\n }\r\n }\r\n else {\r\n // default using bytes if no size type\r\n sizeByByte = parseFloat(_tempFileSize);\r\n }\r\n\r\n return sizeByByte;\r\n }\r\n\r\n uploadEventHandler(e: UploadEvent) {\r\n // Image Preview\r\n const me = this;\r\n e.files.forEach((file: FileInfo) => {\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n if (me.data.EnableImagePreview) {\r\n if (!me.uid.includes(file.uid)) {\r\n me.uid.push(file.uid);\r\n me.imagePreviews.push({ ...file, src: <string>reader.result });\r\n }\r\n }\r\n }\r\n reader.readAsDataURL(file.rawFile);\r\n }\r\n }\r\n });\r\n\r\n // Add metadata to the upload event\r\n let additional: UploadMetaData = ZComponentHelper.getGroupEvalValue.call(this, this.data.UploadMetaData);\r\n\r\n if (!(additional instanceof UploadMetaData)) {\r\n console.error(\"UploadMetaData defined at \" + this.data.UploadMetaData + \" is invalid: \", additional);\r\n additional = new UploadMetaData(null, \"0\");\r\n }\r\n\r\n const str = JSON.stringify(additional);\r\n\r\n e.data = { additional: str, };\r\n e.headers = e.headers.append(\"Authorization\", \"Bearer \" + this.authService.e1AccessToken);\r\n }\r\n\r\n onRemove(e: RemoveEvent): void {\r\n // remove file from component memory\r\n const index = this.fileList.findIndex(\r\n (item) => item.uid === e.files[0].uid\r\n );\r\n\r\n if (index >= 0) {\r\n this.fileList.splice(index, 1);\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n\r\n if (this.data['FileRemovedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileRemovedEvent\",\r\n target: this.data['FileRemovedEvent'],\r\n data: e\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n const myFile: MyFileInfo = e.files[0] as MyFileInfo;\r\n\r\n // console.log('remove done: ', e);\r\n e.data = {\r\n id: myFile.myUid,\r\n };\r\n e.headers = e.headers.append(\r\n \"Authorization\",\r\n \"Bearer \" + this.authService.e1AccessToken\r\n );\r\n\r\n if (this.data.EnableImagePreview) {\r\n e.files.forEach((file: FileInfo) => {\r\n this.imagePreviews = this.imagePreviews.filter(f => f.uid !== file.uid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onChange(file: FileInfo[]): void {\r\n if (this.data['FileChangedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileChangedEvent\",\r\n target: this.data['FileChangedEvent'],\r\n data: file\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n selectEventHandler(e: SelectEvent) {\r\n const me = this;\r\n\r\n if (this.data['SelectFileOnly']) {\r\n // append all file to component memory\r\n e.files.forEach(async (file: FileInfo) => {\r\n if (file.rawFile) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n // clone the data and also add the readed file to the object\r\n const fileData = Object.assign({}, file);\r\n fileData['file'] = ev.target[\"result\"];\r\n // push to component fileList\r\n me.fileList.push(fileData);\r\n me.group['zupload_' + me.data.Value] = me.fileList;\r\n\r\n if (me.data['FileSelectedEvent']) {\r\n // call the project event\r\n me.group.subject.next({\r\n type: \"zupload-fileSelectedEvent\",\r\n target: me.data['FileSelectedEvent'],\r\n data: me.fileList\r\n } as ZComponentOutputEvent);\r\n }\r\n };\r\n await reader.readAsDataURL(file.rawFile);\r\n }\r\n });\r\n }\r\n else {\r\n // Only workable for Auto Upload = false\r\n if (!this.data.AutoUpload) {\r\n // Compression for image file\r\n const imageCompressionEnabled = this.data.Compression ? true : false;\r\n\r\n //Check if Image Compression is enabled.\r\n if (imageCompressionEnabled === true) {\r\n e.files.forEach((file: FileInfo) => {\r\n // Compress only if it is an image file\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const imgConfig = this.compressionConfigHandler(this.data.Compression);\r\n if (file.size > imgConfig.FileSizeMinSizeByte) {\r\n me.compressImage.compress(file.rawFile, imgConfig) //Pass in parameter to set the Compression Options\r\n .pipe(take(1))\r\n .subscribe(compressFile => {\r\n this.ngZone.run(() => {\r\n file.rawFile = compressFile;\r\n file.size = compressFile.size;\r\n\r\n // clone the data and also add the readed file to the object\r\n const fileData = Object.assign({}, file);\r\n // push to component fileList\r\n me.fileList.push(fileData);\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file.rawFile);\r\n });\r\n console.log(`Compressed file size: ${(file.rawFile.size / 1024).toFixed(2)}KB`);\r\n });\r\n } // file size check\r\n } // validationErrors check\r\n } // file type check\r\n }) // loop each file\r\n } // imagecompression check\r\n\r\n // add to group scope\r\n me.group['zupload_' + me.data.Value] = e.files;\r\n }\r\n }\r\n }\r\n\r\n clearFiles() {\r\n this.uploadComponent.clearFiles();\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { concatMap, map, switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from '../services/main.service';\r\nimport {\r\n ZGroup, ZField, ZComponentProperties,\r\n ZComponent, ZComponentHelper, WebApiService, ResourceApiService, WorkflowService, FontAweSomeService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n selector: 'app-zworkflowbuttons',\r\n templateUrl: './zworkflowbuttons.component.html',\r\n styleUrls: ['./zworkflowbuttons.component.scss']\r\n})\r\nexport class ZworkflowbuttonsComponent implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n\r\n componentProperties = new ZComponentProperties();\r\n\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n //domainURL = \"https://localhost:44300/\";\r\n //e1wfs_wfcGetWorkflowButtonURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowClientButtons/\";\r\n //e1wfs_wfc_getWorkflowInitialStatusURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowInitialStatus/\";\r\n //e1wfs_wfc_getDocumentStatusURL = this.domainURL + \"/api/WorkflowClients/GetDocumentStatus/\";\r\n\r\n items: Array<any> = [];\r\n dataFormFields: any = {};\r\n FirstZbtn = false;\r\n isLoading = true;\r\n isLocalHostAPI: boolean = false;\r\n\r\n constructor(\r\n private webApiService: WebApiService,\r\n private resourceApiService: ResourceApiService,\r\n private workflowService: WorkflowService\r\n ) { }\r\n\r\n ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(this);\r\n\r\n // Check project resourceURL is it localhost\r\n if (this.group.resourceURL) {\r\n this.isLocalHostAPI = this.group.resourceURL.toLowerCase().includes(\"localhost\") ? true : false;\r\n }\r\n\r\n this.loadButton();\r\n }\r\n\r\n private loadButton() {\r\n this.items = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n // button count\r\n this.group.zButtonsCount++;\r\n if (this.group.zButtonsCount === 1) {\r\n this.FirstZbtn = true;\r\n }\r\n\r\n try {\r\n\r\n of(true)\r\n .pipe(\r\n concatMap(() => {\r\n // retrieve the workflow button\r\n return this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(this.isLocalHostAPI)\r\n )\r\n }),\r\n tap(resultData => {\r\n if (resultData) {\r\n resultData.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonLabel = attributes.Label || label;\r\n this.items.push({\r\n text: buttonLabel,\r\n icon: ZComponentHelper.getIcon(attributes.Icon),\r\n visible: attributes.Visible,\r\n fieldAttribute: button,\r\n iconName: attributes.Icon,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n });\r\n\r\n const mappedInfo = {\r\n 'role': [],\r\n 'status': [],\r\n 'parentStatus': []\r\n };\r\n //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n });\r\n }\r\n else {\r\n console.warn('unable to get workflow button. data returned null.');\r\n }\r\n }),\r\n map(() => {\r\n if (!this.data.DisableSyncWorkflowStatus) {\r\n // Set default status\r\n // eslint-disable-next-line @typescript-eslint/dot-notation\r\n if (!this.group.zModel[\"WFS_StatusName\"]) {\r\n const params = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n map(res => {\r\n if (res.Data) {\r\n ZComponentHelper.presetModelValue(\"WFS_StatusId\", res.Data[\"Id\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusName\", res.Data[\"Name\"], this.group);\r\n ZComponentHelper.presetModelValue(\"WFS_StatusCode\", res.Data[\"Code\"], this.group);\r\n\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n } else {\r\n // When loading also to get current Status Information if any.\r\n const docInfoParam = {\r\n \"WorkflowMasterCode\": this.data.WorkflowCode,\r\n \"DocumentId\": documentId,\r\n };\r\n\r\n this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n map(res => {\r\n this.workflowService.setCurrentDocumentStatus(res);\r\n if (res.Data) {\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n }\r\n }\r\n })\r\n\r\n ).subscribe();\r\n\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n buttonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n this.group.isTriggered = true;\r\n const me = this.group;\r\n if (!attributes['DisableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n this.group.isTriggered = true;\r\n console.log(\"GOTO Button: \", button.Name);\r\n this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, this.isLocalHostAPI).subscribe(res => {\r\n this.loadButton();\r\n this.group.isTriggered = false;\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n /******************** Button Config ********************/\r\n private getButtonLabel(button: any) {\r\n let labelExpr = button.Name.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n const label = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n return label;\r\n } else {\r\n return button.Name;\r\n }\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n/******************** Common ********************/\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n getFontAwesome(iconName: string) {\r\n if (iconName == \"\") {\r\n iconName = \"help\";\r\n }\r\n return ZComponentHelper.getFontAwesome(iconName);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable, ComponentFactoryResolver, EmbeddedViewRef } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Service & Directive **********/\r\nimport { ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { FieldElementDirective } from '../directives/fieldelement.directive';\r\n// import { ZGridBindingDirective } from \"../zgrid/zgrid.binding.directive\";\r\n\r\n/********** zComponent **********/\r\nimport { ZBulletComponent } from \"../zbullet/zbullet.component\";\r\nimport { ZbuttonsComponent } from \"../zbuttons/zbuttons.component\";\r\nimport { ZcardComponent } from \"../zcard/zcard.component\";\r\nimport { ZchartComponent } from '../zchart/zchart.component';\r\nimport { ZcheckboxComponent } from '../zcheckbox/zcheckbox.component';\r\nimport { ZChipComponent } from \"../zchip/zchip.component\"; \r\nimport { ZcodeeditorComponent } from '../zcodeeditor/zcodeeditor.component';\r\nimport { ZdatetimeComponent } from '../zdatetime/zdatetime.component';\r\nimport { ZdivComponent } from '../zdiv/zdiv.component';\r\nimport { ZgaugeComponent } from '../zgauge/zgauge.component';\r\nimport { ZgridComponent } from '../zgrid/zgrid.component';\r\nimport { ZimgComponent } from '../zimg/zimg.component';\r\nimport { ZkcardComponent } from '../zkcard/zkcard.component';\r\nimport { ZlabelComponent } from '../zlabel/zlabel.component';\r\nimport { ZmfbComponent } from '../zmfb/zmfb.component';\r\nimport { ZnumericComponent } from '../znumeric/znumeric.component';\r\nimport { ZpostselectinputComponent } from '../zpostselectinput/zpostselectinput.component';\r\nimport { ZquerybuilderComponent } from '../zquerybuilder/zquerybuilder.component';\r\nimport { ZreportComponent } from '../zreport/zreport.component';\r\nimport { ZschedulerComponent } from '../zscheduler/zscheduler.component';\r\nimport { ZselectmultipleComponent } from \"../zselectmultiple/zselectmultiple.component\";\r\nimport { ZtabComponent } from \"../ztab/ztab.component\";\r\nimport { ZtextComponent } from \"../ztext/ztext.component\";\r\nimport { ZtextareaComponent } from '../ztextarea/ztextarea.component';\r\nimport { ZtexteditorComponent } from '../ztexteditor/ztexteditor.component';\r\nimport { ZtreeComponent } from '../ztree/ztree.component';\r\nimport { ZtreelistComponent } from '../ztreelist/ztreelist.component';\r\nimport { ZtrendcardComponent } from '../ztrendcard/ztrendcard.component';\r\nimport { ZudfComponent } from \"../zudf/zudf.component\";\r\nimport { ZunknownComponent } from \"../zunknown/zunknown.component\";\r\nimport { ZuploadComponent } from '../zupload/zupload.component';\r\nimport { ZworkflowbuttonsComponent } from \"../zworkflowbuttons/zworkflowbuttons.component\";\r\n// import { ZComponentServiceModule } from './zcomponent.service.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentService {\r\n constructor() { }\r\n\r\n mapByName(name: string) {\r\n const _name = name.toLocaleLowerCase();\r\n\r\n const data = {\r\n zbullet: ZBulletComponent,\r\n zbuttons: ZbuttonsComponent,\r\n zcard: ZcardComponent,\r\n zchart: ZchartComponent,\r\n checkbox: ZcheckboxComponent,\r\n zchip: ZChipComponent,\r\n textareajson: ZcodeeditorComponent,\r\n textareahtml: ZcodeeditorComponent,\r\n zdate: ZdatetimeComponent,\r\n zdatetime: ZdatetimeComponent,\r\n zshortdate: ZdatetimeComponent,\r\n zuidatetime: ZdatetimeComponent,\r\n zuitime: ZdatetimeComponent,\r\n zdiv: ZdivComponent,\r\n zgauge: ZgaugeComponent,\r\n zgrid: ZgridComponent,\r\n zimg: ZimgComponent,\r\n zkcard: ZkcardComponent,\r\n zlabel: ZlabelComponent,\r\n zmfb: ZmfbComponent,\r\n znumeric: ZnumericComponent,\r\n post_select_input: ZpostselectinputComponent,\r\n pre_select_input: ZpostselectinputComponent,\r\n zphone_countrycode: ZpostselectinputComponent,\r\n zquerybuilder: ZquerybuilderComponent,\r\n zreport: ZreportComponent,\r\n zcalendar: ZschedulerComponent,\r\n zuiselectmultiple: ZselectmultipleComponent,\r\n zuiselectmultiple_button: ZselectmultipleComponent,\r\n select: ZselectmultipleComponent,\r\n ztab: ZtabComponent,\r\n number: ZtextComponent,\r\n numeric: ZtextComponent,\r\n date: ZtextComponent,\r\n email: ZtextComponent,\r\n password: ZtextComponent,\r\n search: ZtextComponent,\r\n tel: ZtextComponent,\r\n text: ZtextComponent,\r\n url: ZtextComponent,\r\n currency: ZtextComponent,\r\n textarea: ZtextareaComponent,\r\n ztexteditor: ZtexteditorComponent,\r\n ztree: ZtreeComponent,\r\n ktree_list: ZtreelistComponent,\r\n ztrendcard: ZtrendcardComponent,\r\n unknown: ZunknownComponent,\r\n zudf: ZudfComponent,\r\n zupload: ZuploadComponent,\r\n zworkflowbuttons: ZworkflowbuttonsComponent\r\n // kdate_rangepicker: ZdaterangeComponent\r\n };\r\n\r\n return data[_name];\r\n }\r\n\r\n isSkipComponentType(componentType: string): boolean {\r\n return ZComponentHelper.isSkipComponentType(componentType);\r\n }\r\n\r\n loadComponent(\r\n componentFactoryResolver: ComponentFactoryResolver,\r\n fieldElement: FieldElementDirective,\r\n field: any,\r\n group: any,\r\n form: FormGroup\r\n ) {\r\n // if(field.Name === 'FormDetailContactGrid') {\r\n // debugger;\r\n // }\r\n\r\n if (this.isSkipComponentType(field.Type)) {\r\n return;\r\n }\r\n\r\n let componentFactory;\r\n const componentName = this.mapByName(field.Type);\r\n if (componentName) {\r\n componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n componentName\r\n );\r\n } else {\r\n componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n this.mapByName(\"unknown\")\r\n );\r\n }\r\n\r\n const viewContainerRef = fieldElement.viewContainerRef;\r\n viewContainerRef.clear();\r\n if (!form) {\r\n console.warn('FormGroup is empty!');\r\n debugger;\r\n }\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance as ZComponent).data = field;\r\n (componentRef.instance as ZComponent).group = group;\r\n (componentRef.instance as ZComponent).form = form;\r\n // (componentRef.instance as ZComponent).outputEvent.subscribe((event: any) => group.outputEvent(event));\r\n }\r\n\r\n appendComponentToDynamicForm(\r\n componentFactoryResolver: ComponentFactoryResolver,\r\n injector: any,\r\n appRef: any,\r\n field: any,\r\n group: any,\r\n containerId: string\r\n ) {\r\n if (this.isSkipComponentType(field.Type)) {\r\n return;\r\n }\r\n\r\n let componentRef;\r\n const componentName = this.mapByName(field.Type);\r\n // 1. Create a component reference from the component\r\n if (componentName) {\r\n componentRef = componentFactoryResolver\r\n .resolveComponentFactory(componentName)\r\n .create(injector);\r\n } else {\r\n componentRef = componentFactoryResolver\r\n .resolveComponentFactory(this.mapByName(\"unknown\"))\r\n .create(injector);\r\n }\r\n\r\n // 2. Attach component to the appRef so that it's inside the ng component tree\r\n appRef.attachView(componentRef.hostView);\r\n\r\n // 3. Get DOM element from component\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // 4. Append DOM element to the body\r\n const dynamicFormHost: any = document.querySelector(\"#\" + containerId);\r\n dynamicFormHost.appendChild(domElem);\r\n\r\n (componentRef.instance as ZComponent).data = field;\r\n (componentRef.instance as ZComponent).group = group;\r\n return componentRef;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input, ViewChild, ComponentFactoryResolver } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { FieldElementDirective } from \"../directives/fieldelement.directive\";\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZField, ZGroup } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zformcontrol\",\r\n templateUrl: \"./zformcontrol.component.html\",\r\n styleUrls: [\"./zformcontrol.component.scss\"]\r\n})\r\nexport class ZformcontrolComponent implements OnInit, OnDestroy {\r\n\r\n @Input() field: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: FormGroup;\r\n // @Input() containerid: string;\r\n @ViewChild(FieldElementDirective, { static: true }) fieldElement: FieldElementDirective;\r\n componentRef: any;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private zcomponentService: ZComponentService\r\n // private appRef: ApplicationRef,\r\n // private injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.zcomponentService.loadComponent(this.componentFactoryResolver, this.fieldElement, this.field, this.group, this.form);\r\n // this.componentRef = ZComponentHelper.appendComponentToDynamicForm(\r\n // this.componentFactoryResolver,\r\n // this.injector,\r\n // this.appRef,\r\n // this.field,\r\n // this.group,\r\n // this.containerid\r\n // );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // this.appRef.detachView(this.componentRef.hostView);\r\n // this.componentRef.destroy();\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n// import { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { IonicSelectableModule } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { AceEditorModule } from 'ng2-ace-editor';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { QueryBuilderModule } from \"angular2-query-builder\";\r\n\r\n/********** Kendo **********/\r\nimport { ArcGaugeModule } from '@progress/kendo-angular-gauges';\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\nimport { ChartsModule } from '@progress/kendo-angular-charts';\r\nimport { CalendarModule, DateInputsModule } from '@progress/kendo-angular-dateinputs';\r\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\r\nimport { EditorModule } from '@progress/kendo-angular-editor';\r\nimport { ExcelModule, GridModule } from '@progress/kendo-angular-grid';\r\nimport { IndicatorsModule } from \"@progress/kendo-angular-indicators\";\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\nimport { InputsModule, SwitchModule, TextBoxModule } from '@progress/kendo-angular-inputs';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { LayoutModule, PanelBarModule, TabStripModule } from '@progress/kendo-angular-layout';\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { ProgressBarModule } from \"@progress/kendo-angular-progressbar\";\r\nimport { TelerikReportingModule } from '@progress/telerik-angular-report-viewer';\r\nimport { SchedulerModule } from '@progress/kendo-angular-scheduler';\r\nimport { TreeListModule } from '@progress/kendo-angular-treelist';\r\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\r\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\r\nimport { UploadModule, UploadsModule } from '@progress/kendo-angular-upload';\r\n\r\n/********** Service & Directive **********/\r\nimport { ZCoreModule, ZGroup } from 'mmhglobal-zcore';\r\nimport { MmhglobalZmodalModule, ModalService } from 'mmhglobal-zmodal';\r\nimport { MainService } from './services/main.service';\r\nimport { ScrollbarThemeDirective } from './directives/scrollbar.theme.directive';\r\nimport { FieldElementDirective } from './directives/fieldelement.directive';\r\nimport { ZGridBindingDirective } from './zgrid/zgrid.binding.directive';\r\nimport { ZGridPopupAnchorDirective } from './zgrid/zgrid.popup.anchor-target.directive';\r\nimport { OpenOnFocusDirective } from './zselectmultiple/zselectmultiple.directive';\r\n\r\n/********** Addon **********/\r\nimport { DateParserFilter } from './zdatetime/dateParser.pipe';\r\nimport { EditorFilter } from './zcodeeditor/zcodeeditor.pipe';\r\nimport { DivzLayout } from './zdiv/zdiv.pipe';\r\nimport { ExportOptions } from './zreport/zreport.config';\r\nimport { TabFilter } from './ztab/ztab.pipe';\r\nimport { DateRangeFilterCellComponent } from './zgrid/date-range-cell-filter.component';\r\nimport { ZSchedulerToolBarComponent } from './zscheduler/zscheduler.toolbar.component';\r\n\r\n/********** zComponent **********/\r\nimport { UipageComponent } from './uipage/uipage.component';\r\nimport { UiheaderComponent } from './uiheader/uiheader.component';\r\nimport { UicontentComponent } from './uicontent/uicontent.component';\r\n\r\nimport { UimenucontentComponent } from './uimenucontent/uimenucontent.component';\r\nimport { UimenubuttonComponent } from './uimenubutton/uimenubutton.component';\r\nimport { UiappmenucontentComponent } from './uiappmenucontent/uiappmenucontent.component';\r\nimport { UiactionbuttonComponent } from './uiactionbutton/uiactionbutton.component';\r\nimport { UivalidationmessageComponent } from './uivalidationmessage/uivalidationmessage.component';\r\n\r\nimport { ZBulletComponent } from \"./zbullet/zbullet.component\";\r\nimport { ZbuttonsComponent } from \"./zbuttons/zbuttons.component\";\r\nimport { ZcardComponent } from \"./zcard/zcard.component\";\r\nimport { ZchartComponent } from './zchart/zchart.component';\r\nimport { ZcheckboxComponent } from './zcheckbox/zcheckbox.component';\r\nimport { ZChipComponent } from \"./zchip/zchip.component\";\r\nimport { ZcodeeditorComponent } from './zcodeeditor/zcodeeditor.component';\r\nimport { ZdaterangeComponent } from './zdaterange/zdaterange.component';\r\nimport { ZdatetimeComponent } from './zdatetime/zdatetime.component';\r\nimport { ZdivComponent } from './zdiv/zdiv.component';\r\nimport { ZformComponent } from \"./zform/zform.component\";\r\nimport { ZformcontrolComponent } from \"./zformcontrol/zformcontrol.component\";\r\nimport { ZgaugeComponent } from './zgauge/zgauge.component';\r\nimport { ZgridComponent } from \"./zgrid/zgrid.component\";\r\nimport { ZimgComponent } from './zimg/zimg.component';\r\nimport { ZkcardComponent } from './zkcard/zkcard.component';\r\nimport { ZlabelComponent } from './zlabel/zlabel.component';\r\nimport { ZmfbComponent } from './zmfb/zmfb.component';\r\nimport { ZmodalComponent } from \"./zmodal/zmodal.component\";\r\nimport { ZmodalMobileComponent } from \"./zmodal/zmodal-mobile.component\";\r\nimport { ZnumericComponent } from './znumeric/znumeric.component';\r\nimport { ZpostselectinputComponent } from './zpostselectinput/zpostselectinput.component'; \r\nimport { ZquerybuilderComponent } from './zquerybuilder/zquerybuilder.component';\r\nimport { ZreportComponent } from './zreport/zreport.component';\r\nimport { ZschedulerComponent } from './zscheduler/zscheduler.component';\r\nimport { ZselectmultipleComponent } from \"./zselectmultiple/zselectmultiple.component\";\r\nimport { ZtabComponent } from \"./ztab/ztab.component\";\r\nimport { ZtextComponent } from \"./ztext/ztext.component\";\r\nimport { ZtextareaComponent } from './ztextarea/ztextarea.component';\r\nimport { ZtexteditorComponent } from './ztexteditor/ztexteditor.component';\r\nimport { ZtreeComponent } from './ztree/ztree.component';\r\nimport { ZtreelistComponent } from './ztreelist/ztreelist.component';\r\nimport { ZtrendcardComponent } from './ztrendcard/ztrendcard.component';\r\nimport { ZunknownComponent } from \"./zunknown/zunknown.component\";\r\nimport { ZudfComponent } from './zudf/zudf.component';\r\nimport { ZuploadComponent } from './zupload/zupload.component';\r\nimport { ZworkflowbuttonsComponent } from \"./zworkflowbuttons/zworkflowbuttons.component\"; \r\n\r\n@NgModule({\r\n declarations: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\r\n ZGridPopupAnchorDirective,\r\n OpenOnFocusDirective,\r\n DateParserFilter, // zgrid addon\r\n EditorFilter, // zcode addon\r\n DivzLayout, // zdiv addon\r\n ExportOptions, // zreport addon\r\n TabFilter, // ztab addon\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon \r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent,\r\n UiactionbuttonComponent,\r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UivalidationmessageComponent, \r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n imports: [\r\n IonicModule,\r\n IonicSelectableModule,\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AceEditorModule,\r\n FontAwesomeModule,\r\n QueryBuilderModule,\r\n ArcGaugeModule,\r\n ButtonsModule,\r\n ChartsModule,\r\n CalendarModule,\r\n DateInputsModule,\r\n DropDownsModule,\r\n EditorModule,\r\n GridModule,\r\n ExcelModule,\r\n IndicatorsModule,\r\n IntlModule,\r\n InputsModule,\r\n SwitchModule,\r\n TextBoxModule,\r\n LabelModule,\r\n LayoutModule,\r\n PanelBarModule,\r\n TabStripModule,\r\n PopupModule,\r\n ProgressBarModule,\r\n TelerikReportingModule,\r\n SchedulerModule,\r\n TreeListModule,\r\n TreeViewModule,\r\n TooltipModule,\r\n UploadModule,\r\n UploadsModule,\r\n ZCoreModule,\r\n MmhglobalZmodalModule\r\n ],\r\n exports: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\r\n ZGridPopupAnchorDirective,\r\n OpenOnFocusDirective,\r\n DateParserFilter, // zdatetime addon\r\n EditorFilter, // zcode addon\r\n DivzLayout, // zdiv addon\r\n ExportOptions, // zreport addon\r\n TabFilter, // ztab addon\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon\r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent, \r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UiactionbuttonComponent,\r\n UivalidationmessageComponent,\r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n entryComponents: [\r\n DateRangeFilterCellComponent, // zgrid addon\r\n ZSchedulerToolBarComponent, // zscheduler addon\r\n UiheaderComponent,\r\n UicontentComponent,\r\n UipageComponent,\r\n UimenucontentComponent,\r\n UimenubuttonComponent,\r\n UiappmenucontentComponent,\r\n UiactionbuttonComponent,\r\n UivalidationmessageComponent,\r\n ZBulletComponent,\r\n ZbuttonsComponent,\r\n ZcardComponent,\r\n ZchartComponent,\r\n ZcheckboxComponent,\r\n ZChipComponent,\r\n ZcodeeditorComponent,\r\n ZdaterangeComponent,\r\n ZdatetimeComponent,\r\n ZdivComponent,\r\n ZformComponent,\r\n ZformcontrolComponent,\r\n ZgaugeComponent,\r\n ZgridComponent,\r\n ZimgComponent,\r\n ZkcardComponent,\r\n ZlabelComponent,\r\n ZmfbComponent,\r\n ZmodalComponent,\r\n ZmodalMobileComponent,\r\n ZnumericComponent,\r\n ZpostselectinputComponent,\r\n ZquerybuilderComponent,\r\n ZreportComponent,\r\n ZschedulerComponent,\r\n ZselectmultipleComponent,\r\n ZtabComponent,\r\n ZtextComponent,\r\n ZtextareaComponent,\r\n ZtexteditorComponent,\r\n ZtreeComponent,\r\n ZtreelistComponent,\r\n ZtrendcardComponent,\r\n ZunknownComponent,\r\n ZudfComponent,\r\n ZuploadComponent,\r\n ZworkflowbuttonsComponent\r\n ],\r\n providers: [\r\n ModalService\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class MmhglobalDynamicformModule { }\r\n","/*\r\n * Public API Surface of dynamic-form\r\n */\r\n\r\n/********** Service **********/\r\nexport * from './lib/services/main.service';\r\n// export * from './lib/zmodal/modal.service';\r\n// export * from './lib/services/zcomponent.service';\r\n// export * from './lib/services/zcomponent.debug.service';\r\n\r\n\r\n/********** Directive **********/\r\nexport * from './lib/directives/scrollbar.theme.directive';\r\nexport * from './lib/directives/fieldelement.directive';\r\nexport * from './lib/zgrid/zgrid.binding.directive';\r\nexport * from './lib/zgrid/zgrid.popup.anchor-target.directive'\r\nexport * from './lib/zselectmultiple/zselectmultiple.directive';\r\n\r\n\r\n/********** Module **********/\r\nexport * from './lib/mmhglobal-dynamicform.module'; \r\n\r\n\r\n/********** Addon **********/\r\nexport * from './lib/zdatetime/dateParser.pipe';\r\nexport * from './lib/zcodeeditor/zcodeeditor.pipe';\r\nexport * from './lib/zdiv/zdiv.pipe';\r\nexport * from './lib/zreport/zreport.config';\r\nexport * from './lib/ztab/ztab.pipe';\r\n// export * from './lib/zmodal/zmodal.module';\r\nexport * from './lib/zgrid/date-range-cell-filter.component';\r\nexport * from './lib/zscheduler/zscheduler.toolbar.component';\r\n\r\n\r\n/********** zComponent **********/\r\nexport * from './lib/uicontent/uicontent.component';\r\nexport * from './lib/uiheader/uiheader.component';\r\nexport * from './lib/uipage/uipage.component';\r\nexport * from './lib/uimenucontent/uimenucontent.component';\r\nexport * from './lib/uimenubutton/uimenubutton.component';\r\nexport * from './lib/uiappmenucontent/uiappmenucontent.component';\r\nexport * from './lib/uiactionbutton/uiactionbutton.component';\r\nexport * from './lib/uivalidationmessage/uivalidationmessage.component';\r\nexport * from './lib/zbullet/zbullet.component';\r\nexport * from './lib/zbuttons/zbuttons.component';\r\nexport * from './lib/zcard/zcard.component';\r\nexport * from './lib/zchart/zchart.component';\r\nexport * from './lib/zcheckbox/zcheckbox.component';\r\nexport * from './lib/zchip/zchip.component';\r\nexport * from './lib/zcodeeditor/zcodeeditor.component';\r\nexport * from './lib/zdaterange/zdaterange.component';\r\nexport * from './lib/zdatetime/zdatetime.component';\r\nexport * from './lib/zdiv/zdiv.component';\r\nexport * from './lib/zform/zform.component';\r\nexport * from './lib/zformcontrol/zformcontrol.component';\r\nexport * from './lib/zgauge/zgauge.component';\r\nexport * from './lib/zgrid/zgrid.component';\r\nexport * from './lib/zimg/zimg.component';\r\nexport * from './lib/zkcard/zkcard.component';\r\nexport * from './lib/zlabel/zlabel.component';\r\nexport * from './lib/zmfb/zmfb.component';\r\nexport * from './lib/zmodal/zmodal.component';\r\nexport * from './lib/zmodal/zmodal-mobile.component';\r\nexport * from './lib/znumeric/znumeric.component';\r\nexport * from './lib/zpostselectinput/zpostselectinput.component';\r\nexport * from './lib/zquerybuilder/zquerybuilder.component';\r\nexport * from './lib/zreport/zreport.component';\r\nexport * from './lib/zscheduler/zscheduler.component';\r\nexport * from './lib/zselectmultiple/zselectmultiple.component';\r\nexport * from './lib/ztab/ztab.component';\r\nexport * from './lib/ztext/ztext.component';\r\nexport * from './lib/ztextarea/ztextarea.component';\r\nexport * from './lib/ztexteditor/ztexteditor.component';\r\nexport * from './lib/ztree/ztree.component';\r\nexport * from './lib/ztreelist/ztreelist.component';\r\nexport * from './lib/ztrendcard/ztrendcard.component';\r\nexport * from './lib/zudf/zudf.component';\r\nexport * from './lib/zunknown/zunknown.component';\r\nexport * from './lib/zupload/zupload.component';\r\nexport * from './lib/zworkflowbuttons/zworkflowbuttons.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ZComponentDebugService as ɵa} from './lib/services/zcomponent.debug.service';\nexport {ZComponentService as ɵb} from './lib/services/zcomponent.service';"],"names":[],"mappings":"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"}