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.
Files changed (198) hide show
  1. package/README.md +14 -2
  2. package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
  3. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
  4. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
  5. package/esm2020/lib/services/main.service.mjs +752 -0
  6. package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
  7. package/esm2020/lib/services/zcomponent.service.mjs +81 -0
  8. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
  9. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
  10. package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
  11. package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
  12. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
  13. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
  14. package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
  15. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
  16. package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
  17. package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
  18. package/esm2020/lib/zcard/zcard.component.mjs +72 -0
  19. package/esm2020/lib/zchart/zchart.component.mjs +201 -0
  20. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
  21. package/esm2020/lib/zchip/zchip.component.mjs +121 -0
  22. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
  23. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
  24. package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
  25. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
  26. package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
  27. package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
  28. package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
  29. package/esm2020/lib/zform/zform.component.mjs +147 -0
  30. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
  31. package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
  32. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
  33. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
  34. package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
  35. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
  36. package/esm2020/lib/zimg/zimg.component.mjs +121 -0
  37. package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
  38. package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
  39. package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
  40. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
  41. package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
  42. package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
  43. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
  44. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
  45. package/esm2020/lib/zreport/zreport.component.mjs +105 -0
  46. package/esm2020/lib/zreport/zreport.config.mjs +117 -0
  47. package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
  48. package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
  49. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
  50. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
  51. package/esm2020/lib/ztab/ztab.component.mjs +187 -0
  52. package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
  53. package/esm2020/lib/ztext/ztext.component.mjs +297 -0
  54. package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
  55. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
  56. package/esm2020/lib/ztree/ztree.component.mjs +380 -0
  57. package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
  58. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
  59. package/esm2020/lib/zudf/zudf.component.mjs +205 -0
  60. package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
  61. package/esm2020/lib/zupload/zupload.component.mjs +359 -0
  62. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
  63. package/esm2020/mmhglobal-dynamicform.mjs +5 -0
  64. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  65. package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
  66. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
  67. package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
  68. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
  69. package/lib/directives/fieldelement.directive.d.ts +3 -0
  70. package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
  71. package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
  72. package/lib/services/main.service.d.ts +3 -0
  73. package/lib/services/zcomponent.debug.service.d.ts +8 -5
  74. package/lib/services/zcomponent.service.d.ts +7 -2
  75. package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
  76. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
  77. package/lib/uicontent/uicontent.component.d.ts +3 -0
  78. package/lib/uiheader/uiheader.component.d.ts +3 -0
  79. package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
  80. package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
  81. package/lib/uipage/uipage.component.d.ts +3 -0
  82. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
  83. package/lib/zbullet/zbullet.component.d.ts +3 -0
  84. package/lib/zbuttons/zbuttons.component.d.ts +3 -0
  85. package/lib/zcard/zcard.component.d.ts +3 -0
  86. package/lib/zchart/zchart.component.d.ts +3 -0
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
  88. package/lib/zchip/zchip.component.d.ts +3 -0
  89. package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
  90. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
  91. package/lib/zdaterange/zdaterange.component.d.ts +3 -0
  92. package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
  93. package/lib/zdatetime/zdatetime.component.d.ts +3 -0
  94. package/lib/zdiv/zdiv.component.d.ts +3 -0
  95. package/lib/zdiv/zdiv.pipe.d.ts +3 -0
  96. package/lib/zform/zform.component.d.ts +3 -0
  97. package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
  98. package/lib/zgauge/zgauge.component.d.ts +3 -0
  99. package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
  100. package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
  101. package/lib/zgrid/zgrid.component.d.ts +4 -1
  102. package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
  103. package/lib/zimg/zimg.component.d.ts +3 -0
  104. package/lib/zkcard/zkcard.component.d.ts +3 -0
  105. package/lib/zlabel/zlabel.component.d.ts +3 -0
  106. package/lib/zmfb/zmfb.component.d.ts +3 -0
  107. package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
  108. package/lib/zmodal/zmodal.component.d.ts +3 -0
  109. package/lib/znumeric/znumeric.component.d.ts +3 -0
  110. package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
  111. package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
  112. package/lib/zreport/zreport.component.d.ts +3 -0
  113. package/lib/zreport/zreport.config.d.ts +3 -0
  114. package/lib/zscheduler/zscheduler.component.d.ts +3 -0
  115. package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
  116. package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
  117. package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
  118. package/lib/ztab/ztab.component.d.ts +3 -0
  119. package/lib/ztab/ztab.pipe.d.ts +3 -0
  120. package/lib/ztext/ztext.component.d.ts +3 -0
  121. package/lib/ztextarea/ztextarea.component.d.ts +3 -0
  122. package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
  123. package/lib/ztree/ztree.component.d.ts +3 -0
  124. package/lib/ztreelist/ztreelist.component.d.ts +3 -0
  125. package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
  126. package/lib/zudf/zudf.component.d.ts +3 -0
  127. package/lib/zunknown/zunknown.component.d.ts +3 -0
  128. package/lib/zupload/zupload.component.d.ts +3 -0
  129. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
  130. package/mmhglobal-dynamicform.d.ts +1 -2
  131. package/package.json +20 -11
  132. package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
  133. package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
  134. package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
  135. package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
  136. package/esm2015/lib/directives/fieldelement.directive.js +0 -15
  137. package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
  138. package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
  139. package/esm2015/lib/services/main.service.js +0 -766
  140. package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
  141. package/esm2015/lib/services/zcomponent.service.js +0 -167
  142. package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
  143. package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
  144. package/esm2015/lib/uicontent/uicontent.component.js +0 -41
  145. package/esm2015/lib/uiheader/uiheader.component.js +0 -65
  146. package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
  147. package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
  148. package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
  149. package/esm2015/lib/zbullet/zbullet.component.js +0 -71
  150. package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
  151. package/esm2015/lib/zcard/zcard.component.js +0 -68
  152. package/esm2015/lib/zchart/zchart.component.js +0 -199
  153. package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
  154. package/esm2015/lib/zchip/zchip.component.js +0 -117
  155. package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
  156. package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
  157. package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
  158. package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
  159. package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
  160. package/esm2015/lib/zdiv/zdiv.component.js +0 -48
  161. package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
  162. package/esm2015/lib/zform/zform.component.js +0 -148
  163. package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
  164. package/esm2015/lib/zgauge/zgauge.component.js +0 -146
  165. package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
  166. package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
  167. package/esm2015/lib/zgrid/zgrid.component.js +0 -834
  168. package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
  169. package/esm2015/lib/zimg/zimg.component.js +0 -123
  170. package/esm2015/lib/zkcard/zkcard.component.js +0 -372
  171. package/esm2015/lib/zlabel/zlabel.component.js +0 -59
  172. package/esm2015/lib/zmfb/zmfb.component.js +0 -215
  173. package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
  174. package/esm2015/lib/zmodal/zmodal.component.js +0 -130
  175. package/esm2015/lib/znumeric/znumeric.component.js +0 -114
  176. package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
  177. package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
  178. package/esm2015/lib/zreport/zreport.component.js +0 -104
  179. package/esm2015/lib/zreport/zreport.config.js +0 -115
  180. package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
  181. package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
  182. package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
  183. package/esm2015/lib/ztab/ztab.component.js +0 -180
  184. package/esm2015/lib/ztab/ztab.pipe.js +0 -22
  185. package/esm2015/lib/ztext/ztext.component.js +0 -286
  186. package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
  187. package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
  188. package/esm2015/lib/ztree/ztree.component.js +0 -374
  189. package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
  190. package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
  191. package/esm2015/lib/zudf/zudf.component.js +0 -206
  192. package/esm2015/lib/zunknown/zunknown.component.js +0 -20
  193. package/esm2015/lib/zupload/zupload.component.js +0 -358
  194. package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
  195. package/esm2015/mmhglobal-dynamicform.js +0 -7
  196. package/fesm2015/mmhglobal-dynamicform.js +0 -10729
  197. package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
  198. package/mmhglobal-dynamicform.metadata.json +0 -1
@@ -1,196 +0,0 @@
1
- /********** Angular **********/
2
- import { Component, Input, ViewChild } from '@angular/core';
3
- /********** Ionic **********/
4
- /********** Plugin **********/
5
- import { map } from 'rxjs/operators';
6
- import { QueryBuilderComponent } from 'angular2-query-builder';
7
- /********** Component & Service **********/
8
- import { FieldService, ZComponentHelper, ZComponentProperties, DefaultPageSettingParams, WebApiService, ResourceApiService } from 'mmhglobal-zcore';
9
- export class ZquerybuilderComponent {
10
- constructor(fieldService, resourceApiService, webApiService) {
11
- this.fieldService = fieldService;
12
- this.resourceApiService = resourceApiService;
13
- this.webApiService = webApiService;
14
- //qbItems: Array<any> = [];
15
- this.qbItems = {};
16
- this.componentProperties = new ZComponentProperties();
17
- this.currentConfig = {
18
- fields: {},
19
- allowEmptyRulesets: true
20
- };
21
- this.allowRuleset = true;
22
- this.allowCollapse = false;
23
- this.persistValueOnFieldChange = false;
24
- this.isDisabled = false;
25
- this.bootstrapClassNames = {
26
- arrowIcon: 'fa fa-chevron-right px-2',
27
- button: 'btn',
28
- buttonGroup: 'btn-group',
29
- rightAlign: 'order-12 ml-auto',
30
- switchRow: 'd-flex px-2',
31
- switchGroup: 'd-flex align-items-center',
32
- switchRadio: 'custom-control-input',
33
- switchLabel: 'custom-control-label',
34
- switchControl: 'custom-control custom-radio custom-control-inline',
35
- row: 'row p-2 m-1',
36
- rule: 'border',
37
- ruleSet: 'border',
38
- invalidRuleSet: 'alert alert-danger',
39
- emptyWarning: 'text-danger mx-auto',
40
- operatorControl: 'form-control',
41
- operatorControlSize: 'col-auto pr-0',
42
- fieldControl: 'form-control',
43
- fieldControlSize: 'col-auto pr-0',
44
- entityControl: 'form-control',
45
- entityControlSize: 'col-auto pr-0',
46
- inputControl: 'form-control',
47
- inputControlSize: 'col-auto'
48
- };
49
- this.conditionList = [
50
- "AND",
51
- "OR"
52
- ];
53
- }
54
- ngOnInit() {
55
- ZComponentHelper.setComponentProperties(this);
56
- ZComponentHelper.registerComponent(this);
57
- if (this.data['AllowCollapse'] === true) {
58
- this.allowCollapse = this.data['AllowCollapse'];
59
- }
60
- if (this.data['AllowRuleset'] === false) {
61
- this.allowRuleset = this.data['AllowRuleset'];
62
- }
63
- this.fields = this.fieldService.getFormFieldCode(this.data.Value, "FormField", null, null);
64
- try {
65
- this.fields.subscribe(data => {
66
- data.forEach((field) => {
67
- // Handle Options
68
- let optionList = [];
69
- if (field.Type == 'category' || field.Type == 'multiselect') {
70
- if (field['ValueOptions']) {
71
- field['ValueOptions'].forEach((valueOption) => {
72
- optionList.push({
73
- name: valueOption.Name,
74
- value: valueOption.Value
75
- });
76
- });
77
- }
78
- else {
79
- const selectOptions = field['SelectOptions'];
80
- const param = Object.assign({}, DefaultPageSettingParams);
81
- param.pageSize = selectOptions['PageSize'];
82
- param.columns = selectOptions['Columns'];
83
- param.filters += selectOptions['Filters'];
84
- param.sortColumnName = selectOptions['SortColumnName'];
85
- param.sortOrder = selectOptions['SortOrder'];
86
- this.webApiService
87
- .httpPost$(this.resourceApiService.getPageUrl(selectOptions['ResourceURL']), param)
88
- .pipe(map((resp) => {
89
- resp.dataSet.forEach((item) => {
90
- optionList.push({
91
- name: item[selectOptions['Name']],
92
- value: item[selectOptions['Value']]
93
- });
94
- });
95
- this.qbItems[field.Value]['options'] = optionList;
96
- })).subscribe();
97
- }
98
- }
99
- // Default rule to display
100
- this.qbItems[field.Value] = {
101
- name: field.Name,
102
- value: field.Value,
103
- type: field.Type,
104
- operatorList: field['Operators'],
105
- options: optionList,
106
- nullable: field['IsNullable'],
107
- defaultValue: field['DefaultValue'] ? field['DefaultValue'] : null
108
- };
109
- });
110
- this.currentConfig = {
111
- fields: this.qbItems,
112
- allowEmptyRulesets: true
113
- };
114
- });
115
- // append default query if any.
116
- if (this.data['DefaultQuery']) {
117
- let defaultQueryValueString = ZComponentHelper.getGroupEvalValue.call(this, this.data['DefaultQuery'], this.group);
118
- if (defaultQueryValueString) {
119
- this.setQueryValue(defaultQueryValueString);
120
- }
121
- }
122
- }
123
- catch (error) {
124
- console.error("error: ", error);
125
- }
126
- }
127
- completeRule(isUndo, queryValue) {
128
- this.isDisabled = isUndo;
129
- const qbResultValueName = this.data.Type + '_' + this.data.Value;
130
- this.group[qbResultValueName] = this.queryBuilder.value;
131
- if (queryValue) {
132
- this.group[qbResultValueName] = queryValue;
133
- }
134
- if (!isUndo) {
135
- this.group[qbResultValueName] = [];
136
- }
137
- if (this.group.zModel) {
138
- ZComponentHelper.setModelValue(this.data.Value, this.group[qbResultValueName], this.group);
139
- }
140
- if (this.data['OnApplyClick'] && !queryValue) {
141
- let callFunc = ZComponentHelper.getGroupEvalValue.call(this, this.data['OnApplyClick'], this.group);
142
- const newFunc = callFunc.bind(this);
143
- newFunc(this.group, this.group[qbResultValueName], this.fields);
144
- }
145
- }
146
- getOperators(defaultOperatorList, rule) {
147
- return this.qbItems[rule.field].operatorList ? this.qbItems[rule.field].operatorList : defaultOperatorList;
148
- }
149
- getOptionList(optionsList, rule) {
150
- return this.qbItems[rule.field].options ? this.qbItems[rule.field].options : optionsList;
151
- }
152
- setQueryValue(queryValueString) {
153
- if (queryValueString) {
154
- const defaultQueryValueJson = toQueryRule(JSON.parse(queryValueString));
155
- this.queryCtrl = defaultQueryValueJson;
156
- // default lock the query builder if there default query
157
- this.completeRule(true, defaultQueryValueJson);
158
- }
159
- }
160
- }
161
- ZquerybuilderComponent.decorators = [
162
- { type: Component, args: [{
163
- selector: 'app-zquerybuilder',
164
- template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div class=\"qbcontainer\">\r\n <query-builder [(ngModel)]='queryCtrl'\r\n [(config)]='currentConfig'\r\n [allowRuleset]='allowRuleset'\r\n [allowCollapse]='allowCollapse'\r\n [persistValueOnFieldChange]='persistValueOnFieldChange'>\r\n <!--AND OR Swtich-->\r\n <ng-container *querySwitchGroup=\"let ruleset; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"ruleset.condition\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"conditionList\"\r\n [disabled]=\"isDisabled\"\r\n style=\"text-transform: uppercase;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Rule RuleSet Remove Rule Set Button-->\r\n <ng-container *queryButtonGroup=\"let ruleset; let addRule=addRule; let addRuleSet=addRuleSet; let removeRuleSet=removeRuleSet\">\r\n <!--Add Rule Button-->\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRule()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add</span>\r\n </ion-button>\r\n <!--Add RuleSet Button-->\r\n <ion-button *ngIf=\"addRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"addRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonadd\">\r\n <fa-icon [icon]=\"'plus'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Add Rule Set</span>\r\n </ion-button>\r\n <!--Remove RuleSet Button-->\r\n <ion-button *ngIf=\"removeRuleSet\"\r\n fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRuleSet()\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'times'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule Set</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Remove Rule Button-->\r\n <ng-container *queryRemoveButton=\"let rule; let removeRule=removeRule\">\r\n <ion-button fill=\"outline\"\r\n size=\"small\"\r\n strong=\"false\"\r\n (click)=\"removeRule(rule)\"\r\n [disabled]=\"isDisabled\"\r\n class=\"buttonremove\">\r\n <fa-icon [icon]=\"'minus'\"\r\n style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Remove Rule</span>\r\n </ion-button>\r\n </ng-container>\r\n <!--Name dropdown-->\r\n <ng-container *queryField=\"let rule; let fields=fields; let onChange=onChange; let getFields=getFields\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.field\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getFields(rule.entity)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Operator dropdown-->\r\n <ng-container *queryOperator=\"let rule; let operators=operators; let onChange=onChange\" style=\"padding:10px\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.operator\"\r\n (ngModelChange)=\"onChange($event, rule)\"\r\n [data]=\"getOperators(operators, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n style=\"padding-right:10px;\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--Text Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'string'; let onChange=onChange\">\r\n <kendo-textbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [clearButton]=\"true\"\r\n [disabled]=\"isDisabled\"\r\n class=\"customTextbox\">\r\n </kendo-textbox>\r\n </ng-container>\r\n <!--TextArea Field-->\r\n <ng-container *queryInput=\"let rule; type: 'textarea'; let onChange=onChange\">\r\n <kendo-textarea [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [rows]=\"5\"\r\n [cols]=\"40\"\r\n resizable=\"none\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-textarea>\r\n </ng-container>\r\n <!--Number Field-->\r\n <ng-container *queryInput=\"let rule; let field=field; type: 'number'; let onChange=onChange\">\r\n <kendo-numerictextbox [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [value]=\"value\"\r\n [decimals]=\"0\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-numerictextbox>\r\n </ng-container>\r\n <!--Date Field-->\r\n <ng-container *queryInput=\"let rule; type: 'date'; let onChange=onChange\">\r\n <kendo-datepicker [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n calendarType=\"classic\"\r\n [value]=\"value\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-datepicker>\r\n </ng-container>\r\n <!--Category Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'category'; let onChange=onChange\">\r\n <kendo-dropdownlist [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-dropdownlist>\r\n </ng-container>\r\n <!--DropDown MultiSelect Field-->\r\n <ng-container *queryInput=\"let rule; let options=options; type: 'multiselect'; let onChange=onChange\">\r\n <kendo-multiselect [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n [data]=\"getOptionList(options, rule)\"\r\n textField=\"name\"\r\n valueField=\"value\"\r\n [value]=\"value\"\r\n [valuePrimitive]=\"true\"\r\n [autoClose]=\"false\"\r\n style=\"width:30%\"\r\n [disabled]=\"isDisabled\">\r\n </kendo-multiselect>\r\n </ng-container>\r\n <!--Boolean Field-->\r\n <ng-container *queryInput=\"let rule; type: 'boolean'; let onChange=onChange\">\r\n <input type=\"checkbox\"\r\n [(ngModel)]=\"rule.value\"\r\n (ngModelChange)=\"onChange()\"\r\n class=\"customCheckBox\"\r\n [disabled]=\"isDisabled\"\r\n kendoCheckBox />\r\n </ng-container>\r\n </query-builder>\r\n <br>\r\n <div *ngIf=\"data.ShowQueryResult\">\r\n <div>\r\n <label>Query Result</label>\r\n </div>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n [cols]=\"40\">{{queryCtrl | json}}</textarea>\r\n <br>\r\n </div>\r\n <div style=\"width:100%\" slot=\"end\">\r\n <ion-button *ngIf=\"!isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(true, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Apply</span>\r\n </ion-button>\r\n <ion-button *ngIf=\"isDisabled\"\r\n strong=\"false\"\r\n (click)=\"completeRule(false, null)\"\r\n class=\"buttonapply\">\r\n <fa-icon [icon]=\"'save'\" style=\"padding-right: 5px;\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">Undo Apply</span>\r\n </ion-button>\r\n </div>\r\n </div>\r\n</ion-item>\r\n",
165
- styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep query-builder .k-dropdown .k-dropdown-wrap,:host ::ng-deep query-builder .k-dropdowntree .k-dropdown-wrap{background-color:#fff}:host ::ng-deep query-builder .customTextbox{width:calc(100% - 440px);min-width:230px}:host ::ng-deep query-builder .customCheckBox{width:27px;height:27px}:host ::ng-deep query-builder .buttonadd{background-color:#479400;color:#fff;border-color:#479400}:host ::ng-deep query-builder .buttonremove{background-color:#f04141;color:#fff;border-color:#f04141;margin-top:0}.buttonapply{background-color:#5596e6;color:#fff;border-color:#5596e6}"]
166
- },] }
167
- ];
168
- ZquerybuilderComponent.ctorParameters = () => [
169
- { type: FieldService },
170
- { type: ResourceApiService },
171
- { type: WebApiService }
172
- ];
173
- ZquerybuilderComponent.propDecorators = {
174
- queryBuilder: [{ type: ViewChild, args: [QueryBuilderComponent, { static: false },] }],
175
- classNames: [{ type: Input }],
176
- data: [{ type: Input }],
177
- group: [{ type: Input }],
178
- form: [{ type: Input }]
179
- };
180
- export function toQueryRule(queryBuilderModel) {
181
- let rule = {};
182
- if (queryBuilderModel.condition) {
183
- rule.condition = queryBuilderModel.condition;
184
- rule.rules = queryBuilderModel.rules.map(q => toQueryRule(q));
185
- }
186
- else {
187
- rule.field = queryBuilderModel.field;
188
- rule.type = queryBuilderModel.type;
189
- rule.operator = queryBuilderModel.operator;
190
- rule.value = queryBuilderModel.value instanceof Array
191
- ? queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value
192
- : [queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value];
193
- }
194
- return rule;
195
- }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienF1ZXJ5YnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cXVlcnlidWlsZGVyL3pxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBOEMscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRywyQ0FBMkM7QUFDM0MsT0FBTyxFQUNMLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFDaEMsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUNoRixNQUFNLGlCQUFpQixDQUFDO0FBU3pCLE1BQU0sT0FBTyxzQkFBc0I7SUF3QmpDLFlBQ1UsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLGFBQTRCO1FBRjVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFwQnRDLDJCQUEyQjtRQUMzQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRU4sd0JBQW1CLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBRWpELGtCQUFhLEdBQXVCO1lBQ3pDLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysa0JBQWtCLEVBQUUsSUFBSTtTQUN6QixDQUFDO1FBQ0ssaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0Isa0JBQWEsR0FBVyxLQUFLLENBQUM7UUFDOUIsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBQzNDLGVBQVUsR0FB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Q0FBQyxRQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLFlBQVksS0FBSztZQUNuRCxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUs7WUFDakcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3ZHO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJDb25maWcsIFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXMsIFF1ZXJ5QnVpbGRlckNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXIyLXF1ZXJ5LWJ1aWxkZXInO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIEZpZWxkU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpGaWVsZCwgWkdyb3VwLFxyXG4gIEZvbnRBd2VTb21lU2VydmljZSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zLCBXZWJBcGlTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2VcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpxdWVyeWJ1aWxkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96cXVlcnlidWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96cXVlcnlidWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBacXVlcnlidWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFF1ZXJ5QnVpbGRlckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHF1ZXJ5QnVpbGRlcjogUXVlcnlCdWlsZGVyQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZXM6IFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXM7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICAvL3FiSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBxYkl0ZW1zID0ge307XHJcblxyXG4gIHB1YmxpYyBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHVibGljIHF1ZXJ5Q3RybDogYW55O1xyXG4gIHB1YmxpYyBjdXJyZW50Q29uZmlnOiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7XHJcbiAgICBmaWVsZHM6IHt9LFxyXG4gICAgYWxsb3dFbXB0eVJ1bGVzZXRzOiB0cnVlXHJcbiAgfTtcclxuICBwdWJsaWMgYWxsb3dSdWxlc2V0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYWxsb3dDb2xsYXBzZTogYm9vbGVhbj0gZmFsc2U7XHJcbiAgcHVibGljIHBlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTsgXHJcbiAgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcnVsZTogYW55O1xyXG4gIHB1YmxpYyB2YWx1ZTogYW55O1xyXG4gIHByaXZhdGUgZmllbGRzOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcbiAgICBcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcbiAgICAgXHJcbiAgICBpZiAodGhpcy5kYXRhWydBbGxvd0NvbGxhcHNlJ10gPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5hbGxvd0NvbGxhcHNlID0gdGhpcy5kYXRhWydBbGxvd0NvbGxhcHNlJ107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVsnQWxsb3dSdWxlc2V0J10gPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dSdWxlc2V0ID0gdGhpcy5kYXRhWydBbGxvd1J1bGVzZXQnXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5kYXRhLlZhbHVlLCBcIkZvcm1GaWVsZFwiLCBudWxsLCBudWxsKTsgXHJcbiAgICAgXHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmZpZWxkcy5zdWJzY3JpYmUoZGF0YSA9PiB7IFxyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gSGFuZGxlIE9wdGlvbnNcclxuICAgICAgICAgIGxldCBvcHRpb25MaXN0ID0gW107XHJcblxyXG4gICAgICAgICAgaWYgKGZpZWxkLlR5cGUgPT0gJ2NhdGVnb3J5JyB8fCBmaWVsZC5UeXBlID09ICdtdWx0aXNlbGVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKGZpZWxkWydWYWx1ZU9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICAgIGZpZWxkWydWYWx1ZU9wdGlvbnMnXS5mb3JFYWNoKCh2YWx1ZU9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZU9wdGlvbi5OYW1lLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVPcHRpb24uVmFsdWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZFsnU2VsZWN0T3B0aW9ucyddO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbSA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRQYWdlU2V0dGluZ1BhcmFtcyk7XHJcbiAgICAgICAgICAgICAgcGFyYW0ucGFnZVNpemUgPSBzZWxlY3RPcHRpb25zWydQYWdlU2l6ZSddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLmNvbHVtbnMgPSBzZWxlY3RPcHRpb25zWydDb2x1bW5zJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uZmlsdGVycyArPSBzZWxlY3RPcHRpb25zWydGaWx0ZXJzJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uc29ydENvbHVtbk5hbWUgPSBzZWxlY3RPcHRpb25zWydTb3J0Q29sdW1uTmFtZSddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLnNvcnRPcmRlciA9IHNlbGVjdE9wdGlvbnNbJ1NvcnRPcmRlciddO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLndlYkFwaVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5odHRwUG9zdCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0UGFnZVVybChzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddKSwgcGFyYW0pXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgbWFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhU2V0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbVtzZWxlY3RPcHRpb25zWydOYW1lJ11dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVtzZWxlY3RPcHRpb25zWydWYWx1ZSddXVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xYkl0ZW1zW2ZpZWxkLlZhbHVlXVsnb3B0aW9ucyddID0gb3B0aW9uTGlzdFxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIERlZmF1bHQgcnVsZSB0byBkaXNwbGF5XHJcbiAgICAgICAgICB0aGlzLnFiSXRlbXNbZmllbGQuVmFsdWVdID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBmaWVsZC5OYW1lLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmllbGQuVmFsdWUsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLlR5cGUsXHJcbiAgICAgICAgICAgIG9wZXJhdG9yTGlzdDogZmllbGRbJ09wZXJhdG9ycyddLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25MaXN0LFxyXG4gICAgICAgICAgICBudWxsYWJsZTogZmllbGRbJ0lzTnVsbGFibGUnXSxcclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmaWVsZFsnRGVmYXVsdFZhbHVlJ10gPyBmaWVsZFsnRGVmYXVsdFZhbHVlJ10gOiBudWxsXHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICBcclxuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSB7XHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMucWJJdGVtcyxcclxuICAgICAgICAgIGFsbG93RW1wdHlSdWxlc2V0czogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIGFwcGVuZCBkZWZhdWx0IHF1ZXJ5IGlmIGFueS5cclxuICAgICAgaWYgKHRoaXMuZGF0YVsnRGVmYXVsdFF1ZXJ5J10pIHtcclxuICAgICAgICBsZXQgZGVmYXVsdFF1ZXJ5VmFsdWVTdHJpbmcgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgdGhpcy5kYXRhWydEZWZhdWx0UXVlcnknXSxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgICApOyBcclxuXHJcbiAgICAgICAgaWYgKGRlZmF1bHRRdWVyeVZhbHVlU3RyaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFF1ZXJ5VmFsdWUoZGVmYXVsdFF1ZXJ5VmFsdWVTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgfSBcclxuICB9XHJcbiAgICBcclxuICBwdWJsaWMgY29tcGxldGVSdWxlKGlzVW5kbzogYm9vbGVhbiwgcXVlcnlWYWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc1VuZG87IFxyXG4gICAgY29uc3QgcWJSZXN1bHRWYWx1ZU5hbWUgPSB0aGlzLmRhdGEuVHlwZSArICdfJyArIHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdID0gdGhpcy5xdWVyeUJ1aWxkZXIudmFsdWUgIFxyXG5cclxuICAgIGlmIChxdWVyeVZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdID0gcXVlcnlWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWlzVW5kbykge1xyXG4gICAgICB0aGlzLmdyb3VwW3FiUmVzdWx0VmFsdWVOYW1lXSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwLnpNb2RlbCkge1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCB0aGlzLmdyb3VwW3FiUmVzdWx0VmFsdWVOYW1lXSwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVsnT25BcHBseUNsaWNrJ10gJiYgIXF1ZXJ5VmFsdWUpIHtcclxuICAgICAgbGV0IGNhbGxGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgdGhpcy5kYXRhWydPbkFwcGx5Q2xpY2snXSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgICBuZXdGdW5jKHRoaXMuZ3JvdXAsIHRoaXMuZ3JvdXBbcWJSZXN1bHRWYWx1ZU5hbWVdLCB0aGlzLmZpZWxkcyk7XHJcbiAgICB9IFxyXG4gIH1cclxuICAgXHJcbiAgcHVibGljIGJvb3RzdHJhcENsYXNzTmFtZXM6IFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXMgPSB7XHJcbiAgICBhcnJvd0ljb246ICdmYSBmYS1jaGV2cm9uLXJpZ2h0IHB4LTInLFxyXG4gICAgYnV0dG9uOiAnYnRuJyxcclxuICAgIGJ1dHRvbkdyb3VwOiAnYnRuLWdyb3VwJyxcclxuICAgIHJpZ2h0QWxpZ246ICdvcmRlci0xMiBtbC1hdXRvJyxcclxuICAgIHN3aXRjaFJvdzogJ2QtZmxleCBweC0yJyxcclxuICAgIHN3aXRjaEdyb3VwOiAnZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlcicsXHJcbiAgICBzd2l0Y2hSYWRpbzogJ2N1c3RvbS1jb250cm9sLWlucHV0JyxcclxuICAgIHN3aXRjaExhYmVsOiAnY3VzdG9tLWNvbnRyb2wtbGFiZWwnLFxyXG4gICAgc3dpdGNoQ29udHJvbDogJ2N1c3RvbS1jb250cm9sIGN1c3RvbS1yYWRpbyBjdXN0b20tY29udHJvbC1pbmxpbmUnLFxyXG4gICAgcm93OiAncm93IHAtMiBtLTEnLFxyXG4gICAgcnVsZTogJ2JvcmRlcicsXHJcbiAgICBydWxlU2V0OiAnYm9yZGVyJyxcclxuICAgIGludmFsaWRSdWxlU2V0OiAnYWxlcnQgYWxlcnQtZGFuZ2VyJyxcclxuICAgIGVtcHR5V2FybmluZzogJ3RleHQtZGFuZ2VyIG14LWF1dG8nLFxyXG4gICAgb3BlcmF0b3JDb250cm9sOiAnZm9ybS1jb250cm9sJyxcclxuICAgIG9wZXJhdG9yQ29udHJvbFNpemU6ICdjb2wtYXV0byBwci0wJyxcclxuICAgIGZpZWxkQ29udHJvbDogJ2Zvcm0tY29udHJvbCcsXHJcbiAgICBmaWVsZENvbnRyb2xTaXplOiAnY29sLWF1dG8gcHItMCcsXHJcbiAgICBlbnRpdHlDb250cm9sOiAnZm9ybS1jb250cm9sJyxcclxuICAgIGVudGl0eUNvbnRyb2xTaXplOiAnY29sLWF1dG8gcHItMCcsXHJcbiAgICBpbnB1dENvbnRyb2w6ICdmb3JtLWNvbnRyb2wnLFxyXG4gICAgaW5wdXRDb250cm9sU2l6ZTogJ2NvbC1hdXRvJ1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBjb25kaXRpb25MaXN0OiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgXCJBTkRcIixcclxuICAgIFwiT1JcIlxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBnZXRPcGVyYXRvcnMoZGVmYXVsdE9wZXJhdG9yTGlzdDogYW55LCBydWxlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnFiSXRlbXNbcnVsZS5maWVsZF0ub3BlcmF0b3JMaXN0ID8gdGhpcy5xYkl0ZW1zW3J1bGUuZmllbGRdLm9wZXJhdG9yTGlzdCA6IGRlZmF1bHRPcGVyYXRvckxpc3Q7XHJcbiAgfVxyXG4gICBcclxuICBwdWJsaWMgZ2V0T3B0aW9uTGlzdChvcHRpb25zTGlzdDogYW55LCBydWxlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnFiSXRlbXNbcnVsZS5maWVsZF0ub3B0aW9ucyA/IHRoaXMucWJJdGVtc1tydWxlLmZpZWxkXS5vcHRpb25zIDogb3B0aW9uc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UXVlcnlWYWx1ZShxdWVyeVZhbHVlU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIGlmIChxdWVyeVZhbHVlU3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGRlZmF1bHRRdWVyeVZhbHVlSnNvbiA9IHRvUXVlcnlSdWxlKEpTT04ucGFyc2UocXVlcnlWYWx1ZVN0cmluZykpO1xyXG4gICAgICB0aGlzLnF1ZXJ5Q3RybCA9IGRlZmF1bHRRdWVyeVZhbHVlSnNvbjtcclxuXHJcbiAgICAgIC8vIGRlZmF1bHQgbG9jayB0aGUgcXVlcnkgYnVpbGRlciBpZiB0aGVyZSBkZWZhdWx0IHF1ZXJ5XHJcbiAgICAgIHRoaXMuY29tcGxldGVSdWxlKHRydWUsIGRlZmF1bHRRdWVyeVZhbHVlSnNvbik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UnVsZSB7XHJcbiAgY29uZGl0aW9uOiBzdHJpbmc7XHJcbiAgcnVsZXM6IFF1ZXJ5UnVsZVtdO1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG9wZXJhdG9yOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdG9RdWVyeVJ1bGUocXVlcnlCdWlsZGVyTW9kZWw6IGFueSk6IFF1ZXJ5UnVsZSB7XHJcbiAgbGV0IHJ1bGUgPSA8UXVlcnlSdWxlPnt9O1xyXG4gIGlmIChxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb24pIHtcclxuICAgIHJ1bGUuY29uZGl0aW9uID0gcXVlcnlCdWlsZGVyTW9kZWwuY29uZGl0aW9uO1xyXG4gICAgcnVsZS5ydWxlcyA9IHF1ZXJ5QnVpbGRlck1vZGVsLnJ1bGVzLm1hcChxID0+IHRvUXVlcnlSdWxlKHEpKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcnVsZS5maWVsZCA9IHF1ZXJ5QnVpbGRlck1vZGVsLmZpZWxkO1xyXG4gICAgcnVsZS50eXBlID0gcXVlcnlCdWlsZGVyTW9kZWwudHlwZTtcclxuICAgIHJ1bGUub3BlcmF0b3IgPSBxdWVyeUJ1aWxkZXJNb2RlbC5vcGVyYXRvcjtcclxuICAgIHJ1bGUudmFsdWUgPSBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgID8gcXVlcnlCdWlsZGVyTW9kZWwudHlwZSA9PT0gJ2RhdGUnID8gbmV3IERhdGUocXVlcnlCdWlsZGVyTW9kZWwudmFsdWUpIDogcXVlcnlCdWlsZGVyTW9kZWwudmFsdWVcclxuICAgICAgOiBbcXVlcnlCdWlsZGVyTW9kZWwudHlwZSA9PT0gJ2RhdGUnID8gbmV3IERhdGUocXVlcnlCdWlsZGVyTW9kZWwudmFsdWUpIDogcXVlcnlCdWlsZGVyTW9kZWwudmFsdWVdO1xyXG4gIH1cclxuICByZXR1cm4gcnVsZTtcclxufVxyXG4iXX0=
@@ -1,104 +0,0 @@
1
- /********** Angular **********/
2
- import { Component, ViewChild, Input, ViewEncapsulation } from "@angular/core";
3
- /********** Component & Service **********/
4
- import { ResourceApiService, ZComponentProperties, ZComponentHelper } from "mmhglobal-zcore";
5
- export class ZreportComponent {
6
- constructor(resourceApiService) {
7
- this.resourceApiService = resourceApiService;
8
- this.componentProperties = new ZComponentProperties();
9
- this.title = "Report Viewer";
10
- this.viewerContainerStyle = {
11
- position: "relative",
12
- width: "100%",
13
- height: "800px",
14
- ["font-family"]: "ms sans serif"
15
- };
16
- this.resourceURL = null;
17
- this.ReportSource = null;
18
- this.isVisible = true;
19
- this.paramToResizeReportViewer = false;
20
- }
21
- ngOnInit() {
22
- ZComponentHelper.setComponentProperties(this);
23
- ZComponentHelper.registerComponent(this);
24
- this.resizeReportView = this.onPageReady.bind(this);
25
- this.resourceURL = this.resourceApiService.getURL(this.data.ResourceURL);
26
- if (!this.resourceURL) {
27
- this.resourceURL = this.resourceApiService.getURL('e1wfs_wfm_workflowMasterReportURL');
28
- //this.isVisible = false;
29
- }
30
- if (!!this.data.IsAutoGenerateReport) {
31
- this.ReportSource = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReportSource);
32
- }
33
- }
34
- generateReport() {
35
- const rs = this.group["ReportSource"];
36
- this.resourceURL = rs['url'];
37
- this.viewer.setReportSource(rs);
38
- this.viewer.refreshReport();
39
- if (this.data['AutoResize']) {
40
- this.paramToResizeReportViewer = true;
41
- }
42
- else {
43
- this.paramToResizeReportViewer = false;
44
- }
45
- const thisComponent = this;
46
- const exportButton = $("#trv-main-menu-export-command");
47
- exportButton.on("mouseover", function () {
48
- // trigger to hide list, sometime element not loaded yet.
49
- setTimeout(function () {
50
- // ExportOptions.instance.exportOption(thisComponent);
51
- // ExportOptions.instance.hideUnwantedOptions();
52
- }, 300);
53
- });
54
- }
55
- ready(thisComponent) {
56
- // console.log("ready");
57
- // ExportOptions.init(thisComponent);
58
- }
59
- viewerToolTipOpening(args) {
60
- // console.log("viewerToolTipOpening " + args.toolTip.text);
61
- }
62
- onRenderingEnd(e, args) {
63
- // Occurs after rendering the report.
64
- // ExportOptions.instance.update(e.target.reportSource().report);
65
- }
66
- exportBegin(args) {
67
- }
68
- exportEnd(args) {
69
- }
70
- onPageReady(e, args) {
71
- if (this.paramToResizeReportViewer) {
72
- var pageHeight = $(".trv-pages-area .trv-page-wrapper").height() + $(".trv-nav").outerHeight() + 20, // Calculate the report page height
73
- viewer = $("#reportViewer1"), viewerHeight = viewer.height();
74
- if (viewerHeight !== pageHeight) {
75
- viewer.height(pageHeight);
76
- var documentMapSplitter = $(".trv-document-map-splitter").data("kendoSplitter");
77
- if (documentMapSplitter !== undefined) {
78
- documentMapSplitter.resize(true);
79
- }
80
- var parameterSplitter = $(".trv-parameters-splitter").data("kendoSplitter");
81
- if (parameterSplitter !== undefined) {
82
- parameterSplitter.resize(true);
83
- }
84
- }
85
- }
86
- }
87
- }
88
- ZreportComponent.decorators = [
89
- { type: Component, args: [{
90
- selector: "app-zreport",
91
- template: "<div *ngIf=\"isVisible\" width=\"100%\" height=\"800px\">\r\n <tr-viewer #ReportViewer\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [pageMode]=\"'SINGLE_PAGE'\"\r\n [scale]=\"1.0\"\r\n [ready]=\"ready(this)\"\r\n [exportBegin]=\"exportBegin(this)\"\r\n [exportEnd]=\"exportEnd(this)\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [enableAccessibility]=\"false\"\r\n [pageReady] = \"resizeReportView()\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n",
92
- encapsulation: ViewEncapsulation.None,
93
- styles: [""]
94
- },] }
95
- ];
96
- ZreportComponent.ctorParameters = () => [
97
- { type: ResourceApiService }
98
- ];
99
- ZreportComponent.propDecorators = {
100
- viewer: [{ type: ViewChild, args: ["ReportViewer",] }],
101
- data: [{ type: Input }],
102
- group: [{ type: Input }]
103
- };
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRdkYsMkNBQTJDO0FBQzNDLE9BQU8sRUFDTCxrQkFBa0IsRUFBa0Isb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQzNFLE1BQU0saUJBQWlCLENBQUM7QUFZekIsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQU8xRCx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFFakQsVUFBSyxHQUFHLGVBQWUsQ0FBQztRQUN4Qix5QkFBb0IsR0FBRztZQUNyQixRQUFRLEVBQUUsVUFBVTtZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxPQUFPO1lBQ2YsQ0FBQyxhQUFhLENBQUMsRUFBRSxlQUFlO1NBQ2pDLENBQUM7UUFFRixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVwQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztJQXRCNEIsQ0FBQztJQXlCL0QsUUFBUTtRQUNOLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUN2Rix5QkFBeUI7U0FDMUI7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNGO0lBQ0gsQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO2FBQU07WUFDTCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3hELFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQzNCLHlEQUF5RDtZQUN6RCxVQUFVLENBQUM7Z0JBQ1Qsc0RBQXNEO2dCQUN0RCxnREFBZ0Q7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWtCO1FBQ3RCLHdCQUF3QjtRQUN4QixxQ0FBcUM7SUFDdkMsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsNERBQTREO0lBQzlELENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUk7UUFDcEIscUNBQXFDO1FBQ3JDLGlFQUFpRTtJQUNuRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVM7SUFDckIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFTO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBTSxFQUFFLElBQVE7UUFDMUIsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7WUFDbEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsRUFBRSxtQ0FBbUM7WUFDcEksTUFBTSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRW5DLElBQUksWUFBWSxLQUFLLFVBQVUsRUFBRztnQkFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2hGLElBQUksbUJBQW1CLEtBQUksU0FBUyxFQUFFO29CQUNwQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLGlCQUFpQixLQUFJLFNBQVMsRUFBRTtvQkFDbEMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQzthQUNKO1NBQ0Y7SUFDSCxDQUFDOzs7WUE5R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixteUJBQXVDO2dCQUV2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztZQVpDLGtCQUFrQjs7O3FCQWdCakIsU0FBUyxTQUFDLGNBQWM7bUJBRXhCLEtBQUs7b0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgRXhwb3J0T3B0aW9ucyB9IGZyb20gXCIuL3pyZXBvcnQuY29uZmlnXCI7XHJcbmltcG9ydCB7IFRlbGVyaWtSZXBvcnRWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL3RlbGVyaWstYW5ndWxhci1yZXBvcnQtdmlld2VyXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgUmVzb3VyY2VBcGlTZXJ2aWNlLCBaRmllbGQsIFpHcm91cCwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpDb21wb25lbnRIZWxwZXJcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcblxyXG5cclxuLy8gaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenJlcG9ydFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venJlcG9ydC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96cmVwb3J0LmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFpyZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UpIHsgfVxyXG5cclxuICBAVmlld0NoaWxkKFwiUmVwb3J0Vmlld2VyXCIpXHJcbiAgdmlld2VyOiBUZWxlcmlrUmVwb3J0Vmlld2VyQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG5cclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcblxyXG4gIHRpdGxlID0gXCJSZXBvcnQgVmlld2VyXCI7XHJcbiAgdmlld2VyQ29udGFpbmVyU3R5bGUgPSB7XHJcbiAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxyXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjgwMHB4XCIsXHJcbiAgICBbXCJmb250LWZhbWlseVwiXTogXCJtcyBzYW5zIHNlcmlmXCJcclxuICB9O1xyXG5cclxuICByZXNvdXJjZVVSTCA9IG51bGw7XHJcbiAgUmVwb3J0U291cmNlID0gbnVsbDtcclxuXHJcbiAgaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgcGFyYW1Ub1Jlc2l6ZVJlcG9ydFZpZXdlciA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNpemVSZXBvcnRWaWV3OiBGdW5jdGlvbjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG4gICAgdGhpcy5yZXNpemVSZXBvcnRWaWV3ID0gdGhpcy5vblBhZ2VSZWFkeS5iaW5kKHRoaXMpO1xyXG5cclxuICAgIHRoaXMucmVzb3VyY2VVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwodGhpcy5kYXRhLlJlc291cmNlVVJMKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVzb3VyY2VVUkwpIHtcclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZTF3ZnNfd2ZtX3dvcmtmbG93TWFzdGVyUmVwb3J0VVJMJyk7XHJcbiAgICAgIC8vdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmRhdGEuSXNBdXRvR2VuZXJhdGVSZXBvcnQpIHtcclxuICAgICAgdGhpcy5SZXBvcnRTb3VyY2UgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlcG9ydFNvdXJjZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVSZXBvcnQoKSB7XHJcbiAgICBjb25zdCBycyA9IHRoaXMuZ3JvdXBbXCJSZXBvcnRTb3VyY2VcIl07XHJcbiAgICB0aGlzLnJlc291cmNlVVJMID0gcnNbJ3VybCddO1xyXG4gICAgdGhpcy52aWV3ZXIuc2V0UmVwb3J0U291cmNlKHJzKTtcclxuICAgIHRoaXMudmlld2VyLnJlZnJlc2hSZXBvcnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydBdXRvUmVzaXplJ10pIHtcclxuICAgICAgdGhpcy5wYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFyYW1Ub1Jlc2l6ZVJlcG9ydFZpZXdlciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRoaXNDb21wb25lbnQgPSB0aGlzO1xyXG4gICAgY29uc3QgZXhwb3J0QnV0dG9uID0gJChcIiN0cnYtbWFpbi1tZW51LWV4cG9ydC1jb21tYW5kXCIpO1xyXG4gICAgZXhwb3J0QnV0dG9uLm9uKFwibW91c2VvdmVyXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgLy8gdHJpZ2dlciB0byBoaWRlIGxpc3QsIHNvbWV0aW1lIGVsZW1lbnQgbm90IGxvYWRlZCB5ZXQuXHJcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIEV4cG9ydE9wdGlvbnMuaW5zdGFuY2UuZXhwb3J0T3B0aW9uKHRoaXNDb21wb25lbnQpO1xyXG4gICAgICAgIC8vIEV4cG9ydE9wdGlvbnMuaW5zdGFuY2UuaGlkZVVud2FudGVkT3B0aW9ucygpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWFkeSh0aGlzQ29tcG9uZW50OiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwicmVhZHlcIik7XHJcbiAgICAvLyBFeHBvcnRPcHRpb25zLmluaXQodGhpc0NvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICB2aWV3ZXJUb29sVGlwT3BlbmluZyhhcmdzOiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidmlld2VyVG9vbFRpcE9wZW5pbmcgXCIgKyBhcmdzLnRvb2xUaXAudGV4dCk7XHJcbiAgfVxyXG5cclxuICBvblJlbmRlcmluZ0VuZChlLCBhcmdzKTogdm9pZCB7XHJcbiAgICAvLyBPY2N1cnMgYWZ0ZXIgcmVuZGVyaW5nIHRoZSByZXBvcnQuXHJcbiAgICAvLyBFeHBvcnRPcHRpb25zLmluc3RhbmNlLnVwZGF0ZShlLnRhcmdldC5yZXBvcnRTb3VyY2UoKS5yZXBvcnQpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QmVnaW4oYXJnczogYW55KSB7XHJcbiAgfVxyXG5cclxuICBleHBvcnRFbmQoYXJnczogYW55KSB7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VSZWFkeShlOiBhbnksIGFyZ3M6YW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyKSB7XHJcbiAgICAgIHZhciBwYWdlSGVpZ2h0ID0gJChcIi50cnYtcGFnZXMtYXJlYSAudHJ2LXBhZ2Utd3JhcHBlclwiKS5oZWlnaHQoKSArICQoXCIudHJ2LW5hdlwiKS5vdXRlckhlaWdodCgpICsgMjAsIC8vIENhbGN1bGF0ZSB0aGUgcmVwb3J0IHBhZ2UgaGVpZ2h0XHJcbiAgICAgICAgICB2aWV3ZXIgPSAkKFwiI3JlcG9ydFZpZXdlcjFcIiksXHJcbiAgICAgICAgICB2aWV3ZXJIZWlnaHQgPSB2aWV3ZXIuaGVpZ2h0KCk7XHJcblxyXG4gICAgICBpZiAodmlld2VySGVpZ2h0ICE9PSBwYWdlSGVpZ2h0ICkge1xyXG4gICAgICAgICAgdmlld2VyLmhlaWdodChwYWdlSGVpZ2h0KTtcclxuICAgICAgICAgIHZhciBkb2N1bWVudE1hcFNwbGl0dGVyID0gJChcIi50cnYtZG9jdW1lbnQtbWFwLXNwbGl0dGVyXCIpLmRhdGEoXCJrZW5kb1NwbGl0dGVyXCIpO1xyXG4gICAgICAgICAgaWYgKGRvY3VtZW50TWFwU3BsaXR0ZXIgIT09dW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50TWFwU3BsaXR0ZXIucmVzaXplKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIHBhcmFtZXRlclNwbGl0dGVyID0gJChcIi50cnYtcGFyYW1ldGVycy1zcGxpdHRlclwiKS5kYXRhKFwia2VuZG9TcGxpdHRlclwiKTtcclxuICAgICAgICAgIGlmIChwYXJhbWV0ZXJTcGxpdHRlciAhPT11bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcGFyYW1ldGVyU3BsaXR0ZXIucmVzaXplKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,115 +0,0 @@
1
- import { Component } from "@angular/core";
2
- // @dynamic
3
- export class ExportOptions {
4
- constructor() {
5
- this.viewerToolTipOpening = null;
6
- this.resourceURL = null;
7
- this.ReportSource = null;
8
- this.ready = null;
9
- this.exportBegin = null;
10
- this.exportEnd = null;
11
- this.onRenderingEnd = null;
12
- this.viewerContainerStyle = null;
13
- this.isVisible = null;
14
- this.paramToResizeReportViewer = null;
15
- this.resizeReportView = null;
16
- // public static instance: ExportOptions;
17
- // public static init(component: any) {
18
- // if (!ExportOptions.instance) {
19
- // ExportOptions.instance = new ExportOptions();
20
- // }
21
- // ExportOptions.instance.bindEvents(component);
22
- // // Add the options when init. Sometime it will not init the class.
23
- // ExportOptions.instance.hideOptions = ["PDF", "CSV", "XLS", "XLSX", "RTF", "IMAGE", "MHTML", "XPS"];
24
- // }
25
- this.largeMenuBound = false;
26
- this.sideMenuBound = false;
27
- this.reportSource = "";
28
- this.hideOptions = [];
29
- }
30
- update(reportSource) {
31
- this.reportSource = reportSource;
32
- // show all extensions
33
- //$('[data-command-parameter]').show();
34
- // check to hide options
35
- this.hideUnwantedOptions();
36
- }
37
- bindEvents(component) {
38
- this.exportOption(component);
39
- const sideMenu = $(".trv-side-menu").children("ul").data('kendoPanelBar');
40
- const largeMenu = $(".trv-menu-large").data("kendoMenu");
41
- const smallMenu = $(".trv-menu-small");
42
- // hide export button if all option is not available
43
- if (this.hideOptions.length == 8) {
44
- const exportButton = $("[data-command*='telerik_ReportViewer_export']");
45
- exportButton.hide();
46
- }
47
- // bind to the 'open' event of the main menu
48
- if (!this.largeMenuBound && largeMenu) {
49
- largeMenu.bind("open", () => {
50
- this.hideUnwantedOptions();
51
- });
52
- this.largeMenuBound = true;
53
- }
54
- // bind to the 'expand' event of the side menu
55
- if (!this.sideMenuBound && smallMenu) {
56
- if (sideMenu) {
57
- sideMenu.bind("expand", () => {
58
- // recheck export options
59
- //if (reloadHideOptions) {
60
- // thisComponent.exportOption(thisComponent);
61
- //}
62
- this.hideUnwantedOptions();
63
- });
64
- }
65
- this.sideMenuBound = true;
66
- }
67
- }
68
- exportOption(component) {
69
- const _data = component.data;
70
- if (_data.EnableExportPDF) {
71
- this.hideOptions = this.hideOptions.filter(item => item !== "PDF");
72
- }
73
- if (_data.EnableExportCSV) {
74
- this.hideOptions = this.hideOptions.filter(item => item !== "CSV");
75
- }
76
- if (_data.EnableExportExcel) {
77
- this.hideOptions = this.hideOptions.filter(item => item !== "XLS");
78
- this.hideOptions = this.hideOptions.filter(item => item !== "XLSX");
79
- }
80
- if (_data.EnableExportRTF) {
81
- this.hideOptions = this.hideOptions.filter(item => item !== "RTF");
82
- }
83
- if (_data.EnableExportTIFF) {
84
- this.hideOptions = this.hideOptions.filter(item => item !== "IMAGE");
85
- }
86
- if (_data.EnableExportMHTML) {
87
- this.hideOptions = this.hideOptions.filter(item => item !== "MHTML");
88
- }
89
- if (_data.EnableExportXPS) {
90
- this.hideOptions = this.hideOptions.filter(item => item !== "XPS");
91
- }
92
- }
93
- hideUnwantedOptions() {
94
- // show all extensions
95
- $('[data-command-parameter]').show();
96
- // hide the specified extensions
97
- $.each(this.hideOptions, function (index, item) {
98
- var hiddenOption = $('[data-command-parameter="' + item + '"]');
99
- if (hiddenOption && hiddenOption.length) {
100
- hiddenOption.hide();
101
- }
102
- });
103
- }
104
- resizeViewer() {
105
- return null;
106
- }
107
- }
108
- ExportOptions.decorators = [
109
- { type: Component, args: [{
110
- selector: "app-zreport",
111
- template: "<div *ngIf=\"isVisible\" width=\"100%\" height=\"800px\">\r\n <tr-viewer #ReportViewer\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [pageMode]=\"'SINGLE_PAGE'\"\r\n [scale]=\"1.0\"\r\n [ready]=\"ready(this)\"\r\n [exportBegin]=\"exportBegin(this)\"\r\n [exportEnd]=\"exportEnd(this)\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [enableAccessibility]=\"false\"\r\n [pageReady] = \"resizeReportView()\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n",
112
- styles: [""]
113
- },] }
114
- ];
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFVdEQsV0FBVztBQUNYLE1BQU0sT0FBTyxhQUFhO0lBUDFCO1FBUUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLDhCQUF5QixHQUFHLElBQUksQ0FBQztRQUNqQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIseUNBQXlDO1FBQ3pDLHVDQUF1QztRQUN2QyxtQ0FBbUM7UUFDbkMsb0RBQW9EO1FBQ3BELE1BQU07UUFDTixrREFBa0Q7UUFFbEQsdUVBQXVFO1FBQ3ZFLHdHQUF3RztRQUN4RyxJQUFJO1FBRUksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7SUEyRjNCLENBQUM7SUF6RlEsTUFBTSxDQUFDLFlBQW9CO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLHNCQUFzQjtRQUN0Qix1Q0FBdUM7UUFFdkMsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFB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QUFLLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixzQkFBc0I7UUFDdEIsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckMsZ0NBQWdDO1FBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEtBQUssRUFBRSxJQUFJO1lBQzVDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQywyQkFBMkIsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDaEUsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDdkMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OztZQTNIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLG15QkFBdUM7O2FBRXhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuLy8gaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenJlcG9ydFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venJlcG9ydC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96cmVwb3J0LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEV4cG9ydE9wdGlvbnMge1xyXG4gIHZpZXdlclRvb2xUaXBPcGVuaW5nID0gbnVsbDtcclxuICByZXNvdXJjZVVSTCA9IG51bGw7XHJcbiAgUmVwb3J0U291cmNlID0gbnVsbDtcclxuICByZWFkeSA9IG51bGw7XHJcbiAgZXhwb3J0QmVnaW4gPSBudWxsO1xyXG4gIGV4cG9ydEVuZCA9IG51bGw7XHJcbiAgb25SZW5kZXJpbmdFbmQgPSBudWxsO1xyXG4gIHZpZXdlckNvbnRhaW5lclN0eWxlID0gbnVsbDtcclxuICBpc1Zpc2libGUgPSBudWxsO1xyXG4gIHBhcmFtVG9SZXNpemVSZXBvcnRWaWV3ZXIgPSBudWxsO1xyXG4gIHJlc2l6ZVJlcG9ydFZpZXcgPSBudWxsO1xyXG4gIC8vIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2U6IEV4cG9ydE9wdGlvbnM7XHJcbiAgLy8gcHVibGljIHN0YXRpYyBpbml0KGNvbXBvbmVudDogYW55KSB7XHJcbiAgLy8gICBpZiAoIUV4cG9ydE9wdGlvbnMuaW5zdGFuY2UpIHtcclxuICAvLyAgICAgRXhwb3J0T3B0aW9ucy5pbnN0YW5jZSA9IG5ldyBFeHBvcnRPcHRpb25zKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBFeHBvcnRPcHRpb25zLmluc3RhbmNlLmJpbmRFdmVudHMoY29tcG9uZW50KTtcclxuXHJcbiAgLy8gICAvLyBBZGQgdGhlIG9wdGlvbnMgd2hlbiBpbml0LiBTb21ldGltZSBpdCB3aWxsIG5vdCBpbml0IHRoZSBjbGFzcy5cclxuICAvLyAgIEV4cG9ydE9wdGlvbnMuaW5zdGFuY2UuaGlkZU9wdGlvbnMgPSBbXCJQREZcIiwgXCJDU1ZcIiwgXCJYTFNcIiwgXCJYTFNYXCIsIFwiUlRGXCIsIFwiSU1BR0VcIiwgXCJNSFRNTFwiLCBcIlhQU1wiXTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgbGFyZ2VNZW51Qm91bmQgPSBmYWxzZTtcclxuICBwcml2YXRlIHNpZGVNZW51Qm91bmQgPSBmYWxzZTtcclxuICBwcml2YXRlIHJlcG9ydFNvdXJjZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBoaWRlT3B0aW9ucyA9IFtdO1xyXG5cclxuICBwdWJsaWMgdXBkYXRlKHJlcG9ydFNvdXJjZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlcG9ydFNvdXJjZSA9IHJlcG9ydFNvdXJjZTtcclxuICAgIC8vIHNob3cgYWxsIGV4dGVuc2lvbnNcclxuICAgIC8vJCgnW2RhdGEtY29tbWFuZC1wYXJhbWV0ZXJdJykuc2hvdygpO1xyXG5cclxuICAgIC8vIGNoZWNrIHRvIGhpZGUgb3B0aW9uc1xyXG4gICAgdGhpcy5oaWRlVW53YW50ZWRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmluZEV2ZW50cyhjb21wb25lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leHBvcnRPcHRpb24oY29tcG9uZW50KTtcclxuXHJcbiAgICBjb25zdCBzaWRlTWVudSA9ICQoXCIudHJ2LXNpZGUtbWVudVwiKS5jaGlsZHJlbihcInVsXCIpLmRhdGEoJ2tlbmRvUGFuZWxCYXInKTtcclxuICAgIGNvbnN0IGxhcmdlTWVudSA9ICQoXCIudHJ2LW1lbnUtbGFyZ2VcIikuZGF0YShcImtlbmRvTWVudVwiKTtcclxuICAgIGNvbnN0IHNtYWxsTWVudSA9ICQoXCIudHJ2LW1lbnUtc21hbGxcIik7XHJcblxyXG4gICAgLy8gaGlkZSBleHBvcnQgYnV0dG9uIGlmIGFsbCBvcHRpb24gaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgaWYgKHRoaXMuaGlkZU9wdGlvbnMubGVuZ3RoID09IDgpIHtcclxuICAgICAgY29uc3QgZXhwb3J0QnV0dG9uID0gJChcIltkYXRhLWNvbW1hbmQqPSd0ZWxlcmlrX1JlcG9ydFZpZXdlcl9leHBvcnQnXVwiKVxyXG4gICAgICBleHBvcnRCdXR0b24uaGlkZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGJpbmQgdG8gdGhlICdvcGVuJyBldmVudCBvZiB0aGUgbWFpbiBtZW51XHJcbiAgICBpZiAoIXRoaXMubGFyZ2VNZW51Qm91bmQgJiYgbGFyZ2VNZW51KSB7XHJcbiAgICAgIGxhcmdlTWVudS5iaW5kKFwib3BlblwiLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlVW53YW50ZWRPcHRpb25zKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5sYXJnZU1lbnVCb3VuZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYmluZCB0byB0aGUgJ2V4cGFuZCcgZXZlbnQgb2YgdGhlIHNpZGUgbWVudVxyXG4gICAgaWYgKCF0aGlzLnNpZGVNZW51Qm91bmQgJiYgc21hbGxNZW51KSB7XHJcbiAgICAgIGlmIChzaWRlTWVudSkge1xyXG4gICAgICAgIHNpZGVNZW51LmJpbmQoXCJleHBhbmRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgLy8gcmVjaGVjayBleHBvcnQgb3B0aW9uc1xyXG4gICAgICAgICAgLy9pZiAocmVsb2FkSGlkZU9wdGlvbnMpIHtcclxuICAgICAgICAgIC8vICB0aGlzQ29tcG9uZW50LmV4cG9ydE9wdGlvbih0aGlzQ29tcG9uZW50KTtcclxuICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgdGhpcy5oaWRlVW53YW50ZWRPcHRpb25zKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2lkZU1lbnVCb3VuZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0T3B0aW9uKGNvbXBvbmVudDogYW55KSB7XHJcbiAgICBjb25zdCBfZGF0YSA9IGNvbXBvbmVudC5kYXRhO1xyXG4gICAgaWYgKF9kYXRhLkVuYWJsZUV4cG9ydFBERikge1xyXG4gICAgICB0aGlzLmhpZGVPcHRpb25zID0gdGhpcy5oaWRlT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBcIlBERlwiKTtcclxuICAgIH1cclxuICAgIGlmIChfZGF0YS5FbmFibGVFeHBvcnRDU1YpIHtcclxuICAgICAgdGhpcy5oaWRlT3B0aW9ucyA9IHRoaXMuaGlkZU9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gXCJDU1ZcIik7XHJcbiAgICB9XHJcbiAgICBpZiAoX2RhdGEuRW5hYmxlRXhwb3J0RXhjZWwpIHtcclxuICAgICAgdGhpcy5oaWRlT3B0aW9ucyA9IHRoaXMuaGlkZU9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gXCJYTFNcIik7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiWExTWFwiKTtcclxuICAgIH1cclxuICAgIGlmIChfZGF0YS5FbmFibGVFeHBvcnRSVEYpIHtcclxuICAgICAgdGhpcy5oaWRlT3B0aW9ucyA9IHRoaXMuaGlkZU9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gXCJSVEZcIik7XHJcbiAgICB9XHJcbiAgICBpZiAoX2RhdGEuRW5hYmxlRXhwb3J0VElGRikge1xyXG4gICAgICB0aGlzLmhpZGVPcHRpb25zID0gdGhpcy5oaWRlT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBcIklNQUdFXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKF9kYXRhLkVuYWJsZUV4cG9ydE1IVE1MKSB7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiTUhUTUxcIik7XHJcbiAgICB9XHJcbiAgICBpZiAoX2RhdGEuRW5hYmxlRXhwb3J0WFBTKSB7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiWFBTXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVVbndhbnRlZE9wdGlvbnMoKSB7XHJcbiAgICAvLyBzaG93IGFsbCBleHRlbnNpb25zXHJcbiAgICAkKCdbZGF0YS1jb21tYW5kLXBhcmFtZXRlcl0nKS5zaG93KCk7XHJcblxyXG4gICAgLy8gaGlkZSB0aGUgc3BlY2lmaWVkIGV4dGVuc2lvbnNcclxuICAgICQuZWFjaCh0aGlzLmhpZGVPcHRpb25zLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcclxuICAgICAgdmFyIGhpZGRlbk9wdGlvbiA9ICQoJ1tkYXRhLWNvbW1hbmQtcGFyYW1ldGVyPVwiJyArIGl0ZW0gKyAnXCJdJyk7XHJcbiAgICAgIGlmIChoaWRkZW5PcHRpb24gJiYgaGlkZGVuT3B0aW9uLmxlbmd0aCkge1xyXG4gICAgICAgIGhpZGRlbk9wdGlvbi5oaWRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2l6ZVZpZXdlcigpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=