mmhglobal-dynamicform 1.2.3 → 1.3.2
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 +14 -2
- package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
- package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
- package/esm2020/lib/services/main.service.mjs +752 -0
- package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
- package/esm2020/lib/services/zcomponent.service.mjs +81 -0
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
- package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
- package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
- package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
- package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
- package/esm2020/lib/zcard/zcard.component.mjs +72 -0
- package/esm2020/lib/zchart/zchart.component.mjs +201 -0
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
- package/esm2020/lib/zchip/zchip.component.mjs +121 -0
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
- package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
- package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
- package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
- package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
- package/esm2020/lib/zform/zform.component.mjs +147 -0
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
- package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
- package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
- package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
- package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
- package/esm2020/lib/zimg/zimg.component.mjs +121 -0
- package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
- package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
- package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
- package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
- package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
- package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
- package/esm2020/lib/zreport/zreport.component.mjs +105 -0
- package/esm2020/lib/zreport/zreport.config.mjs +117 -0
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
- package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
- package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
- package/esm2020/lib/ztab/ztab.component.mjs +187 -0
- package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
- package/esm2020/lib/ztext/ztext.component.mjs +297 -0
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
- package/esm2020/lib/ztree/ztree.component.mjs +380 -0
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
- package/esm2020/lib/zudf/zudf.component.mjs +205 -0
- package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
- package/esm2020/lib/zupload/zupload.component.mjs +359 -0
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
- package/esm2020/mmhglobal-dynamicform.mjs +5 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
- package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
- package/lib/directives/fieldelement.directive.d.ts +3 -0
- package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
- package/lib/services/main.service.d.ts +3 -0
- package/lib/services/zcomponent.debug.service.d.ts +8 -5
- package/lib/services/zcomponent.service.d.ts +7 -2
- package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
- package/lib/uicontent/uicontent.component.d.ts +3 -0
- package/lib/uiheader/uiheader.component.d.ts +3 -0
- package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
- package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
- package/lib/uipage/uipage.component.d.ts +3 -0
- package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
- package/lib/zbullet/zbullet.component.d.ts +3 -0
- package/lib/zbuttons/zbuttons.component.d.ts +3 -0
- package/lib/zcard/zcard.component.d.ts +3 -0
- package/lib/zchart/zchart.component.d.ts +3 -0
- package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
- package/lib/zchip/zchip.component.d.ts +3 -0
- package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
- package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
- package/lib/zdaterange/zdaterange.component.d.ts +3 -0
- package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
- package/lib/zdatetime/zdatetime.component.d.ts +3 -0
- package/lib/zdiv/zdiv.component.d.ts +3 -0
- package/lib/zdiv/zdiv.pipe.d.ts +3 -0
- package/lib/zform/zform.component.d.ts +3 -0
- package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
- package/lib/zgauge/zgauge.component.d.ts +3 -0
- package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
- package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
- package/lib/zgrid/zgrid.component.d.ts +4 -1
- package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
- package/lib/zimg/zimg.component.d.ts +3 -0
- package/lib/zkcard/zkcard.component.d.ts +3 -0
- package/lib/zlabel/zlabel.component.d.ts +3 -0
- package/lib/zmfb/zmfb.component.d.ts +3 -0
- package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
- package/lib/zmodal/zmodal.component.d.ts +3 -0
- package/lib/znumeric/znumeric.component.d.ts +3 -0
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
- package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
- package/lib/zreport/zreport.component.d.ts +3 -0
- package/lib/zreport/zreport.config.d.ts +3 -0
- package/lib/zscheduler/zscheduler.component.d.ts +3 -0
- package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
- package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
- package/lib/ztab/ztab.component.d.ts +3 -0
- package/lib/ztab/ztab.pipe.d.ts +3 -0
- package/lib/ztext/ztext.component.d.ts +3 -0
- package/lib/ztextarea/ztextarea.component.d.ts +3 -0
- package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
- package/lib/ztree/ztree.component.d.ts +3 -0
- package/lib/ztreelist/ztreelist.component.d.ts +3 -0
- package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
- package/lib/zudf/zudf.component.d.ts +3 -0
- package/lib/zunknown/zunknown.component.d.ts +3 -0
- package/lib/zupload/zupload.component.d.ts +3 -0
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
- package/mmhglobal-dynamicform.d.ts +1 -2
- package/package.json +20 -11
- package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
- package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
- package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
- package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
- package/esm2015/lib/directives/fieldelement.directive.js +0 -15
- package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
- package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
- package/esm2015/lib/services/main.service.js +0 -766
- package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
- package/esm2015/lib/services/zcomponent.service.js +0 -167
- package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
- package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
- package/esm2015/lib/uicontent/uicontent.component.js +0 -41
- package/esm2015/lib/uiheader/uiheader.component.js +0 -65
- package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
- package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
- package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
- package/esm2015/lib/zbullet/zbullet.component.js +0 -71
- package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
- package/esm2015/lib/zcard/zcard.component.js +0 -68
- package/esm2015/lib/zchart/zchart.component.js +0 -199
- package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
- package/esm2015/lib/zchip/zchip.component.js +0 -117
- package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
- package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
- package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
- package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
- package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
- package/esm2015/lib/zdiv/zdiv.component.js +0 -48
- package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
- package/esm2015/lib/zform/zform.component.js +0 -148
- package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
- package/esm2015/lib/zgauge/zgauge.component.js +0 -146
- package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
- package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
- package/esm2015/lib/zgrid/zgrid.component.js +0 -834
- package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
- package/esm2015/lib/zimg/zimg.component.js +0 -123
- package/esm2015/lib/zkcard/zkcard.component.js +0 -372
- package/esm2015/lib/zlabel/zlabel.component.js +0 -59
- package/esm2015/lib/zmfb/zmfb.component.js +0 -215
- package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
- package/esm2015/lib/zmodal/zmodal.component.js +0 -130
- package/esm2015/lib/znumeric/znumeric.component.js +0 -114
- package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
- package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
- package/esm2015/lib/zreport/zreport.component.js +0 -104
- package/esm2015/lib/zreport/zreport.config.js +0 -115
- package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
- package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
- package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
- package/esm2015/lib/ztab/ztab.component.js +0 -180
- package/esm2015/lib/ztab/ztab.pipe.js +0 -22
- package/esm2015/lib/ztext/ztext.component.js +0 -286
- package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
- package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
- package/esm2015/lib/ztree/ztree.component.js +0 -374
- package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
- package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
- package/esm2015/lib/zudf/zudf.component.js +0 -206
- package/esm2015/lib/zunknown/zunknown.component.js +0 -20
- package/esm2015/lib/zupload/zupload.component.js +0 -358
- package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
- package/esm2015/mmhglobal-dynamicform.js +0 -7
- package/fesm2015/mmhglobal-dynamicform.js +0 -10729
- package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
- package/mmhglobal-dynamicform.metadata.json +0 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
/********** Component & Service **********/
|
|
4
|
+
import { ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "mmhglobal-zcore";
|
|
7
|
+
import * as i2 from "@progress/kendo-angular-buttons";
|
|
8
|
+
import * as i3 from "@progress/kendo-angular-layout";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
export class ZmfbComponent {
|
|
11
|
+
constructor(fieldService, resourceApiService, workflowService) {
|
|
12
|
+
this.fieldService = fieldService;
|
|
13
|
+
this.resourceApiService = resourceApiService;
|
|
14
|
+
this.workflowService = workflowService;
|
|
15
|
+
this.componentProperties = new ZComponentProperties();
|
|
16
|
+
this.positionMode = 'fixed';
|
|
17
|
+
this.bottomEnd = { vertical: 'bottom', horizontal: 'end' };
|
|
18
|
+
this.items = [];
|
|
19
|
+
this.dialOpen = false;
|
|
20
|
+
this.isWorkflowButton = false;
|
|
21
|
+
this.buttonColor = 'info';
|
|
22
|
+
this.setVisible = (status) => {
|
|
23
|
+
this.componentProperties.isVisible = status;
|
|
24
|
+
this.data.Visible = status;
|
|
25
|
+
};
|
|
26
|
+
this.events = [];
|
|
27
|
+
/******************** zWorkflowButton ********************/
|
|
28
|
+
// URL required
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match
|
|
30
|
+
this.e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL("e1wfs_wfcGetWorkflowButtonURL");
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match
|
|
32
|
+
this.e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL("e1wfs_wfc_getWorkflowInitialStatusURL");
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match
|
|
34
|
+
this.e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL("e1wfs_wfc_getDocumentStatusURL");
|
|
35
|
+
}
|
|
36
|
+
/******************** Common function ********************/
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
ZComponentHelper.setComponentProperties(this);
|
|
39
|
+
ZComponentHelper.registerComponent(this);
|
|
40
|
+
this.data = this.getFirstzButton(this.group.fields);
|
|
41
|
+
if (this.data) {
|
|
42
|
+
if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {
|
|
43
|
+
// handle as zWorkflowButton
|
|
44
|
+
this.isWorkflowButton = true;
|
|
45
|
+
this.loadWorkflowButton();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const field$ = this.fieldService.getFormFieldCode(this.data.Value, "FormField", null, null);
|
|
49
|
+
try {
|
|
50
|
+
field$.subscribe(data => {
|
|
51
|
+
data.forEach((button) => {
|
|
52
|
+
const label = this.getButtonLabel(button);
|
|
53
|
+
const _isVisible = this.isBtnVisible(button.Visible);
|
|
54
|
+
if (_isVisible) {
|
|
55
|
+
this.items.push({
|
|
56
|
+
label: label,
|
|
57
|
+
icon: ZComponentHelper.getIcon(button.Icon),
|
|
58
|
+
'clickEvent': button.ClickEvent,
|
|
59
|
+
'click': (y) => {
|
|
60
|
+
this.buttonClick(button);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error("error: ", error);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
isMobileScreen() {
|
|
74
|
+
const v = ZComponentHelper.isMobileScreen();
|
|
75
|
+
return v;
|
|
76
|
+
}
|
|
77
|
+
isBtnVisible(fieldExpr) {
|
|
78
|
+
if (fieldExpr !== false && !fieldExpr) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);
|
|
82
|
+
return v;
|
|
83
|
+
}
|
|
84
|
+
/******************** zButton ********************/
|
|
85
|
+
getFirstzButton(data) {
|
|
86
|
+
// data.forEach(d => {
|
|
87
|
+
for (let i = 0; i < data.length - 1; i++) {
|
|
88
|
+
if (data[i].Type === "zbuttons" || data[i].Type === "zworkflowbuttons") {
|
|
89
|
+
return data[i];
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (Array.isArray(data[i].Value)) {
|
|
93
|
+
this.getFirstzButton(data[i].Value);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
getButtonLabel(button) {
|
|
100
|
+
let buttonLabel = button.Label;
|
|
101
|
+
if (!buttonLabel) {
|
|
102
|
+
buttonLabel = button.Name;
|
|
103
|
+
}
|
|
104
|
+
let labelExpr = buttonLabel.match(/^{{.*}}$/gi);
|
|
105
|
+
if (labelExpr) {
|
|
106
|
+
labelExpr = labelExpr[0].slice(2, -2);
|
|
107
|
+
const label = ZComponentHelper.getGroupValue(labelExpr, this.group);
|
|
108
|
+
return label;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return buttonLabel;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
buttonClick(button) {
|
|
115
|
+
this.group.subject.next({
|
|
116
|
+
type: "buttonClick",
|
|
117
|
+
target: button.ClickEvent,
|
|
118
|
+
data: null
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
onBlur() {
|
|
122
|
+
//console.log('blur');
|
|
123
|
+
}
|
|
124
|
+
onFocus() {
|
|
125
|
+
if (this.isWorkflowButton) {
|
|
126
|
+
this.loadWorkflowButton();
|
|
127
|
+
}
|
|
128
|
+
//console.log('focus');
|
|
129
|
+
}
|
|
130
|
+
onOpen(e) {
|
|
131
|
+
this.dialOpen = true;
|
|
132
|
+
console.log('open');
|
|
133
|
+
}
|
|
134
|
+
onClose(e) {
|
|
135
|
+
this.dialOpen = false;
|
|
136
|
+
console.log('close');
|
|
137
|
+
}
|
|
138
|
+
onDialItemClick(e) {
|
|
139
|
+
e.item.click();
|
|
140
|
+
}
|
|
141
|
+
loadWorkflowButton() {
|
|
142
|
+
// actionBtnList: Array<ZField>;
|
|
143
|
+
this.items = [];
|
|
144
|
+
// Get WFS_DocumentId if any.
|
|
145
|
+
let documentId = null;
|
|
146
|
+
if (this.group.zModel) {
|
|
147
|
+
documentId = this.group.zModel['WFS_DocumentId'];
|
|
148
|
+
}
|
|
149
|
+
// Set the documentId to the service
|
|
150
|
+
this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);
|
|
151
|
+
try {
|
|
152
|
+
// Set param for field
|
|
153
|
+
const field$ = this.workflowService.getWorkflowButtonsField(this.data.WorkflowCode, this.e1wfs_wfcGetWorkflowButtonURL, String(false));
|
|
154
|
+
field$.subscribe(data => {
|
|
155
|
+
data.forEach((button) => {
|
|
156
|
+
const label = this.getButtonLabel(button);
|
|
157
|
+
const attributes = JSON.parse(button.Attributes);
|
|
158
|
+
const buttonLabel = attributes.Label || label;
|
|
159
|
+
const _isVisible = this.isBtnVisible(button.Visible);
|
|
160
|
+
if (_isVisible) {
|
|
161
|
+
this.items.push({
|
|
162
|
+
label: buttonLabel,
|
|
163
|
+
fieldAttribute: button,
|
|
164
|
+
icon: ZComponentHelper.getIcon(attributes.Icon),
|
|
165
|
+
'clickEvent': button.ClickEvent,
|
|
166
|
+
'click': (y) => {
|
|
167
|
+
this.workflowButtonClick(button);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
//ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
console.error("error: ", error);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
workflowButtonClick(button) {
|
|
180
|
+
// Type 1 == functional;
|
|
181
|
+
// Type 2 == GOTO;
|
|
182
|
+
const attributes = JSON.parse(button.Attributes);
|
|
183
|
+
switch (button.TypeCode.toUpperCase()) {
|
|
184
|
+
case "FUNCTION":
|
|
185
|
+
console.log("Functional Button: ", button.Name);
|
|
186
|
+
this.workflowService.functionalButton_OnClick(attributes, this.group);
|
|
187
|
+
break;
|
|
188
|
+
case "GOTO":
|
|
189
|
+
console.log("GOTO Button: ", button.Name);
|
|
190
|
+
this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {
|
|
191
|
+
this.loadWorkflowButton();
|
|
192
|
+
if (res) {
|
|
193
|
+
this.workflowService.triggerSendEmail(this.group).subscribe();
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
break;
|
|
197
|
+
default:
|
|
198
|
+
console.log("Invalid Button Type. ", button.Name);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
ZmfbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmfbComponent, deps: [{ token: i1.FieldService }, { token: i1.ResourceApiService }, { token: i1.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
|
|
204
|
+
ZmfbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZmfbComponent, selector: "app-zmfb", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div class=\"zmfb-wrap\">\r\n <div class=\"k-overlay\" *ngIf=\"dialOpen\"></div>\r\n <kendo-floatingactionbutton icon=\"plus\"\r\n [themeColor]=\"buttonColor\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"bottomEnd\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\" [themeColor]=\"buttonColor\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar> \r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [".button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}\n"], components: [{ type: i2.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["positionMode", "dialItemAnimation", "tabIndex", "dialItems", "themeColor", "size", "rounded", "shape", "disabled", "align", "offset", "icon", "iconClass", "buttonClass", "dialClass", "text"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i3.AvatarComponent, selector: "kendo-avatar", inputs: ["border", "shape", "rounded", "size", "themeColor", "fillMode", "fill", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmfbComponent, decorators: [{
|
|
206
|
+
type: Component,
|
|
207
|
+
args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap\">\r\n <div class=\"k-overlay\" *ngIf=\"dialOpen\"></div>\r\n <kendo-floatingactionbutton icon=\"plus\"\r\n [themeColor]=\"buttonColor\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"bottomEnd\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\" [themeColor]=\"buttonColor\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar> \r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [".button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}\n"] }]
|
|
208
|
+
}], ctorParameters: function () { return [{ type: i1.FieldService }, { type: i1.ResourceApiService }, { type: i1.WorkflowService }]; }, propDecorators: { data: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], group: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], form: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}] } });
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1mYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bWZiL3ptZmIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1mYi96bWZiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF6RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUVPLGdCQUFnQixFQUF5QixvQkFBb0IsRUFDMUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBUXpCLE1BQU0sT0FBTyxhQUFhO0lBYXhCLFlBQ1UsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLGVBQWdDO1FBRmhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWDFDLHdCQUFtQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUNqRCxpQkFBWSxHQUFvQixPQUFPLENBQUM7UUFDeEMsY0FBUyxHQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDaEUsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFXLE1BQU0sQ0FBQztRQW9FdEIsZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdB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U0FBUzsrQkFDRSxVQUFVO2tLQUtYLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpYWxJdGVtQ2xpY2tFdmVudCwgRmFiQWxpZ24sIEZhYlBvc2l0aW9uTW9kZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWJ1dHRvbnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBcclxuICBGaWVsZFNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgV2ViQXBpU2VydmljZSwgV29ya2Zsb3dTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpGaWVsZCwgWkdyb3VwXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16bWZiJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vem1mYi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vem1mYi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm1mYkNvbXBvbmVudCBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcG9zaXRpb25Nb2RlOiBGYWJQb3NpdGlvbk1vZGUgPSAnZml4ZWQnO1xyXG4gIGJvdHRvbUVuZDogRmFiQWxpZ24gPSB7IHZlcnRpY2FsOiAnYm90dG9tJywgaG9yaXpvbnRhbDogJ2VuZCcgfTtcclxuICBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGRpYWxPcGVuOiBib29sZWFuID0gZmFsc2U7IFxyXG4gIGlzV29ya2Zsb3dCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBidXR0b25Db2xvcjogc3RyaW5nID0gJ2luZm8nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3b3JrZmxvd1NlcnZpY2U6IFdvcmtmbG93U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4vKioqKioqKioqKioqKioqKioqKiogQ29tbW9uIGZ1bmN0aW9uICoqKioqKioqKioqKioqKioqKioqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmdldEZpcnN0ekJ1dHRvbih0aGlzLmdyb3VwLmZpZWxkcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICBpZiAoIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkodGhpcy5kYXRhLldvcmtmbG93Q29kZSkpIHtcclxuICAgICAgICAvLyBoYW5kbGUgYXMgeldvcmtmbG93QnV0dG9uXHJcbiAgICAgICAgdGhpcy5pc1dvcmtmbG93QnV0dG9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRXb3JrZmxvd0J1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkJCA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUoXHJcbiAgICAgICAgICB0aGlzLmRhdGEuVmFsdWUsXHJcbiAgICAgICAgICBcIkZvcm1GaWVsZFwiLFxyXG4gICAgICAgICAgbnVsbCxcclxuICAgICAgICAgIG51bGxcclxuICAgICAgICApO1xyXG5cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGZpZWxkJC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0QnV0dG9uTGFiZWwoYnV0dG9uKTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgX2lzVmlzaWJsZSA9IHRoaXMuaXNCdG5WaXNpYmxlKGJ1dHRvbi5WaXNpYmxlKTtcclxuICAgICAgICAgICAgICBpZiAoX2lzVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBaQ29tcG9uZW50SGVscGVyLmdldEljb24oYnV0dG9uLkljb24pLFxyXG4gICAgICAgICAgICAgICAgICAnY2xpY2tFdmVudCc6IGJ1dHRvbi5DbGlja0V2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAnY2xpY2snOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIGlzQnRuVmlzaWJsZShmaWVsZEV4cHIpIHtcclxuICAgIGlmIChmaWVsZEV4cHIgIT09IGZhbHNlICYmICFmaWVsZEV4cHIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkRXhwcik7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuICAgXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqIHpCdXR0b24gKioqKioqKioqKioqKioqKioqKiovXHJcbiAgcHJpdmF0ZSBnZXRGaXJzdHpCdXR0b24oZGF0YTogYW55W10pIHtcclxuICAgIC8vIGRhdGEuZm9yRWFjaChkID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgaWYgKGRhdGFbaV0uVHlwZSA9PT0gXCJ6YnV0dG9uc1wiIHx8IGRhdGFbaV0uVHlwZSA9PT0gXCJ6d29ya2Zsb3didXR0b25zXCIpIHtcclxuICAgICAgICByZXR1cm4gZGF0YVtpXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2ldLlZhbHVlKSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRGaXJzdHpCdXR0b24oZGF0YVtpXS5WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QnV0dG9uTGFiZWwoYnV0dG9uOiBhbnkpIHsgXHJcbiAgICBsZXQgYnV0dG9uTGFiZWwgPSBidXR0b24uTGFiZWw7XHJcbiAgICBpZiAoIWJ1dHRvbkxhYmVsKSB7XHJcbiAgICAgIGJ1dHRvbkxhYmVsID0gYnV0dG9uLk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxhYmVsRXhwciA9IGJ1dHRvbkxhYmVsLm1hdGNoKC9ee3suKn19JC9naSk7XHJcbiAgICBpZiAobGFiZWxFeHByKSB7XHJcbiAgICAgIGxhYmVsRXhwciA9IGxhYmVsRXhwclswXS5zbGljZSgyLCAtMik7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKGxhYmVsRXhwciwgdGhpcy5ncm91cCk7XHJcbiAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBidXR0b25MYWJlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnV0dG9uQ2xpY2soYnV0dG9uOiBhbnkpIHsgXHJcbiAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgIHR5cGU6IFwiYnV0dG9uQ2xpY2tcIixcclxuICAgICAgdGFyZ2V0OiBidXR0b24uQ2xpY2tFdmVudCxcclxuICAgICAgZGF0YTogbnVsbFxyXG4gICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV2ZW50czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgcHVibGljIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIC8vY29uc29sZS5sb2coJ2JsdXInKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNXb3JrZmxvd0J1dHRvbikge1xyXG4gICAgICB0aGlzLmxvYWRXb3JrZmxvd0J1dHRvbigpO1xyXG4gICAgfVxyXG4gICAgLy9jb25zb2xlLmxvZygnZm9jdXMnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wZW4oZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsT3BlbiA9IHRydWU7XHJcbiAgICBjb25zb2xlLmxvZygnb3BlbicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2UoZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ2Nsb3NlJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EaWFsSXRlbUNsaWNrKGU6IERpYWxJdGVtQ2xpY2tFdmVudCk6IHZvaWQgeyBcclxuICAgIGUuaXRlbS5jbGljaygpOyBcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKiB6V29ya2Zsb3dCdXR0b24gKioqKioqKioqKioqKioqKioqKiovXHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG5cclxuICBwcml2YXRlIGxvYWRXb3JrZmxvd0J1dHRvbigpIHtcclxuICAgIC8vICBhY3Rpb25CdG5MaXN0OiBBcnJheTxaRmllbGQ+O1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5kYXRhLldvcmtmbG93Q29kZSwgZG9jdW1lbnRJZCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gU2V0IHBhcmFtIGZvciBmaWVsZFxyXG4gICAgICBjb25zdCBmaWVsZCQgPSB0aGlzLndvcmtmbG93U2VydmljZS5nZXRXb3JrZmxvd0J1dHRvbnNGaWVsZChcclxuICAgICAgICB0aGlzLmRhdGEuV29ya2Zsb3dDb2RlLFxyXG4gICAgICAgIHRoaXMuZTF3ZnNfd2ZjR2V0V29ya2Zsb3dCdXR0b25VUkwsXHJcbiAgICAgICAgU3RyaW5nKGZhbHNlKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZmllbGQkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0QnV0dG9uTGFiZWwoYnV0dG9uKTtcclxuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgICAgICAgIGNvbnN0IGJ1dHRvbkxhYmVsID0gYXR0cmlidXRlcy5MYWJlbCB8fCBsYWJlbDtcclxuICAgICAgICAgIGNvbnN0IF9pc1Zpc2libGUgPSB0aGlzLmlzQnRuVmlzaWJsZShidXR0b24uVmlzaWJsZSk7XHJcblxyXG4gICAgICAgICAgaWYgKF9pc1Zpc2libGUpIHsgXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGJ1dHRvbkxhYmVsLFxyXG4gICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlOiBidXR0b24sXHJcbiAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGF0dHJpYnV0ZXMuSWNvbiksXHJcbiAgICAgICAgICAgICAgJ2NsaWNrRXZlbnQnOiBidXR0b24uQ2xpY2tFdmVudCxcclxuICAgICAgICAgICAgICAnY2xpY2snOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbkNsaWNrKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgICAvL1pDb21wb25lbnRIZWxwZXIuY29sbGVjdFdvcmtmbG93QnV0dG9uKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsIGJ1dHRvbkxhYmVsLCBidXR0b24sIGF0dHJpYnV0ZXMsIG1hcHBlZEluZm8pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTsgXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3b3JrZmxvd0J1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XHJcbiAgICAvLyBUeXBlIDEgPT0gZnVuY3Rpb25hbDtcclxuICAgIC8vIFR5cGUgMiA9PSBHT1RPO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgc3dpdGNoIChidXR0b24uVHlwZUNvZGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIFwiRlVOQ1RJT05cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkZ1bmN0aW9uYWwgQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmZ1bmN0aW9uYWxCdXR0b25fT25DbGljayhhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkdPVE9cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkdPVE8gQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmdvdG9CdXR0b25fT25jbGljayhidXR0b24sIHRoaXMuZGF0YSwgYXR0cmlidXRlcywgdGhpcy5ncm91cCwgZmFsc2UpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkV29ya2Zsb3dCdXR0b24oKTtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgdGhpcy53b3JrZmxvd1NlcnZpY2UudHJpZ2dlclNlbmRFbWFpbCh0aGlzLmdyb3VwKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkludmFsaWQgQnV0dG9uIFR5cGUuIFwiLCBidXR0b24uTmFtZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ6bWZiLXdyYXBcIj5cclxuICA8ZGl2IGNsYXNzPVwiay1vdmVybGF5XCIgKm5nSWY9XCJkaWFsT3BlblwiPjwvZGl2PlxyXG4gIDxrZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbiBpY29uPVwicGx1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGVtZUNvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uTW9kZV09XCJwb3NpdGlvbk1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxpZ25dPVwiYm90dG9tRW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxJdGVtc109XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cIm9uT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9EaWFsSXRlbVRlbXBsYXRlIGxldC1pdGVtIGxldC1pc0ZvY3VzZWQ9XCJpc0ZvY3VzZWRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJrLWZhYi1pdGVtLXRleHRcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxrZW5kby1hdmF0YXIgc2hhcGU9XCJjaXJjbGVcIiBbdGhlbWVDb2xvcl09XCJidXR0b25Db2xvclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiay1pY29uIGstaS17eyBpdGVtLmljb24gfX1cIj48L3NwYW4+XHJcbiAgICAgIDwva2VuZG8tYXZhdGFyPiBcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
/********** Component & Service **********/
|
|
4
|
+
// import { FieldService } from "../mmhglobal-zcore/field.service";
|
|
5
|
+
// import { ResourceApiService } from "../mmhglobal-zcore/resourceapi.service";
|
|
6
|
+
import { ZGroup, ZComponentHelper, } from "mmhglobal-zcore";
|
|
7
|
+
import { ZmodalHelper } from 'mmhglobal-zmodal';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "mmhglobal-zcore";
|
|
10
|
+
import * as i2 from "@ionic/angular";
|
|
11
|
+
import * as i3 from "@fortawesome/angular-fontawesome";
|
|
12
|
+
import * as i4 from "../uiactionbutton/uiactionbutton.component";
|
|
13
|
+
import * as i5 from "../zform/zform.component";
|
|
14
|
+
import * as i6 from "@angular/common";
|
|
15
|
+
import * as i7 from "../directives/scrollbar.theme.directive";
|
|
16
|
+
export class ZmodalMobileComponent {
|
|
17
|
+
constructor(webApiService, zcoreService, fieldService // Use in mmhglobal-zmodal.helper
|
|
18
|
+
) {
|
|
19
|
+
this.webApiService = webApiService;
|
|
20
|
+
this.zcoreService = zcoreService;
|
|
21
|
+
this.fieldService = fieldService;
|
|
22
|
+
this.group = new ZGroup(true);
|
|
23
|
+
}
|
|
24
|
+
// get modalGroup() {
|
|
25
|
+
// return this.group;
|
|
26
|
+
// }
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
ZmodalHelper.onInit_ModalForm(this);
|
|
29
|
+
}
|
|
30
|
+
ngOnDestroy() {
|
|
31
|
+
ZmodalHelper.onDestroy_ModalForm(this);
|
|
32
|
+
}
|
|
33
|
+
onCancel(event) {
|
|
34
|
+
ZmodalHelper.onCancel(this, event);
|
|
35
|
+
// this.modalCtrl.dismiss(null, "cancel");
|
|
36
|
+
}
|
|
37
|
+
onConfirm(event) {
|
|
38
|
+
ZmodalHelper.onConfirm(this, event);
|
|
39
|
+
// const fg = this.group.form as FormGroup;
|
|
40
|
+
// if (!this.group.form) {
|
|
41
|
+
// return;
|
|
42
|
+
// }
|
|
43
|
+
// if (!fg.dirty) {
|
|
44
|
+
// console.warn('Form is not dirty hence modalform record is not saved.');
|
|
45
|
+
// this.onCancel();
|
|
46
|
+
// return;
|
|
47
|
+
// }
|
|
48
|
+
// if (!fg.valid) {
|
|
49
|
+
// const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);
|
|
50
|
+
// console.warn("Form Validation got error(s):", errors);
|
|
51
|
+
// return;
|
|
52
|
+
// }
|
|
53
|
+
// // Object.assign(this.group.zModel, fg.value);
|
|
54
|
+
// // this.modalCtrl.dismiss(this.group.zModel, "confirm");
|
|
55
|
+
// // if (ZComponentHelper.isMobileScreen()) {
|
|
56
|
+
// this.modalCtrl.dismiss(event.data, "confirm");
|
|
57
|
+
// // } else {
|
|
58
|
+
// // this.dialog.close(event.data);
|
|
59
|
+
// // }
|
|
60
|
+
}
|
|
61
|
+
onInitClose(event) {
|
|
62
|
+
ZmodalHelper.onInitClose(this, event);
|
|
63
|
+
}
|
|
64
|
+
// to serve actionButton at formHeader
|
|
65
|
+
subjectEvent(event, group, me) {
|
|
66
|
+
if (!event || !event.target || !event.target.startsWith('modalGroup')) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log(">> SubjectEvent", event);
|
|
70
|
+
// const target = event.target.replace('modalGroup.', 'group.');
|
|
71
|
+
const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);
|
|
72
|
+
// callFunc(event);
|
|
73
|
+
if (typeof callFunc === "function") {
|
|
74
|
+
const fg = this.group.form;
|
|
75
|
+
Object.assign(this.group.zModel, fg.value);
|
|
76
|
+
event.data = this.group.zModel;
|
|
77
|
+
if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalCancel')) {
|
|
78
|
+
const newFunc = callFunc.bind(this);
|
|
79
|
+
newFunc(event);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const newFunc = callFunc.bind(group.ctrlScope);
|
|
83
|
+
newFunc(event);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.warn("Function not defined in group for: ", callFunc, ", Event: ", event);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
getModel$(group, id) {
|
|
91
|
+
const recId = id || group.referenceId;
|
|
92
|
+
return this.webApiService.httpGet$(group.resourceURL + "/" + recId, null);
|
|
93
|
+
}
|
|
94
|
+
getGridStyle() {
|
|
95
|
+
// debugger;
|
|
96
|
+
if (!this.isMobileScreen) {
|
|
97
|
+
return {
|
|
98
|
+
"height.px": 500,
|
|
99
|
+
"width.px": 700
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
isMobileScreen() {
|
|
105
|
+
const v = ZComponentHelper.isMobileScreen();
|
|
106
|
+
return v;
|
|
107
|
+
}
|
|
108
|
+
isSITEnvironment() {
|
|
109
|
+
return this.zcoreService.isDebugSession();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
ZmodalMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmodalMobileComponent, deps: [{ token: i1.WebApiService }, { token: i1.ZCoreService }, { token: i1.FieldService }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
ZmodalMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZmodalMobileComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i4.UiactionbuttonComponent, selector: "app-uiactionbutton", inputs: ["group"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i5.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "json": i6.JsonPipe } });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmodalMobileComponent, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: "app-zmodal", template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""] }]
|
|
117
|
+
}], ctorParameters: function () { return [{ type: i1.WebApiService }, { type: i1.ZCoreService }, { type: i1.FieldService }]; }, propDecorators: { modalParams: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}] } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVcEUsMkNBQTJDO0FBQzNDLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsT0FBTyxFQUVILE1BQU0sRUFBZ0IsZ0JBQWdCLEdBQ3pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixZQUNZLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFlBQTBCLENBQUMsaUNBQWlDOztRQUY1RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVB0QyxVQUFLLEdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFTakMsQ0FBQztJQUVELHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsSUFBSTtJQUVKLFFBQVE7UUFDSixZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDUCxZQUFZLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUE2QjtRQUNsQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQywwQ0FBMEM7SUFDOUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE0QjtRQUNsQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQywyQ0FBMkM7UUFDM0MsMEJBQTBCO1FBQzFCLGNBQWM7UUFDZCxJQUFJO1FBRUosbUJBQW1CO1FBQ25CLDhFQUE4RTtRQUM5RSx1QkFBdUI7UUFDdkIsY0FBYztRQUNkLElBQUk7UUFFSixtQkFBbUI7UUFDbkIsaUZBQWlGO1FBQ2pGLDZEQUE2RDtRQUM3RCxjQUFjO1FBQ2QsSUFBSTtRQUVKLGlEQUFpRDtRQUNqRCwyREFBMkQ7UUFDM0QsOENBQThDO1FBQzlDLGlEQUFpRDtRQUNqRCxjQUFjO1FBQ2Qsc0NBQXNDO1FBQ3RDLE9BQU87SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQTZCO1FBQ3ZDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsWUFBWSxDQUFDLEtBQTRCLEVBQUUsS0FBYSxFQUFFLEVBQU87UUFDN0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNuRSxPQUFPO1NBQ1Y7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGdFQUFnRTtRQUNoRSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEYsbUJBQW1CO1FBQ25CLElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBaUIsQ0FBQztZQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO2dCQUN4RyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsQjtTQUNKO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUNSLHFDQUFxQyxFQUNyQyxRQUFRLEVBQ1IsV0FBVyxFQUNYLEtBQUssQ0FDUixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxFQUFVO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUFZO1FBQ1IsWUFBWTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RCLE9BQU87Z0JBQ0gsV0FBVyxFQUFFLEdBQUc7Z0JBQ2hCLFVBQVUsRUFBRSxHQUFHO2FBQ2xCLENBQUM7U0FDTDtRQUNELE9BQU87SUFDWCxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOztrSEFwSFEscUJBQXFCO3NHQUFyQixxQkFBcUIsMEZDMUJsQyxxdUNBcUNBOzJGRFhhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxZQUFZOzBKQUtiLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBQbGF0Zm9ybSB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbi8vIGltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgb2YsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgRmllbGRTZXJ2aWNlIH0gZnJvbSBcIi4uL21taGdsb2JhbC16Y29yZS9maWVsZC5zZXJ2aWNlXCI7XHJcbi8vIGltcG9ydCB7IFJlc291cmNlQXBpU2VydmljZSB9IGZyb20gXCIuLi9tbWhnbG9iYWwtemNvcmUvcmVzb3VyY2VhcGkuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgV2ViQXBpU2VydmljZSwgTW9kYWxQYWdlUGFyYW1zLFxyXG4gICAgWkdyb3VwLCBaQ29yZVNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgRmllbGRTZXJ2aWNlLFxyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgWm1vZGFsSGVscGVyIH0gZnJvbSAnbW1oZ2xvYmFsLXptb2RhbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhcHAtem1vZGFsXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3ptb2RhbC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3ptb2RhbC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm1vZGFsTW9iaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgbW9kYWxQYXJhbXM6IE1vZGFsUGFnZVBhcmFtcztcclxuXHJcbiAgICBncm91cDogWkdyb3VwID0gbmV3IFpHcm91cCh0cnVlKTtcclxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgYmFja0J1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UgLy8gVXNlIGluIG1taGdsb2JhbC16bW9kYWwuaGVscGVyXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICAvLyBnZXQgbW9kYWxHcm91cCgpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuZ3JvdXA7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgWm1vZGFsSGVscGVyLm9uSW5pdF9Nb2RhbEZvcm0odGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgWm1vZGFsSGVscGVyLm9uRGVzdHJveV9Nb2RhbEZvcm0odGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DYW5jZWwoZXZlbnQ/OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25DYW5jZWwodGhpcywgZXZlbnQpO1xyXG4gICAgICAgIC8vIHRoaXMubW9kYWxDdHJsLmRpc21pc3MobnVsbCwgXCJjYW5jZWxcIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db25maXJtKGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25Db25maXJtKHRoaXMsIGV2ZW50KTtcclxuICAgICAgICAvLyBjb25zdCBmZyA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLmdyb3VwLmZvcm0pIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKCFmZy5kaXJ0eSkge1xyXG4gICAgICAgIC8vICAgICBjb25zb2xlLndhcm4oJ0Zvcm0gaXMgbm90IGRpcnR5IGhlbmNlIG1vZGFsZm9ybSByZWNvcmQgaXMgbm90IHNhdmVkLicpO1xyXG4gICAgICAgIC8vICAgICB0aGlzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGlmICghZmcudmFsaWQpIHtcclxuICAgICAgICAvLyAgICAgY29uc3QgZXJyb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRGb3JtR3JvdXBFcnJvcnMoZmcsIHRoaXMuYWxlcnRTZXJ2aWNlKTtcclxuICAgICAgICAvLyAgICAgY29uc29sZS53YXJuKFwiRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JzKTtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gLy8gT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLnpNb2RlbCwgZmcudmFsdWUpO1xyXG4gICAgICAgIC8vIC8vIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5ncm91cC56TW9kZWwsIFwiY29uZmlybVwiKTtcclxuICAgICAgICAvLyAvLyBpZiAoWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhldmVudC5kYXRhLCBcImNvbmZpcm1cIik7XHJcbiAgICAgICAgLy8gLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAvLyAgIHRoaXMuZGlhbG9nLmNsb3NlKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgIC8vIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkluaXRDbG9zZShldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgICBabW9kYWxIZWxwZXIub25Jbml0Q2xvc2UodGhpcywgZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRvIHNlcnZlIGFjdGlvbkJ1dHRvbiBhdCBmb3JtSGVhZGVyXHJcbiAgICBzdWJqZWN0RXZlbnQoZXZlbnQ6IFpDb21wb25lbnRPdXRwdXRFdmVudCwgZ3JvdXA6IFpHcm91cCwgbWU6IGFueSkge1xyXG4gICAgICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnRhcmdldCB8fCAhZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAnKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiPj4gU3ViamVjdEV2ZW50XCIsIGV2ZW50KTtcclxuICAgICAgICAvLyBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQucmVwbGFjZSgnbW9kYWxHcm91cC4nLCAnZ3JvdXAuJyk7XHJcbiAgICAgICAgY29uc3QgY2FsbEZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZXZlbnQudGFyZ2V0LCBncm91cCk7XHJcbiAgICAgICAgLy8gY2FsbEZ1bmMoZXZlbnQpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICBjb25zdCBmZyA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cC56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgICAgICAgICAgZXZlbnQuZGF0YSA9IHRoaXMuZ3JvdXAuek1vZGVsO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxBbnN3ZXInKSB8fCBldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cC5tb2RhbENhbmNlbCcpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIG5ld0Z1bmMoZXZlbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQoZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgICAgICAgICAgIG5ld0Z1bmMoZXZlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICAgICAgXCJGdW5jdGlvbiBub3QgZGVmaW5lZCBpbiBncm91cCBmb3I6IFwiLFxyXG4gICAgICAgICAgICAgICAgY2FsbEZ1bmMsXHJcbiAgICAgICAgICAgICAgICBcIiwgRXZlbnQ6IFwiLFxyXG4gICAgICAgICAgICAgICAgZXZlbnRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kZWwkKGdyb3VwOiBhbnksIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHJlY0lkID0gaWQgfHwgZ3JvdXAucmVmZXJlbmNlSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViQXBpU2VydmljZS5odHRwR2V0JChncm91cC5yZXNvdXJjZVVSTCArIFwiL1wiICsgcmVjSWQsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdyaWRTdHlsZSgpIHtcclxuICAgICAgICAvLyBkZWJ1Z2dlcjtcclxuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGVTY3JlZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0LnB4XCI6IDUwMCxcclxuICAgICAgICAgICAgICAgIFwid2lkdGgucHhcIjogNzAwXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgICAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpO1xyXG4gICAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG5cclxuICAgIGlzU0lURW52aXJvbm1lbnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuemNvcmVTZXJ2aWNlLmlzRGVidWdTZXNzaW9uKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXIgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxyXG4gICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcydcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8aW9uLXRpdGxlPlxyXG4gICAgICB7eyBtb2RhbFBhcmFtcy5mb3JtSGVhZGVyIH19XHJcbiAgICA8L2lvbi10aXRsZT5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQgYXBwU2Nyb2xsYmFyVGhlbWUgW25nU3R5bGVdPVwiZ2V0R3JpZFN0eWxlKClcIj5cclxuICA8aW9uLWdyaWQ+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW1hcmdpbiBpb24tcGFkZGluZ1wiPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIj5cclxuICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgPGFwcC16Zm9ybSBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC16Zm9ybT5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCJpc1NJVEVudmlyb25tZW50KCkgJiYgIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8cHJlIHN0eWxlPVwiZm9udC1zaXplOiB4LXNtYWxsO1wiPnt7Z3JvdXAuek1vZGVsIHwganNvbn19PC9wcmU+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2lvbi1jb250ZW50PlxyXG5cclxuIl19
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
import { DialogContentBase } from '@progress/kendo-angular-dialog';
|
|
4
|
+
/********** Component & Service **********/
|
|
5
|
+
import { ZGroup, ZComponentHelper } from "mmhglobal-zcore";
|
|
6
|
+
import { ZmodalHelper } from 'mmhglobal-zmodal';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@progress/kendo-angular-dialog";
|
|
9
|
+
import * as i2 from "@ionic/angular";
|
|
10
|
+
import * as i3 from "mmhglobal-zcore";
|
|
11
|
+
import * as i4 from "@fortawesome/angular-fontawesome";
|
|
12
|
+
import * as i5 from "../uiactionbutton/uiactionbutton.component";
|
|
13
|
+
import * as i6 from "../zform/zform.component";
|
|
14
|
+
import * as i7 from "@angular/common";
|
|
15
|
+
import * as i8 from "../directives/scrollbar.theme.directive";
|
|
16
|
+
export class ZmodalComponent extends DialogContentBase {
|
|
17
|
+
constructor(dialog, modalCtrl, zcoreService, webApiService, resourceApiService, fieldService, platform, alertService) {
|
|
18
|
+
super(dialog);
|
|
19
|
+
this.dialog = dialog;
|
|
20
|
+
this.modalCtrl = modalCtrl;
|
|
21
|
+
this.zcoreService = zcoreService;
|
|
22
|
+
this.webApiService = webApiService;
|
|
23
|
+
this.resourceApiService = resourceApiService;
|
|
24
|
+
this.fieldService = fieldService;
|
|
25
|
+
this.platform = platform;
|
|
26
|
+
this.alertService = alertService;
|
|
27
|
+
this.group = new ZGroup(true);
|
|
28
|
+
}
|
|
29
|
+
// get modalGroup() {
|
|
30
|
+
// return this.group;
|
|
31
|
+
// }
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
ZmodalHelper.onInit_ModalForm(this);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
ZmodalHelper.onDestroy_ModalForm(this);
|
|
37
|
+
}
|
|
38
|
+
onCancel(event) {
|
|
39
|
+
ZmodalHelper.onCancel(this, event);
|
|
40
|
+
// this.dialog.close();
|
|
41
|
+
}
|
|
42
|
+
onConfirm(event) {
|
|
43
|
+
ZmodalHelper.onConfirm(this, event);
|
|
44
|
+
// const fg = this.group.form as FormGroup;
|
|
45
|
+
// if (!this.group.form) {
|
|
46
|
+
// return;
|
|
47
|
+
// }
|
|
48
|
+
// if (!fg.dirty) {
|
|
49
|
+
// console.warn('Form is not dirty hence modalform record is not saved.');
|
|
50
|
+
// this.onCancel();
|
|
51
|
+
// return;
|
|
52
|
+
// }
|
|
53
|
+
// if (!fg.valid) {
|
|
54
|
+
// const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);
|
|
55
|
+
// console.warn("Form Validation got error(s):", errors);
|
|
56
|
+
// return;
|
|
57
|
+
// }
|
|
58
|
+
// Object.assign(this.group.zModel, fg.value);
|
|
59
|
+
// this.modalCtrl.dismiss(this.group.zModel, "confirm");
|
|
60
|
+
// if (ZComponentHelper.isMobileScreen()) {
|
|
61
|
+
// this.modalCtrl.dismiss(event.data, "confirm");
|
|
62
|
+
// } else {
|
|
63
|
+
// this.dialog.close(event.data);
|
|
64
|
+
// }
|
|
65
|
+
}
|
|
66
|
+
onInitClose(event) {
|
|
67
|
+
ZmodalHelper.onInitClose(this, event);
|
|
68
|
+
}
|
|
69
|
+
isSITEnvironment() {
|
|
70
|
+
return this.zcoreService.isDebugSession();
|
|
71
|
+
}
|
|
72
|
+
// to serve actionButton at formHeader
|
|
73
|
+
subjectEvent(event, group, me) {
|
|
74
|
+
if (!event || !event.target || !event.target.startsWith('modalGroup')) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
console.log(">> SubjectEvent", event);
|
|
78
|
+
// const target = event.target.replace('modalGroup.', 'group.');
|
|
79
|
+
const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);
|
|
80
|
+
// callFunc(event);
|
|
81
|
+
if (typeof callFunc === "function") {
|
|
82
|
+
const fg = this.group.form;
|
|
83
|
+
Object.assign(this.group.zModel, fg.value);
|
|
84
|
+
event.data = this.group.zModel;
|
|
85
|
+
if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalClose') || event.target.startsWith('modalGroup.modalCancel')) {
|
|
86
|
+
const newFunc = callFunc.bind(this);
|
|
87
|
+
newFunc(event);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const newFunc = callFunc.bind(group.ctrlScope);
|
|
91
|
+
newFunc(event);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.warn("Function not defined in group for: ", callFunc, ", Event: ", event);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
getModel$(group, id) {
|
|
99
|
+
const recId = id || group.referenceId;
|
|
100
|
+
return this.webApiService.httpGet$(group.resourceURL + "/" + recId, null);
|
|
101
|
+
}
|
|
102
|
+
getGridStyle() {
|
|
103
|
+
// debugger;
|
|
104
|
+
if (!this.isMobileScreen) {
|
|
105
|
+
return {
|
|
106
|
+
"height.px": 500,
|
|
107
|
+
"width.px": 700
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
isMobileScreen() {
|
|
113
|
+
const v = ZComponentHelper.isMobileScreen();
|
|
114
|
+
return v;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
ZmodalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmodalComponent, deps: [{ token: i1.DialogRef }, { token: i2.ModalController }, { token: i3.ZCoreService }, { token: i3.WebApiService }, { token: i3.ResourceApiService }, { token: i3.FieldService }, { token: i2.Platform }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
+
ZmodalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZmodalComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, usesInheritance: true, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i5.UiactionbuttonComponent, selector: "app-uiactionbutton", inputs: ["group"] }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i6.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "json": i7.JsonPipe } });
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZmodalComponent, decorators: [{
|
|
120
|
+
type: Component,
|
|
121
|
+
args: [{ selector: 'app-zmodal', template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""] }]
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ModalController }, { type: i3.ZCoreService }, { type: i3.WebApiService }, { type: i3.ResourceApiService }, { type: i3.FieldService }, { type: i2.Platform }, { type: i3.AlertService }]; }, propDecorators: { modalParams: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3ptb2RhbC96bW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1vZGFsL3ptb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLDJDQUEyQztBQUMzQyxPQUFPLEVBQ0wsTUFBTSxFQUVOLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7QUFRL0QsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQWlCO0lBT3BELFlBQ1MsTUFBaUIsRUFDaEIsU0FBMEIsRUFDMUIsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsa0JBQXNDLEVBQ3RDLFlBQTBCLEVBQzFCLFFBQWtCLEVBQ2xCLFlBQTBCO1FBR2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQVZQLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBWnBDLFVBQUssR0FBVyxJQUFJLE1B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Q0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsRUFBVTtRQUM5QixNQUFNLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsWUFBWTtRQUNWLFlBQVk7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixPQUFPO2dCQUNMLFdBQVcsRUFBRSxHQUFHO2dCQUNoQixVQUFVLEVBQUUsR0FBRzthQUNoQixDQUFDO1NBQ0g7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7OzRHQTVIVSxlQUFlO2dHQUFmLGVBQWUsaUhDekI1QixxdUNBcUNBOzJGRFphLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWTttU0FLYixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50QmFzZSwgRGlhbG9nUmVmIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZGlhbG9nJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgXHJcbiAgWkdyb3VwLCBNb2RhbFBhZ2VQYXJhbXMsXHJcbiAgV2ViQXBpU2VydmljZSwgQWxlcnRTZXJ2aWNlLCBaQ29yZVNlcnZpY2UsIEZpZWxkU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudFxyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgWm1vZGFsSGVscGVyLCBNb2RhbFJlc3BvbnNlIH0gZnJvbSAnbW1oZ2xvYmFsLXptb2RhbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtem1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vem1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96bW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFptb2RhbENvbXBvbmVudCBleHRlbmRzIERpYWxvZ0NvbnRlbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG1vZGFsUGFyYW1zOiBNb2RhbFBhZ2VQYXJhbXM7XHJcblxyXG4gIGdyb3VwOiBaR3JvdXAgPSBuZXcgWkdyb3VwKHRydWUpO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGJhY2tCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoIFxyXG4gICAgcHVibGljIGRpYWxvZzogRGlhbG9nUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcclxuICAgIHByaXZhdGUgemNvcmVTZXJ2aWNlOiBaQ29yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG5cclxuICApIHtcclxuICAgIHN1cGVyKGRpYWxvZyk7XHJcbiAgfVxyXG5cclxuICAvLyBnZXQgbW9kYWxHcm91cCgpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmdyb3VwO1xyXG4gIC8vIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBabW9kYWxIZWxwZXIub25Jbml0X01vZGFsRm9ybSh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgWm1vZGFsSGVscGVyLm9uRGVzdHJveV9Nb2RhbEZvcm0odGhpcyk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbChldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgWm1vZGFsSGVscGVyLm9uQ2FuY2VsKHRoaXMsIGV2ZW50KTtcclxuICAgIC8vIHRoaXMuZGlhbG9nLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbmZpcm0oZXZlbnQ6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgWm1vZGFsSGVscGVyLm9uQ29uZmlybSh0aGlzLCBldmVudCk7XHJcbiAgICAvLyBjb25zdCBmZyA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAvLyBpZiAoIXRoaXMuZ3JvdXAuZm9ybSkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gaWYgKCFmZy5kaXJ0eSkge1xyXG4gICAgLy8gICBjb25zb2xlLndhcm4oJ0Zvcm0gaXMgbm90IGRpcnR5IGhlbmNlIG1vZGFsZm9ybSByZWNvcmQgaXMgbm90IHNhdmVkLicpO1xyXG4gICAgLy8gICB0aGlzLm9uQ2FuY2VsKCk7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAoIWZnLnZhbGlkKSB7XHJcbiAgICAvLyAgIGNvbnN0IGVycm9ycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Rm9ybUdyb3VwRXJyb3JzKGZnLCB0aGlzLmFsZXJ0U2VydmljZSk7XHJcbiAgICAvLyAgIGNvbnNvbGUud2FybihcIkZvcm0gVmFsaWRhdGlvbiBnb3QgZXJyb3Iocyk6XCIsIGVycm9ycyk7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBPYmplY3QuYXNzaWduKHRoaXMuZ3JvdXAuek1vZGVsLCBmZy52YWx1ZSk7XHJcbiAgICAvLyB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKHRoaXMuZ3JvdXAuek1vZGVsLCBcImNvbmZpcm1cIik7XHJcbiAgICAvLyBpZiAoWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAvLyAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoZXZlbnQuZGF0YSwgXCJjb25maXJtXCIpO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vIHRoaXMuZGlhbG9nLmNsb3NlKGV2ZW50LmRhdGEpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgb25Jbml0Q2xvc2UoZXZlbnQ/OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQpIHtcclxuICAgIFptb2RhbEhlbHBlci5vbkluaXRDbG9zZSh0aGlzLGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGlzU0lURW52aXJvbm1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy56Y29yZVNlcnZpY2UuaXNEZWJ1Z1Nlc3Npb24oKTtcclxuICB9XHJcblxyXG5cclxuICAvLyB0byBzZXJ2ZSBhY3Rpb25CdXR0b24gYXQgZm9ybUhlYWRlclxyXG4gIHN1YmplY3RFdmVudChldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50LCBncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFldmVudC50YXJnZXQgfHwgIWV2ZW50LnRhcmdldC5zdGFydHNXaXRoKCdtb2RhbEdyb3VwJykpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCI+PiBTdWJqZWN0RXZlbnRcIiwgZXZlbnQpO1xyXG4gICAgLy8gY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0LnJlcGxhY2UoJ21vZGFsR3JvdXAuJywgJ2dyb3VwLicpO1xyXG4gICAgY29uc3QgY2FsbEZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZXZlbnQudGFyZ2V0LCBncm91cCk7XHJcbiAgICAvLyBjYWxsRnVuYyhldmVudCk7XHJcbiAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgY29uc3QgZmcgPSB0aGlzLmdyb3VwLmZvcm0gYXMgRm9ybUdyb3VwO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuZ3JvdXAuek1vZGVsLCBmZy52YWx1ZSk7XHJcbiAgICAgIGV2ZW50LmRhdGEgPSB0aGlzLmdyb3VwLnpNb2RlbDtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC5zdGFydHNXaXRoKCdtb2RhbEdyb3VwLm1vZGFsQW5zd2VyJykgfHwgZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxDbG9zZScpIHx8IGV2ZW50LnRhcmdldC5zdGFydHNXaXRoKCdtb2RhbEdyb3VwLm1vZGFsQ2FuY2VsJykpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZCh0aGlzKTtcclxuICAgICAgICBuZXdGdW5jKGV2ZW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgIG5ld0Z1bmMoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgXCJGdW5jdGlvbiBub3QgZGVmaW5lZCBpbiBncm91cCBmb3I6IFwiLFxyXG4gICAgICAgIGNhbGxGdW5jLFxyXG4gICAgICAgIFwiLCBFdmVudDogXCIsXHJcbiAgICAgICAgZXZlbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vZGVsJChncm91cDogYW55LCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlY0lkID0gaWQgfHwgZ3JvdXAucmVmZXJlbmNlSWQ7XHJcbiAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBHZXQkKGdyb3VwLnJlc291cmNlVVJMICsgXCIvXCIgKyByZWNJZCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBnZXRHcmlkU3R5bGUoKSB7XHJcbiAgICAvLyBkZWJ1Z2dlcjtcclxuICAgIGlmICghdGhpcy5pc01vYmlsZVNjcmVlbikge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIFwiaGVpZ2h0LnB4XCI6IDUwMCxcclxuICAgICAgICBcIndpZHRoLnB4XCI6IDcwMFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaXNNb2JpbGVTY3JlZW4oKSB7XHJcbiAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpO1xyXG4gICAgcmV0dXJuIHY7XHJcbiAgfVxyXG59XHJcbiIsIjxpb24taGVhZGVyICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiPlxyXG4gIDxpb24tdG9vbGJhcj5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cclxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cclxuICAgICAgICA8IS0tIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPiAtLT5cclxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCIndGltZXMnXCIgc2l6ZT1cImxnXCI+PC9mYS1pY29uPlxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gICAgPGlvbi10aXRsZT5cclxuICAgICAge3sgbW9kYWxQYXJhbXMuZm9ybUhlYWRlciB9fVxyXG4gICAgPC9pb24tdGl0bGU+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInByaW1hcnlcIiAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIj5cclxuICAgICAgPGFwcC11aWFjdGlvbmJ1dHRvbiBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC11aWFjdGlvbmJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9pb24taGVhZGVyPlxyXG5cclxuPGlvbi1jb250ZW50IGFwcFNjcm9sbGJhclRoZW1lIFtuZ1N0eWxlXT1cImdldEdyaWRTdHlsZSgpXCI+XHJcbiAgPGlvbi1ncmlkPlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCJncm91cC5pc0xvYWRpbmdcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1tYXJnaW4gaW9uLXBhZGRpbmdcIj5cclxuICAgICAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxpb24tY29sPlxyXG4gICAgICAgIDxhcHAtemZvcm0gW2dyb3VwXT1cImdyb3VwXCI+PC9hcHAtemZvcm0+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICAgIDxpb24tcm93ICpuZ0lmPVwiaXNTSVRFbnZpcm9ubWVudCgpICYmICFncm91cC5pc0xvYWRpbmdcIj5cclxuICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgPHByZSBzdHlsZT1cImZvbnQtc2l6ZTogeC1zbWFsbDtcIj57e2dyb3VwLnpNb2RlbCB8IGpzb259fTwvcHJlPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgPC9pb24tZ3JpZD5cclxuPC9pb24tY29udGVudD5cclxuXHJcbiJdfQ==
|