mmhglobal-dynamicform 1.1.20 → 1.1.21
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 +1 -1
- package/bundles/mmhglobal-dynamicform.umd.js +2 -1
- 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/zbuttons/zbuttons.component.js +3 -2
- package/fesm2015/mmhglobal-dynamicform.js +2 -1
- package/fesm2015/mmhglobal-dynamicform.js.map +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/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/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/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","enableHiding","gridColVisible","width","minWidth","cellFilter","filterCellFiltered","enableFiltering","enableSorting","enablePinning","pinnedLeft","pinnedRight","UpdateOnBlur","PlaceHolder","IsRequired","MinLength","MaxLength","Label","DivClass","ReadOnly","ShowLabel","Visible","AppendDivClearFix","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","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","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","NavController","CacheService","ModalService","ScrollbarThemeDirective","stylesheet","styleElmt","nativeElement","shadowRoot","querySelector","append","barStyle","document","createElement","appendChild","Directive","ElementRef","viewContainerRef","ViewContainerRef","ZGridBindingDirective","grid","webapiService","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","getSorting","getGrantType","setHiddenColumn","getDataBinding","ds","total","ExternalPagination","postApi","aggregateHandling","totalCount","notifyDataChange","_data","_totalCount","clearData","colFields","valueExpr","tmpGridColumn","columns","x","aggregateType","col","_aggregateValue","reduce","c","aggregateValue","aggregateResetValue","filters","Filters","element","val","actualVal","SortOrder","sortOrder","GrantType","grantType","pageChange","sortChange","sort","sortColumnNames","sortOrders","dir","find","filterChange","mapFilterOperator","operator","dataStateChange","_storageKey","e1Token","userName","_gridName","_arrGridCaching","get","_gridCaching","gridSettings","columnsConfig","a","orderIndex","gridSettingHiddenCol","values","DataBindingDirective","Inject","GridComponent","ZGridStatePersistingService","OpenOnFocusDirective","onFocus","openOnFocus","readonly","toggle","onBlur","HostListener","DateParserFilter","transform","items","Date","Pipe","pure","EditorFilter","source","jsonValue","safeStringify","cache","includes","DivzLayout","zlayout","ExportOptions","viewerToolTipOpening","ReportSource","ready","exportBegin","exportEnd","onRenderingEnd","viewerContainerStyle","isVisible","largeMenuBound","sideMenuBound","reportSource","hideOptions","update","hideUnwantedOptions","bindEvents","exportOption","sideMenu","$","children","largeMenu","smallMenu","hide","EnableExportPDF","EnableExportCSV","EnableExportExcel","EnableExportRTF","EnableExportTIFF","EnableExportMHTML","EnableExportXPS","each","hiddenOption","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","status","keydown","keyCode","documentClick","className","ToolbarService","UipageComponent","pageOnInit","projectName","rsData","paramMap","actName","formFieldName","getModel","pageDestroy","ActivatedRoute","UiheaderComponent","environment","getEnvironment","profileImgUrl","e1OauthUrl","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","ZBulletComponent","ListType","setupDataSource","getReadOnlyValue","readOnlyValue","getIon_InvalidClass","getClass","ZbuttonsComponent","FirstZbtn","expand","fc","controls","enable","disable","field$","Expand","buttonDisabled","icon","getIcon","visible","disabled","clickEvent","dismissType","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","useKendoSwitch","UseKendoSwitch","onSwitchChange","OnChange","onChange","getLabelStyle","order","LabelOrder","LabelPosition","white-space","getCheckboxClass","classList","LabelDivClass","divClassSegment","parseInt","Class","ZChipComponent","selectedIcon","Selected","SelectedIcon","_Icon","_Selected","getChipClass","chip","chipListChangeSelection","selectedChipIndexes","ind","this_1","_c","chipChangeSelection","selectedItem","getDataValue","mouseover","OnHover","IsShowTooTip","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","ZgaugeComponent","majorTicks","minorTicks","startAngle","endAngle","minValue","maxValue","scaleMax","colors","transitions","reverse","rangePlaceholderColor","labelsColor","rangeFrom","rangeTo","rangeColor","rangeLineCap","showLabels","rangeSize","MinValue","MaxValue","Color","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","Subject","gridData","ShowRecordNumber","GridNo","createFormControls","allResults","refreshData","saveGridSettings","restoreGridSettings","pageSizes","PageSizes","SelectOptions","selectableSettings","getGridHeight","isSelectOption","checkboxOnly","editModel","EditClickURL","process","getGridData","getFormControl","rowIndex","property","inlineEditedFormGroups","at","isEditableInGrid","FormArray","formGroup","onBtnClick","colSetting","cellData","onNavigateTo","cellClickHandler","DisableCellClickHandler","InCellEditable","editableColumns","isEditableInDataItem","sender","editCell","columnIndex","createFormGroup","func","editCellCloseHandler","clickAction","Click","stopPropagation","nodeName","offsetWidth","scrollWidth","setColumns","columnName","wrapColumnNamesInFieldElement","columnList","isHidden","Hidden","IsEditableInGrid","Editable","rowSelectionKey","context","getSeletectedValues","_gridOption","_zgridControl","columnsOrderChanged","_columns","configValue","toArray","propName","acc","curr","_gridConfig","dataFormFields","postGridSetting","_gridIndex","findIndex","remove","_deleteCookieStoreURL","_deleteCookieStoreValue","containName","_cookieStoreURL","_cookieStoreValue","ngClass","fieldType","getInlineField","getInlineForm","getFormat","defaultFormat","format","FormatOptions","formatArr","dp","setHeaderText","newHeaderTitle","inCellCheckBoxOnChange","column","isChecked","detail","checked","setGridIsLoading","triggered","filterable","sortable","locked","stateExist","userGridState","originalGridState","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","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","ZreportComponent","height","IsAutoGenerateReport","generateReport","rs","viewer","setReportSource","refreshReport","on","encapsulation","ViewEncapsulation","None","ZschedulerComponent","changeDetector","selectedDate","selectedViewIndex","getEventStyles","BGColor","BorderColor","backgroundColor","bordercolor","getSlotClass","resources","getItems","ngAfterViewInit","onDateChange","dateRange","CalendarOptions","detectChanges","onSlotDblClick","isAllDay","selectedView","onEventDblClick","ChangeDetectorRef","ZselectmultipleComponent","allowCustomValue","autoClose","AutoClose","iconList","ClickableIcons","Tooltip","Position","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","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","mapInputType","mapInputMode","ZtextareaComponent","onClick","ZtexteditorComponent","getCompStyle","getCompHeight","ZtreeComponent","isNodeDrop","nodeCounter","clickActName","expandedkeys","isExpanded","expandAllNode","TreeviewExpandAll","k","handleCollapse","handleExpand","getTemplate","convertToTreeItems","toTreeItems","pendingItems","ParentId","parentItem","onSelectionChange","targetName","OnAddNode","OnRemoveNode","onEditNode","OnEditNode","handleNodeDrop","Draggable","dropHandler","OnDrop","setValid","handleNodeDragEnd","updateChangeToDataSet","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","ZunknownComponent","ZuploadComponent","compressImage","ngZone","uploadAttachmentUrl","uploadSaveUrl","uploadRemoveUrl","downloadFileUrl","getImageUrl","isAutoUpload","isMultiple","imagePreviews","uid","showFileList","restrictions","allowedExtensions","chunkSettings","size","maxAutoRetries","AutoUpload","AllowRemove","onSuccess","operation","response","HttpEventType","Sent","UploadProgress","file","files","existingFileIndex","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","headers","e1AccessToken","onRemove","myFile","selectEventHandler","Compression","compress","compressFile","run","toFixed","CompressImageService","NgZone","ZworkflowbuttonsComponent","isLocalHostAPI","loadButton","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","zreport","zcalendar","zuiselectmultiple","zuiselectmultiple_button","select","ztab","number","numeric","email","password","search","tel","currency","textarea","ztexteditor","ztree","ktree_list","ztrendcard","unknown","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","imports","IonicModule","IonicSelectableModule","CommonModule","RouterModule","FormsModule","ReactiveFormsModule","AceEditorModule","FontAwesomeModule","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","ZCoreModule","MmhglobalZmodalModule","exports","entryComponents","providers","schemas","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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,EAAAA,aACAC,EAAAA,YACAC,EAAAA,uBAEFC,QAAS,CACPpsC,EACA4pC,EACA7oC,GACAuG,GACAO,GACAM,GACAM,GACAE,GACAgC,GACAE,GACAgB,GACA4B,GACAe,GACAzB,GACA2B,GACAI,GACAK,GACAmB,GACAkE,GACAE,GACAO,GACAuB,GACAM,GACAgD,GACAiB,GACAwB,GACAoB,GACAS,GACAkD,GACAC,GACAkoB,GACA/mB,GACAyC,GACAkH,GACAwB,GACAuB,GACAE,GACA92B,EACAiC,EACAw1B,GACAe,GACAoE,GACAY,GACAsB,GACA8B,GACA2B,GACAG,GACAE,GACAG,GACAyC,GACAyC,GACAC,GACAC,GACAwE,IAEFkH,gBAAiB,CACfxhC,GACAgB,GACA4B,GACAe,GACAzB,GACA2B,GACAI,GACAK,GACAmB,GACAkE,GACAE,GACAO,GACAuB,GACAM,GACAgD,GACAiB,GACAwB,GACAoB,GACAS,GACAkD,GACAC,GACAkoB,GACA/mB,GACAyC,GACAkH,GACAwB,GACAuB,GACAE,GACA92B,EACAiC,EACAw1B,GACAe,GACAoE,GACAY,GACAsB,GACA8B,GACA2B,GACAG,GACAE,GACAG,GACAyC,GACAyC,GACAC,GACAC,GACAwE,IAEFmH,UAAW,CACTvsC,EAAAA,cAEFwsC,QAAS,CAACC,EAAAA,44CtD+iBgBjlD,GAC1B,IAAMiW,EAAejW,EAAmB,YACpCiW,GACFA,EAAaC,UAEflW,EAAM4V,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 null,\r\n null\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 null,\r\n null\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 enableHiding: true,\r\n gridColVisible: true,\r\n width: 150,\r\n minWidth: 100,\r\n cellFilter: \"\",\r\n filterCellFiltered: false,\r\n enableFiltering: true,\r\n enableSorting: true,\r\n enablePinning: true,\r\n pinnedLeft: false,\r\n pinnedRight: false,\r\n UpdateOnBlur: true,\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 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, \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 ) {\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\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 }\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 }\r\n else {\r\n group['isTriggered'] = false;\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 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 const fg = group.form as FormGroup;\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 let createModelres = null;\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 const fg = group.form as FormGroup;\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 group.isTriggered = false;\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 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 }\r\n\r\n private deleteModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n const fg = group.form as FormGroup;\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);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\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 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\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 { Subscription, Observable, Subject, of } from \"rxjs\";\r\nimport { tap, delay } 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\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\r\n\r\n // get state(): State {\r\n // return this.zgridbinding.state;\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 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 // this.getData();\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 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 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.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 )\r\n .subscribe(() => {\r\n this.getDataBinding();\r\n });\r\n }\r\n\r\n 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.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.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.grid.loading = false;\r\n }\r\n }\r\n\r\n clearData(): void {\r\n this.grid.data = { data: [], total: 0 };\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 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 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 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 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 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 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 this.getDataBinding();\r\n }\r\n\r\n 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 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;\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 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","/********** 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\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","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}\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 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 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 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 (!this.data['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 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\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 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.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","/********** 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.IsShowTooTip) {\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 === \"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 // 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 } 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 } from \"rxjs/operators\";\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { 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 { 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,\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\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\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\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 ) {\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 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 if (this.data.PageSizes === false || ZComponentHelper.isMobileScreen()) {\r\n this.pageSizes = false;\r\n }\r\n\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 if (this.data.Value.startsWith('group.')) {\r\n const v = this.data.Value.slice(6);\r\n this.group[v] = this;\r\n }\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\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 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 });\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 isSelectOption() {\r\n let v = 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 v = true;\r\n }\r\n return v;\r\n\r\n }\r\n\r\n private getGridHeight() {\r\n\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 250) ? 250 : h;\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 }\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 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 getGridData() {\r\n return this.gData;\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 return formArray.at(rowIndex).get(property);\r\n }\r\n\r\n private createFormControls() {\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 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 // set params(value: ZGridPostApiParams) {\r\n // this._params = value;\r\n // }\r\n\r\n // get params() {\r\n // return this._params;\r\n // }\r\n\r\n // set state(value: State) {\r\n // this._state = value;\r\n // }\r\n\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n 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 filterChange(event: any): void {\r\n if (this.zgrid) {\r\n this.zgrid.filterChange(event);\r\n }\r\n }\r\n\r\n pageChange(event: PageChangeEvent): void {\r\n if (this.zgrid) {\r\n this.zgrid.pageChange(event);\r\n }\r\n }\r\n\r\n sortChange(sort: SortDescriptor[]): void {\r\n if (this.zgrid) {\r\n this.zgrid.sortChange(sort);\r\n }\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(this.data.Value, 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 onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n this.onNavigateTo(event, colSetting, rowData, cellData);\r\n }\r\n\r\n cellClickHandler(event: CellClickEvent) {\r\n const disableCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n\r\n if (!disableCellClickHandler) {\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 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 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 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 if (\r\n (element.nodeName === 'TD' || element.nodeName === 'TH') &&\r\n element.offsetWidth < element.scrollWidth) {\r\n this.tooltipDir.toggle(element);\r\n } else {\r\n this.tooltipDir.hide();\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.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 this.createFormControls();\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 columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.data.ColumnFields,\r\n this.group\r\n );\r\n return columnFields$.pipe(\r\n tap(data => {\r\n const fieldName = this.data['FieldElementName'];\r\n this.columns = [];\r\n ZComponentHelper.getGridColumns(data, this.columns, this.group, this.authService, fieldName, null, null, this.data);\r\n })\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 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 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 saveGridSettings(): void {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.Value;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _columns = _zgridComponent.columns;\r\n\r\n // Keep existing grid column setting\r\n this.zGridStatePersistingService.set(_gridName, this.columns);\r\n\r\n\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(_storageKey);\r\n let _gridConfig: GridCaching = null;\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n _gridConfig = _arrGridCaching.find(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridConfig) {\r\n _gridConfig.gridSettings = gridSetting;\r\n }\r\n } else {\r\n _arrGridCaching = [];\r\n }\r\n\r\n if (!_gridConfig) {\r\n _gridConfig = {\r\n dataFormFields: _gridName,\r\n gridSettings: gridSetting\r\n };\r\n\r\n _arrGridCaching.push(_gridConfig);\r\n }\r\n\r\n // Save grid caching to localstorage\r\n this.zGridStatePersistingService.set(_storageKey, _arrGridCaching);\r\n\r\n // Save grid caching to database\r\n this.postGridSetting(_storageKey, _arrGridCaching);\r\n\r\n // Alert\r\n this.toastService.show('Grid Setting Saved', \"top\", true, 2000, 'success');\r\n }\r\n\r\n restoreGridSettings() {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.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 _gridIndex = _arrGridCaching.findIndex(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridIndex != null) {\r\n _arrGridCaching.splice(_gridIndex, 1);\r\n if (_arrGridCaching[0]) {\r\n this.zGridStatePersistingService.set(_storageKey, _arrGridCaching);\r\n\r\n // Save grid caching to database\r\n this.postGridSetting(_storageKey, _arrGridCaching);\r\n } else {\r\n // Remove since no value\r\n this.zGridStatePersistingService.remove(_storageKey);\r\n\r\n const _deleteCookieStoreURL = this.oauthUrl + \"Admin/DeleteMultipleCookies\";\r\n const _deleteCookieStoreValue = { 'containName': _storageKey };\r\n this.webApiService.httpPost$(_deleteCookieStoreURL, _deleteCookieStoreValue).subscribe();\r\n }\r\n\r\n // Use original column setting\r\n this.columns = this.zGridStatePersistingService.get(_gridName);\r\n\r\n // Clear original column setting\r\n this.zGridStatePersistingService.remove(_gridName);\r\n\r\n // Alert\r\n this.toastService.show('Grid Setting Restored', \"top\", true, 2000, 'success');\r\n }\r\n }\r\n }\r\n\r\n private postGridSetting(_storageKey: string, _arrGridCaching: any) {\r\n const _cookieStoreURL = this.oauthUrl + \"api/CookieStores\";\r\n const _cookieStoreValue = {\r\n 'Name': _storageKey,\r\n 'Value': JSON.stringify(_arrGridCaching)\r\n };\r\n\r\n this.webApiService.httpPost$(_cookieStoreURL, _cookieStoreValue).subscribe(res => {\r\n if (res.status === \"success\") {\r\n console.log(\"grid config saved: \", res);\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 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 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 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 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 setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\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['enablePinning'] == true) {\r\n if (colSetting['pinnedLeft'] == true) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public stateExist() { \r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.Value;\r\n\r\n const userGridState = this.zGridStatePersistingService.get(_storageKey);\r\n const originalGridState = this.zGridStatePersistingService.get(_gridName);\r\n\r\n if (userGridState || originalGridState) {\r\n return true;\r\n }\r\n\r\n return false;\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, 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 ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(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\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 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","import { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties\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(private changeDetector: ChangeDetectorRef) { }\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 this.getItems();\r\n\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 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\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 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 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/********** 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,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams, zSelectMultipleParams,\r\n ZGroup, ZField, ZComponentProperties \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 @ViewChild(\"selectComponent\") selectComponent: IonicSelectableComponent;\r\n\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 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 // [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 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 isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\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\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\r\n componentProperties = new ZComponentProperties();\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 // 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\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\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n onChange(event: any) {\r\n // console.log('ztext.component - onChange: ', event.target.value);\r\n ZComponentHelper.setModelValue(this.data.Value, 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 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 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 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\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 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\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\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 // 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\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 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 if (this.data.TreeviewExpandAll){\r\n this.expandAll()\r\n }\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\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 expandAll = () => {\r\n const node = this.getItems();\r\n this.expandAllNode(node, '');\r\n console.log(this.state.expandedkeys);\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\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\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\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\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 { 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 } 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} 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\n\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\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\r\n public restrictions: FileRestrictions = {\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 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 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 selectEventHandler(e: SelectEvent) {\r\n const me = this;\r\n\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 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\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 { map } 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 // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(this.isLocalHostAPI)\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 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\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 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 { 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 { 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 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 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\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 } 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 { 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 { 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 { 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 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 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 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 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 ZCoreModule,\r\n MmhglobalZmodalModule\r\n ],\r\n exports: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\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 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 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 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 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/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/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/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","enableHiding","gridColVisible","width","minWidth","cellFilter","filterCellFiltered","enableFiltering","enableSorting","enablePinning","pinnedLeft","pinnedRight","UpdateOnBlur","PlaceHolder","IsRequired","MinLength","MaxLength","Label","DivClass","ReadOnly","ShowLabel","Visible","AppendDivClearFix","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","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","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","NavController","CacheService","ModalService","ScrollbarThemeDirective","stylesheet","styleElmt","nativeElement","shadowRoot","querySelector","append","barStyle","document","createElement","appendChild","Directive","ElementRef","viewContainerRef","ViewContainerRef","ZGridBindingDirective","grid","webapiService","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","getSorting","getGrantType","setHiddenColumn","getDataBinding","ds","total","ExternalPagination","postApi","aggregateHandling","totalCount","notifyDataChange","_data","_totalCount","clearData","colFields","valueExpr","tmpGridColumn","columns","x","aggregateType","col","_aggregateValue","reduce","c","aggregateValue","aggregateResetValue","filters","Filters","element","val","actualVal","SortOrder","sortOrder","GrantType","grantType","pageChange","sortChange","sort","sortColumnNames","sortOrders","dir","find","filterChange","mapFilterOperator","operator","dataStateChange","_storageKey","e1Token","userName","_gridName","_arrGridCaching","get","_gridCaching","gridSettings","columnsConfig","a","orderIndex","gridSettingHiddenCol","values","DataBindingDirective","Inject","GridComponent","ZGridStatePersistingService","OpenOnFocusDirective","onFocus","openOnFocus","readonly","toggle","onBlur","HostListener","DateParserFilter","transform","items","Date","Pipe","pure","EditorFilter","source","jsonValue","safeStringify","cache","includes","DivzLayout","zlayout","ExportOptions","viewerToolTipOpening","ReportSource","ready","exportBegin","exportEnd","onRenderingEnd","viewerContainerStyle","isVisible","largeMenuBound","sideMenuBound","reportSource","hideOptions","update","hideUnwantedOptions","bindEvents","exportOption","sideMenu","$","children","largeMenu","smallMenu","hide","EnableExportPDF","EnableExportCSV","EnableExportExcel","EnableExportRTF","EnableExportTIFF","EnableExportMHTML","EnableExportXPS","each","hiddenOption","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","status","keydown","keyCode","documentClick","className","ToolbarService","UipageComponent","pageOnInit","projectName","rsData","paramMap","actName","formFieldName","getModel","pageDestroy","ActivatedRoute","UiheaderComponent","environment","getEnvironment","profileImgUrl","e1OauthUrl","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","ZBulletComponent","ListType","setupDataSource","getReadOnlyValue","readOnlyValue","getIon_InvalidClass","getClass","ZbuttonsComponent","FirstZbtn","expand","fc","controls","enable","disable","field$","Expand","buttonDisabled","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","useKendoSwitch","UseKendoSwitch","onSwitchChange","OnChange","onChange","getLabelStyle","order","LabelOrder","LabelPosition","white-space","getCheckboxClass","classList","LabelDivClass","divClassSegment","parseInt","Class","ZChipComponent","selectedIcon","Selected","SelectedIcon","_Icon","_Selected","getChipClass","chip","chipListChangeSelection","selectedChipIndexes","ind","this_1","_c","chipChangeSelection","selectedItem","getDataValue","mouseover","OnHover","IsShowTooTip","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","ZgaugeComponent","majorTicks","minorTicks","startAngle","endAngle","minValue","maxValue","scaleMax","colors","transitions","reverse","rangePlaceholderColor","labelsColor","rangeFrom","rangeTo","rangeColor","rangeLineCap","showLabels","rangeSize","MinValue","MaxValue","Color","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","Subject","gridData","ShowRecordNumber","GridNo","createFormControls","allResults","refreshData","saveGridSettings","restoreGridSettings","pageSizes","PageSizes","SelectOptions","selectableSettings","getGridHeight","isSelectOption","checkboxOnly","editModel","EditClickURL","process","getGridData","getFormControl","rowIndex","property","inlineEditedFormGroups","at","isEditableInGrid","FormArray","formGroup","onBtnClick","colSetting","cellData","onNavigateTo","cellClickHandler","DisableCellClickHandler","InCellEditable","editableColumns","isEditableInDataItem","sender","editCell","columnIndex","createFormGroup","func","editCellCloseHandler","clickAction","Click","stopPropagation","nodeName","offsetWidth","scrollWidth","setColumns","columnName","wrapColumnNamesInFieldElement","columnList","isHidden","Hidden","IsEditableInGrid","Editable","rowSelectionKey","context","getSeletectedValues","_gridOption","_zgridControl","columnsOrderChanged","_columns","configValue","toArray","propName","acc","curr","_gridConfig","dataFormFields","postGridSetting","_gridIndex","findIndex","remove","_deleteCookieStoreURL","_deleteCookieStoreValue","containName","_cookieStoreURL","_cookieStoreValue","ngClass","fieldType","getInlineField","getInlineForm","getFormat","defaultFormat","format","FormatOptions","formatArr","dp","setHeaderText","newHeaderTitle","inCellCheckBoxOnChange","column","isChecked","detail","checked","setGridIsLoading","triggered","filterable","sortable","locked","stateExist","userGridState","originalGridState","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","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","ZreportComponent","height","IsAutoGenerateReport","generateReport","rs","viewer","setReportSource","refreshReport","on","encapsulation","ViewEncapsulation","None","ZschedulerComponent","changeDetector","selectedDate","selectedViewIndex","getEventStyles","BGColor","BorderColor","backgroundColor","bordercolor","getSlotClass","resources","getItems","ngAfterViewInit","onDateChange","dateRange","CalendarOptions","detectChanges","onSlotDblClick","isAllDay","selectedView","onEventDblClick","ChangeDetectorRef","ZselectmultipleComponent","allowCustomValue","autoClose","AutoClose","iconList","ClickableIcons","Tooltip","Position","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","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","mapInputType","mapInputMode","ZtextareaComponent","onClick","ZtexteditorComponent","getCompStyle","getCompHeight","ZtreeComponent","isNodeDrop","nodeCounter","clickActName","expandedkeys","isExpanded","expandAllNode","TreeviewExpandAll","k","handleCollapse","handleExpand","getTemplate","convertToTreeItems","toTreeItems","pendingItems","ParentId","parentItem","onSelectionChange","targetName","OnAddNode","OnRemoveNode","onEditNode","OnEditNode","handleNodeDrop","Draggable","dropHandler","OnDrop","setValid","handleNodeDragEnd","updateChangeToDataSet","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","ZunknownComponent","ZuploadComponent","compressImage","ngZone","uploadAttachmentUrl","uploadSaveUrl","uploadRemoveUrl","downloadFileUrl","getImageUrl","isAutoUpload","isMultiple","imagePreviews","uid","showFileList","restrictions","allowedExtensions","chunkSettings","size","maxAutoRetries","AutoUpload","AllowRemove","onSuccess","operation","response","HttpEventType","Sent","UploadProgress","file","files","existingFileIndex","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","headers","e1AccessToken","onRemove","myFile","selectEventHandler","Compression","compress","compressFile","run","toFixed","CompressImageService","NgZone","ZworkflowbuttonsComponent","isLocalHostAPI","loadButton","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","zreport","zcalendar","zuiselectmultiple","zuiselectmultiple_button","select","ztab","number","numeric","email","password","search","tel","currency","textarea","ztexteditor","ztree","ktree_list","ztrendcard","unknown","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","imports","IonicModule","IonicSelectableModule","CommonModule","RouterModule","FormsModule","ReactiveFormsModule","AceEditorModule","FontAwesomeModule","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","ZCoreModule","MmhglobalZmodalModule","exports","entryComponents","providers","schemas","CUSTOM_ELEMENTS_SCHEMA"],"mappings":"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AAA,eACAC,EAAAA,cACAC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,uBAEFC,QAAS,CACPtsC,EACA8pC,EACA/oC,GACAuG,GACAO,GACAM,GACAM,GACAE,GACAgC,GACAE,GACAgB,GACA4B,GACAe,GACAzB,GACA2B,GACAI,GACAK,GACAmB,GACAkE,GACAE,GACAO,GACAyB,GACAM,GACAgD,GACAiB,GACAwB,GACAoB,GACAS,GACAkD,GACAC,GACAkoB,GACA/mB,GACAyC,GACAkH,GACAwB,GACAuB,GACAE,GACAh3B,EACAiC,EACA01B,GACAe,GACAoE,GACAY,GACAsB,GACA8B,GACA2B,GACAG,GACAE,GACAG,GACAyC,GACAyC,GACAC,GACAC,GACAwE,IAEFkH,gBAAiB,CACf1hC,GACAgB,GACA4B,GACAe,GACAzB,GACA2B,GACAI,GACAK,GACAmB,GACAkE,GACAE,GACAO,GACAyB,GACAM,GACAgD,GACAiB,GACAwB,GACAoB,GACAS,GACAkD,GACAC,GACAkoB,GACA/mB,GACAyC,GACAkH,GACAwB,GACAuB,GACAE,GACAh3B,EACAiC,EACA01B,GACAe,GACAoE,GACAY,GACAsB,GACA8B,GACA2B,GACAG,GACAE,GACAG,GACAyC,GACAyC,GACAC,GACAC,GACAwE,IAEFmH,UAAW,CACTzsC,EAAAA,cAEF0sC,QAAS,CAACC,EAAAA,44CtD+iBgBnlD,GAC1B,IAAMiW,EAAejW,EAAmB,YACpCiW,GACFA,EAAaC,UAEflW,EAAM4V,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 null,\r\n null\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 null,\r\n null\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 enableHiding: true,\r\n gridColVisible: true,\r\n width: 150,\r\n minWidth: 100,\r\n cellFilter: \"\",\r\n filterCellFiltered: false,\r\n enableFiltering: true,\r\n enableSorting: true,\r\n enablePinning: true,\r\n pinnedLeft: false,\r\n pinnedRight: false,\r\n UpdateOnBlur: true,\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 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, \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 ) {\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\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 }\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 }\r\n else {\r\n group['isTriggered'] = false;\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 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 const fg = group.form as FormGroup;\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 let createModelres = null;\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 const fg = group.form as FormGroup;\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 group.isTriggered = false;\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 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 }\r\n\r\n private deleteModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n const fg = group.form as FormGroup;\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);\r\n // console.warn(\"Form Validation got error(s):\", errors);\r\n // return;\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 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\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 { Subscription, Observable, Subject, of } from \"rxjs\";\r\nimport { tap, delay } 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\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\r\n\r\n // get state(): State {\r\n // return this.zgridbinding.state;\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 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 // this.getData();\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 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 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.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 )\r\n .subscribe(() => {\r\n this.getDataBinding();\r\n });\r\n }\r\n\r\n 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.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.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.grid.loading = false;\r\n }\r\n }\r\n\r\n clearData(): void {\r\n this.grid.data = { data: [], total: 0 };\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 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 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 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 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 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 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 this.getDataBinding();\r\n }\r\n\r\n 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 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;\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 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","/********** 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\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","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}\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 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 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 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 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\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 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.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","/********** 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.IsShowTooTip) {\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 === \"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 // 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 } 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 } from \"rxjs/operators\";\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { 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 { 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,\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\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\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\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 ) {\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 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 if (this.data.PageSizes === false || ZComponentHelper.isMobileScreen()) {\r\n this.pageSizes = false;\r\n }\r\n\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 if (this.data.Value.startsWith('group.')) {\r\n const v = this.data.Value.slice(6);\r\n this.group[v] = this;\r\n }\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\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 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 });\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 isSelectOption() {\r\n let v = 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 v = true;\r\n }\r\n return v;\r\n\r\n }\r\n\r\n private getGridHeight() {\r\n\r\n const h = window.innerHeight - this.heightReduce;\r\n return (h < 250) ? 250 : h;\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 }\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 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 getGridData() {\r\n return this.gData;\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 return formArray.at(rowIndex).get(property);\r\n }\r\n\r\n private createFormControls() {\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 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 // set params(value: ZGridPostApiParams) {\r\n // this._params = value;\r\n // }\r\n\r\n // get params() {\r\n // return this._params;\r\n // }\r\n\r\n // set state(value: State) {\r\n // this._state = value;\r\n // }\r\n\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n 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 filterChange(event: any): void {\r\n if (this.zgrid) {\r\n this.zgrid.filterChange(event);\r\n }\r\n }\r\n\r\n pageChange(event: PageChangeEvent): void {\r\n if (this.zgrid) {\r\n this.zgrid.pageChange(event);\r\n }\r\n }\r\n\r\n sortChange(sort: SortDescriptor[]): void {\r\n if (this.zgrid) {\r\n this.zgrid.sortChange(sort);\r\n }\r\n }\r\n\r\n getGroupValue(value: string, group: ZGroup) {\r\n return ZComponentHelper.getGroupValue(this.data.Value, 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 onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n this.onNavigateTo(event, colSetting, rowData, cellData);\r\n }\r\n\r\n cellClickHandler(event: CellClickEvent) {\r\n const disableCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n\r\n if (!disableCellClickHandler) {\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 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 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 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 if (\r\n (element.nodeName === 'TD' || element.nodeName === 'TH') &&\r\n element.offsetWidth < element.scrollWidth) {\r\n this.tooltipDir.toggle(element);\r\n } else {\r\n this.tooltipDir.hide();\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.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 this.createFormControls();\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 columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n this.data.ColumnFields,\r\n this.group\r\n );\r\n return columnFields$.pipe(\r\n tap(data => {\r\n const fieldName = this.data['FieldElementName'];\r\n this.columns = [];\r\n ZComponentHelper.getGridColumns(data, this.columns, this.group, this.authService, fieldName, null, null, this.data);\r\n })\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 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 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 saveGridSettings(): void {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.Value;\r\n const _zgridComponent = this.zgrid.grid as GridComponent;\r\n const _columns = _zgridComponent.columns;\r\n\r\n // Keep existing grid column setting\r\n this.zGridStatePersistingService.set(_gridName, this.columns);\r\n\r\n\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(_storageKey);\r\n let _gridConfig: GridCaching = null;\r\n if (_arrGridCaching && _arrGridCaching[0]) {\r\n _gridConfig = _arrGridCaching.find(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridConfig) {\r\n _gridConfig.gridSettings = gridSetting;\r\n }\r\n } else {\r\n _arrGridCaching = [];\r\n }\r\n\r\n if (!_gridConfig) {\r\n _gridConfig = {\r\n dataFormFields: _gridName,\r\n gridSettings: gridSetting\r\n };\r\n\r\n _arrGridCaching.push(_gridConfig);\r\n }\r\n\r\n // Save grid caching to localstorage\r\n this.zGridStatePersistingService.set(_storageKey, _arrGridCaching);\r\n\r\n // Save grid caching to database\r\n this.postGridSetting(_storageKey, _arrGridCaching);\r\n\r\n // Alert\r\n this.toastService.show('Grid Setting Saved', \"top\", true, 2000, 'success');\r\n }\r\n\r\n restoreGridSettings() {\r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.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 _gridIndex = _arrGridCaching.findIndex(x => x['dataFormFields'] === _gridName);\r\n\r\n if (_gridIndex != null) {\r\n _arrGridCaching.splice(_gridIndex, 1);\r\n if (_arrGridCaching[0]) {\r\n this.zGridStatePersistingService.set(_storageKey, _arrGridCaching);\r\n\r\n // Save grid caching to database\r\n this.postGridSetting(_storageKey, _arrGridCaching);\r\n } else {\r\n // Remove since no value\r\n this.zGridStatePersistingService.remove(_storageKey);\r\n\r\n const _deleteCookieStoreURL = this.oauthUrl + \"Admin/DeleteMultipleCookies\";\r\n const _deleteCookieStoreValue = { 'containName': _storageKey };\r\n this.webApiService.httpPost$(_deleteCookieStoreURL, _deleteCookieStoreValue).subscribe();\r\n }\r\n\r\n // Use original column setting\r\n this.columns = this.zGridStatePersistingService.get(_gridName);\r\n\r\n // Clear original column setting\r\n this.zGridStatePersistingService.remove(_gridName);\r\n\r\n // Alert\r\n this.toastService.show('Grid Setting Restored', \"top\", true, 2000, 'success');\r\n }\r\n }\r\n }\r\n\r\n private postGridSetting(_storageKey: string, _arrGridCaching: any) {\r\n const _cookieStoreURL = this.oauthUrl + \"api/CookieStores\";\r\n const _cookieStoreValue = {\r\n 'Name': _storageKey,\r\n 'Value': JSON.stringify(_arrGridCaching)\r\n };\r\n\r\n this.webApiService.httpPost$(_cookieStoreURL, _cookieStoreValue).subscribe(res => {\r\n if (res.status === \"success\") {\r\n console.log(\"grid config saved: \", res);\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 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 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 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 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 setGridIsLoading(triggered: boolean) {\r\n this.isLoading = triggered;\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['enablePinning'] == true) {\r\n if (colSetting['pinnedLeft'] == true) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public stateExist() { \r\n const _storageKey = 'ionic-field::' + this.authService.e1Token.userName;\r\n const _gridName = this.data.Name + '::' + this.data.Value;\r\n\r\n const userGridState = this.zGridStatePersistingService.get(_storageKey);\r\n const originalGridState = this.zGridStatePersistingService.get(_gridName);\r\n\r\n if (userGridState || originalGridState) {\r\n return true;\r\n }\r\n\r\n return false;\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, 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 ngOnInit() {\r\n ZComponentHelper.setComponentProperties(this);\r\n ZComponentHelper.registerComponent(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\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 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","import { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { \r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties\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(private changeDetector: ChangeDetectorRef) { }\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 this.getItems();\r\n\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 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\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 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 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/********** 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,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams, zSelectMultipleParams,\r\n ZGroup, ZField, ZComponentProperties \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 @ViewChild(\"selectComponent\") selectComponent: IonicSelectableComponent;\r\n\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 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 // [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 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 isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\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\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\r\n componentProperties = new ZComponentProperties();\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 // 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\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\r\n isMobileScreen() {\r\n const v = ZComponentHelper.isMobileScreen();\r\n return v;\r\n }\r\n\r\n onChange(event: any) {\r\n // console.log('ztext.component - onChange: ', event.target.value);\r\n ZComponentHelper.setModelValue(this.data.Value, 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 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 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 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\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 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\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\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 // 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\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 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 if (this.data.TreeviewExpandAll){\r\n this.expandAll()\r\n }\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\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 expandAll = () => {\r\n const node = this.getItems();\r\n this.expandAllNode(node, '');\r\n console.log(this.state.expandedkeys);\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\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\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\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\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 { 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 } 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} 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\n\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\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\r\n public restrictions: FileRestrictions = {\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 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 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 selectEventHandler(e: SelectEvent) {\r\n const me = this;\r\n\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 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\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 { map } 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 // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(this.isLocalHostAPI)\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 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\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 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 { 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 { 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 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 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\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 } 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 { 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 { 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 { 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 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 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 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 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 ZCoreModule,\r\n MmhglobalZmodalModule\r\n ],\r\n exports: [\r\n ScrollbarThemeDirective,\r\n FieldElementDirective,\r\n ZGridBindingDirective,\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 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 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 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 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"]}
|