mmhglobal-dynamicform 2.40.0 → 3.0.0-beta

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 (234) hide show
  1. package/README.md +0 -11
  2. package/fesm2022/mmhglobal-dynamicform.mjs +15336 -0
  3. package/fesm2022/mmhglobal-dynamicform.mjs.map +1 -0
  4. package/{mmhglobal-dynamicform.d.ts → index.d.ts} +5 -5
  5. package/lib/animations/component-animations.d.ts +3 -3
  6. package/lib/components/{buttonfieldbase.component.d.ts → base/buttonfieldbase.component.d.ts} +18 -26
  7. package/lib/components/{containerfieldbase.component.d.ts → base/containerfieldbase.component.d.ts} +20 -25
  8. package/lib/components/{datalistingfieldbase.component.d.ts → base/datalistingfieldbase.component.d.ts} +45 -51
  9. package/lib/components/{fieldbase.component.d.ts → base/fieldbase.component.d.ts} +49 -49
  10. package/lib/components/{inputfieldbase.component.d.ts → base/inputfieldbase.component.d.ts} +23 -27
  11. package/lib/{dropdown_buttons → components/button/dropdown_buttons}/dropdown_buttons.component.d.ts +15 -21
  12. package/lib/components/button/zbuttons/zbuttons.component.d.ts +19 -0
  13. package/lib/{zchip → components/button/zchip}/zchip.component.d.ts +22 -26
  14. package/lib/{zmfb → components/button/zmfb}/zmfb.component.d.ts +38 -43
  15. package/lib/components/button/zworkflowbuttons/zworkflowbuttons.component.d.ts +29 -0
  16. package/lib/{zchart → components/chart/zchart}/zchart.component.d.ts +73 -71
  17. package/lib/{zganttchart → components/chart/zganttchart}/zganttchart.component.d.ts +40 -40
  18. package/lib/{zgauge → components/chart/zgauge}/zgauge.component.d.ts +67 -63
  19. package/lib/{zprogressbar → components/chart/zprogressbar}/zprogressbar.component.d.ts +29 -30
  20. package/lib/{zreport → components/chart/zreport}/zreport.component.d.ts +47 -53
  21. package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.component.d.ts +53 -52
  22. package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.toolbar.component.d.ts +20 -20
  23. package/lib/{ztrendcard → components/chart/ztrendcard}/ztrendcard.component.d.ts +40 -36
  24. package/lib/components/container/kcard/kcard.component.d.ts +21 -0
  25. package/lib/{kscrollview → components/container/kscrollview}/kscrollview.component.d.ts +19 -20
  26. package/lib/{ksplitter → components/container/ksplitter}/ksplitter.component.d.ts +18 -19
  27. package/lib/{zcard → components/container/zcard}/zcard.component.d.ts +12 -17
  28. package/lib/components/container/zdiv/zdiv.component.d.ts +12 -0
  29. package/lib/{zdiv → components/container/zdiv}/zdiv.pipe.d.ts +7 -7
  30. package/lib/{zloop → components/container/zloop}/zloop.component.d.ts +21 -24
  31. package/lib/{ztab → components/container/ztab}/ztab.component.d.ts +34 -38
  32. package/lib/{ztab → components/container/ztab}/ztab.pipe.d.ts +7 -7
  33. package/lib/{zudf → components/container/zudf}/zudf.component.d.ts +208 -212
  34. package/lib/{virtual-scroll → components/data-listing/virtual-scroll}/virtual-scroll.component.d.ts +40 -45
  35. package/lib/{zgrid → components/data-listing/zgrid}/container/zgrid-container.component.d.ts +27 -31
  36. package/lib/{zgrid → components/data-listing/zgrid}/date-range-cell-filter.component.d.ts +20 -19
  37. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.binding.directive.d.ts +174 -168
  38. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.component.d.ts +187 -186
  39. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.popup.anchor-target.directive.d.ts +8 -8
  40. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.service.d.ts +27 -27
  41. package/lib/{ztree → components/data-listing/ztree}/ztree.component.d.ts +77 -78
  42. package/lib/{ztreelist → components/data-listing/ztreelist}/ztreelist.component.d.ts +100 -107
  43. package/lib/{sfdatetimepicker → components/input/sfdatetimepicker}/sfdatetimepicker.component.d.ts +26 -31
  44. package/lib/{sfquerybuilder → components/input/sfquerybuilder}/sfquerybuilder.component.d.ts +71 -73
  45. package/lib/{zcheckbox → components/input/zcheckbox}/zcheckbox.component.d.ts +18 -20
  46. package/lib/components/input/zcodeeditor/zcodeeditor.component.d.ts +43 -0
  47. package/lib/components/input/zcodeeditor/zcodeeditor.service.d.ts +32 -0
  48. package/lib/{zcolorpicker → components/input/zcolorpicker}/zcolorpicker.component.d.ts +19 -25
  49. package/lib/{zdatetime → components/input/zdatetime}/dateIonicFormatParser.pipe.d.ts +10 -10
  50. package/lib/{zdatetime → components/input/zdatetime}/dateIonicMinMaxDate.pipe.d.ts +7 -7
  51. package/lib/{zdatetime → components/input/zdatetime}/dateKendoFormatParser.pipe.d.ts +10 -10
  52. package/lib/{zdatetime → components/input/zdatetime}/dateParser.pipe.d.ts +11 -11
  53. package/lib/{zdatetime → components/input/zdatetime}/zdatetime.component.d.ts +32 -32
  54. package/lib/{zimg → components/input/zimg}/zimg.component.d.ts +16 -20
  55. package/lib/{zinput-container → components/input/zinput-container}/zinput-container.component.d.ts +31 -38
  56. package/lib/{zinput-container → components/input/zinput-container}/zinput-container.pipe.d.ts +25 -25
  57. package/lib/{zlabel → components/input/zlabel}/zlabel.component.d.ts +20 -26
  58. package/lib/{znumeric → components/input/znumeric}/znumeric.component.d.ts +29 -31
  59. package/lib/{znumeric → components/input/znumeric}/znumeric.component.pipe.d.ts +10 -10
  60. package/lib/{zpostselectinput → components/input/zpostselectinput}/zpostselectinput.component.d.ts +48 -65
  61. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.component.d.ts +105 -123
  62. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.directive.d.ts +12 -12
  63. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.pipe.d.ts +11 -11
  64. package/lib/{ztext → components/input/ztext}/ztext.component.d.ts +33 -33
  65. package/lib/{ztextarea → components/input/ztextarea}/ztextarea.component.d.ts +21 -25
  66. package/lib/{ztexteditor → components/input/ztexteditor}/ztexteditor.component.d.ts +44 -42
  67. package/lib/{zupload → components/input/zupload}/zupload.component.d.ts +45 -50
  68. package/lib/{embed-components → components/menu}/context-menu/context-menu.component.d.ts +24 -28
  69. package/lib/{kmenu → components/menu/kmenu}/kmenu.component.d.ts +13 -14
  70. package/lib/components/others/zform/zform.component.d.ts +30 -0
  71. package/lib/components/others/zformcontrol/zformcontrol.component.d.ts +21 -0
  72. package/lib/components/others/zformcontrol/zformcontrol.service.d.ts +12 -0
  73. package/lib/components/others/zmodal/zmodal-component-helper.service.d.ts +15 -0
  74. package/lib/components/others/zmodal/zmodal.component.d.ts +24 -0
  75. package/lib/components/others/zmodal/zmodal.service.d.ts +25 -0
  76. package/lib/components/others/zunknown/zunknown.component.d.ts +10 -0
  77. package/lib/components/utility/e1-root/e1-root.component.d.ts +20 -0
  78. package/lib/components/utility/input-error-message/input-error-message.component.d.ts +14 -0
  79. package/lib/{embed-components → components/utility}/input-field-addons/input-field-addons.component.d.ts +18 -23
  80. package/lib/{embed-components → components/utility}/page-loader/page-loader.component.d.ts +8 -8
  81. package/lib/{embed-components → components/utility}/processing-record-loader/processing-record-loader.component.d.ts +8 -8
  82. package/lib/{embed-components → components/utility}/spinner/spinner.component.d.ts +12 -14
  83. package/lib/components/utility/uiappmenucontent/uiappmenucontent.component.d.ts +17 -0
  84. package/lib/{uibulletin → components/utility/uibulletin}/uibulletin.component.d.ts +31 -36
  85. package/lib/{uicontainer → components/utility/uicontainer}/uicontainer.component.d.ts +16 -19
  86. package/lib/components/utility/uicontent/uicontent.component.d.ts +21 -0
  87. package/lib/components/utility/uiheader/uiheader.component.d.ts +40 -0
  88. package/lib/{uipage → components/utility/uipage}/uipage.component.d.ts +18 -23
  89. package/lib/constants/constant.d.ts +3 -3
  90. package/lib/directives/elementcontainer.directive.d.ts +8 -8
  91. package/lib/interfaces/modal.interface.d.ts +4 -0
  92. package/lib/pipe/htmlSanitize.pipe.d.ts +10 -10
  93. package/lib/pipe/panel-area.pipe.d.ts +7 -7
  94. package/lib/services/main.service.d.ts +136 -142
  95. package/lib/services/zcomponent.debug.service.d.ts +289 -68
  96. package/lib/services/zcomponent.service.d.ts +31 -44
  97. package/package.json +6 -13
  98. package/public-api.d.ts +93 -100
  99. package/styles/all.scss +643 -0
  100. package/styles/component.scss +0 -0
  101. package/styles/notificationkit.scss +53 -0
  102. package/esm2020/lib/animations/component-animations.mjs +0 -39
  103. package/esm2020/lib/components/buttonfieldbase.component.mjs +0 -80
  104. package/esm2020/lib/components/containerfieldbase.component.mjs +0 -50
  105. package/esm2020/lib/components/datalistingfieldbase.component.mjs +0 -277
  106. package/esm2020/lib/components/fieldbase.component.mjs +0 -178
  107. package/esm2020/lib/components/inputfieldbase.component.mjs +0 -202
  108. package/esm2020/lib/constants/constant.mjs +0 -4
  109. package/esm2020/lib/directives/elementcontainer.directive.mjs +0 -16
  110. package/esm2020/lib/directives/fieldelement.directive.mjs +0 -16
  111. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +0 -45
  112. package/esm2020/lib/dropdown_buttons/dropdown_buttons.component.mjs +0 -109
  113. package/esm2020/lib/embed-components/context-menu/context-menu.component.mjs +0 -113
  114. package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +0 -93
  115. package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +0 -14
  116. package/esm2020/lib/embed-components/processing-record-loader/processing-record-loader.component.mjs +0 -14
  117. package/esm2020/lib/embed-components/spinner/spinner.component.mjs +0 -27
  118. package/esm2020/lib/ficon/ficon.component.mjs +0 -53
  119. package/esm2020/lib/input-error-message/input-error-message.component.mjs +0 -53
  120. package/esm2020/lib/kcard/kcard.component.mjs +0 -90
  121. package/esm2020/lib/kmenu/kmenu.component.mjs +0 -46
  122. package/esm2020/lib/kscrollview/kscrollview.component.mjs +0 -77
  123. package/esm2020/lib/ksplitter/ksplitter.component.mjs +0 -67
  124. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +0 -657
  125. package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +0 -18
  126. package/esm2020/lib/pipe/panel-area.pipe.mjs +0 -28
  127. package/esm2020/lib/services/main.service.mjs +0 -1307
  128. package/esm2020/lib/services/zcomponent.debug.service.mjs +0 -742
  129. package/esm2020/lib/services/zcomponent.service.mjs +0 -300
  130. package/esm2020/lib/sfdatetimepicker/sfdatetimepicker.component.mjs +0 -108
  131. package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +0 -501
  132. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +0 -229
  133. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +0 -55
  134. package/esm2020/lib/uibulletin/uibulletin.component.mjs +0 -96
  135. package/esm2020/lib/uicontainer/uicontainer.component.mjs +0 -41
  136. package/esm2020/lib/uicontent/uicontent.component.mjs +0 -63
  137. package/esm2020/lib/uiheader/uiheader.component.mjs +0 -116
  138. package/esm2020/lib/uiheader/uiheader.service.mjs +0 -27
  139. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +0 -36
  140. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +0 -38
  141. package/esm2020/lib/uipage/uipage.component.mjs +0 -160
  142. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +0 -40
  143. package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +0 -249
  144. package/esm2020/lib/zbullet/zbullet.component.mjs +0 -77
  145. package/esm2020/lib/zbuttons/zbuttons.component.mjs +0 -151
  146. package/esm2020/lib/zcard/zcard.component.mjs +0 -36
  147. package/esm2020/lib/zchart/zchart.component.mjs +0 -222
  148. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +0 -42
  149. package/esm2020/lib/zchip/zchip.component.mjs +0 -119
  150. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +0 -169
  151. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +0 -60
  152. package/esm2020/lib/zcolorpicker/zcolorpicker.component.mjs +0 -47
  153. package/esm2020/lib/zdaterange/zdaterange.component.mjs +0 -72
  154. package/esm2020/lib/zdatetime/dateIonicFormatParser.pipe.mjs +0 -40
  155. package/esm2020/lib/zdatetime/dateIonicMinMaxDate.pipe.mjs +0 -22
  156. package/esm2020/lib/zdatetime/dateKendoFormatParser.pipe.mjs +0 -41
  157. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +0 -36
  158. package/esm2020/lib/zdatetime/zdatetime.component.mjs +0 -134
  159. package/esm2020/lib/zdiv/zdiv.component.mjs +0 -79
  160. package/esm2020/lib/zdiv/zdiv.pipe.mjs +0 -31
  161. package/esm2020/lib/zform/zform.component.mjs +0 -188
  162. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +0 -51
  163. package/esm2020/lib/zganttchart/zganttchart.component.mjs +0 -160
  164. package/esm2020/lib/zgauge/zgauge.component.mjs +0 -122
  165. package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +0 -107
  166. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +0 -146
  167. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +0 -881
  168. package/esm2020/lib/zgrid/zgrid.component.mjs +0 -1131
  169. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +0 -17
  170. package/esm2020/lib/zgrid/zgrid.service.mjs +0 -113
  171. package/esm2020/lib/zimg/zimg.component.mjs +0 -61
  172. package/esm2020/lib/zinput-container/zinput-container.component.mjs +0 -91
  173. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +0 -132
  174. package/esm2020/lib/zlabel/zlabel.component.mjs +0 -52
  175. package/esm2020/lib/zloop/zloop.component.mjs +0 -123
  176. package/esm2020/lib/zmfb/zmfb.component.mjs +0 -217
  177. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +0 -124
  178. package/esm2020/lib/zmodal/zmodal.component.mjs +0 -129
  179. package/esm2020/lib/znumeric/znumeric.component.mjs +0 -110
  180. package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +0 -19
  181. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +0 -315
  182. package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +0 -61
  183. package/esm2020/lib/zradiobutton/zradiobutton.component.mjs +0 -106
  184. package/esm2020/lib/zreport/zreport.component.mjs +0 -184
  185. package/esm2020/lib/zscheduler/zscheduler.component.mjs +0 -271
  186. package/esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs +0 -150
  187. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +0 -689
  188. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +0 -35
  189. package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +0 -29
  190. package/esm2020/lib/ztab/ztab.component.mjs +0 -211
  191. package/esm2020/lib/ztab/ztab.pipe.mjs +0 -28
  192. package/esm2020/lib/ztext/ztext.component.mjs +0 -167
  193. package/esm2020/lib/ztextarea/ztextarea.component.mjs +0 -66
  194. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +0 -135
  195. package/esm2020/lib/ztree/ztree.component.mjs +0 -539
  196. package/esm2020/lib/ztreelist/ztreelist.component.mjs +0 -546
  197. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +0 -106
  198. package/esm2020/lib/zudf/zudf.component.mjs +0 -1016
  199. package/esm2020/lib/zunknown/zunknown.component.mjs +0 -20
  200. package/esm2020/lib/zupload/zupload.component.mjs +0 -403
  201. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +0 -244
  202. package/esm2020/mmhglobal-dynamicform.mjs +0 -5
  203. package/esm2020/public-api.mjs +0 -107
  204. package/fesm2015/mmhglobal-dynamicform.mjs +0 -16119
  205. package/fesm2015/mmhglobal-dynamicform.mjs.map +0 -1
  206. package/fesm2020/mmhglobal-dynamicform.mjs +0 -16079
  207. package/fesm2020/mmhglobal-dynamicform.mjs.map +0 -1
  208. package/lib/directives/fieldelement.directive.d.ts +0 -8
  209. package/lib/directives/scrollbar.theme.directive.d.ts +0 -10
  210. package/lib/ficon/ficon.component.d.ts +0 -34
  211. package/lib/input-error-message/input-error-message.component.d.ts +0 -19
  212. package/lib/kcard/kcard.component.d.ts +0 -25
  213. package/lib/mmhglobal-dynamicform.module.d.ts +0 -133
  214. package/lib/uiactionbutton/uiactionbutton.component.d.ts +0 -39
  215. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +0 -27
  216. package/lib/uicontent/uicontent.component.d.ts +0 -29
  217. package/lib/uiheader/uiheader.component.d.ts +0 -39
  218. package/lib/uiheader/uiheader.service.d.ts +0 -11
  219. package/lib/uimenubutton/uimenubutton.component.d.ts +0 -20
  220. package/lib/uimenucontent/uimenucontent.component.d.ts +0 -24
  221. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +0 -21
  222. package/lib/zbullet/zbullet.component.d.ts +0 -27
  223. package/lib/zbuttons/zbuttons.component.d.ts +0 -25
  224. package/lib/zcodeeditor/zcodeeditor.component.d.ts +0 -43
  225. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +0 -12
  226. package/lib/zdaterange/zdaterange.component.d.ts +0 -29
  227. package/lib/zdiv/zdiv.component.d.ts +0 -22
  228. package/lib/zform/zform.component.d.ts +0 -38
  229. package/lib/zformcontrol/zformcontrol.component.d.ts +0 -25
  230. package/lib/zmodal/zmodal-mobile.component.d.ts +0 -38
  231. package/lib/zmodal/zmodal.component.d.ts +0 -44
  232. package/lib/zradiobutton/zradiobutton.component.d.ts +0 -34
  233. package/lib/zunknown/zunknown.component.d.ts +0 -17
  234. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +0 -32
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mmhglobal-dynamicform.mjs","sources":["../../../projects/mmhglobal-dynamicform/src/lib/components/others/zmodal/zmodal-component-helper.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zmodal/zmodal.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.debug.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/main.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcodeeditor/zcodeeditor.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/zgrid.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/zgrid.binding.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zselectmultiple/zselectmultiple.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/elementcontainer.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/dateParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zdiv/zdiv.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/ztab/ztab.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/pipe/panel-area.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zinput-container/zinput-container.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/pipe/htmlSanitize.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/znumeric/znumeric.component.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/dateIonicFormatParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/dateKendoFormatParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/dateIonicMinMaxDate.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/constants/constant.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/date-range-cell-filter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zscheduler/zscheduler.toolbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zformcontrol/zformcontrol.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zformcontrol/zformcontrol.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zformcontrol/zformcontrol.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zform/zform.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zform/zform.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/page-loader/page-loader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/page-loader/page-loader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uicontent/uicontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uicontent/uicontent.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/processing-record-loader/processing-record-loader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/processing-record-loader/processing-record-loader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uiheader/uiheader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uiheader/uiheader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uicontainer/uicontainer.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uicontainer/uicontainer.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uipage/uipage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uiappmenucontent/uiappmenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uiappmenucontent/uiappmenucontent.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uibulletin/uibulletin.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/uibulletin/uibulletin.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/base/fieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/base/buttonfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zbuttons/zbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zbuttons/zbuttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/base/containerfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/menu/context-menu/context-menu.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/menu/context-menu/context-menu.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zdiv/zdiv.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zdiv/zdiv.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zcard/zcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zcard/zcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/base/datalistingfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zchart/zchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zchart/zchart.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/base/inputfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcheckbox/zcheckbox.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcheckbox/zcheckbox.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zchip/zchip.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zchip/zchip.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcodeeditor/zcodeeditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcodeeditor/zcodeeditor.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/zdatetime.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zdatetime/zdatetime.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zgauge/zgauge.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zgauge/zgauge.component.html","../../../projects/mmhglobal-dynamicform/src/lib/animations/component-animations.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zworkflowbuttons/zworkflowbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zworkflowbuttons/zworkflowbuttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/input-field-addons/input-field-addons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/input-field-addons/input-field-addons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/input-error-message/input-error-message.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/input-error-message/input-error-message.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztext/ztext.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztext/ztext.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zselectmultiple/zselectmultiple.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zselectmultiple/zselectmultiple.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zselectmultiple/zselectmultiple.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/sfdatetimepicker/sfdatetimepicker.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/sfdatetimepicker/sfdatetimepicker.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zpostselectinput/zpostselectinput.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zpostselectinput/zpostselectinput.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/znumeric/znumeric.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/znumeric/znumeric.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztextarea/ztextarea.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztextarea/ztextarea.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zupload/zupload.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zupload/zupload.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zimg/zimg.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zimg/zimg.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztexteditor/ztexteditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/ztexteditor/ztexteditor.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcolorpicker/zcolorpicker.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zcolorpicker/zcolorpicker.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zinput-container/zinput-container.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zinput-container/zinput-container.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/zgrid.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/zgrid.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/container/zgrid-container.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/container/zgrid-container.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/zgrid/zgrid.popup.anchor-target.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zlabel/zlabel.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/zlabel/zlabel.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zmfb/zmfb.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/zmfb/zmfb.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zreport/zreport.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zreport/zreport.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zscheduler/zscheduler.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zscheduler/zscheduler.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/ztab/ztab.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/ztab/ztab.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/ztree/ztree.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/ztree/ztree.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/ztreelist/ztreelist.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/ztreelist/ztreelist.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/ztrendcard/ztrendcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/ztrendcard/ztrendcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zudf/zudf.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zudf/zudf.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zunknown/zunknown.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zunknown/zunknown.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/kcard/kcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/kcard/kcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zprogressbar/zprogressbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zprogressbar/zprogressbar.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/spinner/spinner.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/spinner/spinner.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/input/sfquerybuilder/sfquerybuilder.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/input/sfquerybuilder/sfquerybuilder.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zloop/zloop.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/zloop/zloop.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/ksplitter/ksplitter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/ksplitter/ksplitter.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/virtual-scroll/virtual-scroll.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/data-listing/virtual-scroll/virtual-scroll.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/menu/kmenu/kmenu.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/menu/kmenu/kmenu.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/container/kscrollview/kscrollview.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/container/kscrollview/kscrollview.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zganttchart/zganttchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/chart/zganttchart/zganttchart.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/button/dropdown_buttons/dropdown_buttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/button/dropdown_buttons/dropdown_buttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/e1-root/e1-root.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/utility/e1-root/e1-root.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zmodal/zmodal.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/others/zmodal/zmodal.component.html","../../../projects/mmhglobal-dynamicform/src/public-api.ts","../../../projects/mmhglobal-dynamicform/src/mmhglobal-dynamicform.ts"],"sourcesContent":["import { of, isObservable } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport {\r\n ModalPageParams, ZComponentOutputEvent, ZGroup, ZField, DefaultMessage, DefaultDialogTitle,\r\n AlertService, ComponentErrorHandlerService, FieldUtils, ComponentUtils\r\n} from \"mmhglobal-zcore\";\r\nimport { DialogRef } from '@progress/kendo-angular-dialog';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZmodalComponentHelperService {\r\n constructor(\r\n private readonly componentErrorHandlerService: ComponentErrorHandlerService,\r\n private readonly alertService: AlertService\r\n ) { }\r\n\r\n //#region Dialog Button Actions\r\n public onCancel(dialogRef: DialogRef, group: ZGroup, modalParams: ModalPageParams, event: ZComponentOutputEvent) {\r\n if (!group.form) {\r\n console.warn('formGroup is undefined for zModal');\r\n return;\r\n }\r\n\r\n let beforeModalRespObs = of({});\r\n if (modalParams.beforeModalReponse && typeof modalParams.beforeModalReponse == 'function') {\r\n beforeModalRespObs = of(modalParams.beforeModalReponse(group, modalParams, 'onCancel')).pipe(switchMap(resp => isObservable(resp) ? resp : of(resp)));\r\n }\r\n\r\n beforeModalRespObs.subscribe(continueDialogResponse => {\r\n if (continueDialogResponse && dialogRef) {\r\n dialogRef.close();\r\n }\r\n });\r\n }\r\n\r\n public onConfirm(dialogRef: DialogRef, group: ZGroup, modalParams: ModalPageParams, event: ZComponentOutputEvent) {\r\n if (!group.form) {\r\n console.warn('formGroup is undefined for zModal');\r\n return;\r\n }\r\n\r\n let beforeModalRespObs = of({});\r\n if (modalParams.beforeModalReponse && typeof modalParams.beforeModalReponse == 'function') {\r\n beforeModalRespObs = of(modalParams.beforeModalReponse(group, modalParams, 'onAnswer')).pipe(switchMap(resp => isObservable(resp) ? resp : of(resp)));\r\n }\r\n\r\n beforeModalRespObs.pipe(\r\n catchError(error => {\r\n if (error instanceof TypeError) {\r\n const originalFunction = modalParams.beforeModalReponse;\r\n const functionName = originalFunction?.name?.replace('bound ', '') || 'UnknownFunction'; // Get the function name, and remove the word \"bound\" if it exists\r\n console.warn(`Error for zModal function \"${functionName}\".`, error.message);\r\n }\r\n return of(true);\r\n })\r\n ).subscribe(continueDialogResponse => {\r\n if (continueDialogResponse) {\r\n if (modalParams.validateIsRequired) {\r\n this.validateIsRequiredFields(group, group.fields);\r\n }\r\n\r\n // Check if the form is dirty unless skipping the check\r\n if (!modalParams.skipIsDirtyCheck && !group.form.dirty) {\r\n console.warn('The form is not dirty, therefore the modalform record has not been saved.');\r\n const message = event?.data?.FormNotDirtyMessage ?? DefaultMessage.notDirtyMessage;\r\n this.alertService.showOkay(DefaultDialogTitle.nothingToUpdate, message, ['col-xs-10 col-sm-10 col-md-8 col-lg-6 col-lg-5']);\r\n return;\r\n }\r\n\r\n if (!group.form.valid) {\r\n this.componentErrorHandlerService.showFormGroupErrorMessage(group, group.form);\r\n return;\r\n }\r\n\r\n if (dialogRef) {\r\n dialogRef.close(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public onInitClose(dialogRef: DialogRef, group: ZGroup, modalParams: ModalPageParams, event: ZComponentOutputEvent) {\r\n if (!group.form) {\r\n console.warn('formGroup is undefined for zModal');\r\n return;\r\n }\r\n\r\n let beforeModalRespObs = of({});\r\n if (modalParams.beforeModalReponse && typeof modalParams.beforeModalReponse == 'function') {\r\n beforeModalRespObs = of(modalParams.beforeModalReponse(group, modalParams, 'onClose')).pipe(switchMap(resp => isObservable(resp) ? resp : of(resp)));\r\n }\r\n\r\n beforeModalRespObs.subscribe(continueDialogResponse => {\r\n if (continueDialogResponse && dialogRef) {\r\n event.data[\"ResponseType\"] = group[\"DismissType\"];\r\n dialogRef.close();\r\n }\r\n });\r\n }\r\n\r\n private validateIsRequiredFields(group: ZGroup, fields: ZField[]) {\r\n for (const field of fields) {\r\n const fieldName = field.Name;\r\n const fieldValue = field.Value;\r\n\r\n if (Array.isArray(fieldValue)) {\r\n this.validateIsRequiredFields(group, fieldValue);\r\n }\r\n else if (!FieldUtils.isFieldContainer(field.Type)) {\r\n const componentField = ComponentUtils.getComponentByName(group, fieldName);\r\n if (componentField) {\r\n // Set the required property based on the IsRequired value\r\n componentField.setRequire(this.evaluateValue(group, field.IsRequired));\r\n }\r\n else {\r\n console.warn(`Error: ${fieldName} component requires a field validator to be set.`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private evaluateValue(group: ZGroup, value: any) {\r\n if (value && typeof value === \"string\") {\r\n const valueSegment = value.split('.');\r\n if (value.includes('group.')) {\r\n return group[valueSegment[1]];\r\n }\r\n else {\r\n return group._modalgroup[valueSegment[1]];\r\n }\r\n }\r\n return value;\r\n }\r\n //#endregion\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, combineLatest, first, forkJoin, from, map, switchMap } from 'rxjs';\r\nimport { DialogService, DialogCloseResult } from '@progress/kendo-angular-dialog';\r\nimport { ModalPageParams, ProjectThemeService, ZComponentOutputEvent, ZComponentSize } from 'mmhglobal-zcore';\r\nimport { ModalResponse } from \"../../../interfaces/modal.interface\";\r\nimport { ZmodalComponentHelperService } from \"./zmodal-component-helper.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModalService {\r\n private activeModals: any[] = []; // To keep track of active popup Modal\r\n\r\n constructor(\r\n private readonly dialogService: DialogService,\r\n private readonly modalComponentHelperService: ZmodalComponentHelperService,\r\n private readonly projectThemeSvc: ProjectThemeService\r\n ) { }\r\n\r\n public show(modalPageParams: ModalPageParams): Observable<ModalResponse> {\r\n return combineLatest([\r\n this.projectThemeSvc.getTheme$(),\r\n from(import('./zmodal.component'))\r\n ]).pipe(\r\n first(),\r\n switchMap(([themeColor, { ZmodalComponent }]) => {\r\n modalPageParams.componentSize = this.getComponentSizeValue(modalPageParams.componentSize);\r\n const dialogRef = this.dialogService.open({\r\n title: modalPageParams.formHeader,\r\n content: ZmodalComponent,\r\n width: modalPageParams.componentSize.width,\r\n height: modalPageParams.componentSize.height,\r\n minWidth: modalPageParams.componentSize.minWidth,\r\n cssClass: `e1-modal ${themeColor} ${modalPageParams.cssClass}`,\r\n preventAction: (ev) => {\r\n if (ev instanceof DialogCloseResult) {\r\n this.modalComponentHelperService.onCancel(dialogRef, dialogRef.content.instance?.group, modalPageParams, null);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n\r\n this.activeModals.push({ translatedHeader: modalPageParams.formHeader, dialogRef });\r\n\r\n const inputs = dialogRef.content.instance;\r\n inputs.modalParams = modalPageParams;\r\n inputs.dialogRef = dialogRef;\r\n\r\n return dialogRef.result.pipe(\r\n map(result => {\r\n if (result) {\r\n if (result instanceof DialogCloseResult) {\r\n return { responseType: 'cancel', data: null } as ModalResponse;\r\n }\r\n else if (result[\"ResponseType\"]) {\r\n return { responseType: result[\"ResponseType\"], data: result } as ModalResponse;\r\n }\r\n\r\n return { responseType: 'confirm', data: result } as ModalResponse;\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n public close(me: any) {\r\n if (me.group?.subject) {\r\n me.group.subject.next({\r\n type: \"ModalService.close\",\r\n target: \"modalGroup.modalCancel()\"\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public dismissAll() {\r\n this.activeModals.forEach((activeModal) => {\r\n activeModal.dialogRef.close();\r\n });\r\n this.activeModals = [];\r\n }\r\n\r\n /**\r\n * Dismisses modals with a specific header.\r\n * @param {string} header - The header of the modal to dismiss.\r\n * @returns {void}\r\n */\r\n public dismissByHeader(header: string) {\r\n this.activeModals = this.activeModals.filter((activeModal) => {\r\n if (activeModal.translatedHeader === header) {\r\n activeModal.dialogRef.close();\r\n return false; // Remove from the filtered array\r\n } else {\r\n return true; // Keep in the filtered array\r\n }\r\n });\r\n }\r\n\r\n private getComponentSizeValue(componentSize: ZComponentSize): ZComponentSize {\r\n if (componentSize) {\r\n componentSize.width = (componentSize.width ? componentSize.width : 750);\r\n componentSize.height = (componentSize.height ? componentSize.height : 600);\r\n componentSize.minWidth = (componentSize.minWidth ? componentSize.minWidth : 650);\r\n } else {\r\n componentSize = {\r\n width: 750,\r\n height: 600,\r\n minWidth: 650\r\n };\r\n }\r\n return componentSize;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, of, forkJoin, Observable } from 'rxjs';\r\nimport { tap, switchMap, map } from 'rxjs/operators';\r\nimport {\r\n AssetsAllowedExtension, AssetsFolder, AssetsNodeParam, AssetsRoutes, ComponentErrorHandlerService, FieldService, FormType, MESSAGETYPE,\r\n ModalPageParams, ResourceApiService, WebApiService, ZComponentOutputEvent,\r\n ZCoreService, ZField, ZGroup, ZTreeTemplateParams,\r\n FormBuilderDirectAccessQueryParamKey, FormBuilderDirectAccessQueryParamValue, FormBuilderQueryParamData,\r\n AlertButton, AlertService, ToastService,\r\n ZComponentHelper\r\n} from \"mmhglobal-zcore\";\r\nimport { ModalResponse } from \"../interfaces/modal.interface\";\r\nimport { ModalService } from \"../components/others/zmodal/zmodal.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentDebugService {\r\n public readonly groupsToSend = ['oauth'];\r\n public readonly eventName = 'FieldElement';\r\n private readonly environment = null;\r\n\r\n constructor(\r\n private readonly router: Router,\r\n private readonly webApiService: WebApiService,\r\n private readonly zcoreService: ZCoreService,\r\n private readonly alertService: AlertService,\r\n private readonly fieldService: FieldService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly componentErrorHandlerService: ComponentErrorHandlerService,\r\n private readonly toastService: ToastService,\r\n private readonly modalService: ModalService,\r\n ) {\r\n this.environment = this.zcoreService.getEnvironment();\r\n }\r\n\r\n private scope: any;\r\n\r\n get debug(): any {\r\n return this.scope.group._debug;\r\n }\r\n\r\n get group(): ZGroup {\r\n return this.scope.group;\r\n }\r\n\r\n /**\r\n * Initializes the debug structure for a given group.\r\n *\r\n * @param group The ZGroup instance to initialize with debug context.\r\n */\r\n public onInitDebugger(group: ZGroup): void {\r\n if (!group) {\r\n console.warn('onInitDebugger: Group is undefined.');\r\n return;\r\n }\r\n\r\n group._debug = new ZGroup(true);\r\n group._isDebugging = true;\r\n\r\n group._debug.zData = {\r\n collectedActivities: [],\r\n activityCount: 0,\r\n collectedWorkflowButtons: [],\r\n workflowButtonCount: 0\r\n };\r\n\r\n group._debug.zComponents = {};\r\n group.isListForm = false;\r\n }\r\n\r\n /**\r\n * Initializes debug mode: builds the form, sets up debug context, subscribes to events, and loads the initial model.\r\n *\r\n * @param fieldElements Array of ZField elements to generate the form.\r\n * @param me Component instance to bind debug properties and methods.\r\n * @returns Whatever loadDebugZModel returns (e.g. an Observable or Promise).\r\n */\r\n public onStartDebugger(fieldElements: ZField[], me: any): any {\r\n // Validate inputs\r\n if (!Array.isArray(fieldElements) || !me?.group) {\r\n console.error('onStartDebugger: Invalid arguments', { fieldElements, me });\r\n return;\r\n }\r\n\r\n this.scope = me;\r\n\r\n //#region Prepare debug container\r\n if (!me.group._debug) {\r\n me.group._debug = {};\r\n }\r\n const debugGroup: ZGroup = me.group._debug;\r\n //#endregion\r\n\r\n //#region Build and assign form\r\n me.form = me.toFormGroup(fieldElements);\r\n debugGroup.form = me.form;\r\n //#endregion\r\n\r\n //#region Clean up previous subscription\r\n me.subscription?.unsubscribe();\r\n //#endregion\r\n\r\n //#region Initialize debug context\r\n Object.assign(debugGroup, {\r\n zModel: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n isEdit: true,\r\n isNew: false,\r\n _debug: me.group._debug,\r\n _group: me.group,\r\n resourceURL: this.resourceApiService.getURL('field'),\r\n treeItemTemplate: this.treeItemTemplate,\r\n onItemClick: this.onItemClick,\r\n onTreeNodeChange: this.onTreeNodeChange,\r\n onAddNode: this.onAddNode,\r\n onRemoveNode: this.onRemoveNode,\r\n treeNodesExpandAll: this.treeNodesExpandAll,\r\n treeNodesCollapseAll: this.treeNodesCollapseAll,\r\n refreshTreeModel: this.refreshTreeModel,\r\n editInFormBuilder: this.editInFormBuilder.bind(this),\r\n addNode: this.addNode,\r\n refreshActivityLogData: this.loadGridData.bind(this),\r\n GoToFieldElement: this.gotoFieldElement.bind(this),\r\n ListWatchName: this.listWatchName.bind(this),\r\n onChangeWatchName: this.onChangeWatchName.bind(this),\r\n getWatchName: this.getWatchName.bind(this),\r\n fieldElementonEditorCodeChange: this.fieldElementonEditorCodeChange.bind(this),\r\n gridActivityLogColumnFields: this.fieldService.getFormFieldCode(\r\n 'debugActivityLog',\r\n FormType.formField,\r\n this.group,\r\n 'debugActivityLogField'\r\n ),\r\n gridActivityLogOnItemClick: this.gridActivityLogOnItemClick.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n isAllowUpdateFieldElement: true,\r\n isFieldElementReadOnly: false,\r\n isLoadViaAsset: false,\r\n isLoadViaOauthDB: true\r\n });\r\n //#endregion\r\n\r\n //#region Ensure zData exists\r\n if (!debugGroup.zData) {\r\n debugGroup.zData = { collectedActivities: [], activityCount: 0 };\r\n }\r\n //#endregion\r\n\r\n //#region Override for asset loading\r\n if (this.environment.loadViaAsset) {\r\n if (!this.zcoreService.isAppRunningInLocalhost()) {\r\n debugGroup['isAllowUpdateFieldElement'] = false;\r\n debugGroup['isFieldElementReadOnly'] = true;\r\n }\r\n debugGroup['isLoadViaAsset'] = true;\r\n debugGroup['isLoadViaOauthDB'] = false;\r\n }\r\n //#endregion\r\n\r\n //#region Subscribe to debug events\r\n me.subscription = debugGroup.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, debugGroup, this)\r\n );\r\n //#endregion\r\n\r\n //#region Finalize and load model\r\n this.patchFieldsProperty(fieldElements);\r\n return this.loadDebugZModel(me);\r\n //#endregion\r\n }\r\n\r\n /**\r\n * Recursively patches each field element using the fieldService.\r\n * Supports nested `Value` arrays of field elements.\r\n *\r\n * @param fieldElements An array of ZField elements to patch.\r\n */\r\n private patchFieldsProperty(fieldElements: ZField[]): void {\r\n if (!Array.isArray(fieldElements)) {\r\n console.warn('patchFieldsProperty: fieldElements is not an array.', fieldElements);\r\n return;\r\n }\r\n\r\n fieldElements.forEach(fieldElement => {\r\n if (!fieldElement) {\r\n console.warn('patchFieldsProperty: Skipping null/undefined field element.');\r\n return;\r\n }\r\n\r\n this.fieldService.patchFieldProperty(fieldElement);\r\n\r\n if (Array.isArray(fieldElement.Value)) {\r\n this.patchFieldsProperty(fieldElement.Value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads the debug zModel by retrieving the current project ID and the associated field model.\r\n * Uses forkJoin to execute both requests in parallel and emit when both complete.\r\n *\r\n * @param me The current component instance containing group context (e.g., isListForm, fieldName).\r\n * @returns An observable that emits a tuple: [projectId, fieldzModel]\r\n */\r\n private loadDebugZModel(me: any): Observable<[any, any]> {\r\n if (!me?.group?.fieldName) {\r\n console.warn('loadDebugZModel: Invalid context or missing fieldName in \"me.group\".', me);\r\n return forkJoin([of(null), of(null)]);\r\n }\r\n\r\n const projectId$ = this.getProjectId();\r\n const formType = me.group.isListForm ? FormType.listField : FormType.formField;\r\n const fieldElementFormName = me.group.fieldName;\r\n const fieldzModel$ = this.getFieldzModel(formType, fieldElementFormName);\r\n\r\n return forkJoin([projectId$, fieldzModel$]);\r\n }\r\n\r\n /**\r\n * Retrieves the project ID by calling the configured 'projectsURL' endpoint.\r\n *\r\n * @returns An observable that emits project-related data, using the current debugger group context.\r\n */\r\n private getProjectId(): Observable<any> {\r\n const debuggerGroup: ZGroup = this.debug;\r\n\r\n if (!debuggerGroup?.zData) {\r\n console.warn('getProjectId: debuggerGroup.zData is missing or undefined.');\r\n }\r\n\r\n const url = this.resourceApiService.getURL('projectsURL');\r\n\r\n return this.webApiService.getApi(\r\n url,\r\n {}, // Empty query params\r\n debuggerGroup.zData, // Data context for request\r\n 'ProjectOptions', // Target property for response mapping\r\n null, // Optional headers or overrides\r\n debuggerGroup, // Group context\r\n false // Disable caching or flags\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the appropriate field zModel based on type and environment (asset or API).\r\n *\r\n * @param type The field type: 'FormField' or 'ListField'.\r\n * @param fieldElementFormName The name of the field element to load.\r\n * @returns An observable that emits the zModel data.\r\n */\r\n private getFieldzModel(type: string, fieldElementFormName: string): Observable<any> {\r\n const isFormField = type === 'FormField';\r\n\r\n if (!fieldElementFormName) {\r\n console.warn('getFieldzModel: fieldElementFormName is required.');\r\n return of(null);\r\n }\r\n\r\n if (this.environment?.loadViaAsset) {\r\n return isFormField\r\n ? this.getAssetFormFieldzModel(fieldElementFormName)\r\n : this.getAssetListFieldzModel(fieldElementFormName);\r\n }\r\n\r\n return isFormField\r\n ? this.getFormFieldzModel(fieldElementFormName)\r\n : this.getListFieldzModel(fieldElementFormName);\r\n }\r\n\r\n\r\n /**\r\n * Opens the field in Form Builder for editing by constructing a secure deep link.\r\n * Ensures Node server is active (if using asset mode) before routing.\r\n *\r\n * @param buttonEvent Optional button event trigger (not used directly).\r\n * @param group Optional ZGroup to use instead of the current debug context.\r\n */\r\n private editInFormBuilder(buttonEvent: any, group: ZGroup): void {\r\n const zModel = group?.zModel ?? this.debug?.zModel;\r\n\r\n if (!zModel?.Name) {\r\n console.warn('editInFormBuilder: zModel or field name is missing.', zModel);\r\n return;\r\n }\r\n\r\n const checkNodeServer$ = this.environment?.loadViaAsset\r\n ? this.webApiService.isAssetHttpNodeActive()\r\n : of(true);\r\n\r\n checkNodeServer$.pipe(\r\n tap((isActive: boolean) => {\r\n if (!isActive) {\r\n this.toastService.show(\r\n 'Please start your node server and try again.',\r\n 'top',\r\n false,\r\n 2000,\r\n 'danger',\r\n `Local Node Server (Port: ${this.environment?.nodeServerPort}) is unreachable`\r\n );\r\n return;\r\n }\r\n\r\n const payload: FormBuilderQueryParamData = {\r\n nodeServerPort: this.environment?.nodeServerPort,\r\n isLoadViaAsset: this.environment?.loadViaAsset,\r\n fieldElementName: zModel.Name,\r\n formType: zModel.Type ?? FormType.formField\r\n };\r\n\r\n const dataStr = window.btoa(JSON.stringify(payload));\r\n\r\n // Determine OAuth admin portal URL\r\n let oauthAdminPortalURL = 'https://e1sit.musimmas.com/OAuthAdminWeb';\r\n const customUrl = this.environment?.customResource?.[0]?.oauthAdminPortalUrl;\r\n if (customUrl) {\r\n oauthAdminPortalURL = customUrl;\r\n }\r\n\r\n const moduleKey = FormBuilderDirectAccessQueryParamKey.Module;\r\n const moduleVal = FormBuilderDirectAccessQueryParamValue.FormBuilder;\r\n const dataKey = FormBuilderDirectAccessQueryParamKey.Data;\r\n\r\n const finalUrl = `${oauthAdminPortalURL}/oauthadmin/direct-access?${moduleKey}=${moduleVal}&${dataKey}=${dataStr}`;\r\n\r\n console.log(`Route to: ${finalUrl}`);\r\n window.open(finalUrl, '_blank');\r\n })\r\n ).subscribe();\r\n }\r\n\r\n /**\r\n * Retrieves a FormField zModel from the API and updates the debugger group with its data and tree model.\r\n *\r\n * @param fieldElementFormName The name of the field element form to load.\r\n * @returns An observable that emits the loaded form data.\r\n */\r\n private getFormFieldzModel(fieldElementFormName: string): Observable<any> {\r\n if (!fieldElementFormName) {\r\n console.warn('getFormFieldzModel: fieldElementFormName is required.');\r\n return of(null);\r\n }\r\n\r\n const debuggerGroup: ZGroup = this.debug;\r\n const fieldUrl = this.resourceApiService.getURL('field');\r\n\r\n return this.webApiService.httpGet$(fieldUrl, {\r\n name: fieldElementFormName,\r\n type: FormType.formField\r\n }).pipe(\r\n tap((respData: any) => {\r\n try {\r\n Object.assign(debuggerGroup.zModel, respData);\r\n debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n debuggerGroup.form.markAsPristine();\r\n\r\n const rawCode = debuggerGroup.zModel?.Code;\r\n const parsedFields = typeof rawCode === 'string' ? JSON.parse(rawCode) : rawCode;\r\n\r\n debuggerGroup['treeModel'] = ZComponentHelper.convertTreeModel(parsedFields);\r\n } catch (error) {\r\n console.error('getFormFieldzModel: Failed to parse Code or update tree model.', error);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Loads a ListField zModel from the backend using mapping and field endpoints,\r\n * then updates the debugger group with the form and tree model data.\r\n *\r\n * @param fieldElementFormName The name of the field element to load.\r\n * @returns An observable that emits the field data after it is applied to the debugger group.\r\n */\r\n private getListFieldzModel(fieldElementFormName: string): Observable<any> {\r\n if (!fieldElementFormName) {\r\n console.warn('getListFieldzModel: fieldElementFormName is required.');\r\n return of(null);\r\n }\r\n\r\n const debuggerGroup = this.debug;\r\n const fieldsMappingUrl = this.resourceApiService.getURL('fieldsMapping');\r\n const fieldUrl = this.resourceApiService.getURL('field');\r\n\r\n return this.webApiService.httpGet$(fieldsMappingUrl, { name: fieldElementFormName }).pipe(\r\n switchMap((fieldMapping: any) => {\r\n const masterId = fieldMapping?.FieldElementMasterId;\r\n\r\n if (!masterId) {\r\n console.error('getListFieldzModel: FieldElementMasterId is missing in mapping.', fieldMapping);\r\n return of(null);\r\n }\r\n\r\n return this.webApiService.httpGet$(fieldUrl, { id: masterId });\r\n }),\r\n tap((respData: any) => {\r\n try {\r\n // Patch zModel and form\r\n Object.assign(debuggerGroup.zModel, respData);\r\n debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n debuggerGroup.form.markAsPristine();\r\n\r\n const rawCode = debuggerGroup.zModel?.Code;\r\n const parsed = typeof rawCode === 'string' ? JSON.parse(rawCode) : rawCode;\r\n\r\n debuggerGroup.treeModel = ZComponentHelper.convertTreeModel(parsed);\r\n } catch (error) {\r\n console.error('getListFieldzModel: Failed to parse or apply field model.', error);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Loads a field element JSON asset and updates the debugger group with its content.\r\n *\r\n * @param fieldElementFormName The filename (without extension) of the field element asset to load.\r\n * @returns An observable that emits the asset data after updating the debugger group.\r\n */\r\n private getAssetFormFieldzModel(fieldElementFormName: string): Observable<any> {\r\n if (!fieldElementFormName) {\r\n console.warn('getAssetFormFieldzModel: fieldElementFormName is required.');\r\n return of(null);\r\n }\r\n\r\n const debuggerGroup: ZGroup = this.debug;\r\n const param: AssetsNodeParam = {\r\n assetsFolder: AssetsFolder.fieldelement,\r\n name: fieldElementFormName,\r\n extension: AssetsAllowedExtension.json\r\n };\r\n\r\n return this.webApiService.assetsHttpLocalGet(param).pipe(\r\n tap((respData: any) => {\r\n try {\r\n Object.assign(debuggerGroup.zModel, respData);\r\n debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n debuggerGroup.form.markAsPristine();\r\n\r\n const rawCode = debuggerGroup.zModel?.Code;\r\n const parsedCode = ZComponentHelper.isJson(rawCode)\r\n ? rawCode\r\n : JSON.parse(rawCode);\r\n\r\n debuggerGroup['treeModel'] = ZComponentHelper.convertTreeModel(parsedCode);\r\n } catch (error) {\r\n console.error('getAssetFormFieldzModel: Failed to apply zModel or treeModel.', error);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the zModel for a List Field asset by first resolving its mapping file,\r\n * then delegating to getAssetFormFieldzModel using the master field name.\r\n *\r\n * @param fieldElementFormName The name of the List Field mapping JSON file (without extension).\r\n * @returns An observable that emits the resolved zModel for the mapped form field.\r\n */\r\n private getAssetListFieldzModel(fieldElementFormName: string): Observable<any> {\r\n if (!fieldElementFormName) {\r\n console.warn('getAssetListFieldzModel: fieldElementFormName is required.');\r\n return of(null);\r\n }\r\n\r\n const listParam: AssetsNodeParam = {\r\n assetsFolder: AssetsFolder.listfieldmapping,\r\n name: fieldElementFormName,\r\n extension: AssetsAllowedExtension.json\r\n };\r\n\r\n return this.webApiService.assetsHttpLocalGet(listParam).pipe(\r\n switchMap((fieldMapping: any) => {\r\n const masterName = fieldMapping?.FieldElementMasterName;\r\n\r\n if (!masterName) {\r\n console.error('getAssetListFieldzModel: Missing FieldElementMasterName in mapping.', fieldMapping);\r\n return of(null);\r\n }\r\n\r\n return this.getAssetFormFieldzModel(masterName);\r\n })\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Resolves and invokes the function or action specified by the event target.\r\n *\r\n * @param event The event payload containing target, type, data, and other metadata.\r\n * @param group Contextual group object for the event.\r\n * @param me The component instance so that bound functions have the correct `this`.\r\n */\r\n public subjectEvent(event: any, group: any, me: any): void {\r\n // Ignore if there's no valid target or it's an internal modalGroup event\r\n if (!event?.target || event.target.startsWith('modalGroup.')) {\r\n return;\r\n }\r\n\r\n let callFunc: unknown;\r\n try {\r\n callFunc = ZComponentHelper.getGroupEvalValue.call(me, event.target);\r\n } catch (error) {\r\n console.warn(\r\n `subjectEvent: Unable to resolve target \"${event.target}\".`,\r\n error\r\n );\r\n return;\r\n }\r\n\r\n // ----- Function invocation -----\r\n if (typeof callFunc === 'function') {\r\n (callFunc as Function).call(me, event, group, me);\r\n return;\r\n }\r\n\r\n // ----- String-based actions -----\r\n if (typeof callFunc === 'string') {\r\n // Navigate-to pattern\r\n if (event.type?.endsWith('onNavigateTo')) {\r\n const url = (callFunc as string).replace(\r\n '/:id',\r\n `/${event.data}`\r\n );\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n // Grid cell click opens a modal\r\n if (event.type === 'zgrid-cellClick') {\r\n const ctrlName = (callFunc as string).slice(4);\r\n this.showzModal({\r\n fieldElementName: ctrlName,\r\n fieldElementObservable$: event.columnFields$,\r\n parentGroup: group,\r\n zModel: {},\r\n formHeader: '',\r\n referId: event.data?.Id\r\n }).subscribe();\r\n return;\r\n }\r\n\r\n console.warn(\r\n `subjectEvent: No handler for string target \"${callFunc}\" on event type \"${event.type}\".`,\r\n event\r\n );\r\n return;\r\n }\r\n\r\n // ----- Object-based actions -----\r\n if (callFunc && typeof callFunc === 'object') {\r\n const cfg = callFunc as {\r\n navigateUrl?: string;\r\n ctrlName?: string;\r\n formHeader?: string;\r\n };\r\n\r\n if (event.type === 'zgrid-cellClick') {\r\n if (cfg.navigateUrl) {\r\n const url = cfg.navigateUrl.replace(\r\n ':id',\r\n `${event.data?.Id}`\r\n );\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n if (cfg.formHeader && cfg.ctrlName) {\r\n this.showzModal({\r\n fieldElementName: cfg.ctrlName,\r\n fieldElementObservable$: event.columnFields$,\r\n parentGroup: group,\r\n zModel: {},\r\n formHeader: cfg.formHeader,\r\n referId: event.data?.Id\r\n }).subscribe();\r\n return;\r\n }\r\n\r\n console.warn(\r\n `subjectEvent: Object config missing required properties for target \"${event.target}\".`,\r\n cfg\r\n );\r\n return;\r\n }\r\n }\r\n\r\n // ----- Fallback if nothing executed -----\r\n console.warn(\r\n `subjectEvent: No valid action executed for target \"${event.target}\".`,\r\n event\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Handles clicks in the activity log grid, loading the appropriate model or\r\n * setting watch name and switching tabs based on record type.\r\n *\r\n * @param event The grid item click event containing `dataItem` with type, activityName, and index.\r\n */\r\n private gridActivityLogOnItemClick(event: { dataItem?: any }): void {\r\n const rec = event?.dataItem;\r\n if (!rec?.type) {\r\n console.warn('gridActivityLogOnItemClick: Missing dataItem or type', event);\r\n return;\r\n }\r\n\r\n const idx = Number(rec.index) - 1;\r\n const basePath = `_debug.zData.collectedActivities[${idx}]`;\r\n\r\n switch (rec.type) {\r\n case 'ListField':\r\n case 'FormField':\r\n this.getFieldzModel(rec.type, rec.activityName)\r\n .subscribe(() => this.selectTab(0));\r\n break;\r\n\r\n case 'ResourceServerAPI':\r\n this.setWatchNameValue(`${basePath}.reference`);\r\n this.selectTab(1);\r\n break;\r\n\r\n case 'HttpGet$':\r\n case 'HttpPost$':\r\n case 'HttpPut$':\r\n case 'HttpDelete$':\r\n this.setWatchNameValue(basePath);\r\n this.selectTab(1);\r\n break;\r\n\r\n default:\r\n console.warn(\r\n `gridActivityLogOnItemClick: Unhandled record type \"${rec.type}\"`,\r\n rec\r\n );\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Selects a tab by index on the debuggerTabs component.\r\n *\r\n * @param index The tab index to activate.\r\n */\r\n private selectTab(index: number): void {\r\n const tabs = ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs');\r\n\r\n if (!tabs || typeof tabs.selectTab !== 'function') {\r\n console.warn('selectTab: debuggerTabs component or selectTab method not found.', { tabs, index });\r\n return;\r\n }\r\n\r\n tabs.selectTab(index);\r\n }\r\n\r\n /**\r\n * Sets the DebugWatchName in the debug zModel and updates the WatchName via ZComponentHelper.\r\n *\r\n * @param newValue The new watch name value to set.\r\n */\r\n private setWatchNameValue(newValue: string): void {\r\n if (typeof newValue !== 'string' || !newValue.trim()) {\r\n console.warn('setWatchNameValue: Invalid newValue provided.', newValue);\r\n return;\r\n }\r\n\r\n this.debug.zModel['DebugWatchName'] = newValue;\r\n ZComponentHelper.setModelValue('WatchName', newValue, this.debug, true);\r\n }\r\n\r\n /**\r\n * Loads activity log data into the ActivityLogGrid component if available.\r\n */\r\n public loadGridData(): void {\r\n const activityLogGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_ActivityLogGrid');\r\n\r\n if (!activityLogGrid) {\r\n console.warn('loadGridData: ActivityLogGrid component not found.');\r\n return;\r\n }\r\n\r\n const activities = this.debug?.zData?.collectedActivities ?? [];\r\n\r\n activityLogGrid.setData(activities);\r\n }\r\n\r\n /**\r\n * Lists available watchable variable names in the debug context, filtered by search text and paginated.\r\n *\r\n * @param component Unused component reference, retained for signature compatibility.\r\n * @param searchText Optional text to filter watch names.\r\n * @param pageNo Current pagination page (only page 0 returns data).\r\n * @param me Unused reference to calling context, retained for signature compatibility.\r\n * @param dataItem Unused reference to selected item, retained for signature compatibility.\r\n * @param recordId Optional record identifier.\r\n * @returns Observable containing a filtered or full dataset based on the page number and search text.\r\n */\r\n private listWatchName(\r\n component: any,\r\n searchText: string,\r\n pageNo: number,\r\n me: any,\r\n dataItem: any,\r\n recordId?: string\r\n ): Observable<{ dataSet: { Name: string }[] }> {\r\n\r\n const baseWatchList: { Name: string }[] = [\r\n { Name: 'group.zModel' },\r\n { Name: 'group.zData' },\r\n { Name: 'group.fields' },\r\n { Name: 'group.form.value' },\r\n { Name: 'group.backNavigationPage' },\r\n { Name: 'group.parentReferenceField' },\r\n { Name: 'group.parentReferenceId' },\r\n { Name: 'Object.keys(group.zComponents)' },\r\n { Name: 'group.gridOptions.zgrid.grid.data' }\r\n // Additional suggestions for debugging:\r\n // { Name: '_debug.zModel' },\r\n // { Name: '_debug.zData.collectedActivities' },\r\n ];\r\n\r\n const additionalWatchList: string[] = this.scope?.group?.additionalWatchList ?? [];\r\n additionalWatchList.forEach(item => baseWatchList.push({ Name: item }));\r\n\r\n const filteredResults = searchText\r\n ? baseWatchList.filter(item =>\r\n item.Name.toLowerCase().includes(searchText.toLowerCase())\r\n )\r\n : baseWatchList;\r\n\r\n if (pageNo === 0) {\r\n return of({ dataSet: filteredResults });\r\n }\r\n\r\n return of({ dataSet: [] });\r\n }\r\n\r\n /**\r\n * Retrieves the current watch name from the debug model.\r\n *\r\n * @returns The DebugWatchName if available; otherwise an empty string.\r\n */\r\n private getWatchName(): string {\r\n const path = this.debug?.zModel?.DebugWatchName;\r\n const value = this.resolveFromGroup(path);\r\n\r\n // Reject if it's clearly a \"scope-like\" object\r\n if (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n (\r\n 'group' in value || // looks like a component instance\r\n 'zModel' in value || // looks like bound data\r\n 'subject' in value || // has observable stream\r\n typeof value.ngOnInit === 'function' // Angular component-like\r\n )\r\n ) {\r\n console.warn('[getWatchName] Skipping scope-like object:', path);\r\n return undefined;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n private resolveFromGroup(path: string): any {\r\n if (!path) return undefined;\r\n\r\n const parts = path.split('.');\r\n let pointer = this.group._debug;\r\n\r\n for (const part of parts) {\r\n if (pointer && typeof pointer === 'object' && part in pointer) {\r\n pointer = pointer[part];\r\n }\r\n }\r\n\r\n return pointer;\r\n }\r\n\r\n\r\n /**\r\n * Updates the DebugWatchName in the debug model when the input changes.\r\n * Replaces 'group' with '_group' in the value to prevent conflicts.\r\n *\r\n * @param event Event containing the updated value (event.data.value).\r\n * @param group The ZGroup context (unused but kept for signature compatibility).\r\n * @param me The component instance context (unused but kept for signature compatibility).\r\n */\r\n private onChangeWatchName(event: any, group: ZGroup, me: any): void {\r\n const newValue = event?.data?.value;\r\n\r\n if (typeof newValue === 'string' && newValue.trim()) {\r\n this.debug.zModel.DebugWatchName = newValue.replace(/group/g, '_group');\r\n } else {\r\n console.warn('onChangeWatchName: Invalid or empty value received.', event);\r\n }\r\n }\r\n\r\n /**\r\n * Triggered when the field element's editor code changes.\r\n * Refreshes the tree model to reflect updated structure.\r\n *\r\n * @param el The component output event (unused but retained for compatibility).\r\n */\r\n private fieldElementonEditorCodeChange(el: ZComponentOutputEvent): void {\r\n if (!this.refreshTreeModel) {\r\n console.warn('fieldElementonEditorCodeChange: refreshTreeModel is not defined.');\r\n return;\r\n }\r\n\r\n this.refreshTreeModel();\r\n }\r\n\r\n /**\r\n * Expands all nodes in the debug ZTree component.\r\n */\r\n private treeNodesExpandAll(): void {\r\n const ztree = this.debug?.zComponents?.['ztree_debugZTree'];\r\n\r\n if (!ztree || typeof ztree.expandAll !== 'function') {\r\n console.warn('treeNodesExpandAll: ZTree component or expandAll method is not available.');\r\n return;\r\n }\r\n\r\n ztree.expandAll();\r\n }\r\n\r\n /**\r\n * Collapses all nodes in the debug ZTree component.\r\n */\r\n private treeNodesCollapseAll(): void {\r\n const ztree = this.debug?.zComponents?.['ztree_debugZTree'];\r\n\r\n if (!ztree || typeof ztree.collapseAll !== 'function') {\r\n console.warn('treeNodesCollapseAll: ZTree component or collapseAll method is not available.');\r\n return;\r\n }\r\n\r\n ztree.collapseAll();\r\n }\r\n\r\n /**\r\n * Refreshes the tree model from the current debug zModel.Code JSON.\r\n * Converts the code into a usable tree structure.\r\n */\r\n private refreshTreeModel(): void {\r\n try {\r\n const rawCode = this.debug?.zModel?.Code;\r\n\r\n if (typeof rawCode !== 'string') {\r\n console.warn('refreshTreeModel: zModel.Code is not a valid JSON string.', rawCode);\r\n return;\r\n }\r\n\r\n const parsed = JSON.parse(rawCode);\r\n this.debug.treeModel = ZComponentHelper.convertTreeModel(parsed);\r\n } catch (error) {\r\n console.error('refreshTreeModel: Failed to parse zModel.Code.', error);\r\n debugger;\r\n }\r\n }\r\n\r\n /**\r\n * Generates a display template string for a tree item node.\r\n *\r\n * @param el The tree item template parameters containing dataItem info.\r\n * @returns A formatted string like: \"FieldName - [Type] = Value\"\r\n */\r\n private treeItemTemplate(el: ZTreeTemplateParams): string {\r\n const getFieldValue = (item: any): string => {\r\n return typeof item?._DataValue === 'string' ? item._DataValue : '...';\r\n };\r\n\r\n const name = el?.dataItem?.Name ?? '[Unnamed]';\r\n const type = el?.dataItem?.Type ?? 'Unknown';\r\n const value = getFieldValue(el?.dataItem);\r\n\r\n return `${name} - [${type}] = ${value}`;\r\n }\r\n\r\n /**\r\n * Handles clicks on a field element node in the tree.\r\n * Opens a modal for editing, updates the tree node, and refreshes the underlying model.\r\n *\r\n * @param event ZComponentOutputEvent containing the clicked node's data and event context.\r\n */\r\n public async onItemClick(event: ZComponentOutputEvent): Promise<void> {\r\n console.log('onItemClick data received:', event);\r\n\r\n if (!event?.data) {\r\n console.warn('onItemClick: event data is missing.', event);\r\n return;\r\n }\r\n\r\n // Prepare node model for editing\r\n const dataItem = { ...event.data, Value: event.data._DataValue };\r\n delete dataItem._DataValue;\r\n\r\n const zmodel = {\r\n nodeModel: JSON.stringify(dataItem, null, 2)\r\n };\r\n\r\n // Show modal dialog for editing node\r\n this.showzModal({\r\n fieldElementName: 'ionmvEditFieldNodeForm',\r\n parentGroup: this.debug?._group,\r\n zModel: zmodel,\r\n formHeader: 'Field Element Info'\r\n }).subscribe((modalData: ModalResponse) => {\r\n if (modalData?.responseType === 'cancel') {\r\n return;\r\n }\r\n\r\n try {\r\n const newData = JSON.parse(modalData.data?.nodeModel ?? '{}');\r\n\r\n if (newData?.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n\r\n // Update the selected tree node\r\n this.updateTreeNode(newData, this.debug.treeModel, event.event);\r\n\r\n // Deep clone to avoid side effects before reverting\r\n const clonedModel = JSON.parse(JSON.stringify(this.debug.treeModel));\r\n const revertedModel = ZComponentHelper.revertTreeModel(clonedModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n\r\n // Persist the updated model\r\n ZComponentHelper.setModelValue('Code', newCode, this.debug);\r\n this.updateModel();\r\n } catch (error) {\r\n console.error('onItemClick: Failed to parse or update tree node.', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Recursively updates a node in the tree model based on the given index path.\r\n *\r\n * @param newNode The new node object to insert or replace.\r\n * @param treeModel The current tree model or subtree to be updated.\r\n * @param index A string representing the node path, e.g., \"0_1_2\".\r\n */\r\n private updateTreeNode(newNode: any, treeModel: any, index: string): void {\r\n if (!Array.isArray(treeModel) || typeof index !== 'string') {\r\n console.warn('updateTreeNode: Invalid tree model or index.', { treeModel, index });\r\n return;\r\n }\r\n\r\n const treeIndex = index.split('_');\r\n const currentIdx = Number(treeIndex[0]);\r\n\r\n if (isNaN(currentIdx) || currentIdx < 0 || currentIdx >= treeModel.length) {\r\n console.warn('updateTreeNode: Index out of bounds.', { currentIdx, treeModelLength: treeModel.length });\r\n return;\r\n }\r\n\r\n if (treeIndex.length > 1) {\r\n const nextIndex = treeIndex.slice(1).join('_');\r\n this.updateTreeNode(newNode, treeModel[currentIdx]?.Value, nextIndex);\r\n } else {\r\n if (treeModel[currentIdx]?.Value) {\r\n newNode.Value = treeModel[currentIdx].Value;\r\n }\r\n treeModel[currentIdx] = newNode;\r\n }\r\n }\r\n\r\n /**\r\n * Recursively inserts a new node into the tree model at the given index path.\r\n *\r\n * @param newNode The node to insert.\r\n * @param treeModel The hierarchical tree structure (array of nodes).\r\n * @param index A string representing the path to insert at, e.g., \"0_1_2\".\r\n */\r\n private insertTreeNode(newNode: any, treeModel: any, index: string): void {\r\n if (!Array.isArray(treeModel) || typeof index !== 'string') {\r\n console.warn('insertTreeNode: Invalid tree model or index.', { treeModel, index });\r\n return;\r\n }\r\n\r\n const treeIndex = index.split('_');\r\n const currentIdx = Number(treeIndex[0]);\r\n\r\n // Nested insert\r\n if (treeIndex.length > 1) {\r\n const nextIndex = treeIndex.slice(1).join('_');\r\n\r\n if (!treeModel[currentIdx]) {\r\n console.warn('insertTreeNode: No node found at index for nested insert.', { currentIdx, treeModel });\r\n return;\r\n }\r\n\r\n if (!Array.isArray(treeModel[currentIdx].Value)) {\r\n treeModel[currentIdx].Value = [];\r\n }\r\n\r\n this.insertTreeNode(newNode, treeModel[currentIdx].Value, nextIndex);\r\n }\r\n // Direct insert\r\n else {\r\n if (treeIndex[0]) {\r\n if (!treeModel[currentIdx]) {\r\n console.warn('insertTreeNode: No node found at index for direct insert.', { currentIdx, treeModel });\r\n return;\r\n }\r\n\r\n if (!Array.isArray(treeModel[currentIdx].Value)) {\r\n treeModel[currentIdx].Value = [];\r\n }\r\n\r\n treeModel[currentIdx].Value.push(newNode);\r\n } else {\r\n treeModel.push(newNode);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Recursively removes a node from the tree model based on a flattened index string (e.g., \"0_2_1\").\r\n *\r\n * @param treeModel The hierarchical tree structure (array of nodes).\r\n * @param index A string index representing the node path, separated by underscores.\r\n */\r\n private removeTreeNode(treeModel: any, index: string): void {\r\n if (!Array.isArray(treeModel) || typeof index !== 'string') {\r\n console.warn('removeTreeNode: Invalid tree model or index.', { treeModel, index });\r\n return;\r\n }\r\n\r\n const treeIndex = index.split('_');\r\n const currentIdx = Number(treeIndex[0]);\r\n\r\n if (isNaN(currentIdx) || currentIdx < 0 || currentIdx >= treeModel.length) {\r\n console.warn('removeTreeNode: Index out of bounds.', { currentIdx, treeModelLength: treeModel.length });\r\n return;\r\n }\r\n\r\n if (treeIndex.length > 1) {\r\n const nextIndex = treeIndex.slice(1).join('_');\r\n const childBranch = treeModel[currentIdx]?.Value;\r\n\r\n if (!Array.isArray(childBranch)) {\r\n console.warn('removeTreeNode: Expected child Value to be an array.', childBranch);\r\n return;\r\n }\r\n\r\n this.removeTreeNode(childBranch, nextIndex);\r\n } else {\r\n treeModel.splice(currentIdx, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Handles changes to a tree node and updates the debug model's \"Code\" field.\r\n *\r\n * @param el ZComponentOutputEvent containing the updated tree node data.\r\n */\r\n private onTreeNodeChange(el: ZComponentOutputEvent): void {\r\n if (!el?.data) {\r\n console.warn('onTreeNodeChange: Missing event data.', el);\r\n return;\r\n }\r\n\r\n try {\r\n const codeData = JSON.stringify(el.data);\r\n ZComponentHelper.setModelValue('Code', codeData, this.debug);\r\n } catch (error) {\r\n console.error('onTreeNodeChange: Failed to serialize event data.', error);\r\n }\r\n }\r\n\r\n /**\r\n * Triggers the add node process by calling onAddNode with an empty event structure.\r\n */\r\n private addNode(): void {\r\n const el: ZComponentOutputEvent = {\r\n data: {},\r\n rowData: {},\r\n event: '',\r\n target: '',\r\n type: '',\r\n columnFields$: null\r\n };\r\n\r\n this.onAddNode(el);\r\n }\r\n\r\n\r\n /**\r\n * Handles the add node action by opening a modal with an initial field model,\r\n * then inserts the new node into the debug tree and updates the model code.\r\n *\r\n * @param el ZComponentOutputEvent containing event index where the new node should be added.\r\n */\r\n private async onAddNode(el: ZComponentOutputEvent): Promise<void> {\r\n console.log('onAddNode is called:', el);\r\n\r\n if (!el?.event) {\r\n console.warn('onAddNode: Missing or invalid event payload.', el);\r\n return;\r\n }\r\n\r\n const initialModel = {\r\n Name: 'Name',\r\n DisplayName: 'Name',\r\n Value: 'Name',\r\n Type: 'text',\r\n gridColVisible: true,\r\n width: 150,\r\n minWidth: 100,\r\n enableFiltering: true,\r\n enableSorting: true,\r\n pinnedLeft: false,\r\n PlaceHolder: 'Name',\r\n IsRequired: false,\r\n MinLength: 2,\r\n MaxLength: 50,\r\n Label: 'Name:',\r\n DivClass: 'col-xs-12 col-sm-6 col-md-6 col-lg-3',\r\n ReadOnly: false,\r\n ShowLabel: true,\r\n Visible: true,\r\n EnableHiding: false\r\n // Other optional fields like cellFilter, UpdateOnBlur, etc., can be added as needed\r\n };\r\n\r\n const zmodel = {\r\n nodeModel: JSON.stringify(initialModel, null, 2)\r\n };\r\n\r\n this.showzModal({\r\n fieldElementName: 'ionmvEditFieldNodeForm',\r\n parentGroup: this.debug?._group,\r\n zModel: zmodel,\r\n formHeader: 'Add Field Element Item'\r\n }).subscribe((modalData: ModalResponse) => {\r\n if (modalData?.responseType === 'cancel') {\r\n return;\r\n }\r\n\r\n try {\r\n const newData = JSON.parse(modalData.data?.nodeModel ?? '{}');\r\n\r\n if (newData?.Value) {\r\n newData._DataValue = newData.Value;\r\n newData.Value = null;\r\n }\r\n\r\n this.insertTreeNode(newData, this.debug?.treeModel, el.event);\r\n\r\n const newTreeModel = JSON.parse(JSON.stringify(this.debug.treeModel));\r\n const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n\r\n ZComponentHelper.setModelValue('Code', newCode, this.debug);\r\n this.updateModel();\r\n } catch (error) {\r\n console.error('onAddNode: Failed to parse or insert new node.', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles user confirmation and removes a node from the debug tree model.\r\n *\r\n * @param el ZComponentOutputEvent containing event index for the node to remove.\r\n */\r\n private onRemoveNode(el: ZComponentOutputEvent): void {\r\n if (!el?.event) {\r\n console.warn('onRemoveNode: Invalid event payload.', el);\r\n return;\r\n }\r\n\r\n this.alertService.show(\r\n 'Remove Node',\r\n 'Are you sure?',\r\n [\r\n { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n { text: 'Yes', cssClass: 'primary' } as AlertButton\r\n ]\r\n ).subscribe((reply: string) => {\r\n if (reply !== 'Yes') {\r\n return;\r\n }\r\n\r\n console.log('Removing node from treeModel:', el);\r\n\r\n this.removeTreeNode(this.debug?.treeModel, el.event);\r\n\r\n try {\r\n const clonedModel = JSON.parse(JSON.stringify(this.debug.treeModel));\r\n const revertedModel = ZComponentHelper.revertTreeModel(clonedModel);\r\n const newCode = JSON.stringify(revertedModel, null, 2);\r\n\r\n ZComponentHelper.setModelValue('Code', newCode, this.debug);\r\n } catch (error) {\r\n console.error('onRemoveNode: Failed to revert and update tree model.', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Navigates to the Field Element admin page.\r\n */\r\n private gotoFieldElement(): void {\r\n if (!this.router) {\r\n console.error('gotoFieldElement: Router is not available.');\r\n return;\r\n }\r\n\r\n this.router.navigate(['admin/field']);\r\n }\r\n\r\n /**\r\n * Updates the debug model if the form is dirty and valid.\r\n * Supports both asset-based and API-based saving, with real-time SignalR notification.\r\n */\r\n private updateModel(): void {\r\n const debug = this.debug;\r\n const fg = debug?.form as UntypedFormGroup;\r\n\r\n if (!fg) {\r\n console.error('updateModel: FormGroup is not available.');\r\n return;\r\n }\r\n\r\n if (!fg.dirty) {\r\n console.warn('updateModel: The debug form is not dirty. No changes to save.');\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n this.componentErrorHandlerService.showFormGroupErrorMessage(this.group, fg);\r\n return;\r\n }\r\n\r\n of(debug.zModel).pipe(\r\n // Patch form values to zModel\r\n tap(() => {\r\n Object.assign(debug.zModel, fg.value);\r\n }),\r\n\r\n // Determine save method: Asset or HTTP\r\n switchMap(() => {\r\n if (this.environment?.loadViaAsset) {\r\n const payload = typeof debug.zModel === 'string'\r\n ? JSON.parse(debug.zModel)\r\n : debug.zModel;\r\n\r\n const param: AssetsNodeParam = {\r\n id: debug.zModel.Id,\r\n assetsRoute: AssetsRoutes.fields,\r\n assetsFolder: AssetsFolder.fieldelement,\r\n params: payload\r\n };\r\n\r\n return this.webApiService.assetsHttpNodePut(param).pipe(\r\n map(res => this.handleSuccess(res, 'Record is updated successfully.'))\r\n );\r\n }\r\n\r\n return this.webApiService.httpPut$(`${debug.resourceURL}/${debug.zModel.Id}`, debug.zModel).pipe(\r\n map(res => this.handleSuccess(res, 'Record is updated successfully.'))\r\n );\r\n }),\r\n\r\n // Handle result and patch returned data to form\r\n switchMap((zmodel: any) => {\r\n console.log('updateModel: zModel updated result:', zmodel);\r\n\r\n if (zmodel?.Data) {\r\n Object.assign(debug.zModel, zmodel.Data);\r\n fg.patchValue(zmodel.Data);\r\n }\r\n\r\n fg.markAsPristine();\r\n // Optionally: this.afterUpdateModel(group);\r\n return of([]);\r\n })\r\n ).subscribe({\r\n error: (err) => {\r\n console.error('updateModel: An error occurred while updating the model.', err);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads workflow button data into the workflow button grid component if available.\r\n */\r\n public loadWorkflowData(): void {\r\n const workflowGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_WorkflowButtonGrid');\r\n\r\n if (!workflowGrid) {\r\n console.warn('loadWorkflowData: WorkflowButtonGrid component not found.');\r\n return;\r\n }\r\n\r\n const buttonData = this.debug?.zData?.collectedWorkflowButtons ?? [];\r\n\r\n workflowGrid.setData(buttonData);\r\n }\r\n\r\n /**\r\n * Handles the item click event on a workflow button row.\r\n * Fetches mapping info and opens a modal with button details for debugging.\r\n *\r\n * @param event The grid row click event containing dataItem with button metadata.\r\n */\r\n private gridWorkflowButtonOnItemClick(event: any): void {\r\n const dataItem = { ...event?.dataItem };\r\n\r\n if (!dataItem?.refField || !dataItem?.refAttribute) {\r\n console.warn('gridWorkflowButtonOnItemClick: Missing refField or refAttribute.', dataItem);\r\n return;\r\n }\r\n\r\n const field = dataItem.refField;\r\n const attribute = dataItem.refAttribute;\r\n\r\n const params = new HttpParams().set('ButtonId', field.Id);\r\n\r\n this.webApiService\r\n .httpPost$(this.resourceApiService.getURL('e1wfs_wfc_getmappedButtonInfoURL'), params)\r\n .pipe(\r\n map((res: any) => {\r\n const roleInfo = res?.MappedRoleList ?? [];\r\n\r\n const statusInfo = (res?.MappedStatusList ?? []).map(\r\n (s: any) => `${s.Name} (${s.Code})`\r\n );\r\n\r\n const parentStatusInfo = (res?.MappedParentStatusList ?? []).map(\r\n (s: any) => `${s.Name} (${s.Code})`\r\n );\r\n\r\n const mappedInfo = {\r\n mappedRoleInfo: roleInfo.length > 0 ? roleInfo : 'N.A.',\r\n mappedStatusInfo: statusInfo.length > 0 ? statusInfo : 'N.A.',\r\n mappedParentStatusInfo: parentStatusInfo.length > 0 ? parentStatusInfo : 'N.A.'\r\n };\r\n\r\n const buttonInfo = {\r\n WorkflowId: field.WorkflowId,\r\n ButtonId: field.Id,\r\n ButtonName: field.Name,\r\n ButtonCode: field.Code,\r\n ButtonTypeId: field.Type?.Id,\r\n ButtonTypeName: field.Type?.Name,\r\n ButtonTypeCode: field.Type?.Code,\r\n ButtonVisible: attribute.Visible,\r\n ButtonClickEvent: attribute.ClickEvent,\r\n ButtonURL: attribute.URL,\r\n ButtonIcon: attribute.Icon\r\n };\r\n\r\n const gotoStatus = field?.Status;\r\n const gotoStatusInfo = gotoStatus\r\n ? {\r\n GotoStatusId: gotoStatus.Id,\r\n GotoStatusName: gotoStatus.Name,\r\n GotoStatusCode: gotoStatus.Code\r\n }\r\n : {\r\n GotoStatusId: 'N.A.',\r\n GotoStatusName: 'N.A.',\r\n GotoStatusCode: 'N.A.'\r\n };\r\n\r\n return { ...buttonInfo, ...gotoStatusInfo, ...mappedInfo };\r\n }),\r\n tap((propertiesModel) => {\r\n this.showzModal({\r\n fieldElementName: 'mvWorkflowButtonDebugForm',\r\n parentGroup: this.debug._group,\r\n zModel: propertiesModel,\r\n formHeader: 'Workflow Button Info'\r\n }).subscribe((modalData: ModalResponse) => {\r\n if (modalData?.responseType === 'cancel') {\r\n return;\r\n }\r\n // Future: handle response if needed\r\n });\r\n })\r\n )\r\n .subscribe({\r\n error: (err) => {\r\n console.error('gridWorkflowButtonOnItemClick: Failed to fetch mapped button info.', err);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles a successful HTTP response by showing success messages via toast or Web API service.\r\n *\r\n * @param res The response object returned from an HTTP request.\r\n * @param successMsg The default success message to display.\r\n * @returns The original response object.\r\n */\r\n public handleSuccess(res: Response | any, successMsg: string): Response {\r\n if (res == null) {\r\n this.toastService.show(successMsg);\r\n return res;\r\n }\r\n\r\n const hasStatus = res?.ProcessingStatus !== undefined;\r\n const hasData = res?.Data !== undefined;\r\n\r\n if (hasStatus && hasData) {\r\n if (res.ProcessingStatus === true) {\r\n if (Array.isArray(res.Data)) {\r\n res.Data.forEach((item: any) => {\r\n const label = item?.CostCode ?? '[No CostCode]';\r\n this.webApiService.showHttpResponseMessage(\r\n MESSAGETYPE.Success,\r\n `${successMsg} : ${label}`,\r\n null\r\n );\r\n });\r\n } else {\r\n this.webApiService.showHttpResponseMessage(\r\n MESSAGETYPE.Success,\r\n successMsg,\r\n null\r\n );\r\n }\r\n }\r\n } else {\r\n this.toastService.show(successMsg);\r\n }\r\n\r\n return res;\r\n }\r\n\r\n /**\r\n * Delegates error handling to the webApiService and returns the resulting observable.\r\n *\r\n * @param res The error response to handle.\r\n * @returns An observable wrapping the handled error.\r\n */\r\n public handleError(res: any): Observable<any> {\r\n if (!res) {\r\n console.warn('handleError: Received null or undefined error response.');\r\n }\r\n return this.webApiService.handleError(res);\r\n }\r\n\r\n /**\r\n * Opens a modal dialog with the provided parameters.\r\n * Automatically disables `isTriggered` on the parent group (if any) before showing the modal.\r\n *\r\n * @param modalPageParams Parameters used to configure and display the modal.\r\n * @returns An observable that emits the modal response.\r\n */\r\n public showzModal(modalPageParams: ModalPageParams): Observable<ModalResponse> {\r\n if (modalPageParams?.parentGroup) {\r\n // Disable trigger flag before showing modal\r\n modalPageParams.parentGroup.isTriggered = false;\r\n }\r\n\r\n return this.modalService.show(modalPageParams);\r\n }\r\n}\r\n","import { ComponentRef, Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { NavigationStart, NavigationEnd, NavigationError, Router, Event, ActivatedRoute } from '@angular/router';\r\nimport { Observable, BehaviorSubject, Subscription, of, forkJoin, from } from 'rxjs';\r\nimport { tap, switchMap, map } from 'rxjs/operators';\r\nimport { DialogRef, DialogService, DialogSettings } from '@progress/kendo-angular-dialog';\r\nimport { ZComponentDebugService } from './zcomponent.debug.service';\r\nimport {\r\n MESSAGETYPE, ModalPageParams, CacheService, FieldService, ResourceApiService, TranslationService, WebApiService, StorageSessionService, OAuth2Service, ComponentErrorHandlerService,\r\n ZComponentOutputEvent, ZCoreService, ZField, ZGroup, DefaultMessage, DefaultDialogTitle, ActionType, AuthService, FormType, TriggerFromType,\r\n WebApiAdditionalDetail, MenuService, OAuthMenuItem, UrlUtils,DataUtils, TexteditorUtils, FieldUtils, AlertButton, AlertService, ToastService\r\n} from 'mmhglobal-zcore';\r\nimport { ModalService } from '../components/others/zmodal/zmodal.service';\r\nimport { ModalResponse } from '../interfaces/modal.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MainService {\r\n private group: ZGroup;\r\n private readonly oauthEnvironmentUrl: string;\r\n private readonly environment;\r\n private backNavigationPath: string[] = [];\r\n private routeParam: string[] = [];\r\n private previousRouteParam: string;\r\n public currentUrl: string = '';\r\n\r\n private readonly NAVIGATION_PARAMS_STORAGE_KEY = 'routeParam';\r\n private readonly PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY = 'previousPageRouteParam';\r\n private readonly BACK_NAVIGATION_PATH_STORAGE_KEY = 'backNavigationPath';\r\n private readonly NAVIGATED_RELOAD_GRID_STORAGE_KEY = 'navigatedReloadGrid';\r\n private readonly CLONE_NEW_MODEL_CACHE_KEY = 'cloneNewModel';\r\n\r\n private readonly secretKey = 'my-secret-key';\r\n private previousUrl: string;\r\n private navigationStartTime: number;\r\n\r\n constructor(\r\n private readonly router: Router,\r\n private readonly activatedRoute: ActivatedRoute,\r\n private readonly cacheService: CacheService,\r\n private readonly fieldService: FieldService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly componentErrorHandlerService: ComponentErrorHandlerService,\r\n private readonly webApiService: WebApiService,\r\n private readonly zcoreService: ZCoreService,\r\n private readonly modalService: ModalService,\r\n private readonly storageService: StorageSessionService,\r\n private readonly debugService: ZComponentDebugService,\r\n private readonly translationService: TranslationService,\r\n private readonly dialogService: DialogService,\r\n private readonly oauth2Service: OAuth2Service,\r\n private readonly authService: AuthService,\r\n private readonly menuService: MenuService,\r\n private readonly alertService: AlertService,\r\n private readonly toastService: ToastService\r\n ) {\r\n console.log('MainService constructor');\r\n this.environment = this.zcoreService.getEnvironment();\r\n this.oauthEnvironmentUrl = this.environment.e1OauthUrl + '/';\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationStart) {\r\n this.handleNavigationStart(event);\r\n }\r\n\r\n if (event instanceof NavigationEnd) {\r\n this.handleNavigationEnd(event);\r\n }\r\n\r\n if (event instanceof NavigationError) {\r\n this.handleNavigationError(event);\r\n }\r\n });\r\n }\r\n\r\n\r\n private dismissAllOverlays(): void {\r\n this.toastService?.dismissAll();\r\n this.alertService?.dismissAll();\r\n this.modalService?.dismissAll();\r\n }\r\n\r\n private handleNavigationStart(event: NavigationStart): void {\r\n console.log(event);\r\n\r\n this.navigationStartTime = performance.now();\r\n this.previousUrl = this.currentUrl || window.location.pathname;\r\n this.currentUrl = event.url;\r\n\r\n const triggerType = this.previousUrl === this.currentUrl ? TriggerFromType.refreshStart : TriggerFromType.navigateStart;\r\n this.updateAppMonPerformance(triggerType, this.previousUrl, true).subscribe();\r\n\r\n this.dismissAllOverlays();\r\n\r\n if (this.getStartupPage() === event.url) {\r\n this.resetRouteParam();\r\n }\r\n }\r\n\r\n private handleNavigationEnd(event: NavigationEnd): void {\r\n const duration = performance.now() - this.navigationStartTime;\r\n const triggerType = this.previousUrl === this.currentUrl ? TriggerFromType.refreshEnd : TriggerFromType.navigateEnd;\r\n\r\n this.updateAppMonPerformance(triggerType, event.urlAfterRedirects, true, duration).subscribe();\r\n this.currentUrl = event.urlAfterRedirects;\r\n\r\n console.log(event);\r\n }\r\n\r\n private handleNavigationError(event: NavigationError): void {\r\n const duration = performance.now() - this.navigationStartTime;\r\n this.updateAppMonPerformance(TriggerFromType.navigateError, this.previousUrl, false, duration).subscribe();\r\n\r\n console.log(event.error);\r\n this.removeLastNavigateRecord();\r\n }\r\n\r\n private updateAppMonPerformance(\r\n triggerType: TriggerFromType,\r\n url: string,\r\n isSuccess: boolean,\r\n duration?: number\r\n ): Observable<any> {\r\n // Initialize appmonDomainUrl if missing\r\n if (!this.resourceApiService.appmonDomainUrl) {\r\n this.resourceApiService.appmonDomainUrl = sessionStorage.getItem('AppmonDomainUrl') || '';\r\n }\r\n\r\n // Check for required dependencies\r\n if (!this.authService.e1Token || !this.resourceApiService.appmonDomainUrl) {\r\n return of({});\r\n }\r\n\r\n const getCurrentTimestamp = (): string => {\r\n const date = new Date();\r\n const pad = (n: number) => n.toString().padStart(2, '0');\r\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${date.getMilliseconds().toString().padStart(7, '0')}`;\r\n };\r\n\r\n const timestamp = getCurrentTimestamp();\r\n const currentDomain = window.location.origin;\r\n\r\n // Determine menu name\r\n const LOGIN_PAGE = 'LoginPage';\r\n const HOME_PAGE = 'HomePage';\r\n const AUTH_PATH = '/auth';\r\n\r\n let menuName = sessionStorage.getItem('menuName') || null;\r\n if (window.location.pathname === AUTH_PATH) {\r\n menuName = LOGIN_PAGE;\r\n } else if (window.location.pathname === this.environment.startUpPage) {\r\n menuName = HOME_PAGE;\r\n }\r\n\r\n // Build the request payload\r\n const params = {\r\n Url: `${currentDomain}${url}`,\r\n IsAuthenticated: true,\r\n Timestamp: timestamp,\r\n Duration: duration ?? null,\r\n RequestMethod: 'POST',\r\n UserName: this.authService.userId,\r\n UserId: this.authService.e1Token?.userName || '',\r\n Success: isSuccess,\r\n Environment: 'UI',\r\n ProjectCode: this.environment.projectCodes[0],\r\n SourceName: this.environment.projectCodes[0],\r\n ComponentCode: null,\r\n EventId: null,\r\n EventType: triggerType,\r\n SessionId: sessionStorage.getItem('sessionTabId'),\r\n MenuName: menuName,\r\n };\r\n\r\n // API Endpoint\r\n const apiEndpoint = `${this.resourceApiService.appmonDomainUrl}api/ApiSummaryInfos/`;\r\n\r\n // Call the web API and handle errors\r\n return this.webApiService.httpPost$(apiEndpoint, params);\r\n }\r\n\r\n //#region for signalR alert\r\n public getListFieldName = (fieldName: string): Observable<string> => {\r\n const params = new HttpParams().set(\"name\", fieldName);\r\n return this.oauth2Service.httpGet$(this.fieldService.listFieldApiRoute, params).pipe(\r\n map(res => (res as any).FieldElementMasterId),\r\n switchMap(id => this.oauth2Service.httpGet$(this.fieldService.formFieldApiRoute, { id })),\r\n map(res => (res as any).Name as string)\r\n );\r\n }\r\n\r\n public clearFormListFields = () => {\r\n this.fieldService.dataFormFields = {};\r\n this.fieldService.dataListFields = {};\r\n this.fieldService.dataListFieldItems = {};\r\n }\r\n\r\n dialogOpen(options: DialogSettings): DialogRef {\r\n return this.dialogService.open(options);\r\n }\r\n //#endregion\r\n\r\n startUp() {\r\n console.log('At main.service (StartUp) ...');\r\n }\r\n\r\n setGroup(group: ZGroup) {\r\n this.group = group;\r\n this.fieldService.setGroup(group);\r\n this.resourceApiService.setGroup(group);\r\n this.webApiService.setGroup(group);\r\n this.setGroupForDebugger(group);\r\n }\r\n\r\n getResourceServerData() {\r\n return this.resourceApiService.loadData();\r\n }\r\n\r\n getGroupFields(\r\n fieldElementName: string,\r\n formType: FormType | 'ListField' | 'FormField',\r\n triggerFrom: TriggerFromType,\r\n group: ZGroup,\r\n propertyName: string\r\n ) {\r\n return this.fieldService.getFormFieldCode(\r\n fieldElementName,\r\n formType,\r\n group,\r\n propertyName,\r\n triggerFrom\r\n );\r\n }\r\n\r\n initializeGroup(\r\n group: ZGroup,\r\n ctrlName: string,\r\n pageName: string,\r\n me: any\r\n ): Subscription {\r\n if (me.subscription) {\r\n me.subscription.unsubscribe();\r\n }\r\n const resourceName = group.resourceURLName || ctrlName;\r\n group.resourceURLName = resourceName;\r\n\r\n Object.assign(group, {\r\n resourceURL: this.resourceApiService.getURL(resourceName),\r\n gridColumnFields: this.fieldService.getFormFieldCode(\r\n ctrlName,\r\n \"FormField\"\r\n ),\r\n ctrlScope: me,\r\n pageName,\r\n ctrlName,\r\n // createModelURL: \"/create\" + ctrlName.toLowerCase(),\r\n editModelURL: ctrlName.toLowerCase(),\r\n // listModelURL: \"/list\" + ctrlName.toLowerCase(),\r\n // formHeader: \"...\",\r\n isLoading: true,\r\n fields: [],\r\n zModel: {},\r\n zComponents: {},\r\n zData: {},\r\n subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n // form: null as FormGroup, // removed for bug fix.\r\n cancelButtonName: \"Close\",\r\n zButtonsCount: 0,\r\n // topRightActionButton: [],\r\n // onAction: this.onAction.bind(this),\r\n backNavigation: this.backNavigation.bind(this),\r\n historyBack: this.historyBack.bind(this),\r\n refreshPage: this.refreshPage.bind(this),\r\n refreshGrid: this.refreshGrid.bind(this),\r\n updateModel: this.updateModel.bind(this),\r\n createModel: this.createModel.bind(this),\r\n cloneNewModel: this.cloneNewModel.bind(this),\r\n deleteModel: this.deleteModel.bind(this),\r\n newModel: this.newModel.bind(this),\r\n // updateEditMode: this.updateEditMode.bind(this),\r\n // _isDebugging: environment.debugSession || false,\r\n // _debug: {\r\n // zData: { collectedActivities: [], activityCount: 0 }\r\n // }\r\n // afterGetModelSuccess: null,\r\n // beforeUpdateModel: null,\r\n // isEdit: false\r\n });\r\n\r\n me.subscription = group.subject.subscribe((event: ZComponentOutputEvent) =>\r\n this.subjectEvent(event, group, me)\r\n );\r\n\r\n return me.subscription;\r\n }\r\n\r\n getModel$(group: ZGroup, id: string, triggerFrom?: TriggerFromType): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService\r\n .httpGet$(`${group.resourceURL}/${recId}`, null, { triggerFrom: triggerFrom })\r\n .pipe(\r\n tap((zmodel) => {\r\n group.zModel = zmodel;\r\n }),\r\n switchMap(() => {\r\n if (group.afterGetModelSuccess) {\r\n return this.afterGetModelSuccess(group);\r\n }\r\n return of([]);\r\n })\r\n );\r\n }\r\n\r\n canExit(form: UntypedFormGroup): boolean | Observable<boolean> {\r\n if (!form?.dirty) {\r\n return true;\r\n }\r\n\r\n if (form['skipDirtyCheck']) {\r\n return true;\r\n }\r\n\r\n return this.alertService\r\n .show(\"Data not save yet\", \"Are you sure want to discard the changes?\", [\r\n \"Cancel\",\r\n \"Discard Changes\",\r\n ])\r\n .pipe(\r\n switchMap((reply) => {\r\n if (reply === \"Discard Changes\") {\r\n return of(true);\r\n }\r\n return of(false);\r\n })\r\n );\r\n }\r\n\r\n closeModalForm(group?: ZGroup) {\r\n if (group?.subject) {\r\n group.subject.next({\r\n type: \"ModalService.close\",\r\n target: \"modalGroup.modalCancel()\"\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event?.target || event.target.startsWith(\"modalGroup.\")) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n let callFunc;\r\n\r\n try {\r\n callFunc = FieldUtils.getGroupEvalValue.call(\r\n group.ctrlScope,\r\n event.target,\r\n );\r\n } catch (error) {\r\n console.warn(\r\n \"Error when getGroupValue: \",\r\n event.target,\r\n \" > Error: \",\r\n error\r\n );\r\n }\r\n\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, group, me);\r\n } else if (typeof callFunc === \"string\") {\r\n if (event.type.endsWith(\"onNavigateTo\")) {\r\n const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n this.router.navigate([nUrl]);\r\n return;\r\n }\r\n\r\n if (event.type === \"zgrid-cellClick\") {\r\n this.showzModal(\r\n {\r\n fieldElementName: callFunc.slice(4),\r\n fieldElementObservable$: event.columnFields$,\r\n parentGroup: group,\r\n zModel: {},\r\n formHeader: '',\r\n referId: event.data.Id\r\n }\r\n ).subscribe();\r\n }\r\n } else if (typeof callFunc === \"object\") {\r\n if (event.type === \"zgrid-cellClick\") {\r\n if (callFunc.navigateUrl) {\r\n const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n this.router.navigate([url]);\r\n return;\r\n }\r\n\r\n if (callFunc.formHeader) {\r\n this.showzModal(\r\n {\r\n fieldElementName: callFunc.ctrlName,\r\n fieldElementObservable$: event.columnFields$,\r\n parentGroup: me.group,\r\n zModel: {},\r\n formHeader: callFunc.formHeader,\r\n referId: event.data.Id\r\n }\r\n ).subscribe();\r\n return;\r\n }\r\n console.warn(\r\n \"Invalid callFunc type: \",\r\n callFunc,\r\n \" event.Target: \",\r\n event.target\r\n );\r\n }\r\n // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n event.target,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n handleSuccess(res: Response | any, successMsg: string): Response {\r\n if (this.group) {\r\n this.tryUpdateGroupTrigger(false);\r\n }\r\n\r\n if (res?.ProcessingStatus) {\r\n if (this.group?.disableSuccessCreateMsg || this.group?.disableSuccessUpdateMsg || this.group?.disableSuccessDeleteMsg) {\r\n return res;\r\n }\r\n\r\n // set sessionstorage to trigger update upon created\r\n\r\n // Alert user update/save success\r\n this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success, successMsg, null);\r\n }\r\n return res;\r\n }\r\n\r\n private tryUpdateGroupTrigger(value: boolean) {\r\n if (this.group) {\r\n this.group.isTriggered = value;\r\n }\r\n }\r\n\r\n handleError(res: any): Observable<any> {\r\n this.tryUpdateGroupTrigger(false);\r\n return this.webApiService.handleError(res);\r\n }\r\n\r\n public routeNavigate(pageName: string, pageParams: string[], routeRelative: boolean = true) {\r\n this.setNavigationParams(pageParams);\r\n const snapshotUrl = this.activatedRoute['_routerState'].snapshot.url.split('?')[0];\r\n const pageUrl = routeRelative ? snapshotUrl + '/' + pageName : pageName;\r\n\r\n this.router.navigate([pageUrl], { replaceUrl: true });\r\n }\r\n\r\n public setNavigationParams(urlParams: string[]) {\r\n // If it is null or undefined\r\n if (!this.backNavigationPath) {\r\n this.backNavigationPath = [];\r\n }\r\n\r\n if (!this.isValueInLastElement(this.backNavigationPath, this.router.url)) {\r\n this.backNavigationPath.push(this.router.url);\r\n this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n }\r\n\r\n this.setRouteParam(urlParams);\r\n }\r\n\r\n public setRouteParam(routeParams: string[]) {\r\n // If it is null or undefined\r\n if (!this.routeParam) {\r\n this.routeParam = [];\r\n }\r\n\r\n // Filter out any empty string route params and join them into a single string\r\n const newRouteParam = '/' + Object.values(routeParams).filter(el => el !== '').join('/');\r\n\r\n if (!this.isValueInLastElement(this.routeParam, newRouteParam)) {\r\n if (routeParams) {\r\n // Capture the previous page's route param to be used for backnavigation checking\r\n this.previousRouteParam = this.routeParam[this.routeParam.length - 1];\r\n\r\n // If the previous route param exists, check if the last segment is 'new' or 'update'\r\n if (this.previousRouteParam) {\r\n const paramSegment = this.previousRouteParam.split(\"/\");\r\n const actionSegment = paramSegment[paramSegment.length - 1];\r\n // If the last segment is 'new' or 'update', store the previous route param in session storage\r\n const validActionTypes = [ActionType.New.toString(), ActionType.Edit.toString(), ActionType.Update.toString()];\r\n\r\n if (validActionTypes.includes(actionSegment)) {\r\n this.storageService.set(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY, JSON.stringify(this.previousRouteParam));\r\n }\r\n }\r\n\r\n // Add the new route param to the routeParam array and store it in session storage\r\n this.routeParam.push(newRouteParam);\r\n this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n }\r\n }\r\n }\r\n\r\n private isValueInLastElement(array: any[], targetValue: any) {\r\n if (array[array.length - 1] === targetValue) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public menuOnClick(item: OAuthMenuItem): boolean {\r\n const { AppClientPath: appClientPath, URL: pathName, Name: name } = item;\r\n const startupPage = this.zcoreService.getEnvironment().startUpPage.toLowerCase();\r\n const LAUNCHER = 'launcher';\r\n\r\n // Save menu name to sessionStorage\r\n this.menuService.setMenuName(name);\r\n\r\n // Handle app client path navigation\r\n if (appClientPath && startupPage === LAUNCHER) {\r\n return this.handleAppClientNavigation(pathName, appClientPath);\r\n }\r\n\r\n // Determine navigation path\r\n const navigationPath = this.getNavigationPath(startupPage, pathName);\r\n\r\n // Navigate to the determined path\r\n return this.navigateToPath(navigationPath, pathName);\r\n }\r\n\r\n private handleAppClientNavigation(pathName: string, appClientPath: string): boolean {\r\n try {\r\n UrlUtils.openExternalAppPathWithToken(pathName, appClientPath, this.authService);\r\n return true;\r\n } catch (error) {\r\n console.warn(`Failed to open App Client Path for ${pathName}:`, error);\r\n return false;\r\n }\r\n }\r\n\r\n private getNavigationPath(startupPage: string, pathName: string): string[] {\r\n const MENU_PAGE_PREFIX = '_';\r\n return startupPage.startsWith(MENU_PAGE_PREFIX) ? [startupPage] : [pathName];\r\n }\r\n\r\n private navigateToPath(navigationPath: string[], pathName: string): boolean {\r\n try {\r\n this.setNavigationParams(navigationPath);\r\n this.router.navigate([pathName]);\r\n return true;\r\n } catch (error) {\r\n console.warn(`Navigation to ${pathName} failed:`, error);\r\n return false;\r\n }\r\n }\r\n\r\n public navigateFromMenu(pageName: string) {\r\n const { startUpPage } = this.environment;\r\n this.setRouteParam([`${startUpPage}`]);\r\n this.backNavigationPath.push(this.getStartupPage());\r\n this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify([this.getStartupPage()]));\r\n\r\n this.router.navigate([pageName], { replaceUrl: true });\r\n }\r\n\r\n public resetRouteParam(): void {\r\n this.routeParam = [];\r\n this.backNavigationPath = [];\r\n this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n }\r\n\r\n private getNavigationParams(): any[] {\r\n this.routeParam = this.routeParam || [];\r\n\r\n if (this.routeParam.length === 0) {\r\n const storedParams = sessionStorage.getItem(this.NAVIGATION_PARAMS_STORAGE_KEY);\r\n if (storedParams) {\r\n try {\r\n this.routeParam = JSON.parse(storedParams);\r\n } catch (error) {\r\n console.error('Error parsing stored routeParam:', error);\r\n }\r\n }\r\n }\r\n else {\r\n console.log('No stored navigation params found.');\r\n }\r\n\r\n return this.routeParam;\r\n }\r\n\r\n public getNavigationParentParam(): any {\r\n const navigationParentParams = this.getNavigationParams();\r\n\r\n if (navigationParentParams.length > 0) {\r\n return navigationParentParams[navigationParentParams.length - 2];\r\n }\r\n\r\n console.warn('Navigation parent params not found.');\r\n return null;\r\n }\r\n\r\n public getNavigationCurrentParam(): any {\r\n const navigationCurrentParams = this.getNavigationParams();\r\n\r\n if (navigationCurrentParams.length > 0) {\r\n return navigationCurrentParams[navigationCurrentParams.length - 1];\r\n }\r\n\r\n console.warn('Navigation current params not found.');\r\n return null;\r\n }\r\n\r\n private getPreviousPageRouteParam(): any {\r\n if (this.previousRouteParam !== undefined) {\r\n // Return the cached value if it exists\r\n return this.previousRouteParam;\r\n }\r\n\r\n const previousRouteParamStr = sessionStorage.getItem(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY);\r\n if (previousRouteParamStr) {\r\n try {\r\n const previousRouteParam = JSON.parse(previousRouteParamStr);\r\n this.previousRouteParam = previousRouteParam;\r\n return previousRouteParam;\r\n } catch (error) {\r\n console.warn(`Unable to parse previous route param from session storage: ${error}`);\r\n }\r\n } else {\r\n console.warn('No previous page route param found in session storage.');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public removePreviousPageRouteParam(): void {\r\n this.storageService.remove(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY);\r\n }\r\n\r\n public removeLastNavigateRecord(): void {\r\n this.removeLastNavigationPath();\r\n this.removeLastRouteParam();\r\n }\r\n\r\n public removeLastNavigationPath(): void {\r\n this.backNavigationPath = JSON.parse(sessionStorage.getItem(this.BACK_NAVIGATION_PATH_STORAGE_KEY) || \"null\");\r\n if (this.backNavigationPath) {\r\n this.backNavigationPath.pop();\r\n this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n } else {\r\n console.warn(\"No back navigation path found in session.\");\r\n }\r\n }\r\n\r\n public removeLastRouteParam(): void {\r\n this.routeParam = JSON.parse(sessionStorage.getItem(this.NAVIGATION_PARAMS_STORAGE_KEY) || \"null\");\r\n if (this.routeParam) {\r\n this.routeParam.pop();\r\n this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n } else {\r\n console.warn(\"routeParam session is null.\");\r\n }\r\n }\r\n\r\n public backNavigation(event: ZComponentOutputEvent, group: ZGroup, me: any): void {\r\n if (group['isEmbeddedPage']) {\r\n group['isTriggered'] = false;\r\n this.closeContainerView(group);\r\n return;\r\n }\r\n\r\n if (group.beforeBackNavigationPage) {\r\n group.beforeBackNavigationPage(group).subscribe(() => {\r\n this.navigateBackToPreviousPage(group);\r\n })\r\n }\r\n else {\r\n this.navigateBackToPreviousPage(group);\r\n }\r\n }\r\n\r\n private async navigateBackToPreviousPage(group: ZGroup): Promise<void> {\r\n this.tryUpdateGroupTrigger(false);\r\n\r\n const backNavigationPath: string[] = JSON.parse(sessionStorage.getItem(this.BACK_NAVIGATION_PATH_STORAGE_KEY));\r\n const backNavigationURL = group.backNavigationPage || backNavigationPath[backNavigationPath.length - 1];\r\n\r\n if (!backNavigationURL) {\r\n console.error(\"Error navigating back to previous page: backNavigationURL is not set.\");\r\n await this.router.navigateByUrl(this.getStartupPage(), { replaceUrl: true });\r\n }\r\n\r\n if (!group.backNavigationPage) {\r\n const previousRouteParam = this.getPreviousPageRouteParam();\r\n const previousCurrentRouteParam = this.getNavigationCurrentParam();\r\n if (this.routeParam.length === 0 && this.routeNavigate.length === 0) {\r\n await this.router.navigateByUrl(this.getStartupPage(), { replaceUrl: true });\r\n }\r\n else {\r\n if (previousRouteParam && previousRouteParam === previousCurrentRouteParam) {\r\n this.removePreviousPageRouteParam();\r\n }\r\n this.removeLastRouteParam();\r\n this.removeLastNavigationPath();\r\n }\r\n }\r\n\r\n this.storageService.set(this.NAVIGATED_RELOAD_GRID_STORAGE_KEY, JSON.stringify(true));\r\n\r\n if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {\r\n this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n }\r\n\r\n try {\r\n await this.router.navigateByUrl(backNavigationURL, { replaceUrl: true });\r\n } catch (error) {\r\n console.error(`Error navigating back to previous page: ${error.message}`);\r\n //throw error;\r\n }\r\n }\r\n\r\n public getStartupPage() {\r\n const { startUpPage } = this.environment;\r\n\r\n // Check if the startup page starts with a underscore.\r\n if (startUpPage.startsWith('_')) {\r\n return `/${startUpPage.slice(1)}`;\r\n }\r\n\r\n // If not, prepend a forward slash and return.\r\n return `/${startUpPage}`;\r\n }\r\n\r\n private historyBack() {\r\n this.tryUpdateGroupTrigger(false);\r\n\r\n if (this.group['isEmbeddedPage']) {\r\n this.closeContainerView(this.group);\r\n return;\r\n }\r\n\r\n // this.navController.pop();\r\n // angular 19: find alternative\r\n }\r\n\r\n public refreshGrid(\r\n event: ZComponentOutputEvent,\r\n group: ZGroup,\r\n me: any,\r\n gridOptionName?: string\r\n ) {\r\n gridOptionName = gridOptionName || \"gridOptions\";\r\n if (event?.target) {\r\n const gridOption = event.target\r\n .trim()\r\n .replace(\"(\", \"\")\r\n .replace(\")\", \"\")\r\n .replace(\"group.refreshGrid\", \"\");\r\n if (gridOption.length > 0) {\r\n gridOptionName = gridOption;\r\n }\r\n }\r\n\r\n const zgridControl = group[gridOptionName];\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group['isTriggered'] = false;\r\n }\r\n\r\n private refreshPage() {\r\n if (this.group) {\r\n this.tryUpdateGroupTrigger(false);\r\n }\r\n location.reload();\r\n // this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n // this.router.onSameUrlNavigation = 'reload';\r\n // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n // this.router.navigate(['/crm/customer']);\r\n }\r\n\r\n getCloneNewCacheZModel(group: ZGroup) {\r\n const cacheZModel = this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n if (cacheZModel) {\r\n this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n group.zModel = cacheZModel;\r\n group.zModel.Id = 0;\r\n }\r\n group.isTriggered = false;\r\n }\r\n\r\n private newModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n of([]).pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before new, zModel:\", zmodel);\r\n return this.beforeNewModel(group);\r\n }),\r\n tap(() => {\r\n console.log(\"current url: \", this.router.url);\r\n\r\n const referenceId = group.parentReferenceId || \"0\";\r\n //const pathSegment = this.router.url.split(\"/\");\r\n //const lastSegment = pathSegment[pathSegment.length - 1];\r\n const currentNavigationParam = this.getNavigationCurrentParam();\r\n const navigationSegments = currentNavigationParam ? currentNavigationParam.split('/') : null;\r\n const defaultAction = group.isCloneNew ? ActionType.New : ActionType.Edit;\r\n const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] : ActionType.New) : defaultAction;\r\n\r\n if (group.isListForm) {\r\n this.tryUpdateGroupTrigger(false);\r\n\r\n this.setNavigationParams([referenceId, ActionType.New.toString()]);\r\n this.router.navigate([group.editModelURL], {\r\n relativeTo: group.ctrlScope.activatedRoute,\r\n });\r\n }\r\n else {\r\n // Scenario 1: From List New(action: new) ==> Clear form\r\n // Scenario 2: From Form New(action: new) ==> Clear form\r\n // Scenario 3: From Form New(action: new), isCloneNew ==> DONT Clear form\r\n // Scenario 4: From Form New(action: new), isCloneNew, Save, Click New ==> Clear form (When CreateModel, need change isCloneNew = false)\r\n // Scenario 5: From List open record(action: edit), isCloneNew ==> DONT Clear form\r\n // Scenario 6: From List open record(action: edit), isCloneNew, Save, Click New ==> Clear form (When UpdateModel, need change isCloneNew = false)\r\n // Scenario 7: From List open record(action: edit), Click New ==> Clear form\r\n // Scenario 8: From List open record(action: edit), Click New, Save, isCloneNew ==> DONT Clear form\r\n\r\n if (actionSegment === ActionType.Edit || actionSegment === ActionType.New) {\r\n if (!group.isCloneNew) {\r\n group.zModel = {};\r\n group.form.reset();\r\n\r\n // Reload the workflow button if the TypeCode is 'FUNCTION'\r\n if (this.isTypeCodeFunction(event)) {\r\n this.reloadWorkflowButton(group, event.data);\r\n }\r\n }\r\n if (actionSegment === ActionType.Edit) {\r\n // clear cloneNewModel cache(if have)\r\n if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {\r\n this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n }\r\n\r\n //this.setNavigationParams([referenceId, 'new']);\r\n this.removeLastRouteParam();\r\n this.setRouteParam([referenceId, ActionType.New.toString()]);\r\n\r\n group.zModel[group.parentReferenceField] = referenceId;\r\n }\r\n group.isEdit = false;\r\n group.isNew = true;\r\n group.isTriggered = false;\r\n }\r\n else {\r\n this.tryUpdateGroupTrigger(false);\r\n this.setNavigationParams([referenceId, ActionType.New.toString()]);\r\n\r\n this.router.navigate([group.editModelURL], {\r\n relativeTo: group.ctrlScope.activatedRoute,\r\n });\r\n }\r\n\r\n if (group.isCloneNew) {\r\n this.afterCloneNewModel(group, group.zModel);\r\n }\r\n else {\r\n this.afterNewModel(group);\r\n }\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public createModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n const fg: UntypedFormGroup = group.form;\r\n const resMessage = group.SuccessCreatedMessage || DefaultMessage.recordCreated;\r\n let createModelres = null;\r\n\r\n if (!fg.dirty) {\r\n console.warn(DefaultMessage.notDirtyMessage);\r\n this.tryUpdateGroupTrigger(false);\r\n return;\r\n }\r\n\r\n if (!fg.valid) {\r\n this.componentErrorHandlerService.showFormGroupErrorMessage(group, fg);\r\n this.tryUpdateGroupTrigger(false);\r\n return;\r\n }\r\n\r\n of(group.zModel).pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before create, zModel:\", zmodel);\r\n return this.beforeCreateModel(group);\r\n }),\r\n tap(() => {\r\n if (!this.group.skipCreateUsingFormValue) {\r\n Object.assign(group.zModel, fg.value);\r\n }\r\n }),\r\n switchMap(() => {\r\n const newModel = { ...group.zModel };\r\n DataUtils.removeNullFields(newModel);\r\n\r\n const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n buttonDetail: event,\r\n group: group,\r\n triggerFrom: event ? event.triggerFrom : undefined\r\n };\r\n\r\n return this.webApiService.httpPost$(group.resourceURL, newModel, webApiAdditionalDetail).pipe(\r\n tap((resp) => {\r\n createModelres = resp;\r\n return resp;\r\n }),\r\n tap((res) => {\r\n return this.handleSuccess(res, resMessage);\r\n })\r\n );\r\n }),\r\n switchMap((zmodel: any) => {\r\n console.log(\"After created, zModel:\", zmodel);\r\n this.patchUpdatedzModel(fg, zmodel, group);\r\n return this.afterCreateModel(group, zmodel);\r\n }),\r\n tap((resp) => {\r\n if (createModelres.ProcessingStatus == null || createModelres.ProcessingStatus == true) {\r\n if (resp && group.zModel.Id !== 0) {\r\n group.isNew = false;\r\n group.isEdit = true;\r\n group.isCloneNew = false;\r\n group.isTriggered = false;\r\n group.cancelButtonName = \"Close\";\r\n // Object.assign(group.zModel, resp);\r\n // fg.patchValue(resp);\r\n }\r\n // fg.markAsPristine();\r\n\r\n if ((group.isCloseAfterSuccess || group.isCloseAfterCreated) && !group.isCloneNew) {\r\n this.backNavigation(null, group, this);\r\n }\r\n }\r\n else {\r\n fg.markAsDirty();\r\n }\r\n // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n // this.toastService.show(\"Record is created successfully.\");\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public updateModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n this.updateModelObservable(event, group).subscribe();\r\n }\r\n\r\n public updateModelObservable(event: ZComponentOutputEvent, group: ZGroup, form: UntypedFormGroup = null, updateAPIObservable: Observable<any> = null, isSkipDirty = false): Observable<any> {\r\n const fg = form || group.form;\r\n const resMessage = group.SuccessUpdatedMessage || DefaultMessage.recordUpdated;\r\n let updateModelres = null;\r\n\r\n if (!this.isFormDirtyAndValid(fg, group, isSkipDirty, event)) {\r\n if (isSkipDirty) {\r\n fg.markAllAsTouched();\r\n }\r\n this.tryUpdateGroupTrigger(false);\r\n return of(false);\r\n }\r\n\r\n const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n buttonDetail: event,\r\n group: group,\r\n triggerFrom: event ? event.triggerFrom : undefined\r\n };\r\n\r\n updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, webApiAdditionalDetail).pipe(\r\n tap((res) => {\r\n this.handleSuccess(res, resMessage);\r\n }\r\n //this.handleSuccess(res, \"Record is updated successfully.\")\r\n ));\r\n\r\n return of(group.zModel).pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before update, zModel:\", zmodel);\r\n return this.beforeUpdateModel(group);\r\n }),\r\n tap(() => {\r\n if (!group.skipUpdateUsingFormValue) {\r\n Object.assign(group.zModel, fg.value);\r\n }\r\n }),\r\n switchMap(() => {\r\n return updateAPIObservable;\r\n }),\r\n switchMap((resp: any) => {\r\n console.log(\"After updated, response:\", resp);\r\n updateModelres = resp;\r\n group.isCloneNew = false;\r\n this.patchUpdatedzModel(fg, resp, group);\r\n fg.markAsPristine();\r\n return this.afterUpdateModel(group, resp);\r\n }),\r\n tap((resp) => {\r\n if (updateModelres?.ProcessingStatus) {\r\n if (group.isCloseAfterSuccess || group.isCloseAfterUpdated) {\r\n this.backNavigation(null, group, this);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clones a new model for a ZGroup based on the provided ZComponentOutputEvent.\r\n *\r\n * @param {ZComponentOutputEvent} event - The ZComponentOutputEvent triggering the clone.\r\n * @param {ZGroup} group - The ZGroup to clone the new model for.\r\n */\r\n private cloneNewModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n // Set flag indicating that the model is being cloned\r\n group.isCloneNew = true;\r\n\r\n // Extract the function value from the target of the event\r\n const { target } = event;\r\n const functionValue = target?.match(/\\(([^)]+)\\)/)?.[1];\r\n\r\n // If the function value is 'true', reset the form and model\r\n if (functionValue === 'true') {\r\n group.zModel = {};\r\n group.form.reset();\r\n }\r\n\r\n // Define the values for the WFS model\r\n const newModelValues = {\r\n Id: 0,\r\n WFS_DocumentId: null,\r\n WFS_StatusCode: null,\r\n WFS_StatusId: null,\r\n WFS_StatusName: null,\r\n };\r\n\r\n // Assign the WFS model values to the form value and ZModel\r\n Object.assign(group.form.value, newModelValues);\r\n Object.assign(group.zModel, group.form.value);\r\n\r\n // Patch the form with the ZModel, mark it as dirty, and cache the ZModel\r\n const fg = group.form;\r\n const resultData = TexteditorUtils.removeTextEditorFieldsFromData(group.zModel, group);\r\n fg.patchValue(resultData);\r\n fg.markAsDirty();\r\n this.cacheService.setCache(this.CLONE_NEW_MODEL_CACHE_KEY, group.zModel);\r\n\r\n // Call the newModel function for the group\r\n this.newModel(null, group);\r\n\r\n // Reload the workflow button if the TypeCode is 'FUNCTION'\r\n if (this.isTypeCodeFunction(event)) {\r\n this.reloadWorkflowButton(group, event.data);\r\n }\r\n\r\n // Clear the trigger flag\r\n group.isTriggered = false;\r\n }\r\n\r\n private deleteModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n const fg: UntypedFormGroup = group.form;\r\n const resMessage = group.SuccessDeletedMessage || DefaultMessage.recordDeleted;\r\n\r\n of(group.zModel)\r\n .pipe(\r\n switchMap((zmodel) => {\r\n console.log(\"Before delete, zModel:\", zmodel);\r\n return this.beforeDeleteModel(group);\r\n }),\r\n switchMap(() => {\r\n this.tryUpdateGroupTrigger(false);\r\n return this.alertService.show(\"Delete Record\", DefaultMessage.confirmation,\r\n [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ]);\r\n }),\r\n switchMap((reply: string) => {\r\n if (reply === \"Yes\") {\r\n this.tryUpdateGroupTrigger(true);\r\n Object.assign(group.zModel, fg.value);\r\n group.zModel.Disabled = true;\r\n\r\n let tempResponse = {};\r\n const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n buttonDetail: event,\r\n group: group,\r\n triggerFrom: event ? event.triggerFrom : undefined\r\n };\r\n return this.webApiService\r\n .httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, webApiAdditionalDetail)\r\n .pipe(\r\n tap((res) => {\r\n tempResponse = { ...res };\r\n this.handleSuccess(res, resMessage)\r\n }),\r\n switchMap((zmodel) => {\r\n console.log(\"After deleted, zModel:\", zmodel);\r\n return this.afterDeleteModel(group, zmodel);\r\n }),\r\n tap((resp) => {\r\n if (tempResponse) {\r\n if (tempResponse['ProcessingStatus']) {\r\n fg.reset();\r\n this.backNavigation(null, group, this);\r\n }\r\n }\r\n group.zModel.Disabled = false;\r\n })\r\n );\r\n } else {\r\n return of([]);\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n private patchUpdatedzModel(fg: UntypedFormGroup, resp: any, group: ZGroup) {\r\n if (resp) {\r\n if (resp.Data) {\r\n Object.assign(group.zModel, resp.Data);\r\n const resultData = TexteditorUtils.removeTextEditorFieldsFromData(resp.Data, group);\r\n fg.patchValue(resultData);\r\n }\r\n else if (resp[\"Id\"]) {\r\n Object.assign(group.zModel, resp);\r\n const resultData = TexteditorUtils.removeTextEditorFieldsFromData(resp, group);\r\n fg.patchValue(resultData);\r\n }\r\n else {\r\n console.log(\"Failed to patchUpdatedzModel to the formgroup\");\r\n }\r\n }\r\n\r\n group.referenceId = group.zModel.Id;\r\n this.tryUpdateGroupTrigger(false);\r\n group.isTriggered = false;\r\n\r\n fg.markAsPristine();\r\n }\r\n\r\n private isTypeCodeFunction(event: ZComponentOutputEvent) {\r\n return event?.data?.TypeCode === 'FUNCTION';\r\n }\r\n\r\n private reloadWorkflowButton(group: ZGroup, data: any) {\r\n // Changed to should reload all workflow button if it trigger new/clonenew via the form page.\r\n\r\n //if (data.reloadAllWorkflowButton) {\r\n const workflowButtonList = Object.keys(group.zComponents)\r\n .filter(key => key.startsWith('zworkflowbuttons_'))\r\n .reduce((obj, key) => {\r\n obj[key] = group.zComponents[key];\r\n return obj;\r\n }, {});\r\n\r\n Object.values(workflowButtonList).forEach(value => {\r\n value?.['loadButton']?.();\r\n });\r\n //}\r\n //else {\r\n // const workflowButtons = ZComponentHelper.getComponent(group, `zworkflowbuttons_${data.zButtonName}`);\r\n // workflowButtons?.['loadButton']?.();\r\n //}\r\n }\r\n\r\n public isFormDirtyAndValid(fg: UntypedFormGroup, group: ZGroup, isSkipDirty = false, event: ZComponentOutputEvent): boolean {\r\n if (!isSkipDirty && !fg.dirty) {\r\n console.warn(DefaultMessage.notDirtyMessage);\r\n const message = event?.data?.FormNotDirtyMessage ?? DefaultMessage.notDirtyMessage;\r\n this.alertService.showOkay(DefaultDialogTitle.nothingToUpdate, message, ['col-xs-10 col-sm-10 col-md-8 col-lg-6 col-lg-5']);\r\n return false;\r\n }\r\n\r\n if (!fg.valid) {\r\n this.componentErrorHandlerService.showFormGroupErrorMessage(group, fg);\r\n fg.markAsTouched();\r\n fg.markAllAsTouched();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private beforeUpdateModel(group: ZGroup) {\r\n if (!group.beforeUpdateModel) {\r\n console.warn(\"group.beforeUpdateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeUpdateModel(group);\r\n }\r\n\r\n private beforeDeleteModel(group: ZGroup) {\r\n if (!group.beforeDeleteModel) {\r\n console.warn(\"group.beforeDeleteModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeDeleteModel(group);\r\n }\r\n\r\n private beforeNewModel(group: ZGroup) {\r\n if (!group.beforeNewModel) {\r\n console.warn(\"group.beforeNewodel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeNewModel(group);\r\n }\r\n\r\n private beforeCreateModel(group: ZGroup) {\r\n if (!group.beforeCreateModel) {\r\n console.warn(\"group.beforeCreateModel is undefined\");\r\n return of({});\r\n }\r\n return group.beforeCreateModel(group);\r\n }\r\n\r\n beforePageInitialise(group: ZGroup) {\r\n if (!group.beforePageInitialise) {\r\n console.warn(\"group.beforePageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.beforePageInitialise(group);\r\n }\r\n\r\n private afterGetModelSuccess(group: ZGroup): Observable<any> {\r\n if (!group.zModel.Id) {\r\n console.warn(\"zModel.Id is not defined\", group.zModel);\r\n return of({});\r\n }\r\n if (!group.afterGetModelSuccess) {\r\n console.warn(\"group.afterGetModelSuccess is not defined\");\r\n return of({});\r\n }\r\n return group.afterGetModelSuccess(group);\r\n }\r\n\r\n afterNewModel(group: ZGroup): Observable<any> {\r\n if (!group.afterNewModel) {\r\n console.warn(\"group.afterNewModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterNewModel(group);\r\n }\r\n\r\n private afterCreateModel(group: ZGroup, zmodel: any): Observable<any> {\r\n if (!group.afterCreateModel) {\r\n console.warn(\"group.afterCreateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterCreateModel(group, zmodel);\r\n }\r\n\r\n private afterUpdateModel(group: ZGroup, zmodel: any): Observable<any> {\r\n if (!group.afterUpdateModel) {\r\n console.warn(\"group.afterUpdateModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterUpdateModel(group, zmodel);\r\n }\r\n\r\n private afterDeleteModel(group: ZGroup, zmodel: any): Observable<any> {\r\n if (!group.afterDeleteModel) {\r\n console.warn(\"group.afterDeleteModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterDeleteModel(group, zmodel);\r\n }\r\n\r\n afterCloneNewModel(group: ZGroup, zmodel: any): Observable<any> {\r\n if (!group.afterCloneNewModel) {\r\n console.warn(\"group.afterCloneNewModel is not defined\");\r\n return of({});\r\n }\r\n return group.afterCloneNewModel(group, zmodel);\r\n }\r\n\r\n afterPageInitialise(group: ZGroup) {\r\n if (!group.afterPageInitialise) {\r\n console.warn(\"group.afterPageInitialise is undefined\");\r\n return of({});\r\n }\r\n return group.afterPageInitialise(group);\r\n }\r\n\r\n // private onAction(group: ZGroup) {\r\n // this.actionSheetCtrl\r\n // .create({\r\n // header: \"Choose an Action\",\r\n // buttons: group.topRightActionButton\r\n // })\r\n // .then(actionSheetEl => {\r\n // actionSheetEl.present();\r\n // });\r\n // }\r\n\r\n // setModelValue(propertyName: string, value: any, group: ZGroup) {\r\n // group.zModel[propertyName] = value;\r\n // if (group.isLoading) {\r\n // return;\r\n // }\r\n // const fg = group.form as FormGroup;\r\n // if (!fg) {\r\n // eslint-disable-next-line , no-debugger\r\n // debugger;\r\n // }\r\n // const fc = fg.controls[propertyName];\r\n // if (!fc) {\r\n // eslint-disable-next-line no-debugger\r\n // debugger;\r\n // }\r\n // fc.setValue(value);\r\n // fc.markAsDirty();\r\n // }\r\n\r\n public showzModal(modalPageParams: ModalPageParams): Observable<ModalResponse> {\r\n if (modalPageParams.parentGroup) {\r\n // disable isTriggered before display the popup.\r\n modalPageParams.parentGroup.isTriggered = false;\r\n }\r\n return this.modalService.show(modalPageParams);\r\n }\r\n\r\n public cookieStorePost(name: string, value: any): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores\";\r\n const cookieStoreValue = {\r\n 'Name': name,\r\n 'Value': JSON.stringify(value)\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) {\r\n console.log(\"grid config saved(\" + res.status + \"): \", res);\r\n return res;\r\n }\r\n }));\r\n }\r\n\r\n public cookieStoreGet(name: string, accessToken: string): Observable<any> {\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores/?name=\" + name;\r\n\r\n return this.webApiService.httpGet$(cookieStoreURL, { headers: accessToken }).pipe(map(res => {\r\n if (res) {\r\n return res;\r\n }\r\n }));\r\n }\r\n\r\n public cookieStoreDeleteMultiple(name: string): Observable<any> {\r\n // for Post to CookieStore\r\n const cookieStoreURL = this.oauthEnvironmentUrl + \"Admin/DeleteMultipleCookies\";\r\n const cookieStoreValue = {\r\n 'containName': name\r\n };\r\n\r\n return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n if (res) {\r\n return res;\r\n }\r\n }));\r\n }\r\n\r\n public scrollToElementById(id: string, behavior: 'smooth' | 'auto' = 'smooth') {\r\n const el = document.getElementById(id);\r\n el.scrollIntoView({ behavior });\r\n }\r\n\r\n public translationPageElement(group: ZGroup): Observable<any> {\r\n const obsList = new Array<Observable<any>>();\r\n if (group.formHeader) {\r\n obsList.push(this.translationService.$translateSingleItem(group, \"formHeader\"));\r\n }\r\n\r\n if (group.navItems && group.navItems.length > 0) {\r\n obsList.push(this.translationService.$translateItemList(group.navItems, \"text\"));\r\n }\r\n\r\n if (obsList.length === 0) {\r\n return of({});\r\n }\r\n\r\n return forkJoin(obsList);\r\n }\r\n\r\n\r\n //#region signalR service\r\n public joinProjectSignalR(projectCode?: string) {\r\n // if (this.signalrService.signalREnabled()) {\r\n // if (projectCode) {\r\n // this.signalrService.joinGroup(projectCode);\r\n // }\r\n // else {\r\n // // We default first project code in environment as group\r\n // const environment = this.zcoreService.getEnvironment();\r\n // const firstProjectCode = environment.projectCodes[0];\r\n // this.signalrService.joinGroup(firstProjectCode);\r\n // }\r\n // }\r\n }\r\n\r\n public handleSignalRModificationAlert(formId: string) {\r\n // if (this.signalrService.signalREnabled() && this.environment.enableFormPageModificationAlert) {\r\n // const eventName = `${window.location.href}`.replace(/([^:]\\/)\\/+/g, \"$1\");\r\n // if (!this.group.signalRCallbackHandler) {\r\n // this.group.signalRCallbackHandler = {};\r\n // }\r\n // this.group.signalRCallbackHandler['alertFormModified'] = this.alertFormModified.bind(this, formId);\r\n\r\n // this.signalrService.unsubscribeFromEvent(`${eventName}`); // unsubscribe the event before subscribe to event again.\r\n // this.signalrService.subscribeToEvent(this.group, `${eventName}`, `group.signalRCallbackHandler.alertFormModified`);\r\n // }\r\n // else {\r\n // console.warn('enableFormPageModificationAlert not enabled.');\r\n // }\r\n }\r\n\r\n private alertFormModified(formId: string, group: ZGroup, resp: any, eventName: string) {\r\n if (!resp) {\r\n return false;\r\n }\r\n\r\n const respResult = JSON.parse(resp);\r\n\r\n if (!respResult.UserName) {\r\n return false;\r\n }\r\n\r\n if (formId === respResult.Id?.toString() && eventName === window.location.href) {\r\n if (respResult.UserName === this.authService.e1Token.myProfile.UserName) {\r\n if (respResult.Action === ActionType.Update) {\r\n this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null, { triggerFrom: TriggerFromType.signalRAlert }).subscribe(resp => {\r\n this.reloadDataAndWorkflowButton(resp);\r\n });\r\n }\r\n }\r\n else {\r\n if (respResult.Action === ActionType.Delete) {\r\n this.alertService.show(\"Record Deleted by Another User\", \"The current record has been deleted by another user.\", [\r\n { text: \"OK\", cssClass: \"primary\" } as AlertButton\r\n ], [\"col-6\"], undefined, true).pipe(switchMap((reply) => {\r\n if (reply === \"OK\") {\r\n this.navigateBackToPreviousPage(group);\r\n return of(true);\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n else if (respResult.Action === ActionType.Update) {\r\n this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null).subscribe(resp => {\r\n if (resp?.RowVersion) {\r\n if (resp.RowVersion !== this.group.zModel?.RowVersion) {\r\n this.alertService.show(\"The current page has been modified by other users.\", \"Would you like to refresh the page data?\", [\r\n { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n ], [\"col-6\"], undefined, true).pipe(switchMap((reply) => {\r\n if (reply === \"Yes\") {\r\n this.reloadDataAndWorkflowButton(resp);\r\n\r\n return of(true);\r\n }\r\n\r\n this.toastService.showPermanently('The data on the current page is not up to date, as it has been saved and overwritten by another user. Please refresh the page.', 'top', 'warning');\r\n return of(false);\r\n })\r\n ).subscribe();\r\n }\r\n else {\r\n console.log(`Alert received regarding form modification, RowVersion remains unaltered. No further action has been taken.`)\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n private reloadDataAndWorkflowButton(zModel: any) {\r\n this.group.zModel = zModel;\r\n const fg: UntypedFormGroup = this.group.form;\r\n const resultData = TexteditorUtils.removeTextEditorFieldsFromData(this.group.zModel, this.group);\r\n fg.patchValue(resultData);\r\n fg.markAsPristine();\r\n\r\n // Capture all workflow buttons\r\n const workflowButtons = Object.keys(this.group.zComponents)\r\n .filter(key => key.startsWith(\"zworkflowbuttons_\"))\r\n .map(key => this.group.zComponents[key]);\r\n\r\n // Reload workflow buttons\r\n workflowButtons.forEach(button => {\r\n button.loadButton();\r\n });\r\n }\r\n //#endregion\r\n\r\n // #region DEC\r\n public async loadContainerView(elementContainer: any, containerPage: any, data: ZField, group?: ZGroup) {\r\n if (!elementContainer) {\r\n console.log(\"ElementContainer is null.\");\r\n return;\r\n }\r\n\r\n if (!containerPage) {\r\n console.log(\"ContainerPage is null.\");\r\n return;\r\n }\r\n\r\n const viewContainerRef = elementContainer.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n const embeddedgroup = new ZGroup();\r\n this.setGroupForDebugger(embeddedgroup);\r\n const componentRef: ComponentRef<any> = viewContainerRef.createComponent(containerPage);\r\n\r\n embeddedgroup.isTriggered = false; // enable back the button for triggering.\r\n\r\n Object.assign(componentRef.instance[\"group\"], embeddedgroup);\r\n Object.assign(componentRef.instance[\"group\"], { parentGroup: group, isEmbeddedPage: true, elementContainer: elementContainer, ContainerFormAutoScroll: data.ContainerFormAutoScroll });\r\n\r\n if (data?.ContainerFormAutoScroll) {\r\n this.scrollToEmbbedComponentPage();\r\n }\r\n }\r\n\r\n public scrollToEmbbedComponentPage(milliSeconds: number = 1500): Promise<void> {\r\n const endOfGridDiv = document.getElementById(\"end-of-grid\");\r\n const endOfGridPositionInfo = endOfGridDiv.getBoundingClientRect();\r\n const yCoor = (endOfGridPositionInfo?.y || 630) - 10;\r\n\r\n const mainIonContent: any = document.getElementById(\"ion-content-main-page\");\r\n return mainIonContent.scrollByPoint(0, yCoor, milliSeconds);\r\n }\r\n\r\n public scrollToTopOfPage(milliSeconds: number = 1500): Promise<void> {\r\n const mainIonContent: any = document.getElementById(\"ion-content-main-page\");\r\n return mainIonContent.scrollToPoint(0, 0, milliSeconds) as Promise<void>;\r\n }\r\n\r\n public async closeContainerView(group: ZGroup) {\r\n if (group[`parentGroup`] && group[`parentGroup`][`e1CloseGridContainer`] && typeof group[`parentGroup`][`e1CloseGridContainer`] === \"function\") {\r\n group[`parentGroup`][`e1CloseGridContainer`](false);\r\n }\r\n }\r\n //#endregion\r\n\r\n private setGroupForDebugger(group: ZGroup) {\r\n const isDebugging = this.zcoreService.isDebugSession() || false;\r\n if (isDebugging) {\r\n this.debugService.onInitDebugger(group);\r\n }\r\n }\r\n}\r\n\r\nexport function refreshGrid(group: ZGroup) {\r\n const zgridControl = group[\"gridOptions\"];\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n }\r\n group.isTriggered = false;\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { forkJoin, Observable, of, tap } from \"rxjs\";\r\nimport { ZCoreService, TranslationService, FieldService, ZComponentProperties, ZField, ZGroup, FieldUtils } from 'mmhglobal-zcore';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZComponentService {\r\n public environment;\r\n\r\n constructor(\r\n // public readonly uiSignalService: UISignalService,\r\n private readonly translateService: TranslationService,\r\n private readonly zcoreService: ZCoreService,\r\n private readonly fieldService: FieldService,\r\n ) {\r\n this.environment = this.zcoreService.getEnvironment();\r\n }\r\n\r\n public isSkipComponentType(componentType: string): boolean {\r\n return FieldUtils.isSkipComponentType(componentType);\r\n }\r\n\r\n private readonly DEFAULT_ISEDIT = true;\r\n public setEditMode(me: any) {\r\n let editMode = { value: this.DEFAULT_ISEDIT, initValue: this.DEFAULT_ISEDIT };\r\n\r\n if (me?.data?.EditMode != undefined) {\r\n if (typeof me.data.EditMode != \"object\") {\r\n const grpEditModeValue = FieldUtils.getGroupValue(me.data.EditMode, me.group);\r\n editMode = { value: grpEditModeValue, initValue: grpEditModeValue };\r\n }\r\n else {\r\n editMode = me.data.EditMode;\r\n }\r\n }\r\n else if (me?.containerField?.[`_EditMode`] != undefined) {\r\n editMode = me.containerField[`_EditMode`];\r\n }\r\n me.data[`_EditMode`] = editMode;\r\n me.data[`_EditMode`].value = editMode.initValue;\r\n }\r\n\r\n public setComponentAdditionalProperties(me: any) {\r\n me.componentProperties.title = me.data?.Title && typeof me.data.Title === 'string' && me.data.Title.startsWith(\"group.\") ? FieldUtils.getGroupEvalValue.call(me, me.data.Title) : me.data.Title;\r\n me.componentProperties.icon = me.data?.Icon && typeof me.data.Icon === 'string' && me.data.Icon.startsWith(\"group.\") ? FieldUtils.getGroupEvalValue.call(me, me.data.Icon) : me.data.Icon;\r\n me.componentProperties.label = me.data?.Label && typeof me.data.Label === 'string' && me.data.Label.startsWith(\"group.\") ? FieldUtils.getGroupEvalValue.call(me, me.data.Label) : me.data.Label;\r\n if (me.group.fields && me.group.fields.length > 0) {\r\n const field = FieldUtils.getFieldFromFieldsByValue(me.group.fields, me.data.Value);\r\n if (field) {\r\n field[`componentProperties`] = me.componentProperties;\r\n }\r\n }\r\n }\r\n\r\n public setCompStylesByIndex(me: any) {\r\n for (const key of Object.keys(me.componentProperties.style)) {\r\n const ind = key.replace('style', '');\r\n\r\n let style = me.data[`Style${ind}`];\r\n if (me?.data?.[`Style${ind}`] && typeof me.data[`Style${ind}`] === 'string' && me.data[`Style${ind}`].startsWith('group')) {\r\n style = FieldUtils.getGroupValue(me.data[`Style${ind}`], me.group);\r\n }\r\n this.setStyleByIndex(me, ind, style ?? \"\");\r\n }\r\n\r\n for (const key of Object.keys(me.componentProperties.containerStyle)) {\r\n const ind = key.replace('style', '');\r\n let style = me.data[`ContainerStyle${ind}`];\r\n if (me?.data?.[`ContainerStyle${ind}`] && typeof me.data[`ContainerStyle${ind}`] === 'string' && me.data[`ContainerStyle${ind}`].startsWith('group')) {\r\n style = FieldUtils.getGroupValue(me.data[`ContainerStyle${ind}`], me.group);\r\n }\r\n this.setContainerStyleByIndex(me, ind, style ?? \"\");\r\n }\r\n }\r\n\r\n public setStyleByIndex(me: any, ind: string, style: string) {\r\n me.componentProperties.style[`style${ind}`] = style;\r\n }\r\n\r\n public setContainerStyleByIndex(me: any, ind: string, style: string) {\r\n me.componentProperties.containerStyle[`style${ind}`] = style;\r\n }\r\n\r\n public convertStyleStringToObject(styleString: string): any {\r\n try {\r\n const styleArr = styleString.split(\";\").filter(x => x);\r\n const styleObj = {};\r\n for (const style of styleArr) {\r\n const kvp = style.split(\":\");\r\n styleObj[kvp[0].trim()] = kvp[1].trim();\r\n }\r\n\r\n return styleObj;\r\n }\r\n catch (err) {\r\n console.warn(`[convertStyleStringToObject] Error: ${err}`);\r\n return null;\r\n }\r\n }\r\n\r\n public translateToolBarItems(items: Array<any>, group: ZGroup): Observable<any> {\r\n const obsList = new Array<Observable<any>>();\r\n obsList.push(this.translateService.$translateItemList(items, \"text\", { elementName: 'general', group }));\r\n\r\n if (obsList.length <= 0) {\r\n return of({});\r\n }\r\n return forkJoin(obsList);\r\n }\r\n\r\n public translateGridColumnHeader(columns: Array<any>, group: ZGroup): Observable<any> {\r\n const obsList = new Array<Observable<any>>();\r\n obsList.push(this.translateService.$translateItemList(columns, \"title\", { elementName: 'menu', group }));\r\n\r\n if (obsList.length <= 0) {\r\n return of({});\r\n }\r\n return forkJoin(obsList);\r\n }\r\n\r\n public translateButtonComponent(buttons: Array<any>, group: ZGroup): Observable<any> {\r\n let obsList = new Array<Observable<any>>();\r\n obsList.push(this.translateService.$translateItemList(buttons, \"text\", { elementName: group.fieldName, group }));\r\n\r\n if (obsList.length <= 0) {\r\n return of({});\r\n }\r\n return forkJoin(obsList);\r\n }\r\n\r\n public translateComponentField(data: ZField, group: ZGroup): Observable<any> {\r\n let obsList = new Array<Observable<any>>();\r\n\r\n const propList = [\"Label\", \"PlaceHolder\", \"Title\"]; // ToolTip\r\n for (const prop of propList) {\r\n if (data[prop] != undefined) {\r\n const obs = this.translateCompByProperty(data, prop, group.fieldName, group);\r\n if (obs) {\r\n obsList = obsList.concat(obs);\r\n }\r\n }\r\n }\r\n\r\n if (obsList.length <= 0) {\r\n return of({});\r\n }\r\n return forkJoin(obsList);\r\n }\r\n\r\n public translateComponentProperties(componentProperties: ZComponentProperties, group: ZGroup): Observable<any> {\r\n let obsList = new Array<Observable<any>>();\r\n\r\n const propList = [\"label\", \"title\"];\r\n for (const prop of propList) {\r\n if (componentProperties[prop] != undefined) {\r\n const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName, group);\r\n if (obs) {\r\n obsList = obsList.concat(obs);\r\n }\r\n }\r\n }\r\n\r\n if (obsList.length <= 0) {\r\n return of({});\r\n }\r\n return forkJoin(obsList);\r\n }\r\n\r\n private translateCompByProperty(data: any, propName: string, fieldName: string, group: ZGroup): Array<Observable<any>> {\r\n if (data[propName] == undefined || data[propName] == \"\") {\r\n return;\r\n }\r\n\r\n const obsList = new Array<Observable<any>>();\r\n if (Array.isArray(data[propName]) && data[propName].length > 0) {\r\n obsList.push(this.translateService.$translateItemList(data[propName], null, { elementName: fieldName, group }).pipe(\r\n tap(resp => {\r\n data[propName] = resp;\r\n }))\r\n );\r\n }\r\n else {\r\n obsList.push(this.translateService.$translateSingleItem(data, propName, { elementName: fieldName, group }).pipe(\r\n tap(resp => {\r\n data[propName] = resp;\r\n }))\r\n )\r\n }\r\n\r\n return obsList;\r\n }\r\n\r\n //#region DateTime Conversion\r\n private readonly timePickerDateType = ['zuidatetime', 'ztime', 'zuitime', 'sfdatetimepicker'];\r\n public localizeDateTimeByIgnoringTimeZone(value: string, data: ZField): Date {\r\n if (this.timePickerDateType.includes(data.Type)) {\r\n const userTimeZoneOffSet = this.convertOffsetMinToHour((new Date(value).getTimezoneOffset()));\r\n const datetimeWithoutTimeZone = this.removeTimeZoneAndConvertToISOString(value);\r\n\r\n //return new Date(`${datetimeWithoutTimeZone.split('.000Z')[0]}${userTimeZoneOffSet}`);\r\n return new Date(`${datetimeWithoutTimeZone.split('Z')[0]}${userTimeZoneOffSet}`);\r\n }\r\n else if (data.Type === 'zshortdate') {\r\n const dateOnly = value.includes('T') ? value.split('T')[0] : value; // Extract date portion\r\n const date = new Date(dateOnly); // Create a date object from the extracted date\r\n date.setUTCDate(1); // Set day to the first of the month\r\n\r\n // Convert to UTC, accounting for the timezone offset\r\n const timezoneOffset = date.getTimezoneOffset(); // Get timezone offset in minutes\r\n date.setMinutes(date.getMinutes() + timezoneOffset); // Adjust for timezone offset\r\n\r\n // Return the final date object\r\n return date;\r\n }\r\n else {\r\n const dateOnly = value.includes('T') ? value.split('T')[0] : value;\r\n return new Date(dateOnly + \" \" + new Date(dateOnly).toLocaleTimeString());\r\n }\r\n }\r\n\r\n private removeTimeZoneAndConvertToISOString(value: string): string {\r\n const result = value.split('+')[0];\r\n return new Date(result.endsWith('Z') ? result : `${result}Z`).toISOString();\r\n }\r\n\r\n private convertOffsetMinToHour(num: number): string {\r\n num = -num;\r\n const prefix = num.toString().startsWith('-') ? '-' : '+';\r\n const result = `${(Math.abs(num) / 60).toString().padStart(2, '0')}:00`;\r\n return `${prefix}${result}`;\r\n }\r\n //#endregion\r\n\r\n public decrementComponentCounterForField(field: ZField) {\r\n if (field.SubType === 'zudf') {\r\n this.fieldService.decrementComponentCounter('zudf');\r\n }\r\n else if (field.FieldElementName) {\r\n this.fieldService.decrementComponentCounter(field.FieldElementName);\r\n }\r\n else {\r\n this.fieldService.decrementComponentCounter('main');\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/**\r\n * Payload structure for JSON editor change notifications\r\n */\r\nexport interface JsonEditorChange {\r\n /** Unique FormGroup reference to scope events */\r\n form: FormGroup;\r\n /** Model path key */\r\n path: string;\r\n /** Parsed JSON data payload */\r\n data: any;\r\n /** Originating editor instance ID */\r\n sourceId: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ZcodeeditorService {\r\n // #region Observable and Subject\r\n\r\n /** Internal subject to broadcast editor changes */\r\n private readonly changes: Subject<JsonEditorChange> = new Subject<JsonEditorChange>();\r\n\r\n /** Public observable for listening to editor change events */\r\n public readonly changes$: Observable<JsonEditorChange> = this.changes.asObservable();\r\n\r\n // #endregion\r\n\r\n /**\r\n * Broadcast a change event to other editors bound to the same form and path\r\n * @param form - Reference to the FormGroup in scope\r\n * @param path - Path key within the form's data model\r\n * @param data - Parsed JSON object representing the updated value\r\n * @param sourceId - ID of the editor instance that originated the change\r\n */\r\n public notify(form: FormGroup, path: string, data: any, sourceId: string): void {\r\n if (!form || !path || !sourceId) {\r\n console.warn('[ZcodeeditorService] notify aborted due to missing parameters:', {\r\n form,\r\n path,\r\n sourceId,\r\n });\r\n return;\r\n }\r\n\r\n this.changes.next({ form, path, data, sourceId });\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { State } from \"@progress/kendo-data-query\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZField, ZGridSettings, StateType, StateSettingService, StateSettingInfo\r\n} from 'mmhglobal-zcore';\r\nimport { defer, Observable, of, switchMap } from \"rxjs\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ZGridService {\r\n private gridState: State;\r\n private readonly gridDefaultState: State = { skip: 0, take: 20 };\r\n\r\n constructor(\r\n private readonly stateSettingService: StateSettingService\r\n ) {\r\n }\r\n\r\n /**\r\n * Configure grid settings based on the provided ZField object.\r\n * @param field The ZField object containing configuration information.\r\n * @returns The configured grid state.\r\n */\r\n public setupGridSetting(field: ZField): State {\r\n // Set the default number of items to display (take) based on the provided field's PageSize or a default of 20.\r\n this.gridDefaultState.take = field.PageSize || 20;\r\n\r\n // Create a copy of the default state and assign it to this.gridState.\r\n this.gridState = Object.assign({}, this.gridDefaultState);\r\n\r\n if (field.CacheInfo) {\r\n let stateType = this.getGridStateLogic(field);\r\n\r\n // Determine whether to use SavedSetting cache type based on configuration.\r\n if (stateType === StateType.cachedDataSetting || stateType === StateType.savedAndCachedDataSetting) {\r\n let cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n const cacheData = sessionStorage.getItem(cacheName);\r\n\r\n if (cacheData) {\r\n this.gridState = (JSON.parse(cacheData) as ZGridSettings).gridState;\r\n }\r\n }\r\n }\r\n\r\n return this.gridState;\r\n }\r\n\r\n public getStateCacheByName(cacheName: string) {\r\n try {\r\n if (!cacheName) {\r\n console.warn('Invalid cache name provided');\r\n return null;\r\n }\r\n\r\n return JSON.parse(localStorage.getItem(cacheName));\r\n } catch (error) {\r\n console.warn('Error accessing localStorage:', error);\r\n return null; // Fallback in case of an error\r\n }\r\n }\r\n\r\n public getStateCache(stateType: StateType, field: ZField): Observable<any> {\r\n const cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n const cachedState = this.getStateCacheByName(cacheName);\r\n \r\n if (cachedState !== null) {\r\n // Return the cached state immediately if it's not null\r\n return of(cachedState);\r\n }\r\n \r\n const stateSettingInfo = this.stateSettingService.initGetStateSettingInfo(field);\r\n stateSettingInfo.stateType = stateType;\r\n \r\n return defer(() => \r\n this.stateSettingService.getStateSetting(stateSettingInfo).pipe(\r\n switchMap((retrievedState) => {\r\n if (retrievedState) {\r\n // Parse and set state if available\r\n const stateSettingInfo = retrievedState as StateSettingInfo;\r\n if(stateSettingInfo.stateData) {\r\n const gridStateData = JSON.parse(stateSettingInfo.stateData) as ZGridSettings;\r\n \r\n if (gridStateData) {\r\n gridStateData.id = stateSettingInfo.id.toString();\r\n this.setStateToCache(cacheName, gridStateData);\r\n return of(gridStateData); // Emit the retrieved state\r\n }\r\n }\r\n }\r\n return of(null); // Complete without emitting anything\r\n }) \r\n )\r\n );\r\n }\r\n \r\n public setStateToCache(cacheName: string, gridSetting: ZGridSettings) {\r\n const cacheData = JSON.stringify(gridSetting);\r\n localStorage.setItem(cacheName, cacheData);\r\n }\r\n\r\n public deleteStateCacheByName(cacheName: string) {\r\n localStorage.removeItem(cacheName);\r\n }\r\n\r\n public deleteStateCache(stateType: StateType, field: ZField) {\r\n const cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n localStorage.removeItem(cacheName);\r\n }\r\n\r\n public getGridStateLogic(field: ZField) {\r\n if (field.CacheInfo) {\r\n const enableSaveState = field.CacheInfo.EnableSaveState;\r\n const disableCacheData = field.CacheInfo.DisableCacheData;\r\n\r\n if (enableSaveState && !disableCacheData) {\r\n return StateType.savedAndCachedDataSetting;\r\n }\r\n else if (enableSaveState && disableCacheData) {\r\n return StateType.savedSetting;\r\n }\r\n else if (!enableSaveState && !disableCacheData) {\r\n return StateType.cachedDataSetting;\r\n }\r\n }\r\n else {\r\n console.log('CacheInfo is undefined.');\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, OnInit, OnDestroy, Input, Inject } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, Subject, of } from 'rxjs';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { DataBindingDirective, GridComponent, DataStateChangeEvent, PageChangeEvent } from '@progress/kendo-angular-grid';\r\nimport { SortDescriptor, FilterDescriptor, } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGridService } from './zgrid.service';\r\nimport { ZField, ZGridPostApiParams, WebApiService, ZGroup, ZGridColumnConfigs, ZGridSettings, LoggingService, ZGridFilterParams, \r\n StateType, StateSettingService, FieldUtils, GridUtils, \r\n ToastService,\r\n DataUtils,\r\n StorageSessionService} from 'mmhglobal-zcore';\r\nimport { ZComponentService } from '../../../services/zcomponent.service';\r\n\r\n@Directive({\r\n selector: '[zgridbinding]',\r\n standalone: true\r\n})\r\nexport class ZGridBindingDirective extends DataBindingDirective implements OnInit, OnDestroy {\r\n private changeEvent = {\r\n pageChanged: false,\r\n filterChanged: false,\r\n sortChanged: false\r\n }\r\n\r\n @Input() zgridbinding: {\r\n data: ZField;\r\n group: ZGroup;\r\n params: ZGridPostApiParams;\r\n gridSubject: Subject<any>;\r\n gridSetting: ZGridSettings;\r\n };\r\n\r\n resourceURL = null;\r\n\r\n paginationApiPostUrl = null;\r\n\r\n dataSource = null;\r\n\r\n get gridSetting() {\r\n return this.zgridbinding.gridSetting;\r\n }\r\n set gridSetting(value) {\r\n this.zgridbinding.gridSetting = value;\r\n }\r\n get field() {\r\n return this.zgridbinding.data;\r\n }\r\n\r\n get grp() {\r\n return this.zgridbinding.group;\r\n }\r\n\r\n get gridSubject() {\r\n return this.zgridbinding.gridSubject;\r\n }\r\n\r\n get params(): ZGridPostApiParams {\r\n return this.zgridbinding.params;\r\n }\r\n\r\n get getData() {\r\n return this.grid.data;\r\n }\r\n\r\n constructor(\r\n @Inject(GridComponent) grid, // Injecting GridComponent provides access to the scope and context of the GridComponent.\r\n private readonly webapiService: WebApiService,\r\n private readonly toastService: ToastService,\r\n private readonly gridService: ZGridService,\r\n private readonly loggingService: LoggingService,\r\n private readonly stateSettingService: StateSettingService,\r\n private readonly componentService: ZComponentService,\r\n private readonly storageService: StorageSessionService,\r\n ) {\r\n super(grid);\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.grid.loading = true;\r\n this.pageSize = this.field.PageSize || 20;\r\n this.dataSource = this.field.DataSource ?? null;\r\n\r\n if (!this.dataSource) {\r\n this.resourceURL = FieldUtils.getGroupValue(\r\n this.field.ResourceURL,\r\n this.grp\r\n );\r\n\r\n if (!this.resourceURL) {\r\n this.grid.loading = false;\r\n if (this.zgridbinding.data.Name !== 'ActivityLogGrid') {\r\n console.warn(\r\n 'No initialise for Field.ResourceURL: ',\r\n this.field.ResourceURL\r\n );\r\n }\r\n return;\r\n }\r\n\r\n this.setResourceUrl(this.resourceURL);\r\n\r\n this.setFilterParamsByParentRefId();\r\n }\r\n\r\n if (this.field.DisableGenerateColumnByForm) {\r\n const columnFields = FieldUtils.getGroupValue(this.field.ColumnFields, this.grp);\r\n\r\n if (Array.isArray(columnFields)) {\r\n this.setColumns(columnFields);\r\n }\r\n\r\n if (this.field['SkipLoadResourceURLData']) {\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n }\r\n else {\r\n this.getDataBinding();\r\n }\r\n }\r\n else {\r\n this.generateGridColumns();\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n }\r\n\r\n private retrieveGridStateCache(stateType: StateType, field: ZField): Observable<any> {\r\n return this.gridService.getStateCache(stateType, field).pipe(\r\n map((settingCacheValue) => {\r\n // If settingCacheValue is null or undefined, continue with a fallback value\r\n return settingCacheValue;\r\n }),\r\n tap((settingCacheValue) => {\r\n if (settingCacheValue) {\r\n const parsedJsonData = settingCacheValue as ZGridSettings;\r\n if (parsedJsonData) {\r\n this.gridSetting.gridState = parsedJsonData.gridState ?? this.gridSetting.gridState;\r\n this.gridSetting.columnConfigurations = parsedJsonData.columnConfigurations ?? null;\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n public setResourceUrl(resourceUrl: string): void {\r\n const API_PREFIX = '/api/';\r\n const PAGE_PREFIX = 'Page';\r\n\r\n const urlParts = resourceUrl.split(API_PREFIX);\r\n\r\n if (urlParts.length > 1) {\r\n const [basePath, endpoint] = urlParts;\r\n this.paginationApiPostUrl = `${basePath}${API_PREFIX}${PAGE_PREFIX}${endpoint}`;\r\n return;\r\n }\r\n\r\n const pathSegments = resourceUrl.split('/'); // <- FIXED here (use resourceUrl, not this.resourceURL)\r\n const lastSegmentIndex = pathSegments.length - 2;\r\n\r\n if (lastSegmentIndex >= 0) {\r\n pathSegments[lastSegmentIndex] = `${PAGE_PREFIX}${pathSegments[lastSegmentIndex]}`;\r\n }\r\n\r\n this.paginationApiPostUrl = pathSegments.join('/');\r\n }\r\n\r\n private setFilterParamsByParentRefId() {\r\n // Use field own referenceId if available\r\n const refId = this.getFieldReferenceId() ?? this.grp.referenceId;\r\n const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n if (refId && refField) {\r\n const filterValue = {\r\n key: refField,\r\n ops: '=',\r\n value: refId,\r\n };\r\n\r\n this.params.filterParams.push(filterValue);\r\n }\r\n }\r\n\r\n private getFieldReferenceId() {\r\n let fieldReferenceId = null;\r\n if (this.field.ReferenceId) {\r\n fieldReferenceId = FieldUtils.getGroupValue(\r\n this.field.ReferenceId,\r\n this.grp\r\n );\r\n }\r\n return fieldReferenceId;\r\n }\r\n\r\n public generateGridColumns() {\r\n const columnFields$: Observable<any> = FieldUtils.getGroupValue(\r\n this.field.ColumnFields,\r\n this.grp\r\n );\r\n\r\n if (columnFields$) {\r\n columnFields$.pipe(\r\n switchMap((data) => {\r\n const gridStateLogic = this.gridService.getGridStateLogic(this.field);\r\n\r\n if (gridStateLogic && gridStateLogic !== StateType.cachedDataSetting) {\r\n return this.retrieveGridStateCache(StateType.savedSetting, this.field).pipe(\r\n map((state) => {\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n return of(data);\r\n }),\r\n tap((data) => {\r\n this.gridSetting = {\r\n ...this.gridSetting, // Preserve existing properties\r\n columnField: data,\r\n group: this.zgridbinding.group\r\n }\r\n\r\n GridUtils.generateGridColumns(this.gridSetting);\r\n this.loggingService.debugLog('generated grid columns', this.gridSetting);\r\n\r\n this.getFilterParamsColumns();\r\n this.getFilter();\r\n this.getFilterParams();\r\n this.getSorting();\r\n this.getGrantType();\r\n this.setHiddenColumn(this.gridSetting.columnConfigurations);\r\n\r\n this.params.referId = this.getFieldReferenceId() ?? this.grp.referenceId ?? null;\r\n })\r\n ).subscribe(() => {\r\n if (this.field['SkipLoadResourceURLData']) {\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n }\r\n else {\r\n this.getDataBinding();\r\n }\r\n });\r\n }\r\n else {\r\n console.warn('Fail to generate grid column fields.');\r\n console.log(this.field.ColumnFields);\r\n console.log(this.grp);\r\n }\r\n }\r\n\r\n public setSkipLoadResourceURLData(settingValue: boolean) {\r\n this.field['SkipLoadResourceURLData'] = !settingValue;\r\n }\r\n\r\n /**\r\n * Update the title of a column in the grid setting based on its value.\r\n *\r\n * @param {string} colValue - The value of the column to update.\r\n * @param {string} colName - The new title for the column.\r\n * @returns {void}\r\n */\r\n public setColumnName(colValue: string, colName: string): void {\r\n // Find the column with the matching colValue.\r\n const columnToUpdate = this.gridSetting.columns.find(field => field.Value === colValue);\r\n\r\n // If the column is found, update its title property with colName.\r\n if (columnToUpdate) {\r\n columnToUpdate.title = colName;\r\n }\r\n }\r\n\r\n /**\r\n * Set the visibility of a column in the grid based on its value.\r\n *\r\n * @param {string} colValue - The value of the column to set visibility for.\r\n * @param {boolean} isVisible - Whether the column should be visible (true) or hidden (false).\r\n * @returns {void}\r\n */\r\n public setColumnVisible(colValue: string, isVisible: boolean) {\r\n // Find the column with the matching colValue.\r\n const columnToUpdate = this.gridSetting.columns.find(field => field.Value === colValue);\r\n\r\n // If the column is found, update its 'hidden' property based on 'isVisible'.\r\n if (columnToUpdate) {\r\n columnToUpdate.hidden = !isVisible;\r\n }\r\n }\r\n\r\n /**\r\n * Generate filter parameters for columns and set them in the 'params' object.\r\n *\r\n * @returns {void}\r\n */\r\n private getFilterParamsColumns() {\r\n // Create an array to store column fields.\r\n const colFields: Array<string> = [];\r\n\r\n // Iterate through the grid columns to build column field strings.\r\n this.gridSetting.columns.forEach((column) => {\r\n if (column.valueExpr) {\r\n // If 'valueExpr' exists, use it as an alias for the field.\r\n colFields.push(column.valueExpr + ' as ' + column.field);\r\n } else {\r\n colFields.push(column.field);\r\n }\r\n });\r\n\r\n // Check if 'Id' is in the column fields; if not, add it.\r\n if (colFields.length > 0) {\r\n if (colFields.indexOf('Id') === -1) {\r\n colFields.push('Id');\r\n }\r\n }\r\n\r\n // Create an array to temporarily store the generated column fields.\r\n const tmpGridColumn: any[] = [];\r\n tmpGridColumn.push(colFields.join(','));\r\n\r\n // If there are generateHiddenColumns in the setting, add them to the array.\r\n if (this.gridSetting.generateHiddenColumns?.length > 0) {\r\n tmpGridColumn.push(this.gridSetting.generateHiddenColumns.join(','));\r\n }\r\n\r\n // Set the 'params.columns' property with the concatenated column fields.\r\n this.params.columns = tmpGridColumn.join(',');\r\n }\r\n\r\n /**\r\n * Update the 'params.filters' property based on the 'field.Filters' property.\r\n *\r\n * @returns {void}\r\n */\r\n private getFilter() {\r\n if (this.params.filters && this.field.Filters) {\r\n // Combine 'params.filters' and 'field.Filters' using '&&' if both exist.\r\n this.params.filters = `${this.params.filters} && ${this.field.Filters}`;\r\n }\r\n else if (!this.params.filters && this.field.Filters) {\r\n // Use 'field.Filters' directly if 'params.filters' doesn't exist.\r\n this.params.filters = this.field.Filters;\r\n }\r\n\r\n // Check if 'field.Filters' contains references to 'group.' and replace them with actual values.\r\n if (this.field.Filters?.split(' ').some((element) => element.trim().startsWith('group.'))) {\r\n const filterKeyValPairs = this.field.Filters.split(' ');\r\n const grpValues = filterKeyValPairs.filter((element) => element.trim().startsWith('group.'));\r\n\r\n grpValues.forEach((val) => {\r\n const actualVal = FieldUtils.getGroupValue(val, this.grp);\r\n this.params.filters = this.params.filters.replace(val, actualVal);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Set the filter parameters in the 'params.filterParams' property based on 'field['FilterParams']'. filterParams === used for the input in the column filter at the UI.\r\n *\r\n * @returns {void}\r\n */\r\n private getFilterParams() {\r\n const filterParams = this.field['FilterParams'];\r\n\r\n // Initialize filter parameters if undefined.\r\n if (!this.params.filterParams) {\r\n this.params.filterParams = [];\r\n }\r\n\r\n if (filterParams) {\r\n if (filterParams.startsWith('group.')) {\r\n // If 'filterParams' starts with 'group.', extend the existing array.\r\n this.params.filterParams = [\r\n ...this.params.filterParams,\r\n ...FieldUtils.getGroupValue(filterParams, this.grp)\r\n ];\r\n }\r\n else {\r\n // If 'filterParams' does not start with 'group.', use it directly.\r\n this.params.filterParams = [\r\n ...this.params.filterParams,\r\n filterParams\r\n ];\r\n }\r\n }\r\n\r\n // Check if there are column filters in the grid state and append to filterparam\r\n if (this.gridSetting.gridState?.filter?.filters) {\r\n this.gridSetting.gridState.filter?.filters?.forEach((filter: FilterDescriptor) => {\r\n const filterParam = {\r\n key: filter.field as string,\r\n ops: this.mapFilterOperator(filter.operator),\r\n value: filter.value === null ? '' : filter.value,\r\n };\r\n // Check if a filter parameter with the same key already exists.\r\n const existingParam = this.params.filterParams.find((param) => param.key === filterParam.key);\r\n if (existingParam) {\r\n // If a filter parameter with the same key exists, update its value.\r\n existingParam.value = filterParam.value;\r\n } else {\r\n // If no filter parameter with the same key, add it to the filter parameters.\r\n this.params.filterParams.push(filterParam);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Set the sorting order in the 'params.sortOrder' property based on 'field.SortOrder'.\r\n *\r\n * @returns {void}\r\n */\r\n private getSorting() {\r\n const sortOrder = this.field.SortOrder;\r\n\r\n // Check if 'sortOrder' is defined and starts with 'group.'.\r\n if (sortOrder?.startsWith('group.')) {\r\n this.params.sortOrder = FieldUtils.getGroupValue(sortOrder, this.grp);\r\n }\r\n else {\r\n // If 'sortOrder' is not defined or doesn't start with 'group.', use it directly.\r\n this.params.sortOrder = sortOrder;\r\n }\r\n\r\n\r\n // Initialize sort parameters if undefined.\r\n if (!this.params.sortOrders) {\r\n this.params.sortOrders = [];\r\n }\r\n if (!this.params.sortColumnNames) {\r\n this.params.sortColumnNames = [];\r\n }\r\n\r\n if (this.gridSetting.gridState.sort) {\r\n this.gridSetting.gridState.sort.forEach((descriptor) => {\r\n if (descriptor.dir) {\r\n const field = this.gridSetting.columns.find((col) => col.field === descriptor.field);\r\n const sortColumnName = field.valueExpr !== undefined ? field.valueExpr : descriptor.field;\r\n\r\n // Check if a sort column with the same name already exists.\r\n const existingSortColumnIndex = this.params.sortColumnNames.findIndex((name) => name === sortColumnName);\r\n\r\n if (existingSortColumnIndex !== -1) {\r\n // If a sort column with the same name exists, update its sort order.\r\n this.params.sortOrders[existingSortColumnIndex] = descriptor.dir;\r\n } else {\r\n // If no sort column with the same name, add it to the sort columns and sort orders.\r\n this.params.sortColumnNames.push(sortColumnName);\r\n this.params.sortOrders.push(descriptor.dir);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Set the grant type in the 'params.grantType' property based on 'field.GrantType'.\r\n *\r\n * @returns {void}\r\n */\r\n private getGrantType() {\r\n const grantType = this.field.GrantType;\r\n\r\n // Check if 'grantType' is defined.\r\n if (grantType != undefined) {\r\n this.params.grantType = FieldUtils.getGroupValue(grantType.toString(), this.grp);\r\n }\r\n }\r\n\r\n /**\r\n * Set the 'hidden' property for columns in 'gridSetting' based on 'columnConfigs'.\r\n *\r\n * @param {ZGridColumnConfigs[]} columnConfigs - The column configuration settings.\r\n * @returns {void}\r\n */\r\n private setHiddenColumn(columnConfigs?: ZGridColumnConfigs[]) {\r\n if (!this.gridSetting?.columns) return;\r\n\r\n // Store reference to columns that can be hidden\r\n const columns = this.gridSetting.columns.filter(column => column.enableHiding);\r\n\r\n // Preserve original visibility state\r\n columns.forEach(column => column.originalHiddenValue = !column.gridColVisible);\r\n\r\n // Determine which columns should be hidden\r\n const hiddenColumns = columnConfigs\r\n ? columnConfigs.filter(column => column.hidden === true)\r\n : columns.filter(col => !col.gridColVisible);\r\n\r\n // Hide columns based on field matching\r\n hiddenColumns.forEach(hiddenColumn => {\r\n const column = this.gridSetting.columns.find(c => c.field === hiddenColumn.field);\r\n if (column) {\r\n column.hidden = true;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve data for data binding.\r\n *\r\n * @param {boolean} skipUseCache - Whether to skip using cache for data retrieval.\r\n * @returns {Promise<void>}\r\n */\r\n public getDataBinding(skipUseCache?: boolean) {\r\n this.grid.loading = true;\r\n this.getGridData();\r\n }\r\n\r\n /**\r\n * Retrieve grid data.\r\n *\r\n * @returns {void}\r\n */\r\n private getGridData() {\r\n if (!this.dataSource) {\r\n if (!this.paginationApiPostUrl) {\r\n console.warn('Grid pagination API URL is undefined.');\r\n return;\r\n }\r\n\r\n const stateSkip = this.gridSetting.gridState ? this.gridSetting.gridState.skip : this.state.skip;\r\n const stateTake = this.gridSetting.gridState ? this.gridSetting.gridState.take : this.state.take;\r\n\r\n this.params.pageNo = this.getPageNo(stateSkip, stateTake);\r\n this.params.pageSize = stateTake;\r\n\r\n if (this.field.ExternalPagination) {\r\n const sessionData = this.tryGetDataFromSession();\r\n if (sessionData) {\r\n this.handleGetDataBindingComplete(sessionData);\r\n return;\r\n }\r\n\r\n // For POST method Page WebAPI\r\n const detailGridSessionKey = sessionStorage.getItem('detailGridSessionKey');\r\n this.webapiService\r\n .postApi(this.paginationApiPostUrl, this.params, null, null, null, null, true)\r\n .subscribe({\r\n next: (resp) => {\r\n this.setDetailDataIntoSession(detailGridSessionKey, resp);\r\n this.handleGetDataBindingComplete(resp);\r\n },\r\n error: (err) => {\r\n this.toastService.show('Error occur in loading the data', 'top', false, 1500, 'danger');\r\n this.grid.loading = false;\r\n }\r\n });\r\n }\r\n else {\r\n // For GET method\r\n this.webapiService\r\n .getApi(this.resourceURL, null, null, null, null, null, true)\r\n .subscribe((resp) => {\r\n let data = null;\r\n let totalCount = 0;\r\n\r\n if (resp.dataSet) {\r\n data = resp.dataSet;\r\n totalCount = resp.totalCount;\r\n } else {\r\n data = resp;\r\n totalCount = resp.length;\r\n }\r\n\r\n this.handleGetDataBindingComplete({ dataSet: data, totalCount: totalCount });\r\n });\r\n }\r\n }\r\n else {\r\n const dataSet = FieldUtils.getGroupValue(\r\n this.field.DataSource,\r\n this.grp\r\n );\r\n\r\n // Only bind data if dataSet is an array; if it's a string (e.g., length 10), do not bind\r\n if (Array.isArray(dataSet)) {\r\n this.data = dataSet;\r\n }\r\n this.grid.loading = false;\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n this.collapseAllDetailGrid();\r\n }\r\n }\r\n\r\n private handleGetDataBindingComplete(data: any, skipCacheData?: boolean) {\r\n this.aggregateHandling(data.dataSet);\r\n this.handleDateTimeIgnoringTimeZone(data.dataSet);\r\n this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n this.collapseAllDetailGrid();\r\n if (!skipCacheData) {\r\n const stateLogic = this.gridService.getGridStateLogic(this.field);\r\n if (stateLogic === StateType.cachedDataSetting || stateLogic === StateType.savedAndCachedDataSetting) {\r\n this.cacheGridData(stateLogic);\r\n }\r\n }\r\n this.grid.loading = false;\r\n this.afterDataBinded(data);\r\n this.gridSubject.next(this);\r\n this.notifyDataChange();\r\n }\r\n\r\n private resetChangeEventFlag() {\r\n this.changeEvent = {\r\n pageChanged: false,\r\n filterChanged: false,\r\n sortChanged: false\r\n }\r\n }\r\n\r\n private cacheGridData(stateLogic: StateType) {\r\n const cacheName = this.stateSettingService.getStorageCacheKey(stateLogic, this.field);\r\n const gridState = this.gridSetting.gridState;\r\n const gridData = this.grid?.data || null;\r\n\r\n if (!gridData['data']) {\r\n return;\r\n }\r\n\r\n const cacheInfo = this.zgridbinding.data.CacheInfo;\r\n\r\n if (cacheInfo && !cacheInfo.DisableCacheData) {\r\n const columnConfigurations = GridUtils.getGridColumnsConfig(this.zgridbinding.gridSetting.columns);\r\n let updatedData = [...gridData['data']];\r\n let skipList = [gridState.skip];\r\n\r\n const cacheGridData = {\r\n data: {\r\n dataSet: updatedData,\r\n totalCount: gridData['total']\r\n },\r\n gridState: gridState,\r\n skipList: skipList,\r\n cacheDuration: cacheInfo.CacheDuration,\r\n columnConfigurations: columnConfigurations\r\n }\r\n\r\n sessionStorage.setItem(cacheName, JSON.stringify(cacheGridData));\r\n }\r\n }\r\n\r\n private afterDataBinded(data) {\r\n // allow to call back project page after data binded.\r\n let bindedValue = this.zgridbinding.data['AfterDataBinded'];\r\n if (bindedValue) {\r\n const me = Object.assign({}, this);\r\n let callFunc;\r\n\r\n try {\r\n const params = bindedValue.match(/\\b\\(.*/gi);\r\n if (params) {\r\n bindedValue = bindedValue.replace(params[0], '');\r\n }\r\n bindedValue = bindedValue.replace('modalGroup.', 'group.');\r\n callFunc = eval('me.zgridbinding.' + bindedValue);\r\n }\r\n catch (error) {\r\n console.warn(\r\n 'Error when getGroupValue: ',\r\n event.target,\r\n ' > Error: ',\r\n error\r\n );\r\n }\r\n\r\n if (typeof callFunc === 'function') {\r\n const newFunc = callFunc.bind(me);\r\n newFunc(event, me.zgridbinding.data, data);\r\n }\r\n }\r\n }\r\n\r\n public clearData(): void {\r\n this.grid.data = { data: [], total: 0 };\r\n }\r\n\r\n /**\r\n * Handle column aggregation for the given data.\r\n *\r\n * @param {any[]} data - The data to aggregate.\r\n * @returns {void}\r\n */\r\n private aggregateHandling(data: any) {\r\n const aggregateColumns = this.gridSetting.columns.filter(col => col.aggregateType);\r\n\r\n aggregateColumns.forEach(col => {\r\n const field = col.field;\r\n const aggregateType = col.aggregateType.toLowerCase().replace(':', '');\r\n\r\n let aggregateValue = null;\r\n switch (aggregateType) {\r\n case 'total':\r\n case 'sum':\r\n aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n break;\r\n case 'average':\r\n aggregateValue = data.reduce((total, next) => total + next[field], 0) / data.length;\r\n break;\r\n case 'count':\r\n aggregateValue = data.length;\r\n break;\r\n case 'max':\r\n aggregateValue = data.reduce((p, c) => p[field] > c[field] ? p : c)[field];\r\n break;\r\n case 'min':\r\n aggregateValue = data.reduce((p, c) => p[field] < c[field] ? p : c)[field];\r\n break;\r\n }\r\n\r\n col.aggregateValue = aggregateValue;\r\n });\r\n }\r\n\r\n private handleDateTimeIgnoringTimeZone(dataSet: any) {\r\n // Column types related to date and time handling\r\n const dateColumnTypes = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n\r\n // Filter columns that have date-related types\r\n const dateTimeColumns = this.gridSetting.columns.filter(col => dateColumnTypes.includes(col.Type));\r\n\r\n // Filter columns where the timezone should be ignored\r\n const ignoreTimeZoneColumns = dateTimeColumns.filter(col => col.IsIgnoreTimeZone);\r\n\r\n // If there are columns that should ignore the timezone\r\n if (ignoreTimeZoneColumns.length > 0) {\r\n dataSet.forEach(data => {\r\n ignoreTimeZoneColumns.forEach(col => {\r\n // Adjust datetime based on the timezone ignoring setting\r\n if (data[col.Value]) {\r\n data[col.Value] = this.componentService.localizeDateTimeByIgnoringTimeZone(data[col.Value], col);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Reset aggregate values for columns with aggregate types.\r\n *\r\n * @returns {void}\r\n */\r\n private aggregateResetValue(): void {\r\n const aggregateColumns = this.gridSetting.columns.filter(col => col.aggregateType);\r\n aggregateColumns.forEach(col => {\r\n col.aggregateValue = 0;\r\n });\r\n }\r\n\r\n /**\r\n * Handle page change event.\r\n *\r\n * @param {PageChangeEvent} event - The page change event.\r\n * @returns {void}\r\n */\r\n public pageChange(event: PageChangeEvent): void {\r\n this.params.pageNo = this.getPageNo(event.skip, this.params.pageSize);\r\n this.state.skip = event.skip;\r\n this.changeEvent.pageChanged = true;\r\n this.getDataBinding();\r\n }\r\n\r\n /**\r\n * Handle sort change event.\r\n *\r\n * @param {SortDescriptor[]} sort - The sort descriptor array.\r\n * @returns {void}\r\n */\r\n public sortChange(sort: SortDescriptor[]): void {\r\n this.sort = sort;\r\n this.params.sortColumnNames = [];\r\n this.params.sortOrders = [];\r\n\r\n sort.forEach((descriptor: SortDescriptor) => {\r\n if (descriptor.dir) {\r\n this.params.sortOrders.push(descriptor.dir);\r\n\r\n const field = this.gridSetting.columns.find((col) => col.field === descriptor.field);\r\n const sortColumnName = field.valueExpr !== undefined ? field.valueExpr : descriptor.field;\r\n\r\n this.params.sortColumnNames.push(sortColumnName);\r\n }\r\n });\r\n this.changeEvent.sortChanged = true;\r\n this.getDataBinding();\r\n }\r\n\r\n /**\r\n * Handle filter change event.\r\n *\r\n * @param {any} event - The filter change event.\r\n * @returns {void}\r\n */\r\n public filterChange(event: any): void {\r\n this.params.pageNo = 0;\r\n this.params.filterParams = [];\r\n this.setFilterParamsByParentRefId();\r\n\r\n console.log(event);\r\n if (event && event.filters.length > 0) {\r\n event.filters.forEach((item) => {\r\n const field = this.gridSetting.columns.find(col => col.field === item.field);\r\n const value = item.value === null ? '' : item.value;\r\n\r\n if (item.filters) {\r\n item.filters.forEach((filter: FilterDescriptor) => {\r\n const filterParam: ZGridFilterParams = {\r\n key: filter.field as string,\r\n ops: this.mapFilterOperator(filter.operator),\r\n value: filter.value === null ? '' : filter.value,\r\n };\r\n this.params.filterParams.push(filterParam);\r\n });\r\n }\r\n else {\r\n const filterParam: ZGridFilterParams = {\r\n key: item.field,\r\n ops: this.mapFilterOperator(item.operator),\r\n value: value\r\n };\r\n\r\n if (field?.valueExpr) {\r\n filterParam.key = this.zgridbinding.data['FilterWithoutBracket'] ? `${field.valueExpr}` : `(${field.valueExpr})`;\r\n }\r\n\r\n this.params.filterParams.push(filterParam);\r\n }\r\n });\r\n }\r\n\r\n if (this.field.GridFilterConfiguration?.OnChange) {\r\n console.log('GridFilterConfiguration.OnChange triggered');\r\n // Use switchMap to handle the asynchronous operation\r\n of(this.params.filterParams).pipe(\r\n switchMap((filterParams) => {\r\n // Get the function expression from the configuration\r\n let expression = this.field.GridFilterConfiguration.OnChange;\r\n\r\n // Replace 'modalGroup.' with 'group.' and 'group.' with 'grp.'\r\n expression = expression.replace(/modalGroup\\./g, 'group.').replace(/group\\./g, 'grp.');\r\n\r\n // Ensure the expression starts with 'this.' to avoid accessing global scope\r\n if (!expression.startsWith('this.')) {\r\n expression = `this.${expression}`;\r\n }\r\n\r\n const func = eval(expression);\r\n if (!func) {\r\n this.loggingService.log(`${expression} not found in this scope for ${this.field.Name} grid.`);\r\n\r\n // Since function not found, we return the original params.\r\n return of(this.params.filterParams);\r\n }\r\n\r\n const callFunc = func.bind(this.grp);\r\n\r\n return callFunc(filterParams);\r\n })\r\n ).subscribe((updatedFilterParams: any[]) => {\r\n console.log(updatedFilterParams);\r\n\r\n // update filterParams\r\n if (updatedFilterParams) {\r\n this.params.filterParams = updatedFilterParams;\r\n }\r\n\r\n this.changeEvent.filterChanged = true;\r\n this.getDataBinding();\r\n });\r\n }\r\n else {\r\n // If there is no GridFilterConfiguration.OnChange\r\n this.changeEvent.filterChanged = true;\r\n this.getDataBinding();\r\n }\r\n }\r\n\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n this.grid.loading = true;\r\n this.gridSetting.gridState = state;\r\n this.aggregateResetValue();\r\n }\r\n\r\n /**\r\n * Map filter operator to its corresponding value.\r\n *\r\n * @param {string} operator - The filter operator.\r\n * @returns {string} - The mapped filter operator value.\r\n */\r\n private mapFilterOperator(operator: any) {\r\n const operatorMappings: { [key: string]: string } = {\r\n 'eq': 'eq',\r\n 'neq': 'neq',\r\n 'lt': 'lt',\r\n 'lte': 'lte',\r\n 'gt': 'gt',\r\n 'gte': 'gte',\r\n 'startswith': 'startswith',\r\n 'endswith': 'endswith',\r\n 'isnull': 'isnull',\r\n 'isnotnull': 'isnotnull',\r\n };\r\n // Handle special case for 'contains'\r\n if (operator === 'contains' && !this.field['FilterContainsUsingEqual']) {\r\n return 'contains';\r\n }\r\n\r\n // Return the mapped operator or default to '=='\r\n return operatorMappings[operator] || '==';\r\n }\r\n\r\n private getPageNo(stateSkip: number, stateTake: number) {\r\n return stateSkip / stateTake;\r\n }\r\n\r\n // columnField = data: Array<ZField>,\r\n // columns = gridColumns: any[],\r\n // group = group: ZGroup,\r\n // columnConfigurations = gridSettings?: ZGridColumnSettings[],\r\n // generateHiddenColumns = usableColumns?: any[],\r\n // gridAttributes = gridField?: ZField\r\n\r\n public setColumns(columns: any[]) {\r\n this.gridSetting.columnField = columns;\r\n GridUtils.generateGridColumns(this.gridSetting);\r\n\r\n this.loggingService.debugLog('generated grid columns', this.gridSetting);\r\n }\r\n\r\n //region: set detail grid session data\r\n private collapseAllDetailGrid() {\r\n if (this.zgridbinding.data?.DetailGrid) {\r\n // Collapse all expanded rows before fetching new data\r\n if (this.grid.data && ('data' in this.grid.data) && this.grid.data.data?.length > 0) {\r\n for (let i = 0; i < this.grid.data.data.length; i++) {\r\n this.grid.collapseRow(i);\r\n }\r\n }\r\n }\r\n }\r\n \r\n private tryGetDataFromSession(): any {\r\n const detailGridSessionKey = sessionStorage.getItem('detailGridSessionKey');\r\n if (!this.isValidSessionKey(detailGridSessionKey)) {\r\n return null;\r\n }\r\n\r\n const sessionData = this.getAndValidateSessionData(detailGridSessionKey);\r\n if (sessionData && this.isSessionDataFresh(sessionData)) {\r\n this.storageService.set('detailGridSessionKey', '');\r\n return sessionData;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private isValidSessionKey(key: string): boolean {\r\n return !DataUtils.isNullUndefinedEmpty(key);\r\n }\r\n\r\n private getAndValidateSessionData(key: string): any {\r\n const data = JSON.parse(sessionStorage.getItem(key));\r\n return DataUtils.isNullUndefinedEmpty(data) ? null : data;\r\n }\r\n\r\n private isSessionDataFresh(data: any): boolean {\r\n const now = new Date();\r\n const previousDate = new Date(data.currentDate);\r\n const diffInMinutes = this.getTimeDifferenceInMinutes(now, previousDate);\r\n return diffInMinutes <= 10;\r\n }\r\n\r\n private getTimeDifferenceInMinutes(currentDate: Date, previousDate: Date): number {\r\n const diffInMs = currentDate.getTime() - previousDate.getTime();\r\n return diffInMs / (1000 * 60);\r\n }\r\n\r\n private setDetailDataIntoSession(detailGridSessionKey: string, data: any) {\r\n if (DataUtils.isNullUndefinedEmpty(detailGridSessionKey)) {\r\n return;\r\n }\r\n data.currentDate = new Date();\r\n this.storageService.set(detailGridSessionKey, JSON.stringify(data));\r\n }\r\n //endregion\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Directive({\r\n selector: 'kendo-combobox[openOnFocus]',\r\n standalone: true\r\n})\r\nexport class OpenOnFocusDirective {\r\n\r\n @Input() openOnFocus: ComboBoxComponent;\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this.openOnFocus) {\r\n if (!this.openOnFocus.readonly) {\r\n this.openOnFocus.toggle(true);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('blur') onBlur() {\r\n if (this.openOnFocus) {\r\n this.openOnFocus.toggle(false);\r\n }\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[elementcontainer]',\r\n standalone: true\r\n})\r\nexport class ElementContainerDirective {\r\n constructor(public readonly viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\n\r\n@Pipe({\r\n name: \"dateParser\",\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class DateParserFilter implements PipeTransform {\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService\r\n ) {\r\n }\r\n\r\n transform(value: any, data: ZField): any {\r\n // debugger;\r\n if (!value) {\r\n return value;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n try {\r\n if (data.IsIgnoreTimeZone) {\r\n return this.componentService.localizeDateTimeByIgnoringTimeZone(value, data);\r\n }\r\n\r\n return new Date(value);\r\n } catch (error) {\r\n console.log(\"DateParserFilter error: \", error);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'divzlayout',\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class DivzLayout implements PipeTransform {\r\n transform(items: any, zlayout: string): any {\r\n if (!items || !zlayout) {\r\n return items;\r\n }\r\n\r\n // if got zlayout, in div: 2 = 2 col per row; 3 = 1 col per row;\r\n if (zlayout == \"2\") {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-6\";\r\n });\r\n }\r\n else if (zlayout == '3') {\r\n Object.values(items).forEach(value => {\r\n value['DivClass'] = \"col-sm-12\";\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'tabfilter',\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class TabFilter implements PipeTransform {\r\n transform(items: any, filter: string): any {\r\n if (!items || !filter || !items.Value || !Array.isArray(items.Value)) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n const value = items.Value.filter(item => {\r\n const target = item.TabArea + '';\r\n return target.indexOf(filter) !== -1;\r\n });\r\n const newTabItem = Object.assign({}, items);\r\n newTabItem.Value = value;\r\n return newTabItem;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'panelAreaFilter',\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class PanelAreaFilter implements PipeTransform {\r\n transform(items: any, filter: string): any {\r\n if (!items || !filter || !items.Value || !Array.isArray(items.Value)) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n const value = items.Value.filter(item => {\r\n const target = item.PanelArea + '';\r\n return target.indexOf(filter) !== -1;\r\n });\r\n const newTabItem = { ...items};\r\n newTabItem.Value = value;\r\n return newTabItem;\r\n }\r\n}\r\n","import { formatDate } from \"@angular/common\";\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { CacheService, ResourceApiService, WebApiService, ZComponentHelper, ZField, ZGroup, ZSelectMultipleTemplateParams, ZSelectPostApiParams } from \"mmhglobal-zcore\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\n\r\n@Pipe({\r\n name: \"inputText\",\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class ZInputParser implements PipeTransform {\r\n private readonly zdate_type = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n public readonly sfdatetimepicker_type = ['sfdatetimepicker'];\r\n private readonly zcheckbox_type = ['checkbox'];\r\n private readonly zselect_type = ['zuiselectmultiple', 'zuiselectmultiple_button', 'select'];\r\n private nullValueDefaultDisplayText = \"-\";\r\n\r\n constructor(\r\n private resourceApiService: ResourceApiService,\r\n private cacheService: CacheService,\r\n private webApiService: WebApiService,\r\n private componentService: ZComponentService\r\n ) {\r\n }\r\n\r\n transform(value: any, data: ZField, group: ZGroup): Observable<string> {\r\n this.nullValueDefaultDisplayText = data.NullValueDisplayText != undefined ? data.NullValueDisplayText : '-';\r\n if (!value) {\r\n return of(this.nullValueDefaultDisplayText);\r\n }\r\n\r\n if (this.zdate_type.includes(data.Type) || this.sfdatetimepicker_type.includes(data.Type)) {\r\n return of(this.transformTimeValue(value, data));\r\n }\r\n else if (this.zcheckbox_type.includes(data.Type)) {\r\n return of(value ? \"Yes\" : \"No\");\r\n }\r\n else if (this.zselect_type.includes(data.Type)) {\r\n const selectField = { data: {}, itemDataField: '', itemTextField: '', itemValueField: '' };\r\n ZComponentHelper.setSelectMultipleTextValue(data.SelectOptions, selectField);\r\n group._debug = group._debug || new ZGroup();\r\n return this.loadZData(data, group, selectField).pipe(\r\n map(res => {\r\n const optionData = res.dataSet || res || [];\r\n const optionValue = optionData ? optionData.find(o => o[selectField.itemValueField] == value) : null;\r\n if (optionValue) {\r\n return this.getItemTemplate(optionValue, data, group, selectField.itemValueField, selectField.itemTextField) || this.nullValueDefaultDisplayText;\r\n }\r\n else {\r\n return this.nullValueDefaultDisplayText;\r\n }\r\n }));\r\n }\r\n\r\n return of(value);\r\n }\r\n\r\n private transformTimeValue(value: any, data: ZField): string {\r\n let val = value;\r\n if (data.IsIgnoreTimeZone) {\r\n val = this.componentService.localizeDateTimeByIgnoringTimeZone(value, data);\r\n }\r\n return formatDate(val, this.getDateTimeFormat(data.Type), 'en_US') || this.nullValueDefaultDisplayText;\r\n }\r\n\r\n // To refactor\r\n private getDateTimeFormat(dateType: string): string {\r\n if (dateType === \"ztime\") {\r\n return \"hh:mm\";\r\n }\r\n else if (dateType === \"zuidatetime\" || dateType === \"sfdatetimepicker\") {\r\n return \"dd-MMM-yyyy h:mm a\";\r\n }\r\n else if (dateType === \"zuitime\") {\r\n return \"hh:mm:ss\";\r\n }\r\n else if (dateType === \"zshortdate\") {\r\n return \"MMM-yyyy\";\r\n }\r\n return \"dd-MMM-yyyy\";\r\n }\r\n\r\n private loadZData(data: ZField, group: ZGroup, selectField: any): Observable<any> {\r\n if (data.OptionResourceURL) {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n data.OptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = data.OptionSort;\r\n filterParam.columns = data.OptionColumns;\r\n filterParam.filters = data.OptionFilter;\r\n\r\n return ZComponentHelper.getDataOptions(\r\n data.OptionName,\r\n filterParam,\r\n group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n false\r\n );\r\n }\r\n else {\r\n return of(this.getItemsData(data, group, selectField.itemDataField));\r\n }\r\n }\r\n\r\n private getItemsData(data, group, itemDataField) {\r\n const optionName = data.OptionName || itemDataField || 'group.zData.' + data.Name;\r\n if (Array.isArray(data.SelectOptions) && !group.zData[optionName.slice(12)]) {\r\n group.zData[optionName.slice(12)] = data.SelectOptions;\r\n itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n return group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n return group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n return group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n return group[optionName] || [];\r\n }\r\n }\r\n\r\n private getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n if (data.ItemTemplate) {\r\n const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call({ group: group }, data.ItemTemplate);\r\n\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'htmlSanitize',\r\n standalone: true\r\n})\r\nexport class HtmlSanitizePipe implements PipeTransform {\r\n constructor(private readonly domSanitizer: DomSanitizer) {\r\n\r\n }\r\n transform(html: string): SafeHtml {\r\n return this.domSanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n name: \"znumeric\",\r\n standalone: true\r\n})\r\nexport class ZNumericParser implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: any, form: UntypedFormGroup, data: ZField): any {\r\n const dataValue = form.get(data.Value).value;\r\n return Number(dataValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n name: \"dateFormatIonic\",\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class DateIonicFormatParser implements PipeTransform {\r\n transform(data: ZField): any {\r\n if (data.FormatOptions) {\r\n return this.transformIonicFormat(data.FormatOptions);\r\n }\r\n\r\n return this.getDefaultDateTimeFormat(data.Type);\r\n }\r\n\r\n private getDefaultDateTimeFormat(dataType: string) {\r\n switch (dataType) {\r\n case \"ztime\":\r\n return \"hh:mm A\";\r\n case \"zuitime\":\r\n return \"hh:mm:ss A\";\r\n case \"zshortdate\":\r\n return \"MMM-YYYY\";\r\n case \"zuidatetime\":\r\n return \"DD-MMM-YYYY hh:mm A\";\r\n default:\r\n return \"DD-MMM-YYYY\";\r\n }\r\n }\r\n\r\n private transformIonicFormat(formatString: string): string {\r\n return formatString\r\n .replaceAll(\"d\", \"D\")\r\n .replaceAll(\"y\", \"Y\")\r\n .replace(\"a\", \"A\");\r\n }\r\n\r\n // todo support 24 hour format\r\n // .replace(\"h\", \"H\") small = 12, capital = 24\r\n // if got a, then 12, else 24\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n name: \"dateFormatKendo\",\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class DateKendoFormatParser implements PipeTransform {\r\n transform(data: ZField): any {\r\n if (data.FormatOptions) {\r\n return this.transformKendoFormat(data.FormatOptions);\r\n }\r\n\r\n return this.getDefaultDateTimeFormat(data.Type);\r\n }\r\n\r\n private getDefaultDateTimeFormat(dataType: string) {\r\n switch (dataType) {\r\n case \"ztime\":\r\n return \"hh:mm a\";\r\n case \"zuitime\":\r\n return \"hh:mm:ss a\";\r\n case \"zshortdate\":\r\n return \"MMM-yyyy\";\r\n case \"zuidatetime\":\r\n case \"sfdatetimepicker\":\r\n return \"dd-MMM-yyyy hh:mm a\";\r\n default:\r\n return \"dd-MMM-yyyy\";\r\n }\r\n }\r\n\r\n private transformKendoFormat(formatString: string): string {\r\n return formatString\r\n .replaceAll(\"D\", \"d\")\r\n .replaceAll(\"Y\", \"y\")\r\n .replace(\"A\", \"a\");\r\n }\r\n\r\n // todo support 24 hour format\r\n // .replace(\"h\", \"H\") small = 12, capital = 24\r\n // if got a, then 12, else 24\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"dateMinMaxIonic\",\r\n pure: true,\r\n standalone: true\r\n})\r\n\r\nexport class DateIonicMinMaxParser implements PipeTransform {\r\n\r\n transform(value: any): any {\r\n if (!value) {\r\n return undefined;\r\n }\r\n\r\n const timeZoneOffSet_Mins = new Date().getTimezoneOffset();\r\n const localTime = (new Date(value).getTime() - timeZoneOffSet_Mins * 60000);\r\n return new Date(localTime).toISOString();\r\n }\r\n}\r\n","\r\nexport class ComponentConstant {\r\n public static readonly GridColDateFilterSuffix = \"_GridFilter\";\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { BaseFilterCellComponent, FilterService } from '@progress/kendo-angular-grid';\r\nimport { FilterDescriptor } from '@progress/kendo-data-query/dist/es/main';\r\nimport { DataUtils, ZField } from 'mmhglobal-zcore';\r\nimport { ComponentConstant } from '../../../constants/constant';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DateInputComponent, DateRangeComponent } from '@progress/kendo-angular-dateinputs';\r\n\r\n@Component({\r\n selector: 'date-range-filter-cell',\r\n styles: [`\r\n kendo-daterange > kendo-dateinput.range-filter {\r\n display: inline-block;\r\n }\r\n .k-button {\r\n margin-left: 4px;\r\n }\r\n `],\r\n template: `\r\n <kendo-daterange >\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeStartInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"start\"\r\n (valueChange)=\"filterRange($event, end)\"\r\n style=\"width:84px\">\r\n </kendo-dateinput>\r\n -\r\n <kendo-dateinput\r\n class=\"range-filter\"\r\n kendoDateRangeEndInput\r\n [format]=\"'dd-MM-yyyy'\"\r\n placeholder=\"dd-MM-yyyy\"\r\n [value]=\"end\"\r\n (valueChange)=\"filterRange(start, $event)\"\r\n style=\"width:85px\">\r\n </kendo-dateinput>\r\n </kendo-daterange>\r\n <button\r\n *ngIf=\"hasFilter\"\r\n class=\"k-button k-button-icon\"\r\n title=\"Clear\"\r\n (click)=\"clearFilter()\">\r\n <span class=\"k-icon k-i-filter-clear\" style=\"width:15px\"></span>\r\n </button>\r\n `,\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DateRangeComponent,\r\n DateInputComponent\r\n ]\r\n})\r\nexport class DateRangeFilterCellComponent extends BaseFilterCellComponent {\r\n @Input()\r\n public filter: any;\r\n\r\n @Input()\r\n public field: string;\r\n\r\n @Input()\r\n public data: ZField;\r\n\r\n @Input() \r\n public showOperators: boolean = true; \r\n\r\n constructor(filterService: FilterService) {\r\n super(filterService);\r\n }\r\n\r\n public get start(): Date {\r\n const first = this.findByOperator('gte');\r\n\r\n return (first ?? <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get end(): Date {\r\n const end = this.findByOperator('lte');\r\n return (end ?? <FilterDescriptor>{}).value;\r\n }\r\n\r\n public get hasFilter(): boolean {\r\n return this.filtersByField(this.getFieldName()).length > 0;\r\n }\r\n\r\n public clearFilter(): void {\r\n this.filterService.filter(\r\n this.removeFilter(this.getFieldName())\r\n );\r\n }\r\n\r\n public filterRange(start: Date, end: Date): void {\r\n this.filter = this.removeFilter(this.getFieldName());\r\n\r\n const filters = [];\r\n\r\n if (start) {\r\n filters.push({\r\n field: this.getFieldName(),\r\n operator: 'gte',\r\n value: start\r\n });\r\n }\r\n\r\n if (end) {\r\n end.setHours(23, 59, 59, 999);\r\n filters.push({\r\n field: this.getFieldName(),\r\n operator: 'lte',\r\n value: end\r\n });\r\n }\r\n\r\n const root = this.filter ?? {\r\n logic: 'and',\r\n filters: []\r\n };\r\n\r\n if (filters.length) {\r\n root.filters.push(...filters);\r\n }\r\n\r\n this.filterService.filter(root);\r\n }\r\n\r\n private findByOperator(op: string): FilterDescriptor {\r\n return this.filtersByField(this.getFieldName())\r\n .filter(({ operator }) => operator === op)[0];\r\n }\r\n\r\n private getFieldName(): string {\r\n return this.isUseLocalData() ? `${this.field}${ComponentConstant.GridColDateFilterSuffix}` : this.field;\r\n }\r\n\r\n private isUseLocalData(): boolean {\r\n return DataUtils.isNullUndefinedEmpty(this.data.ResourceURL);\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, HostListener } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from \"rxjs\";\r\nimport { delay, take } from \"rxjs/operators\";\r\nimport { SchedulerModule, ToolbarService } from \"@progress/kendo-angular-scheduler\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CalendarModule } from \"@progress/kendo-angular-dateinputs\";\r\nimport { PopupModule } from \"@progress/kendo-angular-popup\";\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Component({\r\n selector: \"zschedulertoolbar\",\r\n template: `\r\n <div class=\"k-scheduler-navigation\">\r\n <button class=\"k-nav-today\" (click)=\"today()\">\r\n Today\r\n </button>\r\n <button class=\"k-nav-prev\" (click)=\"prev($event)\">\r\n <span class=\"k-icon k-i-arrow-60-left\"></span>\r\n </button> &nbsp;\r\n <span>\r\n <a class=\"k-nav-current\" #anchor\r\n >\r\n\r\n {{ selectedDate | kendoDate: \"dd-MMM-yyyy\" }}\r\n </a>\r\n </span> &nbsp;\r\n <button class=\"k-nav-next\" (click)=\"next($event)\">\r\n <span class=\"k-icon k-i-arrow-60-right\"></span>\r\n </button>\r\n </div>\r\n <kendo-popup\r\n style=\"margin:15px 0px 0px 0px;\"\r\n [anchor]=\"anchor\"\r\n (anchorViewportLeave)=\"showCalendar = false\"\r\n *ngIf=\"showCalendar\"\r\n >\r\n <kendo-calendar\r\n [focusedDate]=\"selectedDate\"\r\n (blur)=\"onBlur_Calendar()\"\r\n (valueChange)=\"onChange_Calendar($event)\"\r\n ></kendo-calendar>\r\n </kendo-popup>\r\n `,\r\n styleUrls: ['../../../styles/component.scss', \"./zscheduler.toolbar.component.css\"],\r\n standalone: true,\r\n imports: [CommonModule,FontAwesomeModule,ButtonModule,\r\n SchedulerModule,ReactiveFormsModule,CalendarModule,\r\n PopupModule,BrowserModule,IntlModule]\r\n})\r\nexport class ZSchedulerToolBarComponent {\r\n @Input() local: any = {};\r\n @Input() public selectedDate: Date;\r\n showCalendar = false;\r\n\r\n constructor(public toolbarService: ToolbarService) {}\r\n\r\n public today(): void {\r\n this.toolbarService.navigate({\r\n type: \"today\"\r\n });\r\n }\r\n\r\n public next(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"next\"\r\n });\r\n }\r\n\r\n public prev(event: any): void {\r\n this.toolbarService.navigate({\r\n type: \"prev\"\r\n });\r\n }\r\n\r\n onChange_Calendar(value: any): void {\r\n this.local.inProgress = true;\r\n this.toolbarService.navigate({\r\n type: 'select-date',\r\n date: value\r\n });\r\n this.toggleCalendar();\r\n of([])\r\n .pipe(take(1), delay(1000))\r\n .subscribe(() => (this.local.inProgress = false));\r\n }\r\n\r\n onBlur_Calendar(): void {\r\n this.toggleCalendar();\r\n }\r\n\r\n toggleCalendar(status?: boolean) {\r\n if (status === false) {\r\n this.showCalendar = false;\r\n return;\r\n }\r\n this.showCalendar = !this.showCalendar;\r\n }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n public keydown(event: any): void {\r\n if (event.keyCode === 27 && this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n public documentClick(event: any): void {\r\n if (event.target.className === \"k-nav-current\") {\r\n this.toggleCalendar();\r\n } else {\r\n if (this.showCalendar === true) {\r\n this.toggleCalendar(false);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable, Type } from \"@angular/core\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport { ComponentType } from \"mmhglobal-zcore\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormControlService {\r\n constructor(private readonly componentService: ZComponentService) {\r\n }\r\n\r\n public async getComponentByType(componentType: ComponentType): Promise<Type<FieldBase> | null> {\r\n if (this.componentService.isSkipComponentType(componentType)) {\r\n return null;\r\n }\r\n\r\n switch (componentType) {\r\n case ComponentType.zcard: {\r\n const { ZcardComponent } = await import('../../container/zcard/zcard.component');\r\n return ZcardComponent;\r\n }\r\n case ComponentType.zchart: {\r\n const { ZchartComponent } = await import('../../chart/zchart/zchart.component');\r\n return ZchartComponent;\r\n }\r\n case ComponentType.zchip: {\r\n const { ZChipComponent } = await import('../../button/zchip/zchip.component');\r\n return ZChipComponent;\r\n }\r\n case ComponentType.textareajson:\r\n case ComponentType.textareahtml: {\r\n const { ZcodeeditorComponent } = await import('../../input/zcodeeditor/zcodeeditor.component');\r\n return ZcodeeditorComponent;\r\n }\r\n case ComponentType.checkbox:\r\n case ComponentType.zdate:\r\n case ComponentType.zdatetime:\r\n case ComponentType.zshortdate:\r\n case ComponentType.zuidatetime:\r\n case ComponentType.zuitime:\r\n case ComponentType.ztime:\r\n case ComponentType.zimg:\r\n case ComponentType.znumeric:\r\n case ComponentType.post_select_input:\r\n case ComponentType.pre_select_input:\r\n case ComponentType.zphone_countrycode:\r\n case ComponentType.zuiselectmultiple:\r\n case ComponentType.zuiselectmultiple_button:\r\n case ComponentType.select:\r\n case ComponentType.number:\r\n case ComponentType.numeric:\r\n case ComponentType.date:\r\n case ComponentType.email:\r\n case ComponentType.zpassword:\r\n case ComponentType.search:\r\n case ComponentType.tel:\r\n case ComponentType.text:\r\n case ComponentType.url:\r\n case ComponentType.currency:\r\n case ComponentType.textarea:\r\n case ComponentType.ztexteditor:\r\n case ComponentType.zupload:\r\n case ComponentType.zcolorpicker:\r\n case ComponentType.sfdatetimepicker:\r\n case ComponentType.zradiobutton: {\r\n const { ZInputContainerComponent } = await import('../../input/zinput-container/zinput-container.component');\r\n return ZInputContainerComponent;\r\n }\r\n case ComponentType.zdiv: {\r\n const { ZdivComponent } = await import('../../container/zdiv/zdiv.component');\r\n return ZdivComponent;\r\n }\r\n case ComponentType.zgauge: {\r\n const { ZgaugeComponent } = await import('../../chart/zgauge/zgauge.component');\r\n return ZgaugeComponent;\r\n }\r\n case ComponentType.zgrid: {\r\n const { ZgridContainerComponent } = await import('../../data-listing/zgrid/container/zgrid-container.component');\r\n return ZgridContainerComponent;\r\n }\r\n case ComponentType.zlabel: {\r\n const { ZlabelComponent } = await import('../../input/zlabel/zlabel.component');\r\n return ZlabelComponent;\r\n }\r\n case ComponentType.zmfb: {\r\n const { ZmfbComponent } = await import('../../button/zmfb/zmfb.component');\r\n return ZmfbComponent;\r\n }\r\n case ComponentType.zreport: {\r\n const { ZreportComponent } = await import('../../chart/zreport/zreport.component');\r\n return ZreportComponent;\r\n }\r\n case ComponentType.zcalendar: {\r\n const { ZschedulerComponent } = await import('../../chart/zscheduler/zscheduler.component');\r\n return ZschedulerComponent;\r\n }\r\n case ComponentType.ztab: {\r\n const { ZtabComponent } = await import('../../container/ztab/ztab.component');\r\n return ZtabComponent;\r\n }\r\n case ComponentType.ztree: {\r\n const { ZtreeComponent } = await import('../../data-listing/ztree/ztree.component');\r\n return ZtreeComponent;\r\n }\r\n case ComponentType.ktree_list: {\r\n const { ZtreelistComponent } = await import('../../data-listing/ztreelist/ztreelist.component');\r\n return ZtreelistComponent;\r\n }\r\n case ComponentType.ztrendcard: {\r\n const { ZtrendcardComponent } = await import('../../chart/ztrendcard/ztrendcard.component');\r\n return ZtrendcardComponent;\r\n }\r\n case ComponentType.zudf: {\r\n const { ZudfComponent } = await import('../../container/zudf/zudf.component');\r\n return ZudfComponent;\r\n }\r\n case ComponentType.zworkflowbuttons: {\r\n const { ZworkflowbuttonsComponent } = await import('../../button/zworkflowbuttons/zworkflowbuttons.component');\r\n return ZworkflowbuttonsComponent;\r\n }\r\n case ComponentType.kcard: {\r\n const { KcardComponent } = await import('../../container/kcard/kcard.component');\r\n return KcardComponent;\r\n }\r\n case ComponentType.zprogressbar: {\r\n const { ZprogressbarComponent } = await import('../../chart/zprogressbar/zprogressbar.component');\r\n return ZprogressbarComponent;\r\n }\r\n case ComponentType.sfquerybuilder: {\r\n const { SfquerybuilderComponent } = await import('../../input/sfquerybuilder/sfquerybuilder.component');\r\n return SfquerybuilderComponent;\r\n }\r\n case ComponentType.zloop: {\r\n const { ZloopComponent } = await import('../../container/zloop/zloop.component');\r\n return ZloopComponent;\r\n }\r\n case ComponentType.ksplitter: {\r\n const { KsplitterComponent } = await import('../../container/ksplitter/ksplitter.component');\r\n return KsplitterComponent;\r\n }\r\n case ComponentType.virtualscroll: {\r\n const { VirtualScrollComponent } = await import('../../data-listing/virtual-scroll/virtual-scroll.component');\r\n return VirtualScrollComponent;\r\n }\r\n case ComponentType.spinner: {\r\n const { SpinnerComponent } = await import('../../utility/spinner/spinner.component');\r\n return SpinnerComponent;\r\n }\r\n case ComponentType.kmenu: {\r\n const { KmenuComponent } = await import('../../menu/kmenu/kmenu.component');\r\n return KmenuComponent;\r\n }\r\n case ComponentType.kscrollview: {\r\n const { KScrollViewComponent } = await import('../../container/kscrollview/kscrollview.component');\r\n return KScrollViewComponent;\r\n }\r\n case ComponentType.zganttchart: {\r\n const { ZganttchartComponent } = await import('../../chart/zganttchart/zganttchart.component');\r\n return ZganttchartComponent;\r\n }\r\n case ComponentType.a:\r\n case ComponentType.zbuttons_container:\r\n case ComponentType.zbuttons: {\r\n const { ZbuttonsComponent } = await import('../../button/zbuttons/zbuttons.component');\r\n return ZbuttonsComponent;\r\n }\r\n case ComponentType.dropdown_buttons: {\r\n const { DropDownButtonsComponent } = await import('../../button/dropdown_buttons/dropdown_buttons.component');\r\n return DropDownButtonsComponent;\r\n }\r\n default: {\r\n const { ZunknownComponent } = await import('../zunknown/zunknown.component');\r\n return ZunknownComponent;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { ComponentType, ZComponent, ZField, ZGroup } from \"mmhglobal-zcore\";\r\nimport { FormControlService } from \"./zformcontrol.service\";\r\n\r\n@Component({\r\n selector: \"app-zformcontrol\",\r\n templateUrl: \"./zformcontrol.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zformcontrol.component.scss\"],\r\n standalone: true,\r\n imports: []\r\n})\r\n\r\nexport class ZformcontrolComponent implements OnInit, OnDestroy {\r\n @ViewChild('dynamicContainer', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef;\r\n @Input() field: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: UntypedFormGroup;\r\n @Input() containerField: ZField;\r\n\r\n public componentRef: any;\r\n\r\n constructor(private readonly formControlService: FormControlService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.loadComponent().catch(error => {\r\n console.error('Error loading component:', error);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void { }\r\n\r\n private async loadComponent(): Promise<void> {\r\n if (!this.form) {\r\n console.warn('FormGroup is empty!');\r\n }\r\n\r\n this.viewContainerRef.clear();\r\n const componentRef = this.viewContainerRef.createComponent(await this.formControlService.getComponentByType(ComponentType[this.field.Type]));\r\n (componentRef.instance as ZComponent).data = this.field;\r\n (componentRef.instance as ZComponent).group = this.group;\r\n (componentRef.instance as ZComponent).form = this.form;\r\n (componentRef.instance as ZComponent).containerField = this.containerField;\r\n\r\n this.handleZUdfComponentLoad();\r\n }\r\n\r\n private handleZUdfComponentLoad(): void {\r\n if (this.field.Value?.includes('zudf') && this.field.SubType && !Array.isArray(this.field.Value)) {\r\n const formControl = this.form.controls[this.field.Value];\r\n if (formControl) {\r\n const [scopePrefix, scopeSuffix] = this.field.Value.split('_');\r\n const zudfScopeName = `${scopePrefix}_${scopeSuffix}`;\r\n const value = this.group[zudfScopeName]?.zModel?.[this.field.Value];\r\n\r\n if (value) {\r\n formControl.setValue(value);\r\n formControl.markAsTouched();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","<span #dynamicContainer></span>\r\n","import { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { UntypedFormGroup, UntypedFormControl, ValidatorFn, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { of, Subscription } from 'rxjs';\r\nimport { switchMap, delay, tap } from 'rxjs/operators';\r\nimport { ZComponentDebugService } from '../../../services/zcomponent.debug.service';\r\nimport {\r\n FieldService, ZGroup, ZField, FormType, DebuggerFieldElementName,\r\n ValidationUtils, FieldUtils\r\n} from 'mmhglobal-zcore';\r\nimport { KENDO_RIPPLE } from \"@progress/kendo-angular-ripple\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ZformcontrolComponent } from \"../zformcontrol/zformcontrol.component\";\r\n\r\n@Component({\r\n selector: \"app-zform\",\r\n templateUrl: \"./zform.component.html\",\r\n styleUrls: ['../../../styles/component.scss',\"./zform.component.scss\"],\r\n standalone: true,\r\n imports: [KENDO_RIPPLE, CommonModule, ReactiveFormsModule, ZformcontrolComponent]\r\n})\r\n\r\nexport class ZformComponent implements OnInit, OnDestroy {\r\n public fieldGroup: ZGroup;\r\n @Input() group: ZGroup;\r\n @Input() fieldName: string;\r\n\r\n public form: UntypedFormGroup;\r\n public fields: Array<ZField>;\r\n public isLoading = true;\r\n private readonly subscription: Subscription;\r\n private readonly fieldIndex = [];\r\n\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n private readonly debugService: ZComponentDebugService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setGroup();\r\n if (!this.fieldName) {\r\n this.onInitNormal();\r\n this.isLoading = false;\r\n }\r\n else {\r\n //const cacheKey = `FormField_${this.fieldName}`;\r\n // if get from cache, field wont load. temporary comment out.\r\n //const cachedData = this.cacheService.get(cacheKey);\r\n //if (cachedData) {\r\n // of(cachedData).pipe(\r\n // switchMap(cachedData => {\r\n // const cachedZField = cachedData as ZField[];\r\n // return this.onStartDebuggerOrLoadFromCache(cachedZField);\r\n // }),\r\n // tap(() => {\r\n // this.isLoading = false;\r\n // if (this.group._isDebugging && this.group._debug.isLoading) {\r\n // this.group._debug.isLoading = false;\r\n // }\r\n // }),\r\n // delay(500)\r\n // ).subscribe(() => {\r\n // this.debugService.LoadGridData();\r\n // this.debugService.loadWorkflowData();\r\n // });\r\n //}\r\n //else {\r\n this.fieldService.getFormFieldCode(this.fieldName, FormType.formField, this, 'fields').pipe(\r\n switchMap(fieldElements => {\r\n return this.onStartDebuggerOrLoadFromCache(fieldElements);\r\n }),\r\n switchMap(() => {\r\n this.isLoading = false;\r\n if (this.group._isDebugging && this.group._debug.isLoading) {\r\n this.group._debug.isLoading = false;\r\n }\r\n return of([]);\r\n }),\r\n delay(500))\r\n .subscribe(() => {\r\n this.debugService.loadGridData();\r\n this.debugService.loadWorkflowData();\r\n });\r\n //}\r\n }\r\n }\r\n\r\n private onStartDebuggerOrLoadFromCache(cachedZField: ZField[]) {\r\n if ([DebuggerFieldElementName.DebugV2.toString(), DebuggerFieldElementName.DebuggerSection.toString()].includes(this.fieldName)) {\r\n return this.debugService.onStartDebugger(cachedZField, this);\r\n }\r\n else {\r\n this.group.fields = cachedZField;\r\n this.onInitNormal();\r\n return of([]);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) { // for debugger subscription\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n private setGroup(): void {\r\n this.fieldGroup = [DebuggerFieldElementName.DebugV2.toString(), DebuggerFieldElementName.DebuggerSection.toString()].includes(this.fieldName)\r\n ? this.group._debug\r\n : this.group;\r\n }\r\n\r\n private onInitNormal() {\r\n of(true).pipe(\r\n tap(() => {\r\n this.form = this.toFormGroup(this.group.fields);\r\n this.group.form = this.form;\r\n this.fields = this.group.fields;\r\n }),\r\n switchMap(() => {\r\n if (!this.group['afterFormInit']) {\r\n return of({});\r\n }\r\n return this.group['afterFormInit']();\r\n })\r\n ).subscribe();\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return FieldUtils.isComponentInstanceVisible(field, this.group);\r\n }\r\n\r\n private toFormGroup(fieldElements: Array<ZField>) {\r\n const formControls: { [key: string]: UntypedFormControl } = {};\r\n this.getFormControls(fieldElements, formControls);\r\n const newFormGroup = new UntypedFormGroup(formControls);\r\n return newFormGroup;\r\n }\r\n\r\n private addToFieldIndex(field: ZField) {\r\n if (!field.Name) {\r\n console.error('Field Name undefined: ', field);\r\n }\r\n if (field.Name && !this.fieldIndex.includes(field.Name)) {\r\n this.fieldIndex.push(field.Name);\r\n } else {\r\n console.error('Field Name Duplication: ' + field.Name + '; ', field);\r\n }\r\n }\r\n\r\n private getFormControls(\r\n fieldArray: Array<ZField>,\r\n formControls: { [key: string]: UntypedFormControl },\r\n containerIsVisible: boolean = true\r\n ) {\r\n fieldArray.forEach(field => {\r\n if (!field.SubType) {\r\n this.addToFieldIndex(field);\r\n this.fieldService.patchFieldProperty(field);\r\n\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n }\r\n else {\r\n if (Array.isArray(field.Value) && field.Type !== 'zloop') {\r\n const containerIsVisible = FieldUtils.resolveFormControlVisibility(this, field);\r\n this.getFormControls(field.Value, formControls, containerIsVisible);\r\n }\r\n else {\r\n const isFormControl = FieldUtils.isFormControl(field);\r\n const isVisible = FieldUtils.resolveFormControlVisibility(this, field);\r\n const isRequired = FieldUtils.resolveFormControlRequired(this, field);\r\n\r\n // if container || control visible == false, dont increase the counter.\r\n if (isVisible && containerIsVisible) {\r\n this.fieldService.incrementComponentCounter(field.FieldElementName);\r\n }\r\n\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ValidationUtils.getFieldValidators(field, isVisible, isRequired, this.group);\r\n formControls[field.Value] = new UntypedFormControl(\r\n this.group.zModel[field.Value], validators\r\n );\r\n\r\n if (FieldUtils.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ValidationUtils.getCCFieldValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new UntypedFormControl(\r\n this.group.zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n trackByFn(index: number, item): number {\r\n //return item['Type'] + '-' + item['Name'];\r\n return index;\r\n }\r\n\r\n // private getValue(field: ZField) {\r\n // if (field.Type.indexOf('date') !== -1) {\r\n // return new Date(this.group.zModel[field.Value]);\r\n // } else {\r\n // return this.group.zModel[field.Value];\r\n // }\r\n // }\r\n}\r\n","<div class=\"e1-form\" kendoRippleContainer>\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n <app-zformcontrol\r\n *ngFor=\"let field of fields; trackBy: trackByFn\"\r\n [ngClass]=\"group[field['isVisibleField']] ? field.DivClass : field.Visible === true ? field.DivClass : 'flex-hide'\"\r\n [field]=\"field\"\r\n [group]=\"fieldGroup\"\r\n [form]=\"form\"\r\n id=\"{{ field.Type }}-{{ field.Name }}\"></app-zformcontrol>\r\n </form>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-page-loader\",\r\n templateUrl: \"./page-loader.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./page-loader.component.scss\"],\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class PageLoaderComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","<div class=\"loader\"></div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MainService } from '../../../services/main.service';\r\nimport { ZGroup, ZCoreService, CacheService, DebuggerFieldElementName } from 'mmhglobal-zcore';\r\nimport { NavigationModule } from '@progress/kendo-angular-navigation';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ZformComponent } from '../../others/zform/zform.component';\r\nimport { PageLoaderComponent } from '../page-loader/page-loader.component';\r\n\r\n@Component({\r\n selector: 'app-uicontent',\r\n templateUrl: './uicontent.component.html',\r\n styleUrls: ['../../../styles/component.scss', './uicontent.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, PageLoaderComponent, NavigationModule, ZformComponent]\r\n})\r\n\r\nexport class UicontentComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() cssClass: string;\r\n public debuggerSectionFieldElementName = DebuggerFieldElementName.DebuggerSection;\r\n\r\n constructor(\r\n private readonly zcoreService: ZCoreService,\r\n private readonly router: Router,\r\n private readonly mainService: MainService,\r\n private readonly cacheService: CacheService\r\n ) { }\r\n\r\n ngOnInit() {\r\n console.log(this.group);\r\n }\r\n\r\n isSITEnvironment() {\r\n return this.zcoreService.isDebugSession() && !this.isFieldElement();\r\n }\r\n\r\n isFieldElement() : boolean {\r\n return this.group.fieldName === 'field';\r\n }\r\n\r\n public onNavItemClick(navItem: any) {\r\n if (navItem.route) {\r\n // clear cloneNewModel cache(if have)\r\n if (this.cacheService.getCache(\"cloneNewModel\")) {\r\n this.cacheService.clearCache(\"cloneNewModel\");\r\n }\r\n\r\n this.mainService.removeLastRouteParam();\r\n\r\n if (navItem.routeParam) {\r\n this.mainService.setRouteParam(navItem.routeParam);\r\n }\r\n\r\n this.router.navigateByUrl(navItem.route, { replaceUrl: true });\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<div [class]=\"cssClass\">\r\n <div *ngIf=\"!group.isLoading && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{ 'icon-with-text': item.text }\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n <div *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n <div class=\"main-content-col\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </div>\r\n <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n </div>\r\n <div *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px\" class=\"main-content-row style1\">\r\n <div class=\"main-content-col\">\r\n <app-zform [group]=\"group\" [fieldName]=\"debuggerSectionFieldElementName\"></app-zform>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"processing-record-loader\",\r\n templateUrl: \"./processing-record-loader.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./processing-record-loader.component.scss\"],\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class ProcessingRecordLoaderComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","<div class=\"loader-container\">\r\n <div class=\"ring\">\r\n Processing\r\n <span></span>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { AuthService, MenuService, OAuthMenuItem, SignalType, UISignalService, ZCoreService } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ButtonsModule, KENDO_BUTTONS } from '@progress/kendo-angular-buttons';\r\nimport { IndicatorsModule } from '@progress/kendo-angular-indicators';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { LayoutModule, KENDO_LAYOUT, DrawerComponent, DrawerSelectEvent } from '@progress/kendo-angular-layout';\r\nimport { NavigationModule } from '@progress/kendo-angular-navigation';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { MainService } from '../../../services/main.service';\r\n@Component({\r\n selector: \"app-uiheader\",\r\n templateUrl: \"./uiheader.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./uiheader.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonsModule, LabelModule, LayoutModule, NavigationModule, IndicatorsModule, KENDO_LAYOUT, KENDO_BUTTONS],\r\n})\r\n\r\nexport class UiheaderComponent implements OnInit {\r\n @Input() topFormHeader: string;\r\n @ViewChild('drawer') drawer!: DrawerComponent;\r\n public profileImageUrl: string = '';\r\n public usernameInitial: string = '';\r\n public userDisplayName: string = '';\r\n public appTitle: string = '';\r\n public menuItems: any[] = [];\r\n public userPanelItems: any = [\r\n {\r\n icon: 'user',\r\n text: \"Profile\",\r\n onClick: this.navToUserProfile.bind(this),\r\n },\r\n {\r\n icon: 'sign-out-alt',\r\n text: \"Log Out\",\r\n onClick: this.navLogout.bind(this),\r\n }\r\n ];\r\n private readonly environment: any;\r\n\r\n constructor(\r\n private readonly uiSignalService: UISignalService,\r\n private readonly router: Router,\r\n private readonly menuService: MenuService,\r\n private readonly mainService: MainService,\r\n private readonly authService: AuthService,\r\n private readonly zcoreService: ZCoreService,\r\n ) {\r\n this.environment = this.zcoreService.getEnvironment();\r\n }\r\n\r\n ngOnInit() {\r\n this.appTitle = this.environment.applicationShortName;\r\n this.loadUserProfile();\r\n this.setupMenu().subscribe();\r\n }\r\n\r\n public handleScrollStart(event) {\r\n this.uiSignalService.broadCastEvent(SignalType.PageScrollStart, event);\r\n }\r\n\r\n //#region Headers\r\n private navToUserProfile() {\r\n this.router.navigateByUrl('/userProfile');\r\n }\r\n\r\n private navLogout() {\r\n this.authService.logout();\r\n this.router.navigateByUrl('/auth');\r\n }\r\n\r\n public onDialItemClick(event: any): void {\r\n if (event.item.onClick) {\r\n event.item.onClick();\r\n }\r\n }\r\n\r\n private loadUserProfile() {\r\n const userProfile = this.authService.e1Token?.myProfile;\r\n if (userProfile) {\r\n this.userDisplayName = userProfile.LastName;\r\n this.usernameInitial = this.authService.getUsernameInitial();\r\n this.authService.getUserProfileImage().subscribe(img => { this.profileImageUrl = img });\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Left Menu Bar\r\n private setupMenu(): Observable<any> {\r\n return this.menuService.onMenuInit().pipe(\r\n tap(() => {\r\n this.menuItems = this.menuService.getSideMenu(this.environment.projectCodes[0]);\r\n })\r\n );\r\n }\r\n\r\n public onSelect(ev: DrawerSelectEvent): void {\r\n // this.selected = ev.item.text;\r\n }\r\n\r\n public trackByMenuItem(index: number, item: any): string | number {\r\n return item.Id ?? item.Label ?? index;\r\n }\r\n\r\n public trackByChildMenuItem(index: number, item: any): string | number {\r\n return item.Id ?? item.Label ?? index;\r\n }\r\n\r\n\r\n // Aaron: need this? or use this public onSelect(ev: DrawerSelectEvent): void {\r\n public onMenuItemClick(item: OAuthMenuItem) {\r\n this.drawer.toggle(false);\r\n return this.mainService.menuOnClick(item);\r\n }\r\n\r\n public goHome() {\r\n this.drawer.toggle(false);\r\n const startPage = this.environment.startUpPage;\r\n this.router.navigateByUrl(startPage.startsWith('_') ? startPage.slice(1) : startPage);\r\n }\r\n\r\n public goProfile() {\r\n this.drawer.toggle(false);\r\n this.router.navigateByUrl('/userProfile');\r\n }\r\n\r\n public onLogout() {\r\n this.drawer.toggle(false);\r\n this.authService.logout();\r\n this.router.navigateByUrl('/auth');\r\n }\r\n //#endregion\r\n}\r\n","<kendo-appbar position=\"top\" themeColor=\"primary\" mode=\"push\">\r\n <kendo-appbar-section class=\"bar-icon-section\">\r\n <button class=\"bar-icon-button\" kendoButton fillMode=\"flat\" (click)=\"drawer.toggle()\">\r\n <fa-icon icon=\"bars\"></fa-icon>\r\n </button>\r\n </kendo-appbar-section>\r\n\r\n <kendo-appbar-section>\r\n <div class=\"page-title\">{{ topFormHeader }}</div>\r\n </kendo-appbar-section>\r\n\r\n <kendo-appbar-spacer></kendo-appbar-spacer>\r\n\r\n <kendo-appbar-section class=\"user-profile-info-section\">\r\n <kendo-badge-container class=\"notification-icon-container\">\r\n <button kendoButton fillMode=\"flat\">\r\n <fa-icon icon=\"bell\"></fa-icon>\r\n </button>\r\n <kendo-badge shape=\"dot\" themeColor=\"warning\" size=\"small\" position=\"inside\"></kendo-badge>\r\n </kendo-badge-container>\r\n <span class=\"k-appbar-separator\"></span>\r\n <kendo-floatingactionbutton\r\n [dialItems]=\"userPanelItems\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\"\r\n [dialItemAnimation]=\"true\"\r\n buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\"\r\n (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar *ngIf=\"!!profileImageUrl\" shape=\"circle\" [imageSrc]=\"profileImageUrl\"></kendo-avatar>\r\n <ng-container *ngIf=\"!profileImageUrl\">\r\n <kendo-avatar *ngIf=\"!!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" [initials]=\"usernameInitial\"></kendo-avatar>\r\n <kendo-avatar *ngIf=\"!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" icon=\"user\"></kendo-avatar>\r\n </ng-container>\r\n <kendo-label class=\"profile-username\">{{ userDisplayName }}</kendo-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </kendo-appbar-section>\r\n</kendo-appbar>\r\n\r\n<kendo-drawer-container>\r\n <kendo-drawer class=\"side-menu-bar\" #drawer [items]=\"menuItems\" [width]=\"300\" mode=\"overlay\" [autoCollapse]=\"true\" [mini]=\"false\" [expanded]=\"false\" (select)=\"onSelect($event)\">\r\n <ng-template kendoDrawerTemplate>\r\n <div class=\"header-panel\" (click)=\"goHome()\">\r\n <div class=\"menu-header-container\">\r\n <img src=\"assets/mmh.svg\" class=\"mmh-logo\" alt=\"logo\" />\r\n </div>\r\n <kendo-label class=\"menu-header-app-title\">{{ appTitle }}</kendo-label>\r\n </div>\r\n\r\n <div class=\"setting-panel\">\r\n <div class=\"setting-panel-item-container\" (click)=\"goHome()\">\r\n <div class=\"home-button setting-panel-item\">\r\n <fa-icon icon=\"home\"></fa-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"setting-panel-item-container user-prof-container\" (click)=\"goProfile()\">\r\n <div class=\"user-prof setting-panel-item\">\r\n <kendo-avatar *ngIf=\"profileImageUrl; else noProfileImg\" shape=\"circle\" [imageSrc]=\"profileImageUrl\"></kendo-avatar>\r\n\r\n <ng-template #noProfileImg>\r\n <kendo-avatar *ngIf=\"usernameInitial; else defaultAvatar\" class=\"username-initial-avatar\" shape=\"circle\" [initials]=\"usernameInitial\"></kendo-avatar>\r\n <ng-template #defaultAvatar>\r\n <kendo-avatar class=\"username-initial-avatar\" shape=\"circle\" icon=\"user\"></kendo-avatar>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <kendo-label class=\"profile-username\" style=\"margin-left: 8px\">\r\n {{ userDisplayName }}\r\n </kendo-label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"setting-panel-item-container\" (click)=\"onLogout()\">\r\n <div class=\"logout-button setting-panel-item\">\r\n <fa-icon icon=\"sign-out-alt\"></fa-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"menu-item-panel\">\r\n <kendo-panelbar class=\"menu-items\" keepItemContent=\"true\" *ngFor=\"let parent of menuItems; trackBy: trackByMenuItem\">\r\n <kendo-panelbar-item class=\"main-menu-panel\" [expanded]=\"false\" *ngIf=\"parent.childPath && parent.childPath.length\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <div class=\"zcard-header\">\r\n <kendo-label class=\"zcard-header-title\">{{ parent.Label }}</kendo-label>\r\n <kendo-label class=\"zcard-header-subtitle\">{{ parent.childPathDesc }}</kendo-label>\r\n </div>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent>\r\n <div class=\"childmenu-panel\">\r\n <div *ngFor=\"let child of parent.childPath; trackBy: trackByChildMenuItem\" class=\"childmenu-item\" button text-wrap lines=\"none\" (click)=\"onMenuItemClick(child)\">\r\n <fa-icon class=\"childmenu-item-icon\" [icon]=\"child.Icon\"></fa-icon>\r\n <kendo-label class=\"menuitem-label\">{{ child.Label }}</kendo-label>\r\n <div class=\"tab-item-counter\" color=\"danger\" *ngIf=\"child.PendingCounter\">\r\n {{ child.PendingCounter }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar>\r\n </div>\r\n </ng-template>\r\n </kendo-drawer>\r\n <kendo-drawer-content>\r\n <ng-content select=\"[pageContentTemplate]\"></ng-content>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { SignalType, UISignalService, ZGroup } from 'mmhglobal-zcore';\r\nimport { UicontentComponent } from '../uicontent/uicontent.component';\r\nimport { ProcessingRecordLoaderComponent } from '../processing-record-loader/processing-record-loader.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UiheaderComponent } from '../uiheader/uiheader.component';\r\n\r\n@Component({\r\n selector: 'app-uicontainer',\r\n templateUrl: './uicontainer.component.html',\r\n styleUrls: ['../../../styles/component.scss', './uicontainer.component.scss'],\r\n standalone: true,\r\n imports: [UicontentComponent, ProcessingRecordLoaderComponent, CommonModule, UiheaderComponent],\r\n})\r\n\r\nexport class UicontainerComponent implements OnInit {\r\n @Input() group: ZGroup;\r\n @Input() topFormHeader: string;\r\n @Input() public scrollX: boolean = true;\r\n @Input() public scrollY: boolean = true;\r\n public isEmbeddedPage: boolean = false;\r\n\r\n constructor(\r\n private readonly uiSignalService: UISignalService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.isEmbeddedPage = !!this.group[\"isEmbeddedPage\"];\r\n this.topFormHeader = this.topFormHeader ?? this.group.formHeader;\r\n }\r\n\r\n public handleScrollStart(event) {\r\n this.uiSignalService.broadCastEvent(SignalType.PageScrollStart, event);\r\n }\r\n}\r\n","<ng-template #mainPage>\r\n <div id=\"mainPage\">\r\n <div class=\"loadingPage\" *ngIf=\"group.isTriggered\">\r\n <processing-record-loader></processing-record-loader>\r\n </div>\r\n <div class=\"recordpage\">\r\n <app-uiheader [topFormHeader]=\"topFormHeader\"></app-uiheader>\r\n <div\r\n pageContentTemplate\r\n class=\"app-contain\"\r\n id=\"ion-content-main-page\"\r\n (scroll)=\"handleScrollStart($event)\"\r\n [style.overflowX]=\"scrollX ? 'auto' : 'hidden'\"\r\n [style.overflowY]=\"scrollY ? 'auto' : 'hidden'\">\r\n <app-uicontent [group]=\"group\"></app-uicontent>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #embeddedPage>\r\n <app-uicontent id=\"ion-content-form-page\" [group]=\"group\"></app-uicontent>\r\n</ng-template>\r\n\r\n<ng-container *ngTemplateOutlet=\"isEmbeddedPage ? embeddedPage : mainPage\"></ng-container>\r\n","import { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Subscription, of, Observable } from \"rxjs\";\r\nimport { switchMap, tap } from \"rxjs/operators\";\r\nimport { MainService } from \"../../../services/main.service\";\r\nimport { ZGroup, IDeactivateComponent, FormType, TriggerFromType } from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n template: ``,\r\n standalone: true\r\n})\r\nexport class UipageComponent implements IDeactivateComponent {\r\n group: ZGroup = new ZGroup(true);\r\n subscription: Subscription;\r\n\r\n constructor(\r\n public readonly mainService: MainService,\r\n public readonly activatedRoute: ActivatedRoute\r\n ) {\r\n mainService.setGroup(this.group);\r\n // console.log(\"At \" + this.ctrlName + \" (constructor)\");\r\n }\r\n\r\n canExit(): boolean | Observable<boolean> {\r\n return this.mainService.canExit(this.group.form);\r\n }\r\n\r\n pageOnInit(ctrlName: string, pageName: string, isListForm: boolean, projectName?: string): Observable<any> {\r\n this.group._projectName = projectName;\r\n this.group.isListForm = isListForm;\r\n\r\n return this.mainService.getResourceServerData().pipe(\r\n tap(() => {\r\n const routeParam = isListForm ? null : this.mainService.getNavigationCurrentParam();\r\n this.mainService.initializeGroup(this.group, ctrlName, pageName, this);\r\n\r\n if (routeParam) {\r\n this.setupRouteParams(routeParam);\r\n }\r\n else {\r\n console.warn(\"routeParam is undefined.\");\r\n }\r\n }),\r\n switchMap(() => {\r\n const formType = isListForm ? FormType.listField : FormType.formField;\r\n const fieldElementName = this.group.fieldName ? this.group.fieldName : ctrlName;\r\n\r\n this.group.fieldName = fieldElementName; // to be decprecated\r\n this.group.fieldElementName = fieldElementName;\r\n\r\n return this.mainService.getGroupFields(\r\n fieldElementName,\r\n formType,\r\n TriggerFromType.initialPageLoad,\r\n this.group,\r\n \"fields\"\r\n );\r\n //let formFieldName = this.group.fieldName ? this.group.fieldName : ctrlName;\r\n //this.group.fieldName = formFieldName;\r\n\r\n //if(UipageComponent.signalrEventSubscription){\r\n // UipageComponent.signalrEventSubscription.unsubscribe();\r\n //}\r\n\r\n //UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(\r\n // filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),\r\n // map(async event => {\r\n // let formFieldNameClone = ZComponentHelper.deepClone(formFieldName);\r\n\r\n // if (event.payload.Name !== formFieldNameClone && formType === \"ListField\") {\r\n // try {\r\n // const listFieldName = await this.mainService.getListFieldName(formFieldNameClone).toPromise();\r\n // formFieldNameClone = listFieldName;\r\n // }\r\n // catch (er) {\r\n // }\r\n // }\r\n\r\n // if (event.payload.Name === formFieldNameClone) {\r\n // this.mainService.clearFormListFields();\r\n // (this as any).ngOnInit();\r\n // }\r\n\r\n // this.mainService.clearFormListFields()\r\n // })\r\n //).subscribe();\r\n\r\n }),\r\n switchMap((fields) => {\r\n return this.mainService.beforePageInitialise(this.group);\r\n }),\r\n switchMap((fields) => {\r\n if (this.group.actName === \"new\") {\r\n this.mainService.getCloneNewCacheZModel(this.group);\r\n return this.mainService.afterNewModel(this.group);\r\n } else {\r\n return of(fields);\r\n }\r\n }),\r\n switchMap(() => {\r\n if (this.group.referenceId && this.group.referenceId !== \"0\") {\r\n this.mainService.joinProjectSignalR();\r\n if (this.group.subscribeToModificationAlert) {\r\n this.mainService.handleSignalRModificationAlert(this.group.referenceId);\r\n }\r\n\r\n if (typeof this.group.getModel === \"function\") {\r\n return this.group.getModel(this.group, this.group.referenceId);\r\n } else {\r\n return this.mainService.getModel$(this.group, this.group.referenceId, TriggerFromType.initialPageLoad);\r\n }\r\n } else {\r\n return of({});\r\n }\r\n }),\r\n switchMap((zmodel) => {\r\n if (this.group.parentReferenceField) {\r\n this.group.parentReferenceId = this.group.zModel[this.group.parentReferenceField];\r\n }\r\n return this.mainService.afterPageInitialise(this.group);\r\n }),\r\n switchMap(() => {\r\n return this.mainService.translationPageElement(this.group)\r\n })\r\n );\r\n // .subscribe(() => {\r\n // console.log(\"At activity-one.page ngOnInit() completed\");\r\n // this.group.isLoading = false;\r\n // });\r\n }\r\n\r\n private setupRouteParams(routeParam: string) {\r\n //let actName = routePath.get(\"act\");\r\n const routeParams = routeParam.split('/');\r\n const formId = routeParams[routeParams.length - 2];\r\n let actName = routeParams[routeParams.length - 1];\r\n\r\n if (actName !== 'new' && actName !== 'edit') {\r\n actName = 'new';\r\n }\r\n\r\n this.group.isNew = actName === \"new\";\r\n this.group.isEdit = actName === \"edit\";\r\n\r\n if (actName === \"edit\") {\r\n this.group.referenceId = formId;\r\n }\r\n else if (actName === \"new\") {\r\n this.group.parentReferenceId = formId;\r\n\r\n if (this.group.parentReferenceId) {\r\n if (this.group.parentReferenceField) {\r\n this.group.zModel[this.group.parentReferenceField] = this.group.parentReferenceId.toString();\r\n }\r\n }\r\n else {\r\n console.log(\"group.parentReferenceId is undefined.\");\r\n }\r\n }\r\n\r\n if (actName) {\r\n this.group.actName = actName;\r\n }\r\n }\r\n\r\n //signalrFeOnDestroy(): void {\r\n // if (UipageComponent.signalrEventSubscription) {\r\n // UipageComponent.signalrEventSubscription.unsubscribe();\r\n // }\r\n\r\n // UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(\r\n // filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),\r\n // map(event => this.mainService.clearFormListFields()))\r\n // .subscribe()\r\n //}\r\n\r\n pageDestroy(): void {\r\n console.log(this.group.pageName + \" ngOnDestroy.\");\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n //this.signalrFeOnDestroy();\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { MainService } from '../../../services/main.service';\r\nimport { OAuthMenuItem, MenuService } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { BadgeModule, IndicatorsModule } from '@progress/kendo-angular-indicators';\r\nimport { LayoutModule } from '@progress/kendo-angular-layout';\r\n\r\n@Component({\r\n selector: 'app-uiappmenucontent',\r\n templateUrl: './uiappmenucontent.component.html',\r\n styleUrls: ['../../../styles/component.scss', './uiappmenucontent.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, LabelModule, BadgeModule, LayoutModule, IndicatorsModule]\r\n})\r\n\r\nexport class UiappmenucontentComponent implements OnInit {\r\n @Input() items: Array<OAuthMenuItem>;\r\n public MENU_TYPE_DROPDOWN_SUBMENU = 'dropdown-submenu';\r\n\r\n constructor(\r\n private readonly menuService: MenuService,\r\n private readonly mainService: MainService\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n public getMenuList(item: any): any | null {\r\n if (!item || item.Type !== this.MENU_TYPE_DROPDOWN_SUBMENU) return null;\r\n return this.menuService.getMenuFolder(item.URL);\r\n }\r\n\r\n public trackByFn(index: number, item: OAuthMenuItem): string {\r\n return item.URL || index.toString(); // Unique identifier or fallback to index\r\n }\r\n\r\n public menuOnClick(item: OAuthMenuItem): boolean {\r\n return this.mainService.menuOnClick(item);\r\n }\r\n}\r\n","<div class=\"main-grid\">\r\n <div [ngClass]=\"item.Type === MENU_TYPE_DROPDOWN_SUBMENU ? 'flex-show' : 'col-xs-4 col-sm-4 col-md-3 col-lg-2 col-xl-2 module-div'\" *ngFor=\"let item of items; index as i; trackBy: trackByFn\">\r\n <!-- Dropdown Submenu -->\r\n <kendo-card *ngIf=\"item.Type === MENU_TYPE_DROPDOWN_SUBMENU\">\r\n <kendo-card-header>\r\n <kendo-label class=\"card-title\" kendoCardTitle>\r\n {{ item.Label }}\r\n </kendo-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div>\r\n <app-uiappmenucontent [items]=\"getMenuList(item) || []\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- Regular Menu Item (non-submenu) -->\r\n <div *ngIf=\"item.Type !== MENU_TYPE_DROPDOWN_SUBMENU\" class=\"menu-btn\" (click)=\"menuOnClick(item)\">\r\n <kendo-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ?? 'file']\" [inverse]=\"true\"></fa-icon>\r\n\r\n <!-- 1) Spinner if loading -->\r\n <kendo-badge class=\"pending-counter\" *ngIf=\"item.counterLoading\">\r\n <kendo-loader type=\"infinite-spinner\"></kendo-loader>\r\n </kendo-badge>\r\n\r\n <!-- 2) Numeric badge if loaded & > 0 -->\r\n <kendo-badge class=\"pending-counter\" *ngIf=\"!item.counterLoading && item.PendingCounter && item.PendingCounter > 0\">\r\n {{ item.PendingCounter }}\r\n </kendo-badge>\r\n </kendo-label>\r\n\r\n <kendo-label class=\"menu-btn-label-text\">\r\n {{ item.Label }}\r\n </kendo-label>\r\n\r\n <kendo-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">\r\n {{ item.Description }}\r\n </kendo-label>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { NotificationService } from '@progress/kendo-angular-notification';\r\nimport { ZGroup, ZCoreService, WebApiService, ResourceApiService } from 'mmhglobal-zcore';\r\nimport { MainService } from '../../../services/main.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { IndicatorsModule } from '@progress/kendo-angular-indicators';\r\nimport { of } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-uibulletin',\r\n templateUrl: './uibulletin.component.html',\r\n styleUrls: ['../../../styles/component.scss', './uibulletin.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, LabelModule, IndicatorsModule]\r\n})\r\n\r\nexport class UibulletinComponent implements OnInit {\r\n @ViewChild('appendTo', { read: ViewContainerRef }) public appendTo: ViewContainerRef;\r\n @ViewChild('bulletinTemplate', { read: TemplateRef }) bulletinTemplate: TemplateRef<any>;\r\n @Input() group: ZGroup;\r\n public bulletinMessages = [];\r\n public hideBulletinTemplate = true;\r\n public title = \"\";\r\n public showBulletinIcon = false;\r\n public defaultMessage = 'There are no message today.';\r\n public environment: any;\r\n public firstInitBulletinURL: string;\r\n\r\n constructor(\r\n private readonly zcoreService: ZCoreService,\r\n private readonly webApiService: WebApiService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly mainService: MainService,\r\n private readonly notificationService: NotificationService\r\n ) {\r\n this.environment = this.zcoreService.getEnvironment();\r\n this.showBulletinIcon = this.environment.bulletinUrl ? true : false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mainService.getResourceServerData().subscribe(() => {\r\n this.webApiService.httpGet$(this.resourceApiService.getURL(this.environment.bulletinUrl), '').subscribe(resp => {\r\n if (resp) {\r\n const msg: string[] = [];\r\n\r\n if (Array.isArray(resp) && resp.length > 0) {\r\n resp.forEach((item: any) => {\r\n if (item.Description) {\r\n msg.push(item.Description);\r\n }\r\n });\r\n }\r\n\r\n this.setBulletinMessages(msg);\r\n }\r\n })\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n // if (this.signalrService.signalREnabled()) {\r\n // this.getSignalrBulletinMessage();\r\n // }\r\n }\r\n\r\n public setBulletinMessages(data: any[]) {\r\n this.bulletinMessages = []; // Initialize or clear the bulletin messages array\r\n\r\n if (Array.isArray(data) && data.length > 0) {\r\n data.forEach((item: any) => {\r\n if (item.Description) {\r\n this.bulletinMessages.push(item.Description);\r\n }\r\n });\r\n\r\n this.title = `${this.bulletinMessages.length} messages. Click to view messages.`;\r\n } else {\r\n this.title = \"No message\";\r\n }\r\n }\r\n\r\n private getSignalrBulletinMessage() {\r\n return of({});\r\n // this.group.signalRCallbackHandler['headerBulletinHandling'] = this.headerBulletinHandling.bind(this);\r\n\r\n // return this.signalrService.subscribeToEvent(this.group, `Bulletin`, `group.signalRCallbackHandler.headerBulletinHandling`);\r\n }\r\n\r\n private headerBulletinHandling(group: ZGroup, resp: any, eventName: string) {\r\n this.setBulletinMessages(resp);\r\n }\r\n\r\n public showBulletinMessage(): void {\r\n // if closable property is set to true, hideAfter property is ignored.\r\n this.notificationService.show({\r\n content: this.bulletinTemplate,\r\n position: { horizontal: \"center\", vertical: \"top\" },\r\n animation: { type: \"slide\", duration: 500 },\r\n type: { style: \"none\", icon: false },\r\n closable: this.bulletinMessages.length > 0 ? true : false,\r\n hideAfter: 1000,\r\n });\r\n }\r\n}\r\n","<button *ngIf=\"showBulletinIcon\" kendoButton fillMode=\"clear\" size=\"small\" (click)=\"showBulletinMessage()\">\r\n <kendo-badge color=\"danger\" class=\"pending-counter\" *ngIf=\"bulletinMessages.length > 0\"></kendo-badge>\r\n <kendo-label>\r\n <fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px\"></fa-icon>\r\n Notification\r\n </kendo-label>\r\n</button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n","import { Component, inject, Input } from \"@angular/core\";\r\nimport { UntypedFormGroup, Validators } from \"@angular/forms\";\r\nimport { forkJoin, Observable } from \"rxjs\";\r\nimport { ZComponentService } from \"../../services/zcomponent.service\";\r\nimport {\r\n ComponentType,\r\n FontAweSomeService,\r\n ZComponentHelper, ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup\r\n} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n template: ``,\r\n standalone: false\r\n})\r\n\r\n// For: app-error, zgauge, zprogressbar, zreport\r\nexport class FieldBase {\r\n protected componentService = inject(ZComponentService);\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: UntypedFormGroup;\r\n @Input() containerField: ZField;\r\n @Input() componentProperties: ZComponentProperties;\r\n\r\n public isLoading = true;\r\n\r\n constructor() { }\r\n\r\n public initComponent(options?: FieldSetupOption): Observable<any> {\r\n this.isLoading = true;\r\n this.componentProperties = this.componentProperties || new ZComponentProperties();\r\n ZComponentHelper.setComponentProperties(this);\r\n // if (!(options && options.isRegisterComponent == false)) {\r\n // ZComponentHelper.registerComponent(this);\r\n // }\r\n ZComponentHelper.registerComponent(this);\r\n this.componentService.setComponentAdditionalProperties(this);\r\n this.componentService.setCompStylesByIndex(this);\r\n this.data.ComponentStyleType = this.data.ComponentStyleType || \"style1\";\r\n return forkJoin([this.componentService.translateComponentField(this.data, this.group), this.componentService.translateComponentProperties(this.componentProperties, this.group)]);\r\n }\r\n\r\n protected setupComponentSettings(componentSettings: any) {\r\n if (this.data['ComponentSettings']) {\r\n if (typeof this.data['ComponentSettings'] == 'string') {\r\n const option = ZComponentHelper.getGroupValue(this.data['ComponentSettings'], this.group);\r\n Object.assign(componentSettings, option);\r\n }\r\n else if (typeof this.data['ComponentSettings'] == 'object') {\r\n Object.assign(componentSettings, this.data['ComponentSettings']);\r\n }\r\n }\r\n }\r\n\r\n public setupInnerField() {\r\n ZComponentHelper.registerComponent(this);\r\n }\r\n\r\n /**\r\n * @deprecated This function is deprecated. Remove this as we only support desktop version now.\r\n */\r\n public isMobileScreen() {\r\n return false;\r\n }\r\n\r\n public getClass(form: UntypedFormGroup, data: ZField) {\r\n return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass} ${data.Class}`;\r\n }\r\n\r\n public getIon_InvalidClass(form: UntypedFormGroup, data: ZField) {\r\n return ZComponentHelper.getIon_InvalidClass(form, data);\r\n }\r\n\r\n public setIcon(icon: string) {\r\n this.componentProperties.icon = icon;\r\n }\r\n\r\n public setLabelText(label: string) {\r\n this.componentProperties.label = label;\r\n }\r\n\r\n //#region Style\r\n public getStyle(ind: string = \"\"): string {\r\n return this.componentProperties.style[`style${ind}`] ?? '';\r\n }\r\n\r\n public setStyle(style: string, ind: string = \"\") {\r\n this.componentService.setStyleByIndex(this, ind, style);\r\n }\r\n\r\n public appendStyle(style: string, ind: string = \"\") {\r\n const currentStyle = this.getStyle(ind);\r\n const combinedStyle = (currentStyle.endsWith(';') || !currentStyle ? currentStyle : `${currentStyle};`) + style;\r\n this.componentService.setStyleByIndex(this, ind, combinedStyle);\r\n }\r\n\r\n public removeStyle(style: string, ind: string = \"\") {\r\n const currentStyle = this.getStyle(ind);\r\n this.componentService.setStyleByIndex(this, ind, currentStyle.replaceAll(style, ''));\r\n }\r\n\r\n public removeStyleByProperty(property: string, ind: string = \"\") {\r\n const currentStyle = this.getStyle(ind);\r\n if (currentStyle) {\r\n const currentStyleList = currentStyle.split(';');\r\n const styleToRetain = currentStyleList.filter(x => !x.startsWith(`${property}:`) && !!x).join(';');\r\n this.componentService.setStyleByIndex(this, ind, styleToRetain);\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Container Style\r\n public getContainerStyle(ind: string = \"\"): string {\r\n return this.componentProperties.containerStyle[`style${ind}`] ?? '';\r\n }\r\n\r\n public setContainerStyle(style: string, ind: string = \"\") {\r\n this.componentService.setContainerStyleByIndex(this, ind, style);\r\n }\r\n\r\n public appendContainerStyle(style: string, ind: string = \"\") {\r\n const currentStyle = this.getContainerStyle(ind);\r\n const combinedStyle = (currentStyle.endsWith(';') || !currentStyle ? currentStyle : `${currentStyle};`) + style;\r\n this.componentService.setContainerStyleByIndex(this, ind, combinedStyle);\r\n }\r\n\r\n public removeContainerStyle(style: string, ind: string = \"\") {\r\n const currentStyle = this.getContainerStyle(ind);\r\n this.componentService.setContainerStyleByIndex(this, ind, currentStyle.replaceAll(style, ''));\r\n }\r\n\r\n public removeContainerStyleByProperty(property: string, ind: string = \"\") {\r\n const currentStyle = this.getContainerStyle(ind);\r\n if (currentStyle) {\r\n const currentStyleList = currentStyle.split(';');\r\n const styleToRetain = currentStyleList.filter(x => !x.startsWith(`${property}:`) && !!x).join(';');\r\n this.componentService.setContainerStyleByIndex(this, ind, styleToRetain);\r\n }\r\n }\r\n //#endregion\r\n\r\n public setEnable = (status: boolean) => {\r\n const fc = this.group?.form?.controls[this.data.Value];\r\n const componentTypeNotToDisable = [ComponentType.textarea.toString()];\r\n if (fc && !componentTypeNotToDisable.includes(this.data.Type)) {\r\n status ? fc.enable() : fc.disable();\r\n }\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n\r\n if (this.data.Type === 'ztexteditor') {\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpacesAndHTMLTags);\r\n }\r\n else {\r\n ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpaces);\r\n }\r\n }\r\n\r\n public getFontAwesome(iconName: any, fontAwesomeService: FontAweSomeService) {\r\n const iconNameValue = ZComponentHelper.getGroupValue(iconName, this.group);\r\n if (iconNameValue) {\r\n return ZComponentHelper.getFontAwesome(iconNameValue, fontAwesomeService);\r\n }\r\n return iconName;\r\n }\r\n\r\n public toggleEditMode() {\r\n this.data[`_EditMode`].value = !this.data[`_EditMode`].value;\r\n }\r\n\r\n public setEditMode(isEditable: boolean) {\r\n this.data[`_EditMode`].value = isEditable;\r\n }\r\n\r\n protected triggerEvent(type: string, target: any, event: any, fieldValue?: any) {\r\n if (target) {\r\n this.group.subject.next({\r\n type: type,\r\n target: target,\r\n event,\r\n data: { value: this.getFieldValue(event, fieldValue), field: this.data, comp: this }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n protected getFieldValue(event: any, fieldValue?: any) {\r\n if (fieldValue == null || fieldValue == undefined) {\r\n return event?.value ?? event?.target?.value\r\n }\r\n return fieldValue;\r\n }\r\n}\r\n\r\nexport interface FieldSetupOption {\r\n isRegisterComponent?: boolean;\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ZComponentHelper, ZComponentOutputEvent, ZField } from \"mmhglobal-zcore\";\r\nimport { FieldBase } from \"./fieldbase.component\";\r\n\r\n@Component({\r\n template: ``,\r\n standalone: false\r\n})\r\n\r\n// For: zbuttons, zmfb, zworkflowbuttons\r\nexport class ButtonFieldBase extends FieldBase {\r\n protected buttonList: Array<any> = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public initComponent(): Observable<any> {\r\n return super.initComponent();\r\n }\r\n\r\n public isBtnVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const isVisible = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n return isVisible;\r\n }\r\n\r\n public getButtonLabel(button: any) {\r\n let labelResult = (button.Label ?? button.Name) ?? '';\r\n\r\n let labelExpr = labelResult.match(/^{{.*}}$/gi);\r\n if (labelExpr) {\r\n labelExpr = labelExpr[0].slice(2, -2);\r\n labelResult = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n }\r\n\r\n if (button.Attributes) {\r\n const attributes = JSON.parse(button.Attributes);\r\n if (attributes.Label) {\r\n labelResult = attributes.Label;\r\n }\r\n }\r\n\r\n if (labelResult.startsWith('group.')) {\r\n labelResult = ZComponentHelper.getGroupValue(labelResult, this.group);\r\n }\r\n\r\n return labelResult;\r\n }\r\n\r\n public buttonClick(button: any) {\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: button.ClickEvent,\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public translateButtonsLabel(buttonList: Array<any>): any {\r\n return this.componentService.translateButtonComponent(buttonList, this.group);\r\n }\r\n\r\n public setLabelText(newText: string, name?: string) {\r\n const btn = this.buttonList.find(x => x.name === name);\r\n if (btn) {\r\n btn.text = newText;\r\n }\r\n }\r\n\r\n protected getButtonDisableTriggerValue(data: ZField, button: any): boolean {\r\n return button.DisableTrigger ?? (data.DisableTrigger ?? false);\r\n }\r\n\r\n public disableButton(buttonName: string, isDisabled: boolean = true) {\r\n const selectedButton = this.buttonList.find(x => x.name == buttonName);\r\n if (selectedButton) {\r\n selectedButton.disabled = isDisabled;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { ButtonFieldBase } from '../../base/buttonfieldbase.component';\r\nimport { ComponentType, DataUtils, FieldService, FieldUtils, FontAweSomeService, IconUtils, TriggerFromType, ZComponent, ZComponentOutputEvent, ZField } from 'mmhglobal-zcore';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ZformcontrolComponent } from '../../others/zformcontrol/zformcontrol.component';\r\n\r\n@Component({\r\n selector: 'app-zbuttons',\r\n templateUrl: './zbuttons.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zbuttons.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ZformcontrolComponent],\r\n})\r\nexport class ZbuttonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n public readonly fontAweSomeService: FontAweSomeService\r\n ) { super(); }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n this.loadButton();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private getFieldObByComponentType(): Observable<any> {\r\n if (this.data.Type == ComponentType.a) {\r\n return of([this.data]);\r\n }\r\n\r\n if (this.data.Type == ComponentType.zbuttons_container && Array.isArray(this.data.Value)) {\r\n return of(this.data.Value);\r\n }\r\n\r\n return this.fieldService.getFormFieldCode(this.data.Value, 'FormField');\r\n }\r\n\r\n private loadButton() {\r\n let field$ = this.getFieldObByComponentType();\r\n\r\n try {\r\n field$\r\n .pipe(\r\n tap((data) => {\r\n data.forEach((button: ZField) => {\r\n this.setupButtonAttributes(button);\r\n });\r\n }),\r\n switchMap(() => {\r\n return super.translateButtonsLabel(this.buttonList);\r\n })\r\n )\r\n .subscribe();\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n private setupButtonAttributes(button: ZField) {\r\n if (button.Type !== 'a') return;\r\n\r\n if (this.data.SubType) {\r\n button.Name = `${this.data.SubType}_${button.Name}`;\r\n }\r\n\r\n this.buttonList.push(this.createButtonConfig(button));\r\n }\r\n\r\n private createButtonConfig(button: ZField): ButtonConfig {\r\n return {\r\n name: button.Name,\r\n text: this.getButtonLabel(button),\r\n showLabel: button.ShowLabel ?? true,\r\n style: button.Style,\r\n icon: IconUtils.getIcon(button.Icon as string),\r\n visible: button.Visible,\r\n color: button.Color ?? 'primary',\r\n fill: button['Fill'] ?? 'solid',\r\n size: button.Size || 'medium',\r\n class: button.Class,\r\n disabled: this.getButtonDisabledState(button),\r\n clickEvent: button.ClickEvent,\r\n iconName: button.Icon,\r\n dismissType: button.DismissType,\r\n disableTriggerTimer: button.DisableTriggerTimer,\r\n disableTrigger: this.getButtonDisableTriggerValue(this.data, button),\r\n SubType: this.data.SubType,\r\n Type: button.Type,\r\n buttonData: button,\r\n positionX: button['PositionX'],\r\n eventId: DataUtils.generateTimeStampId(),\r\n } as ButtonConfig;\r\n }\r\n\r\n private getButtonDisabledState(button: ZField): boolean | null {\r\n if (button['Disabled'] === \"\" || !button['Disabled']) {\r\n return null;\r\n }\r\n\r\n return button['Disabled'] === 'true' ? true : FieldUtils.getGroupEvalValue.call(this, button['Disabled']);\r\n }\r\n\r\n buttonClick(item: any) {\r\n this.group.isTriggered = item.disableTrigger != undefined ? !item.disableTrigger : true;\r\n\r\n // If the isTriggered property is true, proceed with the following actions\r\n if (this.group.isTriggered) {\r\n const me = this.group;\r\n\r\n // If the disableTriggerTimer property is not present, set a timeout to reset isTriggered to false after 500ms\r\n if (!item['disableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n }\r\n\r\n const clonedButton = DataUtils.deepClone(item);\r\n item.eventId = DataUtils.generateTimeStampId();\r\n this.group['DismissType'] = item.dismissType;\r\n\r\n const outputEvent = {\r\n type: 'buttonClick',\r\n target: clonedButton.clickEvent,\r\n data: clonedButton,\r\n triggerFrom: TriggerFromType.button,\r\n } as ZComponentOutputEvent;\r\n\r\n this.group['buttonEventDetail'] = {\r\n buttonDetail: outputEvent,\r\n triggerFrom: TriggerFromType.button,\r\n };\r\n\r\n this.group.subject.next(outputEvent);\r\n }\r\n}\r\n\r\n// Aaron: to use the one in zgroup.model.ts\r\ninterface ButtonConfig {\r\n name: string;\r\n text: string;\r\n showLabel: boolean;\r\n style?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n color: string;\r\n fill: string;\r\n size: string;\r\n class?: string;\r\n disabled: boolean;\r\n clickEvent?: string;\r\n iconName?: string;\r\n dismissType?: string;\r\n disableTriggerTimer?: boolean;\r\n disableTrigger: boolean;\r\n SubType?: string;\r\n Type?: string;\r\n buttonData: ZField;\r\n eventId: string;\r\n positionX: string;\r\n}\r\n","<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && buttonList.length > 0\"\r\n [style]=\"componentProperties.style.style\"\r\n [ngClass]=\"data.Class\"\r\n class=\"e1tag-style main-container\">\r\n <ng-container *ngFor=\"let item of buttonList; let i = index\">\r\n <button\r\n [class.right-btn]=\"item.positionX == 'right'\"\r\n kendoButton\r\n [fillMode]=\"item.fill\"\r\n *ngIf=\"item.Type === 'a'\"\r\n [size]=\"item.size\"\r\n [themeColor]=\"item.color\"\r\n strong=\"true\"\r\n [ngClass]=\"item.class\"\r\n (click)=\"buttonClick(item)\"\r\n [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\"\r\n [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n class=\"custom-class e1tag-style5\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\" *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{ item.text }}</span>\r\n </div>\r\n </button>\r\n <app-zformcontrol\r\n *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass : item.Visible === true ? item.DivClass : 'flex-hide'\"\r\n [field]=\"item\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"{{ item.Type }}-{{ item.Name }}\"></app-zformcontrol>\r\n </ng-container>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { FieldBase } from './fieldbase.component';\r\nimport { ZField, FieldUtils } from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n template: ``,\r\n standalone: false\r\n})\r\n\r\n// For: zcard, zdiv, ztab, kcard\r\nexport class ContainerFieldBase extends FieldBase {\r\n public toolbarItemList = [\r\n { name: 'Edit', text: 'Edit' },\r\n { name: 'Save', text: 'Save' },\r\n { name: 'Cancel', text: 'Cancel' },\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n // get from ztab, zcard, zdiv\r\n public ComponentIsVisible(field: ZField): any {\r\n return FieldUtils.isComponentInstanceVisible(field, this.group);\r\n }\r\n\r\n public initComponent(): Observable<any> {\r\n return super.initComponent();\r\n }\r\n\r\n public translateToolBarItems(): Observable<any> {\r\n return this.componentService.translateToolBarItems(this.toolbarItemList, this.group);\r\n }\r\n\r\n public getToolBarItemLabelName(name: string) {\r\n return this.toolbarItemList.find(t => t.name === name)?.text || name;\r\n }\r\n\r\n public getClass(form: any, data: ZField) {\r\n return `${data.DivClass} ${data.Class}`;\r\n }\r\n\r\n public onClick(event: any, fieldValue?: any) {\r\n this.triggerEvent('inputfield-onClick', this.data.OnClick, event, fieldValue);\r\n }\r\n\r\n\r\n public OnCollapse(event: any, fieldValue?: any) {\r\n this.triggerEvent('container-OnCollapse', this.data.OnCollapse, event, fieldValue);\r\n }\r\n}\r\n","import { Component, Input, OnInit, QueryList, ViewChildren } from \"@angular/core\";\r\nimport { first, tap } from \"rxjs\";\r\nimport { HierarchyBindingDirective, ContextMenuComponent as KendoContextMenuComponent } from \"@progress/kendo-angular-menu\";\r\nimport { ContextMenuItem, ContextMenuSetting, FontAweSomeService, TranslationService, ZComponent, ZComponentHelper, ZComponentOutputEvent } from 'mmhglobal-zcore';\r\n\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\n\r\n@Component({\r\n selector: \"app-context-menu\",\r\n templateUrl: \"./context-menu.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./context-menu.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, KendoContextMenuComponent, HierarchyBindingDirective, FontAwesomeModule]\r\n})\r\n\r\nexport class ContextMenuComponent extends FieldBase implements ZComponent, OnInit {\r\n @Input() target;\r\n @Input() selectedData;\r\n @ViewChildren(\"contextMenu\") public contextMenuList: QueryList<KendoContextMenuComponent>;\r\n public contextMenuSettings: Array<ContextMenuSetting>;\r\n public isLoading: boolean;\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly translationService: TranslationService,\r\n // private readonly uiSignalService: UISignalService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n this.setupContextMenuItem();\r\n if (this.contextMenuSettings) {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n public setupContextMenuItem() {\r\n this.contextMenuSettings = this.data.ContextMenuSettings;\r\n if (!this.contextMenuSettings) {\r\n return false;\r\n }\r\n\r\n if (typeof this.contextMenuSettings == 'string' && (this.contextMenuSettings as string).startsWith('group.')) {\r\n this.contextMenuSettings = ZComponentHelper.getGroupValue(this.contextMenuSettings, this.group);\r\n }\r\n\r\n if (!this.contextMenuSettings || !Array.isArray(this.contextMenuSettings)) {\r\n this.contextMenuSettings = null;\r\n console.warn('ContextMenuComponent: Invalid ContextMenuSettings.');\r\n return;\r\n }\r\n\r\n for (const menuSetting of this.contextMenuSettings) {\r\n this.translateContextMenuItems(menuSetting.ContextMenuItems);\r\n }\r\n }\r\n\r\n public onSelect(event, targetContextMenuSetting: ContextMenuSetting) {\r\n if (targetContextMenuSetting.OnClick) {\r\n const inputData = Object.assign(event.item.data, {\r\n z_selecteddata: this.selectedData ?? event.item.data.z_selecteddata,\r\n z_component: this\r\n });\r\n\r\n this.group.subject.next({\r\n type: \"buttonClick\",\r\n target: targetContextMenuSetting.OnClick,\r\n data: inputData\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public showContextMenuManually(callerEvent: any, selectedData?: any): void {\r\n this.setupContextMenuItem();\r\n if (this.contextMenuSettings && this.contextMenuList && this.contextMenuList.length > 0) {\r\n const originalEvent = callerEvent.originalEvent;\r\n originalEvent.preventDefault();\r\n\r\n const contextMenu = this.contextMenuList.first;\r\n contextMenu.show({\r\n left: originalEvent.pageX,\r\n top: originalEvent.pageY,\r\n });\r\n\r\n if (selectedData) {\r\n for (const item of contextMenu.items) {\r\n Object.assign(item.data, { 'z_selecteddata': selectedData });\r\n }\r\n }\r\n\r\n this.popUpOpened(contextMenu);\r\n }\r\n }\r\n\r\n public popUpOpened(contextMenu: KendoContextMenuComponent) {\r\n // this.uiSignalService.subscribeToEvent(SignalType.PageScrollStart).pipe(\r\n // first(),\r\n // tap(() => {\r\n // this.closeContextMenuManually(contextMenu);\r\n // })\r\n // ).subscribe();\r\n }\r\n\r\n public closeContextMenuManually(contextMenu: KendoContextMenuComponent): void {\r\n if (contextMenu) {\r\n contextMenu.hide();\r\n }\r\n }\r\n\r\n private translateContextMenuItems(items: Array<ContextMenuItem>) {\r\n for (const item of items) {\r\n if (item.Text) {\r\n this.translationService.$translateText(item.Text, { elementName: this.group.fieldName }).subscribe(translatedText => {\r\n item['TranslatedText'] = translatedText;\r\n });\r\n }\r\n\r\n if (item.Value && item.Value.length > 0) {\r\n this.translateContextMenuItems(item.Value);\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"context-menu-container\" *ngIf=\"target && !isLoading\">\r\n <kendo-contextmenu\r\n #contextMenu\r\n class=\"context-menu-item\"\r\n *ngFor=\"let targetContextMenuSetting of contextMenuSettings\"\r\n [target]=\"target\"\r\n [size]=\"targetContextMenuSetting.Size ?? 'medium'\"\r\n [kendoMenuHierarchyBinding]=\"targetContextMenuSetting.ContextMenuItems\"\r\n childrenField=\"Value\"\r\n separatorField=\"IsSeparator\"\r\n (select)=\"onSelect($event, targetContextMenuSetting)\"\r\n [filter]=\"targetContextMenuSetting.CSSSelectorFilter\"\r\n (popupOpen)=\"popUpOpened(contextMenu)\">\r\n <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n <div class=\"context-menu-item-container\" [class.has-icon]=\"item.data.Icon\" [ngClass]=\"item.data.Class\" *ngIf=\"!item.data.IsSeparator\">\r\n <fa-icon class=\"context-menu-item-icon\" [icon]=\"getFontAwesome(item.data.Icon, fontAweSomeService)\" *ngIf=\"item.data.Icon\"></fa-icon>\r\n <div class=\"context-menu-item-text\" *ngIf=\"item.data.Text\">\r\n {{ item.data.TranslatedText ?? item.data.Text }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-contextmenu>\r\n</div>\r\n\r\n<!-- Manual trigger from zgrid, ztree -->\r\n<div class=\"context-menu-container-manual-trigger-mode\" *ngIf=\"!target && !isLoading\">\r\n <kendo-contextmenu\r\n #contextMenu\r\n class=\"context-menu-item\"\r\n *ngFor=\"let targetContextMenuSetting of contextMenuSettings\"\r\n [size]=\"targetContextMenuSetting.Size ?? 'medium'\"\r\n [kendoMenuHierarchyBinding]=\"targetContextMenuSetting.ContextMenuItems\"\r\n childrenField=\"Value\"\r\n separatorField=\"IsSeparator\"\r\n (select)=\"onSelect($event, targetContextMenuSetting)\"\r\n [filter]=\"targetContextMenuSetting.CSSSelectorFilter\">\r\n <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n <div class=\"context-menu-item-container\" [class.has-icon]=\"item.data.Icon\" [ngClass]=\"item.data.Class\" *ngIf=\"!item.data.IsSeparator\">\r\n <fa-icon class=\"context-menu-item-icon\" [icon]=\"getFontAwesome(item.data.Icon, fontAweSomeService)\" *ngIf=\"item.data.Icon\"></fa-icon>\r\n <div class=\"context-menu-item-text\" *ngIf=\"item.data.Text\">\r\n {{ item.data.TranslatedText ?? item.data.Text }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-contextmenu>\r\n</div>\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { ComponentType, ComponentUtils, ZComponent, ZComponentProperties, ZField } from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ZformcontrolComponent } from \"../../others/zformcontrol/zformcontrol.component\";\r\nimport { ContextMenuComponent } from \"../../menu/context-menu/context-menu.component\";\r\n\r\n@Component({\r\n selector: 'app-zdiv',\r\n templateUrl: './zdiv.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zdiv.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, ZformcontrolComponent, ContextMenuComponent]\r\n})\r\n\r\nexport class ZdivComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n @Input() childFields: Array<ZField>;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.childFields ??= this.data.Value;\r\n\r\n if (this.data.Type === ComponentType.zdiv) {\r\n super.initComponent().subscribe(() => {\r\n this.componentService.setEditMode(this);\r\n });\r\n }\r\n else {\r\n this.componentProperties = this.componentProperties || new ZComponentProperties();\r\n ComponentUtils.setComponentProperties(this);\r\n this.componentService.setCompStylesByIndex(this);\r\n this.componentService.setEditMode(this);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n}\r\n\r\n","<div\r\n *ngIf=\"!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible\"\r\n [style]=\"componentProperties.style.style\"\r\n class=\"e1tag-style div-component\"\r\n [ngClass]=\"data.Class\"\r\n (click)=\"onClick($event)\"\r\n #zdiv>\r\n <app-zformcontrol\r\n [ngClass]=\"group[field['isVisibleField']] ? field.DivClass : field.Visible === true ? field.DivClass : 'flex-hide'\"\r\n class=\"e1tag-style1\"\r\n [style]=\"componentProperties.style.style1\"\r\n *ngFor=\"let field of childFields\"\r\n [field]=\"field\"\r\n [containerField]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"{{ field.Type }}-{{ field.Name }}\"></app-zformcontrol>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zdiv\"></app-context-menu>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ZdivComponent } from \"../zdiv/zdiv.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { LayoutModule } from \"@progress/kendo-angular-layout\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { ZComponent, ZComponentHelper} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n selector: \"app-zcard\",\r\n templateUrl: \"./zcard.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zcard.component.scss\"],\r\n standalone: true,\r\n imports: [LayoutModule, LabelModule,FontAwesomeModule, ZdivComponent,CommonModule]\r\n})\r\n\r\nexport class ZcardComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.componentProperties.title = this.data.Title.startsWith(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(this, this.data.Title) : this.data.Title; }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\" [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <kendo-panelbar class=\"zcard e1tag-container-style1\" keepItemContent=\"true\" [style]=\"componentProperties.containerStyle.style1\" [class]=\"data.ComponentStyleType\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <kendo-panelbar-item [expanded]=\"!data.DefaultCollapse\" [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\"\r\n [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n <fa-icon [icon]=\"componentProperties.icon || 'folder'\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <kendo-label class=\"zcard-header-title e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\">{{componentProperties.title}}</kendo-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent>\r\n <app-zdiv class=\"e1tag-container-style5\" [style]=\"componentProperties.containerStyle.style5\" [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar>\r\n</div>\r\n","import { Component, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { isObservable, map, Observable, of } from 'rxjs';\r\nimport { PopoverContainerDirective, TooltipDirective } from '@progress/kendo-angular-tooltip';\r\nimport { FieldBase } from './fieldbase.component';\r\nimport { FieldUtils, ZField } from 'mmhglobal-zcore';\r\nimport { RowClassArgs } from '@progress/kendo-angular-grid';\r\nimport { ContextMenuComponent } from '../menu/context-menu/context-menu.component';\r\n\r\n@Component({\r\n template: ``,\r\n standalone: false\r\n})\r\n\r\n// For: zgrid, ztree, ztreelist, zganttchart\r\nexport class DataListingFieldBase extends FieldBase {\r\n @Output() showFormPage = new EventEmitter<boolean>();\r\n @ViewChild('popovercontainer', { static: false }) private readonly popovercontainer: PopoverContainerDirective;\r\n @ViewChild('dataitemcontextmenu') dataItemContextMenu: ContextMenuComponent;\r\n @ViewChild(TooltipDirective) public tooltipDir: TooltipDirective;\r\n\r\n protected popoverData = [];\r\n public toolbarItemList = [\r\n { name: 'Search', text: 'Search' },\r\n { name: 'Save Settings', text: 'Save Settings' },\r\n { name: 'Restore Settings', text: 'Restore Settings' },\r\n { name: 'Add New', text: 'Add New' },\r\n { name: 'Advanced Search', text: 'Advanced Search' },\r\n ];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public initComponent(): Observable<any> {\r\n return super.initComponent();\r\n }\r\n\r\n public getGridColumnStyle() {\r\n return this.componentProperties.style.style3 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style3) : {}\r\n }\r\n\r\n public getGridHeaderStyle() {\r\n return this.componentProperties.style.style4 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style4) : {}\r\n }\r\n\r\n public getGridFooterStyle() {\r\n return this.componentProperties.style.style9 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style9) : {}\r\n }\r\n\r\n public getCellStyle(columnField: ZField, dataItem: any): any {\r\n const style = columnField[`Style10`];\r\n const func = FieldUtils.getGroupEvalValue.call(this, style);\r\n\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n return callFunc(dataItem, columnField);\r\n }\r\n\r\n if (typeof func === 'string') {\r\n return func;\r\n }\r\n\r\n return style;\r\n }\r\n\r\n public cellStyleCondition(col: any, colValue: any) {\r\n if (!col['CellStyleCondition']) {\r\n return false;\r\n }\r\n\r\n const conditionHighlightcol: [] = col['CellStyleCondition'];\r\n let conditionResult = false;\r\n\r\n conditionHighlightcol.forEach(data => {\r\n if (!conditionResult) {\r\n if (data['Value'] == colValue) {\r\n conditionResult = true;\r\n }\r\n }\r\n });\r\n\r\n return conditionResult;\r\n }\r\n\r\n\r\n public setCellStyleCondition(col: any, colValue: any): string | false {\r\n if (!col['CellStyleCondition']) {\r\n return false;\r\n }\r\n\r\n const conditions: [] = col['CellStyleCondition'];\r\n const matchingCondition = conditions.find(data => data['Value'] === colValue);\r\n\r\n if (!matchingCondition) {\r\n return false;\r\n }\r\n\r\n const styles: string[] = [];\r\n\r\n if (matchingCondition['BackgroundColor']) {\r\n styles.push(`background-color:${matchingCondition['BackgroundColor']}`);\r\n }\r\n\r\n if (matchingCondition['Color']) {\r\n styles.push(`color:${matchingCondition['Color']}`);\r\n }\r\n\r\n if (matchingCondition['StyleExpression']) {\r\n styles.push(matchingCondition['StyleExpression']);\r\n }\r\n\r\n return styles.length ? styles.join(';') + ';' : false;\r\n }\r\n\r\n public translateToolBarItems(): Observable<any> {\r\n return this.componentService.translateToolBarItems(this.toolbarItemList, this.group);\r\n }\r\n\r\n public getToolBarItemLabelName(name: string) {\r\n return this.toolbarItemList.find(t => t.name === name)?.text || name;\r\n }\r\n\r\n public translateColumnHeader(columns: any[]): Observable<any> {\r\n return this.componentService.translateGridColumnHeader(columns, this.group);\r\n }\r\n\r\n public rowCallback(context: RowClassArgs): string {\r\n if (this.data.DataRowClass && typeof this.data.DataRowClass == 'string' && this.data.DataRowClass.startsWith('group.')) {\r\n const func = FieldUtils.getGroupValue(this.data.DataRowClass, this.group);\r\n\r\n if (typeof func === 'function') {\r\n return func(context);\r\n }\r\n }\r\n\r\n return context.index % 2 === 1 ? 'k-alt' : '';\r\n }\r\n\r\n //#region Popover\r\n public setupPopoverFeature(columns: Array<any>, gridData: Array<any>) {\r\n const popoverCols = columns.filter(c => c.PopOverContent);\r\n if (popoverCols.length > 0 && gridData.length > 0) {\r\n\r\n for (const data of gridData) {\r\n this.popoverData.push(\r\n {\r\n id: data.Id,\r\n popoverContent: this.getPopOverContentByCol(popoverCols, data)\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public showPopOver(columnField: ZField, event: any): void {\r\n if (!columnField.PopOverContent || !this.popovercontainer) {\r\n this.popovercontainer.hide();\r\n return;\r\n }\r\n\r\n const element = event.target as HTMLElement;\r\n this.popovercontainer.hide();\r\n if (element.nodeName === 'DIV' || element.nodeName === 'SPAN') {\r\n this.popovercontainer.show(element);\r\n }\r\n }\r\n\r\n public closePopOver(event: any): void {\r\n if (event?.toElement && event.toElement.nodeName == 'DIV' && (event.toElement.parentElement.nodeName == 'TD' || (event.toElement.parentElement.nodeName == 'DIV' && event.toElement.parentElement.className.includes('k-popover-body')))) {\r\n return;\r\n }\r\n this.popovercontainer.hide();\r\n }\r\n\r\n public getContextData(anchor: HTMLElement) {\r\n if (anchor.attributes['data-id']?.value && anchor.attributes['column-name']?.value) {\r\n const recordId = anchor.attributes['data-id'].value;\r\n const columnName = anchor.attributes['column-name'].value;\r\n const popoverAllColData = this.popoverData.find(d => d.id == recordId);\r\n const popoverColData = popoverAllColData?.popoverContent?.find(d => d.columnName == columnName);\r\n return JSON.parse(popoverColData.content)\r\n }\r\n }\r\n\r\n private getPopOverContentByCol(columns: Array<any>, data: any): Array<any> {\r\n const popOverContent = [];\r\n for (const col of columns) {\r\n this.getPopOverContent(col, data).subscribe(content => {\r\n popOverContent.push({\r\n columnName: col.field,\r\n content: content\r\n });\r\n })\r\n }\r\n\r\n return popOverContent;\r\n }\r\n\r\n private getPopOverContent(columnField: ZField, dataItem: any): Observable<string> {\r\n const content = columnField.PopOverContent;\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n const func = FieldUtils.getGroupEvalValue.call(this, content);\r\n\r\n let result = func;\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n result = callFunc(columnField, dataItem);\r\n\r\n if (isObservable(result)) {\r\n return result.pipe(map(data => this.parsePopoverObject(data)));\r\n }\r\n else {\r\n return of(this.parsePopoverObject(result));\r\n }\r\n }\r\n }\r\n\r\n private parsePopoverObject(result): string {\r\n if (typeof result === 'object') {\r\n return JSON.stringify(result);\r\n }\r\n else {\r\n return JSON.stringify(\r\n {\r\n Body: result ?? '',\r\n }\r\n );\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Tooltip\r\n public showTooltip(e: MouseEvent): void {\r\n if (!this.data.IsShowToolTip) return; // Exit if tooltips are disabled\r\n\r\n const element = e.target as HTMLElement; // Get the element that triggered the event\r\n if (this.isCommandColumn(element)) {\r\n this.tooltipDir.hide();\r\n return;\r\n }\r\n\r\n const targetCell = this.getTargetCell(element); // Check if it's a command column (buttons, actions, etc.)\r\n if (!targetCell?.textContent?.trim()) {\r\n this.tooltipDir.hide();\r\n return;\r\n }\r\n\r\n const visibleWidth = this.calculateVisibleWidth(targetCell);\r\n const finalWidth = this.calculateTooltipWidth(targetCell, visibleWidth);\r\n\r\n // Show tooltip only if text is truncated within cell\r\n if (targetCell.offsetWidth < targetCell.scrollWidth) {\r\n this.tooltipDir.tooltipWidth = finalWidth;\r\n this.tooltipDir.toggle(targetCell);\r\n } else {\r\n this.tooltipDir.hide();\r\n }\r\n }\r\n\r\n // Helper function to check if it's a command column\r\n private isCommandColumn(element: HTMLElement): boolean {\r\n return element.classList.contains('k-command-cell');\r\n }\r\n\r\n // Helper function to determine the target cell\r\n private getTargetCell(element: HTMLElement): HTMLElement | null {\r\n if (element.nodeName === 'TD' || element.nodeName === 'TH') {\r\n return element;\r\n } else if (element.nodeName === 'SPAN' && element.classList.contains('grid-cell-data')) {\r\n return element.parentElement;\r\n }\r\n return null;\r\n }\r\n\r\n // Helper function to calculate the visible width of the cell within the grid container\r\n private calculateVisibleWidth(targetCell: HTMLElement): number {\r\n const cellRect = targetCell.getBoundingClientRect();\r\n const gridContainer = document.querySelector('.k-grid');\r\n if (!gridContainer) {\r\n console.warn('Grid container not found.');\r\n return 0;\r\n }\r\n const gridRect = gridContainer.getBoundingClientRect();\r\n\r\n const visibleLeft = Math.max(cellRect.left, gridRect.left);\r\n const visibleRight = Math.min(cellRect.right, gridRect.right);\r\n return Math.max(0, visibleRight - visibleLeft);\r\n }\r\n\r\n // Helper function to calculate the tooltip width based on visible width and column size\r\n private calculateTooltipWidth(targetCell: HTMLElement, visibleWidth: number): number {\r\n const maxWidth = window.innerWidth / 2;\r\n\r\n // Use characters width if the visible width is too small (less than 100px)\r\n let columnWidth = targetCell.offsetWidth;\r\n if (columnWidth < 100) {\r\n const tooltipText = targetCell.innerText || targetCell.textContent || '';\r\n const charWidth = 9; // Average width of a character\r\n columnWidth = tooltipText.length * charWidth;\r\n }\r\n\r\n // If visible width is too small, use the full column width\r\n if (visibleWidth < 100) {\r\n visibleWidth = columnWidth;\r\n }\r\n\r\n return Math.min(maxWidth, visibleWidth);\r\n }\r\n //#endregion\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { groupBy, GroupResult } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from \"../../base/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\nimport { FieldUtils, ZComponent, ZField } from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { ChartModule } from \"@progress/kendo-angular-charts\";\r\nimport { EditorModule } from '@progress/kendo-angular-editor';\r\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: 'app-zchart',\r\n templateUrl: './zchart.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zchart.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ChartModule, EditorModule]\r\n})\r\n\r\nexport class ZchartComponent extends DataListingFieldBase implements ZComponent, OnInit {\r\n private series: any[] = [];\r\n \r\n private categories = [];\r\n \r\n public options = {\r\n title: '',\r\n renderAs: 'canvas', // svg\r\n pannable: false,\r\n zoomable: false,\r\n categoryAxis: {\r\n categories: this.categories,\r\n max: 10,\r\n maxDivisions: null,\r\n labels: { rotation: 'auto' }\r\n },\r\n labels: {\r\n visible: false,\r\n background: \"transparent\"\r\n },\r\n series: this.series,\r\n dataType: 'bar',\r\n dataStyle: 'smooth',\r\n legendPosition: 'bottom',\r\n legendOrientation: 'horizontal',\r\n tooltipFormat: '{0}%',\r\n aggregateType: 'sum',\r\n dataField: null,\r\n categoryField: null,\r\n color: '#05A2FE',\r\n onRender: '',\r\n onAxisLabelClick: '',\r\n onLegendItemClick: '',\r\n onLegendItemHover: '',\r\n onPlotAreaClick: '',\r\n onPlotAreaHover: '',\r\n onSeriesClick: '',\r\n onSeriesHover: '',\r\n customTooltipFunc: '',\r\n customTooltipOptions: { background: '#05A2FE' }\r\n };\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = FieldUtils.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n if (this.data.Options && this.data.Options.categoryAxis && this.data.Options.categoryAxis.categories && typeof (this.data.Options.categoryAxis.categories) === 'string') {\r\n this.options.categoryAxis.categories =\r\n FieldUtils.getGroupEvalValue.call(this, this.data.Options.categoryAxis.categories);\r\n }\r\n\r\n if (this.data.Options && this.data.Options.series && typeof (this.data.Options.series) === 'string') {\r\n this.options.series =\r\n FieldUtils.getGroupEvalValue.call(this, this.data.Options.series);\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data);\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField) {\r\n this.options.title = field.Title || this.options.title;\r\n this.options.renderAs = field.RenderAs || this.options.renderAs;\r\n this.options.pannable = field.Pannable || this.options.pannable;\r\n this.options.zoomable = field.Zoomable || this.options.zoomable;\r\n this.options.categoryAxis.categories = FieldUtils.getGroupEvalValue.call(this, field.Categories) || [];\r\n this.options.categoryAxis.max = field.Max || this.options.categoryAxis.max;\r\n this.options.categoryAxis.maxDivisions = field.MaxDivisions || this.options.categoryAxis.maxDivisions;\r\n this.options.categoryAxis.labels.rotation = field.Rotation || this.options.categoryAxis.labels.rotation;\r\n this.options.series = FieldUtils.getGroupEvalValue.call(this, field.Series) || [];\r\n this.options.dataType = field.DataType || this.options.dataType;\r\n this.options.dataStyle = field.DataStyle || this.options.dataStyle;\r\n this.options.legendPosition = field.LegendPosition || this.options.legendPosition;\r\n this.options.legendOrientation = field.LegendOrientation || this.options.legendOrientation;\r\n this.options.tooltipFormat = field.TooltipFormat || this.options.tooltipFormat;\r\n this.options.aggregateType = field.AggregateType || this.options.aggregateType;\r\n this.options.dataField = field.DataField || this.options.dataField;\r\n this.options.categoryField = field.CategoryField || this.options.categoryField;\r\n this.options.customTooltipFunc = field[`CustomTooltipFunc`] || this.options.customTooltipFunc;\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.getFieldDeclarationForSetup(this.data);\r\n }\r\n\r\n public onRender(e): void {\r\n this.callComponentEvent(e, this.options.onRender);\r\n }\r\n\r\n public onAxisLabelClick(e): void {\r\n this.callComponentEvent(e, this.options.onAxisLabelClick);\r\n }\r\n\r\n public onLegendItemClick(e): void {\r\n this.callComponentEvent(e, this.options.onLegendItemClick);\r\n }\r\n\r\n public onLegendItemHover(e): void {\r\n this.callComponentEvent(e, this.options.onLegendItemHover);\r\n }\r\n\r\n public onPlotAreaClick(e): void {\r\n this.callComponentEvent(e, this.options.onPlotAreaClick);\r\n }\r\n\r\n public onPlotAreaHover(e): void {\r\n this.callComponentEvent(e, this.options.onPlotAreaHover);\r\n }\r\n\r\n public onSeriesClick(e): void {\r\n console.log('seriesClick', e);\r\n const f = FieldUtils.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc(e);\r\n }\r\n return;\r\n }\r\n\r\n public onSeriesHover(e): void {\r\n this.callComponentEvent(e, this.options.onSeriesHover);\r\n }\r\n\r\n private callComponentEvent(e, event: any): any {\r\n if (typeof event === 'function') {\r\n const callFunc = event.bind(this.group.ctrlScope);\r\n return callFunc(e);\r\n }\r\n\r\n const f = FieldUtils.getGroupEvalValue.call(this, event);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc(e);\r\n }\r\n }\r\n \r\n public getToolTip(value: any, category: any): SafeHtml {\r\n const rawHtml = this.callComponentEvent({ value, category }, this.options.customTooltipFunc);\r\n return this.sanitizer.bypassSecurityTrustHtml(rawHtml);\r\n }\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n [categoryAxis]=\"options.categoryAxis\"\r\n (render)=\"onRender($event)\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type || options.dataType\" [style]=\"item.style || options.dataStyle\"\r\n [color]=\"item.color || options.color\"\r\n [labels]=\"item.labels || options.labels\"\r\n [field]=\"options.dataField\" [categoryField]=\"options.categoryField\"\r\n [data]=\"item.data\" [name]=\"item.name\">\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\">\r\n <div [innerHTML]=\"getToolTip(value, category)\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n </kendo-chart>\r\n</div>\r\n","import { Component, EventEmitter, Output } from \"@angular/core\";\r\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { interval, of, switchMap, takeWhile, tap } from \"rxjs\";\r\nimport { FieldBase } from \"./fieldbase.component\";\r\nimport { ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n template: ``,\r\n standalone: false\r\n})\r\n\r\n// For: zcheckbox, zchip, zdatetime, zimg, zinput-container, zlabel, znumeric, zpostselectinput, zselectmultiple, ztext, ztextarea, zupload\r\nexport class InputFieldBase extends FieldBase {\r\n @Output('triggerContainerEvent') triggerContainerEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public onClick(event: any, fieldValue?: any) {\r\n this.triggerEvent(\"inputfield-onClick\", this.data.OnClick, event, fieldValue || event['OnClick']);\r\n }\r\n\r\n public onChangeCC(event: any, fieldValue?: any) {\r\n ZComponentHelper.setModelValue(this.data.CCValue, this.getFieldValue(event, fieldValue), this.group);\r\n this.triggerEvent(\"inputfield-onChangeCC\", this.data.CCOnChange, event, fieldValue);\r\n }\r\n\r\n public onChange(event: any, fieldValue?: any) {\r\n if (this.data.SubType && this.data.SubType === 'zudf') {\r\n this.handleZudfChange(event, fieldValue);\r\n } else {\r\n ZComponentHelper.setComponentModelValue(this.data, this.getFieldValue(event, fieldValue), this.group);\r\n this.triggerEvent(\"inputfield-onChange\", this.data.OnChange, event, fieldValue);\r\n }\r\n }\r\n\r\n public onItemClick(event: any, fieldValue?: any) {\r\n this.triggerEvent(\"inputfield-onItemClick\", this.data.OnItemClick, event, fieldValue);\r\n }\r\n\r\n public onIconClick(clickActionExpr: string) {\r\n this.triggerEvent(\"inputfield-onIconClick\", clickActionExpr, null, this.group.zModel[this.data.Value]);\r\n }\r\n\r\n public getReadOnlyValue() {\r\n const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n if (typeof readOnlyValue === 'function') {\r\n const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n }\r\n return readOnlyValue;\r\n }\r\n\r\n public getIsRequiredValue() {\r\n const IsRequiredValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.IsRequired);\r\n if (typeof IsRequiredValue === 'function') {\r\n const callFunc = IsRequiredValue.bind(this.group.ctrlScope);\r\n return callFunc(this.group);\r\n\r\n }\r\n return IsRequiredValue;\r\n }\r\n\r\n public setValue(value: string) {\r\n ZComponentHelper.setComponentModelValue(this.data, value, this.group);\r\n }\r\n\r\n public setAddOnValue(addOns?: any) {\r\n this.triggerContainerEvent.emit({ type: 'setAddOnValue', data: addOns });\r\n }\r\n\r\n public setMinValue(newValue: number) {\r\n this.triggerContainerEvent.emit({ type: 'setMinValue', newValue: newValue });\r\n }\r\n\r\n public setMaxValue(newValue: number) {\r\n this.triggerContainerEvent.emit({ type: 'setMaxValue', newValue: newValue });\r\n }\r\n\r\n private handleZudfChange(event: any, fieldValue?: any) {\r\n const zudfFieldValue = this.getFieldValue(event, fieldValue);\r\n const zudfScope = ZComponentHelper.getZudfScope(this.group, this.data.Value);\r\n\r\n if (!zudfScope) {\r\n console.log('zudf scope is null for field onchange.');\r\n }\r\n\r\n zudfScope.zModel[this.data.Value] = zudfFieldValue;\r\n of({}).pipe(\r\n tap(res => {\r\n if (zudfScope.linkedComponent) {\r\n this.cascadingHandling(zudfScope, this.data.Value, fieldValue);\r\n }\r\n }),\r\n tap(res => {\r\n if (this.data['AutoPopulateChildFieldValue']) {\r\n // ZUDF. Auto Populate child field value\r\n const childFields = this.data['ChildFields'];\r\n if (childFields) {\r\n let selectedDataOption = null;\r\n if (fieldValue) {\r\n // get the selected data full info\r\n const dataOption = this.group.zData[this.data['ZDataOptionName']];\r\n\r\n if (dataOption) {\r\n dataOption.forEach(option => {\r\n if (option.Id === fieldValue) {\r\n selectedDataOption = Object.assign({}, option);\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // set to all related zMode of the dropdown\r\n let fg: UntypedFormGroup = zudfScope.form as UntypedFormGroup;\r\n childFields.forEach(childField => {\r\n // remove symbol.\r\n let childFieldName = encodeURI(childField.replace(/[^a-z0-9]/gi, \"\"));\r\n const fieldModelName = this.data.Name + childFieldName;\r\n const zModels = zudfScope.zModel;\r\n\r\n const childComponent = ZComponentHelper.getComponent(this.group, 'text_' + fieldModelName);\r\n if (childComponent['data']['ReadOnly'] && !fieldValue) {\r\n // clear child field if only readonly is true.\r\n zModels[fieldModelName] = !fieldValue ? null : selectedDataOption ? selectedDataOption[childFieldName] : null;\r\n }\r\n else {\r\n if (selectedDataOption) {\r\n zModels[fieldModelName] = selectedDataOption[childFieldName];\r\n }\r\n }\r\n fg.patchValue(zModels);\r\n });\r\n }\r\n }\r\n }),\r\n switchMap(res => {\r\n const eventName = 'triggerValidation';\r\n if (this.group) {\r\n if (this.group[eventName]) {\r\n return this.group[eventName](this.group, event, fieldValue);\r\n }\r\n }\r\n return of({});\r\n })\r\n ).subscribe(res => {\r\n this.triggerEvent(\"inputfield-onChange\", this.data.OnChange, event, fieldValue);\r\n });\r\n }\r\n\r\n private cascadingHandling(zudfScope: any, fieldName: any, fieldValue?: any) {\r\n const linkedComponentScope = zudfScope.linkedComponent;\r\n // #1 check is the onchange component linked to other component.\r\n // #2 if linked to other component(lets call it child component),\r\n // base on the linkedComponentScope value, find the child component.\r\n // #3 keep the original SelectOptions in the component.\r\n // #4 clear the child zmodel and filter the child component options.\r\n // #5 auto select default zmodel if only have 1 option and is required.\r\n // #6 handle child nested linked component.\r\n linkedComponentScope.forEach(item => {\r\n const dataValueSegments = fieldName.split('_');\r\n const linkedComponentSegments = item.linkedComponent.split('_');\r\n let isLinkedComponent = false;\r\n\r\n // check is it linkedcomponent\r\n if (linkedComponentSegments.length > 1 && dataValueSegments.length > 3) {\r\n const lastTwoSegments = dataValueSegments.slice(-2).join('_');\r\n if (linkedComponentSegments.join('_') === lastTwoSegments) {\r\n isLinkedComponent = true;\r\n }\r\n }\r\n else if (linkedComponentSegments.length === 1) {\r\n const lastSegment = dataValueSegments[dataValueSegments.length - 1];\r\n if (linkedComponentSegments[0] === lastSegment) {\r\n isLinkedComponent = true;\r\n }\r\n }\r\n\r\n if (isLinkedComponent) {\r\n const childComponent = ZComponentHelper.getComponentByValue(this.group, item.value);\r\n const originalSelectOptions = childComponent.data['originalSelectOptions'] ?? Object.assign([], childComponent.data.SelectOptions);\r\n const filteredSelectionOptions = originalSelectOptions.filter(option => option.parentExpression == fieldValue);\r\n\r\n //childComponent.clearData(); //unable to use clearData. not handled for zudf type\r\n // manuall patch the component formcontrol value\r\n const zudfForm = zudfScope.form as UntypedFormGroup;\r\n const componentFormControl = zudfForm.controls[item.value] as UntypedFormControl;\r\n zudfScope.zModel[item.value] = null;\r\n componentFormControl.patchValue(zudfScope.zModel[item.value]);\r\n\r\n childComponent.data['originalSelectOptions'] = originalSelectOptions;\r\n childComponent.setSelectOption(filteredSelectionOptions);\r\n\r\n // set dropdown selected value if only 1 option.\r\n const childComponentType = childComponent.data.Type;\r\n if (filteredSelectionOptions.length === 1 && childComponent.data.IsRequired && (childComponentType === 'zuiselectmultiple' || childComponentType === 'zselectmultiple')) {\r\n zudfScope.zModel[item.value] = filteredSelectionOptions[0][childComponent.itemValueField];\r\n componentFormControl.patchValue(zudfScope.zModel[item.value]);\r\n }\r\n\r\n // loop children incase of nested child.\r\n const childComponentValueSegments = childComponent.data.Value.split('_');\r\n this.cascadingHandling(zudfScope, childComponentValueSegments[childComponentValueSegments.length - 1], zudfScope.zModel[item.value]);\r\n }\r\n })\r\n }\r\n\r\n protected focusOnDefault(focusFunction: any) {\r\n if (this.data.IsFocus) {\r\n let counter = 0;\r\n let isFocused = false;\r\n interval(500).pipe(\r\n takeWhile(x => counter < 5 && !isFocused),\r\n tap(() => {\r\n isFocused = focusFunction();\r\n counter++;\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { SwitchComponent, SwitchModule } from \"@progress/kendo-angular-inputs\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ZComponent } from \"mmhglobal-zcore\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n\r\n@Component({\r\n selector: \"app-zcheckbox\",\r\n templateUrl: \"./zcheckbox.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zcheckbox.component.scss\"],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, SwitchModule, CommonModule]\r\n})\r\n\r\nexport class ZcheckboxComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(\"checkbox\") checkbox: SwitchComponent;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public focus() {\r\n if (this.checkbox) {\r\n this.checkbox.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zcheckbox-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <!--Need to upgrade to latest kendo lib for the checkbox disabled to work-->\r\n <div class=\"temp-for-k-checkbox\" *ngIf=\"!data.UseKendoSwitch\">\r\n <input *ngIf=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n type=\"checkbox\" kendoCheckBox [id]=\"data.Name\" [formControlName]=\"data.Value\" disabled\r\n (change)=\"onChange(null, $event.target.checked)\" [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\" />\r\n <input *ngIf=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n type=\"checkbox\" kendoCheckBox [id]=\"data.Name\" [formControlName]=\"data.Value\"\r\n (change)=\"onChange(null, $event.target.checked)\" [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\" />\r\n </div>\r\n <kendo-switch *ngIf=\"data.UseKendoSwitch \" [id]=\"data.Name\" [formControlName]=\"data.Value\"\r\n [size]=\"data.Size ? data.Size : 'small'\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onChange(null, $event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\" #checkbox>\r\n </kendo-switch>\r\n</div>\r\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ZComponent, ZComponentOutputEvent, FontAweSomeService, FieldUtils, DataUtils } from 'mmhglobal-zcore';\r\nimport { ChipListComponent, ChipModule } from \"@progress/kendo-angular-buttons\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HtmlSanitizePipe } from \"../../../pipe/htmlSanitize.pipe\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\n\r\n\r\n@Component({\r\n selector: 'app-zchip',\r\n templateUrl: './zchip.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zchip.component.scss'],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, CommonModule, ChipModule, HtmlSanitizePipe, FontAwesomeModule]\r\n})\r\n\r\nexport class ZChipComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(ChipListComponent) public chipList: ChipListComponent;\r\n public dataSource;\r\n\r\n constructor(public fontAweSomeService: FontAweSomeService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(\r\n tap(() => {\r\n this.setupDataSource();\r\n if (this.dataSource && this.dataSource.length > 0) {\r\n this.setupDataSourceByzModel();\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public setupDataSource() {\r\n if (!this.data.DataSource) {\r\n console.error(\"No data source found for zchip\");\r\n return;\r\n }\r\n\r\n this.dataSource = this.data.DataSource;\r\n if (typeof this.data.DataSource == 'string' && this.data.DataSource.startsWith('group.')) {\r\n this.dataSource = FieldUtils.getGroupValue(this.data.DataSource, this.group);\r\n }\r\n }\r\n\r\n private setupDataSourceByzModel() {\r\n const modelData = this.group.zModel[this.data.Value];\r\n if (!DataUtils.isNullUndefinedEmpty(modelData)) {\r\n const modelValueKeyList = modelData.map(x => x.Label);\r\n\r\n for (const item of this.dataSource) {\r\n item.Selected = modelValueKeyList.includes(item.Label);\r\n }\r\n }\r\n else {\r\n this.dataSource.forEach(x => x.Selected = false);\r\n }\r\n }\r\n\r\n public setData(data: any) {\r\n this.setupDataSourceByzModel();\r\n this.dataSource = [...this.dataSource];\r\n\r\n // Need to set in this way as the chips are QueryList\r\n if (this.chipList?.chips && this.chipList.chips.length > 0) {\r\n let index = 0;\r\n for (const chip of this.chipList.chips) {\r\n chip.selected = !!this.dataSource[index]?.Selected || false;\r\n index++;\r\n }\r\n }\r\n\r\n this.setupDataSourceForIconChange();\r\n }\r\n\r\n private setupDataSourceForIconChange() {\r\n if (this.data['ChangeIconUponSelected']) {\r\n if (Array.isArray(this.dataSource)) {\r\n for (const x of this.dataSource) {\r\n x._Icon = x.Icon;\r\n x.Icon = x.Selected ? x.SelectedIcon : x._Icon;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //#region Events\r\n public chipListChangeSelection(selectedChipIndexes: any): void {\r\n const selectedChips = this.dataSource.filter((x, i) => selectedChipIndexes.includes(i));\r\n if (this.data['ChangeIconUponSelected']) {\r\n for (const chip of selectedChips) {\r\n chip.Icon = chip.SelectedIcon;\r\n }\r\n\r\n const notSelectedChips = this.dataSource.filter((x, i) => !selectedChipIndexes.includes(i));\r\n for (const chip of notSelectedChips) {\r\n chip.Icon = this.dataSource.find(x => x.Label === chip.Label)._Icon;\r\n }\r\n }\r\n\r\n super.onChange(null, selectedChips);\r\n }\r\n\r\n public mouseover(event: any, chip: any) {\r\n if (this.data.OnHover) {\r\n this.group.subject.next({\r\n type: \"onHover\",\r\n target: this.data.OnHover,\r\n data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public onRemove(chip: any): void {\r\n const index = this.dataSource.findIndex((c) => c.Label === chip.Label);\r\n this.dataSource.splice(index, 1);\r\n }\r\n //#endregion\r\n}\r\n","<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n <div kendoTooltip class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chip-list [selection]=\"data.Multiple ? 'multiple' : 'single'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n class=\"e1tag-style5\"></div>\r\n <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n </div>\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnInit, AfterViewInit, OnDestroy, ViewChild, ViewEncapsulation, Renderer2 } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { JsonEditorComponent, JsonEditorOptions } from 'ang-jsoneditor';\r\nimport {\r\n ZField, ZGroup, ZComponentOutputEvent, ModelUtils,\r\n ValidationUtils, ZComponentProperties,\r\n ComponentUtils\r\n} from 'mmhglobal-zcore';\r\nimport { ZcodeeditorService } from './zcodeeditor.service';\r\nimport { FieldBase } from '../../base/fieldbase.component';\r\n\r\n@Component({\r\n selector: 'mmhglobal-zcode-editor',\r\n standalone: true,\r\n imports: [CommonModule, LabelModule, JsonEditorComponent],\r\n templateUrl: './zcodeeditor.component.html',\r\n styleUrls: ['./zcodeeditor.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ZcodeeditorComponent extends FieldBase implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n //#region Inputs & Outputs\r\n\r\n @Input() public form!: FormGroup;\r\n @Input() public data!: ZField;\r\n @Input() public group!: ZGroup;\r\n\r\n @Output() public editorChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @ViewChild(JsonEditorComponent, { static: false }) private readonly editor!: JsonEditorComponent;\r\n\r\n //#endregion\r\n\r\n //#region Internal State\r\n\r\n public editorOptions!: JsonEditorOptions;\r\n public isFunctionEditor = false;\r\n\r\n public componentProperties = new ZComponentProperties();\r\n\r\n private readonly instanceId: string = Math.random().toString(36).slice(2);\r\n private readonly subscription: Subscription = new Subscription();\r\n private path!: string;\r\n\r\n //#endregion\r\n\r\n //#region Constructor\r\n\r\n constructor(\r\n private readonly renderer: Renderer2,\r\n private readonly syncService: ZcodeeditorService\r\n ) {\r\n super();\r\n this.injectHideWatermarkStyle();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Lifecycle Hooks\r\n\r\n public ngOnInit(): void {\r\n ComponentUtils.setComponentProperties(this);\r\n ComponentUtils.registerComponent(this);\r\n\r\n this.path = this.data.Value;\r\n this.isFunctionEditor = this.path?.startsWith('group.') && this.path?.endsWith('()');\r\n\r\n this.initializeEditorOptions();\r\n this.setupEditorReadOnlyOptions();\r\n\r\n const control = this.form.get(this.path);\r\n if (control) {\r\n this.subscription.add(\r\n control.valueChanges\r\n .pipe(filter(val => val != null))\r\n .subscribe(val => this.applyExternalChange(val))\r\n );\r\n }\r\n\r\n this.subscription.add(\r\n this.syncService.changes$\r\n .pipe(filter(evt =>\r\n evt.sourceId !== this.instanceId &&\r\n evt.form === this.form &&\r\n evt.path === this.path\r\n ))\r\n .subscribe(evt => this.applyExternalChange(evt.data))\r\n );\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.applyExternalChange(this.retrieveModelValue());\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Editor Setup & Change Handling\r\n\r\n private initializeEditorOptions(): void {\r\n this.editorOptions = {\r\n enableSort: false,\r\n enableTransform: false,\r\n escapeUnicode: false,\r\n history: true,\r\n modes: this.data?.['Modes'] ?? ['code', 'tree'],\r\n mode: this.data?.['Mode'] ?? 'code',\r\n search: true,\r\n statusBar: true,\r\n navigationBar: true,\r\n mainMenuBar: true,\r\n onChange: () => this.handleEditorChangeUnified()\r\n } as JsonEditorOptions;\r\n }\r\n\r\n private handleEditorChangeUnified(): void {\r\n if (!this.editor) {\r\n console.warn('[Zcodeeditor] Editor instance not available in handleEditorChangeUnified.');\r\n return;\r\n }\r\n\r\n const rawValue = this.editor.get();\r\n const parsedValue = this.safeParse(rawValue);\r\n\r\n if (this.isFunctionEditor) {\r\n this.jsonEditorData = parsedValue;\r\n }\r\n\r\n this.updateFormControl(parsedValue);\r\n this.syncService.notify(this.form, this.path, parsedValue, this.instanceId);\r\n this.editorChange.emit(parsedValue);\r\n }\r\n\r\n private applyExternalChange(data: any): void {\r\n if (!this.editor) {\r\n console.warn('[Zcodeeditor] Editor instance not available for external change.');\r\n return;\r\n }\r\n\r\n const parsed = this.safeParse(data);\r\n\r\n if (this.isFunctionEditor) {\r\n this.jsonEditorData = parsed;\r\n }\r\n\r\n const core = this.editor.getEditor();\r\n if (typeof core.update === 'function') {\r\n core.update(parsed);\r\n } else if (typeof core.set === 'function') {\r\n core.set(parsed);\r\n } else {\r\n console.error('[Zcodeeditor] Cannot update editor content programmatically.');\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Model Interaction\r\n\r\n private retrieveModelValue(): any {\r\n try {\r\n return this.safeParse(this.jsonEditorData);\r\n } catch (error) {\r\n console.warn('[Zcodeeditor] Failed to retrieve model value.', error);\r\n return {};\r\n }\r\n }\r\n\r\n private writeModelValue(val: any): void {\r\n this.jsonEditorData = val;\r\n }\r\n\r\n private updateFormControl(val: any): void {\r\n const control = this.form.get(this.path);\r\n if (!control) {\r\n console.error(`[Zcodeeditor] Form control not found for path: ${this.path}`);\r\n return;\r\n }\r\n\r\n const valueStr = typeof val === 'string' ? val : JSON.stringify(val);\r\n\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(this.data.Value, valueStr, this.group, true);\r\n\r\n this.group.subject.next({\r\n type: 'zcodeeditor-TextChanged',\r\n target: this.data.OnChange,\r\n data: valueStr\r\n } as ZComponentOutputEvent);\r\n\r\n this.writeModelValue(val);\r\n }\r\n\r\n public updateEditorValue(data: string | object): void {\r\n const parsed = this.safeParse(data);\r\n this.applyExternalChange(parsed);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Getter / Setter for jsonEditorData\r\n\r\n public get jsonEditorData(): any {\r\n const expr = this.data?.Value;\r\n if (!expr) return null;\r\n\r\n const fnMatch = expr.match(/^group\\.([^(]+)\\(\\)$/);\r\n if (fnMatch) {\r\n const fnName = fnMatch[1];\r\n const fn = this.group?.[fnName];\r\n if (typeof fn === 'function') {\r\n try {\r\n return fn.call(this.group);\r\n } catch (err) {\r\n console.error(`[jsonEditorData:get] Failed to invoke \"${fnName}\"`, err);\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n return this.group?.zModel?.[expr];\r\n }\r\n\r\n public set jsonEditorData(value: any) {\r\n const expr = this.data?.Value;\r\n if (!expr) return;\r\n\r\n const fnMatch = expr.match(/^group\\.([^(]+)\\(\\)$/);\r\n if (fnMatch) {\r\n const fnName = fnMatch[1];\r\n const fn = this.group?.[fnName];\r\n if (typeof fn === 'function') {\r\n try {\r\n fn.call(this.group, value);\r\n console.debug(`[jsonEditorData:set] Invoked function: ${fnName}`, value);\r\n } catch (err) {\r\n console.error(`[jsonEditorData:set] Failed to invoke \"${fnName}\"`, err);\r\n }\r\n } else {\r\n console.warn(`[jsonEditorData:set] Function \"${fnName}\" not found on group`);\r\n }\r\n } else {\r\n if (this.group?.zModel) {\r\n this.group.zModel[expr] = value;\r\n console.debug(`[jsonEditorData:set] Set zModel value: ${expr}`, value);\r\n }\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Utilities\r\n\r\n private safeParse(val: any): any {\r\n if (val == null) return val;\r\n if (typeof val === 'string') {\r\n try {\r\n return JSON.parse(val);\r\n } catch {\r\n return val;\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n private injectHideWatermarkStyle(): void {\r\n const style = this.renderer.createElement('style');\r\n style.textContent = `\r\n .ace_powered_by { display: none !important; }\r\n .jsoneditor-menu .jsoneditor-poweredBy { display: none !important; }\r\n `;\r\n this.renderer.appendChild(document.head, style);\r\n }\r\n\r\n private setupEditorReadOnlyOptions(): void {\r\n if (this.data?.ReadOnly && this.data?.Visible) {\r\n this.editorOptions.modes = ['view'];\r\n this.editorOptions.mode = 'view';\r\n this.editorOptions.expandAll = this.data.DefaultCollapse == null ? true : this.data.DefaultCollapse;\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Public Methods\r\n\r\n public setEnable = (status: boolean): void => {\r\n this.setupEditorReadOnlyOptions();\r\n };\r\n\r\n public setVisible = (status: boolean): void => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n };\r\n\r\n public setRequire = (status: boolean): void => {\r\n this.componentProperties.isRequired = status;\r\n ValidationUtils.toggleFieldValidator(\r\n status,\r\n this.group,\r\n this.data.Value,\r\n this.componentProperties,\r\n Validators.required\r\n );\r\n };\r\n\r\n //#endregion\r\n}\r\n","<div *ngIf=\"componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible\">\r\n \r\n <kendo-label class=\"input-label e1tag-container-style1\" [style]=\"componentProperties.containerStyle?.style1\" *ngIf=\"data.ShowLabel\">\r\n {{ data.Label }}\r\n <span *ngIf=\"componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired\" class=\"required-icon\">\r\n *\r\n </span>\r\n </kendo-label>\r\n\r\n <div class=\"json-editor-main-container\">\r\n <div class=\"json-editor-wrapper\">\r\n <json-editor\r\n [options]=\"editorOptions\"\r\n [data]=\"isFunctionEditor ? jsonEditorData : null\">\r\n </json-editor>\r\n </div>\r\n </div>\r\n\r\n</div>","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { DatePickerComponent, DatePickerModule, DateTimePickerComponent, DateTimePickerModule, TimePickerComponent, TimePickerModule } from \"@progress/kendo-angular-dateinputs\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\nimport { ZComponent,FieldUtils } from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { DateParserFilter } from \"./dateParser.pipe\";\r\nimport { DateKendoFormatParser } from \"./dateKendoFormatParser.pipe\";\r\n\r\n@Component({\r\n selector: \"app-zdatetime\",\r\n templateUrl: \"./zdatetime.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zdatetime.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, DateTimePickerModule, DatePickerModule, TimePickerModule, DateParserFilter, DateKendoFormatParser]\r\n})\r\n\r\nexport class ZdatetimeComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(\"datepicker\") datepicker: DatePickerComponent;\r\n @ViewChild(\"timepicker\") timepicker: TimePickerComponent;\r\n @ViewChild(\"datetimepicker\") datetimepicker: DateTimePickerComponent;\r\n\r\n public minDate = null;\r\n public maxDate = null;\r\n public stepValue = null;\r\n\r\n constructor(\r\n componentService: ZComponentService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.setMinAndMaxDateRange();\r\n this.setStepValue();\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n getDateValue() {\r\n const value = this.form.controls[this.data.Value].value;\r\n if (value) {\r\n return new Date(value);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public onChange(value: any): void {\r\n const formControl = this.form.controls[this.data.Value];\r\n const val = this.convertDateTimeValueToString(value);\r\n\r\n if (formControl) {\r\n formControl.setValue(val);\r\n formControl.markAsTouched();\r\n }\r\n super.onChange(null, val);\r\n }\r\n\r\n public SetDateRange = (minDate: any, maxDate: any): any => {\r\n console.warn(`Please change the function to camelcase 'setDateRange'. 'SetDateRange' will be deprecated soon.`);\r\n this.setDateRange(this.minDate, this.maxDate);\r\n }\r\n\r\n public setDateRange = (minDate: any, maxDate: any): any => {\r\n if (!isNaN(Date.parse(minDate))) {\r\n this.minDate = new Date(minDate);\r\n }\r\n if (!isNaN(Date.parse(maxDate))) {\r\n this.maxDate = new Date(maxDate);\r\n }\r\n }\r\n\r\n private setMinAndMaxDateRange() {\r\n const minDateGroupValue = FieldUtils.getGroupValue(this.data.MinDate as any, this.group);\r\n const minDateValue = minDateGroupValue || this.data.MinDate;\r\n\r\n const maxDateGroupValue = FieldUtils.getGroupValue(this.data.MaxDate as any, this.group);\r\n const maxDateValue = maxDateGroupValue || this.data.MaxDate;\r\n this.setDateRange(minDateValue, maxDateValue);\r\n }\r\n\r\n private setStepValue() {\r\n const stepValueGroupValue = FieldUtils.getGroupValue(this.data.StepValue as any, this.group);\r\n this.stepValue = stepValueGroupValue || this.data.StepValue;\r\n }\r\n\r\n private convertDateTimeValueToString(value: any): any {\r\n if (value == undefined) {\r\n return undefined;\r\n }\r\n\r\n const valueDate = value as Date;\r\n\r\n if (this.data.Type === 'zshortdate') {\r\n valueDate.setDate(1);\r\n }\r\n\r\n if (this.data.IsIgnoreTimeZone) {\r\n const timezoneOffSet = new Date(value).getTimezoneOffset();\r\n valueDate.setMinutes(valueDate.getMinutes() + (-timezoneOffSet));\r\n return valueDate.toISOString();\r\n }\r\n\r\n if (!['zuidatetime', 'ztime', 'zuitime'].includes(this.data.Type)) {\r\n return this.parseAnyValueToDateOnly(value).toISOString();\r\n }\r\n else {\r\n return this.parseAnyValueToDate(value).toISOString();\r\n }\r\n }\r\n\r\n private parseAnyValueToDate(value): Date {\r\n return new Date(value instanceof Date ? value : new Date(value));\r\n }\r\n\r\n private parseAnyValueToDateOnly(value): Date {\r\n return new Date(this.parseAnyValueToDate(value).toLocaleDateString('en-US'));\r\n }\r\n\r\n public focus() {\r\n if (this.datepicker) {\r\n this.datepicker.focus();\r\n return true;\r\n }\r\n if (this.timepicker) {\r\n this.timepicker.focus();\r\n return true;\r\n }\r\n if (this.datetimepicker) {\r\n this.datetimepicker.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <div class=\"dateTimeDesktopContainer\" [ngSwitch]=\"data.Type\">\r\n <kendo-datepicker *ngSwitchCase=\"'zshortdate'\"\r\n [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n [min]=\"minDate\" [max]=\"maxDate\" \r\n [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" [activeView]=\"'year'\"\r\n [bottomView]=\"'year'\" #datepicker>\r\n </kendo-datepicker>\r\n <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\"\r\n [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\"\r\n [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n calendarType=\"classic\" #datetimepicker>\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\"\r\n [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\" \r\n [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n #timepicker>\r\n </kendo-timepicker>\r\n <kendo-datepicker *ngSwitchDefault\r\n [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n [min]=\"minDate\" [max]=\"maxDate\"\r\n [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n #datepicker>\r\n </kendo-datepicker>\r\n </div>\r\n</div>\r\n\r\n\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\nimport { FieldUtils, ZComponent, ZField } from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { GaugesModule } from \"@progress/kendo-angular-gauges\";\r\n\r\n\r\n@Component({\r\n selector: 'app-zgauge',\r\n templateUrl: './zgauge.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zgauge.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule,FontAwesomeModule,ButtonModule,GaugesModule]\r\n})\r\n\r\nexport class ZgaugeComponent extends FieldBase implements ZComponent, OnInit {\r\n isLoading = true;\r\n private value = 0;\r\n private title = \"\";\r\n private color = [{ color: \"#0175c7\" }];\r\n private majorTicks = { visible: true, color: '#0000ff' };\r\n private minorTicks = { visible: true, color: '#0000ff' };\r\n private startAngle = 0;\r\n private endAngle = 180;\r\n private minValue = 0;\r\n private maxValue = 200;\r\n\r\n options = {\r\n value: this.value,\r\n title: this.title,\r\n chartInnerText1: '',\r\n chartInnerText2: '',\r\n scaleMax: 50,\r\n colors: this.color,\r\n transitions: false,\r\n majorTicks: this.majorTicks,\r\n minorTicks: this.minorTicks,\r\n minValue: this.minValue,\r\n maxValue: this.maxValue,\r\n reverse: false,\r\n startAngle: this.startAngle,\r\n endAngle: this.endAngle,\r\n rangePlaceholderColor: '#e6e5e5',\r\n labelsColor: '#0000ff',\r\n rangeFrom: 0,\r\n rangeTo: 100,\r\n rangeColor: '#ff6358',\r\n rangeLineCap: 'round',\r\n showLabels: true,\r\n rangeSize: 10,\r\n labelStyle: \"text-align: center; font-size: 18px;\",\r\n arcgaugeStyle: \"margin-top:50px;width:90% ;height:100%; min-width: 330px;\",\r\n \r\n };\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n this.initComponent();\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = FieldUtils.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public getGaugeStyle() {\r\n return this.componentProperties.style.style3 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style3) : { 'white-space': 'initial' }\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n if (field.Value.startsWith('group.')) {\r\n options.value = FieldUtils.getGroupEvalValue.call(this, field.Value) ?? options.value;\r\n }\r\n else {\r\n options.value = this.group.zModel[field.Value] ?? options.value;\r\n options.value = parseInt(options.value);\r\n }\r\n options.title = FieldUtils.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.minValue = FieldUtils.getGroupEvalValue.call(this, field.MinValue) || options.minValue || 0;\r\n options.maxValue = FieldUtils.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue || 100;\r\n options.colors = FieldUtils.getGroupEvalValue.call(this, field.Color) || options.colors;\r\n options.transitions = field.Transitions || options.transitions;\r\n options.majorTicks = FieldUtils.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;\r\n options.minorTicks = FieldUtils.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;\r\n options.showLabels = field.ShowLabels != undefined ? field.ShowLabels : options.showLabels;\r\n options.style = field.Style || options.style;\r\n options.reverse = field.Reverse || options.reverse;\r\n options.startAngle = field.StartAngle || options.startAngle || 0;\r\n options.endAngle = field.EndAngle || options.endAngle || 180;\r\n options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;\r\n options.rangeColor = field.RangeColor || options.rangeColor;\r\n options.rangeLineCap = field.RangeLineCap || options.rangeLineCap;\r\n options.rangeSize = field.RangeSize || options.rangeSize;\r\n options.GaugeAlignment = FieldUtils.getGroupEvalValue.call(this, field.GaugeAlignment) || options.GaugeAlignment;\r\n options.paddingValue = options.value.toString() === 'NaN' ? options.GaugeAlignment : '0%';\r\n }\r\n\r\n alignment() {\r\n const alignmentStyle = {\r\n \"padding-right\": this.options[\"paddingValue\"]\r\n };\r\n\r\n return alignmentStyle;\r\n }\r\n\r\n public setData(gData: any) {\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\" *ngIf=\"options.title\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" style=\"margin-top:50px;width:90% ;height:100%; min-width: 330px;\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n\r\n<!--<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"chart-top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"options.title\">\r\n {{options.title}}\r\n </div>\r\n <div [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\"\r\n [style]=\"getGaugeStyle()\" class=\"e1tag-style3\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <div *ngIf=\"options.chartInnerText1\" [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\">{{ options.chartInnerText1 }}</div>\r\n <div *ngIf=\"options.chartInnerText2\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{ options.chartInnerText2 }}</div>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>-->\r\n\r\n","import { style, animate, trigger, transition, state } from '@angular/animations';\r\n\r\nexport const hideAndShowVerticalAnimation =\r\n trigger(\r\n 'hideAndShowAnimation',\r\n [\r\n transition(':enter', [\r\n style(\r\n { transform: 'translateY(-20%)', opacity: 0, height: 0 }\r\n ),\r\n animate('300ms ease-out', style(\r\n { transform: 'translateY(0)', opacity: 1, height: 100 }\r\n ))\r\n ]),\r\n transition(':leave', [\r\n style({ transform: 'translateY(0)', opacity: 1, height: 100 }),\r\n animate('300ms ease-in', style({ transform: 'translateY(-20%)', opacity: 0, height: 0 }))\r\n ])\r\n ]\r\n );\r\n\r\nexport const rotateAnimation =\r\n trigger(\r\n 'rotateAnimation',\r\n [\r\n state('default', style({\r\n transform: 'rotate(0deg)'\r\n })),\r\n state('rotate', style({\r\n transform: 'rotate(' + '{{degree}}' + 'deg)'\r\n }), { params: { degree: 90 } }),\r\n transition('* => *', [\r\n animate('{{duration}}')\r\n ], { params: { duration: '0.2s' } }),\r\n ]\r\n );\r\n\r\nexport const collapseAnimation =\r\n trigger(\r\n 'collapseAnimation',\r\n [\r\n state('default', style({\r\n transform: 'translateY(0)', opacity: 1, display: 'block'\r\n })),\r\n state('collapse', style({\r\n transform: 'translateY(' + '{{height}}' + ')',\r\n opacity: 0,\r\n display: 'none'\r\n }), { params: { height: '-10%' } }),\r\n transition('* => collapse', [\r\n animate('{{duration}}')\r\n ], { params: { duration: '0.2s' } }),\r\n transition('* => default', [\r\n animate('{{duration}}')\r\n ], { params: { duration: '0.2s' } })\r\n ]\r\n );\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, switchMap, tap } from 'rxjs/operators';\r\nimport { ButtonFieldBase } from '../../base/buttonfieldbase.component';\r\nimport {\r\n WebApiService, ResourceApiService, WorkflowService, FontAweSomeService,\r\n ZComponent, ZField, TriggerFromType, IconUtils, DataUtils, ModelUtils\r\n} from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ButtonComponent, ButtonModule } from '@progress/kendo-angular-buttons';\r\nimport { ZformcontrolComponent } from '../../others/zformcontrol/zformcontrol.component';\r\n\r\n@Component({\r\n selector: 'app-zworkflowbuttons',\r\n templateUrl: './zworkflowbuttons.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zworkflowbuttons.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ZformcontrolComponent, ButtonComponent]\r\n})\r\n\r\nexport class ZworkflowbuttonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n // URL required\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n dataFormFields: any = {};\r\n isLoading = true;\r\n isLocalHostAPI: boolean = false;\r\n rightBtns: any;\r\n leftBtns: any;\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly webApiService: WebApiService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly workflowService: WorkflowService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n\r\n // Check project resourceURL is it localhost\r\n if (this.group.resourceURL) {\r\n this.isLocalHostAPI = this.group.resourceURL.toLowerCase().includes(\"localhost\");\r\n }\r\n\r\n this.loadButton(TriggerFromType.initialPageLoad);\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public loadButton(triggerFrom?: TriggerFromType) {\r\n this.leftBtns = [];\r\n this.rightBtns = [];\r\n this.buttonList = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n const documentId = this.group.zModel?.['WFS_DocumentId'];\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n try {\r\n of(true).pipe(\r\n concatMap(() => {\r\n // retrieve the workflow button\r\n return this.workflowService.getWorkflowButtonsField(\r\n this.data.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(this.isLocalHostAPI),\r\n triggerFrom\r\n )\r\n }),\r\n tap(resultData => {\r\n if (resultData) {\r\n resultData.forEach((button: any) => {\r\n if (!button.Label) {\r\n button.Label = button.Name;\r\n }\r\n\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const isUseCustomClass = !attributes.Color;\r\n\r\n button = this.appendToAttributeUsefulDetail(button);\r\n const btn = {\r\n name: button.Name,\r\n text: label,\r\n showLabel: button.ShowLabel ?? true,\r\n icon: IconUtils.getIcon(attributes.Icon),\r\n visible: attributes.Visible,\r\n color: isUseCustomClass ? '' : (attributes.Color ?? 'primary'),\r\n fill: isUseCustomClass ? '' : (attributes.Fill ?? 'solid'),\r\n size: attributes.Size ?? 'default',\r\n class: isUseCustomClass ? `${attributes.Class} useCustomClass` : attributes.Class,\r\n fieldAttribute: button,\r\n iconName: attributes.Icon,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n }\r\n\r\n if (attributes.PositionX && attributes.PositionX === 'right') {\r\n this.rightBtns.push(btn);\r\n }\r\n else {\r\n this.leftBtns.push(btn);\r\n }\r\n });\r\n\r\n this.buttonList.push(...this.leftBtns, ...this.rightBtns);\r\n }\r\n else {\r\n console.warn(`Unable to get workflow button. Data returned null.`);\r\n }\r\n }),\r\n switchMap(() => {\r\n return super.translateButtonsLabel(this.buttonList);\r\n }),\r\n switchMap(() => {\r\n if (!this.data.DisableSyncWorkflowStatus) {\r\n // Set default status\r\n // eslint-disable-next-line @typescript-eslint/dot-notation\r\n if (!this.group.zModel['WFS_StatusName']) {\r\n const params = {\r\n WorkflowMasterCode: this.data.WorkflowCode,\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n tap(res => {\r\n if (res.Data) {\r\n ModelUtils.setFieldValueInModelAndForm('WFS_StatusId', res.Data['Id'], this.group);\r\n ModelUtils.setFieldValueInModelAndForm('WFS_StatusName', res.Data['Name'], this.group);\r\n ModelUtils.setFieldValueInModelAndForm('WFS_StatusCode', res.Data['Code'], this.group);\r\n\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n }\r\n else {\r\n // When loading also to get current Status Information if any.\r\n const docInfoParam = {\r\n WorkflowMasterCode: this.data.WorkflowCode,\r\n DocumentId: documentId,\r\n };\r\n\r\n return this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n tap(res => {\r\n this.workflowService.setCurrentDocumentStatus(res);\r\n if (res.Data) {\r\n this.workflowService.setCurrentDocumentStatus(res.Data);\r\n }\r\n })\r\n )\r\n }\r\n }\r\n return of(null);\r\n })\r\n ).subscribe();\r\n } catch (error) {\r\n console.error('Error:', error);\r\n }\r\n }\r\n\r\n buttonClick(button: any) {\r\n // Get the form group\r\n const attributes = JSON.parse(button.Attributes);\r\n const buttonTypeCode = button.TypeCode.toUpperCase();\r\n\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n this.group.isTriggered = button.disableTrigger != undefined ? !button.disableTrigger : true;\r\n\r\n const clonedButton = DataUtils.deepClone(button);\r\n const clonedAttributes = DataUtils.deepClone(attributes);\r\n\r\n this.updateEventId(button);\r\n\r\n switch (buttonTypeCode) {\r\n case \"FUNCTION\":\r\n // Handle functional buttons\r\n if (!this.group.isTriggered) {\r\n return;\r\n }\r\n\r\n // Disable trigger timer\r\n if (!attributes['DisableTriggerTimer']) {\r\n setTimeout(() => {\r\n this.group['isTriggered'] = false;\r\n }, 500);\r\n }\r\n\r\n console.log(\"Functional Button: \", button.Name);\r\n\r\n // Call the workflow service to handle the functional button click event\r\n this.workflowService.functionalButton_OnClick(clonedAttributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n // Call the workflow service to handle the GOTO button click event\r\n // Temp solve\r\n (this.workflowService.gotoButton_Onclick(clonedButton, this.data, clonedAttributes, this.group, this.isLocalHostAPI) as Observable<any>).subscribe(res => {\r\n // Reload the button\r\n this.loadButton(TriggerFromType.goToButton);\r\n\r\n // Reset trigger status\r\n this.group.isTriggered = false;\r\n\r\n if (res) {\r\n // Trigger email sending\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n break;\r\n default:\r\n console.warn(`Invalid Button Type: ${button.Name}`);\r\n break;\r\n }\r\n }\r\n\r\n private updateEventId(button: any) {\r\n const name = button.Name ?? button.name;\r\n const updateButtonEventId = (buttons: any[]) => {\r\n buttons.forEach(item => {\r\n if (item.name === name) {\r\n const eventId = DataUtils.generateTimeStampId();\r\n const attributes = JSON.parse(item.fieldAttribute.Attributes);\r\n\r\n item.fieldAttribute.eventId = eventId;\r\n attributes.eventId = eventId;\r\n\r\n item.fieldAttribute.Attributes = JSON.stringify(attributes);\r\n }\r\n });\r\n };\r\n\r\n updateButtonEventId(this.leftBtns);\r\n updateButtonEventId(this.rightBtns);\r\n }\r\n\r\n private appendToAttributeUsefulDetail(button: any) {\r\n const attributes = JSON.parse(button.Attributes);\r\n const eventId = DataUtils.generateTimeStampId();\r\n\r\n const newAttributes = {\r\n ...attributes,\r\n zButtonName: this.data.Name,\r\n TypeCode: button.TypeCode,\r\n WorkflowCode: this.data.WorkflowCode,\r\n eventId: eventId\r\n };\r\n\r\n const newButton = {\r\n ...button,\r\n Attributes: JSON.stringify(newAttributes),\r\n disableTrigger: this.isButtonDisableTrigger(this.data, button),\r\n eventId: eventId\r\n };\r\n\r\n return newButton;\r\n }\r\n\r\n private isButtonDisableTrigger(data: ZField, button: any): boolean {\r\n const buttonDisableTrigger = button.DisableTrigger ?? data.DisableTrigger;\r\n return buttonDisableTrigger ?? false;\r\n }\r\n\r\n public removeGotoButton() {\r\n const indexToDelete = this.leftBtns.findIndex(obj => obj.fieldAttribute.TypeCode === \"GOTO\");\r\n if (indexToDelete !== -1) {\r\n this.leftBtns.splice(indexToDelete, 1);\r\n }\r\n }\r\n}\r\n","<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && buttonList.length > 0\"\r\n [style]=\"componentProperties.style.style\"\r\n class=\"e1tag-style main-container\">\r\n <div\r\n *ngFor=\"let item of buttonList; let i = index\"\r\n [ngClass]=\"data.DivClass\"\r\n class=\"btn-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\"\r\n [class.right-btn]=\"item.PositionX == 'right'\">\r\n <button\r\n kendoButton\r\n [fillMode]=\"item.fill\"\r\n *ngIf=\"item.Type === 'a'\"\r\n [size]=\"item.size\"\r\n [themeColor]=\"item.color\"\r\n strong=\"true\"\r\n [ngClass]=\"item.class\"\r\n (click)=\"buttonClick(item)\"\r\n [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\"\r\n [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n class=\"e1tag-style5\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\" *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{ item.text }}</span>\r\n </div>\r\n </button>\r\n <app-zformcontrol\r\n *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass : item.Visible === true ? item.DivClass : 'flex-hide'\"\r\n [field]=\"item\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"{{ item.Type }}-{{ item.Name }}\"></app-zformcontrol>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit, SimpleChanges } from \"@angular/core\";\r\nimport { FontAweSomeService, InputFieldAddOns, TranslationService, ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { KENDO_TOOLTIPS } from \"@progress/kendo-angular-tooltip\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\n\r\n@Component({\r\n selector: \"app-input-field-addons\",\r\n templateUrl: \"./input-field-addons.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./input-field-addons.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, KENDO_TOOLTIPS, FontAwesomeModule, ButtonModule]\r\n})\r\n\r\nexport class InputFieldAddOnsComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @Input() position: 'top' | 'left' | 'right' | 'bottom'; // default top\r\n @Input() addOn: InputFieldAddOns;\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly translationService: TranslationService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (this.addOn) {\r\n this.position = this.position || 'top';\r\n this.setupIconList();\r\n this.setupButtonList();\r\n this.setupTextList();\r\n }\r\n }\r\n\r\n private setupIconList() {\r\n if (this.addOn.IconList) {\r\n this.addOn.IconList = this.addOn.IconList.filter(x => x);\r\n this.addOn.IconList.forEach((i: any) => {\r\n if (!i.ToolTipText) {\r\n i.ToolTipText = \"\";\r\n } else if (i.ToolTipText.indexOf(\"group.\") !== -1) {\r\n i.ToolTipText = ZComponentHelper.getGroupEvalValue.call(this, i.ToolTipText);\r\n }\r\n\r\n this.translationService.$translateText(i.ToolTipText, { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n\r\n // Default position top. right | bottom | top | left\r\n i.Position = i.Position || \"top\";\r\n });\r\n\r\n this.translationService.$translateItemList(this.addOn.IconList, \"ToolTipText\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n }\r\n }\r\n\r\n private setupButtonList() {\r\n if (this.addOn.ButtonList) {\r\n this.addOn.ButtonList = this.addOn.ButtonList.filter(x => x);\r\n this.addOn.ButtonList.forEach(button => {\r\n button['color'] = button.Color ?? 'primary';\r\n button['fill'] = button.Fill ?? 'solid';\r\n button['class'] = button.Class;\r\n\r\n button.Visible = ZComponentHelper.isNullUndefinedEmpty(button.Visible) ? 'true' : button.Visible;\r\n });\r\n\r\n this.translationService.$translateItemList(this.addOn.ButtonList, \"Text\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n }\r\n }\r\n\r\n private setupTextList() {\r\n if (this.addOn.TextList) {\r\n this.addOn.TextList = this.addOn.TextList.filter(x => x);\r\n this.addOn.TextList.forEach((i: any) => {\r\n if (!i.ToolTipText) {\r\n i.ToolTipText = \"\";\r\n } else if (i.ToolTipText.indexOf(\"group.\") !== -1) {\r\n i.ToolTipText = ZComponentHelper.getGroupEvalValue.call(this, i.ToolTipText);\r\n }\r\n\r\n i.Position = i.Position ?? \"top\";\r\n });\r\n\r\n this.translationService.$translateItemList(this.addOn.TextList, \"Text\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n this.translationService.$translateItemList(this.addOn.TextList, \"ToolTipText\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n }\r\n }\r\n}\r\n","<div [class]=\"'addons-container ' + position\" *ngIf=\"addOn\">\r\n <div class=\"addons-icon\" *ngIf=\"addOn.IconList && addOn.IconList.length > 0\">\r\n <div *ngFor=\"let item of addOn.IconList\">\r\n <div\r\n kendoTooltip\r\n class=\"icon-button\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n <span\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.ToolTipText\"\r\n [style]=\"item.Style\"\r\n [class.clickable]=\"!!item.Click\">\r\n <fa-icon [icon]=\"item.Icon\"></fa-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"addons-text\" *ngIf=\"addOn.TextList && addOn.TextList.length > 0\">\r\n <div *ngFor=\"let item of addOn.TextList\">\r\n <div\r\n kendoTooltip\r\n class=\"icon-button\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n <span\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.ToolTipText\"\r\n [style]=\"item.Style\"\r\n [class.clickable]=\"!!item.Click\">\r\n {{ item.Text }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"addons-buttons\"\r\n *ngIf=\"addOn.ButtonList && addOn.ButtonList.length > 0\">\r\n <button\r\n kendoButton\r\n *ngFor=\"let button of addOn.ButtonList; let i = button\"\r\n [fillMode]=\"button.fill\"\r\n [ngClass]=\"button.class\"\r\n [themeColor]=\"button.color\"\r\n [size]=\"button.Size || 'small'\"\r\n strong=\"false\"\r\n (click)=\"onIconClick(button.Click)\"\r\n [hidden]=\"!button.Visible\"\r\n [disabled]=\"group.isTriggered || button.Disabled\"\r\n [style]=\"button.Style\">\r\n <fa-icon\r\n *ngIf=\"button.Icon\"\r\n [icon]=\"getFontAwesome(button.Icon, fontAweSomeService)\"\r\n [style.padding-right]=\"button.Text ? '5px' : '0px'\"></fa-icon>\r\n <span class=\"ion-text-capitalize\">{{ button.Text }}</span>\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { forkJoin, Observable, of, switchMap, tap } from \"rxjs\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport {\r\n TranslationService, ComponentErrorHandlerService,\r\n ZComponent\r\n} from 'mmhglobal-zcore';\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\n\r\n@Component({\r\n selector: \"app-error\",\r\n templateUrl: \"./input-error-message.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./input-error-message.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, LabelModule, FontAwesomeModule]\r\n})\r\n\r\nexport class InputErrorMessageComponent extends FieldBase implements ZComponent, OnInit {\r\n constructor(\r\n private readonly componentErrorHandlerService: ComponentErrorHandlerService,\r\n private readonly translationService: TranslationService\r\n ) {\r\n super();\r\n }\r\n\r\n public errMsgList = [];\r\n\r\n ngOnInit() { }\r\n\r\n public IsShow(): boolean {\r\n if (this.form.untouched) {\r\n return false;\r\n }\r\n\r\n const control = this.form.controls[this.data.Value];\r\n if (!control) {\r\n console.log(`Unable to find form control: ' ${this.data.Value}`);\r\n return false;\r\n }\r\n\r\n const isShow = !control.valid && !control.untouched && !control.disabled;\r\n if (isShow) {\r\n of(this.componentErrorHandlerService.getErrorMessageForInvalidInput(this.group, null, this.data.Value)).pipe(\r\n switchMap((errMessageTranslationInput) => {\r\n const obs = new Array<Observable<any>>();\r\n errMessageTranslationInput.forEach(data => {\r\n obs.push(this.translationService.$translateText(data.errorMessage, { translationVariables: data.translationVariables }));\r\n })\r\n return forkJoin(obs);\r\n }),\r\n tap(fieldErrorMessages => {\r\n this.errMsgList = fieldErrorMessages;\r\n })\r\n ).subscribe();\r\n }\r\n return isShow;\r\n }\r\n}\r\n","<div class=\"inputfield-error-msg\" *ngIf=\"IsShow()\">\r\n <div *ngFor=\"let errMsg of errMsgList\">\r\n <span class=\"error-icon fa-layers fa-fw error-icon-layered\">\r\n <fa-icon [icon]=\"['far', 'circle']\" class=\"circle-background\"></fa-icon>\r\n <fa-icon icon=\"exclamation\" class=\"exclamation-icon\"></fa-icon>\r\n </span>\r\n <kendo-label>{{ errMsg }}</kendo-label>\r\n </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { InputsModule, TextBoxComponent } from '@progress/kendo-angular-inputs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../../base/inputfieldbase.component';\r\nimport { ZComponentService } from '../../../services/zcomponent.service';\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent, ClickableIcons, AdornmentProperties, ModelUtils } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\n\r\n\r\n@Component({\r\n selector: 'app-ztext',\r\n templateUrl: './ztext.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztext.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ReactiveFormsModule, LabelModule, InputsModule]\r\n})\r\n\r\nexport class ZtextComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild('textbox') textbox: TextBoxComponent;\r\n\r\n public iconList: ClickableIcons[];\r\n public adornmentList: any[];\r\n public showClearButton: any;\r\n public isPasswordField: boolean = false;\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.adornmentList = this.data.AdornmentList;\r\n this.isPasswordField = this.data.Type === 'zpassword';//ComponentType.zPassword;\r\n\r\n if (this.data.OnClick && !this.data.ReadOnly) {\r\n this.componentProperties.isReadOnly = true;\r\n }\r\n\r\n if (!this.componentProperties.isReadOnly) {\r\n this.showClearButton = this.data.ClearButton;\r\n }\r\n\r\n this.setupClickableIconList();\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.data.Type === 'zpassword') { //ComponentType.zPassword) {\r\n this.textbox.input.nativeElement.type = 'password';\r\n this.textbox.input.nativeElement.autocomplete = 'off';\r\n }\r\n\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private setupClickableIconList() {\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = '';\r\n } else {\r\n if (i.Tooltip.indexOf('group.') !== -1) {\r\n i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = 'top';\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n mapInputType(fieldType: string): string {\r\n switch (fieldType) {\r\n case 'date':\r\n return 'date';\r\n case 'ztext':\r\n return 'text';\r\n case 'number':\r\n return 'number';\r\n case 'currency':\r\n return 'number';\r\n case 'email':\r\n return 'email';\r\n case 'zpassword':\r\n return 'password';\r\n case 'search':\r\n return 'search';\r\n case 'tel':\r\n return 'tel';\r\n case 'text':\r\n return 'text';\r\n case 'time':\r\n return 'time';\r\n case 'url':\r\n return 'url';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n mapInputMode(fieldType: string): string {\r\n switch (fieldType) {\r\n case 'date':\r\n return 'none';\r\n case 'ztext':\r\n return 'text';\r\n case 'number':\r\n return 'decimal';\r\n case 'currency':\r\n return 'decimal';\r\n case 'email':\r\n return 'email';\r\n case 'zpassword':\r\n return 'text';\r\n case 'search':\r\n return 'search';\r\n case 'tel':\r\n return 'tel';\r\n case 'text':\r\n return 'text';\r\n case 'time':\r\n return 'none';\r\n case 'url':\r\n return 'url';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n\r\n /********** Adornment **********/\r\n public getAdornmentBackgroundColor(adornment: AdornmentProperties) {\r\n if (adornment.BackgroundColor) {\r\n return adornment.BackgroundColor + '!important';\r\n }\r\n\r\n return 'transparent !important';\r\n }\r\n\r\n public adornmentLook(adornment: AdornmentProperties) {\r\n if (adornment.AdornmentLook) {\r\n return adornment.AdornmentLook;\r\n }\r\n\r\n return 'clear'\r\n }\r\n\r\n public onAdornmentClick(adornment: AdornmentProperties) {\r\n if (adornment.OnClick) {\r\n this.group.subject.next({\r\n type: 'ztext-adornment',\r\n target: adornment.OnClick,\r\n data: adornment\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public togglePasswordVisibility(): void {\r\n const inputEl = this.textbox.input.nativeElement;\r\n\r\n if (inputEl.type === 'password') {\r\n inputEl.type = 'text';\r\n } else {\r\n inputEl.type = 'password';\r\n }\r\n }\r\n\r\n public readOnlyOnClear() {\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(this.data.Value, null, this.group);\r\n }\r\n\r\n public focus() {\r\n if (this.textbox) {\r\n this.textbox.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <!-- Kendo TextBox for Non-Mobile Screen -->\r\n <kendo-textbox #textbox\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [type]=\"mapInputType(data.Type)\"\r\n (click)=\"onClick($event, $event.target.value)\"\r\n (input)=\"onChange($event, $event.target.value)\">\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\"\r\n [look]=\"'clear'\"\r\n [icon]=\"'close-circle'\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"isPasswordField\">\r\n <button kendoButton\r\n [look]=\"'clear'\"\r\n [icon]=\"'eye'\"\r\n (click)=\"togglePasswordVisibility()\"></button>\r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { TranslationService, ZField, ZGroup } from \"mmhglobal-zcore\";\r\nimport { Observable, of, map } from \"rxjs\";\r\n\r\n@Pipe({\r\n name: \"zselectTranslationParser\",\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class ZSelectTranslationParser implements PipeTransform {\r\n constructor(private translationService: TranslationService) { }\r\n\r\n transform(value: any, itemTextField: string, data: ZField, group: ZGroup): Observable<string> {\r\n if (data.IsTranslationEnabled) {\r\n const $translatedValue = this.translationService.$translateItemList(value, itemTextField, { group: group })\r\n .pipe(map(() => value));\r\n return $translatedValue;\r\n }\r\n else {\r\n return of(value);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, OnDestroy, ChangeDetectorRef, ElementRef } from \"@angular/core\";\r\nimport { Subscription, Observable, of, BehaviorSubject, from } from \"rxjs\";\r\nimport { tap, map, switchMap, mergeMap, catchError } from \"rxjs/operators\";\r\nimport { ComboBoxComponent, ComboBoxModule, DropDownFilterSettings, DropDownListComponent, DropDownListModule, DropDownTreesModule, MultiSelectComponent, MultiSelectModule, MultiSelectTreeComponent, VirtualizationSettings } from \"@progress/kendo-angular-dropdowns\";\r\nimport { event } from \"jquery\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport {\r\n ResourceApiService, WebApiService,\r\n ZComponent, ZComponentOutputEvent, ClickableIcons,\r\n ZSelectMultipleTemplateParams, ZSelectPostApiParams, InternalComponentType_DropDown, DropdownSearchOperator,\r\n DataUtils,\r\n ModelUtils,\r\n CacheService,\r\n DropdownUtils,\r\n FieldUtils,\r\n} from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ZSelectTranslationParser } from \"./zselectmultiple.pipe\";\r\n\r\n@Component({\r\n selector: \"app-zselectmultiple\",\r\n templateUrl: \"./zselectmultiple.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zselectmultiple.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, DropDownListModule, MultiSelectModule, DropDownTreesModule, ComboBoxModule, ReactiveFormsModule, FontAwesomeModule, ZSelectTranslationParser]\r\n})\r\n\r\nexport class ZselectmultipleComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n @ViewChild(\"comboboxComponent\") comboboxComponent: ComboBoxComponent;\r\n @ViewChild(\"dropdownlistComponent\") dropdownlistComponent: DropDownListComponent;\r\n @ViewChild(\"multiselect\") multiselect: MultiSelectComponent;\r\n @ViewChild(\"multiselecttree\") multiselecttree: MultiSelectTreeComponent;\r\n @ViewChild('itemElement', { static: false }) itemElement: ElementRef;\r\n\r\n public componentType: InternalComponentType_DropDown;\r\n private allDataItems = [];\r\n private isFirstOpened = false;\r\n iconList: ClickableIcons[];\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n hasSearched = false;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n allowCustomValue = false;\r\n autoClose: boolean = true;\r\n public parsedItemsData: any[];\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n private readonly eventSubscriptions = new Array<Subscription>();\r\n public expandedKeys;\r\n public componentSettings = {\r\n kendoMultiSelectTreeSummaryTag: 999999,\r\n popupSettings: null,\r\n expandOnFilter: {\r\n expandMatches: true,\r\n expandedOnClear: \"initial\",\r\n }\r\n };\r\n\r\n // private loadInfiniteDataSub: Subject<boolean> = new Subject<boolean>();\r\n public filterSettings: DropDownFilterSettings = {\r\n caseSensitive: false,\r\n operator: \"contains\",\r\n };\r\n\r\n\r\n // For lazyloading\r\n private defaultTake: number = 50;\r\n private itemHeight: number = 28;\r\n\r\n public virtual: VirtualizationSettings = {\r\n itemHeight: this.itemHeight,\r\n pageSize: this.defaultTake,\r\n };\r\n\r\n public state: { skip: number; take: number } = {\r\n skip: 0,\r\n take: this.defaultTake,\r\n };\r\n private readonly stateChange = new BehaviorSubject<any>({ state: this.state, eventType: null, searchTerm: '' });\r\n private stateSubscription: Subscription;\r\n\r\n constructor(\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly cdr: ChangeDetectorRef,\r\n private readonly webApiService: WebApiService,\r\n private readonly cacheService: CacheService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n this.setComponentToUse();\r\n this.subscribeUISignal();\r\n super.setupInnerField();\r\n super.setupComponentSettings(this.componentSettings);\r\n DropdownUtils.parseSelectMultipleBinding(this.data.SelectOptions, this);\r\n // [Dropdownlist Multiple] - auto close menu when lose focus.\r\n if (this.data.AutoClose === false) this.autoClose = this.data.AutoClose;\r\n\r\n // Handle Clickable Icons\r\n this.iconList = this.data.ClickableIcons;\r\n if (this.iconList) {\r\n if (this.iconList.length > 0) {\r\n this.iconList.forEach((i: any) => {\r\n if (i.Tooltip === undefined) {\r\n i.Tooltip = \"\";\r\n } else {\r\n i.Tooltip = FieldUtils.getGroupEvalValue.call(this, i.Tooltip);\r\n }\r\n // Default position top. right | bottom | top | left\r\n if (i.Position === undefined) {\r\n i.Position = \"top\";\r\n }\r\n });\r\n }\r\n }\r\n this.allowCustomValue = this.data.AllowCustomValue || false; // Allow enter text in dropdownbox\r\n const fieldValue = this.data.Value;\r\n const data = this.data;\r\n const zModel = this.group.zModel;\r\n\r\n /*\r\n * 4 Styles of declare the component s option list data source.\r\n * Style #1 - Field.SelectOptions defined as an array of object that contain text and value.\r\n * Style #2 - Field.SelectOptions defined as a phase like item.Id as item.Name for item in group.zData.ProjectOptions .\r\n * Style #3 - Field.OptionResourceURL defined the name of resource server api.\r\n * Style #4 - Field.InfiniteScroll$ defined the method name as group.getMoreDataAsScroll .\r\n */\r\n\r\n if (data.HasInfiniteScroll && data.InfiniteScroll$) {\r\n this.handleFilter(null);\r\n }\r\n else {\r\n // Style #1, #2, #3\r\n const isRequired = FieldUtils.getGroupEvalValue.call(this, data.IsRequired);\r\n\r\n if (this.data.OptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(res => {\r\n const optionData = res.dataSet ? res.dataSet : res;\r\n\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);\r\n }\r\n\r\n if (this.group) {\r\n this.afterLoadzDataOptions();\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n }\r\n else {\r\n if (Array.isArray(this.data.SelectOptions) && this.data.SelectOptions) {\r\n //skip eval if selectoptions is exist\r\n }\r\n else {\r\n const optionData = FieldUtils.getGroupEvalValue.call(this, this.itemDataField);\r\n // append data via timeout after data is loaded.\r\n if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n const thisComponent = this;\r\n setTimeout(function () {\r\n thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);\r\n\r\n if (this.group) {\r\n this.afterLoadzDataOptions();\r\n }\r\n }, 100);\r\n }\r\n }\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n if (this.data.SearchOperator === DropdownSearchOperator.StartsWith) {\r\n this.filterSettings.operator = 'startsWith';\r\n }\r\n\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Subscribe to stateChange and trigger data fetching here because\r\n // ngAfterViewInit ensures that all view components (e.g., dropdownlist, multiselect)\r\n // are fully initialized. This avoids issues where view elements might not be ready\r\n // during the constructor phase. The initial state emission and fetch are done here\r\n // to guarantee that the view is prepared before interacting with it.\r\n this.loadInfiniteData();\r\n\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.stateSubscription) {\r\n this.stateSubscription.unsubscribe();\r\n }\r\n\r\n for (const e of this.eventSubscriptions) {\r\n if (e && !e.closed) {\r\n e.unsubscribe();\r\n }\r\n }\r\n }\r\n\r\n public reloadInfiniteData(): void {\r\n this.infinitezData = [];\r\n this.state = { skip: 0, take: this.defaultTake };\r\n\r\n this.stateChange.next(this.state);\r\n }\r\n\r\n private loadInfiniteData(): void {\r\n const { Value: fieldValue } = this.data;\r\n const { zModel } = this.group;\r\n const recordValue = zModel?.[fieldValue]?.toString() ?? null;\r\n const recordValueList = recordValue ? recordValue.split(',').filter(Boolean) : [];\r\n const newItems$ = FieldUtils.getGroupEvalValue.call(this, this.data.InfiniteScroll$);\r\n\r\n if (!newItems$) {\r\n return;\r\n }\r\n\r\n this.stateSubscription = this.stateChange.pipe(\r\n switchMap(({ state, eventType, searchTerm }) => {\r\n // Update hasSearched based on searchTerm\r\n this.hasSearched = !DataUtils.isNullUndefinedEmpty(searchTerm);\r\n\r\n if (!this.infinitezData || this.hasSearched || eventType === 'Closed') {\r\n this.infinitezData = [];\r\n }\r\n\r\n this.state = state ?? this.state;\r\n const pageNo = this.getPageNo(this.state.skip, this.state.take);\r\n if (pageNo < 1) {\r\n this.isLoading = true;\r\n }\r\n\r\n return newItems$(null, searchTerm, pageNo, this.group.ctrlScope, this.data).pipe(\r\n map(response => ({ response, eventType, searchTerm }))\r\n );\r\n }),\r\n tap(({ response, eventType }) => {\r\n const dataSet = (response as any).dataSet;\r\n const totalCount = (response as any).totalCount ?? dataSet?.length;\r\n\r\n if (dataSet) {\r\n if (this.infinitezData.length === 0) {\r\n if (totalCount === 0) {\r\n this.infinitezData = [];\r\n } else if (totalCount <= this.state.take) {\r\n this.infinitezData = dataSet;\r\n } else {\r\n this.infinitezData = dataSet.concat(new Array(totalCount - this.state.take));\r\n }\r\n } else {\r\n this.infinitezData.splice(this.state.skip, this.state.take, ...dataSet);\r\n }\r\n }\r\n }),\r\n switchMap(({ eventType, searchTerm }) => {\r\n if (eventType !== null || !DataUtils.isNullUndefinedEmpty(searchTerm) || recordValueList.length === 0) {\r\n return of(null);\r\n }\r\n\r\n return from(recordValueList).pipe(\r\n mergeMap(value => {\r\n const existingIndex = this.infinitezData.findIndex(item =>\r\n item && item[this.itemValueField].toString() === value.toString()\r\n );\r\n\r\n if (existingIndex !== -1) {\r\n return of(null);\r\n }\r\n\r\n return newItems$(null, '', 0, this.group.ctrlScope, this.data, value).pipe(\r\n tap(resp => {\r\n if (resp['dataSet']) {\r\n this.infinitezData = [...resp['dataSet'], ...this.infinitezData];\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }),\r\n tap(() => {\r\n if (this.group) {\r\n this.afterLoadzDataOptions();\r\n }\r\n\r\n this.isLoading = false;\r\n this.cdr.detectChanges();\r\n }),\r\n catchError((error) => {\r\n console.warn('Error in loadInfiniteData:', error);\r\n this.isLoading = false;\r\n return of(null);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private getPageNo(stateSkip: number, stateTake: number): number {\r\n return Math.round(stateSkip / stateTake);\r\n }\r\n\r\n // Auto select first option (if required & only 1 option)\r\n private autoSelectFirstOption(required: boolean, data: any, zModelPropertyName: string, id: any) {\r\n if (DataUtils.isNullUndefinedEmpty(id) && required) {\r\n var optionId = data.Id;\r\n if (this.data.Multiple) {\r\n optionId = [optionId];\r\n }\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(zModelPropertyName, optionId, this.group);\r\n\r\n this.group.subject.next({\r\n type: \"onChange\",\r\n target: this.data.OnChange,\r\n event,\r\n data: { ['value']: optionId, field: this.data }\r\n } as ZComponentOutputEvent);\r\n\r\n this.form.markAsPristine();\r\n }\r\n }\r\n\r\n // Style #3\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.OptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.OptionSort;\r\n filterParam.columns = this.data.OptionColumns;\r\n filterParam.filters = this.data.OptionFilter;\r\n\r\n return DropdownUtils.getDataOptions(\r\n this.data.OptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n // Style #4, used in ionic-selectable\r\n getInfiniteData(event: {\r\n component: DropDownListComponent;\r\n text: string;\r\n }) {\r\n const searchTerm = event.text ?? '';\r\n DropdownUtils.loadInfiniteScrollData(event.component, searchTerm, this).subscribe();\r\n }\r\n\r\n getItemsData() {\r\n // Local helper function for slicing option name based on start index\r\n const getOptionNameSuffix = (optionName: string, startIndex: number): string => {\r\n return optionName.slice(startIndex);\r\n };\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n\r\n const optionName = this.data.OptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n\r\n if (Array.isArray(this.data.SelectOptions) && !this.group.zData[getOptionNameSuffix(optionName, 12)]) {\r\n this.group.zData[getOptionNameSuffix(optionName, 12)] = this.data.SelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n return this.group.zData[getOptionNameSuffix(optionName, 6)] || [];\r\n }\r\n\r\n if (optionName.startsWith('group.zData.')) {\r\n return this.group.zData[getOptionNameSuffix(optionName, 12)] || [];\r\n }\r\n\r\n if (optionName.startsWith('group.')) {\r\n return this.group[getOptionNameSuffix(optionName, 6)] || [];\r\n }\r\n\r\n if (optionName) {\r\n return this.group[optionName] || [];\r\n }\r\n\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private checkAllowCustomValue(searchBy: string, searchTerm: string, filteredItems: any[], itemsData?: any) {\r\n // Allow custom value unless a direct match is found\r\n this.allowCustomValue = this.data.AllowCustomValue;\r\n let searchFields: string[];\r\n if (searchBy) {\r\n searchFields = searchBy.replace(/\\s/g, \"\").split(\",\");\r\n } else {\r\n searchFields = Object.keys(itemsData[0]);\r\n }\r\n // Iterate through filteritems to check if any item matches searchText in any of the searchFields\r\n for (const item of filteredItems) {\r\n // Check each searchField for searchText\r\n for (const field of searchFields) {\r\n if (item[field] && item[field] === searchTerm) {\r\n this.allowCustomValue = false;\r\n break; // Break the inner loop since we've found a match\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleFilter(searchTerm: any) {\r\n if (this.multiselect && this.data.SearchLength) {\r\n const meetsLengthCondition = this.data.SearchLength && this.data.SearchLength <= searchTerm.length;\r\n this.multiselect.toggle(meetsLengthCondition);\r\n }\r\n\r\n const searchBy = this.data.SearchFields ?? this.itemTextField;\r\n const itemsData = this.getItemsData();\r\n\r\n if (this.data.AllowCustomValue) {\r\n this.checkAllowCustomValue(searchBy, searchTerm, itemsData);\r\n }\r\n\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && searchTerm) {\r\n this.stateChange.next({ state: this.state, eventType: 'Filter', searchTerm: searchTerm });\r\n }\r\n }\r\n\r\n public onMultiSelectOpen(event: any) {\r\n // Ensure multiselect value meets the search length requirement\r\n if (this.data.SearchLength && this.multiselect.value.length < this.data.SearchLength) {\r\n event.preventDefault();\r\n return; // Early return to avoid unnecessary checks\r\n }\r\n }\r\n\r\n public onComboOpened(): void {\r\n this.handleOpened(this.comboboxComponent, 'Opened');\r\n }\r\n\r\n public onMultiSelectOpened(): void {\r\n this.handleOpened(this.multiselect, 'Opened');\r\n }\r\n\r\n public onDropDownListOpened(): void {\r\n this.handleOpened(this.dropdownlistComponent, 'Opened');\r\n }\r\n\r\n private handleOpened(component: any, eventType: string): void {\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && component) {\r\n this.isFirstOpened = true;\r\n component.optionsList.pageChange.subscribe((state) => {\r\n this.stateChange.next({ state: state, eventType: eventType, searchTerm: '' });\r\n this.scrollToTop(component);\r\n });\r\n }\r\n }\r\n\r\n private scrollToTop(component: any): void {\r\n // optionsList is a reference to the internal kendo-list component used in the DropDownList popup\r\n // pass the current state to the stateChange BehaviorSubject on each pageChange event\r\n if (component.optionsList?.pageChange && this.isFirstOpened) {\r\n component.optionsList.scrollToIndex(0);\r\n this.isFirstOpened = false;\r\n }\r\n }\r\n\r\n handleClose(event?: Event) {\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && this.hasSearched) {\r\n this.isFirstOpened = false;\r\n this.stateChange.next({ state: this.state, eventType: 'Closed', searchTerm: '' });\r\n }\r\n }\r\n\r\n public getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = FieldUtils.getGroupEvalValue.call(this, this.data.ItemTemplate);\r\n\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n }\r\n else if (itemTextField) {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n return item[itemTextField];\r\n }\r\n else {\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n resetInfiniteData() {\r\n this.infinitezData = [];\r\n this.state = { skip: 0, take: this.defaultTake };\r\n this.infiniteScrollPageNo = 0;\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = FieldUtils.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n\r\n // Component basic function\r\n clearData() {\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(this.data.Value, \"\", this.group);\r\n }\r\n\r\n // Disable Open On Focus\r\n // disableOpenOnFocus(comboboxComponent: any) {\r\n // if (this.data.DisableOpenOnFocus) {\r\n // return null;\r\n // }\r\n // else {\r\n // return comboboxComponent;\r\n // }\r\n // }\r\n\r\n disableOpenOnFocus<T extends { toggle: (isOpen: boolean) => void }>(component: T | null): void {\r\n if (!this.data?.DisableOpenOnFocus && component) {\r\n component.toggle(true); // opens the dropdown manually\r\n }\r\n}\r\n\r\n // OnChange\r\n public onChange_desktop(event: any) {\r\n super.onChange(null, event)\r\n this.handleInfiniteScrollOnChange(event);\r\n }\r\n\r\n private handleInfiniteScrollOnChange(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n else {\r\n this.reloadInfiniteData();\r\n }\r\n\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n }\r\n\r\n // Multi Selection Tree\r\n public hasChildren = (dataitem: any): boolean => !!dataitem['items'];\r\n\r\n public handleMultiSelectTreeFilter(value: string): void {\r\n this.parsedItemsData = this.onMultiSelectTreeSearch(this.getItemsData(), value);\r\n }\r\n\r\n public onMultiSelectTreeSearch(items: any[], searchedText: string): any[] {\r\n return items.reduce((acc, item) => {\r\n if (this.contains(item[this.itemTextField], searchedText)) {\r\n acc.push(item);\r\n }\r\n else if (item['items'] && item['items'].length > 0) {\r\n const newItems = this.onMultiSelectTreeSearch(item['items'], searchedText);\r\n\r\n if (newItems.length > 0) {\r\n const _item = Object.assign({}, item);\r\n _item['items'] = newItems;\r\n\r\n acc.push(_item);\r\n }\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n public contains(text: string, searchedText: string): boolean {\r\n return text.toLowerCase().includes((searchedText || \"\").toLowerCase());\r\n }\r\n\r\n public setSelectOption(value: any) {\r\n const optionName = this.data.OptionName || this.itemDataField;\r\n this.data.SelectOptions = Object.assign([], value);\r\n this.group.zData[optionName.slice(12)] = this.data.SelectOptions;\r\n }\r\n\r\n public focus() {\r\n if (this.comboboxComponent) {\r\n this.comboboxComponent.focus();\r\n return true;\r\n }\r\n if (this.multiselect) {\r\n this.multiselect.focus();\r\n return true;\r\n }\r\n if (this.multiselecttree) {\r\n this.multiselecttree.focus();\r\n return true;\r\n }\r\n if (this.dropdownlistComponent) {\r\n this.dropdownlistComponent.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private setComponentToUse() {\r\n if (this.data.InternalComponentType && Object.values(InternalComponentType_DropDown).includes(this.data.InternalComponentType as any)) {\r\n this.componentType = this.data.InternalComponentType as any;\r\n }\r\n else if (!this.data.Multiple) {\r\n this.componentType = InternalComponentType_DropDown.combobox;\r\n }\r\n else if (this.data.Multiple && !this.data.EnableCheckbox) {\r\n this.componentType = InternalComponentType_DropDown.multiselect;\r\n }\r\n else if (this.data.Multiple && this.data.EnableCheckbox) {\r\n this.componentType = InternalComponentType_DropDown.multiselecttree;\r\n this.setupDataItems();\r\n this.setDefaultExpandable();\r\n }\r\n }\r\n\r\n public getDataItems(): Array<any> {\r\n const modelValue = this.group.zModel[this.data.Value];\r\n return this.allDataItems.filter(x => modelValue.includes(x[this.itemValueField || 'Id']));\r\n }\r\n\r\n private setupDataItems() {\r\n const modelValue = this.group.zModel[this.data.Value];\r\n if (modelValue && modelValue.length > 0) {\r\n this.populateDataWithoutHierarchy(this.getItemsData());\r\n }\r\n }\r\n\r\n private populateDataWithoutHierarchy(dataItems) {\r\n for (const dataItem of dataItems) {\r\n this.allDataItems.push(dataItem);\r\n if (Array.isArray(dataItem.Value)) {\r\n this.populateDataWithoutHierarchy(dataItem.Value);\r\n }\r\n }\r\n }\r\n\r\n public setDefaultExpandable() {\r\n if (this.data.TreeListInitiallyExpandedDataIds) {\r\n const idList = typeof this.data.TreeListInitiallyExpandedDataIds == 'string' ? FieldUtils.getGroupValue(this.data.TreeListInitiallyExpandedDataIds as string, this.group) : this.data.TreeListInitiallyExpandedDataIds;\r\n if (idList && Array.isArray(idList)) {\r\n this.expandedKeys = idList;\r\n }\r\n }\r\n }\r\n\r\n private afterLoadzDataOptions() {\r\n if (this.group.afterLoadzDataOptions) {\r\n console.log(\"group.afterLoadzDataOptions triggered.\" + this.data);\r\n this.group.afterLoadzDataOptions(this.group, this.data);\r\n }\r\n }\r\n\r\n //#region Close drop-down selection upon page scroll\r\n private subscribeUISignal() {\r\n // this.eventSubscriptions.push(\r\n // this.componentService.uiSignalService.subscribeToEvent(SignalType.PageScrollStart).subscribe({\r\n // next: () => {\r\n // this.closeDownDrop();\r\n // }\r\n // })\r\n // );\r\n }\r\n\r\n private closeDownDrop() {\r\n const comp = this.getComponentInUseByType();\r\n if (comp && comp.isOpen) {\r\n comp.toggle(false);\r\n comp.blur();\r\n }\r\n }\r\n\r\n private getComponentInUseByType(): ComboBoxComponent | DropDownListComponent | MultiSelectComponent | MultiSelectTreeComponent {\r\n switch (this.componentType) {\r\n case InternalComponentType_DropDown.combobox:\r\n return this.comboboxComponent;\r\n case InternalComponentType_DropDown.multiselect:\r\n return this.multiselect;\r\n case InternalComponentType_DropDown.multiselecttree:\r\n return this.multiselecttree;\r\n case InternalComponentType_DropDown.dropdownlist:\r\n return this.dropdownlistComponent;\r\n default:\r\n return null;\r\n }\r\n }\r\n //#endregion\r\n}\r\n","<div [formGroup]=\"form\" class=\"zselectmultiple-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-combobox *ngIf=\"componentType == 'combobox'\"\r\n class=\"input-field e1tag-style1\"\r\n #comboboxComponent\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [allowCustom]=\"allowCustomValue\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [suggest]=\"true\"\r\n [filterable]=\"data.Filterable == false ? false : true\" \r\n (focus)=\"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n (close)=\"handleClose($event)\"\r\n (opened)=\"onComboOpened()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoComboBoxItemTemplate let-dataItem>\r\n <span #itemElement class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n </span>\r\n </ng-template>\r\n </kendo-combobox>\r\n <kendo-multiselect *ngIf=\"componentType == 'multiselect'\"\r\n class=\"input-field e1tag-style1\"\r\n #multiselect\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [allowCustom]=\"allowCustomValue\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n [checkboxes]=\"data.EnableCheckbox\"\r\n [loading]=\"isLoading\"\r\n [autoClose]=\"autoClose\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"onMultiSelectOpen($event)\"\r\n (close)=\"handleClose($event)\"\r\n (opened)=\"onMultiSelectOpened()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoMultiSelectItemTemplate let-dataItem>\r\n <span #itemElement class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n </span>\r\n </ng-template>\r\n </kendo-multiselect>\r\n <kendo-multiselecttree *ngIf=\"componentType == 'multiselecttree'\"\r\n class=\"input-field e1tag-style1\"\r\n #multiselecttree\r\n kendoMultiSelectTreeExpandable\r\n [placeholder]=\"data.PlaceHolder\"\r\n [kendoMultiSelectTreeHierarchyBinding]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [kendoMultiSelectTreeSummaryTag]=\"componentSettings.kendoMultiSelectTreeSummaryTag\"\r\n childrenField=\"Value\"\r\n [hasChildren]=\"hasChildren\"\r\n [textField]=\"itemTextField\"\r\n [valueField]=\"itemValueField\"\r\n [valuePrimitive]=\"true\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n [dataItems]=\"getDataItems()\"\r\n [formControlName]=\"data.Value\"\r\n [loading]=\"isLoading\" \r\n [expandOnFilter]=\"componentSettings.expandOnFilter\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n (filterChange)=\"handleMultiSelectTreeFilter($event)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n (close)=\"handleClose($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n [(expandedKeys)]=\"expandedKeys\"\r\n [popupSettings]=\"componentSettings.popupSettings\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoMultiSelectTreeNoDataTemplate>\r\n <h4>\r\n <span class=\"k-icon k-i-warning\"></span><br /><br />\r\n No record found.\r\n </h4>\r\n </ng-template>\r\n </kendo-multiselecttree>\r\n\r\n <kendo-dropdownlist *ngIf=\"componentType == 'dropdownlist'\"\r\n class=\"input-field e1tag-style1\"\r\n #dropdownlistComponent\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n placeholder=\"data.PlaceHolder\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n (focus) = \"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n (close)=\"handleClose($event)\"\r\n (opened)=\"onDropDownListOpened()\"\r\n [style]=\"componentProperties.style.style1\">\r\n <ng-template kendoDropDownListItemTemplate let-dataItem>\r\n <span #itemElement class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n </span>\r\n </ng-template>\r\n </kendo-dropdownlist>\r\n</div>\r\n","import { Component, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { DateTimePicker, DateTimePickerModule } from \"@syncfusion/ej2-angular-calendars\";\r\nimport { FormValidator } from '@syncfusion/ej2-inputs';\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ComponentUtils, FieldUtils, ZComponent, ZField } from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { DateParserFilter } from \"../zdatetime/dateParser.pipe\";\r\nimport { DateKendoFormatParser } from \"../zdatetime/dateKendoFormatParser.pipe\";\r\n\r\n@Component({\r\n selector: 'app-sfdatetimepicker',\r\n templateUrl: './sfdatetimepicker.component.html',\r\n styleUrls: ['../../../styles/component.scss', './sfdatetimepicker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, DateTimePickerModule, DateParserFilter, DateKendoFormatParser]\r\n})\r\n\r\nexport class SfdatetimepickerComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(\"sfdatetimepicker\") sfdatetimepicker: DateTimePicker;\r\n public minDate: Date = null;\r\n public maxDate: Date = null;\r\n public interval: number;\r\n public disableStrictMode: boolean = false;\r\n public formObject?: FormValidator;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n ComponentUtils.setComponentProperties(this);\r\n ComponentUtils.registerComponent(this);\r\n super.setupInnerField();\r\n this.interval = this.data.StepValue ? Number(this.data.StepValue) : 30;\r\n this.disableStrictMode = !this.data.DisableStrictMode;\r\n this.setMinAndMaxDateRange();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private convertDateTimeValueToString(value: any): any {\r\n if (value == undefined) {\r\n return undefined;\r\n }\r\n\r\n const valueDate = value as Date;\r\n\r\n if (this.data.IsIgnoreTimeZone) {\r\n const timezoneOffSet = new Date(value).getTimezoneOffset();\r\n valueDate.setMinutes(valueDate.getMinutes() + (-timezoneOffSet));\r\n return valueDate.toISOString();\r\n }\r\n\r\n return (value instanceof Date ? value : new Date(value)).toISOString();\r\n\r\n }\r\n\r\n public setDateRange = (MinDate: any, MaxDate: any): any => {\r\n if (!isNaN(Date.parse(MinDate))) {\r\n this.minDate = new Date(MinDate);\r\n }\r\n if (!isNaN(Date.parse(MaxDate))) {\r\n this.maxDate = new Date(MaxDate);\r\n }\r\n }\r\n\r\n public updateElementClasses(form: any, fieldData: ZField) {\r\n const inputElements = document.querySelectorAll('app-sfdatetimepicker .e-keyboard.e-datetimepicker');\r\n const textboxElements = document.querySelectorAll('app-sfdatetimepicker .e-custom.e-datetime-wrapper');\r\n\r\n this.updateInputElements(inputElements, fieldData);\r\n this.updateTextboxElements(textboxElements, fieldData);\r\n }\r\n\r\n private updateInputElements(inputElements: NodeListOf<Element>, fieldData: ZField): void {\r\n inputElements.forEach((input: Element) => {\r\n const className = fieldData[\"componentProperties\"].isReadOnly ? 'read-only-input' : 'editable-input';\r\n (input as HTMLElement).classList.add(className);\r\n });\r\n }\r\n\r\n private updateTextboxElements(textboxElements: NodeListOf<Element>, fieldData: ZField): void {\r\n textboxElements.forEach((textbox: Element) => {\r\n const className = fieldData[\"componentProperties\"].isReadOnly ? 'read-only-textbox' : 'editable-textbox';\r\n (textbox as HTMLElement).classList.add(className);\r\n });\r\n\r\n textboxElements.forEach(element => {\r\n\r\n if (element.hasAttribute('style')) {\r\n const styles = element.getAttribute('style');\r\n if (!styles.includes('height')) {\r\n element[\"style\"].height = '30px'; // Set height to 90%\r\n }\r\n }\r\n });\r\n }\r\n\r\n public onChange(args: any) {\r\n const value = args.value;\r\n const formControl = this.form.controls[this.data.Value];\r\n const val = this.convertDateTimeValueToString(value);\r\n\r\n if (formControl) {\r\n formControl.setValue(val);\r\n formControl.markAsTouched();\r\n }\r\n super.onChange(null, val);\r\n }\r\n\r\n private setMinAndMaxDateRange() {\r\n const minDateGroupValue = FieldUtils.getGroupValue(this.data.MinDate as any, this.group);\r\n const minDateValue = minDateGroupValue ?? this.data.MinDate;\r\n\r\n const maxDateGroupValue = FieldUtils.getGroupValue(this.data.MaxDate as any, this.group);\r\n const maxDateValue = maxDateGroupValue ?? this.data.MaxDate;\r\n this.setDateRange(minDateValue, maxDateValue);\r\n }\r\n}\r\n","<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngClass]=\"updateElementClasses(form, data)\">\r\n <ejs-datetimepicker #sfdatetimepicker\r\n [ngModel]=\"form.get(data.Value).value | dateParser : data\"\r\n (change)=\"onChange($event)\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [step]=\"interval\"\r\n [format]=\"data | dateFormatKendo\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [showClearButton]=\"data.ClearButton\"\r\n [strictMode]=\"disableStrictMode\"\r\n cssClass=\"e-custom\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\">\r\n </ejs-datetimepicker>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, OnDestroy, ViewChild } from \"@angular/core\";\r\nimport { Subscription, Observable, of } from \"rxjs\";\r\nimport { delay } from 'rxjs/operators';\r\nimport { ComboBoxComponent, ComboBoxModule } from \"@progress/kendo-angular-dropdowns\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport {\r\n CacheService, DataUtils, DropdownUtils, FieldUtils, ResourceApiService, WebApiService,\r\n ZComponent, ZSelectMultipleTemplateParams, ZSelectPostApiParams\r\n} from \"mmhglobal-zcore\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ZtextComponent } from \"../ztext/ztext.component\";\r\n\r\n@Component({\r\n selector: \"app-zpostselectinput\",\r\n templateUrl: \"./zpostselectinput.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zpostselectinput.component.scss\"],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, ComboBoxModule, ZtextComponent]\r\n})\r\n\r\nexport class ZpostselectinputComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n @ViewChild(\"comboBox\") comboBox: ComboBoxComponent;\r\n items: Array<any> = [];\r\n modelzData: Array<any>;\r\n infinitezData: Array<any> = [];\r\n infiniteSearchText = null;\r\n // subscription: Subscription;\r\n toggleSelectable = true;\r\n itemValueField: string = null;\r\n itemTextField: string = null;\r\n itemDataField: string = null;\r\n itemTemplate = \"{{item[itemTextField]}}\";\r\n infiniteScrollPageNo = 0;\r\n isLoading = true;\r\n dataInfo: {} = {\r\n \"itemsResourceURL\": \"\",\r\n \"optionFilters\": \"\",\r\n \"totalCount\": 0\r\n };\r\n\r\n private debounceSub: Subscription;\r\n\r\n constructor(\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly webApiService: WebApiService,\r\n private readonly cacheService: CacheService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n super.setupInnerField();\r\n DropdownUtils.parseSelectMultipleBinding(this.data.CCSelectOptions, this);\r\n\r\n const fieldValue = this.data.CCValue;\r\n let getzDataForzModel$: Observable<any>;\r\n if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$\r\n && this.group.zModel && this.group.zModel[fieldValue]) {\r\n const recordId = this.group.zModel[fieldValue];\r\n getzDataForzModel$ = DropdownUtils.loadInfiniteScrollData(null, '', this, recordId.toString());\r\n if (getzDataForzModel$) {\r\n getzDataForzModel$.subscribe((zdata) => {\r\n console.log(this.data.Name, ' - initial zData load: ', zdata);\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n this.handleFilter(null, true);\r\n } else {\r\n if (this.data.CCOptionResourceURL) {\r\n this.lazyLoadDataOptions().subscribe(() => {\r\n this.isLoading = false;\r\n });\r\n } else {\r\n this.isLoading = false;\r\n }\r\n }\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n }\r\n\r\n lazyLoadDataOptions(): Observable<any> {\r\n const resourceUrl = this.resourceApiService.getURL(\r\n this.data.CCOptionResourceURL\r\n );\r\n\r\n const filterParam = new ZSelectPostApiParams();\r\n filterParam.sorts = this.data.CCOptionSort;\r\n filterParam.columns = this.data.CCOptionColumns;\r\n filterParam.filters = this.data.CCOptionFilter;\r\n\r\n return DropdownUtils.getDataOptions(\r\n this.data.CCOptionName,\r\n filterParam,\r\n this.group,\r\n resourceUrl,\r\n this.cacheService,\r\n this.webApiService,\r\n this.data['DisableCache']\r\n );\r\n }\r\n\r\n getItemsData() {\r\n if (this.data.HasInfiniteScroll) {\r\n return this.infinitezData;\r\n }\r\n const optionName = this.data.CCOptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n if (Array.isArray(this.data.CCSelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n this.group.zData[optionName.slice(12)] = this.data.CCSelectOptions;\r\n this.itemDataField = optionName;\r\n }\r\n\r\n if (optionName.startsWith('zData.')) {\r\n return this.group.zData[optionName.slice(6)] || [];\r\n }\r\n if (optionName.startsWith('group.zData.')) {\r\n return this.group.zData[optionName.slice(12)] || [];\r\n }\r\n if (optionName.startsWith('group.')) {\r\n return this.group[optionName.slice(6)] || [];\r\n }\r\n if (optionName) {\r\n return this.group[optionName] || [];\r\n }\r\n console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n }\r\n\r\n public onChangeCC_desktop(event: any) {\r\n super.onChangeCC(null, event)\r\n this.handleInfiniteScrollOnChange(event);\r\n }\r\n\r\n private handleInfiniteScrollOnChange(value: string) {\r\n if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n const textField = this.itemTextField.toString();\r\n const valueField = this.itemValueField.toString();\r\n let zdataModel = [];\r\n if (value) {\r\n zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n this.modelzData = zdataModel.slice();\r\n }\r\n if (this.itemDataField.startsWith('group.zData.')) {\r\n this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n } else if (this.itemDataField.startsWith('group.')) {\r\n this.group[this.itemDataField.slice(6)] = zdataModel;\r\n }\r\n }\r\n }\r\n\r\n onSearch(event: { component: any; text: string }) {\r\n const component = event.component;\r\n if (component) {\r\n component.startSearch();\r\n component.enableInfiniteScroll();\r\n }\r\n\r\n if (this.data.HasInfiniteScroll) {\r\n if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n this.infiniteScrollPageNo = 0;\r\n }\r\n this.getInfiniteData(event);\r\n } else {\r\n this.infiniteScrollPageNo = 0;\r\n if (component) {\r\n component.items = [];\r\n }\r\n const params = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 15,\r\n sortColumnName: \"\",\r\n sortOrder: \"\",\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: \"\"\r\n };\r\n const searchFields = this.data.SearchFields\r\n ? this.data.SearchFields\r\n : this.itemTextField;\r\n const filteritems = DataUtils.filterSearchItems(\r\n this.getItemsData(),\r\n // this.items,\r\n event.text,\r\n searchFields,\r\n params.pageNo,\r\n params.pageSize\r\n );\r\n if (component) {\r\n const items = component.items.concat(filteritems);\r\n component.items = items;\r\n component.endInfiniteScroll();\r\n component.endSearch();\r\n this.isLoading = false;\r\n }\r\n }\r\n }\r\n\r\n getInfiniteData(event: {\r\n component: any;\r\n text: string;\r\n }) {\r\n DropdownUtils.loadInfiniteScrollData(event.component, event.text, this);\r\n }\r\n\r\n handleFilter(value: any, justOneTime?: boolean) {\r\n if (this.debounceSub) {\r\n this.debounceSub.unsubscribe();\r\n }\r\n this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n this.isLoading = true;\r\n this.onSearch({ component: null, text: value });\r\n });\r\n }\r\n\r\n handleOpen() {\r\n if (this.data.HasInfiniteScroll) {\r\n this.handleFilter(null);\r\n }\r\n }\r\n\r\n getItemTemplate(\r\n item: any,\r\n data: any,\r\n group: any,\r\n itemValueField: string,\r\n itemTextField: string\r\n ) {\r\n // ToDO: itemValueField and itemTextField\r\n if (this.data.ItemTemplate) {\r\n const getTemplateFunc = FieldUtils.getGroupEvalValue.call(\r\n this,\r\n this.data.ItemTemplate\r\n );\r\n return getTemplateFunc({\r\n item,\r\n data,\r\n group,\r\n itemValueField,\r\n itemTextField\r\n } as ZSelectMultipleTemplateParams);\r\n } else if (itemTextField) {\r\n return item[itemTextField];\r\n } else {\r\n return Object.values(item).join(\", \");\r\n }\r\n }\r\n\r\n onAddItem(event: any) {\r\n const f = FieldUtils.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n if (typeof f === 'function') {\r\n const callFunc = f.bind(this.group.ctrlScope);\r\n return callFunc();\r\n }\r\n console.warn('Invalid declaration of OnAddItem: ', f);\r\n return;\r\n }\r\n\r\n public focus() {\r\n if (this.comboBox) {\r\n this.comboBox.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span [style]=\"componentProperties.style.style2\" class=\"ccinput-ccvalue-container e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChangeCC_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n #comboBox>\r\n </kendo-combobox>\r\n </span>\r\n <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n <app-ztext [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n </app-ztext>\r\n </span>\r\n </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { NumericTextBoxComponent, NumericTextBoxModule } from '@progress/kendo-angular-inputs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../../base/inputfieldbase.component';\r\nimport { FieldUtils, ZComponent } from \"mmhglobal-zcore\";\r\nimport { ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ZNumericParser } from './znumeric.component.pipe';\r\n\r\n@Component({\r\n selector: 'app-znumeric',\r\n templateUrl: './znumeric.component.html',\r\n styleUrls: ['../../../styles/component.scss', './znumeric.component.scss'],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, NumericTextBoxModule, ZNumericParser]\r\n})\r\nexport class ZnumericComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n @ViewChild(\"numeric\") numeric: NumericTextBoxComponent;\r\n public inputMode = \"decimal\";\r\n public minValue = 0;\r\n public maxValue = 0;\r\n private minValidator;\r\n private maxValidator;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.setInitMinAndMaxValue();\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeMinAndMaxValidator();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n setMinValue(newValue: number) {\r\n this.minValue = newValue;\r\n\r\n // mark this control as touched to trigger for validation\r\n const control = this.form.controls[this.data.Value];\r\n control.markAsTouched();\r\n }\r\n\r\n setMaxValue(newValue: number) {\r\n this.maxValue = newValue;\r\n\r\n // mark this control as touched to trigger for validation\r\n const control = this.form.controls[this.data.Value];\r\n control.markAsTouched();\r\n }\r\n\r\n public focus() {\r\n if (this.numeric) {\r\n this.numeric.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private setInitMinAndMaxValue() {\r\n if (typeof this.data.MinValue == 'string' && (this.data.MinValue as any).toString().startsWith('group.')) {\r\n this.minValue = FieldUtils.getGroupValue((this.data.MinValue as any).toString(), this.group);\r\n }\r\n else {\r\n this.minValue = this.data.MinValue;\r\n }\r\n\r\n if (typeof this.data.MaxValue == 'string' && (this.data.MaxValue as any).toString().startsWith('group.')) {\r\n this.maxValue = FieldUtils.getGroupValue((this.data.MaxValue as any).toString(), this.group);\r\n }\r\n else {\r\n this.maxValue = this.data.MaxValue;\r\n }\r\n\r\n this.addMinAndMaxValidator();\r\n }\r\n\r\n private addMinAndMaxValidator() {\r\n // Setup form validator for ionic components only (Kendo component will be auto setup)\r\n const control = this.form?.controls[this.data.Value];\r\n if (control) {\r\n if (this.minValue != undefined) {\r\n this.minValidator = Validators.min(Number(this.minValue));\r\n control.addValidators(this.minValidator);\r\n }\r\n\r\n if (this.maxValue != undefined) {\r\n this.maxValidator = Validators.max(Number(this.maxValue));\r\n control.addValidators(this.maxValidator);\r\n }\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private removeMinAndMaxValidator() {\r\n this.minValue = null;\r\n this.maxValue = null;\r\n\r\n const control = this.form?.controls[this.data.Value];\r\n if (control) {\r\n if (control.hasValidator(this.minValidator)) {\r\n control.removeValidators(this.minValidator)\r\n }\r\n\r\n if (control.hasValidator(this.maxValidator)) {\r\n control.removeValidators(this.maxValidator)\r\n }\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"znumeric-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <kendo-numerictextbox #numeric\r\n class=\"input-field e1tag-style1\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [decimals]=\"data.DecimalPlace\"\r\n [formControlName]=\"data.Value\"\r\n [format]=\"data.FormatOptions\"\r\n [id]=\"data.Value\"\r\n [max]=\"maxValue\"\r\n [min]=\"minValue\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [spinners]=\"data.ShowSpinners\"\r\n [changeValueOnScroll] = \"data.ChangeValueOnScroll\"\r\n [step]=\"data.StepValue\"\r\n [style]=\"componentProperties.style.style1\"\r\n [value]=\"0 | znumeric : form : data\"\r\n (valueChange)=\"onChange(null, $event)\"\r\n [autoCorrect]=\"data.AutoCorrect\">\r\n </kendo-numerictextbox>\r\n</div>\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { InputsModule, TextAreaComponent } from '@progress/kendo-angular-inputs';\r\nimport { InputFieldBase } from '../../base/inputfieldbase.component';\r\nimport { ZComponentService } from '../../../services/zcomponent.service';\r\nimport { ZComponent } from 'mmhglobal-zcore';\r\nimport { Subscription } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-ztextarea',\r\n templateUrl: './ztextarea.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztextarea.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ReactiveFormsModule, InputsModule]\r\n})\r\n\r\nexport class ZtextareaComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n @ViewChild('textarea') textarea: TextAreaComponent;\r\n private valueChangeSubscription: Subscription;\r\n\r\n constructor(\r\n componentService: ZComponentService\r\n ) {\r\n super();\r\n }\r\n\r\n public charCounterDisplayStr: string;\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.setCharCounterDisplayStr();\r\n this.subscribeToValueChange();\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private setCharCounterDisplayStr() {\r\n let characterCount = 0;\r\n if (this.group.zModel?.[this.data.Value]) {\r\n characterCount = this.group.zModel[this.data.Value].length;\r\n }\r\n this.charCounterDisplayStr = `${characterCount} ${this.data.MaxLength ? (' / ' + this.data.MaxLength) : ''}`;\r\n }\r\n\r\n public override onChange(event: any, fieldValue?: any) {\r\n super.onChange(event, fieldValue);\r\n }\r\n\r\n private subscribeToValueChange() {\r\n if (this.data.IsShowCharacterCount) {\r\n const formcontrol = this.form.get(this.data.Value);\r\n if (formcontrol) {\r\n this.valueChangeSubscription = formcontrol.valueChanges.subscribe(value => {\r\n this.setCharCounterDisplayStr();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public focus() {\r\n if (this.textarea) {\r\n this.textarea.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.valueChangeSubscription) {\r\n this.valueChangeSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <kendo-textarea #textarea\r\n class=\"input-field e1tag-style1\"\r\n [formControlName]=\"data.Value\"\r\n [id]=\"data.Value\"\r\n [maxlength]=\"data.MaxLength\"\r\n [minlength]=\"data.MinLength\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.textarea-readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [resizable]=\"data.Resizable || 'none'\"\r\n [rows]=\"data.textAreaRows\"\r\n [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n [style]=\"componentProperties.style.style1\"\r\n (click)=\"onItemClick($event)\"\r\n (valueChange)=\"onChange($event, $event)\">\r\n\r\n <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\"\r\n class=\"character-counter-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <span class=\"character-counter e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n </kendo-textarea-suffix>\r\n </kendo-textarea>\r\n</div>\r\n","import { Component, OnInit, NgZone, ViewChild } from \"@angular/core\";\r\nimport { take } from 'rxjs/operators';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport { FileInfo, SuccessEvent, RemoveEvent, UploadEvent, FileRestrictions, ChunkSettings, SelectEvent, UploadComponent, UploadModule, FileSelectModule } from \"@progress/kendo-angular-upload\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport {\r\n AuthService, ZCoreService, CompressImageService,\r\n ZComponent, ZComponentHelper, ZComponentOutputEvent, UploadMetaData, ImageCompressionConfig, SharePointService, AttachmentConfig, Attachment,\r\n ModelUtils\r\n} from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\n\r\nexport class MyFileInfo implements FileInfo {\r\n name: string;\r\n uid?: string;\r\n myUid?: string;\r\n}\r\n\r\n\r\n@Component({\r\n selector: \"app-zupload\",\r\n templateUrl: \"./zupload.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zupload.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ReactiveFormsModule, UploadModule, FileSelectModule]\r\n})\r\n\r\nexport class ZuploadComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(\"uploadComponent\") uploadComponent: UploadComponent;\r\n\r\n uploadAttachmentUrl: string = null;\r\n uploadSaveUrl = \"/Attachment/Chunk_Upload_Save\"; // should represent an actual API endpoint\r\n uploadRemoveUrl = \"/Attachment/Chunk_Upload_Remove\"; // should represent an actual API endpoint\r\n downloadFileUrl = \"/Attachment/downloadFile\";\r\n getImageUrl = \"/Attachment/getImage\"; // GET method\r\n isAutoUpload = false;\r\n isMultiple = false;\r\n imagePreviews: any[] = [];\r\n uid: string[] = [];\r\n showFileList = true;\r\n fileList: any[] = [];\r\n\r\n public restrictions: FileRestrictions = {\r\n minFileSize: 1,\r\n maxFileSize: 4194304,\r\n allowedExtensions: [\r\n \"jpg\",\r\n \"jpeg\",\r\n \"png\",\r\n \"bmp\",\r\n \"pdf\",\r\n \"txt\",\r\n \"docx\",\r\n \"doc\",\r\n \"xlsx\",\r\n \"xls\",\r\n \"ppt\",\r\n \"pptx\",\r\n \"csv\",\r\n ],\r\n };\r\n\r\n public chunkSettings: ChunkSettings = {\r\n size: 102400,\r\n maxAutoRetries: 3,\r\n };\r\n\r\n // zModelValue = [{\r\n // name: \"RXJS 01.png\",\r\n // size: 128753,\r\n // uid: \"c96e234d-af61-4587-adcc-3b400ddef884\"\r\n // }];\r\n\r\n // fieldElement = [{\r\n // Name: 'FileUploadList',\r\n // Type: 'zupload',\r\n // Value: 'FileUploadList',\r\n // SelectionOptions: ['jpg', 'jpeg', 'png', 'bmp', 'pdf'],\r\n // UploadMetaData: 'group.UploadMetaData',\r\n // AutoUpload: false,\r\n // AllowRemove: true,\r\n // Multiple: false,\r\n // OnSuccess: 'group.onSuccess()',\r\n // DivClass: \"col-md-12 col-md-6\",\r\n // Visible: true\r\n // }];\r\n\r\n constructor(\r\n private readonly authService: AuthService,\r\n private readonly compressImage: CompressImageService,\r\n private readonly zcoreService: ZCoreService,\r\n private readonly ngZone: NgZone,\r\n private readonly sharePointService: SharePointService,\r\n ) {\r\n super();\r\n this.uploadAttachmentUrl = this.zcoreService.getEnvironment().uploadAttachmentUrl;\r\n this.uploadSaveUrl = this.uploadAttachmentUrl + this.uploadSaveUrl;\r\n this.uploadRemoveUrl = this.uploadAttachmentUrl + this.uploadRemoveUrl;\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n // this.group['UploadMetaData'] = new UploadMetaData(null, '15', 'SO-No-1234', 'SaleOrder');\r\n\r\n\r\n // this.uploadSaveUrl = uploadAttachmentUrl + this.uploadSaveUrl;\r\n // this.uploadRemoveUrl = uploadAttachmentUrl + this.uploadRemoveUrl;\r\n\r\n if (this.data.SelectOptions && !this.data.AllowedFileExtension) {\r\n this.restrictions.allowedExtensions = (this.data.SelectOptions as unknown) as string[];\r\n }\r\n else if (!this.data.SelectOptions && this.data.AllowedFileExtension) {\r\n this.restrictions.allowedExtensions = this.restrictions.allowedExtensions.concat(this.data.AllowedFileExtension);\r\n }\r\n\r\n if (this.data.MinFileSize) {\r\n this.restrictions.minFileSize = this.data.MinFileSize;\r\n }\r\n\r\n if (this.data.MaxFileSize) {\r\n this.restrictions.maxFileSize = this.data.MaxFileSize;\r\n }\r\n\r\n this.isAutoUpload = this.data.AutoUpload || false;\r\n\r\n if (!this.data.AllowRemove) {\r\n this.uploadRemoveUrl = \"\";\r\n }\r\n\r\n if (this.data.Multiple) {\r\n this.isMultiple = this.data.Multiple;\r\n }\r\n\r\n this.componentProperties.style.style6 = this.componentProperties.style.style6 || \"margin: 5px; border: 1px solid gray;\";\r\n }\r\n\r\n onSuccess(e: SuccessEvent): void {\r\n // angular kendo upload didn't filter away Sent event for remove, so we have to handle it here\r\n // upload progress not required for removal, thus it's also removed\r\n // @ts-ignore\r\n if (e.operation === \"remove\" && (e.response.type === HttpEventType.Sent || e.response.type === HttpEventType.UploadProgress)) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(this.group.zModel[this.data.Value])) {\r\n this.group.zModel[this.data.Value] = [];\r\n }\r\n\r\n const file = e.files[0] as MyFileInfo;\r\n const existingFileIndex = this.group.zModel[this.data.Value].findIndex(f => f.name === file.name && f.uid === file.uid);\r\n if (e.operation === \"upload\") {\r\n // console.log('upload Success: ', e);\r\n //sharepoint required to read data from fileUid and attachment able to get data from fileUid too.\r\n file.myUid = e.response?.body?.fileUid ?? file.uid;\r\n delete file['httpSubscription'];\r\n\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value][existingFileIndex] = file;\r\n } else {\r\n this.group.zModel[this.data.Value].push(file);\r\n }\r\n\r\n } else if (e.operation === \"remove\") {\r\n if (existingFileIndex !== -1) {\r\n this.group.zModel[this.data.Value].splice(existingFileIndex, 1);\r\n }\r\n }\r\n\r\n ModelUtils.setFieldValueWithFormAndNestedModel(this.data, this.group.zModel[this.data.Value], this.group);\r\n this.group.subject.next({\r\n type: \"zupload-onSuccess\",\r\n target: this.data.OnSuccess,\r\n event: e,\r\n data: { value: e.files[0], field: this.data },\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private compressionConfigHandler(imgConfig: ImageCompressionConfig): ImageCompressionConfig {\r\n if (imgConfig.FileSizeMaxSize) {\r\n imgConfig.FileSizeMaxSizeByte = this.convertSizeToByte(imgConfig.FileSizeMaxSize);\r\n }\r\n\r\n if (imgConfig.FileSizeMinSize) {\r\n imgConfig.FileSizeMinSizeByte = this.convertSizeToByte(imgConfig.FileSizeMinSize);\r\n }\r\n else {\r\n imgConfig.FileSizeMinSizeByte = 0;\r\n }\r\n\r\n return imgConfig;\r\n }\r\n\r\n private convertSizeToByte(sizeString: string): number {\r\n let _tempFileSizeMaxSize: number = 0;\r\n let sizeByByte: number = 0;\r\n let sizeType = 'b';\r\n\r\n // remove all space\r\n const _tempFileSize = sizeString.replace(/ /g, '');\r\n\r\n // check last char is alphabetic\r\n const lastChar = _tempFileSize.slice(-1);\r\n if (isNaN(parseFloat(lastChar))) {\r\n const secLastChar = _tempFileSize.slice(-2, -1);\r\n\r\n if (isNaN(parseFloat(secLastChar))) {\r\n // check last 2nd char is alphabetic\r\n sizeType = secLastChar + sizeType;\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -2));\r\n }\r\n else {\r\n _tempFileSizeMaxSize = parseFloat(_tempFileSize.slice(0, -1));\r\n }\r\n\r\n switch (sizeType.toLowerCase()) {\r\n case \"b\":\r\n sizeByByte = _tempFileSizeMaxSize\r\n break;\r\n case \"kb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1024\r\n break;\r\n case \"mb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1048576\r\n break;\r\n case \"gb\":\r\n sizeByByte = _tempFileSizeMaxSize * 1073741824\r\n break;\r\n }\r\n }\r\n else {\r\n // default using bytes if no size type\r\n sizeByByte = parseFloat(_tempFileSize);\r\n }\r\n\r\n return sizeByByte;\r\n }\r\n\r\n uploadEventHandler(e: UploadEvent) {\r\n // Image Preview\r\n const me = this;\r\n\r\n e.files.forEach((file: FileInfo) => {\r\n if (!me.isValidUploadedFile(me, file)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n else {\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n if (me.data.EnableImagePreview) {\r\n if (!me.uid.includes(file.uid)) {\r\n me.uid.push(file.uid);\r\n me.imagePreviews.push({ ...file, src: <string>reader.result });\r\n }\r\n }\r\n }\r\n reader.readAsDataURL(file.rawFile);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Add metadata to the upload event\r\n let additional: UploadMetaData = ZComponentHelper.getGroupEvalValue.call(this, this.data.UploadMetaData);\r\n\r\n if (!(additional instanceof UploadMetaData)) {\r\n console.error(\"UploadMetaData defined at \" + this.data.UploadMetaData + \" is invalid: \", additional);\r\n additional = new UploadMetaData(null, \"0\", null, null, null);\r\n }\r\n\r\n\r\n //#region sharepoint\r\n let attachmentInfo: Attachment = this.sharePointService.getAttachmentInfo(this.data[\"DownloadFileConfig\"]);\r\n\r\n //add tagging into metadata\r\n if (attachmentInfo) {\r\n if (attachmentInfo.tag) {\r\n const tag = this.sharePointService.generateTagging(this.group, attachmentInfo.tag);\r\n additional[AttachmentConfig.tag] = tag;\r\n }\r\n additional[AttachmentConfig.siteName] = attachmentInfo.siteName;\r\n additional[AttachmentConfig.documentLibraryName] = attachmentInfo.documentLibraryName;\r\n additional[AttachmentConfig.isSaveToSharePoint] = attachmentInfo.isSaveToSharePoint;\r\n }\r\n //#endregion\r\n\r\n const str = JSON.stringify(additional);\r\n\r\n e.data = { additional: str, };\r\n e.headers = e.headers.append(\"Authorization\", \"Bearer \" + this.authService.e1AccessToken);\r\n }\r\n\r\n onRemove(e: RemoveEvent): void {\r\n // remove file from component memory\r\n const index = this.fileList.findIndex(\r\n (item) => item.uid === e.files[0].uid\r\n );\r\n\r\n if (index >= 0) {\r\n this.fileList.splice(index, 1);\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n\r\n if (this.data['FileRemovedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileRemovedEvent\",\r\n target: this.data['FileRemovedEvent'],\r\n data: e\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n const myFile: MyFileInfo = e.files[0] as MyFileInfo;\r\n\r\n // console.log('remove done: ', e);\r\n e.data = {\r\n id: myFile.myUid,\r\n };\r\n e.headers = e.headers.append(\r\n \"Authorization\",\r\n \"Bearer \" + this.authService.e1AccessToken\r\n );\r\n\r\n if (this.data.EnableImagePreview) {\r\n e.files.forEach((file: FileInfo) => {\r\n this.imagePreviews = this.imagePreviews.filter(f => f.uid !== file.uid);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onChange(file: FileInfo[]): void {\r\n if (this.data['FileChangedEvent']) {\r\n this.group.subject.next({\r\n type: \"zupload-fileChangedEvent\",\r\n target: this.data['FileChangedEvent'],\r\n data: file\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n private isValidUploadedFile(me: any, file: FileInfo): boolean {\r\n const fileSize = file.rawFile.size;\r\n const fileExtension = file.rawFile.name.split('.').pop().toLowerCase();\r\n\r\n // Check if file size and extension are valid\r\n if (fileSize > me.restrictions.maxFileSize || !me.restrictions.allowedExtensions.includes(fileExtension)) {\r\n let errorMessage = 'Error: ';\r\n if (!me.restrictions.allowedExtensions.includes(fileExtension)) {\r\n errorMessage = `Invalid file type. Allowed types are: ${me.restrictions.allowedExtensions.join(', ')}.`;\r\n }\r\n else if (fileSize > me.restrictions.maxFileSize) {\r\n errorMessage = `File size cannot exceeds ${me.formatFileSize(me.restrictions.maxFileSize)}.`;\r\n }\r\n\r\n me.alertService.showOkay('Failed to upload', errorMessage, ['col-4']);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n selectEventHandler(e: SelectEvent) {\r\n const me = this;\r\n\r\n //#region sharepoint\r\n const attachmentInfo: Attachment = this.sharePointService.getAttachmentInfo(this.data[\"DownloadFileConfig\"]);\r\n // Change uploadSaveUrl if saving to SharePoint\r\n if (attachmentInfo && attachmentInfo.isSaveToSharePoint && attachmentInfo.siteName) {\r\n const attachmentSourceUrl = this.zcoreService.getEnvironment().attachmentSourceUrl;\r\n this.uploadSaveUrl = attachmentSourceUrl + '/Chunk_Upload_Save';\r\n }\r\n //#endregion\r\n\r\n if (this.data['SelectFileOnly']) {\r\n // Append all files to component memory\r\n e.files.forEach(async (file: FileInfo) => {\r\n if (me.isValidUploadedFile(me, file)) {\r\n if (file.rawFile) {\r\n const reader = new FileReader();\r\n reader.onload = function (ev) {\r\n // Clone the data and also add the read file to the object\r\n const fileData = Object.assign({}, file);\r\n fileData['file'] = ev.target[\"result\"];\r\n\r\n // Push to component fileList\r\n me.fileList.push(fileData);\r\n me.group['zupload_' + me.data.Value] = me.fileList;\r\n\r\n if (me.data['FileSelectedEvent']) {\r\n // Call the project event\r\n me.group.subject.next({\r\n type: \"zupload-fileSelectedEvent\",\r\n target: me.data['FileSelectedEvent'],\r\n data: me.fileList\r\n } as ZComponentOutputEvent);\r\n }\r\n };\r\n await reader.readAsDataURL(file.rawFile);\r\n }\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n else {\r\n // Only workable for Auto Upload = false\r\n if (!this.data.AutoUpload) {\r\n // Compression for image file\r\n const imageCompressionEnabled = this.data.Compression ? true : false;\r\n\r\n //Check if Image Compression is enabled.\r\n if (imageCompressionEnabled === true) {\r\n e.files.forEach((file: FileInfo) => {\r\n if (me.isValidUploadedFile(me, file)) {\r\n // Compress only if it is an image file\r\n if (file.rawFile && file.rawFile.type.includes(\"image\")) {\r\n if (!file.validationErrors) {\r\n const imgConfig = this.compressionConfigHandler(this.data.Compression);\r\n if (file.size > imgConfig.FileSizeMinSizeByte) {\r\n me.compressImage.compress(file.rawFile, imgConfig) //Pass in parameter to set the Compression Options\r\n .pipe(take(1))\r\n .subscribe(compressFile => {\r\n this.ngZone.run(() => {\r\n file.rawFile = compressFile;\r\n file.size = compressFile.size;\r\n\r\n // Push to component fileList\r\n me.fileList.push(Object.assign({}, file));\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file.rawFile);\r\n });\r\n console.log(`Compressed file size: ${(file.rawFile.size / 1024).toFixed(2)}KB`);\r\n });\r\n } // file size check\r\n } // validationErrors check\r\n } // file type check\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n }) // loop each file\r\n } // imagecompression check\r\n\r\n // add to group scope\r\n me.group['zupload_' + me.data.Value] = e.files;\r\n }\r\n }\r\n }\r\n\r\n clearFiles() {\r\n this.uploadComponent.clearFiles();\r\n this.group['zupload_' + this.data.Value] = this.fileList;\r\n }\r\n\r\n private formatFileSize(bytes: number): string {\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) return '0 Byte';\r\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return parseFloat((bytes / Math.pow(1024, i)).toFixed(2)) + sizes[i];\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-upload\r\n *ngIf=\"!data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n [autoUpload]=\"isAutoUpload\"\r\n [saveUrl]=\"uploadSaveUrl\"\r\n [removeUrl]=\"uploadRemoveUrl\"\r\n [restrictions]=\"restrictions\"\r\n [multiple]=\"isMultiple\"\r\n [chunkable]=\"chunkSettings\"\r\n [showFileList]=\"showFileList\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n (success)=\"onSuccess($event)\"\r\n (upload)=\"uploadEventHandler($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-upload>\r\n\r\n <kendo-fileselect\r\n *ngIf=\"data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [formControlName]=\"data.Value\"\r\n (valueChange)=\"onChange($event)\" \r\n [restrictions]=\"restrictions\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-fileselect>\r\n\r\n <div\r\n *ngIf=\"imagePreviews.length\"\r\n class=\"image-preview-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div\r\n class=\"label-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n Image Preview:\r\n </div>\r\n <div\r\n class=\"image-container e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <img\r\n *ngFor=\"let image of imagePreviews\"\r\n [src]=\"image.src\"\r\n alt=\"image preview\"\r\n height=\"100\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\" />\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { from, switchMap, of, Observable } from \"rxjs\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ZComponent, ZComponentHelper, AttachmentService, FieldUtils } from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"app-zimg\",\r\n templateUrl: \"./zimg.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zimg.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule,FontAwesomeModule,ReactiveFormsModule]\r\n})\r\n\r\nexport class ZimgComponent extends InputFieldBase implements ZComponent, OnInit {\r\n public imgSource;\r\n\r\n constructor(\r\n private readonly attachmentService: AttachmentService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.setImageSource();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public setImageSource() {\r\n this.getImageSource().subscribe(imgSource => {\r\n this.imgSource = imgSource\r\n });\r\n }\r\n\r\n private getImageSource(): Observable<any> {\r\n this.setImageSize();\r\n\r\n if (this.data.SourceUrl) {\r\n return of(FieldUtils.getGroupValue(this.data.SourceUrl, this.group));\r\n }\r\n\r\n const guid = FieldUtils.getGroupValue(this.data['Guid'], this.group);\r\n const fileName = FieldUtils.getGroupValue(this.data['FileName'], this.group);\r\n\r\n if (guid && fileName) {\r\n return from(this.attachmentService.getImageBlob(fileName, guid)).pipe(\r\n switchMap(blobfile => {\r\n return from(this.attachmentService.convertBlobToBase64(blobfile));\r\n })\r\n )\r\n }\r\n\r\n return of({});\r\n }\r\n\r\n private setImageSize() {\r\n if (this.data.Size && this.data.Size.toLowerCase().indexOf(\"x\") !== -1) {\r\n const imgSize = this.data.Size.toLowerCase().split(\"x\");\r\n const styleExpression = `width:${imgSize[0]}px;height:${imgSize[1]}px;`;\r\n this.componentProperties.style.style += styleExpression;\r\n this.componentProperties.style.style1 += styleExpression;\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zimg-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <img *ngIf=\"imgSource\" class=\"e1tag-style1\" [src]=\"imgSource\" [alt]=\"imgSource\" [style]=\"componentProperties.style.style1\"\r\n (click)=\"onItemClick($event)\" />\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { EditorComponent, EditorModule } from '@progress/kendo-angular-editor';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../../base/inputfieldbase.component';\r\nimport { ZComponentService } from '../../../services/zcomponent.service';\r\nimport { FieldUtils, FontAweSomeService, ModelUtils, ZComponent ,IconUtils} from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogService,DialogRef, DialogModule } from '@progress/kendo-angular-dialog';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport {\r\n SVGIcon,\r\n imageIcon\r\n} from \"@progress/kendo-svg-icons\";\r\n\r\n@Component({\r\n selector: 'app-ztexteditor',\r\n templateUrl: './ztexteditor.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztexteditor.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, DialogModule, EditorModule,ReactiveFormsModule]\r\n})\r\n\r\nexport class ZtexteditorComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild('editor') public editor: EditorComponent;\r\n public CloseEnlargeBtn:boolean = false;\r\n public imageIcon: SVGIcon = imageIcon;\r\n public readonly fontAweSomeService: FontAweSomeService;\r\n private style = \"\";\r\n public dialogRef:DialogRef;\r\n public pasteCleanupSettings = {\r\n removeMsClasses: true,\r\n removeMsStyles: true,\r\n removeInvalidHTML: true,\r\n };\r\n public componentSettings = {\r\n iframe: true,\r\n };\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService,\r\n protected readonly dialogService: DialogService,\r\n\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.data.ToolBarUploadImageMethod = this.data.ToolBarUploadImageMethod || 'explorer'; // || 'default';\r\n this.setupPasteCleanupSettings();\r\n super.setupComponentSettings(this.componentSettings);\r\n super.focusOnDefault(this.focus.bind(this));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public onChange(value: any) {\r\n ModelUtils.syncFieldValueToZModel(this.data.Value, value, this.group, this.data);\r\n this.triggerEvent(\"inputfield-onChange\", this.data.OnChange, value);\r\n }\r\n\r\n public focus() {\r\n if (this.editor) {\r\n this.editor.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private setupPasteCleanupSettings() {\r\n if (this.data.Options) {\r\n if (typeof this.data.Options == 'string') {\r\n const option = FieldUtils.getGroupValue(this.data.Options, this.group);\r\n Object.assign(this.pasteCleanupSettings, option);\r\n }\r\n else if (typeof this.data.Options == 'object') {\r\n Object.assign(this.pasteCleanupSettings, this.data.Options);\r\n }\r\n }\r\n }\r\n\r\n // #region Custom Image Upload\r\n public openFileExplorer() {\r\n const input = document.getElementById(`${this.data.Value}-upload-file`);\r\n if (input) {\r\n input.click();\r\n }\r\n }\r\n\r\n public uploadImage(fileInput: any) {\r\n const uploadedImage = fileInput.target.files[0];\r\n if (uploadedImage) {\r\n this.insertImageIntoEditor(uploadedImage);\r\n }\r\n }\r\n\r\n private insertImageIntoEditor(file) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n this.editor.exec(\"insertImage\", { src: reader.result });\r\n }.bind(this, reader);\r\n }\r\n\r\n //#endregion\r\n\r\n public getFontAwesome(iconName: any, fontAwesomeService: FontAweSomeService) {\r\n const iconNameValue = FieldUtils.getGroupValue(iconName, this.group);\r\n if (iconNameValue) {\r\n return IconUtils.getFontAwesome(iconNameValue, fontAwesomeService);\r\n }\r\n return iconName;\r\n }\r\n\r\n public openPopup(): void {\r\n if (this.editor) {\r\n // Open the popup\r\n\r\n this.dialogRef= this.dialogService.open({\r\n content: ZtexteditorComponent,\r\n width: '98%',\r\n height: '97%'\r\n });\r\n const texteditor = this.dialogRef.content.instance as ZtexteditorComponent;\r\n texteditor.data = this.data;\r\n // texteditor.data.AllowEnlarge = false;\r\n texteditor.dialogRef = this.dialogRef;\r\n texteditor.CloseEnlargeBtn = true;\r\n texteditor.componentProperties = this.componentProperties;\r\n this.style = this.componentProperties.style.style1;\r\n texteditor.componentProperties.style.style1 += \"height:\" + (window.innerHeight * 0.8).toString() + \"px\";\r\n texteditor.group = this.group;\r\n texteditor.componentSettings = this.componentSettings;\r\n texteditor.form = this.form;\r\n //To set the html back into the target ztext editor.\r\n this.dialogRef.result.subscribe(() => {\r\n // this.data.AllowEnlarge = true;\r\n this.componentProperties.style.style1 = this.style;\r\n this.editor.value = this.group.zModel[this.data.Value];\r\n this.onChange(this.group.zModel[this.data.Value]);\r\n this.focus();\r\n });\r\n }\r\n }\r\n public onPopupClose(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","\r\n\r\n<div [formGroup]=\"form\" class=\"ztexteditor-container e1tag-style\" [style]=\"componentProperties.style.style\" [ngClass]=\"data.Class\">\r\n <div class=\"col-lg-12 expand-btn-container\">\r\n <!--<button\r\n kendoButton class=\"ion-activatable ripple-parent\" [style]=\"componentProperties.style.style4\" *ngIf=\"data.AllowEnlarge\" (click)=\"openPopup()\" [id]=\"data.Value +'-popup-button'\">\r\n <fa-icon class=\"btn-icon\" [icon]=\"getFontAwesome('faExpandAlt', fontAweSomeService)\"></fa-icon>\r\n </button>\r\n <button\r\n kendoButton class=\"ion-activatable ripple-parent\" [style]=\"componentProperties.style.style4\" *ngIf=\"CloseEnlargeBtn\" (click)=\"onPopupClose()\" [id]=\"data.Value +'-popup-button'\">\r\n <fa-icon class=\"btn-icon\" [icon]=\"getFontAwesome('faCompressAlt', fontAweSomeService)\"></fa-icon>\r\n </button>-->\r\n</div>\r\n <kendo-editor #editor\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n class=\"e1tag-style1\"\r\n [style]=\"componentProperties.style.style1\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onChange($event)\"\r\n [resizable]=\"data.Resizable || false\"\r\n [pasteCleanupSettings]=\"pasteCleanupSettings\"\r\n [iframe]=\"componentSettings.iframe\">\r\n <kendo-toolbar [style.display]=\"data.ToolBarStyle === 'basic' ? 'inherit' : 'none'\" class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorUndoButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorRedoButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorBoldButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorItalicButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnderlineButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorStrikethroughButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorSubscriptButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorSuperscriptButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAlignLeftButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignCenterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignRightButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignJustifyButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-dropdownlist kendoEditorFormat></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-dropdownlist kendoEditorFontSize></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-dropdownlist kendoEditorFontFamily></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-colorpicker kendoEditorForeColor></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-colorpicker kendoEditorBackColor></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorInsertUnorderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorInsertOrderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorIndentButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorOutdentButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorCreateLinkButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnlinkButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-editor-insert-table-button></kendo-editor-insert-table-button>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAddColumnBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddColumnAfterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowAfterButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorDeleteColumnButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteRowButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteTableButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorInsertFileButton></kendo-toolbar-button>\r\n <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'default'\" kendoEditorInsertImageButton></kendo-toolbar-button>\r\n <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'explorer'\" [svgIcon]=\"imageIcon\" (click)=\"openFileExplorer()\"></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorViewSourceButton></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n <kendo-toolbar [style.display]=\"data.ToolBarStyle === 'full' ? 'inherit' : 'none'\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorUndoButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorRedoButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorBoldButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorItalicButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnderlineButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorStrikethroughButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorSubscriptButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorSuperscriptButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAlignLeftButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignCenterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignRightButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAlignJustifyButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-dropdownlist kendoEditorFontSize></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-dropdownlist kendoEditorFontFamily></kendo-toolbar-dropdownlist>\r\n <kendo-toolbar-colorpicker kendoEditorForeColor view=\"gradient\"></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-colorpicker kendoEditorBackColor view=\"gradient\"></kendo-toolbar-colorpicker>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorInsertUnorderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorInsertOrderedListButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorIndentButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorOutdentButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorCreateLinkButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorUnlinkButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'default'\" kendoEditorInsertImageButton></kendo-toolbar-button>\r\n <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'explorer'\" [svgIcon]=\"imageIcon\" (click)=\"openFileExplorer()\"></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorViewSourceButton></kendo-toolbar-button>\r\n <kendo-editor-insert-table-button></kendo-editor-insert-table-button>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorAddColumnBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddColumnAfterButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowBeforeButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorAddRowAfterButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorDeleteColumnButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteRowButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorDeleteTableButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n <kendo-toolbar-buttongroup>\r\n <kendo-toolbar-button kendoEditorMergeCellsButton></kendo-toolbar-button>\r\n <kendo-toolbar-button kendoEditorSplitCellButton></kendo-toolbar-button>\r\n </kendo-toolbar-buttongroup>\r\n </kendo-toolbar>\r\n </kendo-editor>\r\n <input style=\"display:none;\" type=\"file\" [id]=\"data.Value +'-upload-file'\" [name]=\"data.Value +'-upload-file'\" accept=\"image/*\" ngf-max-size=\"5MB\" (change)=\"uploadImage($event)\">\r\n</div>\r\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { ModelUtils, FontAweSomeService, ZComponent, ZComponentHelper } from \"mmhglobal-zcore\";\r\nimport { ColorPickerComponent } from \"@progress/kendo-angular-inputs\";\r\n\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"app-zcolorpicker\",\r\n templateUrl: \"./zcolorpicker.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zcolorpicker.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, ColorPickerComponent, ]\r\n})\r\n\r\nexport class ZcolorpickerComponent extends InputFieldBase implements ZComponent, OnInit {\r\n @ViewChild(\"colorpicker\") colorpicker: ColorPickerComponent;\r\n\r\n public value = \"\";\r\n public view = ['palette', 'gradient'];\r\n public format = \"hex\";\r\n\r\n constructor(public fontAweSomeService: FontAweSomeService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n onClose() {\r\n }\r\n\r\n changeColor(color: string) {\r\n if (this.colorpicker) {\r\n const fieldValue = this.data.Value;\r\n\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(fieldValue, color, this.group, true)\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zcolorpicker-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-colorpicker #colorpicker\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [style]=\"componentProperties.style.style1\"\r\n [views]=\"view\"\r\n [value]=\"value\"\r\n [format] = \"format\"\r\n [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange) = \"changeColor($event)\"\r\n (close)=\"onClose()\"\r\n ></kendo-colorpicker>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { ReactiveFormsModule, UntypedFormGroup } from \"@angular/forms\";\r\nimport { tap } from \"rxjs\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport { FieldUtils, ZComponent, ZComponentOutputEvent, ZField } from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { InputFieldAddOnsComponent } from \"../../utility/input-field-addons/input-field-addons.component\";\r\nimport { InputErrorMessageComponent } from \"../../utility/input-error-message/input-error-message.component\";\r\nimport { ZtextComponent } from \"../ztext/ztext.component\";\r\nimport { ZselectmultipleComponent } from \"../zselectmultiple/zselectmultiple.component\";\r\nimport { ZdatetimeComponent } from \"../zdatetime/zdatetime.component\";\r\nimport { SfdatetimepickerComponent } from \"../sfdatetimepicker/sfdatetimepicker.component\";\r\nimport { ZpostselectinputComponent } from \"../zpostselectinput/zpostselectinput.component\";\r\nimport { ZcheckboxComponent } from \"../zcheckbox/zcheckbox.component\";\r\nimport { ZnumericComponent } from \"../znumeric/znumeric.component\";\r\nimport { ZtextareaComponent } from \"../ztextarea/ztextarea.component\";\r\nimport { ZuploadComponent } from \"../zupload/zupload.component\";\r\nimport { ZimgComponent } from \"../zimg/zimg.component\";\r\nimport { ZtexteditorComponent } from \"../ztexteditor/ztexteditor.component\";\r\nimport { ZcolorpickerComponent } from \"../zcolorpicker/zcolorpicker.component\";\r\nimport { ContextMenuComponent } from \"../../menu/context-menu/context-menu.component\";\r\nimport { ZInputParser } from \"./zinput-container.pipe\";\r\n\r\n@Component({\r\n selector: \"app-zinput-container\",\r\n templateUrl: \"./zinput-container.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zinput-container.component.scss\"],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, CommonModule, LabelModule, InputFieldAddOnsComponent, ZtextComponent, ZselectmultipleComponent, ZdatetimeComponent, SfdatetimepickerComponent,\r\n ZpostselectinputComponent, ZcheckboxComponent, ZnumericComponent, ZtextareaComponent, ZuploadComponent, ZimgComponent, ZtexteditorComponent,\r\n ZcolorpickerComponent, InputErrorMessageComponent, ContextMenuComponent, ZInputParser]\r\n})\r\n\r\nexport class ZInputContainerComponent extends FieldBase implements ZComponent, OnInit {\r\n public inputFieldAddOn = { top: {}, left: {}, right: {}, bottom: {} };\r\n\r\n public readonly ztext_type = ['number', 'numeric', 'date', 'email', 'zpassword', 'search', 'tel', 'text', 'url', 'currency'];\r\n public readonly zselect_type = ['zuiselectmultiple', 'zuiselectmultiple_button', 'select'];\r\n public readonly zdate_type = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n public readonly sfdatetimepicker_type = ['sfdatetimepicker'];\r\n public readonly zpostselectinput_type = ['post_select_input', 'pre_select_input', 'zphone_countrycode'];\r\n public readonly zcheckbox_type = ['checkbox'];\r\n public readonly znumeric_type = ['znumeric'];\r\n public readonly textarea_type = ['textarea'];\r\n public readonly zupload_type = ['zupload'];\r\n public readonly zimg_type = ['zimg'];\r\n public readonly ztexteditor_type = ['ztexteditor'];\r\n public readonly zcolorpicker_type = ['zcolorpicker'];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.data.LabelDivClass = this.data.LabelDivClass ?? 'w-40';\r\n this.data.FieldDivClass = this.data.FieldDivClass ?? 'w-60';\r\n\r\n super.initComponent().pipe(\r\n tap(() => {\r\n this.setAddOnValue();\r\n this.componentService.setEditMode(this);\r\n this.isLoading = false;\r\n }))\r\n .subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public triggerContainerEvent(event: ZComponentOutputEvent) {\r\n if (event) {\r\n if (event.type === \"setAddOnValue\") {\r\n this.setAddOnValue(event.data);\r\n }\r\n }\r\n }\r\n\r\n private setAddOnValue(addOns?: any) {\r\n const inputFieldAddOnGroupValue = FieldUtils.getGroupValue(addOns || this.data.InputFieldAddOns as any, this.group);\r\n const addOnValue = inputFieldAddOnGroupValue || addOns || this.data.InputFieldAddOns;\r\n if (addOnValue && Array.isArray(addOnValue)) {\r\n for (const key of Object.keys(this.inputFieldAddOn)) {\r\n this.inputFieldAddOn[key] = addOnValue.find(i => i.Position === key);\r\n }\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"desktop-input-container e1tag-container-style\"\r\n [formGroup]=\"form\"\r\n [style]=\"componentProperties.containerStyle.style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"'style' + data.FieldLayoutType + ' ' + data.Class\"\r\n [class.editMode]=\"data['_EditMode'].value\"\r\n #zinputcontainer>\r\n <kendo-label\r\n class=\"input-label e1tag-container-style1\"\r\n [for]=\"data.Name\"\r\n [text]=\"componentProperties.label\"\r\n *ngIf=\"data.ShowLabel\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n [ngClass]=\"data.LabelDivClass\">\r\n <kendo-label\r\n *ngIf=\"data['_EditMode'].value && (!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n text=\"*\"\r\n class=\"required-icon\"></kendo-label>\r\n <app-input-field-addons\r\n class=\"addon-top e1tag-container-style7\"\r\n [position]=\"'top'\"\r\n [addOn]=\"inputFieldAddOn.top\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n [style]=\"componentProperties.containerStyle.style7\"></app-input-field-addons>\r\n </kendo-label>\r\n <div class=\"input-value-container e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2\" [ngClass]=\"data['FieldDivClass']\">\r\n <div *ngIf=\"data['_EditMode'].value\" class=\"input-value-field e1tag-container-style3\" [style]=\"componentProperties.containerStyle.style3\">\r\n <!-- TODO: Add 1 more layer for this switch case-->\r\n <app-input-field-addons\r\n class=\"addon-left e1tag-container-style7\"\r\n [position]=\"'left'\"\r\n [addOn]=\"inputFieldAddOn.left\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n [style]=\"componentProperties.containerStyle.style7\"></app-input-field-addons>\r\n <div class=\"input-fields-options e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\">\r\n <app-ztext\r\n *ngIf=\"ztext_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-ztext>\r\n <app-zselectmultiple\r\n *ngIf=\"zselect_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zselectmultiple>\r\n <app-zdatetime\r\n *ngIf=\"zdate_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zdatetime>\r\n <app-sfdatetimepicker\r\n *ngIf=\"sfdatetimepicker_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-sfdatetimepicker>\r\n <app-zpostselectinput\r\n *ngIf=\"zpostselectinput_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zpostselectinput>\r\n <app-zcheckbox\r\n *ngIf=\"zcheckbox_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zcheckbox>\r\n <app-znumeric\r\n *ngIf=\"znumeric_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-znumeric>\r\n <app-ztextarea\r\n *ngIf=\"textarea_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-ztextarea>\r\n <app-zupload\r\n *ngIf=\"zupload_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zupload>\r\n <app-zimg\r\n *ngIf=\"zimg_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zimg>\r\n <app-ztexteditor\r\n *ngIf=\"ztexteditor_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-ztexteditor>\r\n <app-zcolorpicker\r\n *ngIf=\"zcolorpicker_type.includes(data.Type)\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n class=\"e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\"\r\n (triggerContainerEvent)=\"triggerContainerEvent($event)\"></app-zcolorpicker>\r\n </div>\r\n <app-input-field-addons\r\n class=\"addon-right e1tag-container-style7\"\r\n [position]=\"'right'\"\r\n [addOn]=\"inputFieldAddOn.right\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n [style]=\"componentProperties.containerStyle.style7\"></app-input-field-addons>\r\n </div>\r\n <app-input-field-addons\r\n class=\"addon-bottom e1tag-container-style7\"\r\n [position]=\"'bottom'\"\r\n [addOn]=\"inputFieldAddOn.bottom\"\r\n [data]=\"data\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\"\r\n [style]=\"componentProperties.containerStyle.style7\"></app-input-field-addons>\r\n <app-error [data]=\"data\" [group]=\"group\" [form]=\"form\"></app-error>\r\n <kendo-label\r\n class=\"input-value e1tag-container-style6\"\r\n *ngIf=\"!data['_EditMode'].value\"\r\n [style]=\"componentProperties.containerStyle.style6\"\r\n [text]=\"group.zModel[data.Value] | inputText : data : group | async\"></kendo-label>\r\n </div>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zinputcontainer\"></app-context-menu>\r\n</div>\r\n","import { Component, OnInit, OnDestroy, ViewChild, AfterViewChecked, ChangeDetectorRef } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl, ValidatorFn, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Observable, of, Subject, Subscription, delay } from 'rxjs';\r\nimport { tap, map, switchMap } from 'rxjs/operators';\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { SortDescriptor, State, process } from '@progress/kendo-data-query';\r\nimport { GridDataResult, DataStateChangeEvent, PageChangeEvent, CellClickEvent, GridComponent, RowArgs, GridItem, SelectableSettings, GridModule, ExcelModule, DetailExpandEvent, DetailCollapseEvent } from '@progress/kendo-angular-grid';\r\nimport { DataListingFieldBase } from '../../base/datalistingfieldbase.component';\r\nimport { hideAndShowVerticalAnimation } from '../../../animations/component-animations';\r\nimport { ComponentConstant } from '../../../constants/constant';\r\nimport { MainService } from '../../../services/main.service';\r\nimport { ElementContainerDirective } from '../../../directives/elementcontainer.directive';\r\nimport { ZGridBindingDirective } from './zgrid.binding.directive';\r\nimport { ZGridService } from './zgrid.service';\r\nimport {\r\n WebApiService, ZField, ZGroup, ZComponent, ZComponentOutputEvent, ZCoreService, StorageSessionService, FontAweSomeService,\r\n ZGridPostApiParams, ZGridSettings, ZGridCustomColumn, ResourceApiService, StateType, StateSettingInfo, AuthService, StateSettingService,\r\n FieldUtils, GridUtils, IconUtils, ValidationUtils, ModelUtils, ToastService, AlertService, AlertButton,\r\n DataUtils,\r\n TriggerFromType} from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { KENDO_TOOLTIPS, PopoverModule } from '@progress/kendo-angular-tooltip';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { HtmlSanitizePipe } from '../../../pipe/htmlSanitize.pipe';\r\nimport { ZformComponent } from '../../others/zform/zform.component';\r\nimport { ZworkflowbuttonsComponent } from '../../button/zworkflowbuttons/zworkflowbuttons.component';\r\nimport { ZbuttonsComponent } from '../../button/zbuttons/zbuttons.component';\r\nimport { NumericTextBoxComponent, TextBoxModule } from '@progress/kendo-angular-inputs';\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { ZInputContainerComponent } from '../../input/zinput-container/zinput-container.component';\r\nimport { ContextMenuComponent } from '../../menu/context-menu/context-menu.component';\r\nimport { DateRangeFilterCellComponent } from './date-range-cell-filter.component';\r\nimport { ButtonsModule, KENDO_BUTTONS } from '@progress/kendo-angular-buttons';\r\nimport { faStar } from '@fortawesome/free-regular-svg-icons';\r\n\r\nexport interface ZGrid {\r\n params: ZGridPostApiParams;\r\n state: State;\r\n columns: any[];\r\n paginationApiPostUrl: string;\r\n data: ZField;\r\n group: ZGroup;\r\n zgrid: ZGridBindingDirective;\r\n inlineEditedFormGroups: UntypedFormGroup;\r\n getGridData: () => any[];\r\n getData: () => void;\r\n clearData: () => void;\r\n setData: (data: any) => void;\r\n setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => void;\r\n $setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => Observable<any>;\r\n getFormControlData(): any[];\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-zgrid',\r\n templateUrl: './zgrid.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zgrid.component.scss'],\r\n animations: [\r\n hideAndShowVerticalAnimation\r\n ],\r\n standalone: true,\r\n imports: [CommonModule, PopoverModule, FontAwesomeModule, LabelModule, HtmlSanitizePipe, KENDO_TOOLTIPS, ZformComponent, ZworkflowbuttonsComponent,\r\n ZbuttonsComponent, GridModule, TextBoxModule, PopupModule, ZInputContainerComponent, ContextMenuComponent, ExcelModule, NumericTextBoxComponent,\r\n ReactiveFormsModule, GridComponent, DateRangeFilterCellComponent, ZGridBindingDirective, ButtonsModule, KENDO_BUTTONS],\r\n})\r\n\r\nexport class ZgridComponent extends DataListingFieldBase implements ZComponent, OnInit, AfterViewChecked, OnDestroy {\r\n @ViewChild(ElementContainerDirective, { static: true }) elementContainer!: ElementContainerDirective;\r\n\r\n zgrid: any = null;\r\n oauthUrl: string = null;\r\n gridData: GridDataResult;\r\n selectableSettings: SelectableSettings;\r\n rowSelection: string[] = [];\r\n mySelection = new Map();\r\n inlineEditedFormGroups = {};\r\n public formGroup: UntypedFormGroup; // for kendo grid built-in\r\n public previousNext: boolean;\r\n public gridBtn;\r\n public pageable: any = false;\r\n public filterGroup = new ZGroup();\r\n public advfilterGroup = new ZGroup();\r\n public isShowAdvFilter = false;\r\n public gridTitle: any;\r\n public isInlineEditInputFieldLoading = false;\r\n private tempInlineEditedFormGroups;\r\n private isColumnHeaderTranslated = false;\r\n public showRestoreGridSettingButton: boolean = false;\r\n public checkboxColumnPinned: boolean = false;\r\n faStar = faStar;\r\n\r\n params: ZGridPostApiParams = {\r\n referId: null,\r\n pageNo: 0,\r\n pageSize: 20,\r\n sortColumnName: '',\r\n sortOrder: '',\r\n sortColumnNames: [],\r\n sortOrders: [],\r\n filterParams: [],\r\n parameters: '',\r\n filters: '',\r\n columns: '',\r\n grantType: 4\r\n };\r\n\r\n gridSubject: Subject<any> = new Subject<any>();\r\n\r\n columns: any[];\r\n generateHiddenColumnsField: any[];\r\n editableColumns: any[];\r\n subscription: Subscription;\r\n pageSizes: boolean | any[];\r\n gridStorageKey: string;\r\n gridDefaultStateExist: boolean = false;\r\n isNew: boolean = true;\r\n private editedRowIndex: number;\r\n public gridSetting: ZGridSettings;\r\n private readonly environment: any;\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly activatedRoute: ActivatedRoute,\r\n private readonly router: Router,\r\n private readonly formBuilder: UntypedFormBuilder,\r\n private readonly webApiService: WebApiService,\r\n private readonly toastService: ToastService,\r\n private readonly zcoreService: ZCoreService,\r\n private readonly storageService: StorageSessionService,\r\n private readonly mainService: MainService,\r\n private readonly cdr: ChangeDetectorRef,\r\n private readonly gridService: ZGridService,\r\n private readonly stateSettingService: StateSettingService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly authService: AuthService,\r\n private readonly alertService: AlertService\r\n ) {\r\n super();\r\n this.environment = this.zcoreService.getEnvironment();\r\n this.oauthUrl = `${this.environment.e1OauthUrl}/`;\r\n this.allResults = this.allResults.bind(this);\r\n this.refreshData = this.refreshData.bind(this);\r\n this.clearData = this.clearData.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n super.setupInnerField();\r\n this.setupFilterFeature();\r\n this.setupGridButtons();\r\n this.setupGridComponentAttributes();\r\n this.gridSetting = { gridState: this.gridService.setupGridSetting(this.data) };\r\n\r\n this.setupSubscriptionForGridSubject();\r\n\r\n super.translateToolBarItems().pipe(tap(() => {\r\n this.gridCallback(this.group);\r\n })).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngAfterViewChecked() {\r\n const isBackNavigated = (sessionStorage.getItem('navigatedReloadGrid') === 'true');\r\n this.showHideRestoreGridSettingButton();\r\n\r\n if (isBackNavigated) {\r\n if (!this.isUseLocalData()) {\r\n this.getData();\r\n }\r\n this.cdr.detectChanges();\r\n this.storageService.set('navigatedReloadGrid', JSON.stringify(false));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n //#region Grid State (pagination, sortable, filter, ordering)\r\n public dataStateChange(state: DataStateChangeEvent): void {\r\n if (!this.isUseLocalData()) {\r\n this.zgrid.dataStateChange(state);\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n return value !== false;\r\n }\r\n\r\n public locked(colSetting: any) {\r\n return !!colSetting['pinnedLeft'];\r\n }\r\n //#endregion\r\n\r\n public onExcelExport(e: any): void {\r\n const colRequiredFormat = [];\r\n\r\n // Collect columns that have a specific Excel cell format\r\n this.columns.forEach(col => {\r\n if (col.ExcelCellFormat) {\r\n colRequiredFormat.push({ colName: col.DisplayName ?? col.Name, cellFormat: col.ExcelCellFormat, colIndex: null });\r\n }\r\n });\r\n\r\n if (colRequiredFormat.length === 0) {\r\n return;\r\n }\r\n\r\n e.workbook.sheets[0].rows.forEach(row => {\r\n if (row.type === 'header') {\r\n // Check header cells to find matching column names and store their index\r\n row.cells.forEach((cell, index) => {\r\n colRequiredFormat.forEach(col => {\r\n if (cell.value === col.colName) {\r\n col.colIndex = index;\r\n }\r\n });\r\n });\r\n }\r\n else if (row.type === 'data') {\r\n // Apply the format to cells in data rows if their index matches\r\n row.cells.forEach((cell, index) => {\r\n colRequiredFormat.forEach(col => {\r\n if (index === col.colIndex) {\r\n cell.format = col.cellFormat;\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n //#region Grid Columns\r\n public isSelectOption() {\r\n if (this.data.SelectOptions) {\r\n this.selectableSettings = {\r\n checkboxOnly: false,\r\n mode: (this.data.SelectOptions?.toLowerCase() === 'multiple') ? 'multiple' : 'single'\r\n };\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public setColumns(columnName: string, columns: Array<ZGridCustomColumn>) {\r\n this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n this.generateGridColumns().subscribe();\r\n }\r\n\r\n public $setColumns(columnName: string, columns: Array<ZGridCustomColumn>): Observable<any> {\r\n this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n return this.generateGridColumns();\r\n }\r\n\r\n private wrapColumnNamesInFieldElement(columnList: Array<ZGridCustomColumn>) {\r\n return of(columnList.map(column => {\r\n const isHidden: boolean = column.Hidden;\r\n return {\r\n Name: column.Name,\r\n Value: column.Code,\r\n Type: column.Type,\r\n gridColVisible: !isHidden,\r\n EnableHiding: column.EnableHiding || false,\r\n EnableGridValue: column.EnableGridValue || false,\r\n width: 100 + column.Name.length * 4,\r\n enableFiltering: false,\r\n enableSorting: true,\r\n enablePinning: true,\r\n DivClass: 'col-xs-12 col-sm-6',\r\n IsEditableInGrid: column.Editable\r\n };\r\n }));\r\n }\r\n\r\n private generateGridColumns(gridSetting?: ZGridSettings): Observable<any> {\r\n const columnFields$: Observable<any> = FieldUtils.getGroupValue(\r\n this.data.ColumnFields,\r\n this.group\r\n ) ?? of([]);\r\n\r\n if (!this.data.ColumnFields) {\r\n console.warn(`Invalid/Empty grid(${this.data.Name}) columnField`);\r\n }\r\n\r\n if (!columnFields$) {\r\n console.log('Fail to generate grid column fields.');\r\n console.log(this.data.ColumnFields);\r\n console.log(this.group);\r\n }\r\n\r\n return columnFields$.pipe(\r\n tap(columnField => {\r\n if (!columnField) {\r\n console.warn(`Invalid/Empty grid(${this.data.Name}) data to generate column`);\r\n }\r\n else {\r\n this.columns = [];\r\n const generateHiddenColumns = [];\r\n\r\n GridUtils.generateGridColumns({\r\n columnField: columnField,\r\n columns: this.columns,\r\n group: this.group,\r\n columnConfigurations: gridSetting?.columnConfigurations,\r\n generateHiddenColumns: generateHiddenColumns,\r\n gridAttributes: this.data\r\n });\r\n\r\n if (generateHiddenColumns.length > 0) {\r\n this.generateHiddenColumnsField = [];\r\n const generateHiddenColumnsField = generateHiddenColumns.map(field => ({ field: field, Visible: true, IsRequired: false, Value: field }));\r\n for (const field of generateHiddenColumnsField) {\r\n this.generateHiddenColumnsField.push(field);\r\n }\r\n }\r\n }\r\n }),\r\n switchMap(() => {\r\n return super.translateColumnHeader(this.columns);\r\n })\r\n );\r\n }\r\n\r\n getIconName(gridCellReplaceValue: any, value: any) {\r\n if (gridCellReplaceValue?.[value]) {\r\n return IconUtils.getFontAwesome(gridCellReplaceValue[value], this.fontAweSomeService);\r\n }\r\n\r\n return '';\r\n }\r\n //#endregion\r\n\r\n //#region Oncell click handling\r\n // 1. inCell Edit\r\n // 2. OnItemClick\r\n // 3. Navigate to Form Page\r\n // 4. Show Form Page in the same page (DEC and Drawer)\r\n public cellClickHandler(event: CellClickEvent) {\r\n // Right click handler\r\n if (event.type === 'contextmenu') {\r\n this.dataItemContextMenu.showContextMenuManually(event, event.dataItem);\r\n return;\r\n }\r\n\r\n const disableAllColumnCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n const isCommandColumn = event.column.constructor.name === 'CommandColumnComponent';\r\n\r\n if (this.tooltipDir) {\r\n this.tooltipDir.hide();\r\n }\r\n\r\n if (!disableAllColumnCellClickHandler && !isCommandColumn) {\r\n const inCellEditable = this.data.InCellEditable ? this.data.InCellEditable : false;\r\n if (inCellEditable) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n if (this.editableColumns?.length) {\r\n this.editableColumns.forEach(s => event.sender.editCell(event.rowIndex, event.columnIndex, this.createFormGroup(event.dataItem, s.field)));\r\n }\r\n } else {\r\n console.log('cellClick event: ', event);\r\n\r\n if (this.data.OnItemClick) {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n else {\r\n // store clicked id and action as edit to the session storage\r\n // OnItemClick, project have to set themself.\r\n this.mainService.setNavigationParams([event.dataItem.Id, 'edit']);\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n }\r\n }\r\n\r\n public editCellCloseHandler(args: any) {\r\n const { formGroup, dataItem } = args;\r\n if (!formGroup.valid) {\r\n args.preventDefault();\r\n } else if (formGroup.dirty) {\r\n this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n this.editableColumns.forEach(s =>\r\n Object.assign(dataItem, { [s.field]: formGroup.value[s.field] }));\r\n\r\n // Initialize mySelection if it's undefined\r\n if (!this.mySelection) {\r\n this.mySelection = new Map();\r\n }\r\n\r\n this.mySelection.forEach((value, key) => {\r\n if (value.Id === dataItem.Id) {\r\n this.mySelection.set(key, { ...value, ...dataItem });\r\n }\r\n });\r\n }\r\n }\r\n\r\n public onNavigateTo(event: any, clickAction: any, rowData: any, cellData: string) {\r\n const n = FieldUtils.getGroupEvalValue.call(this, clickAction.Click);\r\n if (n) {\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: clickAction.Click,\r\n rowData: rowData,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n // Edit incell field\r\n const colFields = FieldUtils.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: 'zgrid-cellClick',\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n }\r\n else if (this.data['ContainerForm']) {\r\n this.showFormPage.emit(true);\r\n }\r\n else {\r\n this.router.navigate([this.group.editModelURL], {\r\n relativeTo: this.activatedRoute,\r\n //skipLocationChange: false\r\n });\r\n }\r\n }\r\n\r\n public onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n this.onNavigateTo(event, colSetting, rowData, cellData);\r\n }\r\n\r\n private createFormGroup(dataItem: any, fieldName: any): UntypedFormGroup {\r\n return this.formBuilder.group({\r\n [fieldName]: dataItem[fieldName]\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Helper functions\r\n public getClass(dataItem: any, col: any) {\r\n let ngClass = 'gridCell ';\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += 'rightAligned ';\r\n }\r\n\r\n if (dataItem[`${col.field}_Class`]) {\r\n ngClass += `${dataItem[`${col.field}_Class`]} `;\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += `${col.Class} `;\r\n }\r\n\r\n if (col.PopOverContent) {\r\n ngClass += ' withPopoverInGrid';\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n public getFormat(col: any, defaultFormat?: any) {\r\n let format = '';\r\n if (col.FormatOptions === undefined) {\r\n format = defaultFormat ?? '';\r\n } else {\r\n const formatArr = col.FormatOptions.split('.')\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = `1.${dp}-${dp}`;\r\n }\r\n }\r\n return format;\r\n }\r\n\r\n public allResults(): Observable<ExcelExportData> {\r\n const gridControl = this.zgrid as ZGrid;\r\n const gridComponent = this.zgrid.grid as GridComponent;\r\n const data = gridComponent.data as GridDataResult;\r\n\r\n const resourceURLForGenerateData = this.data.ExportDataResourceURL ? this.resourceApiService.getURL(this.data.ExportDataResourceURL) : gridControl.paginationApiPostUrl;\r\n\r\n // Need to clone, if not will affect the grid params.\r\n const params = { ...this.params };\r\n params.pageNo = 0;\r\n params.pageSize = data.total;\r\n\r\n const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,7})?(?:Z|[\\+\\-]\\d{2}:\\d{2})?)?$/;\r\n\r\n // Function to convert date strings to Date objects\r\n const convertDateStringsToDates = (items: any[]) => {\r\n return items.map(item => {\r\n const newItem = { ...item };\r\n for (const key in newItem) {\r\n if (newItem.hasOwnProperty(key)) {\r\n const value = newItem[key];\r\n // Check if the value is a string and matches the dateTimeRegex pattern\r\n if (typeof value === 'string' && dateTimeRegex.test(value)) {\r\n newItem[key] = new Date(value);\r\n }\r\n }\r\n }\r\n return newItem;\r\n });\r\n };\r\n\r\n return this.webApiService.httpPost$(resourceURLForGenerateData, params).pipe(\r\n map((data: any) => {\r\n // Convert date strings to Date objects\r\n data.dataSet = convertDateStringsToDates(data.dataSet);\r\n\r\n // Prepare the result for Excel export\r\n const result: ExcelExportData = {\r\n data: process(data.dataSet, {}).data\r\n };\r\n\r\n return result;\r\n })\r\n );\r\n }\r\n\r\n public refreshGrid(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n const _gridOptionSegment = event.target.trim().split('.');\r\n const _gridOption = _gridOptionSegment[1];\r\n if (_gridOption) {\r\n const zgridControl = group[_gridOption] as ZGrid;\r\n if (zgridControl) {\r\n zgridControl.getData();\r\n } else {\r\n console.log('Unable to find grid value: ' + _gridOption);\r\n }\r\n } else {\r\n console.log('Invalid refreshGrid event: ', event);\r\n }\r\n }\r\n\r\n public refreshData() {\r\n this.getData();\r\n }\r\n\r\n public clearData() {\r\n this.zgrid.clearData();\r\n }\r\n\r\n public truncateText(text: string, limit: number = 200): string {\r\n // Check if the text is longer than the limit\r\n if (text.length > limit) {\r\n return `${text.slice(0, limit)}... (Click to view more)`;\r\n }\r\n return text; // Return the full text if it's within the limit\r\n }\r\n\r\n public rowSelectionKey = (context: RowArgs): any => {\r\n // Generate a unique key using either this.data.UniqueKey or context.dataItem.Id.\r\n const key = (this.data.UniqueKey ?? context.dataItem.Id);\r\n\r\n if (this.data.UniqueKey && context.dataItem.Id) {\r\n console.error('A unique column field is required. Ensure either the Id column is present or the UniqueKey property is set for zgrid.');\r\n }\r\n\r\n // Initialize mySelection if it's undefined\r\n if (!this.mySelection) {\r\n this.mySelection = new Map();\r\n }\r\n\r\n // Store the data item in the mySelection map with the generated key.\r\n this.mySelection.set(key, context.dataItem);\r\n\r\n // Return the generated key.\r\n return key;\r\n }\r\n\r\n public getSelectedValues(): any {\r\n // Map each key in rowSelection to its corresponding data item in the mySelection map.\r\n const selectedRecord = this.rowSelection.map(key => this.mySelection.get(key));\r\n\r\n // Return the array of selected records.\r\n return selectedRecord;\r\n }\r\n\r\n public clearSelection(): void {\r\n // Check if mySelection is defined before trying to clear it\r\n if (this.mySelection) {\r\n // Clear the map that stores selected data items.\r\n this.mySelection.clear();\r\n } else {\r\n // Optionally, you can initialize it if it's undefined\r\n this.mySelection = new Map();\r\n }\r\n\r\n // Clear the array that tracks selected keys.\r\n this.rowSelection = [];\r\n }\r\n\r\n public getData() {\r\n if (this.zgrid) {\r\n this.inlineEditedFormGroups = {};\r\n this.clearSelection();\r\n this.zgrid.getDataBinding();\r\n }\r\n else {\r\n console.warn('this.zgrid is undefined.');\r\n }\r\n }\r\n\r\n public getGridData() {\r\n if (this.isUseLocalData()) {\r\n return this.zgrid.data ?? this.zgrid.originalData;\r\n }\r\n const gridData = this.zgrid.grid?.data;\r\n return gridData?.data ?? [];\r\n }\r\n\r\n public setData = (gData: any) => {\r\n if (this.zgrid) {\r\n if (this.isUseLocalData()) {\r\n this.zgrid.data = gData;\r\n if (!this.data.DisableAutoAppendGridDateFilterCol) {\r\n this.setDateColForFiltering();\r\n }\r\n }\r\n else {\r\n this.zgrid.grid.data = {\r\n data: gData,\r\n total: gData.totalCount\r\n }\r\n }\r\n this.setupGridWithInlineEdit();\r\n }\r\n else {\r\n console.log('zgrid is null for setData.');\r\n console.log(this.data);\r\n }\r\n }\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public trackBy(index: number, item: GridItem): any {\r\n return index;\r\n }\r\n\r\n private isUseLocalData(): boolean {\r\n if (this.data.DataSource) {\r\n return true; \r\n }\r\n\r\n return false;\r\n }\r\n //#endregion\r\n\r\n //#region grid setup\r\n private setupGridComponentAttributes() {\r\n // Grid default setting\r\n this.gridTitle = this.data.Title;\r\n this.columns = [];\r\n this.pageSizes = [5, 10, 20, 50, 100, 200, 500];\r\n this.previousNext = this.data['EnablePreviousNextButton'] || false;\r\n\r\n // [Mobile] Disable page sizes if PageSizes is explicitly set to false or on a mobile screen.\r\n if (this.data.PageSizes === false) {\r\n this.pageSizes = false;\r\n }\r\n\r\n // Configure pagination settings.\r\n this.pageable = this.data.pageAble ?? {\r\n responsive: true,\r\n buttonCount: 3,\r\n pageSizes: this.pageSizes,\r\n previousNext: this.previousNext,\r\n };\r\n\r\n // Configure grid selection options if set SelectOptions in field element attribute.\r\n if (this.data.SelectOptions) {\r\n if (typeof this.data.SelectOptions === 'boolean') {\r\n console.warn(`Error: grid(${this.data.Name}), this.data.SelectOptions should be a string with value 'single' or 'multiple'.`);\r\n }\r\n else {\r\n this.selectableSettings = {\r\n mode: this.data.SelectOptions.toLowerCase() === 'single' ? 'single' : 'multiple'\r\n };\r\n }\r\n }\r\n\r\n // Bind component to group using the provided Value set in field element attribute.\r\n if (this.data.Value.startsWith('group.')) {\r\n this.group[this.data.Value.slice(6)] = this;\r\n }\r\n }\r\n\r\n private setupSubscriptionForGridSubject() {\r\n // Unsubscribe from any existing subscriptions to avoid memory leaks.\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // From here will call zgrid.binding.directive.\r\n // Subscribe to get from directive and set to component\r\n this.subscription = this.gridSubject.pipe(\r\n tap(gridDirective => {\r\n // Set the zgrid property based on the emitted gridDirective.\r\n this.zgrid = gridDirective;\r\n\r\n // Update the columns property with the grid columns from gridDirective.\r\n this.columns = this.zgrid.gridSetting.columns;\r\n\r\n // Check if automatic appending of a grid date filter column is not disabled.\r\n if (!this.data.DisableAutoAppendGridDateFilterCol) {\r\n this.setDateColForFiltering();\r\n }\r\n\r\n // Set up grid with inline editing.\r\n this.setupGridWithInlineEdit();\r\n\r\n // Set up a popover feature based on columns and grid data.\r\n this.setupPopoverFeature(this.columns, this.getGridData());\r\n }),\r\n switchMap(() => {\r\n // Check if column headers have already been translated.\r\n if (this.isColumnHeaderTranslated) {\r\n return of({});\r\n }\r\n\r\n // Mark column headers as translated and perform the translation.\r\n this.isColumnHeaderTranslated = true;\r\n return super.translateColumnHeader(this.columns);\r\n }),\r\n tap(_ => {\r\n this.checkboxColumnPinned = this.data.SelectOptionsPinned;\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public saveGridSettings(event: any): void {\r\n const saveGridConfig = () => {\r\n const gridStateLogic = this.gridService.getGridStateLogic(this.data);\r\n const cacheName = this.stateSettingService.getStorageCacheKey(StateType.savedSetting, this.data);\r\n const previousCachedData = this.gridService.getStateCacheByName(cacheName);\r\n const columnConfigurations = GridUtils.getGridColumnsConfig(this.zgrid.grid.columns);\r\n const settingConfig: ZGridSettings = { columnConfigurations };\r\n\r\n this.zgrid.gridSetting = {\r\n ...this.zgrid.gridSetting,\r\n columnConfigurations\r\n };\r\n\r\n if (gridStateLogic === StateType.cachedDataSetting) {\r\n settingConfig.gridState = this.zgrid.gridSetting.gridState;\r\n }\r\n\r\n this.gridService.setStateToCache(cacheName, settingConfig);\r\n\r\n const stateSettingInfo: StateSettingInfo = {\r\n projectCode: this.environment.projectCodes[0],\r\n fieldElementName: this.data.FieldElementName,\r\n componentUniqueKey: this.data.CacheInfo.Name ?? this.data.FieldElementName,\r\n userId: this.authService.e1Token.userName,\r\n stateType: StateType.savedSetting,\r\n stateData: JSON.stringify(settingConfig),\r\n storageCacheName: cacheName\r\n };\r\n\r\n if (previousCachedData?.id) {\r\n stateSettingInfo.id = previousCachedData.id;\r\n }\r\n\r\n this.stateSettingService.saveStateSetting(stateSettingInfo).subscribe();\r\n\r\n this.showHideRestoreGridSettingButton();\r\n this.toastService.show('Grid settings have been saved.', 'top', true, 2000, 'success');\r\n };\r\n\r\n // Call a method to update the event ID\r\n const buttonElement = event.currentTarget as HTMLButtonElement; // Get button element\r\n const buttonText = buttonElement.innerText.trim(); // Get button name (text)\r\n const clonedButton = { eventId: DataUtils.generateTimeStampId(), Label: buttonText }; \r\n \r\n // Set the DismissType property of the group to the dismissType property of the item\r\n //this.group['DismissType'] = item.dismissType;\r\n\r\n // Create an output event object with details about the button click\r\n const outputEvent = {\r\n type: 'buttonClick',\r\n target: event,\r\n data: clonedButton,\r\n triggerFrom: TriggerFromType.button\r\n } as ZComponentOutputEvent;\r\n\r\n // Update the buttonEventDetail property of the group with the output event details\r\n this.group['buttonEventDetail'] = {\r\n buttonDetail: outputEvent,\r\n triggerFrom: TriggerFromType.button\r\n };\r\n\r\n if (this.showRestoreGridSettingButton) {\r\n this.alertService.show(\r\n 'Overwrite Confirmation',\r\n 'You have already saved grid settings. Saving again will overwrite the previous settings.<br/>Do you want to proceed?',\r\n [\r\n { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n { text: 'Yes', cssClass: 'primary' } as AlertButton\r\n ], ['col-4']\r\n ).subscribe(reply => {\r\n if (reply === 'Yes') {\r\n saveGridConfig();\r\n }\r\n });\r\n }\r\n else {\r\n saveGridConfig();\r\n }\r\n }\r\n\r\n public restoreGridSettings(event: any) {\r\n const buttonElement = event.currentTarget as HTMLButtonElement; // Get button element\r\n const buttonText = buttonElement.innerText.trim(); // Get button name (text)\r\n\r\n this.alertService.show('Confirm Reset', 'Are you sure you want to reset the column settings to their default settings?<br/>This action cannot be undone.',\r\n [\r\n { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n { text: 'Yes', cssClass: 'primary' } as AlertButton\r\n ], ['col-4']).subscribe(reply => {\r\n if (reply === 'Yes') {\r\n // Call a method to update the event ID\r\n const clonedButton = { eventId: DataUtils.generateTimeStampId(), Label: buttonText }; \r\n \r\n // Set the DismissType property of the group to the dismissType property of the item\r\n //this.group['DismissType'] = item.dismissType;\r\n\r\n // Create an output event object with details about the button click\r\n const outputEvent = {\r\n type: 'buttonClick',\r\n target: event,\r\n data: clonedButton,\r\n triggerFrom: TriggerFromType.button\r\n } as ZComponentOutputEvent;\r\n\r\n // Update the buttonEventDetail property of the group with the output event details\r\n this.group['buttonEventDetail'] = {\r\n buttonDetail: outputEvent,\r\n triggerFrom: TriggerFromType.button\r\n };\r\n\r\n // Ensure columns are sorted based on their original order\r\n this.columns.sort((a, b) => a.originalOrderIndex - b.originalOrderIndex);\r\n\r\n //restore original hidden value\r\n this.columns.forEach((col) => {\r\n if (col.originalHiddenValue !== undefined && col.originalHiddenValue !== null) {\r\n col.hidden = col.originalHiddenValue;\r\n delete col.originalHiddenValue;\r\n }\r\n });\r\n\r\n // Generate grid columns and load data\r\n this.generateGridColumns().subscribe(() => {\r\n this.getData();\r\n });\r\n\r\n // Call the gridService.getStateCache and handle the result via subscription\r\n this.gridService.getStateCache(StateType.savedSetting, this.data).subscribe((cachedData) => {\r\n if (cachedData) {\r\n // Cache found, proceed with deletion\r\n this.gridService.deleteStateCache(StateType.savedSetting, this.data);\r\n\r\n // Toggle visibility of the restore button\r\n this.showHideRestoreGridSettingButton();\r\n\r\n // Delete the state setting based on the cache data ID\r\n this.stateSettingService.deleteStateSetting(cachedData.id).subscribe();\r\n\r\n this.toastService.show('Grid settings have been reset to default.', 'top', true, 2000, 'success');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n public gridCallback(group: ZGroup) {\r\n if (this.data['AfterloadCallback']) {\r\n const me = { ...this };\r\n\r\n this.group.subject.next({\r\n type: 'zgrid-AfterloadCallback',\r\n target: this.data['AfterloadCallback'],\r\n data: me\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n private setupGridButtons() {\r\n if (this.data.GridButtonFieldName_WF || this.data.GridButtonFieldName) {\r\n this.gridBtn = {\r\n ReadOnly: false,\r\n Visible: true,\r\n IsRequired: false,\r\n WorkflowCode: this.data.GridButtonFieldName_WF,\r\n Value: this.data.GridButtonFieldName,\r\n Type: this.data.GridButtonFieldName_WF ? 'zworkflowbuttons' : 'zbuttons'\r\n }\r\n }\r\n }\r\n\r\n private setDateColForFiltering() {\r\n const gridData = this.getGridData();\r\n if (this.isUseLocalData() && gridData && gridData.length > 0) {\r\n const dateCol = Object.keys(gridData[0]).filter(x => x.includes('Date') && !x.endsWith(ComponentConstant.GridColDateFilterSuffix));\r\n if (dateCol && dateCol.length > 0) {\r\n gridData.forEach(data => {\r\n dateCol.forEach(colName => {\r\n data[`${colName}${ComponentConstant.GridColDateFilterSuffix}`] = new Date(data[colName]);\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n private showHideRestoreGridSettingButton() {\r\n if (this.data.CacheInfo?.EnableSaveState) {\r\n this.showRestoreGridSettingButton = false;\r\n\r\n const stateType = this.gridService.getGridStateLogic(this.data);\r\n if (stateType === StateType.savedSetting || stateType === StateType.savedAndCachedDataSetting) {\r\n const settingCacheName = this.stateSettingService.getStorageCacheKey(stateType, this.data);\r\n const settingCacheValue = localStorage.getItem(settingCacheName);\r\n\r\n if (settingCacheValue) {\r\n this.showRestoreGridSettingButton = true;\r\n }\r\n }\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Grid configuration function\r\n public gridCustomAddCommand(group: ZGroup): Observable<any> {\r\n // declare button onclick event name base on grid name + prefix\r\n const gridAddButtonEventName = `${this.data.Name}_CustomAddButtonOnClick`;\r\n if (!this.group[gridAddButtonEventName]) {\r\n return of({});\r\n }\r\n\r\n return this.group[gridAddButtonEventName](group);\r\n }\r\n\r\n public gridCustomResetCommand(group: ZGroup): Observable<any> {\r\n // declare button onclick event name base on grid name + prefix\r\n const gridResetButtonEventName = `${this.data.Name}_CustomResetButtonOnClick`;\r\n if (!this.group[gridResetButtonEventName]) {\r\n return of({});\r\n }\r\n\r\n return this.group[gridResetButtonEventName](group);\r\n }\r\n\r\n public gridCustomRemoveCommand(dataItem: any, rowIndex: any): Observable<any> {\r\n // declare button onclick event name base on grid name + prefix\r\n const gridResetButtonEventName = `${this.data.Name}_CustomRemoveButtonOnClick`;\r\n if (!this.group[gridResetButtonEventName]) {\r\n return of({});\r\n }\r\n\r\n return this.group[gridResetButtonEventName](dataItem, rowIndex);\r\n }\r\n //#endregion\r\n\r\n //#region Inline Edit\r\n private createFormControls(gridCols: Array<any>) {\r\n let counterIndex = 0;\r\n // To force element to rebind data\r\n this.isInlineEditInputFieldLoading = true;\r\n this.zgrid.grid.loading = true;\r\n of([]).pipe(delay(0), tap(() => {\r\n this.inlineEditedFormGroups = this.inlineEditedFormGroups || {};\r\n const gridData = this.getGridData();\r\n if (Array.isArray(gridData)) {\r\n gridData.forEach(d => {\r\n const items = {};\r\n gridCols.forEach(c => {\r\n const isVisible = FieldUtils.resolveFormControlVisibility(this, c.field);\r\n const isRequired = FieldUtils.resolveFormControlRequired(this, c.field);\r\n const validators: ValidatorFn[] = ValidationUtils.getFieldValidators(c.field, isVisible, isRequired, this.group);\r\n items[c.field] = new UntypedFormControl(d[c.field], validators);\r\n });\r\n const formGroup = new UntypedFormGroup(items);\r\n\r\n if (d['Id']) {\r\n items['Id'] = items['Id'] ?? new UntypedFormControl({ value: d['Id'], disabled: false });\r\n }\r\n else {\r\n d['Id'] = counterIndex++;\r\n }\r\n this.inlineEditedFormGroups[d['Id']] = formGroup;\r\n });\r\n }\r\n this.isInlineEditInputFieldLoading = false;\r\n this.zgrid.grid.loading = false;\r\n this.tempInlineEditedFormGroups = this.inlineEditedFormGroups;\r\n })).subscribe();\r\n }\r\n\r\n public getInlineField(value: any) {\r\n return this.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(data: any, rowIndex: number) {\r\n const key = (data['Id'] || data['Id'] == 0) ? data['Id'] : rowIndex;\r\n if (this.isInlineEditInputFieldLoading) {\r\n return this.tempInlineEditedFormGroups[key] ?? this.tempInlineEditedFormGroups[0];\r\n }\r\n return this.inlineEditedFormGroups[key];\r\n }\r\n\r\n public getFormControlData(): any[] {\r\n const data = [];\r\n for (const k of Object.keys(this.inlineEditedFormGroups)) {\r\n data.push(this.inlineEditedFormGroups[k]?.value);\r\n }\r\n return data;\r\n }\r\n\r\n private setupGridWithInlineEdit() {\r\n if (this.hasInlineEditColumn(this.columns)) {\r\n this.tempInlineEditedFormGroups = this.inlineEditedFormGroups;\r\n this.inlineEditedFormGroups = {};\r\n this.createFormControls(this.columns.concat(this.generateHiddenColumnsField || []));\r\n }\r\n }\r\n\r\n public isInlineFormGroupHasValue(): boolean {\r\n return this.inlineEditedFormGroups && Object.keys(this.inlineEditedFormGroups).length > 0;\r\n }\r\n\r\n private hasInlineEditColumn(gridCols): boolean {\r\n return gridCols?.some(c => c.isEditableInGrid);\r\n }\r\n\r\n public getCellStyleForInlineEdit(columnField: ZField, dataItem: any, rowIndex: number): any {\r\n const form = this.getInlineForm(dataItem, rowIndex) as UntypedFormGroup;\r\n if (!form) {\r\n return {};\r\n }\r\n const style = columnField[`Style10`];\r\n const func = FieldUtils.getGroupEvalValue.call(this, style);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n return callFunc(form.value);\r\n }\r\n else if (typeof func === 'string') {\r\n return func;\r\n }\r\n return style;\r\n }\r\n //#endregion\r\n\r\n //#region Event\r\n // Source: https://www.telerik.com/forums/kendo-angular-grid-blank-space-in-the-end-when-you-resize(reduce)-any-column\r\n public adjustWidthUponResize() {\r\n const tableWidth = document.querySelector('.k-grid-table')[`offsetWidth`];\r\n const contentWidth = document.querySelector('.k-grid-content')[`offsetWidth`];\r\n if (tableWidth < contentWidth) {\r\n const currentLastColWidth = document.querySelector('.k-grid-content .k-grid-table tr td:last-of-type')[`offsetWidth`];\r\n\r\n this.columns[this.columns.length - 1].width = currentLastColWidth + (contentWidth - tableWidth) - 10; // account for the vertical scrollbar;\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region onChange Events\r\n public filterChange(event: any): void {\r\n if (!this.isUseLocalData()) {\r\n this.gridSetting = { ...this.zgrid.gridSetting };\r\n this.zgrid.filterChange(event);\r\n }\r\n }\r\n\r\n public pageChange(event: PageChangeEvent): void {\r\n if (!this.isUseLocalData()) {\r\n this.gridSetting = { ...this.zgrid.gridSetting };\r\n this.zgrid.pageChange(event);\r\n }\r\n }\r\n\r\n public sortChange(sort: SortDescriptor[]): void {\r\n if (!this.isUseLocalData()) {\r\n this.gridSetting = { ...this.zgrid.gridSetting };\r\n this.zgrid.sortChange(sort);\r\n }\r\n }\r\n\r\n public inCellCheckBoxOnChange(event: any, rowIndex: any, column: any) {\r\n const isChecked = event.detail.checked;\r\n const gData = this.getGridData();\r\n gData[rowIndex][column.Value] = isChecked;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region command handler\r\n public addHandler({ sender }) {\r\n this.isNew = true;\r\n\r\n // close any existing editor\r\n this.closeEditor(sender);\r\n\r\n // loop all column to get validation and create form control\r\n const colFormControl = {};\r\n this.columns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n if (col.Type === 'ztexteditor') {\r\n validators.push(ValidationUtils.validateRequiredIfNotBlankAndNoHtml);\r\n }\r\n else {\r\n validators.push(ValidationUtils.validateRequiredIfNotBlank);\r\n }\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n }\r\n\r\n colFormControl[col.Value] = new UntypedFormControl(null, validators);\r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new UntypedFormGroup(colFormControl);\r\n\r\n // add to grid row\r\n sender.addRow(this.formGroup);\r\n }\r\n\r\n public saveHandler({ sender, rowIndex, formGroup, isNew }): void {\r\n // Get the existing data from the grid\r\n const gridExistingData = this.getGridData();\r\n\r\n // Check if the form is valid\r\n if (formGroup.valid) {\r\n // Check for a unique key field\r\n const uniqueKey = this.data['UniqueKey'];\r\n if (uniqueKey) {\r\n // Get the unique key value from the form\r\n const formUniqueKeyValue = formGroup.value[uniqueKey];\r\n\r\n // Check if there is a duplicate value\r\n const isDuplicate = gridExistingData.some(data => {\r\n return (\r\n // If editing an existing row, skip the current row being edited\r\n !isNew &&\r\n rowIndex !== undefined &&\r\n // Check if the unique key value already exists in the grid\r\n data[uniqueKey] === formUniqueKeyValue &&\r\n // Skip checking against the current row being edited\r\n data[uniqueKey] !== gridExistingData[rowIndex][uniqueKey]\r\n );\r\n });\r\n\r\n // If there is a duplicate value, show an error message and return without saving\r\n if (isDuplicate) {\r\n this.toastService.show('Error occur: Duplicated unique field entry.', 'top', true, 3000, 'danger');\r\n return;\r\n }\r\n }\r\n\r\n // If the unique key value is valid and there are no duplicates, save the data\r\n if (isNew) {\r\n // Add a new row to the grid data\r\n gridExistingData.push(formGroup.value);\r\n } else {\r\n // Update an existing row in the grid data\r\n gridExistingData[rowIndex] = formGroup.value;\r\n }\r\n\r\n // Update the grid data and close the row editor\r\n this.setData(gridExistingData);\r\n sender.closeRow(rowIndex);\r\n }\r\n }\r\n\r\n public cancelHandler({ sender, rowIndex }) {\r\n // cancel any existing editor\r\n sender.closeRow(rowIndex);\r\n }\r\n\r\n public editHandler({ sender, rowIndex, dataItem }) {\r\n // Set a flag to indicate that the row being edited is not a new row\r\n this.isNew = false;\r\n\r\n // Close any existing editor\r\n this.closeEditor(sender);\r\n\r\n // loop all column to get validation and create form control, append current row value\r\n const colFormControl = {};\r\n this.columns.forEach(col => {\r\n const validators: ValidatorFn[] = [];\r\n if (col.IsRequired) {\r\n validators.push(Validators.required);\r\n if (col.Type === 'ztexteditor') {\r\n validators.push(ValidationUtils.validateRequiredIfNotBlankAndNoHtml);\r\n }\r\n else {\r\n validators.push(ValidationUtils.validateRequiredIfNotBlank);\r\n }\r\n }\r\n if (col.ValidatorPattern) {\r\n validators.push(Validators.pattern(col.ValidatorPattern));\r\n }\r\n\r\n colFormControl[col.Value] = new UntypedFormControl(dataItem[col.Value], validators);\r\n });\r\n\r\n // set form control object to form group\r\n this.formGroup = new UntypedFormGroup(colFormControl);\r\n\r\n // Set the form group on the row being edited\r\n this.editedRowIndex = rowIndex;\r\n sender.editRow(rowIndex, this.formGroup);\r\n }\r\n\r\n public removeHandler({ sender, dataItem }) {\r\n const gData = this.getGridData();\r\n const index = this.getItemIndex(dataItem, gData, this.data['UniqueKey']);\r\n gData.splice(index, 1);\r\n\r\n // Update the data in the grid\r\n this.setData(gData);\r\n\r\n sender.cancelCell();\r\n }\r\n\r\n private closeEditor(grid, rowIndex = this.editedRowIndex) {\r\n grid.closeRow(rowIndex);\r\n this.editedRowIndex = undefined;\r\n this.formGroup = undefined;\r\n }\r\n\r\n private getItemIndex(item: any, data: any[], key: string): number {\r\n for (let idx = 0; idx < data.length; idx++) {\r\n if (data[idx][key] === item[key]) {\r\n return idx;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n //#endregion\r\n\r\n //#region Grid Filter\r\n private setupFilterFeature() {\r\n if (this.data.GridFilterBarField) {\r\n this.filterGroup = { ...this.group };\r\n }\r\n if (this.data.GridAdvFilterBarField) {\r\n this.advfilterGroup = { ...this.group };\r\n }\r\n }\r\n\r\n public search() {\r\n const form = this.filterGroup.form;\r\n const controls = form.controls;\r\n\r\n if (this.isShowAdvFilter) {\r\n const advform = this.advfilterGroup.form;\r\n const advcontrols = advform.controls;\r\n for (const c of Object.keys(advcontrols)) {\r\n controls[c] = advcontrols[c];\r\n }\r\n }\r\n\r\n if (this.data.FilterSearch) {\r\n this.group.subject.next({\r\n type: 'zgrid-filtersearch',\r\n target: this.data.FilterSearch,\r\n data: { formcontrols: controls },\r\n } as ZComponentOutputEvent);\r\n }\r\n else {\r\n this.params.filterParams = [];\r\n Object.keys(controls).forEach(controlName => {\r\n if (controls[controlName].value) {\r\n const field = FieldUtils.getFieldFromFieldsByValue(this.filterGroup.fields, controlName) || FieldUtils.getFieldFromFieldsByValue(this.advfilterGroup.fields, controlName);\r\n this.params.filterParams.push({\r\n key: field.ValueExpr || field.Value,\r\n ops: this.mapFilterOperatorByFieldType(field),\r\n value: controls[controlName].value\r\n })\r\n }\r\n });\r\n this.getData();\r\n }\r\n }\r\n\r\n public cancelEdit() {\r\n this.clearFilterData(this.filterGroup);\r\n if (this.data.GridAdvFilterBarField) {\r\n this.clearFilterData(this.advfilterGroup);\r\n }\r\n }\r\n\r\n private clearFilterData(group: ZGroup) {\r\n const form = group.form;\r\n const controls = form.controls;\r\n Object.keys(controls).forEach(controlName => {\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(controlName, null, group, true);\r\n });\r\n }\r\n\r\n public advancedSearch() {\r\n this.isShowAdvFilter = !this.isShowAdvFilter;\r\n if (!this.isShowAdvFilter) {\r\n this.clearFilterData(this.advfilterGroup);\r\n }\r\n }\r\n\r\n private mapFilterOperatorByFieldType(field: ZField) {\r\n switch (field.Type) {\r\n case 'number':\r\n case 'numeric':\r\n case 'date':\r\n case 'email':\r\n case 'password':\r\n case 'tel':\r\n case 'text':\r\n case 'url':\r\n case 'currency':\r\n case 'textarea':\r\n if (!field['FilterContainsUsingEqual']) {\r\n return 'contains';\r\n }\r\n return '==';\r\n default:\r\n return '=';\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region grid common setting function\r\n public set setGridTitle(newTitle: string) {\r\n this.gridTitle = newTitle;\r\n }\r\n\r\n public set setGridState(state: State) {\r\n this.gridSetting.gridState = state;\r\n this.zgrid.gridSetting.gridState = state;\r\n }\r\n\r\n public setGridToFirstPage() {\r\n this.gridSetting.gridState.skip = 0;\r\n this.zgrid.gridSetting.gridState.skip = 0;\r\n }\r\n //#endregion\r\n\r\n //#region detail grid function\r\n public detailExpand(event: DetailExpandEvent): void {\r\n this.handleDetailGridSession(event);\r\n this.executeDetailExpandCallback(event);\r\n }\r\n\r\n private handleDetailGridSession(event: DetailExpandEvent): void {\r\n const detailGrid = this.data?.DetailGrid;\r\n if (!detailGrid?.ResourceURL) {\r\n return;\r\n }\r\n\r\n const sessionKey = this.generateDetailGridSessionKey(event, detailGrid);\r\n this.storageService.set('detailGridSessionKey', sessionKey);\r\n }\r\n\r\n private generateDetailGridSessionKey(event: DetailExpandEvent, detailGrid: any): string {\r\n const gridName = this.extractGridName(detailGrid.ResourceURL);\r\n const recordId = this.getRecordId(event.dataItem);\r\n return `##DetailGrid##${this.group[gridName]}##${recordId}##`;\r\n }\r\n\r\n private extractGridName(resourceURL: string): string {\r\n return resourceURL.split(\".\")[1];\r\n }\r\n\r\n private getRecordId(dataItem: any): string | number {\r\n return dataItem[this.data.UniqueKey] ?? dataItem.Id;\r\n }\r\n\r\n private executeDetailExpandCallback(event: DetailExpandEvent): void {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.DetailExpand);\r\n \r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event, this.getGridData());\r\n }\r\n }\r\n\r\n public detailCollapse(event: DetailCollapseEvent): void {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.DetailCollapse);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event, this.getGridData());\r\n }\r\n };\r\n //#endregion\r\n}\r\n","<div class=\"grid-container e1tag-style\" [ngClass]=\"data.Class\" [style]=\"componentProperties.style.style\">\r\n <!-- Tooltip Template -->\r\n <ng-template #template let-anchor>\r\n <span>{{ truncateText(anchor.nativeElement.innerText) }}</span>\r\n </ng-template>\r\n\r\n <!-- Popover Component -->\r\n <kendo-popover #gridPopOver [position]=\"data.PopOverPosition || 'bottom'\" [templateData]=\"getContextData.bind(this)\">\r\n <ng-template kendoPopoverBodyTemplate let-data=\"data\">\r\n <div [style]=\"data.BodyStyle\"\r\n class=\"popoverbody\"\r\n *ngIf=\"data && data.Body\"\r\n [innerHTML]=\"data.Body | htmlSanitize\"\r\n [ngClass]=\"data.BodyClass\"\r\n (mouseleave)=\"closePopOver.call(this, $event)\">\r\n </div>\r\n </ng-template>\r\n </kendo-popover>\r\n\r\n <!-- Main Grid Container -->\r\n <div kendoTooltip\r\n showOn=\"none\"\r\n [tooltipTemplate]=\"template\"\r\n filter=\".k-grid td\"\r\n (mouseover)=\"showTooltip($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n\r\n <div kendoPopoverContainer\r\n [popover]=\"gridPopOver\"\r\n filter=\"div.gridCell.withPopoverInGrid\"\r\n showOn=\"none\"\r\n kendoPopoverContainer\r\n #popovercontainer=\"kendoPopoverContainer\">\r\n\r\n <!-- Kendo Grid -->\r\n <kendo-grid [zgridbinding]=\"{\r\n data: data,\r\n group: group,\r\n params: params,\r\n gridSubject: gridSubject,\r\n gridSetting: gridSetting\r\n }\"\r\n [ngClass]=\"data.Class\"\r\n class=\"desktop-grid e1tag-style2\"\r\n [scrollable]=\"data.scrollAble === false ? 'none' : 'scrollable'\"\r\n [pageable]=\"pageable\"\r\n [class.hiden-pager]=\"!pageable\"\r\n [pageSize]=\"gridSetting.gridState.take\"\r\n [skip]=\"gridSetting.gridState.skip\"\r\n [sort]=\"gridSetting.gridState.sort\"\r\n [sortable]=\"{allowUnsort: true, mode: 'multiple'}\"\r\n [filter]=\"gridSetting.gridState.filter\"\r\n [filterable]=\"data.enableFiltering !== false\"\r\n [resizable]=\"true\"\r\n [reorderable]=\"true\"\r\n [columnMenu]=\"data.DisableGridColumnMenu ? false : { filter: true }\"\r\n [hidden]=\"!(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n (cellClick)=\"cellClickHandler($event)\"\r\n (cellClose)=\"editCellCloseHandler($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n (pageChange)=\"pageChange($event)\"\r\n (sortChange)=\"sortChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n [kendoGridSelectBy]=\"rowSelectionKey\"\r\n [selectable]=\"selectableSettings\"\r\n [(selectedKeys)]=\"rowSelection\"\r\n [style]=\"componentProperties.style.style2\"\r\n [trackBy]=\"trackBy\"\r\n (cancel)=\"cancelHandler($event)\"\r\n (save)=\"saveHandler($event)\"\r\n (remove)=\"removeHandler($event)\"\r\n (edit)=\"editHandler($event)\"\r\n (add)=\"addHandler($event)\"\r\n (columnResize)=\"adjustWidthUponResize()\"\r\n (excelExport)=\"onExcelExport($event)\"\r\n [rowClass]=\"rowCallback.bind(this)\"\r\n (detailExpand)=\"detailExpand($event)\" \r\n (detailCollapse)=\"detailCollapse($event)\">\r\n\r\n <!-- Toolbar Template -->\r\n <ng-template kendoGridToolbarTemplate\r\n *ngIf=\"data.AllowRefreshButton ||\r\n data.AllowExport ||\r\n data.CacheInfo?.EnableSaveState ||\r\n data.Title ||\r\n data.GridButtonFieldName_WF ||\r\n data.GridButtonFieldName ||\r\n data.EnableGridCommand ||\r\n data.EnableCustomAddCommand ||\r\n data.EnableCustomResetCommand\">\r\n\r\n <!-- Left Toolbar Items -->\r\n <div class=\"toolbar-left-item\" *ngIf=\"gridTitle || data.AllowRefreshButton || data.AllowExport\">\r\n <kendo-label class=\"gridTitle\" *ngIf=\"gridTitle\">{{ gridTitle }}</kendo-label>\r\n\r\n\r\n <button title=\"Refresh\"\r\n type=\"button\"\r\n class=\"left-buttons refresh-button\"\r\n kendoButton\r\n (click)=\"refreshData()\"\r\n *ngIf=\"data.AllowRefreshButton\">\r\n <fa-icon icon=\"redo\" style=\"color:black; font-size: 1.2rem;\"></fa-icon>\r\n </button>\r\n\r\n <div class=\"toolbar-left-item-second-container\"\r\n *ngIf=\"data.AllowExport\"\r\n [class.with-grid-title]=\"gridTitle || data.AllowRefreshButton\">\r\n <button type=\"button\"\r\n class=\"left-buttons export-button\"\r\n kendoGridExcelCommand\r\n *ngIf=\"data.AllowExport\">\r\n <fa-icon icon=\"download\"></fa-icon>\r\n <span class=\"export-to-excel-button-text\">\r\n {{ getToolBarItemLabelName('Download as Excel') }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Right Toolbar Items -->\r\n <div class=\"toolbar-right-item\"\r\n *ngIf=\"gridBtn ||\r\n data.CacheInfo?.EnableSaveState ||\r\n gridDefaultStateExist ||\r\n data.EnableGridCommand ||\r\n data.EnableCustomAddCommand ||\r\n data.EnableCustomResetCommand\">\r\n\r\n <app-zworkflowbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zworkflowbuttons'\"\r\n [data]=\"gridBtn\"\r\n [group]=\"group\"\r\n [form]=\"form\">\r\n </app-zworkflowbuttons>\r\n\r\n <app-zbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zbuttons'\"\r\n [data]=\"gridBtn\"\r\n [group]=\"group\"\r\n [form]=\"form\">\r\n </app-zbuttons>\r\n\r\n <button type=\"button\"\r\n kendoButton\r\n (click)=\"saveGridSettings($event)\"\r\n *ngIf=\"data.CacheInfo?.EnableSaveState\">\r\n <fa-icon icon=\"star\" style=\"color:black;\"></fa-icon>\r\n {{ getToolBarItemLabelName('Save Settings') }}\r\n </button>\r\n\r\n <button type=\"button\"\r\n kendoButton\r\n (click)=\"restoreGridSettings($event)\"\r\n *ngIf=\"showRestoreGridSettingButton\">\r\n <fa-icon [icon]=\"faStar\" style=\"color:black;\"></fa-icon>\r\n {{ getToolBarItemLabelName('Reset to Default') }}\r\n </button>\r\n\r\n <button type=\"button\"\r\n kendoGridAddCommand\r\n *ngIf=\"data.EnableGridCommand\">\r\n <fa-icon icon=\"add\" style=\"color:black;\"></fa-icon>\r\n {{ getToolBarItemLabelName(data.AddCommandButtonName ? data.AddCommandButtonName : 'Add') }}\r\n </button>\r\n\r\n <button type=\"button\"\r\n kendoButton\r\n (click)=\"gridCustomAddCommand(group)\"\r\n *ngIf=\"data.EnableCustomAddCommand\">\r\n <fa-icon icon=\"add\" style=\"color:black;\"></fa-icon>\r\n {{ getToolBarItemLabelName(data.AddCommandButtonName ? data.AddCommandButtonName : 'Add') }}\r\n </button>\r\n\r\n <button type=\"button\"\r\n kendoButton\r\n (click)=\"gridCustomResetCommand(group)\"\r\n *ngIf=\"data.EnableCustomResetCommand\">\r\n <fa-icon icon=\"trash\" style=\"color:black;\"></fa-icon>\r\n {{ getToolBarItemLabelName(data.ResetCommandButtonName ? data.ResetCommandButtonName : 'Reset') }}\r\n </button>\r\n </div>\r\n\r\n <!-- Filter Container -->\r\n <div class=\"filter-container\" *ngIf=\"data.GridFilterBarField\">\r\n <div class=\"normal-filter-container\">\r\n <app-zform class=\"filter-fields\"\r\n [group]=\"filterGroup\"\r\n [fieldName]=\"data.GridFilterBarField\">\r\n </app-zform>\r\n\r\n <div class=\"filter-buttons\" [ngClass]=\"data.Class\">\r\n <button kendoButton fillMode=\"solid\"\r\n size=\"medium\"\r\n strong=\"true\"\r\n themeColor=\"primary\"\r\n (click)=\"search()\">\r\n <fa-icon icon=\"search\"></fa-icon>\r\n <span class=\"btn-label ion-text-capitalize\">\r\n {{ getToolBarItemLabelName('Search') }}\r\n </span>\r\n </button>\r\n\r\n <button kendoButton fillMode=\"outline\"\r\n size=\"medium\"\r\n strong=\"true\"\r\n themeColor=\"primary\"\r\n (click)=\"cancelEdit()\"\r\n *ngIf=\"data.IsShowGridCancelFilterButton\">\r\n <fa-icon icon=\"times\"></fa-icon>\r\n </button>\r\n\r\n <button kendoButton fillMode=\"solid\"\r\n size=\"medium\"\r\n strong=\"true\"\r\n [ngClass]=\"isShowAdvFilter ? 'toggleOn' : 'toggleOff'\"\r\n (click)=\"advancedSearch()\"\r\n *ngIf=\"data.GridAdvFilterBarField\">\r\n <fa-icon icon=\"sliders-h\"></fa-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Advanced Filter -->\r\n <app-zform *ngIf=\"data.GridAdvFilterBarField\"\r\n class=\"to-preload-the-fields\"\r\n [group]=\"advfilterGroup\"\r\n [fieldName]=\"data.GridAdvFilterBarField\"\r\n style=\"display:none;\">\r\n </app-zform>\r\n\r\n <div class=\"adv-filter-container\" *ngIf=\"isShowAdvFilter\" [@hideAndShowAnimation]>\r\n <div class=\"adv-filter-seperator\">\r\n <span>{{ getToolBarItemLabelName('Advanced Search') }}</span>\r\n </div>\r\n\r\n <app-zform class=\"advfilter-fields\"\r\n [group]=\"advfilterGroup\"\r\n [fieldName]=\"data.GridAdvFilterBarField\">\r\n </app-zform>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Checkbox Column -->\r\n <kendo-grid-checkbox-column *ngIf=\"!!data.SelectOptions\"\r\n [width]=\"40\"\r\n showSelectAll=\"true\"\r\n [columnMenu]=\"true\"\r\n [locked]=\"checkboxColumnPinned\">\r\n </kendo-grid-checkbox-column>\r\n\r\n <!-- Dynamic Columns -->\r\n <kendo-grid-column [style]=\"getGridColumnStyle()\"\r\n class=\"e1tag-style3\"\r\n *ngFor=\"let col of columns;\"\r\n [field]=\"col.field\"\r\n [title]=\"col.title\"\r\n [width]=\"col.width\"\r\n [minResizableWidth]=\"col.minResizableWidth\"\r\n [filter]=\"col.filter\"\r\n [filterable]=\"filterable(col.enableFiltering)\"\r\n [sortable]=\"sortable(col.enableSorting)\"\r\n [headerStyle]=\"getGridHeaderStyle()\"\r\n headerClass=\"e1tag-style4\"\r\n [footerStyle]=\"getGridFooterStyle()\"\r\n footerClass=\"e1tag-style9\"\r\n [hidden]=\"col.hidden\"\r\n [format]=\"col.format\"\r\n [class]=\"col.Class\"\r\n [locked]=\"locked(col)\"\r\n editor=\"numeric\"\r\n [columnMenu]=\"!col.disableColumnMenu\"\r\n [includeInChooser]=\"col.includeInChooser\"\r\n [editor]=\"col.editorType\">\r\n\r\n <!-- Filter Templates -->\r\n <div [ngSwitch]=\"true\">\r\n <!-- Numeric Filter -->\r\n <div *ngSwitchCase=\"col.fieldType === 'number' ||\r\n col.fieldType === 'currency' ||\r\n col.fieldType === 'znumeric'\">\r\n <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-grid-numeric-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n [column]=\"column\"\r\n [filter]=\"filter\"\r\n operator=\"eq\">\r\n <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n </kendo-grid-numeric-filter-cell>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Date Filter -->\r\n <div *ngSwitchCase=\"col.fieldType == 'zdate' ||\r\n col.fieldType === 'ztime' ||\r\n col.fieldType === 'zdatetime' ||\r\n col.fieldType === 'zuidatetime'\">\r\n <!-- Date Range Filter -->\r\n <div *ngIf=\"col.filterByDateRange === true\">\r\n <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\" operator=\"lte\">\r\n <date-range-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n class=\"date-range-filter\"\r\n [filter]=\"filter\"\r\n [field]=\"col.field\"\r\n [data]=\"data\">\r\n <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n </date-range-filter-cell>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Regular Date Filter -->\r\n <div *ngIf=\"col.filterByDateRange === false\">\r\n <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-grid-date-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n [column]=\"column\"\r\n [filter]=\"filter\"\r\n operator=\"lte\">\r\n <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n </kendo-grid-date-filter-cell>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Boolean Filter -->\r\n <div *ngSwitchCase=\"col.fieldType === 'checkbox'\">\r\n <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-grid-boolean-filter-cell [column]=\"column\"\r\n [filter]=\"filter\"\r\n operator=\"eq\">\r\n </kendo-grid-boolean-filter-cell>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Default String Filter -->\r\n <div *ngSwitchDefault>\r\n <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-grid-string-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n [column]=\"column\"\r\n [filter]=\"filter\"\r\n operator=\"contains\">\r\n <kendo-filter-contains-operator></kendo-filter-contains-operator>\r\n <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n <kendo-filter-startswith-operator></kendo-filter-startswith-operator>\r\n <kendo-filter-endswith-operator></kendo-filter-endswith-operator>\r\n <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n </kendo-grid-string-filter-cell>\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <!-- Grid Edit Template -->\r\n <ng-template kendoGridEditTemplate\r\n *ngIf=\"data.EnableGridCommand\"\r\n let-dataItem=\"dataItem\"\r\n let-column=\"col\"\r\n let-formGroup=\"formGroup\"\r\n let-isNew=\"isNew\">\r\n <div [ngSwitch]=\"col.fieldType\">\r\n <!-- Number Editor -->\r\n <div *ngSwitchCase=\"'number'\">\r\n <kendo-numerictextbox #cellAnchor [formControl]=\"formGroup.get(col.field)\"></kendo-numerictextbox>\r\n <kendo-popup [anchor]=\"cellAnchor.numericInput\"\r\n *ngIf=\"formGroup.get(col.field).invalid && !(isNew && formGroup.get(col.field).untouched)\"\r\n popupClass=\"k-widget k-tooltip k-tooltip-validation k-invalid-msg\"\r\n style=\"padding-left: 2px; opacity: 0.5;\">\r\n <fa-icon icon=\"exclamation-triangle\" style=\"color: red;\"></fa-icon> \r\n <kendo-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n *ngIf=\"formGroup.get(col.field).invalid &&\r\n !formGroup.get(col.field).untouched &&\r\n formGroup.get(col.field).errors?.required\">\r\n {{ col.Name }} required.\r\n </kendo-label>\r\n <kendo-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n *ngIf=\"formGroup.get(col.field).invalid &&\r\n !formGroup.get(col.field).untouched &&\r\n formGroup.get(col.field).errors?.pattern\">\r\n {{ col.ValidatorMessage ? col.ValidatorMessage : \"Please check the input value.\" }}\r\n </kendo-label>\r\n </kendo-popup>\r\n </div>\r\n\r\n <!-- Default Text Editor -->\r\n <div *ngSwitchDefault>\r\n <kendo-textbox #cellAnchor [formControl]=\"formGroup.get(col.field)\"></kendo-textbox>\r\n <kendo-popup [anchor]=\"cellAnchor.input\"\r\n *ngIf=\"formGroup.get(col.field).invalid && !(isNew && formGroup.get(col.field).untouched)\"\r\n popupClass=\"k-widget k-tooltip k-tooltip-validation k-invalid-msg\"\r\n style=\"padding-left: 2px; opacity: 0.5;\">\r\n <fa-icon icon=\"exclamation-circle\" style=\"color: red;\"></fa-icon> \r\n <kendo-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n *ngIf=\"formGroup.get(col.field).invalid &&\r\n !formGroup.get(col.field).untouched &&\r\n formGroup.get(col.field).errors?.required\">\r\n {{ col.Name }} required.\r\n </kendo-label>\r\n <kendo-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n *ngIf=\"formGroup.get(col.field).invalid &&\r\n !formGroup.get(col.field).untouched &&\r\n formGroup.get(col.field).errors?.pattern\">\r\n {{ col.ValidatorMessage ? col.ValidatorMessage : \"Please check the input value.\" }}\r\n </kendo-label>\r\n </kendo-popup>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Cell Templates -->\r\n <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\r\n <!-- Regular Cell Display -->\r\n <div style=\"margin: 1px 0;\"\r\n *ngIf=\"!col.clickableIcons && col.isEditableInGrid !== true\"\r\n [ngSwitch]=\"col.fieldType\"\r\n [ngClass]=\"getClass(dataItem, col)\"\r\n [style]=\"getCellStyle(col, dataItem)\"\r\n [attr.data-id]=\"dataItem.Id\"\r\n [attr.column-name]=\"col.field\"\r\n (mouseenter)=\"showPopOver(col, $event)\"\r\n (mouseleave)=\"closePopOver($event)\">\r\n\r\n <!-- Date Cell -->\r\n <span *ngSwitchCase=\"'zdate'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy' }}\r\n </span>\r\n\r\n <!-- Time Cell -->\r\n <span *ngSwitchCase=\"'ztime'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: col.FormatOptions ?? 'HH:mm' }}\r\n </span>\r\n\r\n <!-- Short Date Cell -->\r\n <span *ngSwitchCase=\"'zshortdate'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: col.FormatOptions ?? 'MMM yyyy' }}\r\n </span>\r\n\r\n <!-- DateTime Cell -->\r\n <span *ngSwitchCase=\"'zdatetime'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n\r\n <!-- UI DateTime Cell -->\r\n <span *ngSwitchCase=\"'zuidatetime'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n\r\n <!-- Number Cell -->\r\n <span *ngSwitchCase=\"'number'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | number }}\r\n </span>\r\n\r\n <!-- Currency Cell -->\r\n <span *ngSwitchCase=\"'currency'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | number: getFormat(col, '1.2-2') }}\r\n </span>\r\n\r\n <!-- Numeric Cell -->\r\n <span *ngSwitchCase=\"'znumeric'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | number: getFormat(col) }}\r\n </span>\r\n\r\n <!-- URL Cell -->\r\n <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] }}\r\n </span>\r\n\r\n <!-- Default Cell -->\r\n <span *ngSwitchDefault>\r\n <!-- Icon Display -->\r\n <div style=\"margin: 5px 0;\"\r\n *ngIf=\"col.gridCellReplaceValue && getIconName(col.gridCellReplaceValue, dataItem[col.field]) !== ''\">\r\n <fa-icon [icon]=\"getIconName(col.gridCellReplaceValue, dataItem[col.field])\"></fa-icon>\r\n </div>\r\n\r\n <!-- Text Display with Conditional Styling -->\r\n <div *ngIf=\"!col.gridCellReplaceValue\" [ngSwitch]=\"cellStyleCondition(col, dataItem[col.field])\">\r\n <span *ngSwitchCase=true>\r\n <div class=\"cellStyleConditionDefault\" [style]=\"setCellStyleCondition(col, dataItem[col.field])\">\r\n <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n </div>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n </span>\r\n </div>\r\n </span>\r\n </div>\r\n\r\n <!-- Inline Editable Cell -->\r\n <div style=\"margin: 5px 0;\"\r\n *ngIf=\"col.isEditableInGrid === true &&\r\n isInlineFormGroupHasValue() &&\r\n !isInlineEditInputFieldLoading &&\r\n !col.gridCellReplaceValue\"\r\n [style]=\"componentProperties.style.style5\"\r\n [ngClass]=\"getClass(dataItem, col)\"\r\n class=\"e1tag-style5\"\r\n [style]=\"getCellStyleForInlineEdit(col, dataItem, rowIndex)\">\r\n <app-zinput-container [data]=\"getInlineField(col.field)\"\r\n [group]=\"group\"\r\n [form]=\"getInlineForm(dataItem, rowIndex)\"\r\n [containerField]=\"containerField\"\r\n [style]=\"componentProperties.style.style6\"\r\n class=\"e1tag-style6\">\r\n </app-zinput-container>\r\n </div>\r\n\r\n <!-- Clickable Icons -->\r\n <span style=\"margin-top: 10px;\" *ngFor=\"let icon of col.clickableIcons\">\r\n <span [ngClass]=\"icon.Class ? icon.Class : ''\"\r\n *ngIf=\"!!icon && (!!dataItem.WFS_StatusCode && !!icon)\r\n ? dataItem.WFS_StatusCode !== icon.WFS_StatusCode\r\n : true;\r\n else disabledButton\"\r\n (click)=\"onBtnClick($event, icon, dataItem, dataItem[col.field])\">\r\n {{icon.Name || dataItem[col.field]}}\r\n <fa-icon [icon]=\"icon.Icon\" style=\"padding: 4px 6px;\"></fa-icon>\r\n </span>\r\n <ng-template #disabledButton></ng-template>\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Footer Template -->\r\n <ng-template kendoGridFooterTemplate\r\n let-column\r\n let-columnIndex=\"columnIndex\"\r\n *ngIf=\"data.EnableAggregate\">\r\n <div style=\"margin: 5px 0;\"\r\n [ngSwitch]=\"col.fieldType\"\r\n [style]=\"componentProperties.style.style7\"\r\n class=\"e1tag-style7\">\r\n {{col.aggregateType}}\r\n\r\n <span *ngSwitchCase=\"'zdate'\">\r\n {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'ztime'\">\r\n {{ col.aggregateValue | date: col.FormatOptions ?? 'HH:mm' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'zshortdate'\">\r\n {{ col.aggregateValue | date: col.FormatOptions ?? 'MMM yyyy' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'zdatetime'\">\r\n {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'zuidatetime'\">\r\n {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'number'\">\r\n {{ col.aggregateValue | number }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'currency'\">\r\n {{ col.aggregateValue | number: getFormat(col, '1.2.2') }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'znumeric'\">\r\n {{ col.aggregateValue | number: getFormat(col) }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\">\r\n {{ col.aggregateValue }}\r\n </span>\r\n\r\n <span *ngSwitchDefault>\r\n {{ col.aggregateValue }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n <!-- Command Column (this is not working properly, need to further enhance)-->\r\n <kendo-grid-command-column *ngIf=\"data.EnableGridCommand\"\r\n width=\"180\"\r\n [columnMenu]=\"false\"\r\n [style]=\"componentProperties.style.style8\"\r\n class=\"e1tag-style8\">\r\n <ng-template kendoGridCellTemplate let-isNew=\"isNew\">\r\n <button kendoGridSaveCommand>\r\n {{ isNew ? 'Save' : 'Update' }}\r\n </button>\r\n <button kendoGridCancelCommand [primary]=\"true\">\r\n {{ isNew ? 'Discard changes' : 'Cancel' }}\r\n </button>\r\n <button kendoGridEditCommand>\r\n {{ \"Edit\" }}\r\n </button>\r\n <button kendoGridRemoveCommand>\r\n {{ \"Remove\" }}\r\n </button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n\r\n <!-- Custom Remove Command Column -->\r\n <kendo-grid-command-column *ngIf=\"data.EnableCustomRemoveCommand\"\r\n width=\"180\"\r\n [columnMenu]=\"false\"\r\n [style]=\"componentProperties.style.style8\"\r\n class=\"e1tag-style8\">\r\n <ng-template kendoGridCellTemplate let-isNew=\"isNew\" let-dataItem let-rowIndex=\"rowIndex\">\r\n <button type=\"button\"\r\n kendoButton\r\n (click)=\"gridCustomRemoveCommand(dataItem, rowIndex)\"\r\n *ngIf=\"data.EnableCustomRemoveCommand\">\r\n {{ \"Remove\" }}\r\n </button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n\r\n <kendo-grid-excel fileName=\"Export.xlsx\" [fetchData]=\"allResults\"></kendo-grid-excel>\r\n\r\n <!--detail grid-->\r\n <ng-template kendoGridDetailTemplate *ngIf=\"data.DetailGrid === undefined ? false : data.DetailGrid.Visible\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" \r\n [data]=\"data.DetailGrid\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" \r\n [componentProperties]=\"componentProperties\">\r\n </app-zgrid>\r\n </ng-template>\r\n \r\n </kendo-grid>\r\n\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n </div>\r\n </div>\r\n\r\n <!-- for DEC auto scrolling -->\r\n <div id=\"end-of-grid\"></div>\r\n</div>\r\n","import { Component, OnInit, OnDestroy, ViewChild, ViewContainerRef, HostListener } from '@angular/core';\r\nimport { filter, interval, tap, first } from 'rxjs';\r\nimport { DrawerComponent, DrawerContainerComponent, DrawerContentComponent } from '@progress/kendo-angular-layout';\r\nimport { FieldBase } from '../../../base/fieldbase.component';\r\nimport { MainService } from '../../../../services/main.service';\r\nimport { FieldUtils } from 'mmhglobal-zcore';\r\nimport { ZgridComponent } from '../zgrid.component';\r\nimport { PageLoaderComponent } from '../../../utility/page-loader/page-loader.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'app-zgrid-container',\r\n templateUrl: './zgrid-container.component.html',\r\n styleUrls: ['../../../../styles/component.scss', './zgrid-container.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, DrawerContainerComponent, DrawerComponent, ZgridComponent, PageLoaderComponent, DrawerContentComponent, FontAwesomeModule]\r\n})\r\n\r\nexport class ZgridContainerComponent extends FieldBase implements OnInit, OnDestroy {\r\n @ViewChild('formPage', { read: ViewContainerRef }) formPage;\r\n @ViewChild(DrawerComponent) public drawer: DrawerComponent;\r\n\r\n public innerWidth: any;\r\n public isShowFormPage = false;\r\n\r\n constructor(\r\n private readonly mainService: MainService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.ComponentStyleType === `style${2}`) {\r\n this.setupStyle2();\r\n }\r\n else if (this.data.ComponentStyleType === `style${3}`) {\r\n this.setupStyle3();\r\n }\r\n super.initComponent().subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n //#region Helper Functions\r\n private displayFormPage() {\r\n const pageElement = FieldUtils.getGroupValue(this.data['ContainerForm'], this.group);\r\n this.mainService.loadContainerView({ viewContainerRef: this.formPage }, pageElement, this.data, this.group);\r\n }\r\n //#endregion\r\n\r\n //#region Style 3: DEC\r\n private setupStyle3() {\r\n this.group[`e1CloseGridContainer`] = this.toggleFormPage.bind(this, false);\r\n }\r\n\r\n public toggleFormPage(isShow?: boolean) {\r\n this.isShowFormPage = isShow;\r\n if (isShow) {\r\n this.displayFormPage();\r\n this.mainService.scrollToEmbbedComponentPage();\r\n }\r\n else {\r\n if (this.data.ContainerFormAutoScroll) {\r\n this.mainService.scrollToTopOfPage();\r\n }\r\n this.formPage.clear();\r\n }\r\n }\r\n\r\n //#region Stlye 2: Drawer\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.setDrawerWidth();\r\n }\r\n\r\n private setupStyle2() {\r\n this.setDrawerWidth();\r\n this.group[`e1CloseGridContainer`] = this.toggleDrawer.bind(this, false);\r\n }\r\n\r\n private toggleDrawer() {\r\n this.drawer.toggle();\r\n }\r\n\r\n public onExpandChange(isExpanded: boolean): void {\r\n this.isShowFormPage = isExpanded;\r\n if (isExpanded) {\r\n this.setupDrawerContent();\r\n }\r\n }\r\n\r\n private setupDrawerContent() {\r\n // Need to wait for form page to render in DOM\r\n if (this.data['ContainerForm']) {\r\n interval(500).pipe(\r\n filter(x =>\r\n this.formPage\r\n ),\r\n first(),\r\n tap(() => {\r\n this.displayFormPage();\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n private setDrawerWidth() {\r\n this.innerWidth = (window.innerWidth * 0.8);\r\n }\r\n //#endregion\r\n}\r\n","<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType === 'style2'\">\r\n <kendo-drawer-container [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\">\r\n <kendo-drawer #drawer mode=\"overlay\" [position]=\"'end'\" [mini]=\"false\" [animation]=\"{duration: 800}\" [expanded]=\"isShowFormPage\"\r\n [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1\" [width]=\"innerWidth\"\r\n (expandedChange)=\"onExpandChange($event)\">\r\n <ng-template kendoDrawerTemplate>\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n <div class=\"formHeader\">\r\n <label class=\"formHeader-title\">Employee Profile</label>\r\n <button kendobutton size=\"small\" fill=\"clear\" color=\"medium\" (click)=\"drawer.toggle()\">\r\n <fa-icon class=\"close-btn-icon\" icon=\"times\"></fa-icon>\r\n </button>\r\n </div>\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n </ng-template>\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"drawer.toggle($event)\">\r\n </app-zgrid>\r\n </kendo-drawer-content>\r\n </kendo-drawer-container>\r\n</div>\r\n\r\n\r\n<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType !== 'style2'\">\r\n <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n (showFormPage)=\"toggleFormPage($event)\">\r\n </app-zgrid>\r\n <div>\r\n <div *ngIf=\"!group.isLoading\" [class.embeddedFormPage]=\"isShowFormPage\">\r\n <ng-container #formPage></ng-container>\r\n </div>\r\n <div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[popupAnchor]',\r\n exportAs: 'popupAnchor',\r\n standalone: true\r\n})\r\nexport class ZGridPopupAnchorDirective {\r\n constructor(public element: ElementRef\r\n ) {\r\n }\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { InputFieldBase } from \"../../base/inputfieldbase.component\";\r\nimport { FieldUtils, FontAweSomeService, ZComponent } from 'mmhglobal-zcore';\r\nimport { tap } from \"rxjs\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { InputFieldAddOnsComponent } from \"../../utility/input-field-addons/input-field-addons.component\";\r\nimport { ContextMenuComponent } from \"../../menu/context-menu/context-menu.component\";\r\nimport { HtmlSanitizePipe } from \"../../../pipe/htmlSanitize.pipe\";\r\n\r\n@Component({\r\n selector: 'app-zlabel',\r\n templateUrl: './zlabel.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zlabel.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ReactiveFormsModule, LabelModule, InputFieldAddOnsComponent, ContextMenuComponent, HtmlSanitizePipe ]\r\n})\r\n\r\nexport class ZlabelComponent extends InputFieldBase implements ZComponent, OnInit {\r\n public inputFieldAddOn = { top: {}, left: {}, right: {}, bottom: {} };\r\n public labelText = \"\";\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(tap(() => {\r\n this.setupAddOnValue();\r\n })).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private setupAddOnValue(addOns?: any) {\r\n const inputFieldAddOnGroupValue = FieldUtils.getGroupValue(addOns || this.data.InputFieldAddOns as any, this.group);\r\n const addOnValue = inputFieldAddOnGroupValue || addOns || this.data.InputFieldAddOns;\r\n if (addOnValue && Array.isArray(addOnValue)) {\r\n for (const key of Object.keys(this.inputFieldAddOn)) {\r\n this.inputFieldAddOn[key] = addOnValue.find(i => i.Position === key);\r\n }\r\n }\r\n }\r\n}\r\n","<div [formGroup]=\"form\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getClass(form, data)\" [style.--min-height]=\"data.Height\"\r\n [style.cursor]=\"data.OnItemClick ? 'pointer' : 'auto'\" [style]=\"componentProperties.style.style\" class=\"zlabel-container e1tag-style\"\r\n (click)=\"onItemClick($event, data)\">\r\n <div #zlabelDiv class=\"main-container\">\r\n <div class=\"content-container e1tag-style1\" [style]=\"componentProperties.style.style1\"\r\n *ngIf=\"!data.InputFieldAddOns || data.InputFieldAddOns.length <= 0\">\r\n <fa-icon class=\"e1tag-style2\" [icon]=\"getFontAwesome(componentProperties.icon, fontAweSomeService)\"\r\n *ngIf=\"componentProperties.icon\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n <kendo-label *ngIf=\"componentProperties.label && !data.IsHtml\" class=\"ion-text-wrap e1tag-style3\" Position=\"Fixed\"\r\n [ngStyle]=\"{'color': data.Color}\" [style]=\"componentProperties.style.style3\">\r\n {{componentProperties.label}}\r\n </kendo-label>\r\n <div *ngIf=\"componentProperties.label && data.IsHtml\" [innerHTML]=\"componentProperties.label | htmlSanitize\"\r\n class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></div>\r\n </div>\r\n <div class=\"label-div-container e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n *ngIf=\"data.InputFieldAddOns && data.InputFieldAddOns.length > 0\">\r\n <app-input-field-addons class=\"addon-top e1tag-style4\" [position]=\"'top'\" [addOn]=\"inputFieldAddOn.top\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n <div class=\"content-withaddon-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <app-input-field-addons class=\"addon-left e1tag-style4\" [position]=\"'left'\" [addOn]=\"inputFieldAddOn.left\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n <fa-icon class=\"e1tag-style2\" [icon]=\"getFontAwesome(componentProperties.icon, fontAweSomeService)\"\r\n *ngIf=\"componentProperties.icon\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n <kendo-label *ngIf=\"componentProperties.label && !data.IsHtml\" class=\"ion-text-wrap e1tag-style3\" Position=\"Fixed\"\r\n [ngStyle]=\"{'color': data.Color}\" [style]=\"componentProperties.style.style3\">\r\n {{componentProperties.label}}\r\n </kendo-label>\r\n <div *ngIf=\"componentProperties.label && data.IsHtml\" [innerHTML]=\"componentProperties.label | htmlSanitize\"\r\n class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></div>\r\n <app-input-field-addons class=\"addon-right e1tag-style4\" [position]=\"'right'\" [addOn]=\"inputFieldAddOn.right\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n <app-input-field-addons class=\"addon-bottom e1tag-style4\" [position]=\"'bottom'\" [addOn]=\"inputFieldAddOn.bottom\"\r\n [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n </app-input-field-addons>\r\n </div>\r\n </div>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zlabelDiv\"></app-context-menu>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { DialItemClickEvent, FabAlign, FabPositionMode, KENDO_BUTTONS } from '@progress/kendo-angular-buttons';\r\nimport { ButtonFieldBase } from \"../../base/buttonfieldbase.component\";\r\nimport {\r\n ComponentUtils,\r\n DataUtils,\r\n FieldService, FontAweSomeService, IconUtils, ResourceApiService, WorkflowService,\r\n ZComponent, ZField\r\n} from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { LayoutModule } from \"@progress/kendo-angular-layout\";\r\n\r\n@Component({\r\n selector: 'app-zmfb',\r\n templateUrl: './zmfb.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zmfb.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, KENDO_BUTTONS, LayoutModule]\r\n})\r\n\r\nexport class ZmfbComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n positionMode: FabPositionMode = 'fixed';\r\n align: FabAlign = { vertical: 'bottom', horizontal: 'end' };\r\n buttonList: Array<any> = [];\r\n dialOpen: boolean = false;\r\n isWorkflowButton: boolean = false;\r\n buttonColor: string = 'primary';\r\n private buttonField: ZField;\r\n items: Array<any> = [];\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly fieldService: FieldService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly workflowService: WorkflowService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n this.setupComponent();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private setupComponent() {\r\n this.align = (this.data[`Position`] ? JSON.parse(this.data[`Position`]) : null) || this.align;\r\n if (this.data.Value != undefined) {\r\n this.buttonList = this.data.Value;\r\n }\r\n else {\r\n this.setupDefaultDialItems();\r\n }\r\n }\r\n\r\n //#region Envents\r\n public onBlur(): void {\r\n\r\n }\r\n\r\n public onFocus(): void {\r\n if (this.isWorkflowButton) {\r\n this.loadWorkflowButton();\r\n }\r\n }\r\n\r\n public onOpen(e): void {\r\n this.dialOpen = true;\r\n console.log('open');\r\n }\r\n\r\n public onClose(e): void {\r\n // To stimulate never close\r\n // e.preventDefault();\r\n this.dialOpen = false;\r\n console.log('close');\r\n }\r\n\r\n public onDialItemClick(e: DialItemClickEvent): void {\r\n e.item.click();\r\n }\r\n //#endregion\r\n\r\n //#region Dial Item - Buttons\r\n private setupDefaultDialItems() {\r\n this.buttonField = this.getFirstzButton(this.group.fields);\r\n\r\n if (this.buttonField) {\r\n if (!DataUtils.isNullUndefinedEmpty(this.buttonField.WorkflowCode)) {\r\n // handle as zWorkflowButton\r\n this.isWorkflowButton = true;\r\n this.loadWorkflowButton();\r\n }\r\n else {\r\n const field$ = this.fieldService.getFormFieldCode(this.buttonField.Value, \"FormField\");\r\n\r\n try {\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n\r\n const _isVisible = this.isBtnVisible(button.Visible);\r\n if (_isVisible) {\r\n this.buttonList.push({\r\n label: label,\r\n icon: IconUtils.getIcon(button.Icon),\r\n clickEvent: button.ClickEvent,\r\n click: (y) => {\r\n this.buttonClick(button);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getFirstzButton(data: any[]) {\r\n // data.forEach(d => {\r\n for (let i = 0; i < data.length - 1; i++) {\r\n if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n return data[i];\r\n } else {\r\n if (Array.isArray(data[i].Value)) {\r\n this.getFirstzButton(data[i].Value);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n //#endregion\r\n\r\n //#region Workflow\r\n // URL required\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n private loadWorkflowButton() {\r\n // actionBtnList: Array<ZField>;\r\n this.buttonList = [];\r\n\r\n // Get WFS_DocumentId if any.\r\n let documentId = null;\r\n if (this.group.zModel) {\r\n documentId = this.group.zModel['WFS_DocumentId'];\r\n }\r\n\r\n // Set the documentId to the service\r\n this.workflowService.appendWFS_DocumentsInfo(this.buttonField.WorkflowCode, documentId);\r\n\r\n try {\r\n // Set param for field\r\n const field$ = this.workflowService.getWorkflowButtonsField(\r\n this.buttonField.WorkflowCode,\r\n this.e1wfs_wfcGetWorkflowButtonURL,\r\n String(false)\r\n );\r\n\r\n field$.subscribe(data => {\r\n data.forEach((button: any) => {\r\n const label = this.getButtonLabel(button);\r\n const attributes = JSON.parse(button.Attributes);\r\n const newAttributes = {\r\n ...attributes,\r\n zButtonName: this.data.Name,\r\n TypeCode: button.TypeCode,\r\n WorkflowCode: this.data.WorkflowCode,\r\n reloadAllWorkflowButton: true\r\n };\r\n\r\n button = {\r\n ...button,\r\n Attributes: JSON.stringify(newAttributes),\r\n disableTrigger: this.isButtonDisableTrigger(this.data, button),\r\n };\r\n\r\n const buttonLabel = attributes.Label || label;\r\n const isVisible = this.isBtnVisible(attributes.Visible);\r\n\r\n if (isVisible) {\r\n this.buttonList.push({\r\n label: buttonLabel,\r\n fieldAttribute: button,\r\n icon: IconUtils.getIcon(attributes.Icon),\r\n clickEvent: button.ClickEvent,\r\n click: (y) => {\r\n this.workflowButtonClick(button);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n private isButtonDisableTrigger(data: ZField, button: any): boolean {\r\n return button.DisableTrigger != undefined ? button.DisableTrigger : (data.DisableTrigger != undefined ? data.DisableTrigger : false);\r\n }\r\n\r\n workflowButtonClick(button: any) {\r\n // Type 1 == functional;\r\n // Type 2 == GOTO;\r\n const attributes = JSON.parse(button.Attributes);\r\n switch (button.TypeCode.toUpperCase()) {\r\n case \"FUNCTION\":\r\n console.log(\"Functional Button: \", button.Name);\r\n this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n break;\r\n case \"GOTO\":\r\n console.log(\"GOTO Button: \", button.Name);\r\n {\r\n const workflowObs = this.workflowService.gotoButton_Onclick(button, this.buttonField, attributes, this.group, false);\r\n if (workflowObs && typeof workflowObs.subscribe === 'function') {\r\n workflowObs.subscribe(res => {\r\n this.loadWorkflowButton();\r\n\r\n // Require to refresh the firstzBtn\r\n const mainButtonName = `${this.buttonField.Type}_${this.buttonField.Name}`;\r\n const mainButton = ComponentUtils.getComponent(this.group, mainButtonName);\r\n mainButton['loadButton']();\r\n\r\n if (res) {\r\n this.workflowService.triggerSendEmail(this.group).subscribe();\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n default:\r\n console.log(\"Invalid Button Type. \", button.Name);\r\n break;\r\n }\r\n }\r\n //#endregion\r\n}\r\n","<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n size=\"2x\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n","import { Component, OnInit, ViewChild, HostListener, AfterViewInit } from '@angular/core';\r\nimport { TelerikReportingModule, TelerikReportViewerComponent } from '@progress/telerik-angular-report-viewer';\r\nimport { FieldBase } from '../../base/fieldbase.component';\r\nimport { AlertService, AuthService, FieldUtils, FontAweSomeService, ResourceApiService } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\r\n\r\ndeclare const $: any;\r\n\r\n@Component({\r\n selector: 'app-zreport',\r\n templateUrl: './zreport.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zreport.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, TelerikReportingModule],\r\n})\r\n\r\nexport class ZreportComponent extends FieldBase implements OnInit, AfterViewInit {\r\n @ViewChild('reportViewer1', { static: false }) viewer: TelerikReportViewerComponent;\r\n\r\n public onExportBegin: Function;\r\n public onExportEnd: Function;\r\n public onRenderingBegin: Function;\r\n public onRenderingEnd: Function;\r\n public onPrintBegin: Function;\r\n public onPrintEnd: Function;\r\n\r\n private allowPrintPDF: boolean = true;\r\n\r\n public serviceUrl = null;\r\n public reportSource = null;\r\n public viewerContainerStyle = {\r\n position: 'relative',\r\n width: '100%',\r\n height: '800px',\r\n fontFamily: 'Arial, sans-serif',\r\n backgroundColor: '#f9f9f9',\r\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',\r\n fontSize: '16px',\r\n lineHeight: '1.5',\r\n color: '#333',\r\n };\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly authService: AuthService,\r\n private readonly alertService: AlertService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.onExportBegin = this.exportBegin.bind(this);\r\n this.onExportEnd = this.exportEnd.bind(this);\r\n this.onRenderingBegin = this.renderingBegin.bind(this);\r\n this.onRenderingEnd = this.renderingEnd.bind(this);\r\n this.onPrintBegin = this.printBegin.bind(this);\r\n this.onPrintEnd = this.printEnd.bind(this);\r\n\r\n\r\n super.initComponent().subscribe(() => {\r\n this.serviceUrl = this.resourceApiService.getURL(this.data.ResourceURL);\r\n if (!this.serviceUrl) {\r\n console.log('resourceURL is empty.');\r\n }\r\n\r\n if (this.data.IsAutoGenerateReport) {\r\n this.reportSource = FieldUtils.getGroupEvalValue.call(this, this.data.ReportSource);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n console.log('Report resized.');\r\n }\r\n\r\n public onReady() {\r\n console.log('Report ready.');\r\n $(\"[data-command*='telerik_ReportViewer_historyBack']\").parent().hide();\r\n $(\"[data-command*='telerik_ReportViewer_historyForward']\").parent().hide();\r\n $(\"[data-command*='telerik_ReportViewer_stopRendering']\").parent().hide();\r\n $(\"[data-command*='telerik_ReportViewer_toggleDocumentMap']\").parent().hide();\r\n $(\"[data-command*='telerik_ReportViewer_toggleParametersArea']\").parent().hide();\r\n $(\"[data-command*='telerik_ReportViewer_toggleSearchDialog']\").parent().hide();\r\n }\r\n\r\n public exportBegin(e: any, args: any) {\r\n console.log('Export begin.');\r\n }\r\n\r\n public exportEnd(e: any, args: any) {\r\n console.log('Export end.');\r\n }\r\n\r\n public renderingBegin(e: any, args: any): void {\r\n console.log('Rendering started.');\r\n if (this.reportSource.parameters && this.reportSource.parameters.Authorization !== this.authService.authorizationBearer.Authorization) {\r\n console.warn('Updated invalid authorization token.');\r\n\r\n this.reportSource.parameters.Authorization = this.authService.authorizationBearer.Authorization;\r\n this.viewer.setReportSource(this.reportSource);\r\n }\r\n }\r\n\r\n public renderingEnd(e: any, args: any): void {\r\n console.log('Rendering ended.');\r\n }\r\n\r\n private generateEmptyPdf(): Blob {\r\n // Create an empty PDF file with just a header\r\n const pdfContent = '%PDF-1.3\\n1 0 obj\\n<< /Type /Catalog /Pages 2 0 R >>\\nendobj\\n2 0 obj\\n<< /Type /Pages /Kids [] /Count 0 >>\\nendobj\\nxref\\n0 3\\n0000000000 65535 f \\n0000000010 00000 n \\ntrailer\\n<< /Root 1 0 R /Size 3 >>\\nstartxref\\n205\\n%%EOF';\r\n return new Blob([pdfContent], { type: 'application/pdf' });\r\n }\r\n\r\n public printBegin(e: any, args: any) {\r\n console.log('Print begin.');\r\n\r\n const alertTitle = 'Print PDF Error';\r\n const pdfBlob = this.generateEmptyPdf();\r\n const pdfUrl = URL.createObjectURL(pdfBlob); const userAgent = navigator.userAgent;\r\n const iframe = document.createElement('iframe');\r\n let isChrome = false;\r\n let isEdge = false;\r\n\r\n if (/Edg/.test(userAgent)) {\r\n isEdge = true;\r\n }\r\n else if (/Chrome/.test(userAgent)) {\r\n isChrome = true;\r\n }\r\n\r\n iframe.src = pdfUrl;\r\n iframe.onload = () => {\r\n try {\r\n const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;\r\n const pdfElement = iframeDocument.querySelector(`embed[type='application/pdf'], object[type='application/pdf'], iframe`);\r\n console.log('Checking browser is report able to print.', pdfElement);\r\n\r\n // If no PDF element found, alert user about potential issue\r\n if (!pdfElement) {\r\n this.allowPrintPDF = false;\r\n\r\n if (isChrome) {\r\n this.alertService.showOkay(alertTitle, `Step 1: Please navigate to 'chrome://settings/content/pdfDocuments' in the brower.<br/>Step 2: Select 'Open PDFs in Chrome' in the setting before printing the report.`, ['col-6']);\r\n }\r\n else if (isEdge) {\r\n this.alertService.showOkay(alertTitle, `Step 1: Please navigate to 'edge://settings/content/pdfDocuments' in the brower.<br/>Step 2: Enable 'PDF view settings' and Disable 'Always Download PDF files' in the setting before printing the report.`, ['col-6']);\r\n }\r\n else {\r\n this.alertService.showOkay(alertTitle, 'The browser settings cannot be detected, please reach out to support for assistance.', ['col-4']);\r\n }\r\n }\r\n else {\r\n this.allowPrintPDF = true;\r\n }\r\n } catch (error) {\r\n // If accessing iframe content throws an error, alert user about potential issue\r\n this.allowPrintPDF = false;\r\n // PDF failed to load or display properly\r\n console.log('PDF failed to load or display properly in the iframe.');\r\n console.warn(error);\r\n this.alertService.showOkay(alertTitle, 'The browser settings cannot be detected, please reach out to support for assistance.', ['col-4']);\r\n }\r\n };\r\n\r\n iframe.onerror = () => {\r\n this.allowPrintPDF = false;\r\n // PDF failed to load or display properly\r\n console.log('PDF failed to load or display properly in the iframe.');\r\n this.alertService.showOkay(alertTitle, 'The browser settings cannot be detected, please reach out to support for assistance.', ['col-4']);\r\n };\r\n\r\n iframe.style.display = 'none';\r\n document.body.appendChild(iframe);\r\n }\r\n\r\n public printEnd(e: any, args: any) {\r\n console.log('Print end.');\r\n\r\n if (!this.allowPrintPDF) {\r\n console.warn('Browser incorrect configuration, unable to print the PDF.')\r\n args.handled = true;\r\n }\r\n }\r\n\r\n public generateReport() {\r\n this.reportSource = this.group['ReportSource'];\r\n\r\n if (this.reportSource.parameters && !this.reportSource.parameters.Authorization) {\r\n this.reportSource.parameters.Authorization = this.authService.authorizationBearer.Authorization;\r\n }\r\n\r\n if (this.reportSource['url']) {\r\n this.serviceUrl = this.reportSource['url'];\r\n }\r\n\r\n this.viewer.setReportSource(this.reportSource);\r\n }\r\n}\r\n","<div width=\"100%\" height=\"800px\">\r\n <tr-viewer #reportViewer1\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"serviceUrl\"\r\n [reportSource]=\"reportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [scale]=\"1.0\"\r\n [enableAccessibility]=\"false\"\r\n [ready]=\"onReady\"\r\n [exportBegin]=\"onExportBegin\"\r\n [exportEnd]=\"onExportEnd\"\r\n [renderingBegin]=\"onRenderingBegin\"\r\n [renderingEnd]=\"onRenderingEnd\"\r\n [printBegin]=\"onPrintBegin\"\r\n [printEnd]=\"onPrintEnd\">\r\n </tr-viewer>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { ReactiveFormsModule, UntypedFormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { delay, take } from 'rxjs/operators';\r\nimport { DateChangeEvent, SlotClickEvent, EventClickEvent, EventStyleArgs, SlotClassArgs, SchedulerModule } from \"@progress/kendo-angular-scheduler\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n ZComponent, ZComponentOutputEvent,\r\n ZGroup, ZField, ZComponentProperties, StorageSessionService, AuthService,\r\n ComponentUtils,\r\n ValidationUtils,\r\n FieldUtils\r\n} from \"mmhglobal-zcore\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\nimport { ZSchedulerToolBarComponent } from \"./zscheduler.toolbar.component\";\r\n\r\n@Component({\r\n selector: \"app-zscheduler\",\r\n templateUrl: \"./zscheduler.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zscheduler.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule,FontAwesomeModule, ButtonModule,\r\n SchedulerModule, LabelModule, ReactiveFormsModule,\r\n ZSchedulerToolBarComponent,IntlModule]\r\n})\r\n\r\nexport class ZschedulerComponent extends FieldBase implements ZComponent, OnInit, AfterViewInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: UntypedFormGroup;\r\n @Input() ngStyle: { [klass: string]: any; }\r\n\r\n isLoading = true;\r\n events: any[] = [];\r\n selectedDate: Date = new Date();\r\n local = {\r\n inProgress: false,\r\n ctrlScope: null\r\n };\r\n\r\n selectedViewIndex = 3;\r\n componentProperties = new ZComponentProperties();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private storageService: StorageSessionService,\r\n private authService: AuthService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n ComponentUtils.setComponentProperties(this);\r\n ComponentUtils.registerComponent(this);\r\n this.local.ctrlScope = this.group.ctrlScope;\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n //\r\n if (this.data['SaveFilter']) {\r\n this.setSchedulerSessionKey(this.group);\r\n this.getSchedulerSessionFilter(this.group);\r\n }\r\n this.getItems();\r\n }\r\n\r\n ngAfterViewInit() {\r\n //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n }\r\n\r\n getEventStyles = (args: EventStyleArgs) => {\r\n\r\n if(args && args.event && args.event.dataItem)\r\n {\r\n const BGColor=args.event.dataItem[\"backgroundColor\"];\r\n const BorderColor=args.event.dataItem[\"borderColor\"];\r\n\r\n if (BGColor && BorderColor)\r\n { return { backgroundColor: BGColor, bordercolor: BorderColor, color: \"white\" }; }\r\n else {\r\n return { backgroundColor: \"#ff7c73\", bordercolor: \"#ff7c73\" , color: \"white\" };\r\n }\r\n\r\n }\r\n }\r\n\r\n public getSlotClass = (args: SlotClassArgs) => {\r\n const hour = args.start.getHours();\r\n args.resources = this.events\r\n return {\r\n args\r\n };\r\n }\r\n\r\n getItems() {\r\n const v = this.data.Value;\r\n if (Array.isArray(v)) {\r\n return v;\r\n } else {\r\n const evalValue = FieldUtils.getGroupEvalValue.call(this, v);\r\n // debugger;\r\n if (evalValue) {\r\n this.events = evalValue;\r\n if (this.events) {\r\n this.isLoading = false;\r\n }\r\n } else {\r\n console.warn(\"Invalid field.Value setting \", this.data.Value);\r\n return [];\r\n }\r\n }\r\n }\r\n\r\n onDateChange(args: DateChangeEvent): void {\r\n\r\n if (this.local.inProgress) {\r\n return;\r\n }\r\n\r\n //Set session values\r\n this.group[\"selectedDate\"] = args.selectedDate;\r\n\r\n if (this.data.OnDateChange) {\r\n\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnDateChange);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(args);\r\n }\r\n }\r\n\r\n console.log(\"zschedule component date-change selection: \", args.dateRange);\r\n // this.local.selectedDate = args.dateRange.start;\r\n this.group.subject.next({\r\n type: \"zscheduler-onDateChange\",\r\n target: this.data.CalendarOptions + \".dateClick\",\r\n event: args.dateRange\r\n } as ZComponentOutputEvent);\r\n // We're setting the events after the current change detection cycle\r\n // has completed, hence we need to trigger a new one.\r\n this.changeDetector.detectChanges();\r\n\r\n }\r\n\r\n onSlotDblClick({ sender, start, end, isAllDay }: SlotClickEvent): void {\r\n console.log(\r\n \"zscheduler component slot-double-click: \",\r\n sender,\r\n start,\r\n end,\r\n isAllDay\r\n );\r\n\r\n if (\r\n sender.selectedView.name === \"month\" ||\r\n sender.selectedView.name === \"week\"\r\n ) {\r\n this.local.inProgress = true;\r\n this.selectedViewIndex = 3;\r\n this.selectedDate = start;\r\n of([]).pipe(take(1), delay(1000)).subscribe(() => this.local.inProgress = false);\r\n }\r\n\r\n }\r\n\r\n onEventDblClick({ sender, event }: EventClickEvent): void {\r\n console.log(\"zscheduler component event-double-click: \", sender, event);\r\n\r\n if (this.data.OnItemClick) {\r\n\r\n //Restore session\r\n this.beforeSchedulerGetData(this.group);\r\n this.setSchedulerSessionFilter(this.group);\r\n\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.selectedViewIndex = gData || this.selectedViewIndex;\r\n //reset data\r\n this.getItems();\r\n\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ValidationUtils.toggleFieldValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n }\r\n\r\n\r\n public setSchedulerSessionKey(group: ZGroup) {\r\n\r\n if (group[\"SchedulerStorageKey\"]) {\r\n return;\r\n }\r\n else {\r\n group[\"SchedulerStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n }\r\n\r\n }\r\n\r\n public beforeSchedulerGetData(group: ZGroup) {\r\n console.warn(\"beforeDateRangeBinding triggered\");\r\n if (!group.beforeSchedulerGetData) {\r\n console.warn(\"group.beforeDateRangeBinding is undefined\");\r\n return of(true);\r\n }\r\n\r\n return group.beforeSchedulerGetData(group);\r\n }\r\n\r\n async setSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n let lstFilter: { [key: string]: string } = {};\r\n\r\n if (group && this.storageService && this.data['SaveFilter']) {\r\n\r\n //list of data for StateFilter and FilterParams\r\n lstFilter = {\r\n \"SelectedDate\": JSON.stringify(group[\"selectedDate\"])\r\n }\r\n //create session storage\r\n this.storageService.set(StorageKey, JSON.stringify(lstFilter));\r\n\r\n }\r\n\r\n }\r\n\r\n async getSchedulerSessionFilter(group: ZGroup) {\r\n\r\n if (!group[\"SchedulerStorageKey\"]) {\r\n return null;\r\n }\r\n const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n if (this.storageService) {\r\n await this.storageService.get(StorageKey)\r\n .then(data => {\r\n if (!data || !data.value || data.value === \"null\") {\r\n return null;\r\n }\r\n else {\r\n const result = JSON.parse(data.value);\r\n this.selectedDate = new Date(JSON.parse(result[\"SelectedDate\"]));\r\n\r\n return data;\r\n }\r\n });\r\n }\r\n else { return null; }\r\n\r\n }\r\n\r\n}\r\n","<div [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} \r\n <span *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" \r\n style=\"color: red;\">\r\n *\r\n </span>\r\n </kendo-label>\r\n <kendo-scheduler *ngIf=\"!isLoading\" [kendoSchedulerBinding]=\"events\" [selectedDate]=\"selectedDate\" (dateChange)=\"onDateChange($event)\"\r\n [selectedViewIndex]=\"selectedViewIndex\" [eventStyles]=\"getEventStyles\" [slotClass]=\"getSlotClass\"\r\n (slotDblClick)=\"onSlotDblClick($event)\" (eventDblClick)=\"onEventDblClick($event)\" scrollTime=\"08:00\"\r\n [style.height]=\"(!!data.Height ? [data.Height] : '600px')\">\r\n <!-- [style.font-size]=\"(!!data.FontSize ? [data.FontSize] : '12px')\"> -->\r\n <!--Note: line-height same with [eventHeight]-->\r\n <ng-template kendoSchedulerEventTemplate let-event>\r\n <span style=\"margin-left: -5px;line-height: 25px;\">{{ event.title }}</span>\r\n </ng-template>\r\n\r\n <!-- <ng-template kendoSchedulerToolbarTemplate let-selectedDate=\"selectedDate\">\r\n <zschedulertoolbar [local]=\"local\" [selectedDate]=\"selectedDate\">\r\n </zschedulertoolbar>\r\n <ul kendoSchedulerToolbarViewSelector></ul>\r\n </ng-template> -->\r\n\r\n <ng-template kendoSchedulerAllDaySlotTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: 'dd-MMM-yyyy' }}</strong>\r\n </ng-template>\r\n <ng-template kendoSchedulerDateHeaderTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: \"ccc\" }}</strong>\r\n </ng-template>\r\n\r\n\r\n <!-- <kendo-scheduler-day-view startTime=\"08:00\">\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view startTime=\"08:00\">\r\n </kendo-scheduler-week-view> -->\r\n\r\n <kendo-scheduler-day-view>\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view>\r\n </kendo-scheduler-week-view>\r\n\r\n <kendo-scheduler-month-view [eventHeight]=\"25\">\r\n </kendo-scheduler-month-view>\r\n\r\n <!-- <kendo-scheduler-timeline-view>\r\n </kendo-scheduler-timeline-view> -->\r\n\r\n <kendo-scheduler-agenda-view>\r\n </kendo-scheduler-agenda-view>\r\n </kendo-scheduler>\r\n\r\n</div>","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { TabStripModule, TabStripComponent, TabStripTabComponent } from '@progress/kendo-angular-layout';\r\nimport { FieldUtils, FontAweSomeService, StorageSessionService, TranslationService, ZComponent, ZTabItem } from 'mmhglobal-zcore';\r\nimport { ContainerFieldBase } from '../../base/containerfieldbase.component';\r\nimport { MainService } from '../../../services/main.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { BadgeComponent } from '@progress/kendo-angular-indicators';\r\nimport { ZdivComponent } from '../zdiv/zdiv.component';\r\nimport { TabFilter } from \"./ztab.pipe\";\r\n\r\n@Component({\r\n selector: 'app-ztab',\r\n templateUrl: './ztab.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztab.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, TabStripModule, TabStripComponent, TabStripTabComponent, FontAwesomeModule, BadgeComponent, TabFilter, ZdivComponent]\r\n})\r\n\r\nexport class ZtabComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n @ViewChild('kendoTabStripInstance') public tabstrip: TabStripComponent;\r\n\r\n public state = {\r\n lastSelectedTabIndex: 0,\r\n currentTabs: Array<ZTabItem>(),\r\n allTabs: Array<ZTabItem>()\r\n };\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService,\r\n private readonly translationService: TranslationService,\r\n private readonly storageService: StorageSessionService,\r\n private readonly mainService: MainService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(\r\n switchMap(() => {\r\n if (this.data.TabItems?.length > 0) {\r\n return this.translationService.$translateItemList(this.data.TabItems, \"Label\", { elementName: this.group.fieldName, group: this.group });\r\n }\r\n return of({});\r\n }),\r\n tap(() => {\r\n this.setCurrentTabs();\r\n this.restoreTabSelection();\r\n })\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private setCurrentTabs() {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n\r\n if (this.data.TabVisibleFalseIndex) {\r\n this.setTabsVisible(this.data.TabVisibleFalseIndex, false);\r\n }\r\n\r\n } else if (this.data.TabItems) {\r\n let ind = 0;\r\n for (const field of this.data.TabItems) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: field.Label,\r\n Icon: field.Icon ? field.Icon : null,\r\n Visible: field.Visible == undefined ? true : FieldUtils.getGroupValue(field.Visible, this.group),\r\n Counter: typeof (field.Counter) === \"string\" ? FieldUtils.getGroupValue(field.Counter, this.group) : field.Counter,\r\n Index: ind++\r\n });\r\n }\r\n this.state.allTabs = this.state.currentTabs;\r\n }\r\n }\r\n\r\n private refreshCurrentTabs() {\r\n const previousStateTabs = this.state.allTabs;\r\n\r\n if (Array.isArray(this.data.Label)) {\r\n this.state.currentTabs = new Array<ZTabItem>();\r\n let validIcon = false;\r\n if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n validIcon = true;\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const index in this.data.Label) {\r\n const previousTab = previousStateTabs.filter(x => x.Label == this.data.Label[index]);\r\n const previousTabVisible = previousTab.length > 0 ? previousTab[0].Visible : false;\r\n\r\n const isVisible = previousTabVisible;\r\n if (isVisible) {\r\n this.state.currentTabs.push(\r\n {\r\n Label: this.data.Label[index],\r\n Icon: validIcon ? this.data.Icon[index] : null,\r\n Visible: true,\r\n Index: parseInt(index)\r\n });\r\n }\r\n }\r\n } else {\r\n Object.assign(this.state.currentTabs, this.state.allTabs);\r\n }\r\n }\r\n\r\n public selectTab = (index: number) => {\r\n this.state.lastSelectedTabIndex = index;\r\n }\r\n\r\n getSelectedTab(tabIndex: number) {\r\n return this.state.lastSelectedTabIndex === tabIndex;\r\n }\r\n\r\n public setSelectTab(tabIndex: number) {\r\n this.storeTabSelectIndexToStorage(tabIndex);\r\n this.state.lastSelectedTabIndex = tabIndex;\r\n }\r\n\r\n restoreTabSelection(): void {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n\r\n // try retrieve from sessionstorage\r\n if (this.group.ctrlScope) {\r\n const urlPath = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n const urlPathSegment = urlPath.split('/');\r\n const storageKey = urlPathSegment[urlPathSegment.length - 1] + this.data.Name;\r\n let savedTabSelection = sessionStorage.getItem(storageKey);\r\n if (savedTabSelection) {\r\n savedTabSelection = JSON.parse(savedTabSelection);\r\n const activatedRouteUrl = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n if (savedTabSelection['url'] == activatedRouteUrl && savedTabSelection['pageParam'] == this.mainService.getNavigationCurrentParam()) {\r\n this.group['tabSelections'] = new Map<string, number>();\r\n this.group['tabSelections'].set(this.data.Name, savedTabSelection['tabIndex']);\r\n }\r\n }\r\n }\r\n\r\n let tabSelections = (\"tabSelections\" in this.group ? this.group['tabSelections'] : null) as Map<string, number>;\r\n if (tabSelections !== null && tabSelections.has(this.data.Name)) { // subsequent loads\r\n this.state.lastSelectedTabIndex = tabSelections.get(this.data.Name);\r\n\r\n } else if (tabSelections === null) { // first load of first tab\r\n tabSelections = new Map<string, number>();\r\n this.group['tabSelections'] = tabSelections;\r\n tabSelections.set(this.data.Name, 0);\r\n\r\n } else if (!tabSelections.has(this.data.Name)) { // first load of rest tabs\r\n tabSelections.set(this.data.Name, 0);\r\n }\r\n }\r\n\r\n public onTabSelect(e) {\r\n this.state.lastSelectedTabIndex = e.index;\r\n this.saveState(e);\r\n\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.ClickEvent);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(e);\r\n }\r\n }\r\n\r\n private saveState(e) {\r\n if (this.data.AllowSaveState === false) {\r\n return;\r\n }\r\n this.storeTabSelectIndexToStorage(e.index);\r\n\r\n const tabSelections = this.group['tabSelections'] as Map<string, number>;\r\n tabSelections.set(this.data.Name, e.index);\r\n }\r\n\r\n public setTabsVisible = (tabIndexes: number[], status: boolean) => {\r\n if (this.state.allTabs.length <= Math.max.apply(null, tabIndexes) || Math.min.apply(null, tabIndexes) < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndexes.join(\",\"));\r\n return;\r\n }\r\n\r\n tabIndexes.forEach(index => {\r\n this.state.allTabs[index].Visible = status;\r\n });\r\n this.refreshCurrentTabs();\r\n }\r\n\r\n public setTabCounter = (tabIndex: number, counter: number | string) => {\r\n const labels = this.data.Label ? this.data.Label : this.data.TabItems;\r\n if (labels.length <= tabIndex || tabIndex < 0) {\r\n console.log(\"Invalid Tab index : \" + tabIndex);\r\n return;\r\n }\r\n\r\n this.state.currentTabs[tabIndex].Counter = counter;\r\n }\r\n\r\n private storeTabSelectIndexToStorage(tabIndex: number) {\r\n if (this.data.AllowSaveState) {\r\n const urlPath = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n const urlPathSegment = urlPath.split('/');\r\n const storageKey = urlPathSegment[urlPathSegment.length - 1] + this.data.Name;\r\n\r\n const selectedTabJson = {\r\n url: urlPath,\r\n pageParam: this.mainService.getNavigationCurrentParam(),\r\n tabIndex: tabIndex\r\n }\r\n this.storageService.set(storageKey, JSON.stringify(selectedTabJson));\r\n }\r\n\r\n }\r\n}\r\n","<div *ngIf=\"!componentProperties.isVisibleField || !group[componentProperties.isVisibleField]\"\r\n class=\"container e1tag-container-style\"\r\n [ngClass]=\"data.Class\"\r\n [style]=\"componentProperties.containerStyle.style\">\r\n <kendo-tabstrip\r\n class=\"ztab e1tag-container-style1\"\r\n #kendoTabStripInstance\r\n [keepTabContent]=\"true\"\r\n (tabSelect)=\"onTabSelect($event)\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n [class]=\"data.ComponentStyleType\"\r\n [ngClass]=\"data.Class\">\r\n <kendo-tabstrip-tab\r\n *ngFor=\"let tab of state.currentTabs; let i = index\"\r\n [selected]=\"getSelectedTab(i)\"\r\n [disabled]=\"!tab.Visible\"\r\n [style]=\"componentProperties.containerStyle.style2\"\r\n class=\"e1tag-container-style2\">\r\n <ng-template kendoTabTitle *ngIf=\"tab.Visible\">\r\n <div class=\"e1tag-container-style3\"\r\n [style]=\"componentProperties.containerStyle.style3\">\r\n <fa-icon *ngIf=\"!!tab.Icon\"\r\n [icon]=\"getFontAwesome(tab.Icon, fontAweSomeService)\"\r\n [style]=\"componentProperties.containerStyle.style4\"\r\n class=\"e1tag-container-style4\"></fa-icon>\r\n {{tab.Label}}\r\n <kendo-badge class=\"tab-item-counter e1tag-container-style5\"\r\n color=\"danger\" *ngIf=\"!!tab.Counter\"\r\n [style]=\"componentProperties.containerStyle.style5\">{{tab.Counter}}\r\n </kendo-badge>\r\n </div>\r\n </ng-template>\r\n <ng-template kendoTabContent>\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style6\"\r\n class=\"e1tag-container-style6\"\r\n [data]=\"data | tabfilter: tab.Index + ''\"\r\n [form]=\"form\"\r\n [group]=\"group\"\r\n [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </ng-template>\r\n </kendo-tabstrip-tab>\r\n </kendo-tabstrip>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ViewChildren, QueryList } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TreeViewModule, TreeItemDropEvent, TreeItemDragEvent, SelectableSettings, CheckableSettings, CheckedState } from \"@progress/kendo-angular-treeview\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { TextBoxModule,TextBoxComponent } from \"@progress/kendo-angular-inputs\";\r\nimport { ContextMenuComponent } from \"../../menu/context-menu/context-menu.component\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { HtmlSanitizePipe } from '../../../pipe/htmlSanitize.pipe';\r\n\r\n/********** Component & Service **********/\r\nimport { FontAweSomeService,TreeViewCheckboxConfiguration, ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField, ZGroup, ZTreeTemplateParams, FieldUtils, ComponentUtils, ModelUtils, DataUtils } from \"mmhglobal-zcore\";\r\nimport { DataListingFieldBase } from \"../../base/datalistingfieldbase.component\";\r\n\r\n@Component({\r\n selector: \"app-ztree\",\r\n templateUrl: \"./ztree.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./ztree.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, TreeViewModule, LabelModule, HtmlSanitizePipe, TextBoxModule, ContextMenuComponent, FontAwesomeModule]\r\n})\r\n\r\nexport class ZtreeComponent extends DataListingFieldBase implements ZComponent, OnInit, AfterViewInit {\r\n @ViewChild(\"nodetemplate\", { static: true }) nodetemplate: ElementRef;\r\n @ViewChildren(\"zinput_textbox\") public zinput_textboxList: QueryList<TextBoxComponent>;\r\n\r\n items: Array<any> = [];\r\n originalItems: Array<any> = [];\r\n isNodeDrop = false;\r\n public state = { expandedkeys: [] };\r\n public itemIndex = [];\r\n public selectedKeys: any[] = [];\r\n public checkedKeys: any[] = [];\r\n public disabledCheckBoxKeys: any[] = [];\r\n public selection: SelectableSettings = { mode: \"single\" };\r\n public nodes = [];\r\n private allNodesWitoutHierachy = [];\r\n private clickActName = null;\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n this.allNodesWitoutHierachy = [];\r\n this.getItems();\r\n this.populateAllNodesWitoutHierachy(this.nodes);\r\n this.initSetSelectedValues();\r\n this.initNodeCheckbox();\r\n this.data.SelectOptions = this.data.SelectOptions || 'Id';\r\n this.selection.mode = this.data.Multiple ? \"multiple\" : \"single\";\r\n\r\n const isExpandAllNodes = FieldUtils.getGroupValue(this.data.TreeviewExpandAll as any, this.group);\r\n if (isExpandAllNodes) {\r\n this.expandAll();\r\n }\r\n\r\n this.data.isHideAllAddNode = this.data.isHideAllAddNode ?? FieldUtils.getGroupValue(this.data.isHideAllAddNode as any, this.group);\r\n this.data.isHideAllRemoveNode = this.data.isHideAllRemoveNode ?? FieldUtils.getGroupValue(this.data.isHideAllRemoveNode as any, this.group);\r\n\r\n this.setDefaultExpandable();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n ComponentUtils.registerComponent(this);\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n public populateAllNodesWitoutHierachy(nodes: any) {\r\n if (nodes && Array.isArray(nodes)) {\r\n for (const node of nodes) {\r\n if (!this.allNodesWitoutHierachy.some(x => x.Id == node.Id)) {\r\n this.allNodesWitoutHierachy.push(node);\r\n if (Array.isArray(node.Value)) {\r\n this.populateAllNodesWitoutHierachy(node.Value);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getItems() {\r\n const fieldValue = this.data.Value;\r\n if (fieldValue) {\r\n this.nodes = FieldUtils.getGroupEvalValue.call(this, this.data.Value);\r\n if (this.data.Type == \"ztree\") {\r\n this.populateAllNodesWitoutHierachy(this.nodes);\r\n }\r\n } else {\r\n console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n this.nodes = [];\r\n }\r\n\r\n return this.nodes;\r\n }\r\n\r\n getTemplate(dataItem: any, data: ZField, group: ZGroup) {\r\n if (data.ItemTemplate) {\r\n const getTemplateFunc = FieldUtils.getGroupEvalValue.call(\r\n this,\r\n data.ItemTemplate\r\n );\r\n if (getTemplateFunc) {\r\n return getTemplateFunc({\r\n dataItem,\r\n data,\r\n group\r\n } as ZTreeTemplateParams);\r\n }\r\n else {\r\n console.warn(\"The (\" + data.ItemTemplate + \") is not defined correctly. Value contains: \", getTemplateFunc);\r\n }\r\n }\r\n\r\n return Object.values(dataItem)\r\n .filter(data => typeof data === \"string\")\r\n .join(\", \");\r\n\r\n }\r\n\r\n convertToTreeItems(dataSet: any[]) {\r\n console.warn(\"This method is to be deprecated. Please use ZComponentHelper.convertToTreeItems()\");\r\n\r\n const toTreeItems: any[] = [];\r\n const treeIndex: any = {};\r\n const pendingItems: any[] = [];\r\n dataSet.forEach((d: any) => {\r\n if (!d.ParentId) {\r\n toTreeItems.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n parentItem.Value ??= [];\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n } else {\r\n pendingItems.push(d);\r\n }\r\n }\r\n });\r\n\r\n if (pendingItems.length > 0) {\r\n pendingItems.forEach((d: any) => {\r\n if (treeIndex[d.ParentId]) {\r\n const parentItem = treeIndex[d.ParentId];\r\n parentItem.Value.push(d);\r\n treeIndex[d.Id] = d;\r\n }\r\n });\r\n }\r\n\r\n return toTreeItems;\r\n }\r\n\r\n onSelectionChange(event: any) {\r\n let targetName: boolean | string;\r\n if (this.clickActName) {\r\n switch (this.clickActName) {\r\n case 'AddNode':\r\n targetName = this.data.OnAddNode;\r\n break;\r\n case 'RemoveNode':\r\n targetName = this.data.OnRemoveNode;\r\n break;\r\n }\r\n }\r\n\r\n if (!targetName) {\r\n targetName = this.data.OnItemClick;\r\n }\r\n\r\n this.clickActName = null;\r\n this.group.subject.next({\r\n type: \"ztree_onSelectionChange\",\r\n target: targetName,\r\n data: event.dataItem,\r\n event: event.index\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public onNodeClick(event: any) {\r\n // Right click handler\r\n if (event.type === \"contextmenu\") {\r\n this.dataItemContextMenu.showContextMenuManually(event, event.item);\r\n return;\r\n }\r\n }\r\n\r\n public getSelectedValues(): Array<any> {\r\n if (this.allNodesWitoutHierachy && this.selectedKeys && this.allNodesWitoutHierachy.length > 0 && this.selectedKeys.length > 0) {\r\n return this.allNodesWitoutHierachy.filter(x => this.selectedKeys.includes(x[this.data.SelectOptions]));\r\n }\r\n return [];\r\n }\r\n\r\n public setSelectedValues(data: any) {\r\n if (data) {\r\n this.selectedKeys = Array.isArray(data) ? data : [data];\r\n }\r\n else {\r\n this.selectedKeys = [];\r\n }\r\n }\r\n\r\n private initSetSelectedValues() {\r\n if (this.data.SelectedValues) {\r\n const selectedNodes = FieldUtils.getGroupEvalValue.call(this, this.data.SelectedValues);\r\n this.setSelectedValues(selectedNodes);\r\n }\r\n }\r\n\r\n //#region Expand & Collapse\r\n public isExpanded = (dataItem: any, index: string) => {\r\n return this.state.expandedkeys.indexOf(index) > -1;\r\n }\r\n\r\n public expandNode = (field: string, value: string, setAsSelected: boolean) => {\r\n this.itemIndex = [];\r\n this.getItems();\r\n\r\n this.searchNodeIndex(this.nodes, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n if (setAsSelected) {\r\n this.selectedKeys = index;\r\n }\r\n const indexArr = [];\r\n index.forEach((i: any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x: any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n this.state.expandedkeys = this.state.expandedkeys.concat(indexArr);\r\n }\r\n\r\n public collapseNode = (field: string, value: string, collapseParent: boolean) => {\r\n this.itemIndex = [];\r\n this.getItems();\r\n\r\n this.searchNodeIndex(this.nodes, value, '', field);\r\n\r\n const index = this.itemIndex;\r\n let indexArr = [];\r\n if (collapseParent) {\r\n index.forEach((i: any) => {\r\n const arr = i.split('_');\r\n let indexs = \"\";\r\n arr.forEach((x: any) => {\r\n indexs = indexs.concat(\"_\").concat(x);\r\n indexArr.push(indexs.substring(1));\r\n })\r\n });\r\n } else {\r\n indexArr = index;\r\n }\r\n\r\n this.state.expandedkeys = this.state.expandedkeys.filter(v => {\r\n return !indexArr.includes(v);\r\n });\r\n }\r\n\r\n public searchNodeIndex(node: any, value: string, key: string, field: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (d[field] === Number(value) || d[field] === value) {\r\n this.itemIndex = this.itemIndex.concat(key + '' + i);\r\n }\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.searchNodeIndex(d.Value, value, k, field);\r\n }\r\n });\r\n }\r\n\r\n public expandAll = () => {\r\n this.getItems();\r\n if (this.nodes) {\r\n this.expandAllNode(this.nodes, '');\r\n }\r\n }\r\n\r\n public collapseAll = () => {\r\n this.state.expandedkeys = [];\r\n }\r\n\r\n private expandAllNode(node: any, key: string) {\r\n if (key) {\r\n key = key + '_';\r\n }\r\n node.forEach((d: any, i: number) => {\r\n if (Array.isArray(d.Value)) {\r\n const k = key + '' + i;\r\n this.state.expandedkeys = this.state.expandedkeys.concat(k);\r\n this.expandAllNode(d.Value, k);\r\n }\r\n });\r\n }\r\n\r\n public handleCollapse(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.filter(k => k !== node.index);\r\n }\r\n\r\n public handleExpand(node) {\r\n this.state.expandedkeys = this.state.expandedkeys.concat(node.index);\r\n }\r\n\r\n public setDefaultExpandable() {\r\n const expandedDataIds = this.data.TreeListInitiallyExpandedDataIds;\r\n\r\n if (expandedDataIds) {\r\n const idList = typeof expandedDataIds === 'string'\r\n ? FieldUtils.getGroupValue(expandedDataIds, this.group)\r\n : expandedDataIds;\r\n\r\n if (Array.isArray(idList)) {\r\n this.state.expandedkeys = idList;\r\n }\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Node Handling\r\n onEditNode(event: any) {\r\n if (this.data.OnEditNode) {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnEditNode);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n onAddNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'AddNode';\r\n }\r\n\r\n onRemoveNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n this.clickActName = 'RemoveNode';\r\n }\r\n\r\n handleNodeDrop(event: TreeItemDropEvent): void {\r\n if (this.data.Draggable === false) {\r\n event.setValid(false);\r\n return;\r\n }\r\n\r\n this.isNodeDrop = true;\r\n const dropHandler = FieldUtils.getGroupEvalValue.call(\r\n this,\r\n this.data.OnDrop\r\n );\r\n if (typeof dropHandler === \"function\") {\r\n const callFunc = dropHandler.bind(this);\r\n callFunc(event);\r\n }\r\n }\r\n\r\n handleNodeDragEnd(event: TreeItemDragEvent) {\r\n if (!this.isNodeDrop) {\r\n return;\r\n }\r\n this.isNodeDrop = false;\r\n this.getItems();\r\n const target = [];\r\n this.updateChangeToDataSet(this.nodes, target);\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(this.data.Value, target, this.group);\r\n this.group.subject.next({\r\n type: \"ztree-onTreeNodeDragEnd\",\r\n target: this.data.OnChange,\r\n data: target\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private updateChangeToDataSet(source: Array<any>, target: Array<any>) {\r\n source.forEach(d => {\r\n if (Array.isArray(d.Value)) {\r\n const t = JSON.parse(JSON.stringify(d));\r\n t.Value = [];\r\n target.push(t);\r\n this.updateChangeToDataSet(d.Value, t.Value);\r\n } else {\r\n const t = Object.assign({}, d);\r\n t.Value = t._DataValue;\r\n delete t._DataValue;\r\n target.push(t);\r\n }\r\n });\r\n }\r\n\r\n public hideAddNode(isHidden = true) {\r\n this.data.isHideAllAddNode = isHidden;\r\n }\r\n\r\n public hideRemoveNode(isHidden = true) {\r\n this.data.isHideAllRemoveNode = isHidden;\r\n }\r\n //#endregion\r\n\r\n //#region Search feature - filterable: true\r\n public clearFilter() {\r\n this.items = [];\r\n this.originalItems = [];\r\n }\r\n\r\n public handleFilter(value: string): void {\r\n if (this.items.length === 0) {\r\n this.items = FieldUtils.getGroupEvalValue.call(this, this.data.Value);\r\n }\r\n\r\n if (this.items.length !== 0) {\r\n if (this.originalItems.length === 0) {\r\n this.originalItems = DataUtils.deepClone(this.items);\r\n }\r\n else\r\n this.items = DataUtils.deepClone(this.originalItems);\r\n }\r\n\r\n const gridValue = this.filterPrefix(this.data.Value);\r\n this.group[gridValue] = this.search(this.items, value);\r\n\r\n if (DataUtils.isNullUndefinedEmpty(value)) {\r\n this.clearFilter();\r\n }\r\n }\r\n\r\n private filterPrefix(valueName: any) {\r\n if (valueName.startsWith('zData.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName.startsWith('group.zData.')) {\r\n return valueName.slice(12);\r\n }\r\n if (valueName.startsWith('group.')) {\r\n return valueName.slice(6);\r\n }\r\n if (valueName) {\r\n return valueName;\r\n }\r\n }\r\n\r\n private search(items: any[], term: string): any[] {\r\n return items.reduce((acc, item) => {\r\n if (this.contains(item.Name, term)) {\r\n acc.push(item);\r\n } else if (item.Value && item.Value.length > 0) {\r\n const newItems = this.search(item.Value, term);\r\n\r\n if (newItems.length > 0) {\r\n let filterItem = item;\r\n filterItem.Value = newItems;\r\n acc.push(filterItem);\r\n }\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n private contains(text: string, term: string): boolean {\r\n return text.toLowerCase().indexOf((term || \"\").toLowerCase()) >= 0;\r\n }\r\n //#endregion\r\n\r\n //#region Checkbox\r\n private initNodeCheckbox() {\r\n if (!!this.data.TreeViewCheckboxConfiguration) {\r\n const checkboxConfiguration = this.getCheckboxConfiguration();\r\n\r\n if (checkboxConfiguration.SelectedValues) {\r\n const checkedNodes = FieldUtils.getGroupEvalValue.call(this, checkboxConfiguration.SelectedValues);\r\n this.setCheckedValues(checkedNodes);\r\n }\r\n\r\n if (checkboxConfiguration.DisabledValues) {\r\n const disabledNodes = FieldUtils.getGroupEvalValue.call(this, checkboxConfiguration.DisabledValues);\r\n this.setDisabledCheckBox(disabledNodes);\r\n }\r\n }\r\n }\r\n\r\n private getCheckboxConfiguration(): TreeViewCheckboxConfiguration {\r\n let checkboxConfiguration: TreeViewCheckboxConfiguration;\r\n\r\n if (typeof this.data.TreeViewCheckboxConfiguration === 'string') {\r\n checkboxConfiguration = FieldUtils.getGroupValue(this.data.TreeViewCheckboxConfiguration, this.group);\r\n }\r\n else {\r\n checkboxConfiguration = this.data.TreeViewCheckboxConfiguration;\r\n }\r\n\r\n return checkboxConfiguration;\r\n }\r\n\r\n private setValues(data: any, targetVariable: string, defaultValue: any[] = []) {\r\n this[targetVariable] = data ? (Array.isArray(data) ? data : [data]) : defaultValue;\r\n }\r\n\r\n public setCheckedValues(data: any) {\r\n this.setValues(data, 'checkedKeys');\r\n }\r\n\r\n public setDisabledCheckBox(data: any) {\r\n this.setValues(data, 'disabledCheckBoxKeys');\r\n }\r\n\r\n public get checkableSettings(): CheckableSettings {\r\n if (!!this.data.TreeViewCheckboxConfiguration) {\r\n const checkboxConfiguration = this.getCheckboxConfiguration();\r\n const checkableSettings = {\r\n enabled: true,\r\n checkParents: !checkboxConfiguration.DisableParentAutoSelectOnAllChildren,\r\n checkChildren: !checkboxConfiguration.DisableParentSelectsAllChildren,\r\n checkDisabledChildren: checkboxConfiguration.EnableDisabledChildrenSelection,\r\n mode: checkboxConfiguration.SelectMultiple ? 'multiple' : 'single',\r\n checkOnClick: checkboxConfiguration.ToggleCheckboxOnNodeClick,\r\n } as CheckableSettings;\r\n\r\n return checkableSettings;\r\n }\r\n return {\r\n enabled: false,\r\n };\r\n }\r\n\r\n public onCheckedChange(event: any) {\r\n if (!!this.data.TreeViewCheckboxConfiguration) {\r\n const checkboxConfiguration = this.getCheckboxConfiguration();\r\n\r\n const targetName = checkboxConfiguration.OnChange;\r\n const isChecked = this.checkedKeys.indexOf(event.item.dataItem.Id) > -1;\r\n\r\n this.group.subject.next({\r\n type: \"ztree_OnCheckboxChange\",\r\n target: targetName,\r\n event,\r\n data: { checkedValue: isChecked, selectedItem: event.item.dataItem, field: this.data, comp: this }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public getCheckedValues(): Array<any> {\r\n if (this.allNodesWitoutHierachy && this.checkedKeys && this.allNodesWitoutHierachy.length > 0 && this.checkedKeys.length > 0) {\r\n const selectOptionsKey = this.data.SelectOptions;\r\n return this.allNodesWitoutHierachy.filter(node => this.checkedKeys.includes(node[selectOptionsKey]));\r\n }\r\n return [];\r\n }\r\n\r\n // Custom logic handling Indeterminate state when custom data item property is persisted\r\n public isChecked = (dataItem: any, index: string): CheckedState => {\r\n if (this.data.TreeViewCheckboxConfiguration) {\r\n if (this.containsItem(dataItem)) {\r\n return \"checked\";\r\n }\r\n\r\n if (this.isIndeterminate(dataItem.Value)) {\r\n return \"indeterminate\";\r\n }\r\n\r\n return \"none\";\r\n }\r\n }\r\n\r\n private containsItem(item: any): boolean {\r\n return this.checkedKeys.indexOf(item[this.data.SelectOptions]) > -1;\r\n }\r\n\r\n private isIndeterminate(items: any[] = []): boolean {\r\n let idx = 0;\r\n let item;\r\n\r\n while ((item = items[idx])) {\r\n if (this.isIndeterminate(item.Value) || this.containsItem(item)) {\r\n return true;\r\n }\r\n\r\n idx += 1;\r\n }\r\n\r\n return false;\r\n }\r\n //#endregion\r\n}\r\n","<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n [kendoTreeViewSelectable]=\"selection\"\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [(selectedKeys)]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n textField=\"Name\"\r\n [selectBy]=\"data.SelectOptions\"\r\n [filterable]=\"data.Filterable\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\"\r\n [ngClass]=\"data.Class\"\r\n [kendoTreeViewCheckable]=\"checkableSettings\"\r\n [checkBy]=\"data.SelectOptions\"\r\n [(checkedKeys)]=\"checkedKeys\"\r\n (checkedChange)=\"onCheckedChange($event)\"\r\n [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n [isChecked]=\"isChecked\"\r\n [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n [disableParentNodesOnly]=\"data.DisableParentNodesOnly\"\r\n [expandDisabledNodes]=\"data.ExpandDisabledNodes\"\r\n (nodeClick)=\"onNodeClick($event)\">\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n <div class=\"tree-content-container\">\r\n <button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n mat-raised-button\r\n color=\"primary\"\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </button>\r\n <button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n color=\"danger\"\r\n mat-raised-button\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n [style]=\"componentProperties.style.style3\"\r\n class=\"e1tag-style3\">\r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </button>\r\n <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n <span *ngFor=\"let icon of dataItem.IconList\">\r\n <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </span>\r\n <kendo-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\" *ngIf=\"!dataItem.z_inputType\">\r\n <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n </kendo-label>\r\n <div [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\" *ngIf=\"!!dataItem.z_inputType\">\r\n <kendo-textbox\r\n #zinput_textbox\r\n *ngIf=\"dataItem.z_inputType == 'text'\"\r\n class=\"input-field e1tag-style8\"\r\n [id]=\"data.Name + '_' + dataItem.z_inputType + '_' + dataItem.Id\"\r\n [style]=\"componentProperties.style.style8\"\r\n [(ngModel)]=\"dataItem.z_inputValue\">\r\n </kendo-textbox>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </kendo-treeview>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n</div>\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { of, forkJoin, Observable, Subscription, Subject } from 'rxjs';\r\nimport { tap, switchMap } from 'rxjs/operators';\r\nimport { CellClickEvent, ExcelModule, ExpandEvent, ScrollMode, TreeListModule } from '@progress/kendo-angular-treelist';\r\nimport { DataListingFieldBase } from '../../base/datalistingfieldbase.component';\r\nimport { FieldService, FieldUtils, WebApiService, ZComponent, ZComponentOutputEvent, ZField, ZGroup } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { GridModule } from '@progress/kendo-angular-grid';\r\nimport { TextBoxModule } from '@progress/kendo-angular-inputs';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { PopoverModule, KENDO_TOOLTIPS } from '@progress/kendo-angular-tooltip';\r\nimport { HtmlSanitizePipe } from '../../../pipe/htmlSanitize.pipe';\r\nimport { ZworkflowbuttonsComponent } from '../../button/zworkflowbuttons/zworkflowbuttons.component';\r\nimport { ZbuttonsComponent } from '../../button/zbuttons/zbuttons.component';\r\nimport { ZInputContainerComponent } from '../../input/zinput-container/zinput-container.component';\r\nimport { ContextMenuComponent } from '../../menu/context-menu/context-menu.component';\r\nimport { DateRangeFilterCellComponent } from '../zgrid/date-range-cell-filter.component';\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\n\r\n\r\nexport interface ZTreeListColumn {\r\n field: string;\r\n title: string;\r\n width: number;\r\n visible: boolean | any;\r\n fieldType: string;\r\n navigateTo: string;\r\n command: any;\r\n class: any;\r\n footerTemplate: boolean;\r\n aggregateType: string;\r\n aggregateTitle: string;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport class ZTreeListOptions {\r\n constructor(\r\n public sortable?: boolean,\r\n public resizable?: boolean,\r\n public filterable?: boolean,\r\n public reorderable?: boolean,\r\n public columnMenu?: boolean,\r\n public scrollable?: ScrollMode,\r\n public refresh?: boolean,\r\n public autoBind?: boolean,\r\n public dataSource?: string,\r\n public dataBound?: any,\r\n public idField?: string,\r\n public parentIdField?: string,\r\n public columns?: Array<any>,\r\n public aggregate?: any,\r\n public pageAble?: any,\r\n public pageSize: number = 10,\r\n ) { }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-ztreelist',\r\n templateUrl: './ztreelist.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztreelist.component.scss', '../zgrid/zgrid.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, PopoverModule, FontAwesomeModule, LabelModule, HtmlSanitizePipe, KENDO_TOOLTIPS, ZworkflowbuttonsComponent,\r\n ZbuttonsComponent, GridModule, TextBoxModule, PopupModule, ZInputContainerComponent, ContextMenuComponent, ExcelModule,\r\n ReactiveFormsModule, TreeListModule, DateRangeFilterCellComponent, ButtonsModule, ExcelModule],\r\n})\r\n\r\nexport class ZtreelistComponent extends DataListingFieldBase implements ZComponent, OnInit, OnDestroy {\r\n\r\n ztreelist: any = null;\r\n subscription: Subscription;\r\n dataSource: any;\r\n idField = 'Id';\r\n parentIdField = 'ParentId';\r\n options: ZTreeListOptions = new ZTreeListOptions();\r\n public gridBtn;\r\n fieldgridColVisible: any[];\r\n inlineEditedFormGroups: {};\r\n isLoading: boolean;\r\n treelistSubject: Subject<any> = new Subject<any>();\r\n private expandedIds: string[] = [];\r\n\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n private readonly webapiService: WebApiService,\r\n private readonly activatedRoute: ActivatedRoute,\r\n private readonly router: Router,\r\n ) {\r\n super();\r\n }\r\n // ngAfterViewInit(): void {\r\n // // this.ztreelist.setOptions({data: this.data, group: this.group});\r\n // }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n super.initComponent().subscribe(() => {\r\n this.setupGridButtons();\r\n\r\n if (!!this.data.Options) {\r\n this.setLocalOptions();\r\n } else {\r\n this.setFieldElementOptions();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n public setData = (gData: any) => {\r\n this.dataSource = gData;\r\n this.createFormControlsForInlineEdit(gData);\r\n this.setDefaultExpandable();\r\n }\r\n\r\n public isButtonHidden(col: any, cellContain: any) {\r\n if (col.visible) {\r\n return FieldUtils.getGroupEvalValue.call(this, col.visible, cellContain.viewItem.data);\r\n }\r\n\r\n if (!col.hiddenParam || col.hiddenValue === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === null) {\r\n return true;\r\n }\r\n\r\n if (cellContain.viewItem.data[col.hiddenParam] === col.hiddenValue) {\r\n return true;\r\n } else { return false; }\r\n }\r\n\r\n public buttonClick(button: any, cellContext: any) {\r\n if (button.edit) {\r\n button.edit(cellContext);\r\n } else {\r\n this.group.subject.next({\r\n type: 'buttonClick',\r\n target: button.ClickEvent,\r\n data: cellContext\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n\r\n public onNavigateTo(event: any, colSetting: any, rowData: any, cellData: string) {\r\n event.stopPropagation();\r\n this.group.subject.next({\r\n type: 'zgrid-onNavigateTo',\r\n target: colSetting.navigateTo,\r\n data: cellData\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public isColumnsVisible(fieldExpr) {\r\n if (fieldExpr !== false && !fieldExpr) {\r\n return true;\r\n }\r\n const v = FieldUtils.getGroupEvalValue.call(this, fieldExpr);\r\n return v;\r\n }\r\n\r\n private setLocalOptions() {\r\n const options: ZTreeListOptions = FieldUtils.getGroupValue(\r\n this.data.Options,\r\n this.group\r\n );\r\n if (!options) {\r\n console.warn('No initialise for Field.Options: ', this.data.Options);\r\n return;\r\n }\r\n this.options = options;\r\n this.options.idField = this.options.idField || this.idField;\r\n this.options.parentIdField = this.options.parentIdField || this.parentIdField;\r\n\r\n super.translateColumnHeader(this.options.columns).subscribe(() => { this.isLoading = false; });\r\n\r\n if (\r\n this.options.dataSource &&\r\n typeof this.options.dataSource === 'string'\r\n ) {\r\n if (this.options.dataSource.startsWith('group.')) {\r\n this.dataSource = FieldUtils.getGroupValue(this.options.dataSource, this.group);\r\n this.setDefaultExpandable();\r\n this.setupPopoverFeature(this.options.columns, this.dataSource);\r\n } else {\r\n console.error(`${this.data.Name} - has invalid dataSource`);\r\n }\r\n } else {\r\n console.error(`${this.data.Name} - dataSource property is not declared.`);\r\n }\r\n }\r\n\r\n public setFieldElementOptions() {\r\n this.options.sortable = true;\r\n this.options.resizable = true;\r\n this.options.filterable = true;\r\n this.options.resizable = true;\r\n this.options.columnMenu = this.data.DisableGridColumnMenu ? false : true;\r\n this.options.pageAble = this.data.pageAble != undefined ? this.data.pageAble : false;\r\n if (typeof this.options.pageAble != 'object' && this.options.pageAble) {\r\n const pageSizes = [5, 10, 20, 50, 100, 200, 500]; // to be enhanced: custom page sizes\r\n const previousNext = this.data['EnablePreviousNextButton'] || false;\r\n this.options.pageAble = { responsive: true, buttonCount: 3, pageSizes: pageSizes, previousNext: previousNext };\r\n }\r\n this.options.scrollable = !!this.data.pageAble ? 'scrollable' : (this.data['ScrollMode'] || 'virtual');\r\n this.options.idField = this.data['idField'] || this.idField;\r\n this.options.parentIdField = this.data['parentIdField'] || this.parentIdField;\r\n this.options.columns = [];\r\n this.options.aggregate = [];\r\n this.options.pageSize = this.data.PageSize || this.options.pageSize;\r\n\r\n let zfields = [];\r\n this.fieldService.getFormFieldCode(this.data['ColumnFieldCode'], 'FormField', null, null).pipe(\r\n switchMap(fields => {\r\n //Before get grid data\r\n return this.beforeLoadColumn(this.group, fields, this);\r\n }),\r\n switchMap(fields => {\r\n zfields = fields;\r\n return this.getButtonsFromZButtons(fields);\r\n }),\r\n tap((buttons) => {\r\n this.setTreeListColumns(zfields, buttons);\r\n }),\r\n switchMap(() => {\r\n return forkJoin([this.getDataBinding(), super.translateColumnHeader(this.options.columns)]);\r\n }),\r\n tap(data => {\r\n this.createFormControlsForInlineEdit(data[0]);\r\n this.dataSource = data[0] || [];\r\n this.setDefaultExpandable();\r\n this.setupPopoverFeature(this.options.columns, data[0]);\r\n this.isLoading = false;\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public beforeLoadColumn(group: ZGroup, fields: any, me: any) {\r\n if (!group.beforeLoadColumn) {\r\n console.warn('group.beforeLoadColumn is undefined');\r\n return of(fields);\r\n }\r\n return group.beforeLoadColumn(group, fields, me);\r\n }\r\n\r\n private getButtonsFromZButtons(fields: Array<ZField>): Observable<any> {\r\n const buttonCmd = [];\r\n const zbuttonResult = [];\r\n fields.forEach(field => {\r\n if (field.Type === 'zbuttons' && FieldUtils.getGroupValue(field.gridColVisible as string, this.group)) {\r\n zbuttonResult.push(\r\n this.fieldService.getFormFieldCode(field.Value, 'FormField', null, null).pipe(\r\n switchMap(buttons => {\r\n return of({ field, buttons });\r\n }))\r\n );\r\n }\r\n });\r\n\r\n if (zbuttonResult.length === 0) {\r\n return of([]);\r\n }\r\n\r\n return forkJoin(zbuttonResult).pipe(\r\n tap(resp => {\r\n resp.forEach(zbuttonsArray =>\r\n zbuttonsArray['buttons'].forEach((button: any) => {\r\n buttonCmd.push({\r\n zbuttonsName: zbuttonsArray['field'].Value,\r\n name: button.Value,\r\n class: button.Class,\r\n text: button.Label,\r\n icon: button.Icon,\r\n visible: button.Visible,\r\n hiddenParam: button['hiddenParam'],\r\n hiddenValue: button['hiddenValue'],\r\n edit: button.edit,\r\n ClickEvent: button.ClickEvent,\r\n ShowLabel: button.ShowLabel,\r\n color: button.Color\r\n });\r\n })\r\n );\r\n }),\r\n switchMap(() => {\r\n return of(buttonCmd);\r\n })\r\n );\r\n }\r\n\r\n private setTreeListColumns(fields: Array<ZField>, buttons: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.setTreeListColumns(field.Value, buttons);\r\n }\r\n if (FieldUtils.getGroupValue(field.gridColVisible as string, this.group) === true) {\r\n if (field.Type === 'zbuttons') {\r\n this.insertCommand(field, buttons);\r\n } else {\r\n if (field.AggregateType && field.AggregateType !== '') {\r\n let aggregatetitle = '';\r\n if (field.AggregateType === 'sum') {\r\n aggregatetitle = 'Total: ';\r\n } else {\r\n aggregatetitle = `${field.AggregateType}: `;\r\n }\r\n this.insertFooterTemplateField(field, aggregatetitle);\r\n this.options.aggregate.push({\r\n field: field.Value,\r\n aggregate: field.AggregateType\r\n });\r\n } else {\r\n this.insertField(field);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private insertField(field: ZField) {\r\n let colTitle = field.DisplayName ?? field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = FieldUtils.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push(\r\n Object.assign(field, {\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: '',\r\n aggregateTitle: '',\r\n isEditableInGrid: field.IsEditableInGrid\r\n })\r\n );\r\n }\r\n\r\n private insertCommand(field: ZField, buttons: any) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = FieldUtils.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Name,\r\n title: colTitle,\r\n width: field.width,\r\n visible: field.Visible,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: buttons.filter(x => x.zbuttonsName === field.Value),\r\n class: field.DivClass,\r\n footerTemplate: false,\r\n aggregateType: '',\r\n aggregateTitle: '',\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private insertFooterTemplateField(field: ZField, aggregatetitle: string) {\r\n let colTitle = field.Name;\r\n if (colTitle.toString().startsWith('group.')) {\r\n colTitle = FieldUtils.getGroupValue(colTitle.toString(), this.group);\r\n }\r\n this.options.columns.push({\r\n field: field.Value,\r\n title: colTitle,\r\n width: field.width,\r\n visible: true,\r\n fieldType: field.Type,\r\n navigateTo: field.NavigateTo,\r\n command: null,\r\n class: field.DivClass,\r\n footerTemplate: true,\r\n aggregateType: field.AggregateType,\r\n aggregateTitle: aggregatetitle,\r\n isEditableInGrid: field.IsEditableInGrid\r\n });\r\n }\r\n\r\n private getDataBinding(): Observable<any> {\r\n if (this.data.DataSource) {\r\n return of(FieldUtils.getGroupValue(this.data.DataSource, this.group));\r\n }\r\n\r\n const resourceUrl = this.getResouceURL();\r\n if (resourceUrl) {\r\n return this.webapiService.getApi(resourceUrl, null, null, null, null, null, true);\r\n }\r\n return of([]);\r\n }\r\n\r\n private getResouceURL() {\r\n return FieldUtils.getGroupValue(\r\n this.data.ResourceURL,\r\n this.group\r\n );\r\n }\r\n\r\n cellClickHandler(event: CellClickEvent) {\r\n if (event.type === 'contextmenu') {\r\n this.dataItemContextMenu.showContextMenuManually(event, event.dataItem);\r\n return;\r\n }\r\n\r\n if (!!this.data.DisableCellClickHandler) {\r\n return;\r\n }\r\n\r\n console.log('cellClick event: ', event);\r\n if (this.data.OnItemClick) {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(event);\r\n }\r\n return;\r\n }\r\n\r\n this.editModel(event.dataItem);\r\n }\r\n\r\n private editModel(dataItem: any) {\r\n if (this.data.EditClickURL) {\r\n const colFields = FieldUtils.getGroupValue(this.data.ColumnFields, this.group);\r\n this.group.subject.next({\r\n type: 'zgrid-cellClick',\r\n target: this.data.EditClickURL,\r\n data: dataItem,\r\n columnFields$: colFields\r\n } as ZComponentOutputEvent);\r\n } else {\r\n this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n relativeTo: this.activatedRoute\r\n });\r\n }\r\n }\r\n\r\n public getFormat(col: any) {\r\n let format = '';\r\n const formatArr = col.FormatOptions.split('.')\r\n let dp = 0;\r\n\r\n if (formatArr.length > 1) {\r\n dp = formatArr[1].length;\r\n }\r\n\r\n if (dp !== 0) {\r\n format = `1.${dp}-${dp}`;\r\n }\r\n\r\n return format;\r\n }\r\n\r\n public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n const gridColumns = this.options.columns;\r\n gridColumns.forEach((col: any) => {\r\n if (col.Name === columnName || col.field === columnName) {\r\n col.title = newHeaderTitle;\r\n }\r\n });\r\n }\r\n\r\n public getColClass(dataItem: any, col: any) {\r\n let ngClass = 'gridCell ';\r\n if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n ngClass += 'rightAligned ';\r\n }\r\n\r\n if (dataItem[`${col.field}_Class`]) {\r\n ngClass += `${dataItem[`${col.field}_Class`]} `;\r\n }\r\n\r\n if (col.Class) {\r\n ngClass += `${col.Class} `;\r\n }\r\n\r\n if (col.PopOverContent) {\r\n ngClass += ' withPopoverInGrid';\r\n }\r\n\r\n return ngClass;\r\n }\r\n\r\n onFilterChange(event: any): void {\r\n if (this.ztreelist) {\r\n // to be implement.\r\n }\r\n }\r\n\r\n public filterable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public sortable(value: any) {\r\n if (value === false) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public setDefaultExpandable() {\r\n if (this.data.TreeListInitiallyExpandedDataIds) {\r\n const idList = typeof this.data.TreeListInitiallyExpandedDataIds == 'string' ? FieldUtils.getGroupValue(this.data.TreeListInitiallyExpandedDataIds as string, this.group) : this.data.TreeListInitiallyExpandedDataIds;\r\n if (idList && Array.isArray(idList)) {\r\n this.expandedIds = idList.map(i => i.toString());\r\n }\r\n }\r\n else if (this.data.DefaultCollapse === false) {\r\n this.expandedIds = this.dataSource.map(d => d[this.idField].toString());\r\n }\r\n }\r\n\r\n public isExpanded = (dataItem: any): boolean => {\r\n return this.expandedIds.indexOf(dataItem[this.idField].toString()) > -1;\r\n };\r\n\r\n public onCollapse(args: ExpandEvent): void {\r\n this.expandedIds = this.expandedIds.filter((id) => id != args.dataItem[this.idField].toString());\r\n }\r\n\r\n public onExpand(args: ExpandEvent): void {\r\n this.expandedIds.push(args.dataItem[this.idField].toString());\r\n }\r\n\r\n public addNew() {\r\n this.group.subject.next({\r\n type: 'buttonClick',\r\n target: 'group.newModel()',\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n public refreshData() {\r\n this.group.subject.next({\r\n type: 'buttonClick',\r\n target: 'group.refreshTreeList()',\r\n data: null\r\n } as ZComponentOutputEvent);\r\n }\r\n\r\n private setupGridButtons() {\r\n if (this.data.GridButtonFieldName_WF || this.data.GridButtonFieldName) {\r\n this.gridBtn = {\r\n ReadOnly: false,\r\n Visible: true,\r\n IsRequired: false,\r\n WorkflowCode: this.data.GridButtonFieldName_WF,\r\n Value: this.data.GridButtonFieldName,\r\n Type: this.data.GridButtonFieldName_WF ? 'zworkflowbuttons' : 'zbuttons'\r\n }\r\n }\r\n }\r\n\r\n //#region Inline Edit\r\n private createFormControlsForInlineEdit(data: any) {\r\n let counterIndex = 0;\r\n if (this.options.columns.find(c => c.isEditableInGrid) === undefined || !data) {\r\n return;\r\n }\r\n\r\n this.inlineEditedFormGroups = this.inlineEditedFormGroups || {};\r\n\r\n data.forEach(d => {\r\n const items = {};\r\n this.options.columns.forEach(c => {\r\n items[c.field] = new UntypedFormControl(d[c.field]);\r\n });\r\n const formGroup = new UntypedFormGroup(items);\r\n\r\n if (d['Id']) {\r\n items['Id'] = new UntypedFormControl({ value: d['Id'], disabled: false });\r\n }\r\n else {\r\n d['Id'] = counterIndex++;\r\n }\r\n this.inlineEditedFormGroups[d['Id']] = formGroup;\r\n });\r\n }\r\n\r\n public getInlineField(value: any) {\r\n return this.options.columns.find(x => x.Value === value);\r\n }\r\n\r\n public getInlineForm(data: any, rowIndex: number) {\r\n return this.inlineEditedFormGroups[data['Id'] || rowIndex];\r\n }\r\n\r\n public getFormControlData() {\r\n const data = [];\r\n for (const k of Object.keys(this.inlineEditedFormGroups)) {\r\n data.push(this.inlineEditedFormGroups[k]?.value);\r\n }\r\n return data;\r\n }\r\n\r\n public isInlineEditColVisible(dataItem: any, column: any) {\r\n const isVisible = dataItem[`${column.Value}_Visible`];\r\n return !(isVisible === false);\r\n }\r\n\r\n //#region grid styling\r\n public getCellStyleForInlineEdit(columnField: ZField, dataItem: any, rowIndex: number): any {\r\n const form = this.getInlineForm(dataItem, rowIndex) as UntypedFormGroup;\r\n if (!form) {\r\n return {};\r\n }\r\n const style = columnField[`Style10`];\r\n const func = FieldUtils.getGroupEvalValue.call(this, style);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n return callFunc(form.value);\r\n }\r\n else if (typeof func === 'string') {\r\n return func;\r\n }\r\n return style;\r\n }\r\n //#endregion\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"grid-container e1tag-style\" [style]=\"componentProperties.style.style\" [ngClass]=\"data.Class\">\r\n <ng-template #template let-anchor>\r\n <span>{{ anchor.nativeElement.innerText }}</span>\r\n </ng-template>\r\n <kendo-popover #gridPopOver [position]=\"data.PopOverPosition || 'bottom'\" [templateData]=\"getContextData.bind(this)\">\r\n <ng-template kendoPopoverBodyTemplate let-data=\"data\">\r\n <div [style]=\"data.BodyStyle\" class=\"popoverbody\" *ngIf=\"data && data.Body\" [innerHTML]=\"data.Body | htmlSanitize\" [ngClass]=\"data.BodyClass\" (mouseleave)=\"closePopOver.call(this, $event)\"></div>\r\n </ng-template>\r\n </kendo-popover>\r\n <div kendoTooltip showOn=\"none\" [tooltipTemplate]=\"template\" filter=\".k-grid td\" (mouseover)=\"showTooltip($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n <div kendoPopoverContainer [popover]=\"gridPopOver\" filter=\"div.gridCell.withPopoverInGrid\" showOn=\"none\" kendoPopoverContainer #popovercontainer=\"kendoPopoverContainer\">\r\n <kendo-treelist [kendoTreeListFlatBinding]=\"dataSource\"\r\n kendoTreeListExpandable\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"desktop-grid e1tag-style2\"\r\n [idField]=\"options.idField\"\r\n [parentIdField]=\"options.parentIdField\"\r\n [sortable]=\"options.sortable\"\r\n [resizable]=\"options.resizable\"\r\n [filterable]=\"options.filterable\"\r\n [reorderable]=\"false\"\r\n [columnMenu]=\"options.columnMenu\"\r\n [scrollable]=\"options.scrollable\"\r\n [aggregate]=\"options.aggregate\"\r\n [isExpanded]=\"isExpanded\"\r\n [class.hiden-pager]=\"!options.pageAble\"\r\n (cellClick)=\"cellClickHandler($event)\"\r\n (filterChange)=\"onFilterChange($event)\"\r\n (expand)=\"onExpand($event)\"\r\n (collapse)=\"onCollapse($event)\"\r\n [rowClass]=\"rowCallback.bind(this)\"\r\n [pageable]=\"options.pageAble\"\r\n [pageSize]=\"options.pageSize\">\r\n <ng-template kendoTreeListToolbarTemplate\r\n *ngIf=\"data.AllowRefreshButton || data.AllowExport || data.Title || data.GridButtonFieldName_WF || data.GridButtonFieldName\">\r\n <div class=\"toobar-left-item\">\r\n <fa-icon *ngIf=\"data.Icon\" class=\"gridTitleIcon\" [icon]=\"data.Icon\"></fa-icon>\r\n <kendo-label class=\"gridTitle\">{{data.Title}}</kendo-label>\r\n <button class=\"k-button refresh-btn\" (click)=\"refreshData()\" *ngIf=\"data.AllowRefreshButton\">\r\n <fa-icon icon=\"redo\" style=\"color:black; font-size: 1.2rem;\"></fa-icon>\r\n </button>\r\n </div>\r\n <div class=\"toolbar-right-item\">\r\n <app-zworkflowbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zworkflowbuttons'\" [data]=\"gridBtn\" [group]=\"group\" [form]=\"form\"></app-zworkflowbuttons>\r\n <app-zbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zbuttons'\" [data]=\"gridBtn\" [group]=\"group\" [form]=\"form\"></app-zbuttons>\r\n <button class=\"k-button\" kendoTreeListExcelCommand\r\n *ngIf=\"data.AllowExport\">\r\n <fa-icon icon=\"download\" style=\"color:black; font-size: 1.2rem;\"></fa-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngFor=\"let col of options.columns; index as i\">\r\n <kendo-treelist-column *ngIf=\"!col.command\" [class]=\"col.class\" [expandable]=\"i===0\" [field]=\"col.field\"\r\n [title]=\"col.title || col.field\" [width]=\"col.width || 250\" [filterable]=\"filterable(col.enableFiltering)\"\r\n [sortable]=\"sortable(col.enableSorting)\" [hidden]=\"!isColumnsVisible(col.visible)\" [style]=\"getGridColumnStyle()\" class=\"e1tag-style3\"\r\n [headerStyle]=\"getGridHeaderStyle()\" headerClass=\"e1tag-style4\" [footerStyle]=\"getGridFooterStyle()\" footerClass=\"e1tag-style9\">\r\n <div [ngSwitch]=\"true\">\r\n <div *ngSwitchCase=\"col.fieldType === 'number'\r\n || col.fieldType === 'currency'\r\n || col.fieldType === 'znumeric'\">\r\n <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-treelist-numeric-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"eq\">\r\n <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n </kendo-treelist-numeric-filter-cell>\r\n </ng-template>\r\n </div>\r\n <div *ngSwitchCase=\"col.fieldType == 'zdate'\r\n || col.fieldType === 'zdatetime'\r\n || col.fieldType === 'zuidatetime'\">\r\n <div *ngIf=\"col.filterByDateRange === true\">\r\n <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\" operator=\"lte\">\r\n <date-range-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" class=\"date-range-filter\" [filter]=\"filter\" [field]=\"col.field\">\r\n <kendo-treelist-filter-lt-operator></kendo-treelist-filter-lt-operator>\r\n <kendo-treelist-filter-lte-operator></kendo-treelist-filter-lte-operator>\r\n <kendo-treelist-filter-gt-operator></kendo-treelist-filter-gt-operator>\r\n <kendo-treelist-filter-gte-operator></kendo-treelist-filter-gte-operator>\r\n <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n </date-range-filter-cell>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"col.filterByDateRange === false\">\r\n <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-treelist-date-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"lte\">\r\n <kendo-treelist-filter-lt-operator></kendo-treelist-filter-lt-operator>\r\n <kendo-treelist-filter-lte-operator></kendo-treelist-filter-lte-operator>\r\n <kendo-treelist-filter-gt-operator></kendo-treelist-filter-gt-operator>\r\n <kendo-treelist-filter-gte-operator></kendo-treelist-filter-gte-operator>\r\n <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n </kendo-treelist-date-filter-cell>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n <kendo-treelist-string-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"contains\">\r\n <kendo-treelist-filter-contains-operator></kendo-treelist-filter-contains-operator>\r\n <kendo-treelist-filter-eq-operator></kendo-treelist-filter-eq-operator>\r\n <kendo-treelist-filter-neq-operator></kendo-treelist-filter-neq-operator>\r\n <kendo-treelist-filter-startswith-operator></kendo-treelist-filter-startswith-operator>\r\n <kendo-treelist-filter-endswith-operator></kendo-treelist-filter-endswith-operator>\r\n <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n </kendo-treelist-string-filter-cell>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <ng-template kendoTreeListCellTemplate let-dataItem let-rowIndex=\"rowIndex\" let-cellContext=\"cellContext\">\r\n <div style=\"margin: 7px 0;display: inline;\" [style.color]=\"(!!dataItem.Color ? [dataItem.Color] : 'black')\"\r\n *ngIf=\"!col.navigateTo && col.isEditableInGrid !== true\" [ngSwitch]=\"col.fieldType\"\r\n [ngClass]=\"getColClass(dataItem, col)\" [style]=\"getCellStyle(col, dataItem)\" [attr.data-id]=\"dataItem.Id\" [attr.column-name]=\"col.field\"\r\n (mouseenter)=\"showPopOver(col, $event)\" (mouseleave)=\"closePopOver($event)\">\r\n <span *ngSwitchCase=\"'zdate'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: 'dd/MM/yyyy' }}\r\n </span>\r\n <span *ngSwitchCase=\"'zshortdate'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: 'MMM yyyy' }}\r\n </span>\r\n <span *ngSwitchCase=\"'zdatetime'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n <span *ngSwitchCase=\"'zuidatetime'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n <span *ngSwitchCase=\"'sfdatetimepicker'\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n </span>\r\n <span *ngSwitchCase=\"'number'\" class=\"grid-cell-data\">\r\n <div style=\"text-align:right;\">{{ dataItem[col.field] | number }} </div>\r\n </span>\r\n <span *ngSwitchCase=\"'currency'\" class=\"grid-cell-data\">\r\n <div style=\"text-align:right;\">{{ dataItem[col.field] | number: '1.2-2' }}</div>\r\n </span>\r\n <span *ngSwitchCase=\"'znumeric'\" class=\"grid-cell-data\">\r\n <div style=\"text-align:right;\">{{ dataItem[col.field] | number: getFormat(col) }}</div>\r\n </span>\r\n <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\" class=\"grid-cell-data\">\r\n {{ dataItem[col.field] }}\r\n </span>\r\n <span *ngSwitchCase=\"'zlabel'\" class=\"grid-cell-data\">\r\n <div class=\"ztree-inline-block e1tag-style10\" [style]=\"componentProperties.style.style10\" [innerHTML]=\"dataItem[col.field] | htmlSanitize\"></div>\r\n </span>\r\n\r\n <ng-container *ngIf=\"!col.gridCellReplaceValue\">\r\n <span *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"cellStyleCondition(col, dataItem[col.field])\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <div class=\"cellStyleConditionDefault\" [style]=\"setCellStyleCondition(col, dataItem[col.field])\">\r\n <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </ng-container>\r\n </div>\r\n <div style=\"margin: 7px 0;display: inline;\" [style.color]=\"(!!dataItem.Color ? [dataItem.Color] : 'black')\"\r\n *ngIf=\"!col.navigateTo && col.isEditableInGrid === true && isInlineEditColVisible(dataItem, col)\"\r\n [ngClass]=\"getColClass(dataItem, col)\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\" [style]=\"getCellStyleForInlineEdit(col, dataItem, rowIndex)\">\r\n <app-zinput-container [data]=\"getInlineField(col.field)\" [group]=\"group\"\r\n [form]=\"getInlineForm(dataItem, rowIndex)\" [containerField]=\"containerField\" [style]=\"componentProperties.style.style6\"\r\n class=\"e1tag-style6\">\r\n </app-zinput-container>\r\n </div>\r\n <span *ngIf=\"!!col.navigateTo\" (click)=\"onNavigateTo($event, col, dataItem, dataItem[col.field])\">\r\n <button kendoButton themeColor=\"light\" size=\"small\">\r\n {{ dataItem[col.field] }}\r\n <fa-icon slot=\"end\" [icon]=\"'arrow-right'\"></fa-icon>\r\n </button>\r\n </span>\r\n </ng-template>\r\n <ng-template *ngIf=\"col.footerTemplate\" kendoTreeListFooterTemplate let-aggregates=\"aggregates\">\r\n <div *ngIf=\"!col.navigateTo\" [ngSwitch]=\"col.fieldType\" [style]=\"componentProperties.style.style7\"\r\n [ngClass]=\"{'rightAligned': col.fieldType === 'number' || col.fieldType === 'currency'}\" class=\"e1tag-style7\">\r\n <span *ngSwitchCase=\"'number'\">\r\n <b>\r\n {{ col.aggregateTitle | titlecase }} {{ aggregates[col.field][col.aggregateType] | number }}\r\n </b>\r\n </span>\r\n <span *ngSwitchCase=\"'currency'\">\r\n <b>\r\n {{ col.aggregateTitle | titlecase }} {{ aggregates[col.field][col.aggregateType] | number: '1.2-2' }}\r\n </b>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </kendo-treelist-column>\r\n <kendo-treelist-command-column *ngIf=\"!!col.command\" [title]=\"col.title || col.field\"\r\n [width]=\"col.width || 250\" [style]=\"componentProperties.style.style8\" class=\"e1tag-style8\">\r\n <ng-template kendoTreeListCellTemplate let-cellContext=\"cellContext\">\r\n <div [ngClass]=\"col.class\">\r\n <button *ngFor=\"let col2 of col.command; index as i\" type=\"button\"\r\n [kendoTreeListEditCommand]=\"cellContext\" [title]=\"col2.text\" (click)=\"buttonClick(col2, cellContext)\"\r\n [hidden]=\"isButtonHidden(col2, cellContext)\">\r\n <fa-icon [icon]=\"col2.icon\" [style.color]=\"(!!col2.color ? [col2.color] : 'black')\">\r\n </fa-icon>\r\n <div *ngIf=\"col2.ShowLabel === undefined || col2.ShowLabel\">{{col2.text}}</div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </kendo-treelist-command-column>\r\n </ng-container>\r\n <kendo-treelist-excel fileName=\"Excel.xlsx\"></kendo-treelist-excel>\r\n </kendo-treelist>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n </div>\r\n </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { LayoutModule } from \"@progress/kendo-angular-layout\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n/********** Component & Service **********/\r\nimport { ComponentUtils, ZComponent, ZComponentHelper, ZComponentProperties, ZField, ZGroup} from 'mmhglobal-zcore';\r\nimport { FieldBase } from '../../base/fieldbase.component';\r\n\r\n@Component({\r\n selector: 'app-ztrendcard',\r\n templateUrl: './ztrendcard.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ztrendcard.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, LayoutModule, LabelModule, FontAwesomeModule]\r\n})\r\n\r\nexport class ZtrendcardComponent extends FieldBase implements ZComponent, OnInit {\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: UntypedFormGroup;\r\n\r\n isLoading = true;\r\n componentProperties = new ZComponentProperties();\r\n private title = \"Undefined\";\r\n private icon = \"address-card\";\r\n private color = \"#000000\";\r\n private value = 0;\r\n private defaultBackgroundColor : string = \"white\";\r\n public backgroundColor: string = this.defaultBackgroundColor;\r\n\r\n iconColumnSize = 4;\r\n valueColumnSize = 4;\r\n iconColumnCss = \"\";\r\n valueColumnCss = \"\";\r\n\r\n options = {\r\n title: this.title,\r\n icon: this.icon,\r\n color: this.color,\r\n value: this.value\r\n };\r\n\r\n constructor() { super(); }\r\n\r\n ngOnInit() {\r\n ComponentUtils.setComponentProperties(this);\r\n ComponentUtils.registerComponent(this);\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n\r\n this.setColumnSizesFromRatio();\r\n this.backgroundColor = this.data.Background || this.defaultBackgroundColor;\r\n\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n this.isLoading = false;\r\n }\r\n\r\n private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n options.icon = ZComponentHelper.getGroupEvalValue.call(this, field.Icon) || options.icon;\r\n options.color = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.color;\r\n options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n // const fc = this.group.form.controls[this.data.Value];\r\n // status ? fc.enable() : fc.disable();\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n }\r\n\r\n public setData = (gData: any) => {\r\n if (!gData) {\r\n this.options.value = 0;\r\n }\r\n this.getFieldDeclarationForSetup(this.data, this.options);\r\n }\r\n\r\n private setColumnSizesFromRatio()\r\n {\r\n const ratio = this.data['InnerRatio'] ? this.data['InnerRatio'].split(':').map(val => val.trim()) : null;\r\n\r\n if (ratio) {\r\n if (ratio.length === 2) {\r\n // When there are two values, assign them directly\r\n this.iconColumnSize = parseInt(ratio[0]);\r\n this.valueColumnSize = parseInt(ratio[1]);\r\n }\r\n else if (ratio && ratio.length === 1) {\r\n // If only one value is provided, split evenly\r\n this.iconColumnSize = this.valueColumnSize = parseInt(ratio[0]);\r\n }\r\n }\r\n\r\n this.iconColumnCss = `col-${this.iconColumnSize}`;\r\n this.valueColumnCss = `col-${this.valueColumnSize}`;\r\n }\r\n\r\n}\r\n","<div class=\"trend-btn\" *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [ngStyle]=\"{ 'background-color': backgroundColor }\">\r\n <div class=\"container\">\r\n <!--Icon and Value Row-->\r\n <div class=\"row\">\r\n <!--Icon-->\r\n <div class=\"trend-btn-icon\" [ngClass]=\"iconColumnCss\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </div>\r\n\r\n <!--Value-->\r\n <div class=\"trend-btn-value\" [ngClass]=\"valueColumnCss\">\r\n {{ options.value }}\r\n </div>\r\n </div>\r\n\r\n <!--Title Row-->\r\n <div class=\"row\">\r\n <div class=\"col-12 trend-btn-label\">\r\n {{ options.title }}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, ChangeDetectorRef } from \"@angular/core\";\r\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\nimport { Observable, of, Subscription } from \"rxjs\";\r\nimport { map, switchMap, tap } from \"rxjs/operators\";\r\nimport {\r\n ZComponent, ZField,\r\n FieldService,\r\n ZGroup, ZComponentProperties, ZComponentHelper, ComponentErrorHandlerService, FormType, ResourceApiService,\r\n AssetsAllowedExtension, AssetsFolder, AssetsNodeParam, AssetsRoutes, WebApiService,\r\n ToastService,\r\n FieldUtils,\r\n DebugUtils,\r\n DataUtils,\r\n ComponentUtils,\r\n ValidationUtils\r\n} from 'mmhglobal-zcore';\r\nimport { ZGrid } from \"../../data-listing/zgrid/zgrid.component\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { ZdivComponent } from \"../zdiv/zdiv.component\";\r\nimport { LayoutModule } from \"@progress/kendo-angular-layout\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\n\r\n\r\n@Component({\r\n selector: 'app-zudf',\r\n templateUrl: './zudf.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zudf.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ButtonModule, ZdivComponent, LayoutModule, LabelModule, ReactiveFormsModule]\r\n})\r\nexport class ZudfComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n\r\n // formFields: any[]; // populate using field element.\r\n componentProperties = new ZComponentProperties();\r\n initialDataValue: any;\r\n componentPrefix: string;\r\n componentScopeName: string;\r\n displayElementModel: any;\r\n multiValueGroupGridValue: string[];\r\n loadedFieldsSequence: any;\r\n private subscription: Subscription;\r\n\r\n public readonly prefixValueOption = '_zudfmvgOptions';\r\n public readonly prefixDataSourceName = '_zudfmvgDataSource';\r\n public readonly prefixColumnFieldsName = '_zudfmvgColumnFields';\r\n public readonly prefixCustomAddButtonOnClick = '_CustomAddButtonOnClick';\r\n public readonly prefixCustomResetButtonOnClick = '_CustomResetButtonOnClick';\r\n public readonly prefixCustomRemoveButtonOnClick = '_CustomRemoveButtonOnClick';\r\n\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n private readonly toastService: ToastService,\r\n private readonly webApiService: WebApiService,\r\n private readonly componentErrorHandlerService: ComponentErrorHandlerService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n let obs: Observable<any> = of(this.data.Value);\r\n\r\n if (this.data.Value == undefined && this.data.FieldElementCode) {\r\n const fieldName = FieldUtils.getGroupValue(this.data.FieldElementCode, this.group);\r\n const fieldFormType = FieldUtils.getGroupValue(this.data.FieldElementFormType, this.group);\r\n const formResource = this.resourceApiService.getCustomResource(this.data.CustomResource);\r\n let isLoadViaAsset = false;\r\n if (this.data.loadViaAsset != undefined) {\r\n if (typeof this.data.loadViaAsset == 'string' && this.data.loadViaAsset.startsWith('group.')) {\r\n isLoadViaAsset = FieldUtils.getGroupValue(this.data.loadViaAsset, this.group);\r\n }\r\n else {\r\n isLoadViaAsset = this.data.loadViaAsset as boolean;\r\n }\r\n }\r\n\r\n if (fieldName) {\r\n if (isLoadViaAsset) {\r\n obs = this.getFieldElement_FormPage(fieldName, fieldFormType).pipe(\r\n map(fieldElement => {\r\n if (fieldElement) {\r\n return fieldElement.Code;\r\n }\r\n return [];\r\n })\r\n );\r\n }\r\n else {\r\n if (fieldFormType && fieldFormType == FormType.listField) {\r\n obs = this.fieldService.getListFieldByFieldElementName(fieldName, formResource);\r\n }\r\n else {\r\n obs = this.fieldService.getFormFieldCode(fieldName, 'FormField', this, 'fields', null, formResource);\r\n }\r\n }\r\n }\r\n }\r\n\r\n super.initComponent().pipe(\r\n switchMap(() => obs),\r\n switchMap((field) => {\r\n if (this.data.FieldElementCode) {\r\n // use obs value only if FieldElementCode is set. if not default as null.\r\n this.data.Value = field;\r\n }\r\n else {\r\n this.data.Value = null;\r\n }\r\n\r\n // Store initial data value and set component scope and prefix\r\n this.initialDataValue = this.data.Value;\r\n this.componentScopeName = 'zudf_' + this.data.Name;\r\n this.componentPrefix = 'zudf_' + this.data.Name;\r\n\r\n this.group[this.data.Name + 'Model'] = [];\r\n return this.loadForm();\r\n }),\r\n tap(() => {\r\n this.isLoading = false;\r\n })\r\n ).subscribe();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Renders the field element and sets up the form.\r\n */\r\n private loadForm(): Observable<any> {\r\n return of(true).pipe(\r\n // Set the SubType to 'zudf'.\r\n tap(() => {\r\n this.data.SubType = 'zudf';\r\n }),\r\n // Create a new group for the field and set up the form.\r\n tap(() => {\r\n // Create a new ZGroup for the field if one doesn't already exist.\r\n if (!this.group[this.componentScopeName]) {\r\n this.group[this.componentScopeName] = new ZGroup();\r\n }\r\n\r\n // Declare a new zModel object for the ZGroup.\r\n const zudfScopeGroup = this.group[this.componentScopeName];\r\n zudfScopeGroup.zModel = {};\r\n\r\n // Render the field element.\r\n this.renderFieldElement(this.data.Value);\r\n\r\n // Set the form for the ZGroup scope.\r\n if (this.data.Value) {\r\n // If Value is not null, bind the existing form.\r\n zudfScopeGroup.form = this.form;\r\n } else {\r\n // If Value is null, create a new form with an empty form control.\r\n const formControl: { [key: string]: UntypedFormControl } = {};\r\n zudfScopeGroup.form = new UntypedFormGroup(formControl);\r\n }\r\n }),\r\n // Set the formFields property for display.\r\n tap(() => {\r\n // this.formFields = Object.assign([], this.data.Value);\r\n\r\n DebugUtils.appendConsoleWatchList(this.group, `group.${this.componentScopeName}.zModel`);\r\n\r\n // Call the after<Field>Loaded function if it exists in the group.\r\n const fieldName = 'after' + (this.data.Name.charAt(0).toUpperCase() + this.data.Name.slice(1)) + 'Loaded';\r\n if (this.group) {\r\n if (this.group[fieldName]) {\r\n this.group[fieldName](this.group);\r\n }\r\n }\r\n\r\n // set Field div class\r\n // Replaced with: this.fieldService.patchFieldProperty(field);\r\n // ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n })\r\n );\r\n }\r\n\r\n public setFormControlValidation(formControlName: string, validator: any) {\r\n debugger;\r\n }\r\n\r\n /**\r\n * Renders field elements based on a JSON string.\r\n * @param group The ZGroup object to which the field elements will be added.\r\n * @param jsonString The JSON string representing the field elements.\r\n */\r\n public renderFieldElementByJsonString(group: ZGroup, jsonString: string, fieldElementName: string = ''): void {\r\n // Parse the JSON string into an array of field elements.\r\n const fieldElementMasterCodeJsonArray = JSON.parse(jsonString);\r\n\r\n // Render the field elements.\r\n this.renderFieldElement(fieldElementMasterCodeJsonArray, fieldElementName);\r\n }\r\n\r\n //#region Display model\r\n /**\r\n * Sets the display model for a zudf (zero-utility data field) element.\r\n *\r\n * @param {any} value - The value to use for the display model.\r\n */\r\n public setDisplayModel(value: any) {\r\n // Replace the whole display model with the new value\r\n if (value) {\r\n // Clear the form control\r\n this.clearFormControl();\r\n\r\n // Make a deep copy of the value to avoid any unwanted reference errors\r\n this.displayElementModel = DataUtils.deepClone(value);\r\n\r\n // Render the field element based on the new display model\r\n this.renderFieldElement(this.displayElementModel);\r\n }\r\n else {\r\n // If the value is invalid, log a warning message\r\n console.warn('Invalid value used for render zudf ' + this.data.Name);\r\n }\r\n }\r\n\r\n /**\r\n * Updates a value in the display element model at the specified flat index.\r\n * @param {*} value - The new value to be set.\r\n * @param {string} flatIndex - The flat index indicating the location in the display element model where the value should be updated.\r\n */\r\n public updateDisplayModel(value: any, flatIndex: string) {\r\n DataUtils.updateArrayObjectByFlatIndex(this.displayElementModel, flatIndex, value);\r\n this.updateFormField();\r\n //this.cdr.detectChanges();\r\n }\r\n\r\n /**\r\n * Appends a value to the display element model at the specified flat index.\r\n * @param {*} value - The value to be appended.\r\n * @param {string} flatIndex - The flat index indicating the location in the display element model where the value should be appended.\r\n */\r\n public appendToDisplayModel(value: any, flatIndex: string) {\r\n // Append to display model means it will insert the form control based on flat index.\r\n if (flatIndex.length >= 3) {\r\n flatIndex.substring(0, flatIndex.length - 2);\r\n }\r\n\r\n const selectedRecord = DataUtils.getFromArrayObjectByFlatIndex(this.displayElementModel, flatIndex);\r\n selectedRecord.Value.push(value);\r\n }\r\n\r\n /**\r\n * Returns a deep copy of the display element model.\r\n * @returns {any} A deep copy of the display element model.\r\n */\r\n public getDisplayModel() {\r\n return JSON.parse(JSON.stringify(this.displayElementModel));\r\n }\r\n\r\n /**\r\n * Removes all elements from the display element model and clears the form control.\r\n */\r\n public removeAllDisplayModel() {\r\n this.displayElementModel = [];\r\n this.clearFormControl();\r\n }\r\n\r\n /**\r\n * Removes an element from the display element model at the specified flat index and updates the form field.\r\n * @param {string} flatIndex - The flat index indicating the location in the display element model where the element should be removed.\r\n */\r\n public removeElementFromDisplayModel(flatIndex: string) {\r\n DataUtils.removeArrayObjectByFlatIndex(this.displayElementModel, flatIndex);\r\n this.updateFormField();\r\n\r\n // TODO: remove from zmodel\r\n //delete this.group[this.componentScopeName].zModel[''];\r\n }\r\n //#endregion\r\n\r\n /**\r\n * Appends a form control to the form and the display element model.\r\n * @param {ZField} fieldData - The data for the form control to be appended.\r\n */\r\n public appendFormControl(fieldData) {\r\n // Append form control means it will just insert the form control at the end.\r\n fieldData.Name = this.generateFormControlName(fieldData.Name, fieldData['containerName']);\r\n const formControls = {};\r\n\r\n formControls[fieldData.Name] = new UntypedFormControl(\r\n this.group[this.componentScopeName].zModel[fieldData.Name]\r\n );\r\n\r\n this.form.addControl(fieldData.Name, formControls[fieldData.Name]);\r\n\r\n if (!this.data.Value) {\r\n console.log('formField ' + this.data.Name + ' is undefined');\r\n }\r\n\r\n this.displayElementModel = this.displayElementModel ?? [];\r\n this.displayElementModel.push(fieldData);\r\n this.updateFormField();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**\r\n * Renders field elements as form controls in a new form group.\r\n * @param {any} fieldElements - The field elements to be rendered.\r\n */\r\n public renderFieldElement(fieldElements: any, fieldElementName: string = '') {\r\n this.clearZModel();\r\n\r\n if (fieldElements) {\r\n this.loadedFieldsSequence = {};\r\n const formControls = {};\r\n fieldElements = this.generateFormControls(fieldElements, formControls);\r\n\r\n // Unsubscribe from previous subscription if exists\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // Render form controls to new form group\r\n this.form = new UntypedFormGroup(formControls);\r\n this.data.Value = fieldElements;\r\n this.group[this.componentScopeName].form = this.form;\r\n this.group[this.componentScopeName]['loadedFieldsSequence'] = this.loadedFieldsSequence;\r\n\r\n // Subscribe to componentLoaded$ event\r\n this.subscription = this.fieldService.getComponentLoaded$('zudf').subscribe(() => {\r\n // All components have finished loading\r\n\r\n const zudfGroup = this.group[this.componentScopeName];\r\n if (zudfGroup['linkedComponent']) {\r\n zudfGroup['linkedComponent'].forEach(item => {\r\n const linkedComponentSegments = item.value.split('_');\r\n const parentComponentName = linkedComponentSegments.slice(0, 2).join('_') + '_' + item.linkedComponent;\r\n const parentComponent = ComponentUtils.getComponentByValue(this.group, parentComponentName);\r\n const childComponent = ComponentUtils.getComponentByValue(this.group, item.value);\r\n\r\n if (parentComponent && childComponent) {\r\n const originalSelectOptions = childComponent.data['originalSelectOptions'] ?? Object.assign([], childComponent.data.SelectOptions);\r\n const filteredSelectionOptions = originalSelectOptions.filter(option => option.parentExpression == zudfGroup.zModel[parentComponentName]);\r\n\r\n // Manually patch the component form control value\r\n const zudfForm = zudfGroup.form as UntypedFormGroup;\r\n const componentFormControl = zudfForm.controls[item.value] as UntypedFormControl;\r\n if (componentFormControl) {\r\n childComponent.setSelectOption(filteredSelectionOptions);\r\n componentFormControl.patchValue(zudfGroup.zModel[item.value]);\r\n\r\n this.cdr.detectChanges();\r\n }\r\n else {\r\n console.log('Unable to get formcontrol for ' + item.value);\r\n console.log(zudfForm);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // need to call back field element \"<field name>_loaded\"\r\n if (fieldElementName != '') {\r\n if (this.group[fieldElementName + '_loaded']) {\r\n this.group[fieldElementName + '_loaded'](this.group);\r\n }\r\n }\r\n\r\n // To consider: Trigger the \"onchange\" event or perform any other necessary actions here\r\n });\r\n }\r\n }\r\n\r\n private generateFormControls(fieldArray: any, formControls: { [key: string]: UntypedFormControl }, containerName?: string, isMultiValueGroup = false, fieldValueGrouped = false, index = '') {\r\n fieldArray.forEach((field, i) => {\r\n const fieldIndex = index ? `${index}.${i + 1}` : `${i}`;\r\n\r\n this.fieldService.patchFieldProperty(field);\r\n if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n if (['zgrid', 'ztree', 'zimg', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n console.warn(\"FormControl - invalid field value\", field.Value);\r\n }\r\n }\r\n else {\r\n const zudfGroup = this.group[this.componentScopeName];\r\n\r\n if (Array.isArray(field.Value)) {\r\n // insert multivaluegroup to the card value if true\r\n const fieldValueGrouped = field.Type == ComponentType.grouping ? true : false;\r\n this.loadedFieldsSequence[fieldIndex] = {\r\n name: field.MultiValuedGroup ? `${this.generateFormControlName(field.Name)}${this.prefixValueOption}` : `${this.generateFormControlName(field.Name)}`,\r\n label: field.Title,\r\n type: field.Type,\r\n isMultiValueGroup: field.MultiValuedGroup ?? false,\r\n isGrouped: false,\r\n isVisible: field.Visible ?? false,\r\n isRequired: field.IsRequired ?? false,\r\n isReadOnly: field.ReadOnly ?? false,\r\n dataSourceType: field.zudfDataSourceType ?? null //value aka manual, user, resource aka resource\r\n };\r\n\r\n if (field.MultiValuedGroup) {\r\n this.setMultiValueGroup(field);\r\n }\r\n this.generateFormControls(field.Value, formControls, field.Name, field.MultiValuedGroup, fieldValueGrouped, fieldIndex);\r\n }\r\n else {\r\n // before generate FormControl, we need to add 2 attribute to the field when render.\r\n // this for later on, we can easily know this field belong to which zudf and under which container.\r\n if (containerName) {\r\n field['containerName'] = containerName;\r\n zudfGroup[containerName] ??= [];\r\n }\r\n\r\n const isFormControl = FieldUtils.isFormControl(field);\r\n const isVisible = FieldUtils.resolveFormControlVisibility(this, field);\r\n const isRequired = FieldUtils.resolveFormControlRequired(this, field);\r\n\r\n if (isFormControl === true) {\r\n this.loadedFieldsSequence ??= {};\r\n\r\n if (field.Type === 'zuiselectmultiple') {\r\n this.fieldService.incrementComponentCounter('zudf');\r\n }\r\n field.Name = this.generateFormControlName(field.Name, containerName);\r\n if (field.Value) {\r\n field.Value = this.generateFormControlName(field.Value, containerName);\r\n }\r\n\r\n this.loadedFieldsSequence[fieldIndex] = {\r\n name: field.Name,\r\n label: field.Label,\r\n type: field.Type,\r\n isMultiValueGroup: isMultiValueGroup,\r\n isGrouped: fieldValueGrouped,\r\n isVisible: field.Visible ?? false,\r\n isRequired: field.IsRequired ?? false,\r\n isReadOnly: field.ReadOnly ?? false,\r\n dataSourceType: field.zudfDataSourceType ?? null //value aka manual, user, resource aka resource\r\n };\r\n\r\n if (containerName) {\r\n if (!zudfGroup[containerName].includes(field.Value)) {\r\n zudfGroup[containerName].push(field.Value)\r\n }\r\n }\r\n\r\n // set the list of dropdown option to the variable\r\n if (this.isDropdownType(field.Type) && field.ZDataOptionName && field.DropdownOptions) {\r\n this.group.zData[field.ZDataOptionName] = Object.assign([], eval('this.' + field.DropdownOptions));\r\n }\r\n\r\n if (this.isDropdownType(field.Type) && field.zudfLinkedComponent) {\r\n // keep a list of linked Component, later will be used in onChange at inputfieldbase.\r\n zudfGroup['linkedComponent'] ??= [];\r\n\r\n zudfGroup['linkedComponent'].push({\r\n value: field.Value,\r\n linkedComponent: field.zudfLinkedComponent\r\n });\r\n\r\n // keep a copy of SelectOptions to originalSelectOptions(same as onchange)\r\n // clear the SelectionOption since it wont be used when first init, until parent dropdown option been selected.\r\n field['originalSelectOptions'] = Object.assign([], field.SelectOptions);\r\n field.SelectOptions = [];\r\n }\r\n\r\n // auto append current user to the zmodel base on field element attribute \"zudfSetDefaultUser\"\r\n if (field.zudfSetDefaultUser) {\r\n zudfGroup['fieldRequiredDefaultUser'] ??= [];\r\n\r\n // keep a list of default user need to be filled in the scope\r\n zudfGroup['fieldRequiredDefaultUser'].push({\r\n fieldName: field.Name,\r\n childFields: field.ChildFields\r\n });\r\n }\r\n\r\n // validator for the component\r\n const validators: ValidatorFn[] = ValidationUtils.getFieldValidators(field, isVisible, isRequired, this.group);\r\n formControls[field.Value] = new UntypedFormControl(\r\n zudfGroup.zModel[field.Value],\r\n validators\r\n );\r\n if (FieldUtils.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ValidationUtils.getCCFieldValidators(field, isVisible, isRequired);\r\n formControls[field.CCValue] = new UntypedFormControl(\r\n zudfGroup.zModel[field.CCValue],\r\n ccValidators\r\n );\r\n }\r\n // onchange handling?\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n return fieldArray;\r\n }\r\n\r\n /**\r\n * Removes the form controls from the form group and resets the component's data and display element model.\r\n *\r\n * @returns {void}\r\n */\r\n public clearFormControl() {\r\n // Remove each form control from the form group\r\n if (this.data.Value && this.data.Value.length > 0) {\r\n this.data.Value.forEach(data => {\r\n this.form.removeControl(data.Value);\r\n });\r\n }\r\n\r\n // Reset the component's data and display element model\r\n this.data.Value = this.initialDataValue;\r\n this.displayElementModel = [];\r\n }\r\n\r\n /**\r\n * Returns the form fields for the component.\r\n *\r\n * @returns {object[]} - An array of form field objects.\r\n */\r\n public getFormControl() {\r\n return this.data.Value;\r\n }\r\n\r\n /**\r\n * Sets the zModel values of a form group based on the provided model data.\r\n *\r\n * @param {ZGroup} [group=this.group] - The form group to update.\r\n * @param {object} modelData - The model data to apply to the form group.\r\n * @returns {void}\r\n */\r\n public setFormFieldzModel(group = this.group, modelData) {\r\n // Add the component prefix to the model data property names\r\n const patchedModelData = this.addZModelPropertyPrefix(modelData);\r\n\r\n // Update the zModel values of the form group\r\n Object.assign(group[this.componentScopeName].zModel, patchedModelData);\r\n\r\n // Update grid values for any arrays in the model data base on kcard component.\r\n for (const model in patchedModelData) {\r\n if (Array.isArray(patchedModelData[model])) {\r\n const gridValue = model.endsWith(this.prefixValueOption) ? model : `${model}${this.prefixValueOption}`;\r\n let gridDataSource = model;\r\n\r\n if (model.endsWith(this.prefixValueOption)) {\r\n gridDataSource = model.slice(0, -this.prefixValueOption.length);\r\n }\r\n\r\n gridDataSource += this.prefixDataSourceName;\r\n //const component = ZComponentHelper.getComponentByValue(this.group, model);\r\n //if (component?.data?.Type === 'kcard' || component?.data?.Type === 'zgrid') {\r\n // Update the data source for the grid\r\n group[gridDataSource] = patchedModelData[model];\r\n\r\n // Update the grid value\r\n if (group[gridValue]) {\r\n group[gridValue].setData(group[gridDataSource]);\r\n }\r\n else {\r\n console.log(`Unable to find zudf gridValue: ${gridValue}`)\r\n }\r\n //}\r\n\r\n }\r\n }\r\n\r\n // Update the form group model\r\n const formGroup = this.form;\r\n formGroup.patchValue(group[this.componentScopeName].zModel);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**\r\n * Add the component prefix to property names in an object.\r\n *\r\n * @param {*} modelData - The object to update.\r\n * @param {*} [containerPrefix] - Optional parameter indicating the prefix to use for properties in nested objects.\r\n * @returns {*} The updated object.\r\n */\r\n private addZModelPropertyPrefix(modelData: any, containerPrefix?: any): any {\r\n // Create a new object to store the updated data\r\n const updatedModelData = {};\r\n\r\n if (typeof modelData === 'string' || typeof modelData === 'number' || DataUtils.isNullUndefinedEmpty(modelData)) {\r\n return modelData;\r\n }\r\n\r\n // Loop through each property in the input object\r\n for (const propertyName in modelData) {\r\n const dataValue = modelData[propertyName];\r\n\r\n // Check if the property value is an array\r\n if (Array.isArray(dataValue)) {\r\n // Handle arrays recursively\r\n const updatedArray = [];\r\n\r\n // Loop through each element in the array\r\n for (const arrayElement of dataValue) {\r\n // Recursively call this method to update the properties of each element in the array\r\n const updatedElement = this.addZModelPropertyPrefix(arrayElement, propertyName);\r\n\r\n // Add the updated element to the array\r\n updatedArray.push(updatedElement);\r\n }\r\n\r\n // Add the updated array to the output object\r\n let prefixedPropertyName;\r\n\r\n if (containerPrefix) {\r\n prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${containerPrefix}_${propertyName}`;\r\n } else {\r\n prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n }\r\n\r\n updatedModelData[prefixedPropertyName] = updatedArray;\r\n }\r\n else if (typeof dataValue === 'object' && !dataValue) {\r\n // Handle nested objects recursively\r\n const updatedNestedObject = this.addZModelPropertyPrefix(dataValue, propertyName);\r\n\r\n // Add the updated nested object to the output object\r\n const prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n updatedModelData[prefixedPropertyName] = updatedNestedObject;\r\n }\r\n else {\r\n // Add the property to the output object with the component prefix\r\n let prefixedPropertyName;\r\n if (containerPrefix) {\r\n prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${containerPrefix}_${propertyName}`;\r\n } else {\r\n prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n }\r\n updatedModelData[prefixedPropertyName] = dataValue;\r\n }\r\n }\r\n\r\n // Return the updated object\r\n return updatedModelData;\r\n }\r\n\r\n public getZModelAsString() {\r\n return JSON.stringify(this.getZModel());\r\n }\r\n\r\n ComponentIsVisible(field: ZField): any {\r\n return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n }\r\n\r\n public setEnable = (status: boolean) => {\r\n this.componentProperties.isReadOnly = !status;\r\n }\r\n\r\n public setVisible = (status: boolean) => {\r\n this.componentProperties.isVisible = status;\r\n this.data.Visible = status;\r\n }\r\n\r\n public setRequire = (status: boolean) => {\r\n this.componentProperties.isRequired = status;\r\n ValidationUtils.toggleFieldValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n\r\n if (this.data.Type === 'ztexteditor') {\r\n ValidationUtils.toggleFieldValidator(status, this.group, this.data.Value, this.componentProperties, ValidationUtils.validateRequiredIfNotBlankAndNoHtml);\r\n }\r\n else {\r\n ValidationUtils.toggleFieldValidator(status, this.group, this.data.Value, this.componentProperties, ValidationUtils.validateRequiredIfNotBlank);\r\n }\r\n }\r\n\r\n public getForm() {\r\n return this.form;\r\n }\r\n\r\n /**\r\n * Generates the name of a form control based on its type, name, and container name.\r\n * @param {string} controlName - The name of the form control.\r\n * @param {string} containerName - The name of the container that the form control is in.\r\n * @returns {string} The generated name of the form control.\r\n */\r\n public generateFormControlName(controlName: string, containerName?: string) {\r\n let mainPrefix = [this.data.Type, this.data.Name, containerName ?? null].filter(Boolean).join('_');\r\n if (this.data.IsGenerateFormControlNameByContainerName != undefined && this.data.IsGenerateFormControlNameByContainerName == false) {\r\n mainPrefix = [this.data.Type, this.data.Name].filter(Boolean).join('_');\r\n }\r\n\r\n // Check if name has been prefixed.\r\n if (controlName.includes(mainPrefix)) {\r\n return controlName;\r\n }\r\n else {\r\n // We try to split the name and use the last segment.\r\n // Sometimes the control name can be without the container name, so we split and use the new main prefix.\r\n const controlNameSegment = controlName.split('_');\r\n controlName = controlNameSegment[controlNameSegment.length - 1];\r\n }\r\n\r\n return [mainPrefix, controlName].join('_');\r\n }\r\n\r\n /**\r\n * Appends a prefix to the names and values of fields recursively.\r\n * @param {ZField[]} fields - The fields to be prefixed.\r\n * @param {any} prefix - The prefix to be added.\r\n */\r\n private appendPrefix(fields: ZField[], prefix: any) {\r\n fields.forEach(field => {\r\n if (Array.isArray(field.Value)) {\r\n this.appendPrefix(field.Value, prefix);\r\n }\r\n else {\r\n field.Name = [prefix, field.Name].join('_');\r\n if (field.Type != 'zbuttons') {\r\n field.Value = [prefix, field.Value].join('_');\r\n }\r\n field.SubType = prefix;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Updates the form fields with the display element model.\r\n */\r\n private updateFormField() {\r\n this.data.Value = this.displayElementModel;\r\n }\r\n\r\n /**\r\n * Get the value of a container model in the form.\r\n * @param {string} containerName - The name of the container to retrieve the value from.\r\n * @returns {Object} - An object containing the container model values.\r\n */\r\n public getContainerModelValue(containerName: string): Object {\r\n // Get the container element and create an empty object for the model values.\r\n const containerElement = this.group[this.componentScopeName][containerName];\r\n const modelValue = {};\r\n\r\n // Flag to keep track if all required fields in the group are valid.\r\n let validGroupFields = true;\r\n\r\n // Loop through each element in the container and retrieve its value from the zModel.\r\n for (let i = 0; i < containerElement.length; i++) {\r\n const element = containerElement[i];\r\n const elementComponent = ComponentUtils.getComponentByValue(this.group, element);\r\n let zModelValue = this.group[this.componentScopeName].zModel[element];\r\n\r\n // Check if the element is required and has a value, if not show an error message.\r\n if (elementComponent.componentProperties.isRequired && DataUtils.isNullUndefinedEmpty(zModelValue)) {\r\n this.toastService.show(elementComponent.data.Label + ' is required field. Please fill in all the required fields before adding.', 'top', true, 3000, 'danger');\r\n validGroupFields = false;\r\n return {};\r\n }\r\n\r\n // Check if Dropdown Type, change zModelValue to display text.\r\n if (this.isDropdownType(elementComponent.data.Type)) {\r\n const dropdownOptions = elementComponent.getItemsData();\r\n dropdownOptions.forEach(option => {\r\n if (option[elementComponent.itemValueField] === zModelValue) {\r\n zModelValue = option[elementComponent.itemTextField]\r\n }\r\n });\r\n }\r\n\r\n // Add the value to the model object.Please fill in all the required fields before adding\r\n modelValue[element] = zModelValue;\r\n };\r\n\r\n // If there are invalid fields in the group, return an empty model object.\r\n if (!validGroupFields) {\r\n return {};\r\n }\r\n\r\n // Return the model object with the container values.\r\n return modelValue;\r\n }\r\n\r\n /**\r\n * Clears the value of all field elements inside a container.\r\n * @param {string} containerName - The name of the container whose fields will be cleared.\r\n */\r\n public clearContainerFieldElementValue(containerName: string) {\r\n // Get the container element from the component's group\r\n const containerElement = this.group[this.componentScopeName][containerName];\r\n // Iterate through each field element in the container\r\n containerElement.forEach(element => {\r\n // Set the model value of the field element to null, and force update the view\r\n this.setModelValue(element, null, true);\r\n\r\n const form = this.group[this.componentScopeName].form;\r\n Object.keys(form.controls).forEach((key) => {\r\n const control = form.controls[key];\r\n control.markAsPristine();\r\n control.markAsUntouched();\r\n });\r\n });\r\n }\r\n\r\n //#region ----------==================== Multi Value Group ====================----------*/\r\n /**\r\n * Sets up a multi-value group, which is a grid of fields that can have multiple rows.\r\n * @param data - The configuration data for the multi-value group.\r\n * @param dataIndex - The index of the data in the displayModel. Optional, used when updating existing data.\r\n */\r\n public setMultiValueGroup(data: any, dataIndex?: any) {\r\n // Need to declare name, value, datasource, columnfields attribute for grid.\r\n const name = this.generateFormControlName(data.Name);\r\n const gridValueName = `${name}${this.prefixValueOption}`;\r\n const gridDataSourceName = `${name}${this.prefixDataSourceName}`;\r\n const gridColumnFieldsName = `${name}${this.prefixColumnFieldsName}`;\r\n\r\n // Generate a unique name for the multi-value group scope.\r\n const multiValueGroupScopeName = `mvg_${data.Name}`;\r\n\r\n this.group['mvglist'] ??= [];\r\n\r\n if (!this.group['mvglist'].includes(name)) {\r\n this.group['mvglist'].push(name);\r\n }\r\n\r\n // Create a property in the group object for the multi-value group.\r\n this.group[multiValueGroupScopeName] = [];\r\n\r\n // Store the grid value name to be used in getZModel to get the grid data.\r\n this.multiValueGroupGridValue = this.multiValueGroupGridValue ?? [];\r\n this.multiValueGroupGridValue.push(gridValueName);\r\n\r\n // Manually add attributes to the grid element to speed up loading.\r\n const element = {\r\n \"AddCommandButtonName\": \"Add\",\r\n \"AllowExport\": false,\r\n \"AllowGridDataExport\": false,\r\n \"AllowMultiSelect\": false,\r\n \"AllowRowSelect\": false,\r\n \"AllowSaveState\": false,\r\n \"ColumnFields\": 'group.' + gridColumnFieldsName,\r\n \"DataSource\": 'group.' + gridDataSourceName,\r\n \"DisableCellClickHandler\": true,\r\n \"DisableGenerateColumnByForm\": true,\r\n \"DivClass\": 'col-xs-12 col-sm-12 col-md-12 col-lg-12',\r\n \"EnableCustomAddCommand\": true,\r\n \"EnableCustomRemoveCommand\": true,\r\n \"EnableCustomResetCommand\": true,\r\n \"EnableSaveGridState\": false,\r\n \"ExternalPagination\": false,\r\n \"HeightReduce\": 250,\r\n \"LimitFields\": false,\r\n \"Name\": name,\r\n \"PageSize\": 20,\r\n \"PageSizes\": false,\r\n \"ResourceURL\": true,\r\n \"SelectOptions\": false,\r\n \"ShowGridEditButton\": false,\r\n \"SubType\": \"zudf\",\r\n \"Type\": \"zgrid\",\r\n \"Value\": 'group.' + gridValueName,\r\n \"Visible\": true,\r\n \"WidthReduce\": 500,\r\n \"DisableAutoAppendGridDateFilterCol\": true\r\n }\r\n\r\n // Create a property in the group object based on the above declaration, except Name, and also insert column fields.\r\n // Use the grouping value as the column and skip inserting any container type.\r\n const containerName = data.Name;\r\n const groupFieldElements = [];\r\n\r\n data.Value.forEach(field => {\r\n const fieldModel = Object.assign({}, field);\r\n fieldModel['DisplayName'] = fieldModel.Label;\r\n fieldModel.Name = this.generateFormControlName(fieldModel['Name'], containerName);\r\n fieldModel.Value = this.generateFormControlName(fieldModel['Value'], containerName);\r\n\r\n groupFieldElements.push(fieldModel);\r\n\r\n // This is for tally and remove zmodel when getmodel().\r\n // We're not supposed to save zmodel field value since its value is supposed to be added to the grid.\r\n this.group[multiValueGroupScopeName].push(fieldModel.Value);\r\n\r\n });\r\n this.group[gridDataSourceName] = [];\r\n this.group[gridColumnFieldsName] = groupFieldElements;\r\n\r\n // Create grid column based on field elements and insert them into the grid.\r\n this.group[`${name}${this.prefixCustomAddButtonOnClick}`] = this.captureContainerFieldValueToModel.bind(this, this.group, gridValueName, gridDataSourceName, containerName);\r\n this.group[`${name}${this.prefixCustomResetButtonOnClick}`] = this.clearContainerRelatedFieldValue.bind(this, this.group, containerName);\r\n this.group[`${name}${this.prefixCustomRemoveButtonOnClick}`] = this.removeGridRow.bind(this, gridValueName, gridDataSourceName);\r\n\r\n if (dataIndex) {\r\n this.appendToDisplayModel(element, dataIndex);\r\n }\r\n else {\r\n data.Value.push(element);\r\n }\r\n }\r\n\r\n private captureContainerFieldValueToModel(group: ZGroup, gridValue: any, gridDataSource: any, containerName: string) {\r\n const containerFieldValue = this.getContainerModelValue(containerName);\r\n let allowToSetData = false;\r\n\r\n for (let key in containerFieldValue) {\r\n if (!DataUtils.isNullUndefinedEmpty(containerFieldValue[key])) {\r\n allowToSetData = true;\r\n break; // exit the loop early since the flag is already true\r\n }\r\n }\r\n\r\n if (allowToSetData && (Object.keys(containerFieldValue).length !== 0 || containerFieldValue.constructor !== Object)) {\r\n // get container model value, set to group grid datasource\r\n group[gridDataSource].push(containerFieldValue);\r\n\r\n // set datasource to grid\r\n group[gridValue].setData(this.group[gridDataSource]);\r\n\r\n // clear container field value\r\n this.clearContainerRelatedFieldValue(group, containerName);\r\n }\r\n else {\r\n this.toastService.show('To add the record, please enter/select at least one field in this section.', 'top', true, 3000, 'warning');\r\n }\r\n }\r\n\r\n private clearContainerRelatedFieldValue(group: ZGroup, containerName: string) {\r\n // after set to grid, clear the zmodel.\r\n this.clearContainerFieldElementValue(containerName);\r\n }\r\n\r\n private removeGridRow(gridValue: any, gridDataSource: any, dataItem: any, index: any) {\r\n this.group[gridDataSource].splice(index, 1);\r\n\r\n // set datasource to grid\r\n this.group[gridValue].setData(this.group[gridDataSource]);\r\n }\r\n //#endregion\r\n\r\n private isDropdownType(data: any) {\r\n const componentDataType = typeof data === 'string' ? data : data.Type.toLowerCase();\r\n\r\n if (componentDataType == ComponentType.dropdown || componentDataType == ComponentType.zuiselectmultiple || componentDataType == ComponentType.zselectmultiple) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Validates the form and shows an error message if it is invalid.\r\n * Returns true if the form is valid, otherwise false.\r\n */\r\n public validateAndShowErrorMessage() {\r\n const fg = this.form;\r\n\r\n // If the form is invalid, clear any errors in container fields and show the error message.\r\n if (!fg.valid) {\r\n // Loop through all the form controls and reset any errors that belong to a container field\r\n for (const key of Object.keys(fg.controls)) {\r\n this.setContainerFieldErrorAsNull(fg, key);\r\n }\r\n\r\n // Check is the formgroup value again.\r\n if (fg.valid) {\r\n return true;\r\n }\r\n\r\n // Show the error message for the form\r\n this.componentErrorHandlerService.showFormGroupErrorMessage(this.group, fg);\r\n\r\n // Return false to indicate that the form is not valid\r\n return false;\r\n }\r\n\r\n // Return true to indicate that the form is valid\r\n return true;\r\n }\r\n\r\n /**\r\n * Resets the errors of a container field in a FormGroup.\r\n *\r\n * @param fg The FormGroup object containing the field.\r\n * @param key The name of the field in the FormGroup.\r\n */\r\n private setContainerFieldErrorAsNull(fg: UntypedFormGroup, key: string): void {\r\n const controlNameSegments = key.split('_');\r\n\r\n if (controlNameSegments.length <= 3) {\r\n // Field is not inside a container, so we skip it\r\n return;\r\n }\r\n\r\n // no mvglist, direct return. dont need do anything.\r\n if (!this.group['mvglist']) {\r\n return;\r\n }\r\n\r\n // if container but not multi value group = true, we skip it.\r\n const container = [controlNameSegments[0], controlNameSegments[1], controlNameSegments[2]].join('_');\r\n if (!this.group['mvglist'].includes(container)) {\r\n return;\r\n }\r\n\r\n const control = fg.get(key);\r\n\r\n if (!control) {\r\n // If the control is not inside a container, skip it.\r\n return;\r\n }\r\n\r\n // return if formcontrol is valid.\r\n if (control.status === 'VALID') {\r\n return;\r\n }\r\n\r\n const controlErrors = control.errors;\r\n\r\n if (controlErrors) {\r\n // Set the control's errors to null.\r\n control.setErrors(null);\r\n }\r\n }\r\n\r\n /**\r\n * Validates a form and returns its ZModel if it is valid.\r\n * @param skipRemoveMvgFieldValue Whether to skip removing the values of mvg fields from the zModel object.\r\n * @returns The form's ZModel if it is valid, or undefined otherwise.\r\n */\r\n public getValidatedFormZModel(skipRemovePrefix?: boolean, skipRemoveMvgFieldValue?: boolean) {\r\n const isValidForm = this.validateAndShowErrorMessage();\r\n\r\n if (isValidForm) {\r\n return this.getZModel(skipRemovePrefix, skipRemoveMvgFieldValue);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Retrieves a modified version of the zModel object, with mvg (multi value group) fields removed and property prefixes removed.\r\n * @param skipRemovePrefix Whether to skip removing the default property prefix.\r\n * @param skipRemoveMvgFieldValue Whether to skip removing the values of mvg fields from the zModel object.\r\n * @returns The modified zModel object.\r\n */\r\n public getZModel(skipRemovePrefix?: boolean, skipRemoveMvgFieldValue?: boolean) {\r\n const zModel = this.group[this.componentScopeName].zModel;\r\n\r\n // Loop through all properties in the zModel object.\r\n for (const zModelProperty in zModel) {\r\n if (Object.prototype.hasOwnProperty.call(zModel, zModelProperty)) {\r\n const zModelPropertySegments = zModelProperty.split('_');\r\n\r\n // Check if the property is part of a multi value group.\r\n if (zModelPropertySegments.length > 3) {\r\n // The third segment of the property name is the container name.\r\n const containerName = zModelPropertySegments[2];\r\n // Construct the name of the multi value group.\r\n const multiValueGroupScopeName = `mvg_${containerName}`;\r\n\r\n // If the multi value group exists and contains the property, remove the value of the property from the zModel object.\r\n if (this.group[multiValueGroupScopeName]) {\r\n const mvgField = this.group[multiValueGroupScopeName].find((record) => record === zModelProperty);\r\n if (mvgField) {\r\n zModel[zModelProperty] = skipRemoveMvgFieldValue ? zModel[zModelProperty] : null;\r\n this.form.patchValue(zModel);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // important: Remove property prefixes from the zModel object if skipRemovePrefix is not true (by default remove prefix)\r\n const patchedModelData = skipRemovePrefix ? zModel : this.removeZModelPropertyPrefix(zModel);\r\n\r\n // If there are multi value group grid values, extract the grid data and add it to the corresponding container in the modified zModel object.\r\n if (this.multiValueGroupGridValue) {\r\n this.multiValueGroupGridValue.forEach((multiValueGroupGridName) => {\r\n // Extract the container name from the grid name.\r\n const containerName = skipRemovePrefix ? multiValueGroupGridName.split('_').join('_') : multiValueGroupGridName.split('_')[2];\r\n\r\n // Extract the grid data and remove property prefixes if skipRemovePrefix is not true.\r\n const multiValueGroupGrid = this.group[multiValueGroupGridName] as ZGrid;\r\n const gridData = multiValueGroupGrid.getGridData().map((data) => skipRemovePrefix ? data : this.removeZModelPropertyPrefix(data, true));\r\n\r\n // Add the grid data to the corresponding container in the modified zModel object.\r\n if (gridData.length > 0) {\r\n patchedModelData[containerName] = gridData;\r\n }\r\n });\r\n }\r\n\r\n return patchedModelData;\r\n }\r\n\r\n /**\r\n * Set the value of a model in the form group.\r\n *\r\n * @param {string} modelName The name of the model to set.\r\n * @param {*} modelValue The value to set for the model.\r\n * @param {boolean} [skipPrefix] Optional parameter indicating whether to skip the component prefix.\r\n * @returns {void}\r\n */\r\n public setModelValue(modelName: string, modelValue: any, skipPrefix?: boolean) {\r\n // Get the zModel object from the form group\r\n const zModels = this.group[this.componentScopeName].zModel;\r\n // If skipPrefix is false or undefined, prepend the component prefix to the model name\r\n const zModelName = skipPrefix ? modelName : this.componentPrefix + '_' + modelName;\r\n // Set the value of the model in the zModel object\r\n zModels[zModelName] = modelValue;\r\n\r\n // Get the form group as a FormGroup object\r\n let fg: UntypedFormGroup = this.group[this.componentScopeName].form as UntypedFormGroup;\r\n\r\n // Patch the form group with the updated zModel object\r\n fg.patchValue(zModels);\r\n }\r\n\r\n /**\r\n * Remove the component prefix from property names in the zModel object.\r\n *\r\n * @param {*} zModel The zModel object.\r\n * @param {boolean} [getOnlyFieldName] Optional parameter indicating whether to only return the field name without the prefix.\r\n * @returns {*} The updated zModel object.\r\n */\r\n private removeZModelPropertyPrefix(zModel: any, getOnlyFieldName?: boolean) {\r\n // Create an empty object to store the updated zModel data\r\n const patchedModelData = {};\r\n\r\n // Loop through each property in the zModel object\r\n for (let prop in zModel) {\r\n if (Object.prototype.hasOwnProperty.call(zModel, prop)) {\r\n // Split the property name by underscores\r\n const propSegment = prop.split('_');\r\n // Get the property name without the component prefix\r\n const propertyName = getOnlyFieldName ? propSegment[propSegment.length - 1] : prop.replace(this.componentPrefix + '_', '');\r\n\r\n // Add the property to the updated zModel object\r\n patchedModelData[propertyName] = zModel[prop];\r\n }\r\n }\r\n\r\n // Return the updated zModel object\r\n return patchedModelData;\r\n }\r\n\r\n /**\r\n * Clears the zModel property of the group in the component scope and resets the multiValueGroupGridValue array.\r\n *\r\n * @returns {void}\r\n */\r\n public clearZModel() {\r\n this.group[this.componentScopeName].zModel = {};\r\n this.multiValueGroupGridValue = [];\r\n }\r\n\r\n public setMultiValueGroupButtonsEnabled(containerName: string, isEnabled: boolean) {\r\n const result = ComponentUtils.getComponent(this.group, `zgrid_${this.componentPrefix}_${containerName}`);\r\n if (result) {\r\n const properties = ['EnableCustomAddCommand', 'EnableCustomResetCommand', 'EnableCustomRemoveCommand'];\r\n for (const prop of properties) {\r\n result['data'][prop] = isEnabled;\r\n }\r\n }\r\n }\r\n\r\n //#region Load from local file\r\n private getFieldElement_FormPage(fieldElementFormName: string, formType = FormType.formField): Observable<any> {\r\n const param: AssetsNodeParam = {\r\n assetsRoute: AssetsRoutes.fields,\r\n assetsFolder: AssetsFolder.fieldelement,\r\n extension: AssetsAllowedExtension.json,\r\n params: new HttpParams()\r\n .set('name', fieldElementFormName)\r\n .set('type', formType)\r\n }\r\n\r\n return this.webApiService.assetsHttpNodeGet(param);\r\n }\r\n //#endregion\r\n}\r\n\r\nenum ComponentType {\r\n text = 'text',\r\n textarea = 'textarea',\r\n checkbox = 'checkbox',\r\n label = 'zlabel',\r\n date = 'date',\r\n zdatetime = 'zdatetime',\r\n zuidatetime = 'zuidatetime',\r\n number = 'number',\r\n znumeric = 'znumeric',\r\n email = 'email',\r\n file = 'file',\r\n price = 'price',\r\n website = 'website',\r\n dropdown = 'dropdown',\r\n zuiselectmultiple = 'zuiselectmultiple',\r\n zselectmultiple = 'zselectmultiple',\r\n grouping = 'kcard',\r\n button = 'zbuttons',\r\n grid = 'zgrid'\r\n}\r\n","<div style=\"padding: 15px\" *ngIf=\"data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"zudf-container\">\r\n <kendo-card *ngIf=\"data.Title\">\r\n <kendo-card-header>\r\n <div>\r\n <kendo-label class=\"card-header-title\">{{data.Title}}</kendo-label>\r\n </div>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <!-- <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formFields | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"{{field.Name}}\">\r\n </app-zformcontrol> -->\r\n <app-zdiv [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\"></app-zdiv>\r\n </kendo-card-body>\r\n </kendo-card>\r\n</div>\r\n\r\n<div *ngIf=\"!data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [style]=\"data.Style\" class=\"zudf-container\">\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n <!-- <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formFields | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"{{field.Name}}\">\r\n </app-zformcontrol> -->\r\n <app-zdiv [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\"></app-zdiv>\r\n </form>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ZComponent } from 'mmhglobal-zcore';\r\nimport { FieldBase } from '../../base/fieldbase.component';\r\n\r\n@Component({\r\n selector: 'app-zunknown',\r\n templateUrl: './zunknown.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zunknown.component.scss'],\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class ZunknownComponent extends FieldBase implements ZComponent, OnInit {\r\n\r\n constructor() { super(); }\r\n\r\n ngOnInit() { }\r\n}\r\n","<p>\r\n Unknown field Type => {{ data.Type}} >> {{data.Name}}\r\n</p>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { tap, of, switchMap } from \"rxjs\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { MainService } from \"../../../services/main.service\";\r\nimport {\r\n FontAweSomeService,\r\n DefaultMessage, ZComponent, ZField,\r\n ModelUtils\r\n} from \"mmhglobal-zcore\";\r\nimport { LayoutModule } from \"@progress/kendo-angular-layout\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { LabelModule } from \"@progress/kendo-angular-label\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\nimport { ZdivComponent } from \"../zdiv/zdiv.component\";\r\n\r\n@Component({\r\n selector: \"app-kcard\",\r\n templateUrl: \"./kcard.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./kcard.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, LayoutModule, LabelModule, ButtonModule, ZdivComponent]\r\n})\r\n\r\nexport class KcardComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n public myFormGroup: UntypedFormGroup;\r\n private initValue: any;\r\n private myModel: any;\r\n\r\n constructor(\r\n private readonly mainService: MainService,\r\n public readonly fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(\r\n tap(() => {\r\n this.componentService.setEditMode(this);\r\n this.getFieldValues();\r\n this.myModel = { ...this.group.zModel };\r\n this.isLoading = false;\r\n }),\r\n switchMap(() => {\r\n if (this.data.EditButtonVisible) {\r\n return super.translateToolBarItems();\r\n }\r\n return of([]);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public saveData() {\r\n const myGroup = { ...this.group };\r\n myGroup.zModel = this.myModel;\r\n\r\n this.mainService.updateModelObservable(null, myGroup, this.myFormGroup).subscribe(\r\n {\r\n next: (resp) => {\r\n if (resp) {\r\n this.initValue = this.myFormGroup.value;\r\n this.toggleEditMode();\r\n }\r\n },\r\n error: () => {\r\n this.mainService.handleError(DefaultMessage.updateFailContactAdmin);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public cancelEdit() {\r\n this.myFormGroup.reset(this.initValue);\r\n for (const key of Object.keys(this.initValue)) {\r\n ModelUtils.setFieldValueInModelAndFormWithDirty(key, this.initValue[key], this.group, true);\r\n }\r\n this.toggleEditMode();\r\n }\r\n\r\n private getFieldValues() {\r\n if (this.data.EditButtonVisible && Array.isArray(this.data.Value)) {\r\n const formControls: { [key: string]: UntypedFormControl } = {};\r\n this.getFormControls(this.data.Value, formControls);\r\n this.myFormGroup = new UntypedFormGroup(formControls);\r\n this.initValue = this.myFormGroup.value;\r\n\r\n this.data = JSON.parse(JSON.stringify(this.data));\r\n }\r\n }\r\n\r\n private getFormControls(fieldArray: Array<ZField>, formControls: { [key: string]: UntypedFormControl }) {\r\n fieldArray.forEach(field => {\r\n if (!(typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1)) {\r\n if (Array.isArray(field.Value)) {\r\n this.getFormControls(field.Value, formControls);\r\n } else if (this.form.controls[field.Value]) {\r\n formControls[field.Value] = this.form.controls[field.Value] as any;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"kcard-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\"\r\n [style]=\"componentProperties.containerStyle.style\"\r\n [class]=\"data.ComponentStyleType\">\r\n <kendo-card [ngClass]=\"getClass(null, data)\" [style]=\"componentProperties.containerStyle.style1\" [class]=\"data.ComponentStyleType\" class=\"e1tag-container-style1\">\r\n <kendo-card-header class=\"k-hstack card-header e1tag-container-style2\" *ngIf=\"data.Icon || data.Title\" [style]=\"componentProperties.containerStyle.style2\">\r\n <div kendoCardTitle class=\"card-header-content e1tag-container-style3\" [style]=\"componentProperties.containerStyle.style3\">\r\n <div class=\"left-panel e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\">\r\n <fa-icon\r\n *ngIf=\"componentProperties.icon\"\r\n class=\"card-icon e1tag-container-style6\"\r\n [icon]=\"getFontAwesome(componentProperties.icon.toString(), fontAweSomeService)\"\r\n [style]=\"componentProperties.containerStyle.style6\"></fa-icon>\r\n <kendo-label *ngIf=\"componentProperties.title\" class=\"card-title e1tag-container-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n {{ componentProperties.title }}\r\n </kendo-label>\r\n </div>\r\n <div class=\"right-panel e1tag-container-style5\" *ngIf=\"data.EditButtonVisible\" [style]=\"componentProperties.containerStyle.style5\">\r\n <div class=\"read-mode-btns\" *ngIf=\"!data['_EditMode'].value\">\r\n <button kendoButton fillMode=\"outline\" size=\"medium\" (click)=\"toggleEditMode()\">\r\n <fa-icon icon=\"edit\"></fa-icon>\r\n <span class=\"btn-label ion-text-capitalize\">{{ getToolBarItemLabelName(\"Edit\") }}</span>\r\n </button>\r\n </div>\r\n <div class=\"edit-mode-btns\" *ngIf=\"data['_EditMode'].value\">\r\n <button kendoButton fillMode=\"solid\" size=\"medium\" (click)=\"saveData()\">\r\n <fa-icon icon=\"check\"></fa-icon>\r\n <span class=\"btn-label ion-text-capitalize\">{{ getToolBarItemLabelName(\"Save\") }}</span>\r\n </button>\r\n <button kendoButton fillMode=\"clear\" size=\"small\" (click)=\"cancelEdit()\">\r\n <span class=\"btn-label ion-text-capitalize\">{{ getToolBarItemLabelName(\"Cancel\") }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <app-zdiv class=\"e1tag-container-style8\" [style]=\"componentProperties.containerStyle.style8\" [data]=\"data\" [form]=\"myFormGroup ? myFormGroup : form\" [group]=\"group\"></app-zdiv>\r\n </kendo-card-body>\r\n </kendo-card>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { CommonModule } from \"@angular/common\";\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { LabelSettings, ProgressBarAnimation, ProgressBarModule } from \"@progress/kendo-angular-progressbar\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\nimport { FontAweSomeService, ZComponent, FieldUtils} from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n selector: 'app-zprogressbar',\r\n templateUrl: './zprogressbar.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zprogressbar.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, ProgressBarModule, FontAwesomeModule]\r\n})\r\n\r\nexport class ZprogressbarComponent extends FieldBase implements ZComponent, OnInit {\r\n private readonly animation: ProgressBarAnimation = {\r\n duration: 1000,\r\n };\r\n\r\n private readonly label: LabelSettings = {\r\n visible: true,\r\n format: \"percent\",\r\n position: \"start\",\r\n };\r\n\r\n public value;\r\n public minValue = 0;\r\n public maxValue = 100;\r\n public options = {\r\n indeterminate: false,\r\n animation: this.animation,\r\n label: this.label,\r\n progressStyles: null,\r\n emptyStyles: null,\r\n };\r\n\r\n constructor(\r\n public readonly fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n\r\n this.value = this.group.zModel[this.data.Value];\r\n this.minValue = FieldUtils.getGroupEvalValue.call(this, this.data.MinValue) || this.minValue;\r\n this.maxValue = FieldUtils.getGroupEvalValue.call(this, this.data.MaxValue) || this.maxValue;\r\n\r\n if (this.data.Options) {\r\n const optionType = typeof (this.data.Options);\r\n if (optionType === 'object') {\r\n Object.assign(this.options, this.data.Options);\r\n } else if (optionType === 'string') {\r\n const optionValue = FieldUtils.getGroupEvalValue.call(this, this.data.Options);\r\n if (typeof (optionValue) === 'object') {\r\n Object.assign(this.options, optionValue);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n {{data.Label}}\r\n </div>\r\n <kendo-progressbar [min]=\"minValue\" \r\n [max]=\"maxValue\" \r\n [indeterminate]=\"options.indeterminate\" \r\n [value]=\"value\" \r\n class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" \r\n [progressCssStyle]=\"options.progressStyles\"\r\n [emptyCssStyle]=\"options.emptyStyles\" \r\n [label]=\"options.label\" \r\n [animation]=\"options.animation\">\r\n </kendo-progressbar>\r\n</div>\r\n","\r\n\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { ZComponent, FontAweSomeService } from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FieldBase } from \"../../base/fieldbase.component\";\r\n\r\n@Component({\r\n selector: \"app-spinner\",\r\n templateUrl: \"./spinner.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"../page-loader/page-loader.component.scss\", \"./spinner.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule]\r\n})\r\nexport class SpinnerComponent extends FieldBase implements ZComponent, OnInit {\r\n\r\n constructor(\r\n public fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n}\r\n","<div\r\n *ngIf=\"!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible\"\r\n class=\"loader e1tag-style\"\r\n [style]=\"componentProperties.style.style\"\r\n [ngClass]=\"data.Class\"></div>\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { delay, ignoreElements, map, switchMap, tap } from 'rxjs/operators';\r\nimport { RuleModel, QueryBuilderComponent, ColumnsModel, TemplateColumn, RuleChangeEventArgs, QueryBuilderModule } from '@syncfusion/ej2-angular-querybuilder';\r\nimport { DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\r\nimport { getComponent, createElement } from '@syncfusion/ej2-base';\r\nimport { Query } from '@syncfusion/ej2-data';\r\nimport { CheckBox } from '@syncfusion/ej2-buttons';\r\nimport {\r\n FieldService, ZComponentHelper, ZComponentProperties, ZField, ZGroup,\r\n DefaultPageSettingParams, WebApiService, ResourceApiService, ComponentUtils, DataUtils, PageSettingParams\r\n} from 'mmhglobal-zcore';\r\nimport { FieldBase } from '../../base/fieldbase.component';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-sfquerybuilder',\r\n templateUrl: './sfquerybuilder.component.html',\r\n styleUrls: ['../../../styles/component.scss', './sfquerybuilder.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, LabelModule, QueryBuilderModule]\r\n})\r\nexport class SfquerybuilderComponent extends FieldBase implements OnInit {\r\n @ViewChild('querybuilder') qryBldrObj: QueryBuilderComponent;\r\n @Input() data: ZField;\r\n @Input() group: ZGroup;\r\n @Input() form: UntypedFormGroup;\r\n\r\n qbItems = {};\r\n\r\n public componentProperties = new ZComponentProperties();\r\n public issfLoaded: boolean = false;\r\n public queryCtrl: any;\r\n public allowRuleset: boolean = true;\r\n public allowCollapse: boolean = false;\r\n public persistValueOnFieldChange: boolean = false;\r\n public isDisabled: boolean = false;\r\n public rule: any;\r\n public filters: any;\r\n private fields: any;\r\n public displayRule: any = '';\r\n\r\n private loadedDropdownOptions = [];\r\n\r\n public sfData: Object[];\r\n public importRules: RuleModel;\r\n public sdFilter: ColumnsModel[] = [];\r\n public sfQBTemplate: TemplateColumn;\r\n\r\n //#region Operator\r\n private readonly equalOperator = { value: 'equal', key: 'Equals' };\r\n private readonly notequalOperator = { value: 'notequal', key: 'Not Equals' };\r\n private readonly startswithOperator = { value: 'startswith', key: 'Start With' };\r\n private readonly endswithOperator = { value: 'endswith', key: 'End With' };\r\n private readonly containsOperator = { value: 'contains', key: 'Contains' };\r\n private readonly isemptyOperator = { value: 'isempty', key: 'Is Empty' };\r\n private readonly isnotemptyOperator = { value: 'isnotempty', key: 'Is Not Empty' };\r\n private readonly isnullOperator = { value: 'isnull', key: 'Is Null' };\r\n private readonly isnotnullOperator = { value: 'isnotnull', key: 'Is Not Null' };\r\n private readonly inOperator = { value: 'in', key: 'In' };\r\n private readonly notinOperator = { value: 'notin', key: 'Not In' }\r\n private readonly greaterthanOperator = { value: 'greaterthan', key: 'Greater Than' };\r\n private readonly greaterthanorequalOperator = { value: 'greaterthanorequal', key: 'Greater Than Or Equals' };\r\n private readonly lessthanOperator = { value: 'lessthan', key: 'Less Than' };\r\n private readonly lessthanorequalOperator = { value: 'lessthanorequal', key: 'Less Than Or Equals' };\r\n\r\n public inOperators: string[] = ['in', 'notin'];\r\n public dropdownOperators: any = [\r\n this.equalOperator,\r\n this.notequalOperator,\r\n this.inOperator,\r\n this.notinOperator,\r\n this.isnullOperator,\r\n this.isnotnullOperator\r\n ];\r\n public stringOperators: any = [\r\n this.equalOperator,\r\n this.notequalOperator,\r\n this.startswithOperator,\r\n this.endswithOperator,\r\n this.containsOperator,\r\n this.isemptyOperator,\r\n this.isnotemptyOperator,\r\n this.isnullOperator,\r\n this.isnotnullOperator\r\n ];\r\n public integerOperators: any = [\r\n this.equalOperator,\r\n this.notequalOperator,\r\n this.greaterthanOperator,\r\n this.greaterthanorequalOperator,\r\n this.lessthanOperator,\r\n this.lessthanorequalOperator,\r\n this.isnullOperator,\r\n this.isnotnullOperator\r\n ];\r\n public dateOperators: any = [\r\n this.equalOperator,\r\n this.notequalOperator,\r\n this.greaterthanOperator,\r\n this.greaterthanorequalOperator,\r\n this.lessthanOperator,\r\n this.lessthanorequalOperator,\r\n this.isnullOperator,\r\n this.isnotnullOperator\r\n ];\r\n public booleanOperators: any = [\r\n this.equalOperator,\r\n this.notequalOperator,\r\n this.isnullOperator,\r\n this.isnotnullOperator\r\n ];\r\n //#endregion\r\n public selectionComponentList = [];\r\n\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly webApiService: WebApiService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n ComponentUtils.setComponentProperties(this);\r\n ComponentUtils.registerComponent(this);\r\n\r\n of(true).pipe(\r\n switchMap(_ => {\r\n return this.beforeLoadField(this.data);\r\n }),\r\n tap(data => {\r\n this.data = data as ZField;\r\n }),\r\n switchMap(_ => {\r\n return this.loadQueryBuilder();\r\n })\r\n ).subscribe(() => {\r\n // Where to update operator syntax\r\n // 1. E1 - queryBuilderTemplate2\r\n // 2. shared folder > helper > querybuilder-fieldinfo-helper.ts\r\n // 3. patch db data with small capital letter\r\n\r\n //this.issfLoaded = true;\r\n });\r\n }\r\n\r\n private beforeLoadField(fieldElementData: any) {\r\n let beforeLoadField = fieldElementData['BeforeLoadField'];\r\n if (beforeLoadField) {\r\n beforeLoadField = beforeLoadField.replace('modalGroup.', 'group.');\r\n const callFunc = eval('this.' + beforeLoadField);\r\n\r\n if (typeof callFunc === \"function\") {\r\n const newFunc = callFunc.bind(this);\r\n return newFunc(event, this, fieldElementData);\r\n }\r\n }\r\n return of(fieldElementData);\r\n }\r\n\r\n private loadQueryBuilder(): Observable<any> | Observable<boolean> {\r\n if (this.data['AllowCollapse'] === true) {\r\n this.allowCollapse = this.data['AllowCollapse'];\r\n }\r\n\r\n if (this.data['AllowRuleset'] === false) {\r\n this.allowRuleset = this.data['AllowRuleset'];\r\n }\r\n\r\n if (this.data['Filters']) {\r\n this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['Filters']\r\n );\r\n }\r\n\r\n this.fields = this.fieldService.getFormFieldCode(this.data.Value, \"FormField\", null, null);\r\n\r\n try {\r\n return this.fields.pipe(\r\n tap((data: []) => {\r\n\r\n data.forEach(async (field: any) => {\r\n this.renderComponentType(field);\r\n });//end foreach\r\n\r\n this.issfLoaded = true;\r\n })\r\n )\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n return of(false);\r\n }\r\n }\r\n\r\n private async renderComponentType(field: any, fieldTitle?: string, fieldName?: string): Promise<void> {\r\n let componentLabel = field.SubType ? field.Label : field.Label ?? field.Name;\r\n componentLabel = !DataUtils.isNullUndefinedEmpty(fieldTitle) ? \"[\" + fieldTitle + \"] \" + field.Label : !DataUtils.isNullUndefinedEmpty(field.Label) ? field.Label : field.Name;\r\n\r\n let componentField = !DataUtils.isNullUndefinedEmpty(fieldName) ? fieldName + \"_\" + field.Value : field.Value;\r\n\r\n if (field.Type === 'category' || field.Type === 'multiselect' || field.Type === 'zuiselectmultiple') {\r\n this.sdFilter.push({\r\n field: componentField,\r\n label: componentLabel,\r\n type: 'string',\r\n operators: this.dropdownOperators,\r\n template: await this.generateColumnSelection(field),\r\n })\r\n }\r\n else if (field.Type === 'date' || field.Type === 'zdate' || field.Type === 'zdatetime' || field.Type === 'zuidatetime' || field.Type === 'zshortdate') {\r\n this.sdFilter.push({\r\n field: componentField,\r\n label: componentLabel,\r\n type: 'date',\r\n operators: this.dateOperators,\r\n })\r\n }\r\n else if (field.Type === 'number' || field.Type === 'znumeric' || field.Type === 'numeric') {\r\n this.sdFilter.push({\r\n field: componentField,\r\n label: componentLabel,\r\n type: 'number',\r\n operators: this.integerOperators,\r\n })\r\n }\r\n else if (field.Value === 'boolean' || field.Value === 'zcheckbox') {\r\n this.sdFilter.push({\r\n field: componentField,\r\n label: componentLabel,\r\n type: 'boolean',\r\n operators: this.booleanOperators,\r\n template: await this.generateColumnCheckbox(field.Name, false)\r\n })\r\n }\r\n else if (field.Type === 'kcard') {\r\n if (field.Value.length > 0) {\r\n field.Value.forEach(async (item: any) => {\r\n this.renderComponentType(item, field.Title, field.Name);\r\n })\r\n }\r\n }\r\n else if (field.Type != 'zlabel') {\r\n this.sdFilter.push({\r\n field: componentField,\r\n label: componentLabel,\r\n type: 'string',\r\n operators: this.stringOperators,\r\n })\r\n }\r\n\r\n this.sdFilter.sort((a, b) => a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1);\r\n }\r\n\r\n //#region Generate component\r\n private generateColumnCheckbox(label: string, value: boolean): TemplateColumn {\r\n return {\r\n create: () => {\r\n return createElement('input', { attrs: { 'type': 'checkbox' } });\r\n },\r\n destroy: (args: { elementId: string }) => {\r\n (getComponent(document.getElementById(args.elementId), 'checkbox') as CheckBox).destroy();\r\n },\r\n write: (args: { elements: Element, values: string }) => {\r\n const boxObj: CheckBox = new CheckBox({\r\n label: label,\r\n checked: value,\r\n change: (e: any) => {\r\n this.qryBldrObj.notifyChange(value, e.event.target);\r\n }\r\n });\r\n boxObj.appendTo('#' + args.elements.id);\r\n }\r\n };\r\n }\r\n\r\n private generateColumnSelection(fieldElementData: any): TemplateColumn {\r\n return {\r\n\r\n // Creates the custom component\r\n create: () => {\r\n // Additional filter set in the page\r\n if (this.data['Filters']) {\r\n this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['Filters']\r\n );\r\n }\r\n\r\n return createElement('input', { attrs: { 'type': 'text' } }); // 'display: none'\r\n },\r\n\r\n // Destroy the custom component\r\n destroy: (args: { elementId: string }) => {\r\n if (args['elements']) {\r\n let multiSelect: MultiSelect = (getComponent(document.getElementById(args.elementId), 'multiselect') as MultiSelect);\r\n if (multiSelect) {\r\n multiSelect.destroy();\r\n }\r\n let dropdown: DropDownList = (getComponent(document.getElementById(args.elementId), 'dropdownlist') as DropDownList);\r\n if (dropdown) {\r\n dropdown.destroy();\r\n }\r\n\r\n const selectOptions = fieldElementData['SelectOptions'];\r\n if (selectOptions) {\r\n const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n const prefixResourceURLChecking = selectOptionsResourceURL + '_' + args.elementId;\r\n\r\n if (this.loadedDropdownOptions.includes(prefixResourceURLChecking)) {\r\n this.loadedDropdownOptions = this.removeArrayItem(this.loadedDropdownOptions, prefixResourceURLChecking);\r\n }\r\n }\r\n }\r\n },\r\n\r\n // Wire events for the custom component.\r\n write: (args: { elements: Element, values: string[] | string, operator: string }) => {\r\n //origin\r\n if (fieldElementData['ValueOptions']) {\r\n // convert to property name used in the component rendering\r\n const optionList: { [name: string]: Object }[] = [];\r\n fieldElementData['ValueOptions'].forEach((item: any) => {\r\n optionList.push({\r\n text: item['Name'],\r\n value: item['Value']\r\n });\r\n })\r\n\r\n const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n selectionComponent.appendTo('#' + args.elements.id);\r\n }\r\n\r\n // manual dropdown or zudf manual dropdown\r\n else if (fieldElementData['SelectOptions'] && Array.isArray(fieldElementData['SelectOptions'])) {\r\n // convert to property name used in the component rendering\r\n const optionList: { [name: string]: Object }[] = [];\r\n fieldElementData['SelectOptions'].forEach((item: any) => {\r\n optionList.push({\r\n text: item['text'],\r\n value: item['value']\r\n });\r\n })\r\n\r\n const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n selectionComponent.appendTo('#' + args.elements.id);\r\n }\r\n\r\n // zudf ResourceURL / Common Master dropdown\r\n else {\r\n const selectOptions = fieldElementData['SelectOptions'];\r\n const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n\r\n // ResourceURL dropdown\r\n if (selectOptionsResourceURL) {\r\n const prefixResourceURLChecking = selectOptionsResourceURL + '_' + args.elements.id;\r\n\r\n if (!this.loadedDropdownOptions.includes(prefixResourceURLChecking)) {\r\n this.loadedDropdownOptions.push(prefixResourceURLChecking);\r\n\r\n if (this.filters) {\r\n selectOptions['Filters'] = this.filters;\r\n }\r\n\r\n const param: PageSettingParams = {\r\n ...DefaultPageSettingParams,\r\n columns: selectOptions['Columns'],\r\n pageSize: selectOptions['PageSize'],\r\n sortColumnName: selectOptions['SortColumnName'],\r\n sortOrder: selectOptions['SortOrder'],\r\n }\r\n\r\n param.filters += selectOptions['Filters'];\r\n\r\n // Need delay 400ms if not 3rd segment (value) will not be rendered.\r\n this.webApiService.httpPost$(this.resourceApiService.getPageUrl(selectOptionsResourceURL), param).pipe(\r\n delay(400),\r\n map((resp) => {\r\n const optionList = [];\r\n resp.dataSet.forEach((item: any) => {\r\n optionList.push({\r\n text: item[selectOptions['Name']],\r\n value: item[selectOptions['Value']]\r\n });\r\n })\r\n\r\n const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n selectionComponent.appendTo('#' + args.elements.id);\r\n\r\n //#region used for updateSelectionOption\r\n const existingIndex = this.selectionComponentList.findIndex(\r\n (item) => item.componentId === args.elements.id\r\n );\r\n\r\n if (existingIndex !== -1) {\r\n // Object with the same componentId exists, replace resourceUrl\r\n this.selectionComponentList[existingIndex].resourceUrl = selectOptionsResourceURL;\r\n } else {\r\n // Object with componentId doesn't exist, push a new object\r\n this.selectionComponentList.push({\r\n resourceUrl: selectOptionsResourceURL,\r\n componentId: args.elements.id\r\n });\r\n }\r\n //#endregion\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n // zudf Common Master dropdown\r\n else if (fieldElementData.zudfDataSourceType && fieldElementData.zudfDataSourceType === \"resource\") {\r\n\r\n // extract zudf_dropdown from session storage\r\n const zudf_dropdown = sessionStorage.getItem(\"zudf_dropdown\") ? JSON.parse(sessionStorage.getItem(\"zudf_dropdown\")) : null;\r\n if (zudf_dropdown) {\r\n const optionList = [];\r\n\r\n zudf_dropdown.forEach(res => {\r\n const name = res.text.split(\"Options\")[0];\r\n if (fieldElementData.Label === name) {\r\n res.value.forEach(val => {\r\n optionList.push({\r\n text: val['Name'],\r\n value: val['Id']\r\n });\r\n })\r\n }\r\n })\r\n\r\n const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n selectionComponent.appendTo('#' + args.elements.id);\r\n }\r\n }\r\n\r\n // User List dropdown\r\n else if (fieldElementData.zudfDataSourceType && fieldElementData.zudfDataSourceType === \"user\") {\r\n const optionList = [];\r\n const userList = JSON.parse(sessionStorage?.getItem(\"userList\") ?? 'null');\r\n\r\n //const arrayTest = userList.map(({ SelectionName, Id }) => ({ text: SelectionName, value: Id }));\r\n userList.forEach((item: any) => {\r\n optionList.push({\r\n text: item['SelectionName'],\r\n value: item['Id']\r\n });\r\n })\r\n\r\n const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n selectionComponent.appendTo('#' + args.elements.id);\r\n }\r\n }\r\n }//end write\r\n }\r\n }\r\n\r\n public updateSelectionOption(resourceUrl: string, data: any): void {\r\n this.selectionComponentList.forEach(selectionComponent => {\r\n let multiSelect: MultiSelect = (getComponent(document.getElementById(selectionComponent.componentId), 'multiselect') as MultiSelect);\r\n if (multiSelect) {\r\n multiSelect.value = data;\r\n }\r\n let dropdown: DropDownList = (getComponent(document.getElementById(selectionComponent.componentId), 'dropdownlist') as DropDownList);\r\n if (dropdown) {\r\n this.fieldService.dataFormFields[this.data.Value].forEach(async (field: any) => {\r\n if (field.SelectOptions.ResourceURL === selectionComponent.resourceUrl) {\r\n const selectOptions = field['SelectOptions'];\r\n const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n const param = Object.assign({}, DefaultPageSettingParams);\r\n\r\n if (this.data['Filters']) {\r\n this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n this,\r\n this.data['Filters']\r\n );\r\n }\r\n\r\n if (this.filters) {\r\n selectOptions['Filters'] = this.filters;\r\n }\r\n\r\n param.pageSize = selectOptions['PageSize'];\r\n param.columns = selectOptions['Columns'];\r\n param.filters += selectOptions['Filters'];\r\n param.sortColumnName = selectOptions['SortColumnName'];\r\n param.sortOrder = selectOptions['SortOrder'];\r\n\r\n this.webApiService.httpPost$(this.resourceApiService.getPageUrl(selectOptionsResourceURL), param).pipe(\r\n map((resp) => {\r\n const optionList = [];\r\n resp.dataSet.forEach((item: any) => {\r\n optionList.push({\r\n text: item[selectOptions['Name']],\r\n value: item[selectOptions['Value']]\r\n });\r\n })\r\n\r\n dropdown.dataSource = optionList;\r\n })\r\n ).subscribe();\r\n }\r\n });\r\n }\r\n })\r\n }\r\n\r\n private removeArrayItem<T>(arr: Array<T>, value: T): Array<T> {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n }\r\n\r\n private generateSelectionComponent(args: any, optionList: any): MultiSelect | DropDownList {\r\n if (this.inOperators.indexOf(args.operator) > -1) {\r\n return new MultiSelect({\r\n dataSource: optionList,\r\n fields: { text: 'text', value: 'value' },\r\n value: args.values as string[],\r\n mode: 'CheckBox',\r\n change: (e: any) => {\r\n this.qryBldrObj.notifyChange(e.value, e.element);\r\n },\r\n // set contains search by default\r\n filtering: (e: any) => {\r\n this.onFiltering(e, optionList);\r\n }\r\n });\r\n }\r\n else {\r\n return new DropDownList({\r\n allowFiltering: true, // search box appear\r\n dataSource: optionList,\r\n fields: { text: 'text', value: 'value' },\r\n value: args.values as string,\r\n change: (e: any) => {\r\n e.value !== null ? this.qryBldrObj.notifyChange(e.itemData.value, e.element) : ignoreElements;\r\n },\r\n // set default search by 'contains'\r\n filtering: (e: any) => {\r\n this.onFiltering(e, optionList);\r\n }\r\n });\r\n }\r\n }\r\n //#endregion\r\n\r\n public onFiltering(e: any, optionList: any): void {\r\n // load overall data when search key empty.\r\n if (e.text === '') {\r\n e.updateData(this.data);\r\n }\r\n else {\r\n // Define array data\r\n let searchData = optionList;\r\n\r\n //Bind the filter event\r\n let query = new Query();\r\n\r\n //frame the query based on search string with filter type.\r\n query = (e.text != \"\") ? query.where(\"text\", \"contains\", e.text, true) : query;\r\n\r\n //pass the filter data source, filter query to updateData method.\r\n e.updateData(searchData, query);\r\n }\r\n };\r\n\r\n public setQueryValue(savedData: any): void {\r\n if (savedData) {\r\n this.qryBldrObj.setRules(savedData);\r\n this.updateRule({ rule: savedData });\r\n }\r\n }\r\n\r\n public getResult(): RuleModel {\r\n return this.qryBldrObj.getRules();\r\n }\r\n\r\n public updateRule(args: RuleChangeEventArgs): void {\r\n this.displayRule = JSON.stringify(args.rule, null, 12);\r\n }\r\n\r\n public onChange(): void {\r\n this.updateRule({ rule: this.qryBldrObj.getValidRules(this.qryBldrObj.rule) });\r\n }\r\n}\r\n\r\n","<div class=\"qbcontainer\" *ngIf=\"!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible\">\r\n <ejs-querybuilder\r\n *ngIf=\"issfLoaded\"\r\n #querybuilder\r\n width=\"100%\"\r\n [dataSource]=\"sfData\"\r\n [columns]=\"sdFilter\"\r\n [rule]=\"importRules\"\r\n (ruleChange)=\"updateRule($event)\"\r\n (created)=\"onChange()\"></ejs-querybuilder>\r\n <div *ngIf=\"!data.HideShowResultPanel\">\r\n <br />\r\n <kendo-label>Result</kendo-label>\r\n <textarea class=\"output\" resizable=\"none\" [rows]=\"10\" style=\"border: 1px solid #d3d3d3; width: 100%\">{{ displayRule }}</textarea>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ContainerFieldBase } from '../../base/containerfieldbase.component';\r\nimport { FieldService, ZComponent, ZField, DataUtils, FieldUtils, ValidationUtils } from 'mmhglobal-zcore';\r\nimport { UntypedFormControl, ValidatorFn } from '@angular/forms';\r\nimport { ZdivComponent } from '../zdiv/zdiv.component';\r\n\r\n@Component({\r\n selector: 'app-zloop',\r\n templateUrl: './zloop.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zloop.component.scss'],\r\n standalone: true,\r\n imports: [ZdivComponent]\r\n})\r\n\r\nexport class ZloopComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n private readonly originalFieldNameField = 'OriNameForZloop';\r\n public clonedFields = [];\r\n private readonly clonedFormControlList = new Array<string>();\r\n private initField = {} as ZField;\r\n private readonly conponentTypesToNotUpdateValue = ['zbuttons'];\r\n\r\n constructor(\r\n private readonly fieldService: FieldService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.initField = DataUtils.deepClone(this.data);\r\n\r\n this.setupLoopingElement();\r\n super.initComponent().subscribe(() => { this.isLoading = false; });\r\n }\r\n\r\n public refreshFieldElement() {\r\n this.data = DataUtils.deepClone(this.initField);\r\n this.setupLoopingElement();\r\n }\r\n\r\n private setupLoopingElement() {\r\n if (this.data.LoopingElementConfig) {\r\n // Remove previously cloned fields from form controls (if any)\r\n if (this.clonedFormControlList.length > 0) {\r\n for (const fgName of this.clonedFormControlList) {\r\n this.group.form.removeControl(fgName);\r\n }\r\n }\r\n\r\n // Clone zloop's child\r\n this.clonedFields = this.cloneFieldElementChild(this.data);\r\n\r\n // Append cloned fields to group.fields for error message displaying\r\n this.group.clonedFields = DataUtils.deepClone(this.group.clonedFields || this.group.fields);\r\n const thisField = FieldUtils.getFieldFromFieldsByName(this.group.clonedFields, this.data[this.originalFieldNameField] ?? this.data.Name);\r\n thisField.Value = this.clonedFields;\r\n }\r\n }\r\n\r\n private cloneFieldElementChild(field: ZField): Array<ZField> {\r\n const loopingElementConfig = typeof field.LoopingElementConfig == 'string' ? FieldUtils.getGroupValue(field.LoopingElementConfig, this.group) : field.LoopingElementConfig;\r\n\r\n if (loopingElementConfig == undefined) {\r\n return field.Value;\r\n }\r\n let fieldToInsert = new Array<ZField>();\r\n for (let configIndex = 0; configIndex < loopingElementConfig.Count; configIndex++) {\r\n const clonedFields = DataUtils.deepClone(field.Value);\r\n this.updateFieldPropertiesToMakeThemDistinct(clonedFields, loopingElementConfig, configIndex);\r\n fieldToInsert = fieldToInsert.concat(clonedFields);\r\n }\r\n\r\n return fieldToInsert;\r\n }\r\n\r\n private updateFieldPropertiesToMakeThemDistinct(fields: Array<ZField>, loopingElementConfig: any, index: number) {\r\n for (const field of fields) {\r\n\r\n const elementConfig = loopingElementConfig.ToReplace.find(x => x.ElementName == field.Name) || loopingElementConfig.ToReplace.find(x => x.ElementName == field[this.originalFieldNameField]);\r\n const elementConfigProperty = elementConfig?.Property?.[index] ?? {};\r\n\r\n if (field.Type !== 'zloop') {\r\n field.Name = `${field.Name}_${index + 1}`;\r\n if (field.Label) {\r\n field.Label = `${field.Label}`;\r\n }\r\n\r\n if (Array.isArray(field.Value)) {\r\n this.updateFieldPropertiesToMakeThemDistinct(field.Value, loopingElementConfig, index);\r\n }\r\n else {\r\n if (elementConfigProperty.Value != undefined) {\r\n field.Value = elementConfigProperty.Value;\r\n }\r\n else if (!this.conponentTypesToNotUpdateValue.includes(field.Type)) {\r\n field.Value = `${field.Value}_${index + 1}`;\r\n }\r\n }\r\n }\r\n else {\r\n field[this.originalFieldNameField] = field.Name;\r\n }\r\n\r\n for (const key of Object.keys(elementConfigProperty)) {\r\n field[key] = elementConfigProperty[key];\r\n }\r\n\r\n this.setClonedFieldsToFormControls(field);\r\n }\r\n }\r\n\r\n private setClonedFieldsToFormControls(field: ZField) {\r\n if (!field.SubType) {\r\n this.fieldService.patchFieldProperty(field);\r\n\r\n if (typeof field.Value === 'string' && field.Value.indexOf('.') !== -1) {\r\n if (['zgrid', 'ztree', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n console.warn('FormControl - invalid field value', field.Value);\r\n }\r\n } else {\r\n const isFormControl = FieldUtils.isFormControl(field);\r\n const isVisible = FieldUtils.resolveFormControlVisibility(this, field);\r\n const isRequired = FieldUtils.resolveFormControlRequired(this, field);\r\n\r\n if (isFormControl === true) {\r\n const validators: ValidatorFn[] = ValidationUtils.getFieldValidators(field, isVisible, isRequired, this.group);\r\n this.group.form.addControl(field.Value, new UntypedFormControl(\r\n this.group.zModel[field.Value], validators\r\n ));\r\n this.clonedFormControlList.push(field.Value);\r\n\r\n if (FieldUtils.hasCCField(field.Type)) {\r\n const ccValidators: ValidatorFn[] = ValidationUtils.getCCFieldValidators(field, isVisible, isRequired);\r\n this.group.form.addControl(field.CCValue, new UntypedFormControl(\r\n this.group.zModel[field.CCValue], ccValidators\r\n ));\r\n this.clonedFormControlList.push(field.CCValue);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","<app-zdiv\r\n [style]=\"componentProperties.containerStyle.style\"\r\n class=\"e1tag-container-style\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n [group]=\"group\"\r\n [containerField]=\"containerField\"\r\n [childFields]=\"clonedFields\"></app-zdiv>\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ZComponent } from 'mmhglobal-zcore';\r\nimport { ContainerFieldBase } from '../../base/containerfieldbase.component';\r\nimport { Subscription, auditTime, tap } from 'rxjs';\r\nimport { LayoutModule, SplitterComponent } from '@progress/kendo-angular-layout';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ZdivComponent } from '../zdiv/zdiv.component';\r\nimport { PanelAreaFilter } from '../../../pipe/panel-area.pipe';\r\n\r\n@Component({\r\n selector: 'app-ksplitter',\r\n templateUrl: './ksplitter.component.html',\r\n styleUrls: ['../../../styles/component.scss', './ksplitter.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, LayoutModule, ZdivComponent, PanelAreaFilter]\r\n})\r\nexport class KsplitterComponent extends ContainerFieldBase implements ZComponent, OnInit, OnDestroy {\r\n @ViewChild(SplitterComponent) splitter: SplitterComponent;\r\n private readonly onSizeChangeSubscriptions = new Array<Subscription>();\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(tap(() => this.isLoading = false)).subscribe();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n for (const sub of this.onSizeChangeSubscriptions) {\r\n if (!sub.closed) {\r\n sub.unsubscribe();\r\n }\r\n }\r\n }\r\n\r\n public resizePanelByIndex(index: number, size: string) {\r\n const selectedPane = this.getPanelByIndex(index);\r\n if (!selectedPane) {\r\n return;\r\n }\r\n\r\n selectedPane.size = size;\r\n }\r\n\r\n public toggleCollapseStateByIndex(index: number, isCollapse?: boolean) {\r\n const selectedPane = this.getPanelByIndex(index);\r\n if (!selectedPane) {\r\n return;\r\n }\r\n\r\n selectedPane.collapsed = isCollapse ?? !selectedPane.collapsed;\r\n this.OnCollapse(null, this.data.PanelItems[index]);\r\n }\r\n\r\n private getPanelByIndex(index: number) {\r\n const selectedPane = this.splitter.panes.find((_, i) => i === index);\r\n if (!selectedPane) {\r\n console.warn(`No Panel at index ${index}`);\r\n }\r\n return selectedPane;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n for (const pane of this.splitter.panes) {\r\n this.onSizeChangeSubscriptions.push(pane.sizeChange.pipe(\r\n auditTime(1000),\r\n tap(() => {\r\n this.triggerEvent('container-OnSizeChange', this.data.OnSizeChange, null, { pane, index: (pane.order / 2) }); // ksplliter count the pane-splitter-line as pane\r\n })\r\n ).subscribe());\r\n }\r\n }\r\n}\r\n","<div class=\"ksplitter-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n <kendo-splitter #splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\">\r\n <kendo-splitter-pane *ngFor=\"let item of data.PanelItems; let i = index\"\r\n [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\" [collapsed]=\"item.isCollapse ?? false\"\r\n (collapsedChange)=\"OnCollapse($event, item)\">\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n [data]=\"data | panelAreaFilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </kendo-splitter-pane>\r\n </kendo-splitter>\r\n</div>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ContainerFieldBase } from '../../base/containerfieldbase.component';\r\nimport { DataSetResult, FieldUtils, FontAweSomeService, VirtualScrollOption, ZComponent } from 'mmhglobal-zcore';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { Observable, auditTime, delay, forkJoin, of, tap } from 'rxjs';\r\nimport { collapseAnimation, rotateAnimation } from '../../../animations/component-animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ZformcontrolComponent } from '../../others/zformcontrol/zformcontrol.component';\r\nimport { ContextMenuComponent } from '../../menu/context-menu/context-menu.component';\r\nimport { HtmlSanitizePipe } from '../../../pipe/htmlSanitize.pipe';\r\n\r\n@Component({\r\n selector: 'app-virtual-scroll',\r\n templateUrl: './virtual-scroll.component.html',\r\n styleUrls: ['../../../styles/component.scss', './virtual-scroll.component.scss'],\r\n animations: [\r\n collapseAnimation,\r\n rotateAnimation\r\n ],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, ScrollingModule,\r\n ZformcontrolComponent, ContextMenuComponent, HtmlSanitizePipe]\r\n})\r\n\r\n// Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)\r\n// Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)\r\n\r\nexport class VirtualScrollComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\r\n public collapsedGroupBy = []; // Used to define animation status\r\n public groupByValueToExpand = ''; // Used to define animation status\r\n public collapsedGroupBy_FirstNodeIndexList = new Array<number>(); // When collapse, need to retain the first node in the list so that the group by title will not be hidden\r\n private fullDataItems = [];\r\n public dataItems: Array<any> = [];\r\n public pageSize = 50;\r\n public pageFetched = [];\r\n public options: VirtualScrollOption;\r\n public footerFields = [];\r\n\r\n constructor(public readonly fontAweSomeService: FontAweSomeService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setupComponent();\r\n this.setupDataItems();\r\n this.setupFooter();\r\n super.initComponent().subscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n this.viewPort.scrolledIndexChange.pipe(\r\n auditTime(this.data.ScrollIndexChangeTimeDelay || 300),\r\n tap((currIndex: number) => {\r\n this.populateListData(currIndex);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public scrollToTop() {\r\n if (this.viewPort) {\r\n this.viewPort.scrollToIndex(0);\r\n }\r\n }\r\n\r\n private setupComponent() {\r\n this.collapsedGroupBy = [];\r\n if (this.data.Options) {\r\n if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {\r\n this.options = FieldUtils.getGroupValue(this.data.Options, this.group);\r\n } else {\r\n this.options = this.data.Options;\r\n }\r\n\r\n this.pageSize = this.options.pageSize ?? 50;\r\n this.options.loadingLabel = this.options.loadingLabel ?? '<div>Loading</div>';\r\n this.options.itemSize = this.options.itemSize ?? 50;\r\n this.options.minBufferPx = this.options.minBufferPx ?? (this.options.pageSize * this.options.itemSize);\r\n this.options.maxBufferPx = this.options.maxBufferPx ?? (this.options.pageSize * this.options.itemSize);\r\n this.options.isGroupByEnabled = this.options.isGroupByEnabled ?? !!this.options.groupBy;\r\n }\r\n }\r\n\r\n public appendData(dataItems: Array<any>) {\r\n this.fullDataItems = this.fullDataItems.concat(dataItems);\r\n this.pageSize = this.fullDataItems.length;\r\n this.computeDataItems();\r\n }\r\n\r\n private setupDataItems() {\r\n this.pageFetched = [];\r\n if (this.data.DataSetResult) {\r\n let dataSetResult = this.data.DataSetResult;\r\n if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {\r\n dataSetResult = FieldUtils.getGroupValue(dataSetResult, this.group);\r\n }\r\n this.setData(dataSetResult as DataSetResult);\r\n }\r\n else {\r\n this.dataItems = [];\r\n }\r\n }\r\n\r\n public setData(dataSetResult: DataSetResult) {\r\n if (!dataSetResult) {\r\n return;\r\n }\r\n\r\n this.pageFetched = [];\r\n if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {\r\n const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;\r\n if (cnt < 0) {\r\n console.error('DataItems cannot be more than total count.');\r\n return;\r\n }\r\n\r\n this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));\r\n const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;\r\n for (let i = 0; i <= pageNoToMarkAsFetch; i++) {\r\n this.pageFetched.push(i);\r\n }\r\n }\r\n else if (dataSetResult.totalCount) {\r\n this.dataItems = Array(dataSetResult.totalCount).fill(false);\r\n }\r\n else {\r\n this.dataItems = [];\r\n }\r\n this.fullDataItems = this.dataItems;\r\n this.computeDataItems();\r\n }\r\n\r\n private populateListData(currIndex: number) {\r\n const renderRange = this.viewPort.getRenderedRange();\r\n if (renderRange.start == renderRange.end && renderRange.end == 0) {\r\n return;\r\n }\r\n\r\n const startPageNo = Math.floor(renderRange.start / this.pageSize);\r\n const endPageNo = Math.floor((renderRange.end - 1) / this.pageSize);\r\n\r\n const obs = new Array<Observable<any>>();\r\n for (let i = startPageNo; i <= endPageNo; i++) {\r\n if (!this.pageFetched.includes(i)) {\r\n this.pageFetched.push(i);\r\n obs.push(\r\n this.fetchData(i).pipe(tap(([data, pageNo]) => {\r\n this.updateDataByIndex(pageNo * this.pageSize, data);\r\n }))\r\n );\r\n }\r\n }\r\n\r\n if (obs.length > 0) {\r\n forkJoin(obs).pipe(tap(res => {\r\n this.updateViewPortData();\r\n })).subscribe();\r\n }\r\n }\r\n\r\n private fetchData(pageNo): Observable<any> {\r\n if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {\r\n const onScrollEvent = FieldUtils.getGroupEvalValue.call(this, this.data.OnScroll);\r\n if (typeof onScrollEvent === 'function') {\r\n const callFunc = onScrollEvent.bind(this.group.ctrlScope);\r\n return forkJoin([callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize }), of(pageNo)] as Array<Observable<any>>);\r\n }\r\n }\r\n\r\n return of(false);\r\n }\r\n\r\n private updateDataByIndex(startingIndex: number, data: Array<any>) {\r\n for (let i = 0; i < data.length; i++) {\r\n this.dataItems[startingIndex + i] = data[i];\r\n }\r\n }\r\n\r\n private updateViewPortData() {\r\n this.dataItems = [...this.dataItems];\r\n }\r\n\r\n public setupFooter() {\r\n if (this.data.Value && Array.isArray(this.data.Value)) {\r\n this.footerFields = this.data.Value.filter(x => x.Section === 'footer');\r\n }\r\n }\r\n\r\n public getComponentOptions(): VirtualScrollOption {\r\n return this.options;\r\n }\r\n\r\n //#region Group By\r\n public getGroupByLabelTemplate(dataItem, options): string {\r\n if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {\r\n if (options.groupByLabelTemplate.startsWith('group.')) {\r\n const getTemplateFunc = FieldUtils.getGroupEvalValue.call(this, options.groupByLabelTemplate);\r\n\r\n if (getTemplateFunc) {\r\n return getTemplateFunc({\r\n dataItem,\r\n options,\r\n });\r\n }\r\n }\r\n else {\r\n return dataItem[options.groupByLabelTemplate];\r\n }\r\n }\r\n }\r\n\r\n public groupByOnClick(groupByValue: string) {\r\n if (!this.options.isGroupByCollapsible) {\r\n return;\r\n }\r\n\r\n // use collapse / expand to control animation sequence\r\n const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);\r\n\r\n const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);\r\n if (isToCollapse) {\r\n // to collapse (For animation: Change status, then append data)\r\n this.collapsedGroupBy.push(groupByValue);\r\n this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);\r\n of({}).pipe(delay(400),\r\n tap(() => {\r\n this.computeDataItems();\r\n })\r\n ).subscribe();\r\n }\r\n else {\r\n // to expand (For animation: Append data, then change status)\r\n this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);\r\n const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);\r\n this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));\r\n this.groupByValueToExpand = groupByValue;\r\n of({}).pipe(delay(0),\r\n tap(() => {\r\n this.collapsedGroupBy = tempCollapsedGroupBy;\r\n this.groupByValueToExpand = groupByValue;\r\n })\r\n ).subscribe();\r\n }\r\n }\r\n\r\n private computeDataItems() {\r\n this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));\r\n }\r\n\r\n public expandAll() {\r\n this.groupByValueToExpand = '';\r\n this.collapsedGroupBy = [];\r\n this.collapsedGroupBy_FirstNodeIndexList = [];\r\n this.computeDataItems();\r\n }\r\n\r\n public expandByGroupByValues(groupByValue: Array<string>) {\r\n this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));\r\n this.computeDataItems();\r\n }\r\n //#endregion\r\n\r\n //#region Selection\r\n public override onClick(event: any, dataItem: any): void {\r\n if (this.data.SelectOptions) {\r\n const targetValue = !dataItem.IsSelected;\r\n if (this.data.SelectOptions == 'single') {\r\n for (const dt of this.dataItems) {\r\n dt.IsSelected = false;\r\n }\r\n }\r\n dataItem.IsSelected = targetValue;\r\n }\r\n\r\n super.onClick(event, dataItem);\r\n }\r\n //#endregion\r\n}\r\n","<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { FontAweSomeService, ZComponent, ZComponentHelper, ZComponentOutputEvent } from \"mmhglobal-zcore\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { tap } from \"rxjs\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { MenusModule } from \"@progress/kendo-angular-menu\";\r\nimport { IndicatorsModule } from \"@progress/kendo-angular-indicators\";\r\n\r\n@Component({\r\n selector: \"app-kmenu\",\r\n templateUrl: \"./kmenu.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./kmenu.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, MenusModule, IndicatorsModule]\r\n})\r\nexport class KmenuComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n public menuItems = [];\r\n constructor(public readonly fontAweSomeService: FontAweSomeService\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().pipe(\r\n tap(() => {\r\n if (Array.isArray(this.data.menuItems)) {\r\n this.menuItems = this.data.menuItems;\r\n }\r\n else {\r\n this.menuItems = ZComponentHelper.getGroupValue(this.data.menuItems as string, this.group);\r\n }\r\n this.isLoading = false;\r\n })\r\n ).subscribe();\r\n }\r\n\r\n public onItemClick(event?: any) {\r\n if (this.data.OnItemClick) {\r\n this.group.subject.next({\r\n type: \"kmenu-onItemClick\",\r\n target: this.data.OnItemClick,\r\n data: event\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"kmenu-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\"\r\n [style]=\"componentProperties.containerStyle.style\"\r\n [class]=\"data.ComponentStyleType\">\r\n <kendo-menu\r\n [items]=\"menuItems\"\r\n class=\"menu-item-container e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n (select)=\"onItemClick($event)\"\r\n [vertical]=\"data['IsVertical'] ?? false\">\r\n <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n <div class=\"menu-item-content e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + ' ' + item.style2\">\r\n <fa-icon\r\n *ngIf=\"!!item.faIcon\"\r\n [icon]=\"getFontAwesome(item.faIcon, fontAweSomeService)\"\r\n [style]=\"componentProperties.containerStyle.style3 + ' ' + item.style3\"\r\n class=\"e1tag-container-style3\"></fa-icon>\r\n <span class=\"menu-item-label e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4 + ' ' + item.style4\">{{ item.label }}</span>\r\n <kendo-badge class=\"menu-item-counter e1tag-container-style5\" themeColor=\"danger\" *ngIf=\"!!item.counter\" [style]=\"componentProperties.containerStyle.style5 + ' ' + item.style5\">\r\n {{ item.counter }}\r\n </kendo-badge>\r\n </div>\r\n </ng-template>\r\n </kendo-menu>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent } from \"mmhglobal-zcore\";\r\nimport { ContainerFieldBase } from \"../../base/containerfieldbase.component\";\r\nimport { tap } from \"rxjs\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { KENDO_SCROLLVIEW } from \"@progress/kendo-angular-scrollview\";\r\n\r\n@Component({\r\n selector: \"app-kscrollview\",\r\n templateUrl: \"./kscrollview.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./kscrollview.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, KENDO_SCROLLVIEW]\r\n})\r\nexport class KScrollViewComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n public panelItems = [];\r\n public options = {\r\n pageAble: true,\r\n endless: false,\r\n arrows: true\r\n };\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n super.initComponent().pipe(\r\n tap(() => {\r\n this.setupItems();\r\n this.setupOptions();\r\n })\r\n ).subscribe(() => {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n private setupOptions() {\r\n if (this.data.Options) {\r\n if (typeof this.data.Options == 'string' && this.data.Options.indexOf('group.') != -1) {\r\n let option = ZComponentHelper.getGroupValue(this.data.Options, this.group);\r\n if (typeof option == 'string') {\r\n option = JSON.parse(option);\r\n }\r\n Object.assign(this.options, option);\r\n }\r\n else {\r\n Object.assign(this.options, this.data.Options);\r\n }\r\n }\r\n else {\r\n this.options.pageAble = this.panelItems.length > 1;\r\n }\r\n }\r\n\r\n private setupItems() {\r\n if (this.data.PanelItems) {\r\n if (typeof this.data.PanelItems == 'string' && (this.data.PanelItems as string).indexOf('group.') != -1) {\r\n let panelItemsFromGroup = ZComponentHelper.getGroupValue(this.data.PanelItems, this.group);\r\n if (typeof panelItemsFromGroup == 'string') {\r\n panelItemsFromGroup = JSON.parse(panelItemsFromGroup);\r\n }\r\n this.panelItems = panelItemsFromGroup;\r\n }\r\n else {\r\n this.panelItems = this.data.PanelItems;\r\n }\r\n }\r\n }\r\n\r\n public onItemClick(event: any, item: any) {\r\n if (this.data.OnItemClick) {\r\n this.group.subject.next({\r\n type: 'kscrollview-onitemclick',\r\n target: this.data.OnItemClick,\r\n event,\r\n data: { value: item, field: this.data, comp: this }\r\n } as ZComponentOutputEvent);\r\n }\r\n }\r\n}\r\n","<div class=\"kscrollview-container\" [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\"\r\n *ngIf=\"!isLoading\">\r\n <kendo-scrollview [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1 scrollview\"\r\n [ngClass]=\"data.Class\" [data]=\"panelItems\" [arrows]=\"options.arrows\" [pageable]=\"options.pageAble\"\r\n [endless]=\"options.endless\">\r\n <ng-template let-item=\"item\">\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\" (click)=\"onItemClick($event, item)\">\r\n <div [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3 kscrollview-title\">\r\n {{item.Label}}\r\n </div>\r\n <img [src]='item.SourceUrl' [alt]='item.Label' [style]=\"componentProperties.containerStyle.style4\"\r\n class=\"e1tag-container-style4\" draggable=\"true\" />\r\n </div>\r\n </ng-template>\r\n </kendo-scrollview>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { CellClickEvent, GanttModule, TaskClickEvent, TimelineViewType } from \"@progress/kendo-angular-gantt\";\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from \"../../base/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../../../services/zcomponent.service\";\r\nimport {\r\n ComponentUtils,\r\n FieldUtils,\r\n ZComponent\r\n} from \"mmhglobal-zcore\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ButtonModule } from \"@progress/kendo-angular-buttons\";\r\n\r\n@Component({\r\n selector: 'app-zganttchart',\r\n templateUrl: './zganttchart.component.html',\r\n styleUrls: ['../../../styles/component.scss', './zganttchart.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule,FontAwesomeModule,ButtonModule,GanttModule]\r\n})\r\nexport class ZganttchartComponent extends DataListingFieldBase implements ZComponent, OnInit, OnDestroy {\r\n public activeView: TimelineViewType = \"day\";\r\n public views: TimelineViewType[] = [\"day\", \"week\", \"month\", \"year\"];\r\n public collapsible = false;\r\n public collapsed = false;\r\n public timelineSize = '70%';\r\n public columns: any[] = []; // Initialize columns array\r\n public selectable = false;\r\n public totalCount: number = 0;\r\n\r\n constructor(\r\n protected readonly componentService: ZComponentService\r\n ) {\r\n super();\r\n }\r\n\r\n public ganttData: any;\r\n\r\n\r\n ngOnInit() {\r\n this.collapsible = this.data.AllowCollapse ?? false;\r\n this.collapsed = this.data.DefaultCollapse ?? false;\r\n this.timelineSize = this.data.TimelineSize ?? '70%';\r\n this.selectable = this.data.Selectable ?? false;\r\n this.initViews();\r\n this.setActiveView();\r\n this.generateGridColumns();\r\n ComponentUtils.registerComponent(this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n private initViews(): void {\r\n if (this.data.TimelineViewType && Array.isArray(this.data.TimelineViewType)) {\r\n this.views = this.data.TimelineViewType\r\n .map(view => view.toLowerCase())\r\n .filter(view => this.isValidTimelineView(view)) as TimelineViewType[];\r\n }\r\n }\r\n\r\n private setActiveView(): void {\r\n if (this.data.TimelimeDefault) {\r\n const defaultView = this.data.TimelimeDefault.toLowerCase();\r\n if (this.isValidTimelineView(defaultView)) {\r\n this.activeView = defaultView as TimelineViewType;\r\n }\r\n }\r\n }\r\n\r\n private isValidTimelineView(view: string): view is TimelineViewType {\r\n return ['day', 'week', 'month', 'year'].includes(view);\r\n }\r\n\r\n\r\n private generateGridColumns(): void {\r\n if (!Array.isArray(this.data.ColumnFields) || this.data.ColumnFields.length === 0) {\r\n console.warn(`Invalid/Empty gantt chart column fields: '${this.data.Name}'`);\r\n return;\r\n }\r\n\r\n this.columns = this.data.ColumnFields.map(field => ({\r\n name: field.Name,\r\n field: field.Value,\r\n title: field.Name,\r\n width: field.width || 80,\r\n format: field.Format\r\n }));\r\n }\r\n\r\n public setData(ganttData: any[]): void {\r\n if (ganttData) {\r\n this.ganttData = ganttData.map(task => ({\r\n ...task,\r\n start: this.ensureDate(task.start),\r\n end: this.ensureDate(task.end)\r\n })).filter(task => task.start && task.end); // Only include tasks with valid start and end dates\r\n\r\n if (this.data.Max) {\r\n this.ganttData = this.ganttData.slice(0, this.data.Max);\r\n }\r\n\r\n this.updateValueVariable();\r\n\r\n this.totalCount = this.ganttData.length;\r\n }\r\n else {\r\n console.warn('No data provided to setData; received a null or undefined parameter.');\r\n }\r\n }\r\n\r\n private updateValueVariable() {\r\n // Extract and trim the value from this.data.value if it exists\r\n const fieldName = this.data.Value.split('.').pop(); // Gets the last part after the last dot\r\n\r\n if (!fieldName) {\r\n console.warn(`Gantt Chart ${this.data.Name} Value could not be determined.`);\r\n return;\r\n }\r\n\r\n // Determine the target object\r\n if (this.data.Value.includes('group.') && this.group) {\r\n this.group[fieldName] = this.ganttData;\r\n }\r\n else {\r\n if (this.hasOwnProperty(fieldName)) {\r\n this[fieldName] = this.ganttData;\r\n }\r\n }\r\n }\r\n\r\n private ensureDate(date: string | Date): Date | null {\r\n // Check if the date is already a Date object\r\n if (date instanceof Date) {\r\n return date;\r\n }\r\n\r\n // If the date is a string, convert it to a Date object\r\n const parsedDate = new Date(date);\r\n if (!isNaN(parsedDate.getTime())) {\r\n return parsedDate;\r\n } else {\r\n // Log a warning if the date string is invalid and return a default date or null\r\n // console.warn(`Invalid date format: ${date}`);\r\n return null; // or return null if you prefer to handle invalid dates differently\r\n }\r\n }\r\n\r\n public get selectedKeys(): number[] {\r\n return Array.from(this.selectionState);\r\n }\r\n\r\n public selectionState: Set<any> = new Set();\r\n\r\n public isSelected = (dataItem: any): boolean => {\r\n return this.selectionState.has(dataItem[this.data.UniqueKey ?? \"Id\"]);\r\n };\r\n\r\n public toggleSelection({\r\n dataItem,\r\n sender,\r\n originalEvent,\r\n }: CellClickEvent | TaskClickEvent): void {\r\n // Prevents context menu opening\r\n originalEvent.preventDefault();\r\n\r\n const uniqueKey = this.data.UniqueKey ?? \"Id\";\r\n\r\n // For future toggling multi select\r\n // if (this.isSelected(dataItem)) {\r\n // this.selectionState.delete(dataItem[uniqueKey]);\r\n // }\r\n // else {\r\n // this.selectionState.add(dataItem[uniqueKey]);\r\n // }\r\n\r\n this.selectionState = new Set;\r\n this.selectionState.add(dataItem[uniqueKey]);\r\n\r\n // Manually trigger the Gantt to re-evaluate the isSelected callback for each task\r\n sender.updateView();\r\n\r\n if (this.data.OnItemClick) {\r\n const func = FieldUtils.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n if (typeof func === 'function') {\r\n const callFunc = func.bind(this.group.ctrlScope);\r\n callFunc(dataItem);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n public clearSelection(): void {\r\n this.selectionState = new Set;\r\n }\r\n}\r\n","<kendo-gantt [style.height.px]=\"500\"\r\n [data]=\"ganttData\"\r\n kendoGanttExpandable\r\n [initiallyExpanded]=\"true\"\r\n [toolbarSettings]=\"{ position: 'both', addTaskTool: 'none' }\"\r\n [activeView]=\"activeView\"\r\n [sortable]=\"true\"\r\n [selectable]=\"selectable\"\r\n [isSelected]=\"isSelected\"\r\n (cellClick)=\"toggleSelection($event)\"\r\n (taskClick)=\"toggleSelection($event)\"\r\n [timelinePaneOptions]=\"{ collapsed: collapsed,\r\n collapsible: collapsible,\r\n size: timelineSize\r\n }\">\r\n <kendo-gantt-column *ngFor=\"let col of columns;\"\r\n [field]=\"col.field\"\r\n [title]=\"col.title\"\r\n [width]=\"col.width\"\r\n [format]=\"col.format\">\r\n </kendo-gantt-column>\r\n <ng-template kendoGanttToolbarTemplate\r\n position=\"both\"\r\n let-position=\"position\">\r\n <div *ngIf=\"position === 'top'\" class=\"toolbar-top\">\r\n <span>{{data.Title}}</span>\r\n <kendo-gantt-view-selector [views]=\"views\"\r\n [(activeView)]=\"activeView\"></kendo-gantt-view-selector>\r\n </div>\r\n <div *ngIf=\"position === 'bottom'\" class=\"toolbar-bottom\">\r\n <span>Total {{totalCount}} records</span>\r\n </div>\r\n </ng-template>\r\n <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view>\r\n <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view>\r\n <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view>\r\n <kendo-gantt-timeline-year-view></kendo-gantt-timeline-year-view>\r\n</kendo-gantt>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ButtonFieldBase } from '../../base/buttonfieldbase.component';\r\nimport {\r\n DataUtils,\r\n FieldUtils,\r\n FontAweSomeService, IconUtils, TriggerFromType,\r\n ZComponent, ZComponentOutputEvent, ZField,\r\n} from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { KENDO_BUTTONS } from '@progress/kendo-angular-buttons';\r\n\r\n@Component({\r\n selector: \"app-dropdown_buttons\",\r\n templateUrl: \"./dropdown_buttons.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./dropdown_buttons.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, FontAwesomeModule, KENDO_BUTTONS]\r\n})\r\n\r\nexport class DropDownButtonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n constructor(\r\n public fontAweSomeService: FontAweSomeService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.initComponent().subscribe(() => {\r\n this.loadButton();\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentService.decrementComponentCounterForField(this.data);\r\n }\r\n\r\n private loadButton() {\r\n if (!this.data.Value || !Array.isArray(this.data.Value)) {\r\n console.warn('[DropDown Button] Button value is empty');\r\n return;\r\n }\r\n\r\n try {\r\n this.data.Value.forEach((button: ZField) => {\r\n this.setupButtonAttributes(button);\r\n });\r\n\r\n super.translateButtonsLabel(this.buttonList).subscribe();\r\n } catch (error) {\r\n console.error(\"error: \", error);\r\n }\r\n }\r\n\r\n private setupButtonAttributes(button: ZField) {\r\n let buttonDisabled = false;\r\n if (button['Disabled'] && typeof button['Disabled'] == 'string') {\r\n buttonDisabled = FieldUtils.getGroupEvalValue.call(this, button['Disabled']);\r\n }\r\n\r\n this.buttonList.push({\r\n name: button.Name,\r\n text: this.getButtonLabel(button),\r\n showLabel: button.ShowLabel ?? true,\r\n style: button.Style,\r\n icon: IconUtils.getIcon(button.Icon as string),\r\n disabled: buttonDisabled,\r\n clickEvent: button.ClickEvent,\r\n iconName: button.Icon,\r\n dismissType: button.DismissType,\r\n buttonData: button,\r\n disableTriggerTimer: button.DisableTriggerTimer,\r\n disableTrigger: this.getButtonDisableTriggerValue(this.data, button),\r\n });\r\n }\r\n\r\n public buttonClick(item: any) {\r\n if (item.disabled) {\r\n return;\r\n }\r\n\r\n this.group.isTriggered = item.disableTrigger != undefined ? !item.disableTrigger : true;\r\n\r\n if (this.group.isTriggered) {\r\n const me = this.group;\r\n if (!item['disableTriggerTimer']) {\r\n setTimeout(function () {\r\n me['isTriggered'] = false;\r\n }, 500);\r\n }\r\n }\r\n\r\n const clonedButton = DataUtils.deepClone(item);\r\n item.eventId = DataUtils.generateTimeStampId();\r\n this.group['DismissType'] = item.dismissType;\r\n\r\n const outputEvent = {\r\n type: \"buttonClick\",\r\n target: clonedButton.clickEvent,\r\n data: clonedButton,\r\n triggerFrom: TriggerFromType.button\r\n } as ZComponentOutputEvent;\r\n\r\n this.group['buttonEventDetail'] = {\r\n buttonDetail: outputEvent,\r\n triggerFrom: TriggerFromType.button\r\n };\r\n\r\n this.group.subject.next(outputEvent);\r\n }\r\n}\r\n","<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && buttonList.length > 0\"\r\n [style]=\"componentProperties.style.style\"\r\n class=\"e1tag-style\"\r\n [ngClass]=\"data.Class\">\r\n <div class=\"dropdown-button-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-dropdownbutton\r\n [data]=\"buttonList\"\r\n [size]=\"data.Size ?? 'medium'\"\r\n [fillMode]=\"data['Fill'] ?? 'solid'\"\r\n [ngClass]=\"data.Color\"\r\n (itemClick)=\"buttonClick($event)\"\r\n class=\"e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div class=\"button-label-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n <fa-icon class=\"btn-icon e1tag-style4\" [style]=\"componentProperties.style.style4\" *ngIf=\"data.Icon\" [icon]=\"getFontAwesome(data.Icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style5\" [style]=\"componentProperties.style.style5\" *ngIf=\"data.Label && data.ShowLabel\">\r\n {{ data.Label }}\r\n </span>\r\n </div>\r\n <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n <div class=\"button-content-container e1tag-style6\" [style]=\"componentProperties.style.style6 + ' ' + dataItem.style\">\r\n <fa-icon class=\"btn-icon e1tag-style7\" [style]=\"componentProperties.style.style7\" *ngIf=\"dataItem.icon\" [icon]=\"dataItem.icon\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style8\" [style]=\"componentProperties.style.style8\" *ngIf=\"dataItem.text && dataItem.showLabel\">\r\n {{ dataItem.text }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n </kendo-dropdownbutton>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { AuthService, FontAweSomeService, MenuService, ProjectThemeService, TranslationService } from 'mmhglobal-zcore';\r\nimport { CommonModule } from '@angular/common';\r\nimport { filter, first, Observable, switchMap, tap } from 'rxjs';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DialogsModule } from '@progress/kendo-angular-dialog';\r\n\r\n@Component({\r\n selector: 'e1-root',\r\n templateUrl: './e1-root.component.html',\r\n styleUrls: ['../../../styles/component.scss', './e1-root.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, RouterModule, DialogsModule]\r\n})\r\n\r\nexport class E1RootComponent implements OnInit {\r\n @Output('appReady') appReady: EventEmitter<any> = new EventEmitter();\r\n public showSplashScreen = true;\r\n public currentTheme: string = '';\r\n\r\n constructor(\r\n private readonly authService: AuthService,\r\n private readonly translationService: TranslationService,\r\n private readonly projectThemeService: ProjectThemeService,\r\n private readonly menuService: MenuService,\r\n private readonly fontAwesomeService: FontAweSomeService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.fontAwesomeService.init();\r\n this.setupServicesUponLogin().pipe(\r\n tap(() => {\r\n this.appReady.emit();\r\n })\r\n ).subscribe();\r\n\r\n setTimeout(() => {\r\n this.showSplashScreen = false;\r\n }, 500);\r\n }\r\n\r\n private setupServicesUponLogin(): Observable<any> {\r\n return this.authService.userIsAuthenticated.pipe(\r\n filter(isAuth => isAuth && !!this.authService.e1Token),\r\n first(),\r\n switchMap(() => {\r\n return this.menuService.initialise(this.authService.e1Token.menus);\r\n }),\r\n switchMap(() => {\r\n this.setupThemeListener();\r\n return this.setupTranslation();\r\n })\r\n );\r\n }\r\n\r\n private setupTranslation(): Observable<any> {\r\n return this.translationService.setupTranslationProfileByLanguage(this.authService.e1Token?.myProfile?.Language).pipe(first());\r\n }\r\n\r\n private setupThemeListener() {\r\n this.projectThemeService.setupTheme();\r\n this.projectThemeService.getTheme$().pipe(\r\n tap(theme => {\r\n this.currentTheme = theme;\r\n })\r\n ).subscribe();\r\n }\r\n}\r\n","<div id=\"container\" *ngIf=\"showSplashScreen\">\r\n <div id=\"flip\">\r\n <div class=\"screen-container\">\r\n <div id=\"screen1\">\r\n <span class=\"splash-title\">INVOLVED</span>\r\n <br />\r\n <span class=\"splash-desc\">Creating greater value with an integrated and traceable supply chain</span>\r\n </div>\r\n <div id=\"screen2\">\r\n <span class=\"splash-title\">LEADING</span>\r\n <br />\r\n <span class=\"splash-desc\">A leader in safe and high-quality solutions for the world's growing population</span>\r\n </div>\r\n <div id=\"screen3\">\r\n <span class=\"splash-title\">SUSTAINABLE</span>\r\n <br />\r\n <span class=\"splash-desc\">Paving the way forward by conducting our business responsibly</span>\r\n </div>\r\n <div id=\"screen4\">\r\n <span class=\"splash-title\">PARTNERSHIP</span>\r\n <br />\r\n <span class=\"splash-desc\">Explore our virtual experience discover our range of products and sustainability works</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Main App Content -->\r\n<div *ngIf=\"!showSplashScreen\" class=\"menu-content\" [ngClass]=\"currentTheme\">\r\n <router-outlet></router-outlet>\r\n</div>\r\n<div kendoDialogContainer></div>\r\n","import { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { UntypedFormGroup } from \"@angular/forms\";\r\nimport { Observable, of, Subscription } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport {\r\n FieldService, ZGroup, FieldUtils, ModalPageParams, ZComponentOutputEvent,\r\n WebApiService, ResourceApiService, ZCoreService\r\n} from 'mmhglobal-zcore';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ZmodalComponentHelperService } from \"./zmodal-component-helper.service\";\r\nimport { DialogRef } from \"@progress/kendo-angular-dialog\";\r\nimport { PageLoaderComponent } from \"../../utility/page-loader/page-loader.component\";\r\nimport { ZformComponent } from \"../zform/zform.component\";\r\n\r\n@Component({\r\n selector: \"app-modal\",\r\n templateUrl: \"./zmodal.component.html\",\r\n styleUrls: ['../../../styles/component.scss', \"./zmodal.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, ZformComponent, PageLoaderComponent]\r\n})\r\n\r\nexport class ZmodalComponent implements OnInit, OnDestroy {\r\n group: ZGroup = new ZGroup(true);\r\n @Input() modalParams: ModalPageParams;\r\n @Input() dialogRef: DialogRef;\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private readonly webApiService: WebApiService,\r\n private readonly resourceApiService: ResourceApiService,\r\n private readonly modalComponentService: ZmodalComponentHelperService,\r\n private readonly fieldService: FieldService,\r\n private readonly zcoreService: ZCoreService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n // Copy properties from the parentGroup if it exists\r\n if (this.modalParams.parentGroup) {\r\n this.modalParams.parentGroup._modalgroup = this.group;\r\n Object.assign(this.group, this.modalParams.parentGroup);\r\n this.group.isLoading = true;\r\n this.group.referenceId = this.modalParams.referId;\r\n }\r\n else {\r\n console.warn(`\"parentGroup\" is undefined for zModal Title: \"${this.modalParams.formHeader}\".`);\r\n }\r\n\r\n Object.assign(this.group, {\r\n modalAnswer: this.modalComponentService.onConfirm.bind(this.modalComponentService, this.dialogRef, this.group, this.modalParams),\r\n modalCancel: this.modalComponentService.onCancel.bind(this.modalComponentService, this.dialogRef, this.group, this.modalParams),\r\n modalClose: this.modalComponentService.onInitClose.bind(this.modalComponentService, this.dialogRef, this.group, this.modalParams),\r\n fields: [],\r\n zModel: {},\r\n form: null as UntypedFormGroup,\r\n cancelButtonName: \"Close\",\r\n zButtonsCount: 0,\r\n });\r\n\r\n if (this.modalParams.fieldElementName) {\r\n this.group.resourceURL = this.resourceApiService.getURL(this.modalParams.fieldElementName);\r\n }\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n this.group.subject.next(null);\r\n this.subscription = this.group.subject.subscribe((event: any) =>\r\n this.subjectEvent(event, this.group, this)\r\n );\r\n\r\n of([]).pipe(\r\n switchMap(() => {\r\n if (this.modalParams.fieldElementObservable$) {\r\n return this.modalParams.fieldElementObservable$;\r\n }\r\n if (this.modalParams.fieldElementName) {\r\n return this.fieldService.getFormFieldCode(this.modalParams.fieldElementName, 'FormField', null, null);\r\n }\r\n\r\n console.warn('fieldElementName / fieldElementObservable$ is undefined.');\r\n return of({});\r\n }),\r\n tap(data => {\r\n this.group.fields = data;\r\n }),\r\n switchMap(() => {\r\n if (this.modalParams.zModel) {\r\n return of(this.modalParams.zModel);\r\n }\r\n if (this.group.referenceId) {\r\n return this.getModel$(this.group, this.group.referenceId);\r\n }\r\n return of({});\r\n }),\r\n tap((zmodel: any) => {\r\n this.group.zModel = zmodel;\r\n if (this.group.zModel && Object.keys(this.group.zModel).length !== 0) {\r\n this.group.isEdit = true;\r\n this.group.isNew = false;\r\n } else {\r\n this.group.isEdit = false;\r\n this.group.isNew = true;\r\n }\r\n })\r\n\r\n ).subscribe(() => {\r\n console.log(\"Initialization of modal group\");\r\n\r\n if (!window.history.state.modal) {\r\n history.pushState({ modal: true }, null);\r\n }\r\n\r\n this.group.isLoading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"ZmodalComponent onDestroy.\");\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n //#region Private Helper Methods\r\n // For modalGroup action button click\r\n private subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n if (!event?.target?.startsWith('modalGroup')) {\r\n return;\r\n }\r\n console.log(\">> SubjectEvent\", event);\r\n const callFunc = FieldUtils.getGroupEvalValue.call(this, event.target);\r\n if (typeof callFunc === \"function\") {\r\n const fg = this.group.form;\r\n Object.assign(this.group.zModel, fg.value);\r\n event.data = this.group.zModel;\r\n if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalClose') || event.target.startsWith('modalGroup.modalCancel')) {\r\n const newFunc = callFunc.bind(this);\r\n newFunc(event);\r\n } else {\r\n const newFunc = callFunc.bind(group.ctrlScope);\r\n newFunc(event);\r\n }\r\n } else {\r\n console.warn(\r\n \"Function not defined in group for: \",\r\n callFunc,\r\n \", Event: \",\r\n event\r\n );\r\n }\r\n }\r\n\r\n private getModel$(group: any, id: string): Observable<any> {\r\n const recId = id || group.referenceId;\r\n return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n }\r\n //#endregion\r\n\r\n public isSITEnvironment() {\r\n return this.zcoreService.isDebugSession();\r\n }\r\n}\r\n","<div class=\"loadingPage\" *ngIf=\"group.isLoading\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<ng-container *ngIf=\"!group.isLoading\">\r\n <div class=\"modal-content-div\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </div>\r\n <div class=\"modal-debugger\" *ngIf=\"isSITEnvironment()\">\r\n <pre style=\"font-size: x-small\">{{ group.zModel | json }}</pre>\r\n </div>\r\n</ng-container>\r\n","/*\r\n * Public API Surface of dynamic-form\r\n */\r\n\r\n/********** Service **********/\r\nexport * from './lib/services/main.service';\r\nexport * from './lib/services/zcomponent.service';\r\nexport * from './lib/services/zcomponent.debug.service';\r\nexport * from './lib/components/others/zmodal/zmodal.service';\r\nexport * from './lib/components/others/zmodal/zmodal-component-helper.service';\r\nexport * from './lib/components/input/zcodeeditor/zcodeeditor.service';\r\n\r\n/********** Directive **********/\r\n// export * from './lib/directives/scrollbar.theme.directive';\r\n// export * from './lib/directives/fieldelement.directive';\r\nexport * from './lib/components/data-listing/zgrid/zgrid.binding.directive';\r\nexport * from './lib/components/input/zselectmultiple/zselectmultiple.directive';\r\nexport * from './lib/directives/elementcontainer.directive';\r\n\r\n/********** Addon **********/\r\nexport * from './lib/components/input/zdatetime/dateParser.pipe';\r\nexport * from './lib/components/container/zdiv/zdiv.pipe';\r\nexport * from './lib/components/container/ztab/ztab.pipe';\r\nexport * from './lib/pipe/panel-area.pipe';\r\nexport * from './lib/components/input/zinput-container/zinput-container.pipe';\r\nexport * from './lib/pipe/htmlSanitize.pipe';\r\nexport * from './lib/components/input/znumeric/znumeric.component.pipe';\r\nexport * from './lib/components/input/zdatetime/dateIonicFormatParser.pipe';\r\nexport * from './lib/components/input/zdatetime/dateKendoFormatParser.pipe';\r\nexport * from './lib/components/input/zdatetime/dateIonicMinMaxDate.pipe';\r\n\r\nexport * from './lib/components/data-listing/zgrid/date-range-cell-filter.component';\r\nexport * from './lib/components/chart/zscheduler/zscheduler.toolbar.component';\r\n\r\n\r\n/********** zComponent **********/\r\nexport * from './lib/components/utility/uicontainer/uicontainer.component';\r\nexport * from './lib/components/utility/uicontent/uicontent.component';\r\nexport * from './lib/components/utility/uiheader/uiheader.component';\r\nexport * from './lib/components/utility/uipage/uipage.component';\r\nexport * from './lib/components/utility/uiappmenucontent/uiappmenucontent.component';\r\nexport * from './lib/components/utility/uibulletin/uibulletin.component';\r\nexport * from './lib/components/button/zbuttons/zbuttons.component';\r\nexport * from './lib/components/container/zcard/zcard.component';\r\nexport * from './lib/components/chart/zchart/zchart.component';\r\nexport * from './lib/components/input/zcheckbox/zcheckbox.component';\r\nexport * from './lib/components/button/zchip/zchip.component';\r\nexport * from './lib/components/input/zcodeeditor/zcodeeditor.component';\r\nexport * from './lib/components/input/zdatetime/zdatetime.component';\r\nexport * from './lib/components/container/zdiv/zdiv.component';\r\nexport * from './lib/components/others/zform/zform.component';\r\nexport * from './lib/components/others/zformcontrol/zformcontrol.component';\r\nexport * from './lib/components/chart/zgauge/zgauge.component';\r\nexport * from './lib/components/data-listing/zgrid/zgrid.component';\r\nexport * from './lib/components/data-listing/zgrid/container/zgrid-container.component';\r\nexport * from './lib/components/data-listing/zgrid/zgrid.popup.anchor-target.directive'\r\nexport * from './lib/components/input/zimg/zimg.component';\r\nexport * from './lib/components/input/zlabel/zlabel.component';\r\nexport * from './lib/components/button/zmfb/zmfb.component';\r\nexport * from './lib/components/input/znumeric/znumeric.component';\r\nexport * from './lib/components/input/zpostselectinput/zpostselectinput.component';\r\nexport * from './lib/components/chart/zreport/zreport.component';\r\nexport * from './lib/components/chart/zscheduler/zscheduler.component';\r\nexport * from './lib/components/input/zselectmultiple/zselectmultiple.component';\r\nexport * from './lib/components/container/ztab/ztab.component';\r\nexport * from './lib/components/input/ztext/ztext.component';\r\nexport * from './lib/components/input/ztextarea/ztextarea.component';\r\nexport * from './lib/components/input/ztexteditor/ztexteditor.component';\r\nexport * from './lib/components/data-listing/ztree/ztree.component';\r\nexport * from './lib/components/data-listing/ztreelist/ztreelist.component';\r\nexport * from './lib/components/chart/ztrendcard/ztrendcard.component';\r\nexport * from './lib/components/container/zudf/zudf.component';\r\nexport * from './lib/components/others/zunknown/zunknown.component';\r\nexport * from './lib/components/input/zupload/zupload.component';\r\nexport * from './lib/components/button/zworkflowbuttons/zworkflowbuttons.component';\r\nexport * from './lib/components/container/kcard/kcard.component';\r\nexport * from './lib/components/input/zinput-container/zinput-container.component';\r\nexport * from './lib/components/chart/zprogressbar/zprogressbar.component';\r\nexport * from './lib/components/base/buttonfieldbase.component';\r\nexport * from './lib/components/base/containerfieldbase.component';\r\nexport * from './lib/components/base/datalistingfieldbase.component';\r\nexport * from './lib/components/base/fieldbase.component';\r\nexport * from './lib/components/base/inputfieldbase.component';\r\nexport * from './lib/components/utility/input-error-message/input-error-message.component';\r\nexport * from './lib/components/utility/input-field-addons/input-field-addons.component'\r\nexport * from './lib/components/utility/page-loader/page-loader.component'\r\nexport * from './lib/components/utility/spinner/spinner.component'\r\nexport * from './lib/components/utility/processing-record-loader/processing-record-loader.component'\r\nexport * from './lib/components/input/zselectmultiple/zselectmultiple.pipe'\r\nexport * from './lib/components/input/sfquerybuilder/sfquerybuilder.component'\r\nexport * from './lib/components/container/zloop/zloop.component'\r\nexport * from './lib/components/container/ksplitter/ksplitter.component';\r\nexport * from './lib/components/data-listing/virtual-scroll/virtual-scroll.component';\r\nexport * from './lib/components/input/zcolorpicker/zcolorpicker.component';\r\nexport * from './lib/components/menu/kmenu/kmenu.component';\r\nexport * from './lib/components/container/kscrollview/kscrollview.component';\r\nexport * from './lib/components/menu/context-menu/context-menu.component';\r\nexport * from './lib/components/input/sfdatetimepicker/sfdatetimepicker.component';\r\nexport * from './lib/components/chart/zganttchart/zganttchart.component';\r\nexport * from './lib/components/button/dropdown_buttons/dropdown_buttons.component';\r\nexport * from './lib/components/utility/e1-root/e1-root.component';\r\nexport * from './lib/components/others/zmodal/zmodal.component';\r\n\r\n/********** Interfaces **********/\r\nexport * from './lib/interfaces/modal.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["switchMap","i1","i2.ZmodalComponentHelperService","i3","map","i2","i3.ModalService","i4.ZComponentDebugService","i5","tap","i2.ZGridService","i3.ZComponentService","i1.ZComponentService","i2.ZComponentService","ComponentType","i1.FormControlService","i2.ZComponentDebugService","i4","i3.MainService","i6","i7","i10","i1.MainService","i2.MainService","KendoContextMenuComponent","i1.ZcodeeditorService","event","DateTimePickerModule","delay","i4.MainService","i5.ZGridService","i8","i9","i11","i13","filter","ExcelModule"],"mappings":"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"}