@wavemaker/app-ng-runtime 12.0.0-next.45503 → 12.0.0-next.46502

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +53 -45
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
  34. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  36. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  37. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  38. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/base/bundles/index.umd.js +8 -7
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  42. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs +8 -7
  44. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  45. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  46. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  47. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  48. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  50. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  52. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  55. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  57. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  58. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  60. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  61. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  62. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  63. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  65. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  68. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  69. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  70. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  72. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  74. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  76. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  78. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  79. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  83. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  84. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  85. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  86. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  88. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  89. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  90. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  91. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  92. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  93. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  94. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  95. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  97. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  99. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  100. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  101. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  103. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  104. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  105. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  107. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  108. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  109. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  111. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  112. app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
  113. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -1
  114. app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -0
  115. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
  117. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  118. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  119. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  120. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  121. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  122. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  123. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  124. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  125. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  126. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  127. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  128. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  129. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
  131. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  132. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  133. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  134. app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
  135. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  136. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  137. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  138. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  139. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  140. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  142. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  143. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  144. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  146. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  147. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  148. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  149. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  150. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  151. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  152. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  153. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  154. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  155. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  156. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  157. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  158. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  159. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  160. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  161. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  162. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  164. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  165. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  166. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  168. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  169. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  170. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  171. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  173. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  174. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  175. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  176. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  177. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  179. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  180. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  181. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  182. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  183. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  184. app-ng-runtime/components/input/default/bundles/index.umd.js +184 -105
  185. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  186. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  187. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  188. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  189. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  190. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  191. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  194. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  195. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  196. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  197. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +20 -18
  198. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  200. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  202. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  203. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  204. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  205. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  206. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  207. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  208. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  209. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  210. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  211. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  212. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  213. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  214. app-ng-runtime/components/input/default/fesm2022/index.mjs +184 -105
  215. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  216. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  218. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  219. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  220. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  221. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  222. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  223. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  224. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  225. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  226. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  227. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  228. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  229. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  230. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  231. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  232. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  233. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  234. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  235. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  236. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  237. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  239. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  240. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  241. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  242. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  243. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  244. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  245. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  246. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  247. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  248. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  249. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  250. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  251. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  252. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  253. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  254. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  255. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  256. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  257. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  258. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  259. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  260. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  261. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  263. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  265. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  266. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  267. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  268. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  269. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  270. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  271. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  272. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  273. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  274. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  275. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  276. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  277. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  278. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  279. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  280. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  281. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  282. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  283. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  284. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  285. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  286. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  287. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  288. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  289. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  290. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  291. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  292. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  293. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  294. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/bundles/index.umd.js +15 -13
  296. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  297. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  298. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  299. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  300. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/core/public_api.d.ts +1 -1
  302. app-ng-runtime/core/utils/utils.d.ts +1 -1
  303. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  304. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  305. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  306. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  307. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  308. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  309. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  310. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  311. app-ng-runtime/package.json +1 -1
  312. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  313. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  314. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  315. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  316. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  317. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  319. app-ng-runtime/scripts/datatable/datatable.js +33 -32
  320. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  321. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  322. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  323. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  324. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/chart/src/chart.props.ts","../../../../projects/components/widgets/chart/src/chart.utils.ts","../../../../projects/components/widgets/chart/src/chart.component.html","../../../../projects/components/widgets/chart/src/chart.component.ts","../../../../projects/components/widgets/chart/src/chart.module.ts","../../../../projects/components/widgets/chart/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-chart',\n new Map(\n [\n ['aggregation', {value: 'none', ...PROP_STRING}],\n ['aggregationcolumn', PROP_STRING],\n ['areaviewtype', {value: 'stack', ...PROP_STRING}],\n ['barspacing', {value: 'medium', ...PROP_STRING}],\n ['bubblesize', PROP_STRING],\n ['centerlabel', PROP_STRING],\n ['class', PROP_STRING],\n ['customcolors', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['donutratio', {value: 'medium', ...PROP_STRING}],\n ['formattype', {value: '', PROP_STRING}],\n ['groupby', PROP_STRING],\n ['height', {value: '210px', PROP_STRING}],\n ['highlightpoints', PROP_BOOLEAN],\n ['iconclass', PROP_STRING],\n ['interpolation', {value: 'linear', ...PROP_STRING}],\n ['labelthreshold', {value: 0.01, ...PROP_NUMBER}],\n ['labeltype', {value: 'percent', ...PROP_STRING}],\n ['legendtype', {value: 'furious', ...PROP_STRING}],\n ['linethickness', PROP_STRING],\n ['loadingdatamsg', {value: 'Loading...', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Available.', ...PROP_STRING}],\n ['offset', PROP_STRING],\n ['offsetbottom', {value: 55, ...PROP_NUMBER}],\n ['offsetleft', {value: 75, ...PROP_NUMBER}],\n ['offsetright', {value: 25, ...PROP_NUMBER}],\n ['offsettop', {value: 25, ...PROP_NUMBER}],\n ['orderby', PROP_STRING],\n ['reducexticks', {value: true, ...PROP_BOOLEAN}],\n ['shape', {value: 'circle', ...PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showlabels', {value: 'outside', ...PROP_STRING}],\n ['showlabelsoutside', {value: true, ...PROP_BOOLEAN}],\n ['showlegend', {value: 'top', ...PROP_STRING}],\n ['showvalues', {value: false, ...PROP_BOOLEAN}],\n ['showxaxis', {value: true, ...PROP_BOOLEAN}],\n ['showxdistance', {value: false, ...PROP_BOOLEAN}],\n ['showyaxis', {value: true, ...PROP_BOOLEAN}],\n ['showydistance', {value: false, ...PROP_BOOLEAN}],\n ['staggerlabels', {value: false, ...PROP_BOOLEAN}],\n ['subheading', PROP_STRING],\n ['theme', PROP_STRING],\n ['title', PROP_STRING],\n ['tooltips', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['viewtype', {value: 'Grouped', ...PROP_STRING}],\n ['xaxisdatakey', PROP_STRING],\n ['xaxislabel', PROP_STRING],\n ['xaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['xdateformat', PROP_STRING],\n ['xdomain', {value: 'Default', ...PROP_STRING}],\n ['xnumberformat', PROP_STRING],\n ['xunits', PROP_STRING],\n ['yaxisdatakey', PROP_STRING],\n ['yaxislabel', PROP_STRING],\n ['yaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['ydomain', {value: 'Default', ...PROP_STRING}],\n ['ynumberformat', PROP_STRING],\n ['yunits', PROP_STRING]\n ]\n )\n );\n};\n","import {isEmptyObject, prettifyLabels} from '@wm/core';\nimport {forEach, includes, invert, isArray, isFinite, isString, isUndefined, split} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const moment;\ndeclare const d3, nv;\n\nexport const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'],\n allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];\n\nconst dateList = ['01/01/2001', '01/01/2002', '01/01/2003'],\n themes = {\n 'Terrestrial': {\n colors: ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5'],\n tooltip: {\n 'backgroundColor': '#de7d28',\n 'textColor': '#FFFFFF'\n }\n },\n 'Annabelle': {\n colors: ['#393b79', '#5254a3', '#6b6ecf', '#9c9ede', '#637939', '#8ca252', '#b5cf6b', '#cedb9c', '#8c6d31', '#bd9e39', '#e7ba52', '#e7cb94', '#843c39', '#ad494a', '#d6616b', '#e7969c', '#7b4173', '#a55194', '#ce6dbd', '#de9ed6'],\n tooltip: {\n 'backgroundColor': '#2e306f',\n 'textColor': '#FFFFFF'\n }\n },\n 'Azure': {\n colors: ['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#636363', '#969696', '#bdbdbd', '#d9d9d9'],\n tooltip: {\n 'backgroundColor': '#3182bd',\n 'textColor': '#FFFFFF'\n }\n },\n 'Retro': {\n colors: ['#0ca7a1', '#ffa615', '#334957', '#acc5c2', '#988f90', '#8accc9', '#515151', '#f27861', '#36c9fd', '#794668', '#0f709d', '#0d2738', '#44be78', '#4a1839', '#6a393f', '#557d8b', '#6c331c', '#1c1c1c', '#861500', '#09562a'],\n tooltip: {\n 'backgroundColor': '#80513a',\n 'textColor': '#FFFFFF'\n }\n },\n 'Mellow': {\n colors: ['#f0dcbf', '#88c877', '#aeb918', '#2e2c23', '#ddddd2', '#dfe956', '#4c963b', '#5d3801', '#e1eec3', '#cd8472', '#fcfab3', '#9a4635', '#9295ad', '#2e3f12', '#565677', '#557d8b', '#4f4d02', '#0c0c1b', '#833324', '#24120e'],\n tooltip: {\n 'backgroundColor': '#7c9e73',\n 'textColor': '#FFFFFF'\n }\n },\n 'Orient': {\n colors: ['#a80000', '#cc6c3c', '#f0e400', '#000084', '#fccc6c', '#009c6c', '#cc309c', '#78cc00', '#fc84e4', '#48e4fc', '#4878d8', '#186c0c', '#606060', '#a8a8a8', '#000000', '#d7d7d7', '#75a06e', '#190d0b', '#888888', '#694b84'],\n tooltip: {\n 'backgroundColor': '#c14242',\n 'textColor': '#FFFFFF'\n }\n },\n 'GrayScale': {\n colors: ['#141414', '#353535', '#5b5b5b', '#848484', '#a8a8a8', '#c3c3c3', '#e0e0e0', '#c8c8c8', '#a5a5a5', '#878787', '#656565', '#4e4e4e', '#303030', '#1c1c1c', '#4f4f4f', '#3b3b3b', '#757575', '#606060', '#868686', '#c1c1c1'],\n tooltip: {\n 'backgroundColor': '#575757',\n 'textColor': '#FFFFFF'\n }\n },\n 'Flyer': {\n colors: ['#3f454c', '#5a646e', '#848778', '#cededf', '#74c4dd', '#0946ed', '#380bb1', '#000ff0', '#f54a23', '#1db262', '#bca3aa', '#ffa500', '#a86b32', '#63a18c', '#56795e', '#934343', '#b75f5f', '#752d2d', '#4e1111', '#920606'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n },\n 'Luminosity': {\n colors: ['#FFFFFF', '#e4e4e4', '#00bcd4', '#f0dd2f', '#00aabf', '#018376', '#e91e63', '#39e5d4', '#ff6d6d', '#00ff76', '#ff9800', '#969696', '#ff4200', '#e00000', '#95cbe5', '#5331ff', '#fff4a7', '#e7a800', '#0061e4', '#d5e7ff'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n }\n },\n basicProperties = ['xaxislabel', 'yaxislabel', 'xunits', 'yunits', 'xnumberformat', 'xdateformat', 'ynumberformat',\n 'showvalues', 'showlabels', 'viewtype', 'areaviewtype', 'staggerlabels', 'reducexticks', 'offsettop', 'offsetbottom', 'offsetright', 'offsetleft',\n 'barspacing', 'xaxislabeldistance', 'yaxislabeldistance', 'theme', 'labeltype', 'donutratio', 'showlabelsoutside', 'showxdistance', 'showydistance', 'shape', 'nodatamessage', 'captions', 'showxaxis', 'showyaxis',\n 'centerlabel', 'customcolors', 'showlegend', 'legendtype', 'xdomain', 'ydomain', 'tooltips', 'linethickness', 'highlightpoints', 'interpolation', 'labelthreshold'],\n barSpacingMap = {\n 'small' : 0.3,\n 'medium' : 0.5,\n 'large' : 0.8\n },\n donutRatioMap = {\n 'small' : 0.3,\n 'medium' : 0.6,\n 'large' : 0.7\n },\n barSpacingMapInvert = invert(barSpacingMap),\n donutRatioMapInvert = invert(donutRatioMap),\n tickformats = {\n 'Thousand': {\n 'prefix': 'K',\n 'divider': 1000\n },\n 'Million' : {\n 'prefix': 'M',\n 'divider': 1000000\n },\n 'Billion' : {\n 'prefix': 'B',\n 'divider': 1000000000\n }\n },\n chartId = '#preview-chart',\n dataTypeJSON = ['Column', 'Line', 'Pie', 'Bar', 'Donut', 'Bubble'], // Charts that supports the data to be JSON;\n lineTypeCharts = ['Line', 'Area', 'Cumulative Line'], // Charts that does not supports the string type of data in the xaxis in the nvd3;\n dataTypeArray = ['Cumulative Line', 'Area'], // Charts that supports the data to be Array\n SAMPLE_DATA = {\n 'group1' : 'Europe',\n 'group2' : 'Asia',\n 'group3' : 'America',\n 'group4' : 'Australia'\n };\n\n// returns true if chart type is pie\nexport const isPieChart = type => type === 'Pie';\n\n// returns true if chart type is line\nexport const isLineChart = type => type === 'Line';\n\n// returns true if chart type is bar\nexport const isBarChart = type => type === 'Bar';\n\n// returns true if chart type is donut\nexport const isDonutChart = type => type === 'Donut';\n\n// returns true if chart type is bubble\nexport const isBubbleChart = type => type === 'Bubble';\n\n// returns true if chart type is column\nexport const isColumnChart = type => type === 'Column';\n\n// returns true if chart type is area\nexport const isAreaChart = type => type === 'Area';\n\n// returns true if chart type is area\nexport const isPieType = type => isPieChart(type) || isDonutChart(type);\n\n// The format of chart data is array of json objects in case of the following types of chart\nexport const isChartDataJSON = type => includes(dataTypeJSON, type) || !includes(chartTypes, type);\n\n// The format of chart data is array of objects in case of the following types of chart\nexport const isChartDataArray = type => includes(dataTypeArray, type);\n\n// returns true is the chart type is 'line', 'area' or 'cumulative line' else false\nexport const isLineTypeChart = type => includes(lineTypeCharts, type);\n\n// X/Y Domain properties are supported only for Column and Area charts\nexport const isAxisDomainSupported = type => isColumnChart(type) || isAreaChart(type);\n\n// Returns bar spacing value\nexport const getBarSpacingValue = (value, prop) => {\n if (prop === 'value') {\n return barSpacingMap[value];\n }\n if (prop === 'key') {\n return barSpacingMapInvert[value];\n }\n};\n\n// Returns radius value\nexport const getRadiusValue = (value, prop) => {\n if (prop === 'value') {\n return donutRatioMap[value];\n }\n if (prop === 'key') {\n return donutRatioMapInvert[value];\n }\n};\n\n// Returns labels config\nexport const getLabelValues = (showlabels, showlabelsoutside, prop) => {\n const labelsConfig: any = {};\n switch (showlabels) {\n case 'hide':\n labelsConfig.showlabels = false;\n break;\n case 'inside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = false;\n break;\n case 'outside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = true;\n break;\n }\n return labelsConfig;\n};\n\n// Construct the sample data\nexport const constructSampleData = (dataType, yaxisLength, shape) => {\n let first_series = [],\n second_series = [],\n third_series = [],\n first_series_array = [],\n second_series_array = [],\n third_series_array = [],\n first_series_bubble = [],\n second_series_bubble = [],\n third_series_bubble = [],\n data = [];\n switch (dataType) {\n case 'jsonFormat':\n first_series = [\n {'x': '01/01/2001', 'y': 4000000},\n {'x': '01/01/2002', 'y': 1000000},\n {'x': '01/01/2003', 'y': 5000000}\n ];\n second_series = [\n {'x': '01/01/2001', 'y': 3000000},\n {'x': '01/01/2002', 'y': 4000000},\n {'x': '01/01/2003', 'y': 7000000}\n ];\n third_series = [\n {'x': '01/01/2001', 'y': 2000000},\n {'x': '01/01/2002', 'y': 8000000},\n {'x': '01/01/2003', 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'lineChartFormat':\n first_series = [\n {'x': 1, 'y': 4000000},\n {'x': 2, 'y': 1000000},\n {'x': 3, 'y': 5000000}\n ];\n second_series = [\n {'x': 1, 'y': 3000000},\n {'x': 2, 'y': 4000000},\n {'x': 3, 'y': 7000000}\n ];\n third_series = [\n {'x': 1, 'y': 2000000},\n {'x': 2, 'y': 8000000},\n {'x': 3, 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'arrayFormat':\n first_series_array = [\n [1, 4000000],\n [2, 1000000],\n [3, 5000000]\n ];\n second_series_array = [\n [1, 3000000],\n [2, 4000000],\n [3, 7000000]\n ];\n third_series_array = [\n [1, 2000000],\n [2, 8000000],\n [3, 6000000]\n ];\n data[0] = {\n values: first_series_array,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_array,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_array,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'bubbleFormat':\n shape = shape === 'random' ? allShapes[Math.floor(Math.random() * allShapes.length)] : shape;\n first_series_bubble = [\n {'x': 80.66, 'y': 33739900, 'size': 78, 'shape': shape},\n {'x': 79.84, 'y': 81902300, 'size': 90, 'shape': shape},\n {'x': 78.6, 'y': 5523100, 'size': 45, 'shape': shape}\n ];\n second_series_bubble = [\n {'x': 72.73, 'y': 79716200, 'size': 98, 'shape': shape},\n {'x': 80.05, 'y': 61801600, 'size': 20, 'shape': shape},\n {'x': 72.49, 'y': 73137200, 'size': 34, 'shape': shape}\n ];\n third_series_bubble = [\n {'x': 68.09, 'y': 33739900, 'size': 45, 'shape': shape},\n {'x': 81.55, 'y': 7485600, 'size': 78, 'shape': shape},\n {'x': 68.60, 'y': 141850000, 'size': 56, 'shape': shape}\n ];\n data[0] = {\n values: first_series_bubble,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_bubble,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_bubble,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'pieChartFormat':\n data = [\n {'x': SAMPLE_DATA.group1, 'y': 1000000},\n {'x': SAMPLE_DATA.group2, 'y': 2000000},\n {'x': SAMPLE_DATA.group3, 'y': 3000000},\n {'x': SAMPLE_DATA.group4, 'y': 4000000}\n ];\n break;\n }\n return data;\n};\n\nexport const getDataType = widgetContext => {\n const type = widgetContext.type;\n if (isLineChart(type)) {\n return 'lineChartFormat';\n }\n if (isPieType(type)) {\n return 'pieChartFormat';\n }\n if (isBubbleChart(type)) {\n return 'bubbleFormat';\n }\n return isChartDataJSON(type) ? 'jsonFormat' : 'arrayFormat';\n};\n\n// Sample data to populate when no data is bound\nexport const getSampleData = widgetContext => constructSampleData(getDataType(widgetContext), split(widgetContext.yaxisdatakey, ',').length, widgetContext.shape);\n\n// Check whether X/Y Domain was set to Min and is supported for the present chart\nexport const isAxisDomainValid = (widgetContext, axis) => {\n if (widgetContext[axis + 'domain'] === 'Min' && (isAxisDomainSupported(widgetContext.type))) {\n return true;\n }\n return false;\n};\n\n// Check whether min and max values are finite or not\nexport const areMinMaxValuesValid = values => {\n if (isFinite(values.min) && isFinite(values.max)) {\n return true;\n }\n return false;\n};\n\nexport const getYScaleMinValue = value => {\n const _min = Math.floor(value);\n /* If the number has a) decimal part returning floor value - 0.1\n b) no decimal part returning floor value - 1 */\n return Math.abs(value) - _min > 0 ? value - 0.1 : _min - 1;\n};\n\n// Chooses the data points of line/cumulative line/area chart and highlights them\nexport const highlightPoints = (id, highlightpoints) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n if (highlightpoints) {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '6px')\n .style('fill-opacity', '0.95')\n .style('stroke-opacity', '0.95');\n } else {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '0px')\n .style('fill-opacity', '0');\n }\n};\n\n// Chooses the line of line/cumulative line and increases the thickness of it\nexport const setLineThickness = (id, thickness) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n thickness = thickness || 1.5;\n\n const lines = chartSvg.selectAll('.nv-line');\n\n if (lines.size() !== 0) {\n lines.style('stroke-width', thickness);\n }\n};\n\n// Constructing a common key value map for preview and canvas mode\nexport const initProperties = (widgetContext, propertyValueMap) => {\n if (!propertyValueMap || isEmptyObject(propertyValueMap)) {\n propertyValueMap = {};\n }\n forEach(basicProperties, prop => {\n if (isUndefined(propertyValueMap[prop])) {\n propertyValueMap[prop] = widgetContext[prop];\n }\n });\n\n return propertyValueMap;\n};\n\nexport const getNumberValue = (value, callback) => {\n return isNaN(parseInt(value, 10)) ? callback(value, 'value') : value;\n};\n\n// Formats the given value according to date format\nexport const getDateFormatedData = (dateFormat, d) => {\n dateFormat = dateFormat || '%x';\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if(dateFormat == '%c') {\n dateFormat = '%a %b %e %X %Y';\n }\n return d3.timeFormat(dateFormat)(new Date(moment(moment(d).format()).valueOf()));\n};\nconst removeTrailingZeros = value => {\n if(!value) {\n return value;\n }\n // Convert value to a string if it's a number\n const stringValue = typeof value === 'number' ? value.toString() : value;\n\n // Remove trailing zeros\n return stringValue.replace(/\\.0+([A-Za-z]*)$/, '$1').replace(/\\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');\n};\n\n// Formats the given value according to number format\nexport const getNumberFormatedData = (numberFormat, d) => {\n let formattedData,\n divider,\n prefix;\n // formatting the data based on number format selected\n if (numberFormat) {\n let numberFormatter;\n if(numberFormat == 'Thousand' || numberFormat == 'Million' || numberFormat == 'Billion') {\n numberFormatter = d3.format(',.2s');\n } else if(numberFormat == '%') {\n numberFormatter = d3.format('.2%');\n }else if(numberFormat == '.f') {\n numberFormatter = d3.format('.2f');\n } else {\n numberFormatter = d3.format(numberFormat);\n }\n formattedData = numberFormatter(d);\n\n\n // Getting the respective divider[1000,1000000,1000000000] based on the number format choosen\n divider = (tickformats[numberFormat] && tickformats[numberFormat].divider) || 0;\n prefix = tickformats[numberFormat] && tickformats[numberFormat].prefix;\n if (prefix && divider !== 0) {\n formattedData = d3.format('.2f')(d / divider) + prefix;\n }\n } else {\n // Auto formatting the data when no formating option is chosen\n formattedData = d >= 1000 ? d3.format('.1s')(d) : d;\n }\n formattedData = removeTrailingZeros(formattedData);\n return formattedData;\n};\n\n// Set the visibility property of the chart x,y axis due to a bug in the nvd3\nexport const toggleAxisShow = (property, value) => {\n const $xAxis = d3.select(chartId + ' g.nv-axis.nv-x'),\n $yAxis = d3.select(chartId + ' g.nv-axis.nv-y');\n if (property === 'showxaxis') {\n $xAxis.style('visibility', value ? 'visible' : 'hidden');\n } else {\n $yAxis.style('visibility', value ? 'visible' : 'hidden');\n }\n};\n\nexport const modifyLegendPosition = (widgetContext, position, id) => {\n const showLegend = isShowLegend(widgetContext.showlegend),\n chart_Id = id ? '#wmChart' + id : chartId,\n legendWrap = d3.select(chart_Id + ' .nv-legendWrap'),\n legendPadding = 5;\n // Return when showlegend is false\n if (!showLegend || !legendWrap['_groups'][0][0]) {\n return;\n }\n if (position === 'bottom') {\n const legendWrapHeight = legendWrap['_groups'][0][0].getBoundingClientRect().height,\n wrap = d3.select(chart_Id + ' .nv-wrap'),\n wrapTransform = (wrap && wrap.attr('transform')) ? wrap.attr('transform').replace(/, /g, ',') : '',\n coordinates = /translate\\(\\s*([^\\s,)]+)[ ,]([^\\s,)]+)/.exec(wrapTransform),\n getChartHeight = () => {\n let chartHeight = $(chart_Id + ' svg>.nvd3.nv-wrap')[0].getBoundingClientRect().height;\n if (chartHeight === 0) { // fix for IE\n chartHeight = ($(chart_Id + ' svg')[0].getBoundingClientRect().height - (legendWrapHeight + 15));\n }\n return chartHeight;\n };\n legendWrap.attr('transform', 'translate(0 , ' + (getChartHeight() - legendWrapHeight - legendPadding) + ')');\n if (coordinates) {\n wrap.attr('transform', 'translate(' + coordinates[1] + ',' + legendPadding + ')');\n }\n }\n};\n\n// Returns value if legend need to shown or not\nexport const isShowLegend = value => {\n // Old projects will have either true or false\n if (value === 'false' || value === false) {\n return false;\n }\n if (value === 'true' || value === true) {\n return true;\n }\n // New projects will have either 'Hide Legend', 'Show Top', 'Show Bottom'\n return value === 'hide' ? false : true;\n};\n\n/**\n * Customise the tooltip for donut & pie charts and also for charts having only one value attached to yaxis\n * @param key\n * @param label\n */\nexport const customiseTooltip = (chart, propertyValueMap, widgetContext, label?) => {\n chart.tooltip.contentGenerator(key => {\n let xValue = key.data.x, yValue;\n yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);\n if (isPieType(widgetContext.type)) {\n label = key.data.x;\n xValue = '';\n }\n return '<table>' +\n '<tbody>' +\n '<tr class=\"value\"><b>' + xValue +\n '</b></tr>' +\n '<tr>' +\n '<td class=\"legend-color-guide\"><div style=\"background-color:' + key.color + ';\"></div></td>' +\n '<td class=\"key\">' + label + '</td>' +\n '<td class=\"value\">' + yValue + '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>';\n });\n};\n\n// intializes the chart obejct\nexport const initChart = (widgetContext, xDomainValues, yDomainValues, propertyValueMap, isPreview) => {\n propertyValueMap = initProperties(widgetContext, propertyValueMap);\n let chart, colors = [], xaxislabel, yaxislabel, labelConfig, radius, barSpacing,\n showLegend, xAxisValue, hasMultipleYValues;\n const xValue: any = {}, yValue: any = {};\n switch (widgetContext.type) {\n case 'Column':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y)\n .reduceXTicks(propertyValueMap.reducexticks)\n .rotateLabels(0)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .groupSpacing(barSpacing);\n break;\n case 'Cumulative Line':\n chart = nv.models.cumulativeLineChart()\n .x(d => d[0])\n .y(d => d[1])\n .showControls(false)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Line':\n chart = nv.models.lineChart()\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Area':\n chart = nv.models.stackedAreaChart()\n .x(d => d.x)\n .y(d => d.y)\n .clipEdge(true)\n .showControls(false)\n .style(propertyValueMap.areaviewtype)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Bar':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarHorizontalChart()\n .x(d => d.x)\n .y(d => d.y)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .showValues(propertyValueMap.showvalues)\n .groupSpacing(barSpacing);\n break;\n case 'Pie':\n case 'Donut':\n labelConfig = getLabelValues(propertyValueMap.showlabels, propertyValueMap.showlabelsoutside, 'value');\n radius = getNumberValue(propertyValueMap.donutratio, getRadiusValue) || donutRatioMap.medium;\n chart = nv.models.pieChart()\n .x(d => d.x)\n .y(d => d.y)\n .showLabels(labelConfig.showlabels)\n .labelType(propertyValueMap.labeltype)\n .valueFormat(d3.format('%'))\n .title(propertyValueMap.centerlabel)\n .labelThreshold(propertyValueMap.labelthreshold || 0.01)\n .labelsOutside(labelConfig.showlabelsoutside);\n if (isDonutChart(widgetContext.type)) {\n chart.donut(true)\n .donutRatio(radius);\n }\n if (propertyValueMap.labeltype === 'key-value') {\n chart.labelType(d => d.data.x + ' ' + d.data.y);\n }\n break;\n case 'Bubble':\n chart = nv.models.scatterChart()\n .x(d => d.x)\n .y(d => d.y)\n .showDistX(propertyValueMap.showxdistance)\n .showDistY(propertyValueMap.showydistance);\n break;\n }\n\n if (xDomainValues) {\n xValue.min = xDomainValues.min.x || xDomainValues.min[0];\n xValue.max = xDomainValues.max.x || xDomainValues.max[0];\n // If the values on the x axis are string then min max values gives Infinity\n if (areMinMaxValuesValid(xValue)) {\n // Reducing the min value to 0.1 so the min value is not missed out\n xValue.min = getYScaleMinValue(xValue.min);\n chart.xDomain([xValue.min, xValue.max]);\n }\n }\n\n if (yDomainValues) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = yDomainValues.min.y || yDomainValues.min[1];\n yValue.max = yDomainValues.max.y || yDomainValues.max[1];\n // If the values on the y axis are string or invalid then min max values gives Infinity\n if (areMinMaxValuesValid(yValue)) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = getYScaleMinValue(yValue.min);\n chart.yDomain([yValue.min, yValue.max]);\n }\n }\n\n // Setting the legend type choosen by user or default it will be furious\n chart.legend.vers((propertyValueMap.legendtype && propertyValueMap.legendtype.toLowerCase()) || 'furious');\n\n if (!includes(chartTypes, widgetContext.type)) {\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y);\n }\n\n\n if (isPieType(widgetContext.type)) {\n // In case of pie/donut chart formatting the values of it\n if (propertyValueMap.labeltype === 'percent') {\n chart.valueFormat(d3.format('%'));\n } else {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n // Customizing the tooltips in case of the pie and donut when labelType is value\n customiseTooltip(chart, propertyValueMap, widgetContext);\n }\n else {\n chart.showXAxis(propertyValueMap.showxaxis)\n .showYAxis(propertyValueMap.showyaxis);\n chart.legendPosition(propertyValueMap.showlegend);\n\n // Setting the labels if they are specified explicitly or taking the axiskeys chosen\n xaxislabel = propertyValueMap.xaxislabel || prettifyLabels(widgetContext.xaxisdatakey) || 'x caption';\n yaxislabel = propertyValueMap.yaxislabel || prettifyLabels(widgetContext.yaxisdatakey) || 'y caption';\n\n // Checking if y axis has multiple values\n if (widgetContext.yaxisdatakey && widgetContext.yaxisdatakey.split(',').length > 1) {\n hasMultipleYValues = true;\n }\n // Customizing the tooltip to show yaxislabel, only if the y axis contains one value\n if (!hasMultipleYValues && !isBubbleChart(widgetContext.type)) {\n customiseTooltip(chart, propertyValueMap, widgetContext, yaxislabel);\n }\n\n // Adding the units to the captions if they are specified\n xaxislabel += propertyValueMap.xunits ? '(' + propertyValueMap.xunits + ')' : '';\n yaxislabel += propertyValueMap.yunits ? '(' + propertyValueMap.yunits + ')' : '';\n\n chart.xAxis\n .axisLabel(xaxislabel)\n .axisLabelDistance(propertyValueMap.xaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels);\n\n // If date format set format based date format\n if (propertyValueMap.xdateformat || (isPreview && !isBubbleChart(widgetContext.type))) {\n if (isLineTypeChart(widgetContext.type)) {\n chart.xAxis.tickFormat(d => {\n // get the actual value\n xAxisValue = isPreview ? dateList[d - 1] : widgetContext.xDataKeyArr[d];\n return getDateFormatedData(propertyValueMap.xdateformat, xAxisValue);\n });\n } else {\n chart.xAxis.tickFormat(d => getDateFormatedData(propertyValueMap.xdateformat, d));\n }\n } else if (propertyValueMap.xnumberformat) {\n chart.xAxis.tickFormat(d => getNumberFormatedData(propertyValueMap.xnumberformat, d));\n } else {\n if (isLineTypeChart(widgetContext.type)) {\n // get the actual value\n chart.xAxis.tickFormat(d => widgetContext.xDataKeyArr[d]);\n }\n }\n chart.yAxis\n .axisLabel(yaxislabel)\n .axisLabelDistance(propertyValueMap.yaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels)\n .tickFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n if (isBarChart(widgetContext.type)) {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n }\n\n // Support for custom colors if user gives direct string of colors in text box\n if (isString(propertyValueMap.customcolors) && propertyValueMap.customcolors) {\n colors = split(propertyValueMap.customcolors, ',');\n }\n if (isArray(propertyValueMap.customcolors)) {\n colors = propertyValueMap.customcolors;\n }\n\n showLegend = isShowLegend(propertyValueMap.showlegend);\n chart.showLegend(showLegend)\n .margin({top: propertyValueMap.offsettop, right: propertyValueMap.offsetright, bottom: propertyValueMap.offsetbottom, left: propertyValueMap.offsetleft})\n .color(colors.length ? colors : themes[propertyValueMap.theme].colors);\n\n chart.tooltip.enabled(propertyValueMap.tooltips);\n widgetContext.message = propertyValueMap.nodatamessage || 'No data found';\n // setting the no data message\n chart.noData(widgetContext.message);\n\n if (isLineTypeChart(widgetContext.type) && widgetContext.highlightpoints) {\n chart.dispatch.on('stateChange', () => {\n setTimeout(() => postPlotChartProcess(widgetContext), 100);\n });\n }\n\n if (widgetContext.showlegend && (widgetContext.type === 'Donut' || widgetContext.type === 'Pie')) {\n if(widgetContext.showlegend === 'right') {\n chart.legendPosition('right');\n }\n }\n return chart;\n};\n\n// @ts-ignore\nexport const postPlotChartProcess = (widgetContext, isPreview?) => {\n const id = isPreview ? null : widgetContext.$id;\n // If user sets to highlight the data points and increase the thickness of the line\n if (isLineTypeChart(widgetContext.type)) {\n setLineThickness(id, widgetContext.linethickness);\n highlightPoints(id, widgetContext.highlightpoints);\n }\n // Modifying the legend position only when legend is shown\n // if (widgetContext.showlegend) {\n // modifyLegendPosition(widgetContext, widgetContext.showlegend, id);\n // }\n};\n\n// @ts-ignore\nexport const getDateList = () => dateList;\n\n","<div class=\"panel-heading\" *ngIf=\"title\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" *ngIf=\"subheading\" [innerHTML]=\"subheading\"></div>\n </h3>\n</div>\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n <div class=\"wm-content-info readonly-wrapper\" *ngIf=\"showContentLoadError && showNoDataMsg\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n","import {\n AfterViewInit,\n OnDestroy,\n Component,\n HostBinding,\n Injector,\n ViewEncapsulation,\n Optional,\n Inject\n} from '@angular/core';\n\nimport {\n App,\n DataSource,\n getClonedObject,\n isDataSourceEqual,\n isEmptyObject,\n isNumberType,\n prettifyLabels,\n removeAttr,\n triggerFn,\n isMobileApp,\n noop\n} from '@wm/core';\nimport { APPLY_STYLES_TYPE, IRedrawableComponent, provideAsWidgetRef, StylableComponent, styler, } from '@wm/components/base';\n\nimport { registerProps } from './chart.props';\nimport { allShapes, getDateList, getSampleData, initChart, isAreaChart, isAxisDomainValid, isBarChart, isBubbleChart, isChartDataArray, isChartDataJSON, isLineTypeChart, isPieType, postPlotChartProcess } from './chart.utils';\nimport {\n concat, debounce, fill,\n first,\n forEach, forEachRight,\n get, groupBy, includes,\n intersection,\n isArray, isEmpty, isObject, keys,\n map, max,\n maxBy,\n minBy,\n orderBy,\n replace,\n split,\n uniq\n} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const d3, nv;\n\nconst WIDGET_CONFIG = {widgetType: 'wm-chart', hostClass: 'app-chart'};\n\nconst options = {\n 'Bubble' : ['bubblesize', 'shape']\n },\n NONE = 'none',\n advanceDataProps = ['aggregation', 'aggregationcolumn', 'groupby', 'orderby'],\n // XPaths to get actual data of data points in charts\n chartDataPointXpath = {\n 'Column' : 'rect.nv-bar',\n 'Bar' : 'g.nv-bar',\n 'Area' : '.nv-stackedarea .nv-point',\n 'Cumulative Line': '.nv-cumulativeLine .nv-scatterWrap path.nv-point',\n 'Line' : '.nv-lineChart .nv-scatterWrap path.nv-point',\n 'Pie' : '.nv-pieChart .nv-slice path',\n 'Donut' : '.nv-pieChart .nv-slice path',\n 'Bubble' : '.nv-scatterChart .nv-point-paths path'\n },\n // all properties of the chart\n allOptions = ['bubblesize', 'shape'],\n styleProps = {\n 'fontunit' : 'font-size',\n 'fontsize' : 'font-size',\n 'color' : 'fill',\n 'fontfamily' : 'font-family',\n 'fontweight' : 'font-weight',\n 'fontstyle' : 'font-style',\n 'textdecoration': 'text-decoration'\n },\n // Getting the relevant aggregation function based on the selected option\n aggregationFnMap = {\n 'average' : 'AVG',\n 'count' : 'COUNT',\n 'maximum' : 'MAX',\n 'minimum' : 'MIN',\n 'sum' : 'SUM'\n };\n\nconst getBooleanValue = val => {\n if (val === true || val === 'true') {\n return true;\n }\n if (val === false || val === 'false') {\n return false;\n }\n return val;\n};\n\n// returns orderby columns and their orders in two separate arrays\nconst getLodashOrderByFormat = orderby => {\n let columns;\n const orderByColumns = [],\n orders = [];\n\n forEach(split(orderby, ','), function (col) {\n columns = split(col, ':');\n orderByColumns.push(columns[0]);\n orders.push(columns[1]);\n });\n return {\n 'columns' : orderByColumns,\n 'orders' : orders\n };\n};\n\n// Replacing the '.' by the '$' because '.' is not supported in the alias names\nconst getValidAliasName = aliasName => aliasName ? aliasName.replace(/\\./g, '$') : null;\n\n// Applying the font related styles for the chart\nconst setTextStyle = (properties, id) => {\n const charttext = d3.select('#wmChart' + id + ' svg').selectAll('text');\n if (!charttext.empty()) {\n charttext.style(properties);\n }\n};\n\nconst angle = d => {\n const a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;\n return a > 90 ? a - 180 : a;\n};\n\n@Component({\n selector: 'div[wmChart]',\n templateUrl: './chart.component.html',\n styleUrls: ['../../../../../node_modules/@wavemaker/nvd3/build/nv.d3.min.css'],\n providers: [\n provideAsWidgetRef(ChartComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChartComponent extends StylableComponent implements AfterViewInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n\n xaxisdatakey;\n yaxisdatakey;\n groupby;\n aggregation;\n aggregationcolumn;\n isVisuallyGrouped;\n orderby;\n iconclass = '';\n type: string;\n showContentLoadError;\n invalidConfig;\n errMsg;\n shape: string;\n datasource: any;\n fontsize: string;\n selecteditem: any;\n fontunit: string;\n offsettop: number;\n offsetleft: number;\n offsetright: number;\n offsetbottom: number;\n showlabels: any;\n theme: string;\n\n private $id;\n private scopedataset: any;\n private binddataset: any;\n private showlabelsoutside: any;\n private _resizeFn: any;\n private chart: any;\n private clearCanvas: boolean;\n public isLoadInProgress: boolean;\n private filterFields: boolean | any;\n private dataset: any;\n private axisoptions: any;\n private numericColumns: any;\n private nonPrimaryColumns: any = [];\n private variableInflight: any;\n private chartReady: boolean;\n private xDataKeyArr: any = [];\n private xAxisDataType: string;\n private bubblesize: any;\n public showNoDataMsg: any;\n private sampleData: any[];\n private chartData: any[] = [];\n private _processedData: any[] = [];\n private _subsciptions: any = [];\n\n @HostBinding('class.panel') title;\n\n isGroupByEnabled() {\n return !!(this.groupby && this.groupby !== NONE);\n }\n\n // Check if x and y axis that are chosen are valid to plot chart\n isValidAxis() {\n // Check if x axis and y axis are chosen and are not equal\n return this.binddataset ? (this.xaxisdatakey && this.yaxisdatakey) : true;\n }\n\n // Check if aggregation is chosen\n isAggregationEnabled() {\n return !!((this.isGroupByEnabled() && this.aggregation !== NONE && this.aggregationcolumn));\n }\n\n // Check if either groupby, aggregation or orderby is chosen\n isDataFilteringEnabled() {\n /*Query need to be triggered if any of the following cases satisfy\n * 1. Group By and aggregation both chosen\n * 2. Only Order By is chosen\n * */\n\n return this.isAggregationEnabled() || (!this.isVisuallyGrouped && this.orderby);\n }\n\n /*Charts like Line,Area,Cumulative Line does not support any other datatype\n other than integer unlike the column and bar.It is a nvd3 issue. Inorder to\n support that this is a fix*/\n getxAxisVal(dataObj, xKey, index) {\n const value = get(dataObj, xKey);\n // If x axis is other than number type then add indexes\n if (isLineTypeChart(this.type) && !isNumberType(this.xAxisDataType)) {\n // Verification to get the unique data keys\n this.xDataKeyArr.push(value);\n // Check if it is of type Date\n if (value instanceof Date) {\n return value;\n } else {\n return index;\n }\n }\n return value;\n }\n\n // Getting the min and max values among all the x values\n getXMinMaxValues(datum) {\n if (!datum) {\n return;\n }\n const xValues: any = {};\n /*\n compute the min x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n min x: 1\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n min x: 10\n */\n xValues.min = minBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n /*\n compute the max x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n max x: 3\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n max x: 30\n */\n xValues.max = maxBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n return xValues;\n }\n\n // Getting the min and max values among all the y values\n getYMinMaxValues(datum) {\n const yValues: any = {},\n minValues = [],\n maxValues = [];\n if (!datum) {\n return;\n }\n\n /*\n Getting the min and max y values among all the series of data\n compute the min y value\n eg: When data has objects\n input: [[{x:1, y:2}, {x:2, y:3}, {x:3, y:4}], [{x:2, y:3}, {x:3, y:4}, {x:4, y:5}]]\n min y values : '2'(among first set) & '3'(among second set)\n max y values : '4'(among first set) & '5'(among second set)\n\n eg: When data has arrays\n input: [[[10, 20], [20, 30], [30, 40]], [[20, 30], [30, 40], [40, 50]]]\n min y values : '20'(among first set) & '30'(among second set)\n max y values : '40'(among first set) & '50'(among second set)\n */\n\n forEach(datum, data => {\n minValues.push(minBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n maxValues.push(maxBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n });\n // Gets the least and highest values among all the min and max values of respective series of data\n yValues.min = minBy(minValues, dataObject => dataObject.y || dataObject[1]);\n yValues.max = maxBy(maxValues, dataObject => dataObject.y || dataObject[1]);\n return yValues;\n }\n\n // If the x-axis values are undefined, we return empty array else we return the values\n getValidData(values) {\n return (values.length === 1 && values[0] === undefined) ? [] : values;\n }\n\n // Returns the single data point based on the type of the data chart accepts\n valueFinder(dataObj, xKey, yKey, index?, shape?) {\n const xVal = this.getxAxisVal(dataObj, xKey, index),\n value = get(dataObj, yKey),\n yVal = parseFloat(value) || value,\n size = parseFloat(dataObj[this.bubblesize]) || 2;\n let dataPoint: any = {};\n\n if (isChartDataJSON(this.type)) {\n dataPoint.x = xVal;\n dataPoint.y = yVal;\n // only Bubble chart has the third dimension\n if (isBubbleChart(this.type)) {\n dataPoint.size = size;\n dataPoint.shape = shape || 'circle';\n }\n } else if (isChartDataArray(this.type)) {\n dataPoint = [xVal, yVal];\n }\n // Adding actual unwrapped data to chart data to use at the time of selected data point of chart event\n dataPoint._dataObj = dataObj;\n return dataPoint;\n }\n\n // Setting appropriate error messages\n setErrMsg(message) {\n if (this.showNoDataMsg) {\n this.showContentLoadError = true;\n this.invalidConfig = true;\n // TODO: Set the locale from the message\n this.errMsg = ''; // $rootScope.locale[message];\n }\n }\n\n processChartData() {\n this.sampleData = getSampleData(this);\n // scope variables used to keep the actual key values for x-axis\n this.xDataKeyArr = [];\n // Plotting the chart with sample data when the chart dataset is not bound\n if (!this.binddataset) {\n this.xDataKeyArr = getDateList();\n return this.sampleData;\n }\n\n if (!this.chartData || !this.chartData.length) {\n return [];\n }\n\n let datum = [],\n yAxisKey,\n shapes: any = [],\n values: any = [];\n const xAxisKey = this.xaxisdatakey,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n dataSet = this.chartData;\n\n if (isArray(dataSet)) {\n if (isPieType(this.type)) {\n yAxisKey = yAxisKeys[0];\n datum = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey);\n }\n });\n datum = this.getValidData(datum);\n } else {\n if (isBubbleChart(this.type)) {\n shapes = this.shape === 'random' ? allShapes : this.shape;\n }\n yAxisKeys.forEach((yAxisKey, series) => {\n values = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey, index, (isArray(shapes) && shapes[series]) || this.shape);\n }\n });\n values = this.getValidData(values);\n datum.push({\n values: values,\n key: prettifyLabels(yAxisKey)\n });\n });\n }\n }\n return datum;\n }\n\n setChartData(data) {\n if (data) {\n this._processedData = data;\n }\n }\n\n getChartData() {\n return this._processedData;\n }\n\n // constructing the grouped data based on the selection of orderby, x & y axis\n getVisuallyGroupedData(queryResponse, groupingColumn) {\n let groupData: any = {},\n groupValues: any = [],\n orderByDetails,\n maxLength;\n const chartData: any = [],\n _isAreaChart = isAreaChart(this.type),\n yAxisKey = first(split(this.yaxisdatakey, ','));\n this.xDataKeyArr = [];\n queryResponse = orderBy(queryResponse, split(this.groupby, ','));\n if (this.orderby) {\n orderByDetails = getLodashOrderByFormat(this.orderby);\n queryResponse = orderBy(queryResponse, orderByDetails.columns, orderByDetails.orders);\n }\n queryResponse = groupBy(queryResponse, groupingColumn);\n // In case of area chart all the series data should be of same length\n if (_isAreaChart) {\n maxLength = max(map(queryResponse, obj => obj.length));\n }\n forEach(queryResponse, (values, groupKey) => {\n groupValues = isAreaChart ? fill(new Array(maxLength), [0, 0]) : [];\n forEachRight(values, (value, index) => {\n groupValues[index] = this.valueFinder(value, this.xaxisdatakey, yAxisKey, index);\n });\n groupData = {\n key : groupKey,\n values : groupValues\n };\n chartData.push(groupData);\n });\n return chartData;\n }\n\n /*Decides whether the data should be visually grouped or not\n Visually grouped when a different column is choosen in the group by other than x and y axis and aggregation is not chosen*/\n getGroupingDetails() {\n if (this.isGroupByEnabled() && !this.isAggregationEnabled()) {\n let isVisuallyGrouped = false,\n visualGroupingColumn,\n groupingExpression,\n columns: any = [],\n groupingColumnIndex;\n const groupbyColumns = this.groupby && this.groupby !== NONE ? this.groupby.split(',') : [],\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [];\n\n if (groupbyColumns.length > 1) {\n /*Getting the group by column which is not selected either in x or y axis*/\n groupbyColumns.every((column, index) => {\n if (this.xaxisdatakey !== column && $.inArray(column, yAxisKeys) === -1) {\n isVisuallyGrouped = true;\n visualGroupingColumn = column;\n groupingColumnIndex = index;\n groupbyColumns.splice(groupingColumnIndex, 1);\n return false;\n }\n return true;\n });\n // Constructing the groupby expression\n if (visualGroupingColumn) {\n columns.push(visualGroupingColumn);\n }\n\n if (groupbyColumns.length) {\n columns = concat(columns, groupbyColumns);\n }\n }\n // If x and y axis are not included in aggregation need to be included in groupby\n if (this.xaxisdatakey !== this.aggregationcolumn) {\n columns.push(this.xaxisdatakey);\n }\n forEach(yAxisKeys, key => {\n if (key !== this.aggregationcolumn) {\n columns.push(key);\n }\n });\n groupingExpression = columns.join(',');\n // set isVisuallyGrouped flag in scope for later use\n this.isVisuallyGrouped = isVisuallyGrouped;\n\n return {\n expression: groupingExpression,\n isVisuallyGrouped: isVisuallyGrouped,\n visualGroupingColumn: visualGroupingColumn\n };\n }\n return {\n expression: '',\n isVisuallyGrouped: false,\n visualGroupingColumn: ''\n };\n }\n\n // Function to get the aggregated data after applying the aggregation & group by or order by operations.\n getAggregatedData(callback) {\n const variable: any = this.datasource,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n data: any = {};\n let sortExpr,\n columns: any = [],\n colAlias,\n orderByColumns,\n groupByFields: any = [];\n\n if (!variable) {\n return;\n }\n if (this.isGroupByEnabled()) {\n groupByFields = split(this.groupby, ',');\n }\n if (this.orderby) {\n sortExpr = replace(this.orderby, /:/g, ' ');\n columns = uniq(concat(columns, groupByFields, [this.aggregationcolumn]));\n orderByColumns = getLodashOrderByFormat(this.orderby).columns;\n // If the orderby column is chosen either in groupby or orderby then replace . with $ for that column\n forEach(intersection(columns, orderByColumns), col => {\n colAlias = getValidAliasName(col);\n // @ts-ignore\n sortExpr = replace(sortExpr, col, colAlias);\n });\n }\n if (this.isAggregationEnabled()) {\n // Send the group by in the aggregations api only if aggregation is also chosen\n data.groupByFields = groupByFields;\n data.aggregations = [\n {\n 'field': this.aggregationcolumn,\n 'type': aggregationFnMap[this.aggregation],\n 'alias': getValidAliasName(this.aggregationcolumn)\n }\n ];\n }\n // Execute the query.\n variable.execute('getAggregatedData', {\n 'aggregations' : data,\n 'sort' : sortExpr\n }).then(response => {\n // Transform the result into a format supported by the chart.\n const chartData: any = [],\n aggregationAlias: any = getValidAliasName(this.aggregationcolumn),\n xAxisAliasKey = getValidAliasName(this.xaxisdatakey),\n yAxisAliasKeys = [];\n\n yAxisKeys.forEach(yAxisKey => yAxisAliasKeys.push(getValidAliasName(yAxisKey)));\n\n forEach(response.body.content, (responseContent) => {\n const obj = {};\n // Set the response in the chartData based on 'aggregationColumn', 'xAxisDataKey' & 'yAxisDataKey'.\n if (this.isAggregationEnabled()) {\n obj[this.aggregationcolumn] = responseContent[aggregationAlias];\n obj[this.aggregationcolumn] = get(responseContent, aggregationAlias) || get(responseContent, this.aggregationcolumn);\n }\n\n obj[this.xaxisdatakey] = get(responseContent, xAxisAliasKey) || get(responseContent, this.xaxisdatakey);\n\n yAxisKeys.forEach((yAxisKey, index) => {\n obj[yAxisKey] = responseContent[yAxisAliasKeys[index]];\n obj[yAxisKey] = get(responseContent, yAxisAliasKeys[index]) || get(responseContent, yAxisKey);\n });\n\n chartData.push(obj);\n });\n\n this.chartData = chartData;\n\n triggerFn(callback);\n }, () => {\n this.chartData = [];\n this.setErrMsg('MESSAGE_ERROR_FETCH_DATA');\n triggerFn(callback);\n });\n }\n\n // This function sets maximum width for the labels that can be displayed.This will helpful when they are overlapping\n setLabelsMaxWidth() {\n let xTicks,\n tickWidth,\n maxLength,\n xDist,\n yDist,\n totalHeight,\n maxNoLabels,\n nthElement,\n labelsAvailableWidth,\n barWrapper,\n yAxisWrapper,\n svgWrapper;\n const fontsize = parseInt(this.fontsize, 10) || 12,\n isBarchart = isBarChart(this.type);\n // getting the x ticks in the chart\n xTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick').find('text');\n\n // getting the distance between the two visible ticks associated with visible text\n xTicks.each(function () {\n const xTick = $(this);\n let xTransform,\n tickDist;\n if (xTick.text() && xTick.css('opacity') === '1') {\n xTransform = xTick.parent().attr('transform').split(',');\n xDist = parseFloat(xTransform[0].substr(10));\n yDist = parseFloat(xTransform[1] || '0');\n if (!isBarchart && xDist > 0) {\n tickDist = xDist;\n } else if (yDist > 0) {\n tickDist = yDist;\n }\n if (tickWidth) {\n tickWidth = tickDist - tickWidth;\n return false;\n }\n tickWidth = tickDist;\n return true;\n }\n });\n\n // In case of bar chart getting the available space for the labels to be displayed\n if (isBarchart) {\n barWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-barsWrap')[0];\n yAxisWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-y')[0];\n svgWrapper = $('#wmChart' + this.$id + ' svg')[0];\n // getting the total height of the chart\n totalHeight = barWrapper ? barWrapper.getBoundingClientRect().height : 0;\n // getting the labels available space\n labelsAvailableWidth = yAxisWrapper ? svgWrapper.getBoundingClientRect().width - yAxisWrapper.getBoundingClientRect().width : svgWrapper.getBoundingClientRect().width;\n // Setting the max length for the label\n maxLength = Math.round(labelsAvailableWidth / fontsize);\n // if available space for each label is less than the font-size\n // then limiting the labels to be displayed\n if (tickWidth < fontsize) {\n // calculate the maximum no of labels to be fitted\n maxNoLabels = totalHeight / fontsize;\n // showing only the nth element\n nthElement = Math.ceil(this.chartData.length / maxNoLabels);\n // showing up only some labels\n d3.select('#wmChart' + this.$id + ' svg').select('g.nv-x').selectAll('g.tick').select('text').each(function (text, i) {\n // hiding every non nth element\n if (i % nthElement !== 0) {\n d3.select(this).attr('opacity', 0);\n }\n });\n }\n } else {\n // Setting the max length for the label\n maxLength = Math.round(tickWidth / fontsize);\n }\n\n // maxLength should always be a positive number\n maxLength = Math.abs(maxLength);\n // Validating if every label exceeds the max length and if so limiting the length and adding ellipsis\n xTicks.each(function () {\n if (this.textContent.length > maxLength) {\n this.textContent = this.textContent.substr(0, maxLength) + '...';\n }\n });\n }\n\n // Returns the columns of that can be choosen in the x and y axis\n getDefaultColumns() {\n let type,\n stringColumn,\n i,\n temp;\n const defaultColumns = [],\n columns = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP) || [];\n\n for (i = 0; i < columns.length && defaultColumns.length <= 2; i += 1) {\n type = columns[i].type;\n if (!columns[i].isRelated && (isNumberType(type))) {\n defaultColumns.push(columns[i].fieldName);\n } else if (type === 'string' && !stringColumn) {\n stringColumn = columns[i].fieldName;\n }\n }\n // Other than bubble chart x: string type y: number type\n // Bubble chart x: number type y: number type\n if (stringColumn && defaultColumns.length > 0 && !isBubbleChart(this.type)) {\n temp = defaultColumns[0];\n defaultColumns[0] = stringColumn;\n defaultColumns[1] = temp;\n }\n\n return defaultColumns;\n }\n\n // Call user defined javascript function when user links it to click event of the widget.\n attachClickEvent() {\n let dataObj;\n d3.select('#wmChart' + this.$id + ' svg').selectAll(chartDataPointXpath[this.type]).style('pointer-events', 'all')\n .on('click', (event, data, index) => {\n switch (this.type) {\n case 'Column':\n case 'Bar':\n dataObj = data._dataObj;\n break;\n case 'Pie':\n case 'Donut':\n dataObj = data.data._dataObj;\n break;\n case 'Area':\n case 'Cumulative Line':\n case 'Line':\n dataObj = data[0]._dataObj;\n break;\n case 'Bubble':\n dataObj = data;\n break;\n }\n this.selecteditem = dataObj;\n this.invokeEventCallback('select', {\n $event: event,\n selectedChartItem: data,\n selectedItem: this.selecteditem\n });\n });\n\n }\n\n /* Returns Y Scale min value\n Ex: Input : 8.97\n Output : 8.87\n\n Input : 8\n Output : 7\n */\n\n postPlotProcess(chart) {\n let chartSvg,\n pieLabels,\n pieGroups,\n angleArray;\n const styleObj = {};\n const element = this.$element;\n\n postPlotChartProcess(this);\n\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n } else if (!this.showlabelsoutside) {\n /** Nvd3 has a issue in rotating text. So we will use this as a temp fix.\n * If the issue is resolved there, we can remove this.*/\n /* If it is a donut chart, then rotate the text and position them*/\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n pieLabels = chartSvg.select('.nv-pieLabels').selectAll('.nv-label');\n pieGroups = chartSvg.select('.nv-pie').selectAll('.nv-slice');\n angleArray = [];\n if (pieGroups && pieGroups.length) {\n pieGroups.each(function () {\n d3.select(this).attr('transform', function (d) {\n angleArray.push(angle(d));\n });\n });\n pieLabels.each(function (d, i) {\n const group = d3.select(this);\n $(group[0][0]).find('text').attr('transform', 'rotate(' + angleArray[i] + ')');\n });\n }\n }\n\n // prepare text style props object and set\n forEach(styleProps, (value, key) => {\n if (key === 'fontsize' || key === 'fontunit') {\n styleObj[value] = this.fontsize + this.fontunit;\n } else {\n styleObj[value] = this[key];\n }\n });\n setTextStyle(styleObj, this.$id);\n\n /*\n * allow window-resize functionality, for only-run mode as\n * updating chart is being handled by watchers of height & width in studio-mode\n * */\n triggerFn(this._resizeFn && this._resizeFn.clear);\n this._resizeFn = nv.utils.windowResize(() => {\n if (element[0].getBoundingClientRect().height) {\n chart.update();\n postPlotChartProcess(this);\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n }\n } else {\n // TODO: get parents of accordion type\n /*let parent = element.closest('.app-accordion-panel, .tab-pane').isolateScope();\n if (parent) {\n parent.initialized = false;\n }*/\n }\n });\n }\n\n // prepares and configures the chart properties\n configureChart() {\n // Copy the data only in case of pie chart with default data\n // Reason : when multiple pie charts are bound to same data, first chart theme will be applied to all charts\n let xDomainValues;\n let yDomainValues;\n let chart;\n let beforeRenderVal;\n const yformatOptions: any = {};\n\n if (this._processedData.length > 0) {\n if (isAxisDomainValid(this, 'x')) {\n xDomainValues = this.binddataset ? this.getXMinMaxValues(this._processedData[0]) : { 'min' : {'x': 1}, 'max' : {'x' : 5}};\n }\n if (isAxisDomainValid(this, 'y')) {\n yDomainValues = this.binddataset ? this.getYMinMaxValues(this._processedData) : { 'min' : {'y' : 1}, 'max' : {'y' : 5}};\n }\n }\n\n if (isPieType(this.type) && (!this.binddataset || !this.scopedataset)) {\n this._processedData = getClonedObject(this.scopedataset || this._processedData);\n }\n\n // get the chart object\n chart = initChart(this, xDomainValues, yDomainValues, null, !this.binddataset);\n\n if (isArray(this._processedData)) {\n // WMS-19499: To remove chart X-axis old ticks when chart data loaded dynamically.\n const oldgTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick');\n if (oldgTicks && oldgTicks.length) {\n oldgTicks.remove();\n }\n beforeRenderVal = this.invokeEventCallback('beforerender', { 'chartInstance' : chart});\n if (beforeRenderVal) {\n chart = beforeRenderVal;\n }\n this.chart = chart;\n // changing the default no data message\n d3.select('#wmChart' + this.$id + ' svg')\n .datum(this._processedData)\n .call(this.chart);\n this.postPlotProcess(chart);\n return chart;\n }\n }\n\n // Plotting the chart with set of the properties set to it\n plotChart() {\n const element = this.$element;\n // call user-transformed function\n this.chartData = (this.invokeEventCallback('transform')) || this.chartData;\n\n // Getting the order by data only in run mode. The order by applies for all the charts other than pie and donut charts\n if (this.isVisuallyGrouped && !isPieType(this.type)) {\n this._processedData = this.chartData;\n } else {\n this._processedData = this.processChartData();\n }\n // checking the parent container before plotting the chart\n if (!element[0].getBoundingClientRect().height) {\n return;\n }\n if (this.clearCanvas) {\n // empty svg to add-new chart\n element.find('svg').replaceWith('<svg></svg>');\n this.clearCanvas = false;\n }\n\n // In case of invalid axis show no data available message\n if (!this.isValidAxis()) {\n this._processedData = [];\n }\n nv.addGraph(() => this.configureChart(), () => {\n /*Bubble chart has an time out delay of 300ms in their implementation due to which we\n * won't be getting required data points on attaching events\n * hence delaying it 600ms*/\n setTimeout( () => {\n this.attachClickEvent();\n }, 600);\n });\n this.isLoadInProgress = false;\n }\n // TODO: Need way to figure out if the datasource is a live source\n get isLiveVariable() {\n // setting the flag for the live variable in the scope for the checks\n const variableObj = this.datasource;\n return variableObj && variableObj.category === 'wm.LiveVariable';\n }\n\n plotChartProxy() {\n this.showContentLoadError = false;\n this.invalidConfig = false;\n // Checking if x and y axis are chosen\n this.isLoadInProgress = true;\n const groupingDetails = this.getGroupingDetails();\n // If aggregation/group by/order by properties have been set, then get the aggregated data and plot the result in the chart.\n // TODO: datasource for live variable detection\n if (this.binddataset && this.isLiveVariable && (this.filterFields || this.isDataFilteringEnabled())) {\n this.getAggregatedData(() => this.plotChart());\n } else { // Else, simply plot the chart.\n // In case of live variable resetting the aggregated data to the normal dataset when the aggregation has been removed\n if (this.dataset && this.isLiveVariable) {\n this.chartData = this.dataset;\n if (this.isGroupByEnabled() && groupingDetails.isVisuallyGrouped) {\n this.chartData = this.getVisuallyGroupedData(this.chartData, groupingDetails.visualGroupingColumn);\n }\n\n }\n this.plotChart();\n }\n }\n\n // sets the default x and y axis options\n setDefaultAxisOptions() {\n const defaultColumns = this.getDefaultColumns();\n // If we get the valid default columns then assign them as the x and y axis\n // In case of service variable we may not get the valid columns because we cannot know the datatypes\n this.xaxisdatakey = defaultColumns[0] || null;\n this.yaxisdatakey = defaultColumns[1] || null;\n }\n\n getCutomizedOptions(prop, fields) {\n const groupByColumns = split(this.groupby, ','),\n aggColumns = split(this.aggregationcolumn, ',');\n if (!this.binddataset) {\n return fields;\n }\n if (!this.axisoptions) {\n this.axisoptions = fields;\n }\n let newOptions;\n switch (prop) {\n case 'xaxisdatakey':\n // If group by enabled, columns chosen in groupby will be populated in x axis options\n if (this.isGroupByEnabled()) {\n newOptions = groupByColumns;\n }\n break;\n case 'yaxisdatakey':\n // If aggregation by enabled, columns chosen in aggregation will be populated in y axis options\n if (this.isAggregationEnabled()) {\n newOptions = aggColumns;\n } else if (this.isLiveVariable) {\n // In case of live variable populating only numeric columns\n newOptions = this.numericColumns;\n }\n break;\n case 'groupby':\n // Filtering only non primary key columns\n if (this.isLiveVariable && this.nonPrimaryColumns && this.nonPrimaryColumns.length) {\n newOptions = this.nonPrimaryColumns;\n }\n break;\n case 'aggregationcolumn':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled() && this.aggregation !== 'count') {\n newOptions = this.numericColumns;\n }\n break;\n case 'orderby':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled()) {\n newOptions = uniq(concat(groupByColumns, aggColumns));\n }\n break;\n case 'bubblesize':\n if (this.numericColumns && this.numericColumns.length) {\n newOptions = this.numericColumns;\n }\n break;\n }\n\n return newOptions || fields || this.axisoptions;\n }\n\n // Function that iterates through all the columns and then fetching the numeric and non primary columns among them\n setNumericandNonPrimaryColumns() {\n let columns,\n type;\n const propertiesMap = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP);\n this.numericColumns = [];\n this.nonPrimaryColumns = [];\n // Fetching all the columns\n if (this.dataset && !isEmpty(propertiesMap)) {\n columns = []; // TODO: fetchPropertiesMapColumns(propertiesMap);\n }\n\n if (columns) {\n // Iterating through all the columns and fetching the numeric and non primary key columns\n forEach(Object.keys(columns), (key) => {\n type = columns[key].type;\n if (isNumberType(type)) {\n this.numericColumns.push(key);\n }\n // Hiding only table's primary key\n if (columns[key].isRelatedPk === 'true' || !columns[key].isPrimaryKey) {\n this.nonPrimaryColumns.push(key);\n }\n });\n this.numericColumns = this.numericColumns.sort();\n this.nonPrimaryColumns = this.nonPrimaryColumns.sort();\n }\n }\n\n // plot the chart\n handleDataSet(newVal) {\n this.errMsg = '';\n // Resetting the flag to false when the binding was removed\n if (!newVal && !this.binddataset) {\n this.isVisuallyGrouped = false;\n this.axisoptions = null;\n }\n\n // liveVariables contain data in 'data' property' of the variable\n this.chartData = this.isLiveVariable ? newVal || '' : (newVal && newVal.dataValue === '' && keys(newVal).length === 1) ? '' : newVal;\n\n // if the data returned is an object make it an array of object\n if (!isArray(this.chartData) && isObject(this.chartData)) {\n this.chartData = [this.chartData];\n }\n\n if (newVal && newVal.filterFields) {\n this.filterFields = newVal.filterFields;\n }\n\n // plotchart for only valid data and only after bound variable returns data\n if (this.chartData) {\n this._plotChartProxy();\n }\n }\n\n _plotChartProxy = debounce(this.plotChartProxy.bind(this), 100);\n\n // sets the center label for donut chart type\n setDonutCenterLabel(labelValue) {\n let chartSvg, pieGroups;\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n\n pieGroups = chartSvg.select('.nv-wrap.nv-pie').select('.nv-pie');\n pieGroups.text('');\n pieGroups.append('text')\n .attr('dy', '.35em')\n .attr('text-anchor', 'middle')\n .attr('class', 'nv-pie-title')\n .text(labelValue)\n .each(function (d) {\n var d3text = d3.select(this),\n circ = d3.select(this.parentElement),\n totalWidth = Number(circ.node().getBoundingClientRect().width),\n // minus the ring width from total width\n availWidth = totalWidth - 30,\n textWidth = this.getComputedTextLength();\n d3text.attr(\"data-scale\", availWidth / textWidth);\n }).style(\"font-size\", function() {\n // 16 is the default font size to multiply with the scaled value and 24 is the maximum font size that can be applied\n var fontSize = 16 * d3.select(this).attr(\"data-scale\");\n return fontSize > 24 ? 24 : fontSize + \"px\";\n });\n }\n\n onPropertyChange(key, newVal, oldVal?) {\n super.onPropertyChange(key, newVal, oldVal);\n switch (key) {\n case 'dataset':\n this.handleDataSet(newVal);\n break;\n case 'centerlabel':\n if (this.chart) {\n this.chart.title(newVal);\n this.setDonutCenterLabel(newVal);\n }\n break;\n case 'type':\n // Based on the change in type deciding the default margins\n if (isPieType(this.type)) {\n this.offsettop = 20;\n this.offsetright = 0;\n this.offsetbottom = 0;\n this.offsetleft = 0;\n } else if (oldVal === 'Pie' || oldVal === 'Donut') {\n this.offsettop = 25;\n this.offsetright = 25;\n this.offsetbottom = 55;\n this.offsetleft = 75;\n }\n\n if (oldVal !== newVal) {\n this.clearCanvas = true;\n }\n // In studio mode, configure properties dependent on chart type\n this._plotChartProxy();\n break;\n default:\n // In RunMode, the plotchart method will not be called for all property change\n this._plotChartProxy();\n break;\n }\n if (includes(advanceDataProps, key)) {\n this._plotChartProxy();\n }\n }\n\n handleLoading(data) {\n const dataSource = this.datasource;\n if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {\n this.variableInflight = data.active;\n this.isLoadInProgress = data.active;\n }\n }\n\n hideTooltip() {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n }\n\n onStyleChange(key, newVal, oldVal) {\n const styleObj = {};\n super.onStyleChange(key, newVal, oldVal);\n switch (key) {\n case 'fontsize':\n case 'fontunit':\n case 'color':\n case 'fontfamily':\n case 'fontweight':\n case 'fontstyle':\n case 'textdecoration':\n styleObj[styleProps[key]] = (key === 'fontsize' || key === 'fontunit') ? this.fontsize + this.fontunit : newVal;\n setTextStyle(styleObj, this.$id);\n break;\n }\n }\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['fontsize', 'fontunit', 'color', 'fontfamily', 'fontweight', 'fontstyle', 'textdecoration']);\n\n // generate unique id for the component\n this.$id = this.widgetId || Math.random();\n // remove title attribute as the element on hover shows you the hint through-out the element\n removeAttr(this.nativeElement, 'title');\n this.chartReady = false;\n this.binddataset = this.nativeElement.getAttribute('dataset.bind');\n // Show loading status based on the variable life cycle\n this._subsciptions.push(this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)));\n // Will hide tolltip of a chart in mobile when the user scrolls.\n this._subsciptions.push(this.app.subscribe('iscroll-start', () => {this.hideTooltip();}));\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n // For old projects\n if (!includes(['outside', 'inside', 'hide'], this.showlabels)) {\n this.showlabels = getBooleanValue(this.showlabels);\n this.showlabelsoutside = getBooleanValue(this.showlabelsoutside);\n this.showlabels = this.showlabels ? (this.showlabelsoutside ? 'outside' : 'inside') : 'hide';\n }\n\n if (!this.theme) {\n // Default theme for pie/donut is Azure and for other it is Terrestrial\n this.theme = isPieType(this.type) ? 'Azure' : 'Terrestrial';\n }\n\n this.nativeElement.setAttribute('id', 'wmChart' + this.$id);\n // When there is not value binding, then plot the chart with sample data\n if (!this.binddataset && !this.nativeElement.getAttribute('scopedataset')) {\n this._plotChartProxy();\n }\n }\n\n ngOnDestroy() {\n // destroy all subscriptions to prevent memory leak.\n this.hideTooltip();\n this._subsciptions.forEach((subscription)=>{\n subscription();\n });\n super.ngOnDestroy();\n }\n redraw = this._plotChartProxy.bind(this);\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { ChartComponent } from './chart.component';\n\nconst components = [\n ChartComponent\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChartModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/chart/src/chart.props.ts","../../../../projects/components/widgets/chart/src/chart.utils.ts","../../../../projects/components/widgets/chart/src/chart.component.html","../../../../projects/components/widgets/chart/src/chart.component.ts","../../../../projects/components/widgets/chart/src/chart.module.ts","../../../../projects/components/widgets/chart/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-chart',\n new Map(\n [\n ['aggregation', {value: 'none', ...PROP_STRING}],\n ['aggregationcolumn', PROP_STRING],\n ['areaviewtype', {value: 'stack', ...PROP_STRING}],\n ['barspacing', {value: 'medium', ...PROP_STRING}],\n ['bubblesize', PROP_STRING],\n ['centerlabel', PROP_STRING],\n ['class', PROP_STRING],\n ['customcolors', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['donutratio', {value: 'medium', ...PROP_STRING}],\n ['formattype', {value: '', PROP_STRING}],\n ['groupby', PROP_STRING],\n ['height', {value: '210px', PROP_STRING}],\n ['highlightpoints', PROP_BOOLEAN],\n ['iconclass', PROP_STRING],\n ['interpolation', {value: 'linear', ...PROP_STRING}],\n ['labelthreshold', {value: 0.01, ...PROP_NUMBER}],\n ['labeltype', {value: 'percent', ...PROP_STRING}],\n ['legendtype', {value: 'furious', ...PROP_STRING}],\n ['linethickness', PROP_STRING],\n ['loadingdatamsg', {value: 'Loading...', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Available.', ...PROP_STRING}],\n ['offset', PROP_STRING],\n ['offsetbottom', {value: 55, ...PROP_NUMBER}],\n ['offsetleft', {value: 75, ...PROP_NUMBER}],\n ['offsetright', {value: 25, ...PROP_NUMBER}],\n ['offsettop', {value: 25, ...PROP_NUMBER}],\n ['orderby', PROP_STRING],\n ['reducexticks', {value: true, ...PROP_BOOLEAN}],\n ['shape', {value: 'circle', ...PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showlabels', {value: 'outside', ...PROP_STRING}],\n ['showlabelsoutside', {value: true, ...PROP_BOOLEAN}],\n ['showlegend', {value: 'top', ...PROP_STRING}],\n ['showvalues', {value: false, ...PROP_BOOLEAN}],\n ['showxaxis', {value: true, ...PROP_BOOLEAN}],\n ['showxdistance', {value: false, ...PROP_BOOLEAN}],\n ['showyaxis', {value: true, ...PROP_BOOLEAN}],\n ['showydistance', {value: false, ...PROP_BOOLEAN}],\n ['staggerlabels', {value: false, ...PROP_BOOLEAN}],\n ['subheading', PROP_STRING],\n ['theme', PROP_STRING],\n ['title', PROP_STRING],\n ['tooltips', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['viewtype', {value: 'Grouped', ...PROP_STRING}],\n ['xaxisdatakey', PROP_STRING],\n ['xaxislabel', PROP_STRING],\n ['xaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['xdateformat', PROP_STRING],\n ['xdomain', {value: 'Default', ...PROP_STRING}],\n ['xnumberformat', PROP_STRING],\n ['xunits', PROP_STRING],\n ['yaxisdatakey', PROP_STRING],\n ['yaxislabel', PROP_STRING],\n ['yaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['ydomain', {value: 'Default', ...PROP_STRING}],\n ['ynumberformat', PROP_STRING],\n ['yunits', PROP_STRING]\n ]\n )\n );\n};\n","import {isEmptyObject, prettifyLabels} from '@wm/core';\nimport {forEach, includes, invert, isArray, isFinite, isString, isUndefined, split} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const moment;\ndeclare const d3, nv;\n\nexport const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'],\n allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];\n\nconst dateList = ['01/01/2001', '01/01/2002', '01/01/2003'],\n themes = {\n 'Terrestrial': {\n colors: ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5'],\n tooltip: {\n 'backgroundColor': '#de7d28',\n 'textColor': '#FFFFFF'\n }\n },\n 'Annabelle': {\n colors: ['#393b79', '#5254a3', '#6b6ecf', '#9c9ede', '#637939', '#8ca252', '#b5cf6b', '#cedb9c', '#8c6d31', '#bd9e39', '#e7ba52', '#e7cb94', '#843c39', '#ad494a', '#d6616b', '#e7969c', '#7b4173', '#a55194', '#ce6dbd', '#de9ed6'],\n tooltip: {\n 'backgroundColor': '#2e306f',\n 'textColor': '#FFFFFF'\n }\n },\n 'Azure': {\n colors: ['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#636363', '#969696', '#bdbdbd', '#d9d9d9'],\n tooltip: {\n 'backgroundColor': '#3182bd',\n 'textColor': '#FFFFFF'\n }\n },\n 'Retro': {\n colors: ['#0ca7a1', '#ffa615', '#334957', '#acc5c2', '#988f90', '#8accc9', '#515151', '#f27861', '#36c9fd', '#794668', '#0f709d', '#0d2738', '#44be78', '#4a1839', '#6a393f', '#557d8b', '#6c331c', '#1c1c1c', '#861500', '#09562a'],\n tooltip: {\n 'backgroundColor': '#80513a',\n 'textColor': '#FFFFFF'\n }\n },\n 'Mellow': {\n colors: ['#f0dcbf', '#88c877', '#aeb918', '#2e2c23', '#ddddd2', '#dfe956', '#4c963b', '#5d3801', '#e1eec3', '#cd8472', '#fcfab3', '#9a4635', '#9295ad', '#2e3f12', '#565677', '#557d8b', '#4f4d02', '#0c0c1b', '#833324', '#24120e'],\n tooltip: {\n 'backgroundColor': '#7c9e73',\n 'textColor': '#FFFFFF'\n }\n },\n 'Orient': {\n colors: ['#a80000', '#cc6c3c', '#f0e400', '#000084', '#fccc6c', '#009c6c', '#cc309c', '#78cc00', '#fc84e4', '#48e4fc', '#4878d8', '#186c0c', '#606060', '#a8a8a8', '#000000', '#d7d7d7', '#75a06e', '#190d0b', '#888888', '#694b84'],\n tooltip: {\n 'backgroundColor': '#c14242',\n 'textColor': '#FFFFFF'\n }\n },\n 'GrayScale': {\n colors: ['#141414', '#353535', '#5b5b5b', '#848484', '#a8a8a8', '#c3c3c3', '#e0e0e0', '#c8c8c8', '#a5a5a5', '#878787', '#656565', '#4e4e4e', '#303030', '#1c1c1c', '#4f4f4f', '#3b3b3b', '#757575', '#606060', '#868686', '#c1c1c1'],\n tooltip: {\n 'backgroundColor': '#575757',\n 'textColor': '#FFFFFF'\n }\n },\n 'Flyer': {\n colors: ['#3f454c', '#5a646e', '#848778', '#cededf', '#74c4dd', '#0946ed', '#380bb1', '#000ff0', '#f54a23', '#1db262', '#bca3aa', '#ffa500', '#a86b32', '#63a18c', '#56795e', '#934343', '#b75f5f', '#752d2d', '#4e1111', '#920606'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n },\n 'Luminosity': {\n colors: ['#FFFFFF', '#e4e4e4', '#00bcd4', '#f0dd2f', '#00aabf', '#018376', '#e91e63', '#39e5d4', '#ff6d6d', '#00ff76', '#ff9800', '#969696', '#ff4200', '#e00000', '#95cbe5', '#5331ff', '#fff4a7', '#e7a800', '#0061e4', '#d5e7ff'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n }\n },\n basicProperties = ['xaxislabel', 'yaxislabel', 'xunits', 'yunits', 'xnumberformat', 'xdateformat', 'ynumberformat',\n 'showvalues', 'showlabels', 'viewtype', 'areaviewtype', 'staggerlabels', 'reducexticks', 'offsettop', 'offsetbottom', 'offsetright', 'offsetleft',\n 'barspacing', 'xaxislabeldistance', 'yaxislabeldistance', 'theme', 'labeltype', 'donutratio', 'showlabelsoutside', 'showxdistance', 'showydistance', 'shape', 'nodatamessage', 'captions', 'showxaxis', 'showyaxis',\n 'centerlabel', 'customcolors', 'showlegend', 'legendtype', 'xdomain', 'ydomain', 'tooltips', 'linethickness', 'highlightpoints', 'interpolation', 'labelthreshold'],\n barSpacingMap = {\n 'small' : 0.3,\n 'medium' : 0.5,\n 'large' : 0.8\n },\n donutRatioMap = {\n 'small' : 0.3,\n 'medium' : 0.6,\n 'large' : 0.7\n },\n barSpacingMapInvert = invert(barSpacingMap),\n donutRatioMapInvert = invert(donutRatioMap),\n tickformats = {\n 'Thousand': {\n 'prefix': 'K',\n 'divider': 1000\n },\n 'Million' : {\n 'prefix': 'M',\n 'divider': 1000000\n },\n 'Billion' : {\n 'prefix': 'B',\n 'divider': 1000000000\n }\n },\n chartId = '#preview-chart',\n dataTypeJSON = ['Column', 'Line', 'Pie', 'Bar', 'Donut', 'Bubble'], // Charts that supports the data to be JSON;\n lineTypeCharts = ['Line', 'Area', 'Cumulative Line'], // Charts that does not supports the string type of data in the xaxis in the nvd3;\n dataTypeArray = ['Cumulative Line', 'Area'], // Charts that supports the data to be Array\n SAMPLE_DATA = {\n 'group1' : 'Europe',\n 'group2' : 'Asia',\n 'group3' : 'America',\n 'group4' : 'Australia'\n };\n\n// returns true if chart type is pie\nexport const isPieChart = type => type === 'Pie';\n\n// returns true if chart type is line\nexport const isLineChart = type => type === 'Line';\n\n// returns true if chart type is bar\nexport const isBarChart = type => type === 'Bar';\n\n// returns true if chart type is donut\nexport const isDonutChart = type => type === 'Donut';\n\n// returns true if chart type is bubble\nexport const isBubbleChart = type => type === 'Bubble';\n\n// returns true if chart type is column\nexport const isColumnChart = type => type === 'Column';\n\n// returns true if chart type is area\nexport const isAreaChart = type => type === 'Area';\n\n// returns true if chart type is area\nexport const isPieType = type => isPieChart(type) || isDonutChart(type);\n\n// The format of chart data is array of json objects in case of the following types of chart\nexport const isChartDataJSON = type => includes(dataTypeJSON, type) || !includes(chartTypes, type);\n\n// The format of chart data is array of objects in case of the following types of chart\nexport const isChartDataArray = type => includes(dataTypeArray, type);\n\n// returns true is the chart type is 'line', 'area' or 'cumulative line' else false\nexport const isLineTypeChart = type => includes(lineTypeCharts, type);\n\n// X/Y Domain properties are supported only for Column and Area charts\nexport const isAxisDomainSupported = type => isColumnChart(type) || isAreaChart(type);\n\n// Returns bar spacing value\nexport const getBarSpacingValue = (value, prop) => {\n if (prop === 'value') {\n return barSpacingMap[value];\n }\n if (prop === 'key') {\n return barSpacingMapInvert[value];\n }\n};\n\n// Returns radius value\nexport const getRadiusValue = (value, prop) => {\n if (prop === 'value') {\n return donutRatioMap[value];\n }\n if (prop === 'key') {\n return donutRatioMapInvert[value];\n }\n};\n\n// Returns labels config\nexport const getLabelValues = (showlabels, showlabelsoutside, prop) => {\n const labelsConfig: any = {};\n switch (showlabels) {\n case 'hide':\n labelsConfig.showlabels = false;\n break;\n case 'inside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = false;\n break;\n case 'outside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = true;\n break;\n }\n return labelsConfig;\n};\n\n// Construct the sample data\nexport const constructSampleData = (dataType, yaxisLength, shape) => {\n let first_series = [],\n second_series = [],\n third_series = [],\n first_series_array = [],\n second_series_array = [],\n third_series_array = [],\n first_series_bubble = [],\n second_series_bubble = [],\n third_series_bubble = [],\n data = [];\n switch (dataType) {\n case 'jsonFormat':\n first_series = [\n {'x': '01/01/2001', 'y': 4000000},\n {'x': '01/01/2002', 'y': 1000000},\n {'x': '01/01/2003', 'y': 5000000}\n ];\n second_series = [\n {'x': '01/01/2001', 'y': 3000000},\n {'x': '01/01/2002', 'y': 4000000},\n {'x': '01/01/2003', 'y': 7000000}\n ];\n third_series = [\n {'x': '01/01/2001', 'y': 2000000},\n {'x': '01/01/2002', 'y': 8000000},\n {'x': '01/01/2003', 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'lineChartFormat':\n first_series = [\n {'x': 1, 'y': 4000000},\n {'x': 2, 'y': 1000000},\n {'x': 3, 'y': 5000000}\n ];\n second_series = [\n {'x': 1, 'y': 3000000},\n {'x': 2, 'y': 4000000},\n {'x': 3, 'y': 7000000}\n ];\n third_series = [\n {'x': 1, 'y': 2000000},\n {'x': 2, 'y': 8000000},\n {'x': 3, 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'arrayFormat':\n first_series_array = [\n [1, 4000000],\n [2, 1000000],\n [3, 5000000]\n ];\n second_series_array = [\n [1, 3000000],\n [2, 4000000],\n [3, 7000000]\n ];\n third_series_array = [\n [1, 2000000],\n [2, 8000000],\n [3, 6000000]\n ];\n data[0] = {\n values: first_series_array,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_array,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_array,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'bubbleFormat':\n shape = shape === 'random' ? allShapes[Math.floor(Math.random() * allShapes.length)] : shape;\n first_series_bubble = [\n {'x': 80.66, 'y': 33739900, 'size': 78, 'shape': shape},\n {'x': 79.84, 'y': 81902300, 'size': 90, 'shape': shape},\n {'x': 78.6, 'y': 5523100, 'size': 45, 'shape': shape}\n ];\n second_series_bubble = [\n {'x': 72.73, 'y': 79716200, 'size': 98, 'shape': shape},\n {'x': 80.05, 'y': 61801600, 'size': 20, 'shape': shape},\n {'x': 72.49, 'y': 73137200, 'size': 34, 'shape': shape}\n ];\n third_series_bubble = [\n {'x': 68.09, 'y': 33739900, 'size': 45, 'shape': shape},\n {'x': 81.55, 'y': 7485600, 'size': 78, 'shape': shape},\n {'x': 68.60, 'y': 141850000, 'size': 56, 'shape': shape}\n ];\n data[0] = {\n values: first_series_bubble,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_bubble,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_bubble,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'pieChartFormat':\n data = [\n {'x': SAMPLE_DATA.group1, 'y': 1000000},\n {'x': SAMPLE_DATA.group2, 'y': 2000000},\n {'x': SAMPLE_DATA.group3, 'y': 3000000},\n {'x': SAMPLE_DATA.group4, 'y': 4000000}\n ];\n break;\n }\n return data;\n};\n\nexport const getDataType = widgetContext => {\n const type = widgetContext.type;\n if (isLineChart(type)) {\n return 'lineChartFormat';\n }\n if (isPieType(type)) {\n return 'pieChartFormat';\n }\n if (isBubbleChart(type)) {\n return 'bubbleFormat';\n }\n return isChartDataJSON(type) ? 'jsonFormat' : 'arrayFormat';\n};\n\n// Sample data to populate when no data is bound\nexport const getSampleData = widgetContext => constructSampleData(getDataType(widgetContext), split(widgetContext.yaxisdatakey, ',').length, widgetContext.shape);\n\n// Check whether X/Y Domain was set to Min and is supported for the present chart\nexport const isAxisDomainValid = (widgetContext, axis) => {\n if (widgetContext[axis + 'domain'] === 'Min' && (isAxisDomainSupported(widgetContext.type))) {\n return true;\n }\n return false;\n};\n\n// Check whether min and max values are finite or not\nexport const areMinMaxValuesValid = values => {\n if (isFinite(values.min) && isFinite(values.max)) {\n return true;\n }\n return false;\n};\n\nexport const getYScaleMinValue = value => {\n const _min = Math.floor(value);\n /* If the number has a) decimal part returning floor value - 0.1\n b) no decimal part returning floor value - 1 */\n return Math.abs(value) - _min > 0 ? value - 0.1 : _min - 1;\n};\n\n// Chooses the data points of line/cumulative line/area chart and highlights them\nexport const highlightPoints = (id, highlightpoints) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n if (highlightpoints) {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '6px')\n .style('fill-opacity', '0.95')\n .style('stroke-opacity', '0.95');\n } else {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '0px')\n .style('fill-opacity', '0');\n }\n};\n\n// Chooses the line of line/cumulative line and increases the thickness of it\nexport const setLineThickness = (id, thickness) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n thickness = thickness || 1.5;\n\n const lines = chartSvg.selectAll('.nv-line');\n\n if (lines.size() !== 0) {\n lines.style('stroke-width', thickness);\n }\n};\n\n// Constructing a common key value map for preview and canvas mode\nexport const initProperties = (widgetContext, propertyValueMap) => {\n if (!propertyValueMap || isEmptyObject(propertyValueMap)) {\n propertyValueMap = {};\n }\n forEach(basicProperties, prop => {\n if (isUndefined(propertyValueMap[prop])) {\n propertyValueMap[prop] = widgetContext[prop];\n }\n });\n\n return propertyValueMap;\n};\n\nexport const getNumberValue = (value, callback) => {\n return isNaN(parseInt(value, 10)) ? callback(value, 'value') : value;\n};\n\n// Formats the given value according to date format\nexport const getDateFormatedData = (dateFormat, d) => {\n dateFormat = dateFormat || '%x';\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if(dateFormat == '%c') {\n dateFormat = '%a %b %e %X %Y';\n }\n return d3.timeFormat(dateFormat)(new Date(moment(moment(d).format()).valueOf()));\n};\nconst removeTrailingZeros = value => {\n if(!value) {\n return value;\n }\n // Convert value to a string if it's a number\n const stringValue = typeof value === 'number' ? value.toString() : value;\n\n // Remove trailing zeros\n return stringValue.replace(/\\.0+([A-Za-z]*)$/, '$1').replace(/\\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');\n};\n\n// Formats the given value according to number format\nexport const getNumberFormatedData = (numberFormat, d) => {\n let formattedData,\n divider,\n prefix;\n // formatting the data based on number format selected\n if (numberFormat) {\n let numberFormatter;\n if(numberFormat == 'Thousand' || numberFormat == 'Million' || numberFormat == 'Billion') {\n numberFormatter = d3.format(',.2s');\n } else if(numberFormat == '%') {\n numberFormatter = d3.format('.2%');\n }else if(numberFormat == '.f') {\n numberFormatter = d3.format('.2f');\n } else {\n numberFormatter = d3.format(numberFormat);\n }\n formattedData = numberFormatter(d);\n\n\n // Getting the respective divider[1000,1000000,1000000000] based on the number format choosen\n divider = (tickformats[numberFormat] && tickformats[numberFormat].divider) || 0;\n prefix = tickformats[numberFormat] && tickformats[numberFormat].prefix;\n if (prefix && divider !== 0) {\n formattedData = d3.format('.2f')(d / divider) + prefix;\n }\n } else {\n // Auto formatting the data when no formating option is chosen\n formattedData = d >= 1000 ? d3.format('.1s')(d) : d;\n }\n formattedData = removeTrailingZeros(formattedData);\n return formattedData;\n};\n\n// Set the visibility property of the chart x,y axis due to a bug in the nvd3\nexport const toggleAxisShow = (property, value) => {\n const $xAxis = d3.select(chartId + ' g.nv-axis.nv-x'),\n $yAxis = d3.select(chartId + ' g.nv-axis.nv-y');\n if (property === 'showxaxis') {\n $xAxis.style('visibility', value ? 'visible' : 'hidden');\n } else {\n $yAxis.style('visibility', value ? 'visible' : 'hidden');\n }\n};\n\nexport const modifyLegendPosition = (widgetContext, position, id) => {\n const showLegend = isShowLegend(widgetContext.showlegend),\n chart_Id = id ? '#wmChart' + id : chartId,\n legendWrap = d3.select(chart_Id + ' .nv-legendWrap'),\n legendPadding = 5;\n // Return when showlegend is false\n if (!showLegend || !legendWrap['_groups'][0][0]) {\n return;\n }\n if (position === 'bottom') {\n const legendWrapHeight = legendWrap['_groups'][0][0].getBoundingClientRect().height,\n wrap = d3.select(chart_Id + ' .nv-wrap'),\n wrapTransform = (wrap && wrap.attr('transform')) ? wrap.attr('transform').replace(/, /g, ',') : '',\n coordinates = /translate\\(\\s*([^\\s,)]+)[ ,]([^\\s,)]+)/.exec(wrapTransform),\n getChartHeight = () => {\n let chartHeight = $(chart_Id + ' svg>.nvd3.nv-wrap')[0].getBoundingClientRect().height;\n if (chartHeight === 0) { // fix for IE\n chartHeight = ($(chart_Id + ' svg')[0].getBoundingClientRect().height - (legendWrapHeight + 15));\n }\n return chartHeight;\n };\n legendWrap.attr('transform', 'translate(0 , ' + (getChartHeight() - legendWrapHeight - legendPadding) + ')');\n if (coordinates) {\n wrap.attr('transform', 'translate(' + coordinates[1] + ',' + legendPadding + ')');\n }\n }\n};\n\n// Returns value if legend need to shown or not\nexport const isShowLegend = value => {\n // Old projects will have either true or false\n if (value === 'false' || value === false) {\n return false;\n }\n if (value === 'true' || value === true) {\n return true;\n }\n // New projects will have either 'Hide Legend', 'Show Top', 'Show Bottom'\n return value === 'hide' ? false : true;\n};\n\n/**\n * Customise the tooltip for donut & pie charts and also for charts having only one value attached to yaxis\n * @param key\n * @param label\n */\nexport const customiseTooltip = (chart, propertyValueMap, widgetContext, label?) => {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n chart.tooltip.contentGenerator(key => {\n let xValue = key.data.x, yValue;\n yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);\n if (isPieType(widgetContext.type)) {\n label = key.data.x;\n xValue = '';\n }\n return '<table>' +\n '<tbody>' +\n '<tr class=\"value\"><b>' + xValue +\n '</b></tr>' +\n '<tr>' +\n '<td class=\"legend-color-guide\"><div style=\"background-color:' + key.color + ';\"></div></td>' +\n '<td class=\"key\">' + label + '</td>' +\n '<td class=\"value\">' + yValue + '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>';\n });\n};\n\n// intializes the chart obejct\nexport const initChart = (widgetContext, xDomainValues, yDomainValues, propertyValueMap, isPreview) => {\n propertyValueMap = initProperties(widgetContext, propertyValueMap);\n let chart, colors = [], xaxislabel, yaxislabel, labelConfig, radius, barSpacing,\n showLegend, xAxisValue, hasMultipleYValues;\n const xValue: any = {}, yValue: any = {};\n switch (widgetContext.type) {\n case 'Column':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y)\n .reduceXTicks(propertyValueMap.reducexticks)\n .rotateLabels(0)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .groupSpacing(barSpacing);\n break;\n case 'Cumulative Line':\n chart = nv.models.cumulativeLineChart()\n .x(d => d[0])\n .y(d => d[1])\n .showControls(false)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Line':\n chart = nv.models.lineChart()\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Area':\n chart = nv.models.stackedAreaChart()\n .x(d => d.x)\n .y(d => d.y)\n .clipEdge(true)\n .showControls(false)\n .style(propertyValueMap.areaviewtype)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Bar':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarHorizontalChart()\n .x(d => d.x)\n .y(d => d.y)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .showValues(propertyValueMap.showvalues)\n .groupSpacing(barSpacing);\n break;\n case 'Pie':\n case 'Donut':\n labelConfig = getLabelValues(propertyValueMap.showlabels, propertyValueMap.showlabelsoutside, 'value');\n radius = getNumberValue(propertyValueMap.donutratio, getRadiusValue) || donutRatioMap.medium;\n chart = nv.models.pieChart()\n .x(d => d.x)\n .y(d => d.y)\n .showLabels(labelConfig.showlabels)\n .labelType(propertyValueMap.labeltype)\n .valueFormat(d3.format('%'))\n .title(propertyValueMap.centerlabel)\n .labelThreshold(propertyValueMap.labelthreshold || 0.01)\n .labelsOutside(labelConfig.showlabelsoutside);\n if (isDonutChart(widgetContext.type)) {\n chart.donut(true)\n .donutRatio(radius);\n }\n if (propertyValueMap.labeltype === 'key-value') {\n chart.labelType(d => d.data.x + ' ' + d.data.y);\n }\n break;\n case 'Bubble':\n chart = nv.models.scatterChart()\n .x(d => d.x)\n .y(d => d.y)\n .showDistX(propertyValueMap.showxdistance)\n .showDistY(propertyValueMap.showydistance);\n break;\n }\n\n if (xDomainValues) {\n xValue.min = xDomainValues.min.x || xDomainValues.min[0];\n xValue.max = xDomainValues.max.x || xDomainValues.max[0];\n // If the values on the x axis are string then min max values gives Infinity\n if (areMinMaxValuesValid(xValue)) {\n // Reducing the min value to 0.1 so the min value is not missed out\n xValue.min = getYScaleMinValue(xValue.min);\n chart.xDomain([xValue.min, xValue.max]);\n }\n }\n\n if (yDomainValues) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = yDomainValues.min.y || yDomainValues.min[1];\n yValue.max = yDomainValues.max.y || yDomainValues.max[1];\n // If the values on the y axis are string or invalid then min max values gives Infinity\n if (areMinMaxValuesValid(yValue)) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = getYScaleMinValue(yValue.min);\n chart.yDomain([yValue.min, yValue.max]);\n }\n }\n\n // Setting the legend type choosen by user or default it will be furious\n chart.legend.vers((propertyValueMap.legendtype && propertyValueMap.legendtype.toLowerCase()) || 'furious');\n\n if (!includes(chartTypes, widgetContext.type)) {\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y);\n }\n\n\n if (isPieType(widgetContext.type)) {\n // In case of pie/donut chart formatting the values of it\n if (propertyValueMap.labeltype === 'percent') {\n chart.valueFormat(d3.format('%'));\n } else {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n // Customizing the tooltips in case of the pie and donut when labelType is value\n customiseTooltip(chart, propertyValueMap, widgetContext);\n }\n else {\n chart.showXAxis(propertyValueMap.showxaxis)\n .showYAxis(propertyValueMap.showyaxis);\n chart.legendPosition(propertyValueMap.showlegend);\n\n // Setting the labels if they are specified explicitly or taking the axiskeys chosen\n xaxislabel = propertyValueMap.xaxislabel || prettifyLabels(widgetContext.xaxisdatakey) || 'x caption';\n yaxislabel = propertyValueMap.yaxislabel || prettifyLabels(widgetContext.yaxisdatakey) || 'y caption';\n\n // Checking if y axis has multiple values\n if (widgetContext.yaxisdatakey && widgetContext.yaxisdatakey.split(',').length > 1) {\n hasMultipleYValues = true;\n }\n // Customizing the tooltip to show yaxislabel, only if the y axis contains one value\n if (!hasMultipleYValues && !isBubbleChart(widgetContext.type)) {\n customiseTooltip(chart, propertyValueMap, widgetContext, yaxislabel);\n }\n\n // Adding the units to the captions if they are specified\n xaxislabel += propertyValueMap.xunits ? '(' + propertyValueMap.xunits + ')' : '';\n yaxislabel += propertyValueMap.yunits ? '(' + propertyValueMap.yunits + ')' : '';\n\n chart.xAxis\n .axisLabel(xaxislabel)\n .axisLabelDistance(propertyValueMap.xaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels);\n\n // If date format set format based date format\n if (propertyValueMap.xdateformat || (isPreview && !isBubbleChart(widgetContext.type))) {\n if (isLineTypeChart(widgetContext.type)) {\n chart.xAxis.tickFormat(d => {\n // get the actual value\n xAxisValue = isPreview ? dateList[d - 1] : widgetContext.xDataKeyArr[d];\n return getDateFormatedData(propertyValueMap.xdateformat, xAxisValue);\n });\n } else {\n chart.xAxis.tickFormat(d => getDateFormatedData(propertyValueMap.xdateformat, d));\n }\n } else if (propertyValueMap.xnumberformat) {\n chart.xAxis.tickFormat(d => getNumberFormatedData(propertyValueMap.xnumberformat, d));\n } else {\n if (isLineTypeChart(widgetContext.type)) {\n // get the actual value\n chart.xAxis.tickFormat(d => widgetContext.xDataKeyArr[d]);\n }\n }\n chart.yAxis\n .axisLabel(yaxislabel)\n .axisLabelDistance(propertyValueMap.yaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels)\n .tickFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n if (isBarChart(widgetContext.type)) {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n }\n\n // Support for custom colors if user gives direct string of colors in text box\n if (isString(propertyValueMap.customcolors) && propertyValueMap.customcolors) {\n colors = split(propertyValueMap.customcolors, ',');\n }\n if (isArray(propertyValueMap.customcolors)) {\n colors = propertyValueMap.customcolors;\n }\n\n showLegend = isShowLegend(propertyValueMap.showlegend);\n chart.showLegend(showLegend)\n .margin({top: propertyValueMap.offsettop, right: propertyValueMap.offsetright, bottom: propertyValueMap.offsetbottom, left: propertyValueMap.offsetleft})\n .color(colors.length ? colors : themes[propertyValueMap.theme].colors);\n\n chart.tooltip.enabled(propertyValueMap.tooltips);\n widgetContext.message = propertyValueMap.nodatamessage || 'No data found';\n // setting the no data message\n chart.noData(widgetContext.message);\n\n if (isLineTypeChart(widgetContext.type) && widgetContext.highlightpoints) {\n chart.dispatch.on('stateChange', () => {\n setTimeout(() => postPlotChartProcess(widgetContext), 100);\n });\n }\n\n if (widgetContext.showlegend && (widgetContext.type === 'Donut' || widgetContext.type === 'Pie')) {\n if(widgetContext.showlegend === 'right') {\n chart.legendPosition('right');\n }\n }\n return chart;\n};\n\n// @ts-ignore\nexport const postPlotChartProcess = (widgetContext, isPreview?) => {\n const id = isPreview ? null : widgetContext.$id;\n // If user sets to highlight the data points and increase the thickness of the line\n if (isLineTypeChart(widgetContext.type)) {\n setLineThickness(id, widgetContext.linethickness);\n highlightPoints(id, widgetContext.highlightpoints);\n }\n // Modifying the legend position only when legend is shown\n // if (widgetContext.showlegend) {\n // modifyLegendPosition(widgetContext, widgetContext.showlegend, id);\n // }\n};\n\n// @ts-ignore\nexport const getDateList = () => dateList;\n\n","<div class=\"panel-heading\" *ngIf=\"title\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" *ngIf=\"subheading\" [innerHTML]=\"subheading\"></div>\n </h3>\n</div>\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n <div class=\"wm-content-info readonly-wrapper\" *ngIf=\"showContentLoadError && showNoDataMsg\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n","import {\n AfterViewInit,\n OnDestroy,\n Component,\n HostBinding,\n Injector,\n ViewEncapsulation,\n Optional,\n Inject\n} from '@angular/core';\n\nimport {\n App,\n DataSource,\n getClonedObject,\n isDataSourceEqual,\n isEmptyObject,\n isNumberType,\n prettifyLabels,\n removeAttr,\n triggerFn,\n isMobileApp,\n noop\n} from '@wm/core';\nimport { APPLY_STYLES_TYPE, IRedrawableComponent, provideAsWidgetRef, StylableComponent, styler, } from '@wm/components/base';\n\nimport { registerProps } from './chart.props';\nimport { allShapes, getDateList, getSampleData, initChart, isAreaChart, isAxisDomainValid, isBarChart, isBubbleChart, isChartDataArray, isChartDataJSON, isLineTypeChart, isPieType, postPlotChartProcess } from './chart.utils';\nimport {\n concat, debounce, fill,\n first,\n forEach, forEachRight,\n get, groupBy, includes,\n intersection,\n isArray, isEmpty, isObject, keys,\n map, max,\n maxBy,\n minBy,\n orderBy,\n replace,\n split,\n uniq\n} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const d3, nv;\n\nconst WIDGET_CONFIG = {widgetType: 'wm-chart', hostClass: 'app-chart'};\n\nconst options = {\n 'Bubble' : ['bubblesize', 'shape']\n },\n NONE = 'none',\n advanceDataProps = ['aggregation', 'aggregationcolumn', 'groupby', 'orderby'],\n // XPaths to get actual data of data points in charts\n chartDataPointXpath = {\n 'Column' : 'rect.nv-bar',\n 'Bar' : 'g.nv-bar',\n 'Area' : '.nv-stackedarea .nv-point',\n 'Cumulative Line': '.nv-cumulativeLine .nv-scatterWrap path.nv-point',\n 'Line' : '.nv-lineChart .nv-scatterWrap path.nv-point',\n 'Pie' : '.nv-pieChart .nv-slice path',\n 'Donut' : '.nv-pieChart .nv-slice path',\n 'Bubble' : '.nv-scatterChart .nv-point-paths path'\n },\n // all properties of the chart\n allOptions = ['bubblesize', 'shape'],\n styleProps = {\n 'fontunit' : 'font-size',\n 'fontsize' : 'font-size',\n 'color' : 'fill',\n 'fontfamily' : 'font-family',\n 'fontweight' : 'font-weight',\n 'fontstyle' : 'font-style',\n 'textdecoration': 'text-decoration'\n },\n // Getting the relevant aggregation function based on the selected option\n aggregationFnMap = {\n 'average' : 'AVG',\n 'count' : 'COUNT',\n 'maximum' : 'MAX',\n 'minimum' : 'MIN',\n 'sum' : 'SUM'\n };\n\nconst getBooleanValue = val => {\n if (val === true || val === 'true') {\n return true;\n }\n if (val === false || val === 'false') {\n return false;\n }\n return val;\n};\n\n// returns orderby columns and their orders in two separate arrays\nconst getLodashOrderByFormat = orderby => {\n let columns;\n const orderByColumns = [],\n orders = [];\n\n forEach(split(orderby, ','), function (col) {\n columns = split(col, ':');\n orderByColumns.push(columns[0]);\n orders.push(columns[1]);\n });\n return {\n 'columns' : orderByColumns,\n 'orders' : orders\n };\n};\n\n// Replacing the '.' by the '$' because '.' is not supported in the alias names\nconst getValidAliasName = aliasName => aliasName ? aliasName.replace(/\\./g, '$') : null;\n\n// Applying the font related styles for the chart\nconst setTextStyle = (properties, id) => {\n const charttext = d3.select('#wmChart' + id + ' svg').selectAll('text');\n if (!charttext.empty()) {\n charttext.style(properties);\n }\n};\n\nconst angle = d => {\n const a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;\n return a > 90 ? a - 180 : a;\n};\n\n@Component({\n selector: 'div[wmChart]',\n templateUrl: './chart.component.html',\n styleUrls: ['../../../../../node_modules/@wavemaker/nvd3/build/nv.d3.min.css'],\n providers: [\n provideAsWidgetRef(ChartComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChartComponent extends StylableComponent implements AfterViewInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n\n xaxisdatakey;\n yaxisdatakey;\n groupby;\n aggregation;\n aggregationcolumn;\n isVisuallyGrouped;\n orderby;\n iconclass = '';\n type: string;\n showContentLoadError;\n invalidConfig;\n errMsg;\n shape: string;\n datasource: any;\n fontsize: string;\n selecteditem: any;\n fontunit: string;\n offsettop: number;\n offsetleft: number;\n offsetright: number;\n offsetbottom: number;\n showlabels: any;\n theme: string;\n\n private $id;\n private scopedataset: any;\n private binddataset: any;\n private showlabelsoutside: any;\n private _resizeFn: any;\n private chart: any;\n private clearCanvas: boolean;\n public isLoadInProgress: boolean;\n private filterFields: boolean | any;\n private dataset: any;\n private axisoptions: any;\n private numericColumns: any;\n private nonPrimaryColumns: any = [];\n private variableInflight: any;\n private chartReady: boolean;\n private xDataKeyArr: any = [];\n private xAxisDataType: string;\n private bubblesize: any;\n public showNoDataMsg: any;\n private sampleData: any[];\n private chartData: any[] = [];\n private _processedData: any[] = [];\n private _subsciptions: any = [];\n\n @HostBinding('class.panel') title;\n\n isGroupByEnabled() {\n return !!(this.groupby && this.groupby !== NONE);\n }\n\n // Check if x and y axis that are chosen are valid to plot chart\n isValidAxis() {\n // Check if x axis and y axis are chosen and are not equal\n return this.binddataset ? (this.xaxisdatakey && this.yaxisdatakey) : true;\n }\n\n // Check if aggregation is chosen\n isAggregationEnabled() {\n return !!((this.isGroupByEnabled() && this.aggregation !== NONE && this.aggregationcolumn));\n }\n\n // Check if either groupby, aggregation or orderby is chosen\n isDataFilteringEnabled() {\n /*Query need to be triggered if any of the following cases satisfy\n * 1. Group By and aggregation both chosen\n * 2. Only Order By is chosen\n * */\n\n return this.isAggregationEnabled() || (!this.isVisuallyGrouped && this.orderby);\n }\n\n /*Charts like Line,Area,Cumulative Line does not support any other datatype\n other than integer unlike the column and bar.It is a nvd3 issue. Inorder to\n support that this is a fix*/\n getxAxisVal(dataObj, xKey, index) {\n const value = get(dataObj, xKey);\n // If x axis is other than number type then add indexes\n if (isLineTypeChart(this.type) && !isNumberType(this.xAxisDataType)) {\n // Verification to get the unique data keys\n this.xDataKeyArr.push(value);\n // Check if it is of type Date\n if (value instanceof Date) {\n return value;\n } else {\n return index;\n }\n }\n return value;\n }\n\n // Getting the min and max values among all the x values\n getXMinMaxValues(datum) {\n if (!datum) {\n return;\n }\n const xValues: any = {};\n /*\n compute the min x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n min x: 1\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n min x: 10\n */\n xValues.min = minBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n /*\n compute the max x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n max x: 3\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n max x: 30\n */\n xValues.max = maxBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n return xValues;\n }\n\n // Getting the min and max values among all the y values\n getYMinMaxValues(datum) {\n const yValues: any = {},\n minValues = [],\n maxValues = [];\n if (!datum) {\n return;\n }\n\n /*\n Getting the min and max y values among all the series of data\n compute the min y value\n eg: When data has objects\n input: [[{x:1, y:2}, {x:2, y:3}, {x:3, y:4}], [{x:2, y:3}, {x:3, y:4}, {x:4, y:5}]]\n min y values : '2'(among first set) & '3'(among second set)\n max y values : '4'(among first set) & '5'(among second set)\n\n eg: When data has arrays\n input: [[[10, 20], [20, 30], [30, 40]], [[20, 30], [30, 40], [40, 50]]]\n min y values : '20'(among first set) & '30'(among second set)\n max y values : '40'(among first set) & '50'(among second set)\n */\n\n forEach(datum, data => {\n minValues.push(minBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n maxValues.push(maxBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n });\n // Gets the least and highest values among all the min and max values of respective series of data\n yValues.min = minBy(minValues, dataObject => dataObject.y || dataObject[1]);\n yValues.max = maxBy(maxValues, dataObject => dataObject.y || dataObject[1]);\n return yValues;\n }\n\n // If the x-axis values are undefined, we return empty array else we return the values\n getValidData(values) {\n return (values.length === 1 && values[0] === undefined) ? [] : values;\n }\n\n // Returns the single data point based on the type of the data chart accepts\n valueFinder(dataObj, xKey, yKey, index?, shape?) {\n const xVal = this.getxAxisVal(dataObj, xKey, index),\n value = get(dataObj, yKey),\n yVal = parseFloat(value) || value,\n size = parseFloat(dataObj[this.bubblesize]) || 2;\n let dataPoint: any = {};\n\n if (isChartDataJSON(this.type)) {\n dataPoint.x = xVal;\n dataPoint.y = yVal;\n // only Bubble chart has the third dimension\n if (isBubbleChart(this.type)) {\n dataPoint.size = size;\n dataPoint.shape = shape || 'circle';\n }\n } else if (isChartDataArray(this.type)) {\n dataPoint = [xVal, yVal];\n }\n // Adding actual unwrapped data to chart data to use at the time of selected data point of chart event\n dataPoint._dataObj = dataObj;\n return dataPoint;\n }\n\n // Setting appropriate error messages\n setErrMsg(message) {\n if (this.showNoDataMsg) {\n this.showContentLoadError = true;\n this.invalidConfig = true;\n // TODO: Set the locale from the message\n this.errMsg = ''; // $rootScope.locale[message];\n }\n }\n\n processChartData() {\n this.sampleData = getSampleData(this);\n // scope variables used to keep the actual key values for x-axis\n this.xDataKeyArr = [];\n // Plotting the chart with sample data when the chart dataset is not bound\n if (!this.binddataset) {\n this.xDataKeyArr = getDateList();\n return this.sampleData;\n }\n\n if (!this.chartData || !this.chartData.length) {\n return [];\n }\n\n let datum = [],\n yAxisKey,\n shapes: any = [],\n values: any = [];\n const xAxisKey = this.xaxisdatakey,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n dataSet = this.chartData;\n\n if (isArray(dataSet)) {\n if (isPieType(this.type)) {\n yAxisKey = yAxisKeys[0];\n datum = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey);\n }\n });\n datum = this.getValidData(datum);\n } else {\n if (isBubbleChart(this.type)) {\n shapes = this.shape === 'random' ? allShapes : this.shape;\n }\n yAxisKeys.forEach((yAxisKey, series) => {\n values = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey, index, (isArray(shapes) && shapes[series]) || this.shape);\n }\n });\n values = this.getValidData(values);\n datum.push({\n values: values,\n key: prettifyLabels(yAxisKey)\n });\n });\n }\n }\n return datum;\n }\n\n setChartData(data) {\n if (data) {\n this._processedData = data;\n }\n }\n\n getChartData() {\n return this._processedData;\n }\n\n // constructing the grouped data based on the selection of orderby, x & y axis\n getVisuallyGroupedData(queryResponse, groupingColumn) {\n let groupData: any = {},\n groupValues: any = [],\n orderByDetails,\n maxLength;\n const chartData: any = [],\n _isAreaChart = isAreaChart(this.type),\n yAxisKey = first(split(this.yaxisdatakey, ','));\n this.xDataKeyArr = [];\n queryResponse = orderBy(queryResponse, split(this.groupby, ','));\n if (this.orderby) {\n orderByDetails = getLodashOrderByFormat(this.orderby);\n queryResponse = orderBy(queryResponse, orderByDetails.columns, orderByDetails.orders);\n }\n queryResponse = groupBy(queryResponse, groupingColumn);\n // In case of area chart all the series data should be of same length\n if (_isAreaChart) {\n maxLength = max(map(queryResponse, obj => obj.length));\n }\n forEach(queryResponse, (values, groupKey) => {\n groupValues = isAreaChart ? fill(new Array(maxLength), [0, 0]) : [];\n forEachRight(values, (value, index) => {\n groupValues[index] = this.valueFinder(value, this.xaxisdatakey, yAxisKey, index);\n });\n groupData = {\n key : groupKey,\n values : groupValues\n };\n chartData.push(groupData);\n });\n return chartData;\n }\n\n /*Decides whether the data should be visually grouped or not\n Visually grouped when a different column is choosen in the group by other than x and y axis and aggregation is not chosen*/\n getGroupingDetails() {\n if (this.isGroupByEnabled() && !this.isAggregationEnabled()) {\n let isVisuallyGrouped = false,\n visualGroupingColumn,\n groupingExpression,\n columns: any = [],\n groupingColumnIndex;\n const groupbyColumns = this.groupby && this.groupby !== NONE ? this.groupby.split(',') : [],\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [];\n\n if (groupbyColumns.length > 1) {\n /*Getting the group by column which is not selected either in x or y axis*/\n groupbyColumns.every((column, index) => {\n if (this.xaxisdatakey !== column && $.inArray(column, yAxisKeys) === -1) {\n isVisuallyGrouped = true;\n visualGroupingColumn = column;\n groupingColumnIndex = index;\n groupbyColumns.splice(groupingColumnIndex, 1);\n return false;\n }\n return true;\n });\n // Constructing the groupby expression\n if (visualGroupingColumn) {\n columns.push(visualGroupingColumn);\n }\n\n if (groupbyColumns.length) {\n columns = concat(columns, groupbyColumns);\n }\n }\n // If x and y axis are not included in aggregation need to be included in groupby\n if (this.xaxisdatakey !== this.aggregationcolumn) {\n columns.push(this.xaxisdatakey);\n }\n forEach(yAxisKeys, key => {\n if (key !== this.aggregationcolumn) {\n columns.push(key);\n }\n });\n groupingExpression = columns.join(',');\n // set isVisuallyGrouped flag in scope for later use\n this.isVisuallyGrouped = isVisuallyGrouped;\n\n return {\n expression: groupingExpression,\n isVisuallyGrouped: isVisuallyGrouped,\n visualGroupingColumn: visualGroupingColumn\n };\n }\n return {\n expression: '',\n isVisuallyGrouped: false,\n visualGroupingColumn: ''\n };\n }\n\n // Function to get the aggregated data after applying the aggregation & group by or order by operations.\n getAggregatedData(callback) {\n const variable: any = this.datasource,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n data: any = {};\n let sortExpr,\n columns: any = [],\n colAlias,\n orderByColumns,\n groupByFields: any = [];\n\n if (!variable) {\n return;\n }\n if (this.isGroupByEnabled()) {\n groupByFields = split(this.groupby, ',');\n }\n if (this.orderby) {\n sortExpr = replace(this.orderby, /:/g, ' ');\n columns = uniq(concat(columns, groupByFields, [this.aggregationcolumn]));\n orderByColumns = getLodashOrderByFormat(this.orderby).columns;\n // If the orderby column is chosen either in groupby or orderby then replace . with $ for that column\n forEach(intersection(columns, orderByColumns), col => {\n colAlias = getValidAliasName(col);\n // @ts-ignore\n sortExpr = replace(sortExpr, col, colAlias);\n });\n }\n if (this.isAggregationEnabled()) {\n // Send the group by in the aggregations api only if aggregation is also chosen\n data.groupByFields = groupByFields;\n data.aggregations = [\n {\n 'field': this.aggregationcolumn,\n 'type': aggregationFnMap[this.aggregation],\n 'alias': getValidAliasName(this.aggregationcolumn)\n }\n ];\n }\n // Execute the query.\n variable.execute('getAggregatedData', {\n 'aggregations' : data,\n 'sort' : sortExpr\n }).then(response => {\n // Transform the result into a format supported by the chart.\n const chartData: any = [],\n aggregationAlias: any = getValidAliasName(this.aggregationcolumn),\n xAxisAliasKey = getValidAliasName(this.xaxisdatakey),\n yAxisAliasKeys = [];\n\n yAxisKeys.forEach(yAxisKey => yAxisAliasKeys.push(getValidAliasName(yAxisKey)));\n\n forEach(response.body.content, (responseContent) => {\n const obj = {};\n // Set the response in the chartData based on 'aggregationColumn', 'xAxisDataKey' & 'yAxisDataKey'.\n if (this.isAggregationEnabled()) {\n obj[this.aggregationcolumn] = responseContent[aggregationAlias];\n obj[this.aggregationcolumn] = get(responseContent, aggregationAlias) || get(responseContent, this.aggregationcolumn);\n }\n\n obj[this.xaxisdatakey] = get(responseContent, xAxisAliasKey) || get(responseContent, this.xaxisdatakey);\n\n yAxisKeys.forEach((yAxisKey, index) => {\n obj[yAxisKey] = responseContent[yAxisAliasKeys[index]];\n obj[yAxisKey] = get(responseContent, yAxisAliasKeys[index]) || get(responseContent, yAxisKey);\n });\n\n chartData.push(obj);\n });\n\n this.chartData = chartData;\n\n triggerFn(callback);\n }, () => {\n this.chartData = [];\n this.setErrMsg('MESSAGE_ERROR_FETCH_DATA');\n triggerFn(callback);\n });\n }\n\n // This function sets maximum width for the labels that can be displayed.This will helpful when they are overlapping\n setLabelsMaxWidth() {\n let xTicks,\n tickWidth,\n maxLength,\n xDist,\n yDist,\n totalHeight,\n maxNoLabels,\n nthElement,\n labelsAvailableWidth,\n barWrapper,\n yAxisWrapper,\n svgWrapper;\n const fontsize = parseInt(this.fontsize, 10) || 12,\n isBarchart = isBarChart(this.type);\n // getting the x ticks in the chart\n xTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick').find('text');\n\n // getting the distance between the two visible ticks associated with visible text\n xTicks.each(function () {\n const xTick = $(this);\n let xTransform,\n tickDist;\n if (xTick.text() && xTick.css('opacity') === '1') {\n xTransform = xTick.parent().attr('transform').split(',');\n xDist = parseFloat(xTransform[0].substr(10));\n yDist = parseFloat(xTransform[1] || '0');\n if (!isBarchart && xDist > 0) {\n tickDist = xDist;\n } else if (yDist > 0) {\n tickDist = yDist;\n }\n if (tickWidth) {\n tickWidth = tickDist - tickWidth;\n return false;\n }\n tickWidth = tickDist;\n return true;\n }\n });\n\n // In case of bar chart getting the available space for the labels to be displayed\n if (isBarchart) {\n barWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-barsWrap')[0];\n yAxisWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-y')[0];\n svgWrapper = $('#wmChart' + this.$id + ' svg')[0];\n // getting the total height of the chart\n totalHeight = barWrapper ? barWrapper.getBoundingClientRect().height : 0;\n // getting the labels available space\n labelsAvailableWidth = yAxisWrapper ? svgWrapper.getBoundingClientRect().width - yAxisWrapper.getBoundingClientRect().width : svgWrapper.getBoundingClientRect().width;\n // Setting the max length for the label\n maxLength = Math.round(labelsAvailableWidth / fontsize);\n // if available space for each label is less than the font-size\n // then limiting the labels to be displayed\n if (tickWidth < fontsize) {\n // calculate the maximum no of labels to be fitted\n maxNoLabels = totalHeight / fontsize;\n // showing only the nth element\n nthElement = Math.ceil(this.chartData.length / maxNoLabels);\n // showing up only some labels\n d3.select('#wmChart' + this.$id + ' svg').select('g.nv-x').selectAll('g.tick').select('text').each(function (text, i) {\n // hiding every non nth element\n if (i % nthElement !== 0) {\n d3.select(this).attr('opacity', 0);\n }\n });\n }\n } else {\n // Setting the max length for the label\n maxLength = Math.round(tickWidth / fontsize);\n }\n\n // maxLength should always be a positive number\n maxLength = Math.abs(maxLength);\n // Validating if every label exceeds the max length and if so limiting the length and adding ellipsis\n xTicks.each(function () {\n if (this.textContent.length > maxLength) {\n this.textContent = this.textContent.substr(0, maxLength) + '...';\n }\n });\n }\n\n // Returns the columns of that can be choosen in the x and y axis\n getDefaultColumns() {\n let type,\n stringColumn,\n i,\n temp;\n const defaultColumns = [],\n columns = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP) || [];\n\n for (i = 0; i < columns.length && defaultColumns.length <= 2; i += 1) {\n type = columns[i].type;\n if (!columns[i].isRelated && (isNumberType(type))) {\n defaultColumns.push(columns[i].fieldName);\n } else if (type === 'string' && !stringColumn) {\n stringColumn = columns[i].fieldName;\n }\n }\n // Other than bubble chart x: string type y: number type\n // Bubble chart x: number type y: number type\n if (stringColumn && defaultColumns.length > 0 && !isBubbleChart(this.type)) {\n temp = defaultColumns[0];\n defaultColumns[0] = stringColumn;\n defaultColumns[1] = temp;\n }\n\n return defaultColumns;\n }\n\n // Call user defined javascript function when user links it to click event of the widget.\n attachClickEvent() {\n let dataObj;\n d3.select('#wmChart' + this.$id + ' svg').selectAll(chartDataPointXpath[this.type]).style('pointer-events', 'all')\n .on('click', (event, data, index) => {\n switch (this.type) {\n case 'Column':\n case 'Bar':\n dataObj = data._dataObj;\n break;\n case 'Pie':\n case 'Donut':\n dataObj = data.data._dataObj;\n break;\n case 'Area':\n case 'Cumulative Line':\n case 'Line':\n dataObj = data[0]._dataObj;\n break;\n case 'Bubble':\n dataObj = data;\n break;\n }\n this.selecteditem = dataObj;\n this.invokeEventCallback('select', {\n $event: event,\n selectedChartItem: data,\n selectedItem: this.selecteditem\n });\n });\n\n }\n\n /* Returns Y Scale min value\n Ex: Input : 8.97\n Output : 8.87\n\n Input : 8\n Output : 7\n */\n\n postPlotProcess(chart) {\n let chartSvg,\n pieLabels,\n pieGroups,\n angleArray;\n const styleObj = {};\n const element = this.$element;\n\n postPlotChartProcess(this);\n\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n } else if (!this.showlabelsoutside) {\n /** Nvd3 has a issue in rotating text. So we will use this as a temp fix.\n * If the issue is resolved there, we can remove this.*/\n /* If it is a donut chart, then rotate the text and position them*/\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n pieLabels = chartSvg.select('.nv-pieLabels').selectAll('.nv-label');\n pieGroups = chartSvg.select('.nv-pie').selectAll('.nv-slice');\n angleArray = [];\n if (pieGroups && pieGroups.length) {\n pieGroups.each(function () {\n d3.select(this).attr('transform', function (d) {\n angleArray.push(angle(d));\n });\n });\n pieLabels.each(function (d, i) {\n const group = d3.select(this);\n $(group[0][0]).find('text').attr('transform', 'rotate(' + angleArray[i] + ')');\n });\n }\n }\n\n // prepare text style props object and set\n forEach(styleProps, (value, key) => {\n if (key === 'fontsize' || key === 'fontunit') {\n styleObj[value] = this.fontsize + this.fontunit;\n } else {\n styleObj[value] = this[key];\n }\n });\n setTextStyle(styleObj, this.$id);\n\n /*\n * allow window-resize functionality, for only-run mode as\n * updating chart is being handled by watchers of height & width in studio-mode\n * */\n triggerFn(this._resizeFn && this._resizeFn.clear);\n this._resizeFn = nv.utils.windowResize(() => {\n if (element[0].getBoundingClientRect().height) {\n chart.update();\n postPlotChartProcess(this);\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n }\n } else {\n // TODO: get parents of accordion type\n /*let parent = element.closest('.app-accordion-panel, .tab-pane').isolateScope();\n if (parent) {\n parent.initialized = false;\n }*/\n }\n });\n }\n\n // prepares and configures the chart properties\n configureChart() {\n // Copy the data only in case of pie chart with default data\n // Reason : when multiple pie charts are bound to same data, first chart theme will be applied to all charts\n let xDomainValues;\n let yDomainValues;\n let chart;\n let beforeRenderVal;\n const yformatOptions: any = {};\n\n if (this._processedData.length > 0) {\n if (isAxisDomainValid(this, 'x')) {\n xDomainValues = this.binddataset ? this.getXMinMaxValues(this._processedData[0]) : { 'min' : {'x': 1}, 'max' : {'x' : 5}};\n }\n if (isAxisDomainValid(this, 'y')) {\n yDomainValues = this.binddataset ? this.getYMinMaxValues(this._processedData) : { 'min' : {'y' : 1}, 'max' : {'y' : 5}};\n }\n }\n\n if (isPieType(this.type) && (!this.binddataset || !this.scopedataset)) {\n this._processedData = getClonedObject(this.scopedataset || this._processedData);\n }\n\n // get the chart object\n chart = initChart(this, xDomainValues, yDomainValues, null, !this.binddataset);\n\n if (isArray(this._processedData)) {\n // WMS-19499: To remove chart X-axis old ticks when chart data loaded dynamically.\n const oldgTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick');\n if (oldgTicks && oldgTicks.length) {\n oldgTicks.remove();\n }\n beforeRenderVal = this.invokeEventCallback('beforerender', { 'chartInstance' : chart});\n if (beforeRenderVal) {\n chart = beforeRenderVal;\n }\n this.chart = chart;\n // changing the default no data message\n d3.select('#wmChart' + this.$id + ' svg')\n .datum(this._processedData)\n .call(this.chart);\n this.postPlotProcess(chart);\n return chart;\n }\n }\n\n // Plotting the chart with set of the properties set to it\n plotChart() {\n const element = this.$element;\n // call user-transformed function\n this.chartData = (this.invokeEventCallback('transform')) || this.chartData;\n\n // Getting the order by data only in run mode. The order by applies for all the charts other than pie and donut charts\n if (this.isVisuallyGrouped && !isPieType(this.type)) {\n this._processedData = this.chartData;\n } else {\n this._processedData = this.processChartData();\n }\n // checking the parent container before plotting the chart\n if (!element[0].getBoundingClientRect().height) {\n return;\n }\n if (this.clearCanvas) {\n // empty svg to add-new chart\n element.find('svg').replaceWith('<svg></svg>');\n this.clearCanvas = false;\n }\n\n // In case of invalid axis show no data available message\n if (!this.isValidAxis()) {\n this._processedData = [];\n }\n nv.addGraph(() => this.configureChart(), () => {\n /*Bubble chart has an time out delay of 300ms in their implementation due to which we\n * won't be getting required data points on attaching events\n * hence delaying it 600ms*/\n setTimeout( () => {\n this.attachClickEvent();\n }, 600);\n });\n this.isLoadInProgress = false;\n }\n // TODO: Need way to figure out if the datasource is a live source\n get isLiveVariable() {\n // setting the flag for the live variable in the scope for the checks\n const variableObj = this.datasource;\n return variableObj && variableObj.category === 'wm.LiveVariable';\n }\n\n plotChartProxy() {\n this.showContentLoadError = false;\n this.invalidConfig = false;\n // Checking if x and y axis are chosen\n this.isLoadInProgress = true;\n const groupingDetails = this.getGroupingDetails();\n // If aggregation/group by/order by properties have been set, then get the aggregated data and plot the result in the chart.\n // TODO: datasource for live variable detection\n if (this.binddataset && this.isLiveVariable && (this.filterFields || this.isDataFilteringEnabled())) {\n this.getAggregatedData(() => this.plotChart());\n } else { // Else, simply plot the chart.\n // In case of live variable resetting the aggregated data to the normal dataset when the aggregation has been removed\n if (this.dataset && this.isLiveVariable) {\n this.chartData = this.dataset;\n if (this.isGroupByEnabled() && groupingDetails.isVisuallyGrouped) {\n this.chartData = this.getVisuallyGroupedData(this.chartData, groupingDetails.visualGroupingColumn);\n }\n\n }\n this.plotChart();\n }\n }\n\n // sets the default x and y axis options\n setDefaultAxisOptions() {\n const defaultColumns = this.getDefaultColumns();\n // If we get the valid default columns then assign them as the x and y axis\n // In case of service variable we may not get the valid columns because we cannot know the datatypes\n this.xaxisdatakey = defaultColumns[0] || null;\n this.yaxisdatakey = defaultColumns[1] || null;\n }\n\n getCutomizedOptions(prop, fields) {\n const groupByColumns = split(this.groupby, ','),\n aggColumns = split(this.aggregationcolumn, ',');\n if (!this.binddataset) {\n return fields;\n }\n if (!this.axisoptions) {\n this.axisoptions = fields;\n }\n let newOptions;\n switch (prop) {\n case 'xaxisdatakey':\n // If group by enabled, columns chosen in groupby will be populated in x axis options\n if (this.isGroupByEnabled()) {\n newOptions = groupByColumns;\n }\n break;\n case 'yaxisdatakey':\n // If aggregation by enabled, columns chosen in aggregation will be populated in y axis options\n if (this.isAggregationEnabled()) {\n newOptions = aggColumns;\n } else if (this.isLiveVariable) {\n // In case of live variable populating only numeric columns\n newOptions = this.numericColumns;\n }\n break;\n case 'groupby':\n // Filtering only non primary key columns\n if (this.isLiveVariable && this.nonPrimaryColumns && this.nonPrimaryColumns.length) {\n newOptions = this.nonPrimaryColumns;\n }\n break;\n case 'aggregationcolumn':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled() && this.aggregation !== 'count') {\n newOptions = this.numericColumns;\n }\n break;\n case 'orderby':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled()) {\n newOptions = uniq(concat(groupByColumns, aggColumns));\n }\n break;\n case 'bubblesize':\n if (this.numericColumns && this.numericColumns.length) {\n newOptions = this.numericColumns;\n }\n break;\n }\n\n return newOptions || fields || this.axisoptions;\n }\n\n // Function that iterates through all the columns and then fetching the numeric and non primary columns among them\n setNumericandNonPrimaryColumns() {\n let columns,\n type;\n const propertiesMap = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP);\n this.numericColumns = [];\n this.nonPrimaryColumns = [];\n // Fetching all the columns\n if (this.dataset && !isEmpty(propertiesMap)) {\n columns = []; // TODO: fetchPropertiesMapColumns(propertiesMap);\n }\n\n if (columns) {\n // Iterating through all the columns and fetching the numeric and non primary key columns\n forEach(Object.keys(columns), (key) => {\n type = columns[key].type;\n if (isNumberType(type)) {\n this.numericColumns.push(key);\n }\n // Hiding only table's primary key\n if (columns[key].isRelatedPk === 'true' || !columns[key].isPrimaryKey) {\n this.nonPrimaryColumns.push(key);\n }\n });\n this.numericColumns = this.numericColumns.sort();\n this.nonPrimaryColumns = this.nonPrimaryColumns.sort();\n }\n }\n\n // plot the chart\n handleDataSet(newVal) {\n this.errMsg = '';\n // Resetting the flag to false when the binding was removed\n if (!newVal && !this.binddataset) {\n this.isVisuallyGrouped = false;\n this.axisoptions = null;\n }\n\n // liveVariables contain data in 'data' property' of the variable\n this.chartData = this.isLiveVariable ? newVal || '' : (newVal && newVal.dataValue === '' && keys(newVal).length === 1) ? '' : newVal;\n\n // if the data returned is an object make it an array of object\n if (!isArray(this.chartData) && isObject(this.chartData)) {\n this.chartData = [this.chartData];\n }\n\n if (newVal && newVal.filterFields) {\n this.filterFields = newVal.filterFields;\n }\n\n // plotchart for only valid data and only after bound variable returns data\n if (this.chartData) {\n this._plotChartProxy();\n }\n }\n\n _plotChartProxy = debounce(this.plotChartProxy.bind(this), 100);\n\n // sets the center label for donut chart type\n setDonutCenterLabel(labelValue) {\n let chartSvg, pieGroups;\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n\n pieGroups = chartSvg.select('.nv-wrap.nv-pie').select('.nv-pie');\n pieGroups.text('');\n pieGroups.append('text')\n .attr('dy', '.35em')\n .attr('text-anchor', 'middle')\n .attr('class', 'nv-pie-title')\n .text(labelValue)\n .each(function (d) {\n var d3text = d3.select(this),\n circ = d3.select(this.parentElement),\n totalWidth = Number(circ.node().getBoundingClientRect().width),\n // minus the ring width from total width\n availWidth = totalWidth - 30,\n textWidth = this.getComputedTextLength();\n d3text.attr(\"data-scale\", availWidth / textWidth);\n }).style(\"font-size\", function() {\n // 16 is the default font size to multiply with the scaled value and 24 is the maximum font size that can be applied\n var fontSize = 16 * d3.select(this).attr(\"data-scale\");\n return fontSize > 24 ? 24 : fontSize + \"px\";\n });\n }\n\n onPropertyChange(key, newVal, oldVal?) {\n super.onPropertyChange(key, newVal, oldVal);\n switch (key) {\n case 'dataset':\n this.handleDataSet(newVal);\n break;\n case 'centerlabel':\n if (this.chart) {\n this.chart.title(newVal);\n this.setDonutCenterLabel(newVal);\n }\n break;\n case 'type':\n // Based on the change in type deciding the default margins\n if (isPieType(this.type)) {\n this.offsettop = 20;\n this.offsetright = 0;\n this.offsetbottom = 0;\n this.offsetleft = 0;\n } else if (oldVal === 'Pie' || oldVal === 'Donut') {\n this.offsettop = 25;\n this.offsetright = 25;\n this.offsetbottom = 55;\n this.offsetleft = 75;\n }\n\n if (oldVal !== newVal) {\n this.clearCanvas = true;\n }\n // In studio mode, configure properties dependent on chart type\n this._plotChartProxy();\n break;\n default:\n // In RunMode, the plotchart method will not be called for all property change\n this._plotChartProxy();\n break;\n }\n if (includes(advanceDataProps, key)) {\n this._plotChartProxy();\n }\n }\n\n handleLoading(data) {\n const dataSource = this.datasource;\n if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {\n this.variableInflight = data.active;\n this.isLoadInProgress = data.active;\n }\n }\n\n hideTooltip() {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n }\n\n onStyleChange(key, newVal, oldVal) {\n const styleObj = {};\n super.onStyleChange(key, newVal, oldVal);\n switch (key) {\n case 'fontsize':\n case 'fontunit':\n case 'color':\n case 'fontfamily':\n case 'fontweight':\n case 'fontstyle':\n case 'textdecoration':\n styleObj[styleProps[key]] = (key === 'fontsize' || key === 'fontunit') ? this.fontsize + this.fontunit : newVal;\n setTextStyle(styleObj, this.$id);\n break;\n }\n }\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['fontsize', 'fontunit', 'color', 'fontfamily', 'fontweight', 'fontstyle', 'textdecoration']);\n\n // generate unique id for the component\n this.$id = this.widgetId || Math.random();\n // remove title attribute as the element on hover shows you the hint through-out the element\n removeAttr(this.nativeElement, 'title');\n this.chartReady = false;\n this.binddataset = this.nativeElement.getAttribute('dataset.bind');\n // Show loading status based on the variable life cycle\n this._subsciptions.push(this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)));\n // Will hide tolltip of a chart in mobile when the user scrolls.\n this._subsciptions.push(this.app.subscribe('iscroll-start', () => {this.hideTooltip();}));\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n // For old projects\n if (!includes(['outside', 'inside', 'hide'], this.showlabels)) {\n this.showlabels = getBooleanValue(this.showlabels);\n this.showlabelsoutside = getBooleanValue(this.showlabelsoutside);\n this.showlabels = this.showlabels ? (this.showlabelsoutside ? 'outside' : 'inside') : 'hide';\n }\n\n if (!this.theme) {\n // Default theme for pie/donut is Azure and for other it is Terrestrial\n this.theme = isPieType(this.type) ? 'Azure' : 'Terrestrial';\n }\n\n this.nativeElement.setAttribute('id', 'wmChart' + this.$id);\n // When there is not value binding, then plot the chart with sample data\n if (!this.binddataset && !this.nativeElement.getAttribute('scopedataset')) {\n this._plotChartProxy();\n }\n }\n\n ngOnDestroy() {\n // destroy all subscriptions to prevent memory leak.\n this.hideTooltip();\n this._subsciptions.forEach((subscription)=>{\n subscription();\n });\n super.ngOnDestroy();\n }\n redraw = this._plotChartProxy.bind(this);\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { ChartComponent } from './chart.component';\n\nconst components = [\n ChartComponent\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChartModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}