ngx-hana-nameserver-history-viewer 1.1.3 → 1.1.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/README.md +5 -4
  2. package/esm2020/ngx-hana-nameserver-history-viewer.mjs +5 -0
  3. package/esm2020/public-api.mjs +2 -0
  4. package/esm2020/src/nameserver-history-viewer/components/alert/alert.component.mjs +68 -0
  5. package/esm2020/src/nameserver-history-viewer/components/alert/alert.module.mjs +22 -0
  6. package/esm2020/src/nameserver-history-viewer/components/alert/index.mjs +3 -0
  7. package/esm2020/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.mjs +112 -0
  8. package/esm2020/src/nameserver-history-viewer/components/file-drop-input/index.mjs +2 -0
  9. package/esm2020/src/nameserver-history-viewer/components/index.mjs +9 -0
  10. package/esm2020/src/nameserver-history-viewer/components/instruction/index.mjs +2 -0
  11. package/esm2020/src/nameserver-history-viewer/components/instruction/instruction.component.mjs +42 -0
  12. package/esm2020/src/nameserver-history-viewer/components/nameserver-history.component.mjs +550 -0
  13. package/esm2020/src/nameserver-history-viewer/components/port-selector/index.mjs +2 -0
  14. package/esm2020/src/nameserver-history-viewer/components/port-selector/port-selector.component.mjs +69 -0
  15. package/esm2020/src/nameserver-history-viewer/components/port-selector/port-selector.service.mjs +41 -0
  16. package/esm2020/src/nameserver-history-viewer/components/progress-bar/index.mjs +2 -0
  17. package/esm2020/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.mjs +40 -0
  18. package/esm2020/src/nameserver-history-viewer/components/time-range-selector/index.mjs +2 -0
  19. package/esm2020/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.mjs +70 -0
  20. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/index.mjs +2 -0
  21. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.mjs +90 -0
  22. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.mjs +49 -0
  23. package/esm2020/src/nameserver-history-viewer/index.mjs +3 -0
  24. package/esm2020/src/nameserver-history-viewer/nameserver-history.module.mjs +63 -0
  25. package/esm2020/src/nameserver-history-viewer/services/chart.service.mjs +323 -0
  26. package/esm2020/src/nameserver-history-viewer/services/file.service.mjs +390 -0
  27. package/esm2020/src/nameserver-history-viewer/services/index.mjs +4 -0
  28. package/esm2020/src/nameserver-history-viewer/services/ui.service.mjs +557 -0
  29. package/esm2020/src/nameserver-history-viewer/types/abort.types.mjs +6 -0
  30. package/esm2020/src/nameserver-history-viewer/types/alert.types.mjs +8 -0
  31. package/esm2020/src/nameserver-history-viewer/types/chart-content-data-item.types.mjs +2 -0
  32. package/esm2020/src/nameserver-history-viewer/types/chart-content-data.types.mjs +2 -0
  33. package/esm2020/src/nameserver-history-viewer/types/chart-content-header.types.mjs +2 -0
  34. package/esm2020/src/nameserver-history-viewer/types/chart-content-time.types.mjs +2 -0
  35. package/esm2020/src/nameserver-history-viewer/types/chart-content.types.mjs +2 -0
  36. package/esm2020/src/nameserver-history-viewer/types/color-rgba.types.mjs +2 -0
  37. package/esm2020/src/nameserver-history-viewer/types/html-element.type.mjs +9 -0
  38. package/esm2020/src/nameserver-history-viewer/types/index.mjs +28 -0
  39. package/esm2020/src/nameserver-history-viewer/types/item.types.mjs +14 -0
  40. package/esm2020/src/nameserver-history-viewer/types/legend-color.types.mjs +2 -0
  41. package/esm2020/src/nameserver-history-viewer/types/load-history-info-backup.types.mjs +2 -0
  42. package/esm2020/src/nameserver-history-viewer/types/load-history-info-columnstore.types.mjs +2 -0
  43. package/esm2020/src/nameserver-history-viewer/types/load-history-info-host.types.mjs +2 -0
  44. package/esm2020/src/nameserver-history-viewer/types/load-history-info-item.types.mjs +2 -0
  45. package/esm2020/src/nameserver-history-viewer/types/load-history-info-persistence.types.mjs +2 -0
  46. package/esm2020/src/nameserver-history-viewer/types/load-history-info-rowstore.types.mjs +2 -0
  47. package/esm2020/src/nameserver-history-viewer/types/load-history-info-server.types.mjs +2 -0
  48. package/esm2020/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.mjs +2 -0
  49. package/esm2020/src/nameserver-history-viewer/types/load-history-info-sql.types.mjs +2 -0
  50. package/esm2020/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.mjs +2 -0
  51. package/esm2020/src/nameserver-history-viewer/types/load-history-info-threads.types.mjs +2 -0
  52. package/esm2020/src/nameserver-history-viewer/types/load-history-info.types.mjs +2 -0
  53. package/esm2020/src/nameserver-history-viewer/types/port.types.mjs +2 -0
  54. package/esm2020/src/nameserver-history-viewer/types/scale-group.types.mjs +17 -0
  55. package/esm2020/src/nameserver-history-viewer/types/unit-category.types.mjs +10 -0
  56. package/esm2020/src/nameserver-history-viewer/types/unit.types.mjs +14 -0
  57. package/esm2020/src/nameserver-history-viewer/utils/chart-util.mjs +25 -0
  58. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.mjs +2 -0
  59. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.mjs +57 -0
  60. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.mjs +139 -0
  61. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/index.mjs +41 -0
  62. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.mjs +106 -0
  63. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.mjs +168 -0
  64. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/utils.mjs +114 -0
  65. package/esm2020/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.mjs +527 -0
  66. package/esm2020/src/nameserver-history-viewer/utils/chartjs-zoom/index.mjs +2 -0
  67. package/esm2020/src/nameserver-history-viewer/utils/file-util.mjs +154 -0
  68. package/esm2020/src/nameserver-history-viewer/utils/index.mjs +5 -0
  69. package/esm2020/src/nameserver-history-viewer/utils/time-util.mjs +101 -0
  70. package/esm2020/src/nameserver-history-viewer/utils/ui-util.mjs +162 -0
  71. package/{dist/fesm2015/ngx-hana-nameserver-history-viewer.js → fesm2015/ngx-hana-nameserver-history-viewer.mjs} +829 -2561
  72. package/fesm2015/ngx-hana-nameserver-history-viewer.mjs.map +1 -0
  73. package/fesm2020/ngx-hana-nameserver-history-viewer.mjs +4081 -0
  74. package/fesm2020/ngx-hana-nameserver-history-viewer.mjs.map +1 -0
  75. package/ngx-hana-nameserver-history-viewer.d.ts +5 -0
  76. package/package.json +65 -88
  77. package/{dist/public-api.d.ts → public-api.d.ts} +0 -0
  78. package/{dist/src → src}/nameserver-history-viewer/components/alert/alert.component.d.ts +4 -1
  79. package/src/nameserver-history-viewer/components/alert/alert.module.d.ts +8 -0
  80. package/{dist/src → src}/nameserver-history-viewer/components/alert/index.d.ts +0 -0
  81. package/{dist/src → src}/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.d.ts +3 -0
  82. package/{dist/src → src}/nameserver-history-viewer/components/file-drop-input/index.d.ts +0 -0
  83. package/{dist/src → src}/nameserver-history-viewer/components/index.d.ts +0 -0
  84. package/{dist/src → src}/nameserver-history-viewer/components/instruction/index.d.ts +0 -0
  85. package/src/nameserver-history-viewer/components/instruction/instruction.component.d.ts +17 -0
  86. package/{dist/src → src}/nameserver-history-viewer/components/nameserver-history.component.d.ts +33 -14
  87. package/{dist/src → src}/nameserver-history-viewer/components/port-selector/index.d.ts +0 -0
  88. package/{dist/src → src}/nameserver-history-viewer/components/port-selector/port-selector.component.d.ts +4 -1
  89. package/{dist/src → src}/nameserver-history-viewer/components/port-selector/port-selector.service.d.ts +3 -0
  90. package/{dist/src → src}/nameserver-history-viewer/components/progress-bar/index.d.ts +0 -0
  91. package/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.d.ts +6 -0
  92. package/{dist/src → src}/nameserver-history-viewer/components/time-range-selector/index.d.ts +0 -0
  93. package/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.d.ts +19 -0
  94. package/{dist/src → src}/nameserver-history-viewer/components/timezone-selector/index.d.ts +0 -0
  95. package/{dist/src → src}/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.d.ts +3 -0
  96. package/{dist/src → src}/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.d.ts +3 -0
  97. package/src/nameserver-history-viewer/index.d.ts +2 -0
  98. package/src/nameserver-history-viewer/nameserver-history.module.d.ts +19 -0
  99. package/{dist/src → src}/nameserver-history-viewer/services/chart.service.d.ts +4 -1
  100. package/{dist/src → src}/nameserver-history-viewer/services/file.service.d.ts +3 -0
  101. package/{dist/src → src}/nameserver-history-viewer/services/index.d.ts +0 -0
  102. package/{dist/src → src}/nameserver-history-viewer/services/ui.service.d.ts +5 -2
  103. package/{dist/src → src}/nameserver-history-viewer/types/abort.types.d.ts +0 -0
  104. package/{dist/src → src}/nameserver-history-viewer/types/alert.types.d.ts +0 -0
  105. package/{dist/src → src}/nameserver-history-viewer/types/chart-content-data-item.types.d.ts +0 -0
  106. package/{dist/src → src}/nameserver-history-viewer/types/chart-content-data.types.d.ts +0 -0
  107. package/{dist/src → src}/nameserver-history-viewer/types/chart-content-header.types.d.ts +0 -0
  108. package/{dist/src → src}/nameserver-history-viewer/types/chart-content-time.types.d.ts +0 -0
  109. package/{dist/src → src}/nameserver-history-viewer/types/chart-content.types.d.ts +0 -0
  110. package/{dist/src → src}/nameserver-history-viewer/types/color-rgba.types.d.ts +0 -0
  111. package/{dist/src → src}/nameserver-history-viewer/types/html-element.type.d.ts +0 -0
  112. package/{dist/src → src}/nameserver-history-viewer/types/index.d.ts +0 -0
  113. package/{dist/src → src}/nameserver-history-viewer/types/item.types.d.ts +0 -0
  114. package/{dist/src → src}/nameserver-history-viewer/types/legend-color.types.d.ts +0 -0
  115. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-backup.types.d.ts +0 -0
  116. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-columnstore.types.d.ts +0 -0
  117. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-host.types.d.ts +0 -0
  118. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-item.types.d.ts +0 -0
  119. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-persistence.types.d.ts +0 -0
  120. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-rowstore.types.d.ts +0 -0
  121. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-server.types.d.ts +0 -0
  122. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-session-admission-control.types.d.ts +0 -0
  123. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-sql.types.d.ts +0 -0
  124. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-sync-primitives.types.d.ts +0 -0
  125. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info-threads.types.d.ts +0 -0
  126. package/{dist/src → src}/nameserver-history-viewer/types/load-history-info.types.d.ts +0 -0
  127. package/{dist/src → src}/nameserver-history-viewer/types/port.types.d.ts +0 -0
  128. package/{dist/src → src}/nameserver-history-viewer/types/scale-group.types.d.ts +0 -0
  129. package/{dist/src → src}/nameserver-history-viewer/types/unit-category.types.d.ts +0 -0
  130. package/{dist/src → src}/nameserver-history-viewer/types/unit.types.d.ts +0 -0
  131. package/{dist/src → src}/nameserver-history-viewer/utils/chart-util.d.ts +0 -0
  132. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.d.ts +0 -0
  133. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/data_culling.d.ts +0 -0
  134. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.d.ts +0 -0
  135. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/index.d.ts +0 -0
  136. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.d.ts +1 -1
  137. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.d.ts +0 -0
  138. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-downsample/utils.d.ts +0 -0
  139. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.d.ts +0 -0
  140. package/{dist/src → src}/nameserver-history-viewer/utils/chartjs-zoom/index.d.ts +0 -0
  141. package/{dist/src → src}/nameserver-history-viewer/utils/file-util.d.ts +6 -0
  142. package/{dist/src → src}/nameserver-history-viewer/utils/index.d.ts +0 -0
  143. package/{dist/src → src}/nameserver-history-viewer/utils/time-util.d.ts +0 -0
  144. package/{dist/src → src}/nameserver-history-viewer/utils/ui-util.d.ts +0 -0
  145. package/.idea/codeStyles/Project.xml +0 -17
  146. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  147. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  148. package/.idea/modules.xml +0 -8
  149. package/.idea/ngx-hana-nameserver-history-viewer.iml +0 -13
  150. package/.idea/vcs.xml +0 -6
  151. package/.travis.yml +0 -35
  152. package/angular.json +0 -125
  153. package/dist/LICENSE +0 -21
  154. package/dist/README.md +0 -93
  155. package/dist/bundles/ngx-hana-nameserver-history-viewer.umd.js +0 -6761
  156. package/dist/bundles/ngx-hana-nameserver-history-viewer.umd.js.map +0 -1
  157. package/dist/bundles/ngx-hana-nameserver-history-viewer.umd.min.js +0 -2
  158. package/dist/bundles/ngx-hana-nameserver-history-viewer.umd.min.js.map +0 -1
  159. package/dist/esm2015/ngx-hana-nameserver-history-viewer.js +0 -10
  160. package/dist/esm2015/public-api.js +0 -6
  161. package/dist/esm2015/src/nameserver-history-viewer/components/alert/alert.component.js +0 -114
  162. package/dist/esm2015/src/nameserver-history-viewer/components/alert/alert.module.js +0 -21
  163. package/dist/esm2015/src/nameserver-history-viewer/components/alert/index.js +0 -7
  164. package/dist/esm2015/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -141
  165. package/dist/esm2015/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  166. package/dist/esm2015/src/nameserver-history-viewer/components/index.js +0 -13
  167. package/dist/esm2015/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  168. package/dist/esm2015/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -62
  169. package/dist/esm2015/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -868
  170. package/dist/esm2015/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  171. package/dist/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  172. package/dist/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -60
  173. package/dist/esm2015/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  174. package/dist/esm2015/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -35
  175. package/dist/esm2015/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  176. package/dist/esm2015/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -68
  177. package/dist/esm2015/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  178. package/dist/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -151
  179. package/dist/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -80
  180. package/dist/esm2015/src/nameserver-history-viewer/index.js +0 -6
  181. package/dist/esm2015/src/nameserver-history-viewer/nameserver-history.module.js +0 -42
  182. package/dist/esm2015/src/nameserver-history-viewer/services/chart.service.js +0 -504
  183. package/dist/esm2015/src/nameserver-history-viewer/services/file.service.js +0 -488
  184. package/dist/esm2015/src/nameserver-history-viewer/services/index.js +0 -8
  185. package/dist/esm2015/src/nameserver-history-viewer/services/ui.service.js +0 -922
  186. package/dist/esm2015/src/nameserver-history-viewer/types/abort.types.js +0 -13
  187. package/dist/esm2015/src/nameserver-history-viewer/types/alert.types.js +0 -13
  188. package/dist/esm2015/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  189. package/dist/esm2015/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  190. package/dist/esm2015/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  191. package/dist/esm2015/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  192. package/dist/esm2015/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  193. package/dist/esm2015/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  194. package/dist/esm2015/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  195. package/dist/esm2015/src/nameserver-history-viewer/types/index.js +0 -32
  196. package/dist/esm2015/src/nameserver-history-viewer/types/item.types.js +0 -19
  197. package/dist/esm2015/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  198. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  199. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  200. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  201. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  202. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  203. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  204. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  205. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -25
  206. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  207. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  208. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  209. package/dist/esm2015/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  210. package/dist/esm2015/src/nameserver-history-viewer/types/port.types.js +0 -17
  211. package/dist/esm2015/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  212. package/dist/esm2015/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  213. package/dist/esm2015/src/nameserver-history-viewer/types/unit.types.js +0 -19
  214. package/dist/esm2015/src/nameserver-history-viewer/utils/chart-util.js +0 -38
  215. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  216. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  217. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -222
  218. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  219. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -166
  220. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -311
  221. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -130
  222. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -827
  223. package/dist/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  224. package/dist/esm2015/src/nameserver-history-viewer/utils/file-util.js +0 -186
  225. package/dist/esm2015/src/nameserver-history-viewer/utils/index.js +0 -9
  226. package/dist/esm2015/src/nameserver-history-viewer/utils/time-util.js +0 -139
  227. package/dist/esm2015/src/nameserver-history-viewer/utils/ui-util.js +0 -239
  228. package/dist/esm5/ngx-hana-nameserver-history-viewer.js +0 -10
  229. package/dist/esm5/public-api.js +0 -6
  230. package/dist/esm5/src/nameserver-history-viewer/components/alert/alert.component.js +0 -146
  231. package/dist/esm5/src/nameserver-history-viewer/components/alert/alert.module.js +0 -25
  232. package/dist/esm5/src/nameserver-history-viewer/components/alert/index.js +0 -7
  233. package/dist/esm5/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -155
  234. package/dist/esm5/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  235. package/dist/esm5/src/nameserver-history-viewer/components/index.js +0 -13
  236. package/dist/esm5/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  237. package/dist/esm5/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -67
  238. package/dist/esm5/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -1116
  239. package/dist/esm5/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  240. package/dist/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  241. package/dist/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -85
  242. package/dist/esm5/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  243. package/dist/esm5/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -26
  244. package/dist/esm5/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  245. package/dist/esm5/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -58
  246. package/dist/esm5/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  247. package/dist/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -180
  248. package/dist/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -110
  249. package/dist/esm5/src/nameserver-history-viewer/index.js +0 -6
  250. package/dist/esm5/src/nameserver-history-viewer/nameserver-history.module.js +0 -46
  251. package/dist/esm5/src/nameserver-history-viewer/services/chart.service.js +0 -659
  252. package/dist/esm5/src/nameserver-history-viewer/services/file.service.js +0 -609
  253. package/dist/esm5/src/nameserver-history-viewer/services/index.js +0 -8
  254. package/dist/esm5/src/nameserver-history-viewer/services/ui.service.js +0 -1141
  255. package/dist/esm5/src/nameserver-history-viewer/types/abort.types.js +0 -13
  256. package/dist/esm5/src/nameserver-history-viewer/types/alert.types.js +0 -13
  257. package/dist/esm5/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  258. package/dist/esm5/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  259. package/dist/esm5/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  260. package/dist/esm5/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  261. package/dist/esm5/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  262. package/dist/esm5/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  263. package/dist/esm5/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  264. package/dist/esm5/src/nameserver-history-viewer/types/index.js +0 -32
  265. package/dist/esm5/src/nameserver-history-viewer/types/item.types.js +0 -19
  266. package/dist/esm5/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  267. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  268. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  269. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  270. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  271. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  272. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  273. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  274. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -25
  275. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  276. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  277. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  278. package/dist/esm5/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  279. package/dist/esm5/src/nameserver-history-viewer/types/port.types.js +0 -17
  280. package/dist/esm5/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  281. package/dist/esm5/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  282. package/dist/esm5/src/nameserver-history-viewer/types/unit.types.js +0 -19
  283. package/dist/esm5/src/nameserver-history-viewer/utils/chart-util.js +0 -39
  284. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  285. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  286. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -316
  287. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  288. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -240
  289. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -366
  290. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -142
  291. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -827
  292. package/dist/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  293. package/dist/esm5/src/nameserver-history-viewer/utils/file-util.js +0 -187
  294. package/dist/esm5/src/nameserver-history-viewer/utils/index.js +0 -9
  295. package/dist/esm5/src/nameserver-history-viewer/utils/time-util.js +0 -139
  296. package/dist/esm5/src/nameserver-history-viewer/utils/ui-util.js +0 -241
  297. package/dist/fesm2015/ngx-hana-nameserver-history-viewer.js.map +0 -1
  298. package/dist/fesm5/ngx-hana-nameserver-history-viewer.js +0 -6887
  299. package/dist/fesm5/ngx-hana-nameserver-history-viewer.js.map +0 -1
  300. package/dist/ngx-hana-nameserver-history-viewer.d.ts +0 -5
  301. package/dist/ngx-hana-nameserver-history-viewer.metadata.json +0 -1
  302. package/dist/package.json +0 -90
  303. package/dist/src/nameserver-history-viewer/components/alert/alert.module.d.ts +0 -2
  304. package/dist/src/nameserver-history-viewer/components/instruction/instruction.component.d.ts +0 -14
  305. package/dist/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.d.ts +0 -3
  306. package/dist/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.d.ts +0 -16
  307. package/dist/src/nameserver-history-viewer/index.d.ts +0 -1
  308. package/dist/src/nameserver-history-viewer/nameserver-history.module.d.ts +0 -2
  309. package/ng-package.json +0 -7
  310. package/public-api.ts +0 -1
  311. package/src/assets/GitHub-Mark-32px.png +0 -0
  312. package/src/demo/app.component.html +0 -42
  313. package/src/demo/app.component.scss +0 -155
  314. package/src/demo/app.component.ts +0 -157
  315. package/src/demo/app.module.ts +0 -30
  316. package/src/demo/demo-service.ts +0 -479
  317. package/src/demo/demo-util.spec.ts +0 -112
  318. package/src/demo/demo-util.ts +0 -121
  319. package/src/demo/index.html +0 -13
  320. package/src/demo/main.ts +0 -12
  321. package/src/demo/small-demo.gif +0 -0
  322. package/src/demo/styles.css +0 -5
  323. package/src/environments/environment.prod.ts +0 -3
  324. package/src/environments/environment.ts +0 -15
  325. package/src/karma.conf.js +0 -31
  326. package/src/nameserver-history-viewer/components/alert/alert.component.html +0 -10
  327. package/src/nameserver-history-viewer/components/alert/alert.component.scss +0 -78
  328. package/src/nameserver-history-viewer/components/alert/alert.component.ts +0 -67
  329. package/src/nameserver-history-viewer/components/alert/alert.module.ts +0 -14
  330. package/src/nameserver-history-viewer/components/alert/index.ts +0 -6
  331. package/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.scss +0 -37
  332. package/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.spec.ts +0 -47
  333. package/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.ts +0 -101
  334. package/src/nameserver-history-viewer/components/file-drop-input/index.ts +0 -1
  335. package/src/nameserver-history-viewer/components/index.ts +0 -8
  336. package/src/nameserver-history-viewer/components/instruction/index.ts +0 -1
  337. package/src/nameserver-history-viewer/components/instruction/instruction.component.html +0 -33
  338. package/src/nameserver-history-viewer/components/instruction/instruction.component.scss +0 -49
  339. package/src/nameserver-history-viewer/components/instruction/instruction.component.ts +0 -30
  340. package/src/nameserver-history-viewer/components/nameserver-history.component.html +0 -70
  341. package/src/nameserver-history-viewer/components/nameserver-history.component.scss +0 -191
  342. package/src/nameserver-history-viewer/components/nameserver-history.component.spec.ts +0 -193
  343. package/src/nameserver-history-viewer/components/nameserver-history.component.ts +0 -666
  344. package/src/nameserver-history-viewer/components/port-selector/index.ts +0 -1
  345. package/src/nameserver-history-viewer/components/port-selector/port-selector.component.ts +0 -55
  346. package/src/nameserver-history-viewer/components/port-selector/port-selector.service.spec.ts +0 -16
  347. package/src/nameserver-history-viewer/components/port-selector/port-selector.service.ts +0 -40
  348. package/src/nameserver-history-viewer/components/progress-bar/index.ts +0 -1
  349. package/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.scss +0 -47
  350. package/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.ts +0 -27
  351. package/src/nameserver-history-viewer/components/time-range-selector/index.ts +0 -1
  352. package/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.scss +0 -31
  353. package/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.ts +0 -46
  354. package/src/nameserver-history-viewer/components/timezone-selector/index.ts +0 -1
  355. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.ts +0 -82
  356. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.spec.ts +0 -12
  357. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.ts +0 -53
  358. package/src/nameserver-history-viewer/index.ts +0 -1
  359. package/src/nameserver-history-viewer/nameserver-history.module.ts +0 -45
  360. package/src/nameserver-history-viewer/services/chart.service.ts +0 -343
  361. package/src/nameserver-history-viewer/services/file.service.spec.ts +0 -3364
  362. package/src/nameserver-history-viewer/services/file.service.ts +0 -450
  363. package/src/nameserver-history-viewer/services/index.ts +0 -3
  364. package/src/nameserver-history-viewer/services/ui.service.spec.ts +0 -43
  365. package/src/nameserver-history-viewer/services/ui.service.ts +0 -601
  366. package/src/nameserver-history-viewer/types/abort.types.ts +0 -4
  367. package/src/nameserver-history-viewer/types/alert.types.ts +0 -6
  368. package/src/nameserver-history-viewer/types/chart-content-data-item.types.ts +0 -4
  369. package/src/nameserver-history-viewer/types/chart-content-data.types.ts +0 -6
  370. package/src/nameserver-history-viewer/types/chart-content-header.types.ts +0 -4
  371. package/src/nameserver-history-viewer/types/chart-content-time.types.ts +0 -3
  372. package/src/nameserver-history-viewer/types/chart-content.types.ts +0 -10
  373. package/src/nameserver-history-viewer/types/color-rgba.types.ts +0 -6
  374. package/src/nameserver-history-viewer/types/html-element.type.ts +0 -7
  375. package/src/nameserver-history-viewer/types/index.ts +0 -27
  376. package/src/nameserver-history-viewer/types/item.types.ts +0 -12
  377. package/src/nameserver-history-viewer/types/legend-color.types.ts +0 -5
  378. package/src/nameserver-history-viewer/types/load-history-info-backup.types.ts +0 -8
  379. package/src/nameserver-history-viewer/types/load-history-info-columnstore.types.ts +0 -9
  380. package/src/nameserver-history-viewer/types/load-history-info-host.types.ts +0 -17
  381. package/src/nameserver-history-viewer/types/load-history-info-item.types.ts +0 -14
  382. package/src/nameserver-history-viewer/types/load-history-info-persistence.types.ts +0 -12
  383. package/src/nameserver-history-viewer/types/load-history-info-rowstore.types.ts +0 -7
  384. package/src/nameserver-history-viewer/types/load-history-info-server.types.ts +0 -11
  385. package/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.ts +0 -11
  386. package/src/nameserver-history-viewer/types/load-history-info-sql.types.ts +0 -17
  387. package/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.ts +0 -6
  388. package/src/nameserver-history-viewer/types/load-history-info-threads.types.ts +0 -10
  389. package/src/nameserver-history-viewer/types/load-history-info.types.ts +0 -24
  390. package/src/nameserver-history-viewer/types/port.types.ts +0 -5
  391. package/src/nameserver-history-viewer/types/scale-group.types.ts +0 -15
  392. package/src/nameserver-history-viewer/types/unit-category.types.ts +0 -8
  393. package/src/nameserver-history-viewer/types/unit.types.ts +0 -12
  394. package/src/nameserver-history-viewer/utils/chart-util.spec.ts +0 -22
  395. package/src/nameserver-history-viewer/utils/chart-util.ts +0 -30
  396. package/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.ts +0 -104
  397. package/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.ts +0 -95
  398. package/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.ts +0 -196
  399. package/src/nameserver-history-viewer/utils/chartjs-downsample/index.ts +0 -44
  400. package/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.ts +0 -158
  401. package/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.ts +0 -249
  402. package/src/nameserver-history-viewer/utils/chartjs-downsample/utils.ts +0 -122
  403. package/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.ts +0 -602
  404. package/src/nameserver-history-viewer/utils/chartjs-zoom/index.ts +0 -1
  405. package/src/nameserver-history-viewer/utils/file-util.spec.ts +0 -108
  406. package/src/nameserver-history-viewer/utils/file-util.ts +0 -149
  407. package/src/nameserver-history-viewer/utils/index.ts +0 -4
  408. package/src/nameserver-history-viewer/utils/time-util.spec.ts +0 -21
  409. package/src/nameserver-history-viewer/utils/time-util.ts +0 -113
  410. package/src/nameserver-history-viewer/utils/ui-util.spec.ts +0 -87
  411. package/src/nameserver-history-viewer/utils/ui-util.ts +0 -171
  412. package/src/polyfills.ts +0 -80
  413. package/src/test.ts +0 -20
  414. package/src/tsconfig.app.json +0 -12
  415. package/src/tsconfig.spec.json +0 -19
  416. package/tsconfig.json +0 -22
  417. package/tslint.json +0 -130
@@ -0,0 +1,323 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Chart } from 'chart.js';
3
+ import { getColorString, getNumberWithCommas, randomColor } from '../utils';
4
+ import { UIService } from './ui.service';
5
+ import { Item, Unit } from '../types';
6
+ import * as i0 from "@angular/core";
7
+ // Using dynamic flag to fix the issue of ng-packagr #696: Lambda not supported
8
+ // @dynamic
9
+ export class ChartService {
10
+ /**
11
+ * toggle the dataset status of the chart, synchronously
12
+ */
13
+ static _toggleDataSet(dataSetIndex, chart, hidden) {
14
+ // meta.hidden = false and dataset.hidden = false --> show
15
+ // meta.hidden = false and dataset.hidden = true --> show
16
+ // meta.hidden = null and dataset.hidden = false -> show
17
+ // meta.hidden = null and dataset.hidden = true -> hide
18
+ // in the first case (false, false), needs to click legend twice to
19
+ // hide the dataset, because the first click only set meta.hidden = null)
20
+ if (dataSetIndex != null && chart != null) {
21
+ const meta = chart.getDatasetMeta(dataSetIndex);
22
+ if (meta) {
23
+ if (!hidden) {
24
+ // display the item, if dataset hidden is false, set hidden of meta to null,
25
+ meta.hidden = !chart.data.datasets[dataSetIndex].hidden ? null : hidden;
26
+ }
27
+ else {
28
+ meta.hidden = hidden;
29
+ }
30
+ }
31
+ }
32
+ }
33
+ static _restoreDataSetStatus(chart, datasetIndex, status) {
34
+ if (chart && chart.data && chart.data.datasets && chart.getDatasetMeta(datasetIndex) && status) {
35
+ chart.data.datasets[datasetIndex].hidden = status.datasetStatus;
36
+ chart.getDatasetMeta(datasetIndex).hidden = status.metaStatus;
37
+ }
38
+ }
39
+ /**
40
+ * initialize/clear the configuration for the chart
41
+ */
42
+ static _initConfig(chart) {
43
+ // init data sets
44
+ if (chart.data && chart.data.datasets) {
45
+ chart.data.datasets.length = 0;
46
+ chart.data.datasets = void 0;
47
+ chart.data = void 0;
48
+ }
49
+ // init options
50
+ if (chart.options && chart.options.scales && (chart.options.scales.xAxes || chart.options.scales.yAxis)) {
51
+ if (chart.options.scales.xAxes) {
52
+ chart.options.scales.xAxes.length = 0;
53
+ chart.options.scales.xAxes = void 0;
54
+ }
55
+ if (chart.options.scales.yAxes) {
56
+ chart.options.scales.yAxes.length = 0;
57
+ chart.options.scales.yAxes = void 0;
58
+ }
59
+ chart.options.scales = void 0;
60
+ chart.options = void 0;
61
+ }
62
+ }
63
+ /**
64
+ * Generate DataSets by the data and header information
65
+ */
66
+ static _generateDataSets(data, header, headerKey, defaultItems) {
67
+ const alpha = 0.5;
68
+ const colors = UIService.getColors(alpha);
69
+ return data.map((item, i) => {
70
+ const color = colors[headerKey[i]] ? getColorString(colors[headerKey[i]]) : randomColor(alpha);
71
+ return {
72
+ borderColor: color,
73
+ backgroundColor: color,
74
+ borderWidth: 1.25,
75
+ spanGaps: false,
76
+ label: header[i],
77
+ data: data[i],
78
+ fill: false,
79
+ yAxisID: `y-axis-${i}`,
80
+ hidden: !defaultItems.includes(header[i])
81
+ };
82
+ });
83
+ }
84
+ static _generateXAxes(time) {
85
+ const format = 'MMMDD HH:mm:ss';
86
+ return [
87
+ {
88
+ type: 'time',
89
+ time: {
90
+ // unit: 'second',
91
+ // stepSize: 1,
92
+ displayFormats: {
93
+ 'millisecond': format,
94
+ 'second': format,
95
+ 'minute': format,
96
+ 'hour': 'MMMDD HH',
97
+ 'day': 'MMMDD YYYY',
98
+ 'week': format,
99
+ 'month': format,
100
+ 'quarter': format,
101
+ 'year': format,
102
+ },
103
+ tooltipFormat: 'll HH:mm:ss',
104
+ min: time[0],
105
+ max: time[time.length - 1]
106
+ },
107
+ // scaleLabel: {
108
+ // display: false,
109
+ // labelString: 'Date'
110
+ // },
111
+ ticks: {
112
+ maxRotation: 0,
113
+ reverse: true
114
+ }
115
+ }
116
+ ];
117
+ }
118
+ static _generateYAxes(data, yScale) {
119
+ return data.map((item, i) => ({
120
+ type: 'linear',
121
+ display: false,
122
+ position: 'left',
123
+ id: `y-axis-${i}`,
124
+ gridLines: {},
125
+ ticks: {
126
+ min: 0,
127
+ max: yScale[i]
128
+ }
129
+ }));
130
+ }
131
+ /**
132
+ * generate configuration for chart
133
+ */
134
+ static _generateChartConfig(time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCallback) {
135
+ return {
136
+ type: 'line',
137
+ data: {
138
+ datasets: ChartService._generateDataSets(data, header, headerKey, defaultItems)
139
+ },
140
+ options: {
141
+ elements: { point: { radius: 0, hitRadius: 5, hoverRadius: 5 } },
142
+ responsive: true,
143
+ animation: {
144
+ duration: 0, // general animation time
145
+ },
146
+ hover: {
147
+ animationDuration: 0,
148
+ onHover: function (e) {
149
+ const point = this.getElementAtEvent(e);
150
+ if (point.length) {
151
+ e.target.style.cursor = 'pointer';
152
+ }
153
+ else {
154
+ e.target.style.cursor = 'default';
155
+ }
156
+ }
157
+ },
158
+ responsiveAnimationDuration: 0,
159
+ legend: {
160
+ position: 'bottom',
161
+ onHover: (e) => {
162
+ e.target.style.cursor = 'pointer';
163
+ },
164
+ labels: {
165
+ filter: (legendItem) => selection.isSelected(tableSource.find(row => legendItem.text === row.KPI))
166
+ }
167
+ },
168
+ title: {
169
+ display: true,
170
+ text: title
171
+ },
172
+ responsiveDownsample: {
173
+ enabled: true,
174
+ desiredDataPointDistance: 2,
175
+ minNumPoints: 200,
176
+ maxNumPointsToDraw: 100
177
+ },
178
+ tooltips: {
179
+ callbacks: {
180
+ label: function (tooltipItem, chartData) {
181
+ // format numbers with commas and add unit information
182
+ const label = chartData.datasets[tooltipItem.datasetIndex].label || '';
183
+ if (label) {
184
+ // get unit (eg: MB, GB, MB/s, % and so on)
185
+ const rowItem = tableSource.find(controlTableRow => label === controlTableRow.KPI) || '';
186
+ const unit = rowItem[Item.unit] && rowItem[Item.unit] !== Unit.PCT ? ` ${rowItem[Item.unit]}` : rowItem[Item.unit] || '';
187
+ return `${label}: ${getNumberWithCommas(tooltipItem.yLabel)}${unit}`;
188
+ }
189
+ else {
190
+ return getNumberWithCommas(tooltipItem.yLabel);
191
+ }
192
+ }
193
+ }
194
+ },
195
+ scales: {
196
+ xAxes: ChartService._generateXAxes(time),
197
+ yAxes: ChartService._generateYAxes(data, yScale)
198
+ },
199
+ zoom: {
200
+ enabled: true,
201
+ drag: true,
202
+ mode: 'x',
203
+ onZoom: zoomCallback
204
+ }
205
+ }
206
+ };
207
+ }
208
+ _getDataSetIndexByLabel(label, chart) {
209
+ if (chart.data && chart.data.datasets) {
210
+ return chart.data.datasets.findIndex(dataset => dataset.label === label);
211
+ }
212
+ return -1;
213
+ }
214
+ /**
215
+ * destroy the chart, release the resource of the chart
216
+ */
217
+ _destroyChart(chart) {
218
+ return new Promise((resolve) => {
219
+ if (chart) {
220
+ chart.destroy();
221
+ }
222
+ resolve();
223
+ });
224
+ }
225
+ /**
226
+ * update/refresh the chart
227
+ */
228
+ _updateChart(chart) {
229
+ return new Promise((resolve, reject) => {
230
+ if (chart) {
231
+ chart.update();
232
+ resolve();
233
+ }
234
+ else {
235
+ reject('Updating chart failed, error: the chart object is empty.');
236
+ }
237
+ });
238
+ }
239
+ /**
240
+ * reset zoom of the chart
241
+ */
242
+ _resetZoom(chart) {
243
+ return new Promise((resolve, reject) => {
244
+ if (chart) {
245
+ const datasetStatusBeforeReset = [];
246
+ if (chart.data && chart.data.datasets) {
247
+ chart.data.datasets.forEach((dataset, index) => {
248
+ const meta = chart.getDatasetMeta(index);
249
+ if (meta) {
250
+ datasetStatusBeforeReset[index] = { metaStatus: meta.hidden, datasetStatus: dataset.hidden };
251
+ }
252
+ else {
253
+ reject(`Internal error, can not find the meta ${index}.`);
254
+ }
255
+ });
256
+ }
257
+ chart.resetZoom();
258
+ resolve(datasetStatusBeforeReset);
259
+ }
260
+ else {
261
+ reject('Resetting chart failed, error: the chart object is empty.');
262
+ }
263
+ });
264
+ }
265
+ /**
266
+ * Reset Chart to initial status
267
+ * If legend is already selected/unselected from the list, it wouldn't be restored.
268
+ * @param dataSourceData the data sets of the chart
269
+ * @param selection selection status list
270
+ */
271
+ resetChart(dataSourceData, selection) {
272
+ return this._resetZoom(this._chart).then((datasetStatusBeforeZoom) => {
273
+ // reset the data set by the selection status
274
+ dataSourceData.filter(row => !row.header).forEach(row => {
275
+ const index = this._getDataSetIndexByLabel(row.KPI, this._chart);
276
+ if (!selection.isSelected(row)) {
277
+ ChartService._toggleDataSet(index, this._chart, true);
278
+ }
279
+ else {
280
+ ChartService._restoreDataSetStatus(this._chart, index, datasetStatusBeforeZoom[index]);
281
+ }
282
+ });
283
+ return this._updateChart(this._chart);
284
+ });
285
+ }
286
+ /**
287
+ * destroy the chart and reinitialize the configuration of the chart
288
+ */
289
+ destroyChart() {
290
+ return this._destroyChart(this._chart).then(() => {
291
+ if (this._chart) {
292
+ ChartService._initConfig(this._chart);
293
+ this._chart = void 0;
294
+ }
295
+ });
296
+ }
297
+ /**
298
+ * generate configuration for chart and create the chart object.
299
+ */
300
+ buildChart(time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCB) {
301
+ return new Promise((resolve) => {
302
+ const ctx = document.getElementById('chartNameServerHistory').getContext('2d');
303
+ const cfg = ChartService._generateChartConfig(time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCB);
304
+ this._chart = new Chart(ctx, cfg);
305
+ resolve();
306
+ });
307
+ }
308
+ /**
309
+ * show/hide the relative data set
310
+ */
311
+ toggleDataInChart(label, hide) {
312
+ return new Promise((resolve) => {
313
+ ChartService._toggleDataSet(this._getDataSetIndexByLabel(label, this._chart), this._chart, hide);
314
+ resolve(this._updateChart(this._chart));
315
+ });
316
+ }
317
+ }
318
+ ChartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
319
+ ChartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ChartService });
320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ChartService, decorators: [{
321
+ type: Injectable
322
+ }] });
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uYW1lc2VydmVyLWhpc3Rvcnktdmlld2VyL3NlcnZpY2VzL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFxQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUV6RSwrRUFBK0U7QUFDL0UsV0FBVztBQUVYLE1BQU0sT0FBTyxZQUFZO0lBR3ZCOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQVksRUFBRSxNQUFlO1FBQy9FLDBEQUEwRDtRQUMxRCx5REFBeUQ7UUFDekQsd0RBQXdEO1FBQ3hELHVEQUF1RDtRQUN2RCxtRUFBbUU7UUFDbkUseUVBQXlFO1FBQ3pFLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEQsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDWCw0RUFBNEU7b0JBQzVFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUN6RTtxQkFBTTtvQkFDTCxJ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SUFBYTtRQUNuRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEdBMVVVLFlBQVk7OEdBQVosWUFBWTs0RkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBnZXRDb2xvclN0cmluZywgZ2V0TnVtYmVyV2l0aENvbW1hcywgcmFuZG9tQ29sb3IgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4vdWkuc2VydmljZSc7XHJcbmltcG9ydCB7IENoYXJ0Q29udGVudERhdGFJdGVtLCBMZWdlbmRDb2xvciwgSXRlbSwgVW5pdCB9IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbi8vIFVzaW5nIGR5bmFtaWMgZmxhZyB0byBmaXggdGhlIGlzc3VlIG9mIG5nLXBhY2thZ3IgIzY5NjogTGFtYmRhIG5vdCBzdXBwb3J0ZWRcclxuLy8gQGR5bmFtaWNcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9jaGFydDogQ2hhcnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIHRvZ2dsZSB0aGUgZGF0YXNldCBzdGF0dXMgb2YgdGhlIGNoYXJ0LCBzeW5jaHJvbm91c2x5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3RvZ2dsZURhdGFTZXQoZGF0YVNldEluZGV4OiBudW1iZXIsIGNoYXJ0OiBDaGFydCwgaGlkZGVuOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAvLyBtZXRhLmhpZGRlbiA9IGZhbHNlIGFuZCBkYXRhc2V0LmhpZGRlbiA9IGZhbHNlIC0tPiBzaG93XHJcbiAgICAvLyBtZXRhLmhpZGRlbiA9IGZhbHNlIGFuZCBkYXRhc2V0LmhpZGRlbiA9IHRydWUgLS0+IHNob3dcclxuICAgIC8vIG1ldGEuaGlkZGVuID0gbnVsbCBhbmQgZGF0YXNldC5oaWRkZW4gPSBmYWxzZSAtPiBzaG93XHJcbiAgICAvLyBtZXRhLmhpZGRlbiA9IG51bGwgYW5kIGRhdGFzZXQuaGlkZGVuID0gdHJ1ZSAtPiBoaWRlXHJcbiAgICAvLyBpbiB0aGUgZmlyc3QgY2FzZSAoZmFsc2UsIGZhbHNlKSwgbmVlZHMgdG8gY2xpY2sgbGVnZW5kIHR3aWNlIHRvXHJcbiAgICAvLyBoaWRlIHRoZSBkYXRhc2V0LCBiZWNhdXNlIHRoZSBmaXJzdCBjbGljayBvbmx5IHNldCBtZXRhLmhpZGRlbiA9IG51bGwpXHJcbiAgICBpZiAoZGF0YVNldEluZGV4ICE9IG51bGwgJiYgY2hhcnQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YVNldEluZGV4KTtcclxuICAgICAgaWYgKG1ldGEpIHtcclxuICAgICAgICBpZiAoIWhpZGRlbikge1xyXG4gICAgICAgICAgLy8gZGlzcGxheSB0aGUgaXRlbSwgaWYgZGF0YXNldCBoaWRkZW4gaXMgZmFsc2UsIHNldCBoaWRkZW4gb2YgbWV0YSB0byBudWxsLFxyXG4gICAgICAgICAgbWV0YS5oaWRkZW4gPSAhY2hhcnQuZGF0YS5kYXRhc2V0c1tkYXRhU2V0SW5kZXhdLmhpZGRlbiA/IG51bGwgOiBoaWRkZW47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1ldGEuaGlkZGVuID0gaGlkZGVuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBfcmVzdG9yZURhdGFTZXRTdGF0dXMoY2hhcnQ6IENoYXJ0LCBkYXRhc2V0SW5kZXg6IG51bWJlciwgc3RhdHVzOiB7bWV0YVN0YXR1czogYm9vbGVhbiwgZGF0YXNldFN0YXR1czogYm9vbGVhbn0pOiB2b2lkIHtcclxuICAgIGlmIChjaGFydCAmJiBjaGFydC5kYXRhICYmIGNoYXJ0LmRhdGEuZGF0YXNldHMgJiYgY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KSAmJiBzdGF0dXMpIHtcclxuICAgICAgY2hhcnQuZGF0YS5kYXRhc2V0c1tkYXRhc2V0SW5kZXhdLmhpZGRlbiA9IHN0YXR1cy5kYXRhc2V0U3RhdHVzO1xyXG4gICAgICBjaGFydC5nZXREYXRhc2V0TWV0YShkYXRhc2V0SW5kZXgpLmhpZGRlbiA9IHN0YXR1cy5tZXRhU3RhdHVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogaW5pdGlhbGl6ZS9jbGVhciB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNoYXJ0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luaXRDb25maWcoY2hhcnQ6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gaW5pdCBkYXRhIHNldHNcclxuICAgIGlmIChjaGFydC5kYXRhICYmIGNoYXJ0LmRhdGEuZGF0YXNldHMpIHtcclxuICAgICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGggPSAwO1xyXG4gICAgICBjaGFydC5kYXRhLmRhdGFzZXRzID0gdm9pZCAwO1xyXG4gICAgICBjaGFydC5kYXRhID0gdm9pZCAwO1xyXG4gICAgfVxyXG4gICAgLy8gaW5pdCBvcHRpb25zXHJcbiAgICBpZiAoY2hhcnQub3B0aW9ucyAmJiBjaGFydC5vcHRpb25zLnNjYWxlcyAmJiAoY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXMgfHwgY2hhcnQub3B0aW9ucy5zY2FsZXMueUF4aXMpKSB7XHJcbiAgICAgIGlmIChjaGFydC5vcHRpb25zLnNjYWxlcy54QXhlcykge1xyXG4gICAgICAgIGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXMgPSB2b2lkIDA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzKSB7XHJcbiAgICAgICAgY2hhcnQub3B0aW9ucy5zY2FsZXMueUF4ZXMubGVuZ3RoID0gMDtcclxuICAgICAgICBjaGFydC5vcHRpb25zLnNjYWxlcy55QXhlcyA9IHZvaWQgMDtcclxuICAgICAgfVxyXG4gICAgICBjaGFydC5vcHRpb25zLnNjYWxlcyA9IHZvaWQgMDtcclxuICAgICAgY2hhcnQub3B0aW9ucyA9IHZvaWQgMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlIERhdGFTZXRzIGJ5IHRoZSBkYXRhIGFuZCBoZWFkZXIgaW5mb3JtYXRpb25cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBfZ2VuZXJhdGVEYXRhU2V0cyhkYXRhOiBDaGFydENvbnRlbnREYXRhSXRlbVtdW10sIGhlYWRlcjogc3RyaW5nW10sIGhlYWRlcktleTogc3RyaW5nW10sIGRlZmF1bHRJdGVtczogc3RyaW5nW10pOiBhbnkge1xyXG4gICAgY29uc3QgYWxwaGEgPSAwLjU7XHJcbiAgICBjb25zdCBjb2xvcnM6IExlZ2VuZENvbG9yID0gVUlTZXJ2aWNlLmdldENvbG9ycyhhbHBoYSk7XHJcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgY29uc3QgY29sb3IgPSBjb2xvcnNbaGVhZGVyS2V5W2ldXSA/IGdldENvbG9yU3RyaW5nKGNvbG9yc1toZWFkZXJLZXlbaV1dKSA6IHJhbmRvbUNvbG9yKGFscGhhKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcclxuICAgICAgICBib3JkZXJXaWR0aDogMS4yNSxcclxuICAgICAgICBzcGFuR2FwczogZmFsc2UsXHJcbiAgICAgICAgbGFiZWw6IGhlYWRlcltpXSxcclxuICAgICAgICBkYXRhOiBkYXRhW2ldLFxyXG4gICAgICAgIGZpbGw6IGZhbHNlLFxyXG4gICAgICAgIHlBeGlzSUQ6IGB5LWF4aXMtJHtpfWAsXHJcbiAgICAgICAgaGlkZGVuOiAhZGVmYXVsdEl0ZW1zLmluY2x1ZGVzKGhlYWRlcltpXSlcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBfZ2VuZXJhdGVYQXhlcyh0aW1lOiBudW1iZXJbXSk6IGFueSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSAnTU1NREQgSEg6bW06c3MnO1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICd0aW1lJyxcclxuICAgICAgICB0aW1lOiB7XHJcbiAgICAgICAgICAvLyB1bml0OiAnc2Vjb25kJyxcclxuICAgICAgICAgIC8vIHN0ZXBTaXplOiAxLFxyXG4gICAgICAgICAgZGlzcGxheUZvcm1hdHM6IHtcclxuICAgICAgICAgICAgJ21pbGxpc2Vjb25kJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAnc2Vjb25kJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAnbWludXRlJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAnaG91cic6ICdNTU1ERCBISCcsXHJcbiAgICAgICAgICAgICdkYXknOiAnTU1NREQgWVlZWScsXHJcbiAgICAgICAgICAgICd3ZWVrJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAnbW9udGgnOiBmb3JtYXQsXHJcbiAgICAgICAgICAgICdxdWFydGVyJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAneWVhcic6IGZvcm1hdCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0b29sdGlwRm9ybWF0OiAnbGwgSEg6bW06c3MnLFxyXG4gICAgICAgICAgbWluOiB0aW1lWzBdLFxyXG4gICAgICAgICAgbWF4OiB0aW1lW3RpbWUubGVuZ3RoIC0gMV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAvLyAgIGRpc3BsYXk6IGZhbHNlLFxyXG4gICAgICAgIC8vICAgbGFiZWxTdHJpbmc6ICdEYXRlJ1xyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIG1heFJvdGF0aW9uOiAwLFxyXG4gICAgICAgICAgcmV2ZXJzZTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2dlbmVyYXRlWUF4ZXMoZGF0YTogQ2hhcnRDb250ZW50RGF0YUl0ZW1bXVtdLCB5U2NhbGU6IG51bWJlcltdKTogYW55IHtcclxuICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbSwgaSkgPT4gKHtcclxuICAgICAgdHlwZTogJ2xpbmVhcicsXHJcbiAgICAgIGRpc3BsYXk6IGZhbHNlLFxyXG4gICAgICBwb3NpdGlvbjogJ2xlZnQnLFxyXG4gICAgICBpZDogYHktYXhpcy0ke2l9YCxcclxuICAgICAgZ3JpZExpbmVzOiB7XHJcbiAgICAgIH0sXHJcbiAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgbWluOiAwLFxyXG4gICAgICAgIG1heDogeVNjYWxlW2ldXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdlbmVyYXRlIGNvbmZpZ3VyYXRpb24gZm9yIGNoYXJ0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2dlbmVyYXRlQ2hhcnRDb25maWcodGltZTogbnVtYmVyW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogQ2hhcnRDb250ZW50RGF0YUl0ZW1bXVtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlTY2FsZTogbnVtYmVyW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJLZXk6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55PixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNvdXJjZTogYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEl0ZW1zOiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tQ2FsbGJhY2s6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBkYXRhc2V0czogQ2hhcnRTZXJ2aWNlLl9nZW5lcmF0ZURhdGFTZXRzKGRhdGEsIGhlYWRlciwgaGVhZGVyS2V5LCBkZWZhdWx0SXRlbXMpXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBlbGVtZW50czoge3BvaW50OiB7cmFkaXVzOiAwLCBoaXRSYWRpdXM6IDUsIGhvdmVyUmFkaXVzOiA1fX0sIC8vIHNldCByYWRpdXMgdG8gMCBub3QgdG8gZGlzcGxheSBwb2ludFxyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgYW5pbWF0aW9uOiB7XHJcbiAgICAgICAgICBkdXJhdGlvbjogMCwgLy8gZ2VuZXJhbCBhbmltYXRpb24gdGltZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaG92ZXI6IHtcclxuICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiAwLCAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb25zIHdoZW4gaG92ZXJpbmcgYW4gaXRlbVxyXG4gICAgICAgICAgb25Ib3ZlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0aGlzLmdldEVsZW1lbnRBdEV2ZW50KGUpO1xyXG4gICAgICAgICAgICBpZiAocG9pbnQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgZS50YXJnZXQuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGUudGFyZ2V0LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzcG9uc2l2ZUFuaW1hdGlvbkR1cmF0aW9uOiAwLCAvLyBhbmltYXRpb24gZHVyYXRpb24gYWZ0ZXIgYSByZXNpemVcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgICAgICAgIG9uSG92ZXI6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUudGFyZ2V0LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsYWJlbHM6IHtcclxuICAgICAgICAgICAgZmlsdGVyOiAobGVnZW5kSXRlbSkgPT4gc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGFibGVTb3VyY2UuZmluZChyb3cgPT4gbGVnZW5kSXRlbS50ZXh0ID09PSByb3cuS1BJKSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgdGV4dDogdGl0bGVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3BvbnNpdmVEb3duc2FtcGxlOiB7XHJcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgZGVzaXJlZERhdGFQb2ludERpc3RhbmNlOiAyLFxyXG4gICAgICAgICAgbWluTnVtUG9pbnRzOiAyMDAsXHJcbiAgICAgICAgICBtYXhOdW1Qb2ludHNUb0RyYXc6IDEwMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogZnVuY3Rpb24odG9vbHRpcEl0ZW0sIGNoYXJ0RGF0YSkge1xyXG4gICAgICAgICAgICAgIC8vIGZvcm1hdCBudW1iZXJzIHdpdGggY29tbWFzIGFuZCBhZGQgdW5pdCBpbmZvcm1hdGlvblxyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gY2hhcnREYXRhLmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0ubGFiZWwgfHwgJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBnZXQgdW5pdCAoZWc6IE1CLCBHQiwgTUIvcywgJSBhbmQgc28gb24pXHJcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJdGVtID0gdGFibGVTb3VyY2UuZmluZChjb250cm9sVGFibGVSb3cgPT4gbGFiZWwgPT09IGNvbnRyb2xUYWJsZVJvdy5LUEkpIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdW5pdCA9IHJvd0l0ZW1bSXRlbS51bml0XSAmJiByb3dJdGVtW0l0ZW0udW5pdF0gIT09IFVuaXQuUENUID8gYCAke3Jvd0l0ZW1bSXRlbS51bml0XX1gIDogcm93SXRlbVtJdGVtLnVuaXRdIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xhYmVsfTogJHtnZXROdW1iZXJXaXRoQ29tbWFzKHRvb2x0aXBJdGVtLnlMYWJlbCl9JHt1bml0fWA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBnZXROdW1iZXJXaXRoQ29tbWFzKHRvb2x0aXBJdGVtLnlMYWJlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZXM6IHtcclxuICAgICAgICAgIHhBeGVzOiBDaGFydFNlcnZpY2UuX2dlbmVyYXRlWEF4ZXModGltZSksXHJcbiAgICAgICAgICB5QXhlczogQ2hhcnRTZXJ2aWNlLl9nZW5lcmF0ZVlBeGVzKGRhdGEsIHlTY2FsZSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHpvb206IHtcclxuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICBkcmFnOiB0cnVlLFxyXG4gICAgICAgICAgbW9kZTogJ3gnLFxyXG4gICAgICAgICAgb25ab29tOiB6b29tQ2FsbGJhY2tcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXREYXRhU2V0SW5kZXhCeUxhYmVsKGxhYmVsOiBzdHJpbmcsIGNoYXJ0OiBDaGFydCk6IG51bWJlciB7XHJcbiAgICBpZiAoY2hhcnQuZGF0YSAmJiBjaGFydC5kYXRhLmRhdGFzZXRzKSB7XHJcbiAgICAgIHJldHVybiBjaGFydC5kYXRhLmRhdGFzZXRzLmZpbmRJbmRleChkYXRhc2V0ID0+IGRhdGFzZXQubGFiZWwgPT09IGxhYmVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGRlc3Ryb3kgdGhlIGNoYXJ0LCByZWxlYXNlIHRoZSByZXNvdXJjZSBvZiB0aGUgY2hhcnRcclxuICAgKi9cclxuICBwcml2YXRlIF9kZXN0cm95Q2hhcnQoY2hhcnQ6IENoYXJ0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgICAgY2hhcnQuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiB1cGRhdGUvcmVmcmVzaCB0aGUgY2hhcnRcclxuICAgKi9cclxuICBwcml2YXRlIF91cGRhdGVDaGFydChjaGFydDogQ2hhcnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChjaGFydCkge1xyXG4gICAgICAgIGNoYXJ0LnVwZGF0ZSgpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZWplY3QoJ1VwZGF0aW5nIGNoYXJ0IGZhaWxlZCwgZXJyb3I6IHRoZSBjaGFydCBvYmplY3QgaXMgZW1wdHkuJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcmVzZXQgem9vbSBvZiB0aGUgY2hhcnRcclxuICAgKi9cclxuICBwcml2YXRlIF9yZXNldFpvb20oY2hhcnQ6IGFueSk6IFByb21pc2U8e21ldGFTdGF0dXM6IGJvb2xlYW4sIGRhdGFzZXRTdGF0dXM6IGJvb2xlYW59W10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmIChjaGFydCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGFzZXRTdGF0dXNCZWZvcmVSZXNldCA9IFtdO1xyXG4gICAgICAgIGlmIChjaGFydC5kYXRhICYmIGNoYXJ0LmRhdGEuZGF0YXNldHMpIHtcclxuICAgICAgICAgIGNoYXJ0LmRhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGluZGV4KTtcclxuICAgICAgICAgICAgaWYgKG1ldGEpIHtcclxuICAgICAgICAgICAgICBkYXRhc2V0U3RhdHVzQmVmb3JlUmVzZXRbaW5kZXhdID0ge21ldGFTdGF0dXM6IG1ldGEuaGlkZGVuLCBkYXRhc2V0U3RhdHVzOiBkYXRhc2V0LmhpZGRlbn07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVqZWN0KGBJbnRlcm5hbCBlcnJvciwgY2FuIG5vdCBmaW5kIHRoZSBtZXRhICR7aW5kZXh9LmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hhcnQucmVzZXRab29tKCk7XHJcbiAgICAgICAgcmVzb2x2ZShkYXRhc2V0U3RhdHVzQmVmb3JlUmVzZXQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlamVjdCgnUmVzZXR0aW5nIGNoYXJ0IGZhaWxlZCwgZXJyb3I6IHRoZSBjaGFydCBvYmplY3QgaXMgZW1wdHkuJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXNldCBDaGFydCB0byBpbml0aWFsIHN0YXR1c1xyXG4gICAqIElmIGxlZ2VuZCBpcyBhbHJlYWR5IHNlbGVjdGVkL3Vuc2VsZWN0ZWQgZnJvbSB0aGUgbGlzdCwgaXQgd291bGRuJ3QgYmUgcmVzdG9yZWQuXHJcbiAgICogQHBhcmFtIGRhdGFTb3VyY2VEYXRhIHRoZSBkYXRhIHNldHMgb2YgdGhlIGNoYXJ0XHJcbiAgICogQHBhcmFtIHNlbGVjdGlvbiBzZWxlY3Rpb24gc3RhdHVzIGxpc3RcclxuICAgKi9cclxuICBwdWJsaWMgcmVzZXRDaGFydChkYXRhU291cmNlRGF0YTogYW55LCBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4pOiBQcm9taXNlIDxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9yZXNldFpvb20odGhpcy5fY2hhcnQpLnRoZW4oKGRhdGFzZXRTdGF0dXNCZWZvcmVab29tKSA9PiB7XHJcbiAgICAgIC8vIHJlc2V0IHRoZSBkYXRhIHNldCBieSB0aGUgc2VsZWN0aW9uIHN0YXR1c1xyXG4gICAgICBkYXRhU291cmNlRGF0YS5maWx0ZXIocm93ID0+ICFyb3cuaGVhZGVyKS5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9nZXREYXRhU2V0SW5kZXhCeUxhYmVsKHJvdy5LUEksIHRoaXMuX2NoYXJ0KTtcclxuICAgICAgICBpZiAoIXNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdykpIHtcclxuICAgICAgICAgIENoYXJ0U2VydmljZS5fdG9nZ2xlRGF0YVNldChpbmRleCwgdGhpcy5fY2hhcnQsIHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBDaGFydFNlcnZpY2UuX3Jlc3RvcmVEYXRhU2V0U3RhdHVzKHRoaXMuX2NoYXJ0LCBpbmRleCwgZGF0YXNldFN0YXR1c0JlZm9yZVpvb21baW5kZXhdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdXBkYXRlQ2hhcnQodGhpcy5fY2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBkZXN0cm95IHRoZSBjaGFydCBhbmQgcmVpbml0aWFsaXplIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBjaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZXN0cm95Q2hhcnQoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9kZXN0cm95Q2hhcnQodGhpcy5fY2hhcnQpLnRoZW4oKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fY2hhcnQpIHtcclxuICAgICAgICBDaGFydFNlcnZpY2UuX2luaXRDb25maWcodGhpcy5fY2hhcnQpO1xyXG4gICAgICAgIHRoaXMuX2NoYXJ0ID0gdm9pZCAwO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGdlbmVyYXRlIGNvbmZpZ3VyYXRpb24gZm9yIGNoYXJ0IGFuZCBjcmVhdGUgdGhlIGNoYXJ0IG9iamVjdC5cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRDaGFydCh0aW1lOiBudW1iZXJbXSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBDaGFydENvbnRlbnREYXRhSXRlbVtdW10sXHJcbiAgICAgICAgICAgICAgICAgICAgeVNjYWxlOiBudW1iZXJbXSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcktleTogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+LFxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlU291cmNlOiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SXRlbXM6IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgIHpvb21DQik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN0eCA9ICg8SFRNTENhbnZhc0VsZW1lbnQ+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydE5hbWVTZXJ2ZXJIaXN0b3J5JykpLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgIGNvbnN0IGNmZzogYW55ID0gQ2hhcnRTZXJ2aWNlLl9nZW5lcmF0ZUNoYXJ0Q29uZmlnKHRpbWUsIGRhdGEsIHlTY2FsZSwgaGVhZGVyLCBoZWFkZXJLZXksIHNlbGVjdGlvbiwgdGFibGVTb3VyY2UsIHRpdGxlLCBkZWZhdWx0SXRlbXMsIHpvb21DQik7XHJcbiAgICAgIHRoaXMuX2NoYXJ0ID0gbmV3IENoYXJ0KGN0eCwgY2ZnKTtcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzaG93L2hpZGUgdGhlIHJlbGF0aXZlIGRhdGEgc2V0XHJcbiAgICovXHJcbiAgcHVibGljIHRvZ2dsZURhdGFJbkNoYXJ0KGxhYmVsOiBzdHJpbmcsIGhpZGU6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIENoYXJ0U2VydmljZS5fdG9nZ2xlRGF0YVNldCh0aGlzLl9nZXREYXRhU2V0SW5kZXhCeUxhYmVsKGxhYmVsLCB0aGlzLl9jaGFydCksIHRoaXMuX2NoYXJ0LCBoaWRlKTtcclxuICAgICAgcmVzb2x2ZSh0aGlzLl91cGRhdGVDaGFydCh0aGlzLl9jaGFydCkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==