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.
- package/README.md +5 -0
- package/bundles/mmhglobal-dynamicform.umd.js +38 -36
- package/bundles/mmhglobal-dynamicform.umd.js.map +1 -1
- package/bundles/mmhglobal-dynamicform.umd.min.js +1 -1
- package/bundles/mmhglobal-dynamicform.umd.min.js.map +1 -1
- package/esm2015/lib/services/main.service.js +5 -16
- package/esm2015/lib/zgrid/zgrid.component.js +18 -9
- package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +17 -12
- package/esm2015/lib/ztree/ztree.component.js +1 -1
- package/fesm2015/mmhglobal-dynamicform.js +38 -35
- package/fesm2015/mmhglobal-dynamicform.js.map +1 -1
- package/mmhglobal-dynamicform.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","__read","r","ar","error","ZComponentDebugService","router","alertService","authService","fieldService","resourceApiService","toastService","webApiService","defineProperty","scope","group","_debug","onInitDebugger","mainService","ZGroup","_isDebugging","zData","collectedActivities","activityCount","collectedWorkflowButtons","workflowButtonCount","zComponents","isListForm","onStartDebugger","fieldElements","me","_this","form","toFormGroup","subscription","unsubscribe","assign","zModel","subject","BehaviorSubject","isEdit","isNew","_group","resourceURL","getURL","treeItemTemplate","onItemClick","onTreeNodeChange","onAddNode","onRemoveNode","treeNodesExpandAll","treeNodesCollapseAll","refreshTreeModel","addNode","refreshActivityLogData","LoadGridData","bind","GoToFieldElement","gotoFieldElement","ListWatchName","listWatchName","onChangeWatchName","getWatchName","fieldElementonEditorCodeChange","gridActivityLogColumnFields","getFormFieldCode","gridActivityLogOnItemClick","updateModel","refreshWorkflowButtonData","loadWorkflowData","gridWorkflowButtonColumnFields","gridWorkflowButtonOnItemClick","subscribe","event","subjectEvent","ZComponentHelper","setFieldsDivClass","_projectName","fieldName","loadDebugZModel","downloadList","getProjectId","formType","fieldzModel","getFieldzModel","forkJoin","debug","url","getApi","type","activityName","getFormFieldzModel","getListFieldzModel","httpGet$","name","pipe","tap","respData","patchValue","markAsPristine","fields","JSON","parse","Code","treeModel","convertTreeModel","url2","switchMap","fieldMapping","id","FieldElementMasterId","target","startsWith","callFunc","getGroupEvalValue","console","warn","newFunc","endsWith","nUrl","replace","data","navigate","cName","slice","showzModal","columnFields$","Id","navigateUrl","formHeader","ctrlName","rec","dataItem","selectTab","watchNameValue","index","setWatchNameValue","getComponent","newValue","setModelValue","activityLogGrid","setData","component","searchText","pageNo","recordId","results","watchList","Name","filter","toLowerCase","indexOf","of","dataSet","DebugWatchName","el","expandAll","collapseAll","_a","item","Type","_DataValue","log","modalFields","Value","zmodel","nodeModel","stringify","_b","modalData","responseType","newData","updateTreeNode","newTreeModel","revertedModel","revertTreeModel","newCode","newNode","treeIndex","split","newIndex","join","insertTreeNode","isArray","removeTreeNode","splice","codeData","rowData","initialModel","DisplayName","gridColVisible","width","minWidth","enableFiltering","enableSorting","pinnedLeft","PlaceHolder","IsRequired","MinLength","MaxLength","Label","DivClass","ReadOnly","ShowLabel","Visible","show","text","cssClass","reply","fg","dirty","valid","httpPut$","map","res","handleSuccess","Data","errors","getFormGroupErrors","zgrid_WorkflowButtonGrid","field","refField","attribute","refAttribute","params","HttpParams","set","httpPost$","roleInfo","statusInfo","parentStatusInfo","MappedRoleList","MappedStatusList","forEach","_status","MappedParentStatusList","_parentStatus","_mappedInfo","mappedRoleInfo","mappedStatusInfo","mappedParentStatusInfo","_buttonInfo","WorkflowId","ButtonId","ButtonName","ButtonCode","ButtonTypeId","ButtonTypeName","ButtonTypeCode","ButtonVisible","ButtonClickEvent","ClickEvent","ButtonURL","URL","ButtonIcon","Icon","_gotoStatusInfo","GotoStatusId","GotoStatusName","GotoStatusCode","Status","_gotoStatus","propertiesModel","successMsg","undefined","ProcessingStatus","showHttpResponseMessage","MESSAGETYPE","Success","CostCode","handleError","Injectable","args","providedIn","Router","AlertService","AuthService","FieldService","ResourceApiService","ToastService","WebApiService","ZmodalComponent","dialog","modalCtrl","zcoreService","platform","_super","ngOnInit","ZmodalHelper","onInit_ModalForm","ngOnDestroy","onDestroy_ModalForm","onCancel","onConfirm","onInitClose","isSITEnvironment","isDebugSession","ctrlScope","getModel$","recId","referenceId","getGridStyle","isMobileScreen","height.px","width.px","DialogContentBase","Component","selector","template","DialogRef","ModalController","ZCoreService","Platform","Input","ZmodalMobileComponent","MainService","navController","cacheService","modalService","debugService","oauthEnvironmentUrl","getEnvironment","e1OauthUrl","startUp","setGroup","getResourceServerData","loadData","getGroupFields","propertyName","initializeGroup","pageName","resourceName","resourceURLName","gridColumnFields","editModelURL","isLoading","cancelButtonName","zButtonsCount","backNavigation","historyBack","refreshPage","refreshGrid","createModel","cloneNewModel","deleteModel","newModel","parentReferenceField","keys","backNavigationPage","toString","afterGetModelSuccess","canExit","closeModalForm","dismiss","modalGroupParam","controllerName","referId","colFields$","parentGroup","isTriggered","beforeBackNavigationPage","gridOptionName","gridOption","trim","zgridControl","getData","location","reload","getCloneNewCacheZModel","cacheZModel","getCache","clearCache","SubType","beforeNewModel","parentReferenceId","pathSegment","lastSegment","newPath_1","navigateByUrl","skipLocationChange","reset","relativeTo","activatedRoute","createModelres","beforeCreateModel","removeNullFields","resp","afterCreateModel","markAsDirty","beforeUpdateModel","afterUpdateModel","setCache","beforeDeleteModel","Disabled","afterDeleteModel","beforePageInitialise","afterNewModel","afterPageInitialise","componentSize","skipIsDirtyCheck","modalcomponent","modalmobilecomponent","cookieStorePost","cookieStoreURL","cookieStoreValue","status","cookieStoreGet","accessToken","headers","cookieStoreDeleteMultiple","containName","NavController","CacheService","ModalService","ScrollbarThemeDirective","stylesheet","styleElmt","nativeElement","shadowRoot","querySelector","append","barStyle","document","createElement","appendChild","Directive","ElementRef","viewContainerRef","ViewContainerRef","ZGridBindingDirective","grid","webapiService","storageService","zGridStatePersistingService","state","skip","take","gridColumns","usableColumns","paginationApiPostUrl","dataSource","zgridbinding","gridSubject","SkipDirective","loading","PageSize","pageSize","DataSource","getGroupValue","ResourceURL","grp","array","arr","setFilterParamsByParentRefId","generateGridColumns","refId","getFieldReferenceId","ReferenceField","filterValue","key","filterParams","fieldReferenceId","ReferenceId","serviceSubscription","ColumnFields","gridSetting","getGridSettings","getGridColumns","getFilterParamsColumns","getFilter","getFilterParams","getSorting","getGrantType","setHiddenColumn","getDataBinding","colFields","valueExpr","tmpGridColumn","columns","filters","Filters","element","val","actualVal","SortOrder","sortOrder","GrantType","grantType","gridSettingHiddenCol","values","find","c","ds","total","ExternalPagination","postApi","aggregateHandling","totalCount","notifyDataChange","_data","_totalCount","clearData","x","aggregateType","col","_aggregateValue","reduce","aggregateValue","aggregateResetValue","pageChange","sortChange","sort","sortColumnNames","sortOrders","dir","filterChange","mapFilterOperator","operator","setGridSessionFilter","dataStateChange","_storageKey","e1Token","userName","_arrGridCaching","get","_gridCaching","gridSettings","columnsConfig","a","orderIndex","beforeGridGetData","getGridSessionFilter","StorageKey","subject_1","Subject","includes","Date","asObservable","lstGridFilter","StateFilter","FilterParams","DataBindingDirective","Inject","GridComponent","StorageSessionService","ZGridStatePersistingService","exportAs","OpenOnFocusDirective","onFocus","openOnFocus","readonly","toggle","onBlur","HostListener","DateParserFilter","transform","items","Pipe","pure","EditorFilter","source","jsonValue","safeStringify","cache","DivzLayout","zlayout","ExportOptions","viewerToolTipOpening","ReportSource","ready","exportBegin","exportEnd","onRenderingEnd","viewerContainerStyle","isVisible","paramToResizeReportViewer","resizeReportView","largeMenuBound","sideMenuBound","reportSource","hideOptions","update","hideUnwantedOptions","bindEvents","exportOption","sideMenu","$","children","largeMenu","smallMenu","hide","EnableExportPDF","EnableExportCSV","EnableExportExcel","EnableExportRTF","EnableExportTIFF","EnableExportMHTML","EnableExportXPS","each","hiddenOption","resizeViewer","TabFilter","TabArea","DateRangeFilterCellComponent","filterService","findByOperator","filtersByField","clearFilter","removeFilter","filterRange","start","end","root","logic","arguments","concat","__spread","BaseFilterCellComponent","FilterService","ZSchedulerToolBarComponent","toolbarService","local","showCalendar","today","prev","onChange_Calendar","inProgress","date","toggleCalendar","delay","onBlur_Calendar","keydown","keyCode","documentClick","className","ToolbarService","UipageComponent","pageOnInit","projectName","rsData","paramMap","actName","formFieldName","getModel","pageDestroy","ActivatedRoute","UiheaderComponent","environment","profileImgUrl","myProfile","UserName","_myProfile","username","userDisplayName","LastName","topFormHeader","bindFormHeader","onLogout","logout","UicontentComponent","isFieldElement","UimenucontentComponent","CheckisCategory","category","isCategory","UimenubuttonComponent","menuCtrl","toggleMenu","backNavigate","MenuController","UiappmenucontentComponent","menuService","colorArray","stroke","color","getDivClass","getMenuList","getMenuFolder","menuOnClick","pathName","appClientPath","startupPage","startUpPage","toLocaleLowerCase","openAppClientPath","setMapInput","mapInput","setAttribute","MenuService","UiactionbuttonComponent","workflowService","actionSheetCtrl","topRightActionButton","isWorkflowButton","componentProperties","ZComponentProperties","setEnable","isReadOnly","setVisible","setRequire","isRequired","changeValidator","Validators","required","e1wfs_wfcGetWorkflowButtonURL","e1wfs_wfc_getWorkflowInitialStatusURL","e1wfs_wfc_getDocumentStatusURL","getFirstzButton","setComponentProperties","registerComponent","isNullUndefinedEmpty","WorkflowCode","actionBtnList","reloadButtonList","loadWorkflowButton","isBtnVisible","fieldExpr","onAction","header","buttons","actionSheetEl","present","button","getButtonLabel","buttonRole","getButtonRole","handler","buttonClick","role","DismissType","buttonLabel","labelExpr","match","lowerCaseLabel","documentId","appendWFS_DocumentsInfo","getWorkflowButtonsField","attributes","Attributes","fieldAttribute","iconName","workflowButtonClick","DisableSyncWorkflowStatus","WorkflowMasterCode","presetModelValue","setCurrentDocumentStatus","docInfoParam","DocumentId","TypeCode","toUpperCase","functionalButton_OnClick","gotoButton_Onclick","triggerSendEmail","WorkflowService","ActionSheetController","UivalidationmessageComponent","getValidationError","getIconClass","ZBulletComponent","ListType","setupDataSource","getReadOnlyValue","readOnlyValue","getIon_InvalidClass","getClass","ZbuttonsComponent","FirstZbtn","expand","fc","controls","enable","disable","field$","Expand","buttonDisabled","fill","Color","icon","getIcon","visible","disabled","clickEvent","dismissType","disableTriggerTimer","DisableTriggerTimer","click","setLabelText","newText","btn","setTimeout","BtnClick","getFontAwesome","ZcardComponent","options","Title","gData","getFieldDeclarationForSetup","ComponentIsVisible","ZchartComponent","series","categories","title","renderAs","pannable","zoomable","categoryAxis","max","maxDivisions","labels","rotation","background","dataType","dataStyle","legendPosition","legendOrientation","tooltipFormat","dataField","categoryField","Options","optionType","optionValue","RenderAs","Pannable","Zoomable","Categories","Max","MaxDivisions","Rotation","Series","DataType","DataStyle","LegendPosition","LegendOrientation","TooltipFormat","AggregateType","DataField","CategoryField","onRender","onAxisLabelClick","onLegendItemClick","onLegendItemHover","onPlotAreaClick","onPlotAreaHover","onSeriesClick","OnItemClick","onSeriesHover","ZcheckboxComponent","showTooltipsInfoIcon","showTooltipsInfoBySide","tooltipsInfo","tooltipsDisplayText","useKendoSwitch","setTooltipsInfoIcon","setTooltipsDisplayText","UseKendoSwitch","onSwitchChange","OnChange","onChange","getLabelStyle","order","LabelOrder","LabelPosition","white-space","getCheckboxClass","classList","LabelDivClass","divClassSegment","parseInt","Class","setTooltipsInfoColor","displayIcon","tooltipsDisplayIcon","displayText","DisplayText","setTooltipsInfoSideBySide","ZChipComponent","selectedIcon","Selected","SelectedIcon","_Icon","_Selected","getChipClass","chip","chipListChangeSelection","selectedChipIndexes","ind","this_1","_c","chipChangeSelection","selectedItem","getDataValue","mouseover","OnHover","showTooltip","tooltipDir","ViewChild","TooltipDirective","static","ZcodeeditorComponent","code","theme","mode","widthReduce","WidthReduce","heightReduce","HeightReduce","getValue","evalValue","getEvalValue","nextValue","evalNextValue","getEditorStyle","getEditorHeight","window","innerWidth","h","innerHeight","onTextChange","ZdaterangeComponent","range","rangeDateArray","fromDateString","toDateString","min","setNewRange","zdaterange","setRange","ZdatetimeComponent","dateFormat","SetDateRange","MinDate","MaxDate","isNaN","toKendoDateFormat","getDateValue","GetDate","myDate","toISOString","setValue","handlePreventableEvent","eventName","preventDefault","thisComponent","dateAppendEvent","timeAppendEvent","dateCell","node","addEventListener","nodeDate","hoursOnClick","minutesOnClick","ampmOnClick","nowOnClick","dateNow","toJSON","setDateTimeToModel","nowTime","valueDateTime","currentDateTimeValue","dateTimeNow","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","timeWrapper","hour","nodeValue","currentTarget","textContent","minutes","ampm","_hour","zModelValue","getZModelValue","newDateTime","ZdivComponent","ZformComponent","fieldIndex","onInitNormal","getGroup","formControls","getFormControls","FormGroup","addToFieldIndex","fieldArray","isFormControl","isVisibleFormControl","isRequiredFormControl","validators","getValidators","FormControl","hasCCField","ccValidators","getCCValidators","CCValue","trackByFn","ZgaugeComponent","majorTicks","minorTicks","startAngle","endAngle","minValue","maxValue","scaleMax","colors","transitions","reverse","rangePlaceholderColor","labelsColor","rangeFrom","rangeTo","rangeColor","rangeLineCap","showLabels","rangeSize","MinValue","MaxValue","Transitions","MajorTicks","ShowLabels","style","Style","MinorTicks","Reverse","StartAngle","EndAngle","RangePlaceholderColor","RangeFrom","RangeTo","RangeColor","RangeLineCap","RangeSize","GaugeAlignment","paddingValue","alignment","padding-right","ZgridComponent","formBuilder","zgrid","oauthUrl","mySelection","_state","sortColumnName","parameters","gridDefaultStateExist","gridData","ShowRecordNumber","GridNo","createFormControls","allResults","refreshData","saveGridSettings","restoreGridSettings","gridStorageKey","pageSizes","previousNext","PageSizes","SelectOptions","selectableSettings","gridValue","stateExist","setGridSessionKey","gridCallback","userGridState","process","filterable","sortable","locked","colSetting","getGridHeight","gridHeight","isSelectOption","selectOptionExist","checkboxOnly","setColumns","columnName","wrapColumnNamesInFieldElement","columnList","isHidden","Hidden","enablePinning","IsEditableInGrid","Editable","editModel","EditClickURL","getGridData","getFormControl","rowIndex","property","formItem","inlineEditedFormGroups","at","isEditableInGrid","FormArray","formGroup","createFormGroup","onBtnClick","cellData","onNavigateTo","cellClickHandler","disableAllColumnCellClickHandler","DisableCellClickHandler","isCommandColumn","column","InCellEditable","editableColumns","isEditableInDataItem","sender","editCell","columnIndex","func","editCellCloseHandler","clickAction","Click","stopPropagation","nodeName","offsetWidth","scrollWidth","rowSelectionKey","context","getSeletectedValues","_gridOption","_zgridControl","ngClass","fieldType","getFormat","defaultFormat","format","FormatOptions","formatArr","dp","setHeaderText","newHeaderTitle","setGridIsLoading","triggered","trackBy","_columns","configValue","toArray","propName","acc","curr","_gridConfig","dataFormFields","concatMap","gridCache","savedGridCache","remove","getInlineField","getInlineForm","getFormControlData","stateFilter","inCellCheckBoxOnChange","isChecked","detail","checked","columnsOrderChanged","addHandler","closeEditor","colFormControl","ValidatorPattern","pattern","addRow","saveHandler","gridExistingData","uniqueKeyExist_1","uniqueKey_1","closeRow","cancelHandler","editHandler","editedRowIndex","editRow","removeHandler","getItemIndex","cancelCell","idx","FormBuilder","ZimgComponent","attachmentService","imgWidth","imgHeight","imgSrc","randomNumber","Math","random","Size","imgSize","Guid","FileName","getImageBlob","blobfile","convertBlobToBase64","Image","onDataSourceChange","sourceUrl","SourceUrl","getImgStyle","onIconClick","iconClick","getIconName","AttachmentService","ZkcardComponent","scrollViewCards","responseData","filterItems","progressStyles","loadingPanelVisible","position","param","getRecordsSummary","ResourceURLAlt","getNewSurvey","SurveyIds","SurveyId","Number","TotalTakenQuestions","TotalQuestions","round","requestBody","getPageUrl","_gridName","WFS_StatusName","UserId","SurveyMillId","valueChange","ZlabelComponent","labelText","ZmfbComponent","positionMode","bottomEnd","vertical","horizontal","dialOpen","buttonColor","events","onOpen","onClose","onDialItemClick","ZnumericComponent","RightAlign","numericTextbox","textAlign","valueHandler","dataValue","getStyle","ngStyle","autocorrectHandler","AutoCorrect","inputmodeHandler","getKendoStyle","isReadOnlyField","margin","background-color","ZpostselectinputComponent","infinitezData","infiniteSearchText","toggleSelectable","itemValueField","itemTextField","itemDataField","itemTemplate","infiniteScrollPageNo","dataInfo","itemsResourceURL","optionFilters","debounceSub","setSelectMultipleTextValue","CCSelectOptions","getzDataForzModel$","fieldValue","HasInfiniteScroll","InfiniteScroll$","getInfiniteData","zdata","handleFilter","CCOptionResourceURL","lazyLoadDataOptions","resourceUrl","filterParam","ZSelectPostApiParams","sorts","CCOptionSort","CCOptionColumns","CCOptionFilter","getDataOptions","CCOptionName","getItemsData","optionName","onChangeEvent","valueField_1","zdataModel","modelzData","CCOnChange","onValueChange","handleClose","CCIsRequired","setErrors","clearItems","selectComponent","clear","close","toggleItems","confirmItems","confirm","onSearch","startSearch","enableInfiniteScroll","searchFields","SearchFields","filteritems","filterSearchItems","endInfiniteScroll","endSearch","justOneTime","handleOpen","handleBlur","getItemTemplate","ItemTemplate","getTemplateFunc","onAddItem","OnAddItem","ZquerybuilderComponent","qbItems","currentConfig","allowEmptyRulesets","allowRuleset","allowCollapse","persistValueOnFieldChange","isDisabled","bootstrapClassNames","arrowIcon","buttonGroup","rightAlign","switchRow","switchGroup","switchRadio","switchLabel","switchControl","row","rule","ruleSet","invalidRuleSet","emptyWarning","operatorControl","operatorControlSize","fieldControl","fieldControlSize","entityControl","entityControlSize","inputControl","inputControlSize","conditionList","optionList","valueOption","selectOptions_1","DefaultPageSettingParams","operatorList","nullable","defaultValue","defaultQueryValueString","setQueryValue","completeRule","isUndo","queryValue","qbResultValueName","queryBuilder","getOperators","defaultOperatorList","getOptionList","optionsList","queryValueString","defaultQueryValueJson","toQueryRule","queryCtrl","queryBuilderModel","condition","rules","q","QueryBuilderComponent","ZreportComponent","height","onPageReady","IsAutoGenerateReport","generateReport","rs","viewer","setReportSource","refreshReport","on","pageHeight","outerHeight","documentMapSplitter","resize","parameterSplitter","encapsulation","ViewEncapsulation","None","ZschedulerComponent","changeDetector","selectedDate","selectedViewIndex","getEventStyles","BGColor","BorderColor","backgroundColor","bordercolor","getSlotClass","resources","getItems","setSchedulerSessionKey","getSchedulerSessionFilter","ngAfterViewInit","onDateChange","dateRange","CalendarOptions","detectChanges","onSlotDblClick","isAllDay","selectedView","onEventDblClick","beforeSchedulerGetData","setSchedulerSessionFilter","lstFilter","SelectedDate","ChangeDetectorRef","ZselectmultipleComponent","allowCustomValue","autoClose","virtual","itemHeight","TooltipsInfo","SideBySide","AutoClose","iconList","ClickableIcons","Tooltip","Position","buttonList","ButtonList","tooltip","AllowCustomValue","afterLoadzDataOptions","isRequired_1","OptionResourceURL","optionData","DisableAutoFirstSelection","autoSelectFirstOption","optionData_1","thisComponent_1","zModelPropertyName","optionId","Multiple","OptionSort","OptionColumns","OptionFilter","OptionName","getIsRequiredValue","IsRequiredValue","ionInvalidClass","disableOpenOnFocus","comboboxComponent","DisableOpenOnFocus","setTooltipsInfoClass","TextColor","ZtabComponent","lastSelectedTabIndex","currentTabs","allTabs","setTabsVisible","tabIndexes","refreshCurrentTabs","setTabCounter","tabIndex","counter","TabItems","Counter","setCurrentTabs","restoreTabSelection","validIcon","Index","TabVisibleFalseIndex","previousStateTabs","previousTab","getSelectedTab","setSelectTab","AllowSaveState","tabSelections","has","Map","onTabSelect","saveState","ZtextComponent","clearButtonIcon","adornmentList","AdornmentList","OnClick","showClearButton","ClearButton","mapInputType","mapInputMode","setTextboxClass","textboxOnClick","setComponentModelValue","getAdornmentBackgroundColor","adornment","BackgroundColor","adornmentLook","AdornmentLook","onAdornmentClick","readOnlyOnClear","ZtextareaComponent","onClick","ZtexteditorComponent","getCompStyle","getCompHeight","ZtreeComponent","originalItemList","isNodeDrop","nodeCounter","clickActName","expandedkeys","itemIndex","selectedKeys","absoluteText","isExpanded","expandNode","setAsSelected","searchNodeIndex","indexArr","indexs","substring","collapseNode","collapseParent","expandAllNode","TreeviewExpandAll","OnAddNode","OnRemoveNode","k","handleCollapse","handleExpand","getTemplate","convertToTreeItems","toTreeItems","pendingItems","ParentId","parentItem","onSelectionChange","targetName","onEditNode","OnEditNode","handleNodeDrop","Draggable","dropHandler","OnDrop","setValid","handleNodeDragEnd","updateChangeToDataSet","search","filterPrefix","valueName","term","contains","newItems","filterItem","resizable","reorderable","columnMenu","scrollable","refresh","autoBind","dataBound","idField","parentIdField","aggregate","pageAble","ZtreelistComponent","ztreelist","ZTreeListOptions","treelistSubject","createFormControlsForInlineEdit","fgVal","Fg","setLocalOptions","setFieldElementOptions","isButtonHidden","cellContain","viewItem","hiddenParam","hiddenValue","cellContext","edit","navigateTo","isColumnsVisible","SystemLocaleTranslation","DisableGridColumnMenu","zfields","getButtonsFromZButtons","setTreeListColumns","buttonCmd","zbuttonResult","zbuttonsArray","zbuttonsName","class","insertCommand","aggregatetitle","insertFooterTemplateField","insertField","colTitle","NavigateTo","command","footerTemplate","aggregateTitle","getResouceURL","isInlineEditColVisible","getColClass","onFilterChange","ZtrendcardComponent","ZudfComponent","initialDataValue","loadEmptyForm","loadZudfForm","formField","asyncSubject","AsyncSubject","formFieldResult","appendPrefix","complete","parentFormId","zudf_Name","prefix","appendFormControl","zudfControlName","zudfControl","fieldData","addControl","clearFormControl","removeControl","ZunknownComponent","ZuploadComponent","compressImage","ngZone","uploadAttachmentUrl","uploadSaveUrl","uploadRemoveUrl","downloadFileUrl","getImageUrl","isAutoUpload","isMultiple","imagePreviews","uid","showFileList","fileList","restrictions","minFileSize","maxFileSize","allowedExtensions","chunkSettings","size","maxAutoRetries","MinFileSize","MaxFileSize","AutoUpload","AllowRemove","onSuccess","operation","response","HttpEventType","Sent","UploadProgress","file","files","existingFileIndex","findIndex","myUid","OnSuccess","compressionConfigHandler","imgConfig","FileSizeMaxSize","FileSizeMaxSizeByte","convertSizeToByte","FileSizeMinSize","FileSizeMinSizeByte","sizeString","_tempFileSizeMaxSize","sizeByByte","sizeType","_tempFileSize","lastChar","substr","parseFloat","secLastChar","uploadEventHandler","rawFile","validationErrors","reader_1","FileReader","onload","ev","EnableImagePreview","src","readAsDataURL","additional","UploadMetaData","str","e1AccessToken","onRemove","myFile","selectEventHandler","reader","fileData","Compression","compress","compressFile","run","toFixed","clearFiles","uploadComponent","CompressImageService","NgZone","ZworkflowbuttonsComponent","isLocalHostAPI","loadButton","resultData","me_1","ZComponentService","mapByName","_name","zbullet","zbuttons","zcard","zchart","checkbox","zchip","textareajson","textareahtml","zdate","zdatetime","zshortdate","zuidatetime","zuitime","zdiv","zgauge","zimg","zkcard","zlabel","zmfb","znumeric","post_select_input","pre_select_input","zphone_countrycode","zquerybuilder","zreport","zcalendar","zuiselectmultiple","zuiselectmultiple_button","select","ztab","number","numeric","email","password","tel","currency","textarea","ztexteditor","ztree","ktree_list","ztrendcard","unknown","zudf","zupload","zworkflowbuttons","isSkipComponentType","componentType","loadComponent","componentFactoryResolver","fieldElement","componentFactory","componentName","resolveComponentFactory","componentRef","createComponent","instance","appendComponentToDynamicForm","injector","appRef","containerId","attachView","hostView","domElem","rootNodes","ZformcontrolComponent","zcomponentService","ComponentFactoryResolver","FieldElementDirective","NgModule","declarations","ZGridPopupAnchorDirective","imports","IonicModule","IonicSelectableModule","CommonModule","RouterModule","FormsModule","ReactiveFormsModule","AceEditorModule","FontAwesomeModule","QueryBuilderModule","ArcGaugeModule","ButtonsModule","ChartsModule","CalendarModule","DateInputsModule","DropDownsModule","EditorModule","GridModule","ExcelModule","IndicatorsModule","IntlModule","InputsModule","SwitchModule","TextBoxModule","LabelModule","LayoutModule","PanelBarModule","TabStripModule","PopupModule","ProgressBarModule","TelerikReportingModule","SchedulerModule","TreeListModule","TreeViewModule","TooltipModule","UploadModule","UploadsModule","ZCoreModule","MmhglobalZmodalModule","exports","entryComponents","providers","schemas","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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,GACA5B,GACAI,GACAK,GACAqF,GACAG,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACA+yB,GACA3xB,GACAwC,GACA6I,GACAwB,GACAwB,GACAE,GACAp7B,EACAiC,EACA85B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEF+E,QAAS,CACPC,EAAAA,YACAC,EAAAA,sBACAC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,gBACAC,EAAAA,kBACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,aACAC,EAAAA,eACAC,EAAAA,iBACAC,EAAAA,gBACAC,EAAAA,aACAC,EAAAA,WACAC,EAAAA,YACAC,EAAAA,iBACAC,EAAAA,WACAC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,cACAC,EAAAA,YACAC,EAAAA,aACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,YACAC,EAAAA,kBACAC,EAAAA,uBACAC,EAAAA,gBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,aACAC,EAAAA,cACAC,EAAAA,YACAC,EAAAA,uBAEFC,QAAS,CACPj5C,EACAs2C,GACAv1C,GACA01C,GACApuC,GACAO,GACAK,GACAK,GACAE,GACAmC,GACAE,GACAgB,GACA2B,GACAa,GACAvB,GACAyB,GACAI,GACAK,GACAmB,GACAkE,GACAG,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACA+yB,GACA3xB,GACAwC,GACA6I,GACAwB,GACAwB,GACAE,GACAp7B,EACAiC,EACA85B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEFuH,gBAAiB,CACfrtC,GACAgB,GACA2B,GACAa,GACAvB,GACAyB,GACAI,GACAK,GACAmB,GACAkE,GACAG,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACA+yB,GACA3xB,GACAwC,GACA6I,GACAwB,GACAwB,GACAE,GACAp7B,EACAiC,EACA85B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEFwH,UAAW,CACTp5C,EAAAA,cAEFq5C,QAAS,CAACC,EAAAA,29CzDkoBgBpyD,GAC1B,IAAM6V,EAAe7V,EAAmB,YACpC6V,GACFA,EAAaC,UAEf9V,EAAMwV,aAAc","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/********** 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> \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> \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"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","__read","r","ar","error","ZComponentDebugService","router","alertService","authService","fieldService","resourceApiService","toastService","webApiService","defineProperty","scope","group","_debug","onInitDebugger","mainService","ZGroup","_isDebugging","zData","collectedActivities","activityCount","collectedWorkflowButtons","workflowButtonCount","zComponents","isListForm","onStartDebugger","fieldElements","me","_this","form","toFormGroup","subscription","unsubscribe","assign","zModel","subject","BehaviorSubject","isEdit","isNew","_group","resourceURL","getURL","treeItemTemplate","onItemClick","onTreeNodeChange","onAddNode","onRemoveNode","treeNodesExpandAll","treeNodesCollapseAll","refreshTreeModel","addNode","refreshActivityLogData","LoadGridData","bind","GoToFieldElement","gotoFieldElement","ListWatchName","listWatchName","onChangeWatchName","getWatchName","fieldElementonEditorCodeChange","gridActivityLogColumnFields","getFormFieldCode","gridActivityLogOnItemClick","updateModel","refreshWorkflowButtonData","loadWorkflowData","gridWorkflowButtonColumnFields","gridWorkflowButtonOnItemClick","subscribe","event","subjectEvent","ZComponentHelper","setFieldsDivClass","_projectName","fieldName","loadDebugZModel","downloadList","getProjectId","formType","fieldzModel","getFieldzModel","forkJoin","debug","url","getApi","type","activityName","getFormFieldzModel","getListFieldzModel","httpGet$","name","pipe","tap","respData","patchValue","markAsPristine","fields","JSON","parse","Code","treeModel","convertTreeModel","url2","switchMap","fieldMapping","id","FieldElementMasterId","target","startsWith","callFunc","getGroupEvalValue","console","warn","newFunc","endsWith","nUrl","replace","data","navigate","cName","slice","showzModal","columnFields$","Id","navigateUrl","formHeader","ctrlName","rec","dataItem","selectTab","watchNameValue","index","setWatchNameValue","getComponent","newValue","setModelValue","activityLogGrid","setData","component","searchText","pageNo","recordId","results","watchList","Name","filter","toLowerCase","indexOf","of","dataSet","DebugWatchName","el","expandAll","collapseAll","_a","item","Type","_DataValue","log","modalFields","Value","zmodel","nodeModel","stringify","_b","modalData","responseType","newData","updateTreeNode","newTreeModel","revertedModel","revertTreeModel","newCode","newNode","treeIndex","split","newIndex","join","insertTreeNode","isArray","removeTreeNode","splice","codeData","rowData","initialModel","DisplayName","gridColVisible","width","minWidth","enableFiltering","enableSorting","pinnedLeft","PlaceHolder","IsRequired","MinLength","MaxLength","Label","DivClass","ReadOnly","ShowLabel","Visible","show","text","cssClass","reply","fg","dirty","valid","httpPut$","map","res","handleSuccess","Data","errors","getFormGroupErrors","zgrid_WorkflowButtonGrid","field","refField","attribute","refAttribute","params","HttpParams","set","httpPost$","roleInfo","statusInfo","parentStatusInfo","MappedRoleList","MappedStatusList","forEach","_status","MappedParentStatusList","_parentStatus","_mappedInfo","mappedRoleInfo","mappedStatusInfo","mappedParentStatusInfo","_buttonInfo","WorkflowId","ButtonId","ButtonName","ButtonCode","ButtonTypeId","ButtonTypeName","ButtonTypeCode","ButtonVisible","ButtonClickEvent","ClickEvent","ButtonURL","URL","ButtonIcon","Icon","_gotoStatusInfo","GotoStatusId","GotoStatusName","GotoStatusCode","Status","_gotoStatus","propertiesModel","successMsg","undefined","ProcessingStatus","showHttpResponseMessage","MESSAGETYPE","Success","CostCode","handleError","Injectable","args","providedIn","Router","AlertService","AuthService","FieldService","ResourceApiService","ToastService","WebApiService","ZmodalComponent","dialog","modalCtrl","zcoreService","platform","_super","ngOnInit","ZmodalHelper","onInit_ModalForm","ngOnDestroy","onDestroy_ModalForm","onCancel","onConfirm","onInitClose","isSITEnvironment","isDebugSession","ctrlScope","getModel$","recId","referenceId","getGridStyle","isMobileScreen","height.px","width.px","DialogContentBase","Component","selector","template","DialogRef","ModalController","ZCoreService","Platform","Input","ZmodalMobileComponent","MainService","navController","cacheService","modalService","debugService","oauthEnvironmentUrl","getEnvironment","e1OauthUrl","startUp","setGroup","getResourceServerData","loadData","getGroupFields","propertyName","initializeGroup","pageName","resourceName","resourceURLName","gridColumnFields","editModelURL","isLoading","cancelButtonName","zButtonsCount","backNavigation","historyBack","refreshPage","refreshGrid","createModel","cloneNewModel","deleteModel","newModel","parentReferenceField","keys","backNavigationPage","toString","afterGetModelSuccess","canExit","closeModalForm","dismiss","modalGroupParam","controllerName","referId","colFields$","parentGroup","isTriggered","beforeBackNavigationPage","gridOptionName","gridOption","trim","zgridControl","getData","location","reload","getCloneNewCacheZModel","cacheZModel","getCache","clearCache","SubType","beforeNewModel","parentReferenceId","pathSegment","lastSegment","newPath_1","navigateByUrl","skipLocationChange","reset","relativeTo","activatedRoute","createModelres","beforeCreateModel","removeNullFields","resp","afterCreateModel","markAsDirty","beforeUpdateModel","afterUpdateModel","setCache","beforeDeleteModel","Disabled","afterDeleteModel","beforePageInitialise","afterNewModel","afterPageInitialise","componentSize","skipIsDirtyCheck","modalcomponent","modalmobilecomponent","cookieStorePost","cookieStoreURL","cookieStoreValue","status","cookieStoreGet","accessToken","headers","cookieStoreDeleteMultiple","containName","NavController","CacheService","ModalService","ScrollbarThemeDirective","stylesheet","styleElmt","nativeElement","shadowRoot","querySelector","append","barStyle","document","createElement","appendChild","Directive","ElementRef","viewContainerRef","ViewContainerRef","ZGridBindingDirective","grid","webapiService","storageService","zGridStatePersistingService","state","skip","take","gridColumns","usableColumns","paginationApiPostUrl","dataSource","zgridbinding","gridSubject","SkipDirective","loading","PageSize","pageSize","DataSource","getGroupValue","ResourceURL","grp","array","arr","setFilterParamsByParentRefId","generateGridColumns","refId","getFieldReferenceId","ReferenceField","filterValue","key","filterParams","fieldReferenceId","ReferenceId","serviceSubscription","ColumnFields","gridSetting","getGridSettings","getGridColumns","getFilterParamsColumns","getFilter","getFilterParams","getSorting","getGrantType","setHiddenColumn","getDataBinding","colFields","valueExpr","tmpGridColumn","columns","filters","Filters","element","val","actualVal","SortOrder","sortOrder","GrantType","grantType","gridSettingHiddenCol","values","find","c","ds","total","ExternalPagination","postApi","aggregateHandling","totalCount","notifyDataChange","_data","_totalCount","clearData","x","aggregateType","col","_aggregateValue","reduce","aggregateValue","aggregateResetValue","pageChange","sortChange","sort","sortColumnNames","sortOrders","dir","filterChange","mapFilterOperator","operator","setGridSessionFilter","dataStateChange","_storageKey","e1Token","userName","_arrGridCaching","get","_gridCaching","gridSettings","columnsConfig","a","orderIndex","beforeGridGetData","getGridSessionFilter","StorageKey","subject_1","Subject","includes","Date","asObservable","lstGridFilter","StateFilter","FilterParams","DataBindingDirective","Inject","GridComponent","StorageSessionService","ZGridStatePersistingService","exportAs","OpenOnFocusDirective","onFocus","openOnFocus","readonly","toggle","onBlur","HostListener","DateParserFilter","transform","items","Pipe","pure","EditorFilter","source","jsonValue","safeStringify","cache","DivzLayout","zlayout","ExportOptions","viewerToolTipOpening","ReportSource","ready","exportBegin","exportEnd","onRenderingEnd","viewerContainerStyle","isVisible","paramToResizeReportViewer","resizeReportView","largeMenuBound","sideMenuBound","reportSource","hideOptions","update","hideUnwantedOptions","bindEvents","exportOption","sideMenu","$","children","largeMenu","smallMenu","hide","EnableExportPDF","EnableExportCSV","EnableExportExcel","EnableExportRTF","EnableExportTIFF","EnableExportMHTML","EnableExportXPS","each","hiddenOption","resizeViewer","TabFilter","TabArea","DateRangeFilterCellComponent","filterService","findByOperator","filtersByField","clearFilter","removeFilter","filterRange","start","end","root","logic","arguments","concat","__spread","BaseFilterCellComponent","FilterService","ZSchedulerToolBarComponent","toolbarService","local","showCalendar","today","prev","onChange_Calendar","inProgress","date","toggleCalendar","delay","onBlur_Calendar","keydown","keyCode","documentClick","className","ToolbarService","UipageComponent","pageOnInit","projectName","rsData","paramMap","actName","formFieldName","getModel","pageDestroy","ActivatedRoute","UiheaderComponent","environment","profileImgUrl","myProfile","UserName","_myProfile","username","userDisplayName","LastName","topFormHeader","bindFormHeader","onLogout","logout","UicontentComponent","isFieldElement","UimenucontentComponent","CheckisCategory","category","isCategory","UimenubuttonComponent","menuCtrl","toggleMenu","backNavigate","MenuController","UiappmenucontentComponent","menuService","colorArray","stroke","color","getDivClass","getMenuList","getMenuFolder","menuOnClick","pathName","appClientPath","startupPage","startUpPage","toLocaleLowerCase","openAppClientPath","setMapInput","mapInput","setAttribute","MenuService","UiactionbuttonComponent","workflowService","actionSheetCtrl","topRightActionButton","isWorkflowButton","componentProperties","ZComponentProperties","setEnable","isReadOnly","setVisible","setRequire","isRequired","changeValidator","Validators","required","e1wfs_wfcGetWorkflowButtonURL","e1wfs_wfc_getWorkflowInitialStatusURL","e1wfs_wfc_getDocumentStatusURL","getFirstzButton","setComponentProperties","registerComponent","isNullUndefinedEmpty","WorkflowCode","actionBtnList","reloadButtonList","loadWorkflowButton","isBtnVisible","fieldExpr","onAction","header","buttons","actionSheetEl","present","button","getButtonLabel","buttonRole","getButtonRole","handler","buttonClick","role","DismissType","buttonLabel","labelExpr","match","lowerCaseLabel","documentId","appendWFS_DocumentsInfo","getWorkflowButtonsField","attributes","Attributes","fieldAttribute","iconName","workflowButtonClick","DisableSyncWorkflowStatus","WorkflowMasterCode","presetModelValue","setCurrentDocumentStatus","docInfoParam","DocumentId","TypeCode","toUpperCase","functionalButton_OnClick","gotoButton_Onclick","triggerSendEmail","WorkflowService","ActionSheetController","UivalidationmessageComponent","getValidationError","getIconClass","ZBulletComponent","ListType","setupDataSource","getReadOnlyValue","readOnlyValue","getIon_InvalidClass","getClass","ZbuttonsComponent","FirstZbtn","expand","fc","controls","enable","disable","field$","Expand","buttonDisabled","fill","Color","icon","getIcon","visible","disabled","clickEvent","dismissType","disableTriggerTimer","DisableTriggerTimer","click","setLabelText","newText","btn","setTimeout","BtnClick","getFontAwesome","ZcardComponent","options","Title","gData","getFieldDeclarationForSetup","ComponentIsVisible","ZchartComponent","series","categories","title","renderAs","pannable","zoomable","categoryAxis","max","maxDivisions","labels","rotation","background","dataType","dataStyle","legendPosition","legendOrientation","tooltipFormat","dataField","categoryField","Options","optionType","optionValue","RenderAs","Pannable","Zoomable","Categories","Max","MaxDivisions","Rotation","Series","DataType","DataStyle","LegendPosition","LegendOrientation","TooltipFormat","AggregateType","DataField","CategoryField","onRender","onAxisLabelClick","onLegendItemClick","onLegendItemHover","onPlotAreaClick","onPlotAreaHover","onSeriesClick","OnItemClick","onSeriesHover","ZcheckboxComponent","showTooltipsInfoIcon","showTooltipsInfoBySide","tooltipsInfo","tooltipsDisplayText","useKendoSwitch","setTooltipsInfoIcon","setTooltipsDisplayText","UseKendoSwitch","onSwitchChange","OnChange","onChange","getLabelStyle","order","LabelOrder","LabelPosition","white-space","getCheckboxClass","classList","LabelDivClass","divClassSegment","parseInt","Class","setTooltipsInfoColor","displayIcon","tooltipsDisplayIcon","displayText","DisplayText","setTooltipsInfoSideBySide","ZChipComponent","selectedIcon","Selected","SelectedIcon","_Icon","_Selected","getChipClass","chip","chipListChangeSelection","selectedChipIndexes","ind","this_1","_c","chipChangeSelection","selectedItem","getDataValue","mouseover","OnHover","showTooltip","tooltipDir","ViewChild","TooltipDirective","static","ZcodeeditorComponent","code","theme","mode","widthReduce","WidthReduce","heightReduce","HeightReduce","getValue","evalValue","getEvalValue","nextValue","evalNextValue","getEditorStyle","getEditorHeight","window","innerWidth","h","innerHeight","onTextChange","ZdaterangeComponent","range","rangeDateArray","fromDateString","toDateString","min","setNewRange","zdaterange","setRange","ZdatetimeComponent","dateFormat","SetDateRange","MinDate","MaxDate","isNaN","toKendoDateFormat","getDateValue","GetDate","myDate","toISOString","setValue","handlePreventableEvent","eventName","preventDefault","thisComponent","dateAppendEvent","timeAppendEvent","dateCell","node","addEventListener","nodeDate","hoursOnClick","minutesOnClick","ampmOnClick","nowOnClick","dateNow","toJSON","setDateTimeToModel","nowTime","valueDateTime","currentDateTimeValue","dateTimeNow","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","timeWrapper","hour","nodeValue","currentTarget","textContent","minutes","ampm","_hour","zModelValue","getZModelValue","newDateTime","ZdivComponent","ZformComponent","fieldIndex","onInitNormal","getGroup","formControls","getFormControls","FormGroup","addToFieldIndex","fieldArray","isFormControl","isVisibleFormControl","isRequiredFormControl","validators","getValidators","FormControl","hasCCField","ccValidators","getCCValidators","CCValue","trackByFn","ZgaugeComponent","majorTicks","minorTicks","startAngle","endAngle","minValue","maxValue","scaleMax","colors","transitions","reverse","rangePlaceholderColor","labelsColor","rangeFrom","rangeTo","rangeColor","rangeLineCap","showLabels","rangeSize","MinValue","MaxValue","Transitions","MajorTicks","ShowLabels","style","Style","MinorTicks","Reverse","StartAngle","EndAngle","RangePlaceholderColor","RangeFrom","RangeTo","RangeColor","RangeLineCap","RangeSize","GaugeAlignment","paddingValue","alignment","padding-right","ZgridComponent","formBuilder","zgrid","oauthUrl","mySelection","_state","sortColumnName","parameters","gridDefaultStateExist","gridData","ShowRecordNumber","GridNo","createFormControls","allResults","refreshData","saveGridSettings","restoreGridSettings","gridStorageKey","pageSizes","previousNext","PageSizes","SelectOptions","selectableSettings","gridValue","stateExist","setGridSessionKey","gridCallback","userGridState","process","filterable","sortable","locked","colSetting","getGridHeight","gridHeight","isSelectOption","selectOptionExist","checkboxOnly","setColumns","columnName","wrapColumnNamesInFieldElement","columnList","isHidden","Hidden","enablePinning","IsEditableInGrid","Editable","editModel","EditClickURL","getGridData","getFormControl","rowIndex","property","formItem","inlineEditedFormGroups","at","isEditableInGrid","FormArray","formGroup","createFormGroup","onBtnClick","cellData","onNavigateTo","cellClickHandler","disableAllColumnCellClickHandler","DisableCellClickHandler","isCommandColumn","column","InCellEditable","editableColumns","isEditableInDataItem","sender","editCell","columnIndex","func","editCellCloseHandler","clickAction","Click","stopPropagation","nodeName","offsetWidth","scrollWidth","rowSelectionKey","context","getSeletectedValues","_gridOption","_zgridControl","ngClass","fieldType","getFormat","defaultFormat","format","FormatOptions","formatArr","dp","setHeaderText","newHeaderTitle","setGridIsLoading","triggered","trackBy","_columns","configValue","toArray","propName","acc","curr","_gridConfig","dataFormFields","concatMap","gridCache","savedGridCache","remove","getInlineField","getInlineForm","getFormControlData","stateFilter","inCellCheckBoxOnChange","isChecked","detail","checked","columnsOrderChanged","addHandler","closeEditor","colFormControl","ValidatorPattern","pattern","addRow","saveHandler","gridExistingData","uniqueKeyExist_1","uniqueKey_1","formUniqueKeyValue_1","closeRow","cancelHandler","editHandler","editedRowIndex","editRow","removeHandler","getItemIndex","cancelCell","idx","FormBuilder","ZimgComponent","attachmentService","imgWidth","imgHeight","imgSrc","randomNumber","Math","random","Size","imgSize","Guid","FileName","getImageBlob","blobfile","convertBlobToBase64","Image","onDataSourceChange","sourceUrl","SourceUrl","getImgStyle","onIconClick","iconClick","getIconName","AttachmentService","ZkcardComponent","scrollViewCards","responseData","filterItems","progressStyles","loadingPanelVisible","position","param","getRecordsSummary","ResourceURLAlt","getNewSurvey","SurveyIds","SurveyId","Number","TotalTakenQuestions","TotalQuestions","round","requestBody","getPageUrl","_gridName","WFS_StatusName","UserId","SurveyMillId","valueChange","ZlabelComponent","labelText","ZmfbComponent","positionMode","bottomEnd","vertical","horizontal","dialOpen","buttonColor","events","onOpen","onClose","onDialItemClick","ZnumericComponent","RightAlign","numericTextbox","textAlign","valueHandler","dataValue","getStyle","ngStyle","autocorrectHandler","AutoCorrect","inputmodeHandler","getKendoStyle","isReadOnlyField","margin","background-color","ZpostselectinputComponent","infinitezData","infiniteSearchText","toggleSelectable","itemValueField","itemTextField","itemDataField","itemTemplate","infiniteScrollPageNo","dataInfo","itemsResourceURL","optionFilters","debounceSub","setSelectMultipleTextValue","CCSelectOptions","getzDataForzModel$","fieldValue","HasInfiniteScroll","InfiniteScroll$","getInfiniteData","zdata","handleFilter","CCOptionResourceURL","lazyLoadDataOptions","resourceUrl","filterParam","ZSelectPostApiParams","sorts","CCOptionSort","CCOptionColumns","CCOptionFilter","getDataOptions","CCOptionName","getItemsData","optionName","onChangeEvent","valueField_1","zdataModel","modelzData","CCOnChange","onValueChange","handleClose","CCIsRequired","setErrors","clearItems","selectComponent","clear","close","toggleItems","confirmItems","confirm","onSearch","startSearch","enableInfiniteScroll","searchFields","SearchFields","filteritems","filterSearchItems","endInfiniteScroll","endSearch","justOneTime","handleOpen","handleBlur","getItemTemplate","ItemTemplate","getTemplateFunc","onAddItem","OnAddItem","ZquerybuilderComponent","qbItems","currentConfig","allowEmptyRulesets","allowRuleset","allowCollapse","persistValueOnFieldChange","isDisabled","bootstrapClassNames","arrowIcon","buttonGroup","rightAlign","switchRow","switchGroup","switchRadio","switchLabel","switchControl","row","rule","ruleSet","invalidRuleSet","emptyWarning","operatorControl","operatorControlSize","fieldControl","fieldControlSize","entityControl","entityControlSize","inputControl","inputControlSize","conditionList","optionList","valueOption","selectOptions_1","DefaultPageSettingParams","operatorList","nullable","defaultValue","defaultQueryValueString","setQueryValue","completeRule","isUndo","queryValue","qbResultValueName","queryBuilder","getOperators","defaultOperatorList","getOptionList","optionsList","queryValueString","defaultQueryValueJson","toQueryRule","queryCtrl","queryBuilderModel","condition","rules","q","QueryBuilderComponent","ZreportComponent","height","onPageReady","IsAutoGenerateReport","generateReport","rs","viewer","setReportSource","refreshReport","on","pageHeight","outerHeight","documentMapSplitter","resize","parameterSplitter","encapsulation","ViewEncapsulation","None","ZschedulerComponent","changeDetector","selectedDate","selectedViewIndex","getEventStyles","BGColor","BorderColor","backgroundColor","bordercolor","getSlotClass","resources","getItems","setSchedulerSessionKey","getSchedulerSessionFilter","ngAfterViewInit","onDateChange","dateRange","CalendarOptions","detectChanges","onSlotDblClick","isAllDay","selectedView","onEventDblClick","beforeSchedulerGetData","setSchedulerSessionFilter","lstFilter","SelectedDate","ChangeDetectorRef","ZselectmultipleComponent","allowCustomValue","autoClose","virtual","itemHeight","TooltipsInfo","SideBySide","AutoClose","iconList","ClickableIcons","Tooltip","Position","buttonList","ButtonList","tooltip","AllowCustomValue","afterLoadzDataOptions","isRequired_1","OptionResourceURL","optionData","DisableAutoFirstSelection","autoSelectFirstOption","optionData_1","thisComponent_1","zModelPropertyName","optionId","Multiple","OptionSort","OptionColumns","OptionFilter","OptionName","getIsRequiredValue","IsRequiredValue","ionInvalidClass","disableOpenOnFocus","comboboxComponent","DisableOpenOnFocus","setTooltipsInfoClass","TextColor","ZtabComponent","lastSelectedTabIndex","currentTabs","allTabs","setTabsVisible","tabIndexes","refreshCurrentTabs","setTabCounter","tabIndex","counter","TabItems","Counter","setCurrentTabs","restoreTabSelection","validIcon","Index","TabVisibleFalseIndex","previousStateTabs","previousTab","getSelectedTab","setSelectTab","AllowSaveState","tabSelections","has","Map","onTabSelect","saveState","ZtextComponent","clearButtonIcon","adornmentList","AdornmentList","OnClick","showClearButton","ClearButton","mapInputType","mapInputMode","setTextboxClass","textboxOnClick","setComponentModelValue","getAdornmentBackgroundColor","adornment","BackgroundColor","adornmentLook","AdornmentLook","onAdornmentClick","readOnlyOnClear","ZtextareaComponent","onClick","ZtexteditorComponent","getCompStyle","getCompHeight","ZtreeComponent","originalItemList","isNodeDrop","nodeCounter","clickActName","expandedkeys","itemIndex","selectedKeys","absoluteText","isExpanded","expandNode","setAsSelected","searchNodeIndex","indexArr","indexs","substring","collapseNode","collapseParent","expandAllNode","TreeviewExpandAll","OnAddNode","OnRemoveNode","k","handleCollapse","handleExpand","getTemplate","convertToTreeItems","toTreeItems","pendingItems","ParentId","parentItem","onSelectionChange","targetName","onEditNode","OnEditNode","handleNodeDrop","Draggable","dropHandler","OnDrop","setValid","handleNodeDragEnd","updateChangeToDataSet","search","filterPrefix","valueName","term","contains","newItems","filterItem","resizable","reorderable","columnMenu","scrollable","refresh","autoBind","dataBound","idField","parentIdField","aggregate","pageAble","ZtreelistComponent","ztreelist","ZTreeListOptions","treelistSubject","createFormControlsForInlineEdit","fgVal","Fg","setLocalOptions","setFieldElementOptions","isButtonHidden","cellContain","viewItem","hiddenParam","hiddenValue","cellContext","edit","navigateTo","isColumnsVisible","SystemLocaleTranslation","DisableGridColumnMenu","zfields","getButtonsFromZButtons","setTreeListColumns","buttonCmd","zbuttonResult","zbuttonsArray","zbuttonsName","class","insertCommand","aggregatetitle","insertFooterTemplateField","insertField","colTitle","NavigateTo","command","footerTemplate","aggregateTitle","getResouceURL","isInlineEditColVisible","getColClass","onFilterChange","ZtrendcardComponent","ZudfComponent","initialDataValue","loadEmptyForm","loadZudfForm","formField","asyncSubject","AsyncSubject","formFieldResult","appendPrefix","complete","parentFormId","zudf_Name","prefix","appendFormControl","zudfControlName","zudfControl","fieldData","addControl","clearFormControl","removeControl","ZunknownComponent","ZuploadComponent","compressImage","ngZone","uploadAttachmentUrl","uploadSaveUrl","uploadRemoveUrl","downloadFileUrl","getImageUrl","isAutoUpload","isMultiple","imagePreviews","uid","showFileList","fileList","restrictions","minFileSize","maxFileSize","allowedExtensions","chunkSettings","size","maxAutoRetries","MinFileSize","MaxFileSize","AutoUpload","AllowRemove","onSuccess","operation","response","HttpEventType","Sent","UploadProgress","file","files","existingFileIndex","findIndex","myUid","OnSuccess","compressionConfigHandler","imgConfig","FileSizeMaxSize","FileSizeMaxSizeByte","convertSizeToByte","FileSizeMinSize","FileSizeMinSizeByte","sizeString","_tempFileSizeMaxSize","sizeByByte","sizeType","_tempFileSize","lastChar","substr","parseFloat","secLastChar","uploadEventHandler","rawFile","validationErrors","reader_1","FileReader","onload","ev","EnableImagePreview","src","readAsDataURL","additional","UploadMetaData","str","e1AccessToken","onRemove","myFile","selectEventHandler","reader","fileData","Compression","compress","compressFile","run","toFixed","clearFiles","uploadComponent","CompressImageService","NgZone","ZworkflowbuttonsComponent","isLocalHostAPI","loadButton","resultData","me_1","ZComponentService","mapByName","_name","zbullet","zbuttons","zcard","zchart","checkbox","zchip","textareajson","textareahtml","zdate","zdatetime","zshortdate","zuidatetime","zuitime","zdiv","zgauge","zimg","zkcard","zlabel","zmfb","znumeric","post_select_input","pre_select_input","zphone_countrycode","zquerybuilder","zreport","zcalendar","zuiselectmultiple","zuiselectmultiple_button","select","ztab","number","numeric","email","password","tel","currency","textarea","ztexteditor","ztree","ktree_list","ztrendcard","unknown","zudf","zupload","zworkflowbuttons","isSkipComponentType","componentType","loadComponent","componentFactoryResolver","fieldElement","componentFactory","componentName","resolveComponentFactory","componentRef","createComponent","instance","appendComponentToDynamicForm","injector","appRef","containerId","attachView","hostView","domElem","rootNodes","ZformcontrolComponent","zcomponentService","ComponentFactoryResolver","FieldElementDirective","NgModule","declarations","ZGridPopupAnchorDirective","imports","IonicModule","IonicSelectableModule","CommonModule","RouterModule","FormsModule","ReactiveFormsModule","AceEditorModule","FontAwesomeModule","QueryBuilderModule","ArcGaugeModule","ButtonsModule","ChartsModule","CalendarModule","DateInputsModule","DropDownsModule","EditorModule","GridModule","ExcelModule","IndicatorsModule","IntlModule","InputsModule","SwitchModule","TextBoxModule","LabelModule","LayoutModule","PanelBarModule","TabStripModule","PopupModule","ProgressBarModule","TelerikReportingModule","SchedulerModule","TreeListModule","TreeViewModule","TooltipModule","UploadModule","UploadsModule","ZCoreModule","MmhglobalZmodalModule","exports","entryComponents","providers","schemas","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACAgzB,GACA5xB,GACAwC,GACA8I,GACAwB,GACAwB,GACAE,GACAr7B,EACAiC,EACA+5B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEF+E,QAAS,CACPC,EAAAA,YACAC,EAAAA,sBACAC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,gBACAC,EAAAA,kBACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,aACAC,EAAAA,eACAC,EAAAA,iBACAC,EAAAA,gBACAC,EAAAA,aACAC,EAAAA,WACAC,EAAAA,YACAC,EAAAA,iBACAC,EAAAA,WACAC,EAAAA,aACAC,EAAAA,aACAC,EAAAA,cACAC,EAAAA,YACAC,EAAAA,aACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,YACAC,EAAAA,kBACAC,EAAAA,uBACAC,EAAAA,gBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,aACAC,EAAAA,cACAC,EAAAA,YACAC,EAAAA,uBAEFC,QAAS,CACPl5C,EACAu2C,GACAx1C,GACA21C,GACAruC,GACAO,GACAK,GACAK,GACAE,GACAmC,GACAE,GACAgB,GACA2B,GACAa,GACAvB,GACAyB,GACAI,GACAK,GACAmB,GACAkE,GACAG,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACAgzB,GACA5xB,GACAwC,GACA8I,GACAwB,GACAwB,GACAE,GACAr7B,EACAiC,EACA+5B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEFuH,gBAAiB,CACfttC,GACAgB,GACA2B,GACAa,GACAvB,GACAyB,GACAI,GACAK,GACAmB,GACAkE,GACAG,GACAO,GACA2B,GACAM,GACAgD,GACA6B,GACAuB,GACAoB,GACAS,GACAkD,GACAC,GACAgzB,GACA5xB,GACAwC,GACA8I,GACAwB,GACAwB,GACAE,GACAr7B,EACAiC,EACA+5B,GACAe,GACAoE,GACA0D,GACAkB,GACA4B,GACAuC,GACA2B,GACAmB,GACAE,GACAG,GACA4D,GACAyC,GACAqB,GACApB,GACAqB,GACAiF,IAEFwH,UAAW,CACTr5C,EAAAA,cAEFs5C,QAAS,CAACC,EAAAA,29CzDqnBgBryD,GAC1B,IAAM6V,EAAe7V,EAAmB,YACpC6V,GACFA,EAAaC,UAEf9V,EAAMwV,aAAc","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/********** 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> \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> \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"]}
|