ngx-hana-nameserver-history-viewer 1.1.1 → 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 (242) hide show
  1. package/README.md +7 -6
  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/fesm2015/ngx-hana-nameserver-history-viewer.mjs +4081 -0
  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 +1 -1
  76. package/package.json +36 -61
  77. package/src/nameserver-history-viewer/components/alert/alert.component.d.ts +4 -1
  78. package/src/nameserver-history-viewer/components/alert/alert.module.d.ts +6 -0
  79. package/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.d.ts +3 -0
  80. package/src/nameserver-history-viewer/components/instruction/instruction.component.d.ts +3 -0
  81. package/src/nameserver-history-viewer/components/nameserver-history.component.d.ts +33 -14
  82. package/src/nameserver-history-viewer/components/port-selector/port-selector.component.d.ts +4 -1
  83. package/src/nameserver-history-viewer/components/port-selector/port-selector.service.d.ts +3 -0
  84. package/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.d.ts +3 -0
  85. package/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.d.ts +3 -0
  86. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.d.ts +3 -0
  87. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.d.ts +3 -0
  88. package/src/nameserver-history-viewer/index.d.ts +1 -0
  89. package/src/nameserver-history-viewer/nameserver-history.module.d.ts +17 -0
  90. package/src/nameserver-history-viewer/services/chart.service.d.ts +4 -1
  91. package/src/nameserver-history-viewer/services/file.service.d.ts +4 -0
  92. package/src/nameserver-history-viewer/services/ui.service.d.ts +5 -2
  93. package/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.d.ts +3 -0
  94. package/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.d.ts +1 -1
  95. package/src/nameserver-history-viewer/utils/file-util.d.ts +11 -0
  96. package/bundles/ngx-hana-nameserver-history-viewer.umd.js +0 -6298
  97. package/bundles/ngx-hana-nameserver-history-viewer.umd.js.map +0 -1
  98. package/bundles/ngx-hana-nameserver-history-viewer.umd.min.js +0 -2
  99. package/bundles/ngx-hana-nameserver-history-viewer.umd.min.js.map +0 -1
  100. package/esm2015/ngx-hana-nameserver-history-viewer.js +0 -10
  101. package/esm2015/public-api.js +0 -6
  102. package/esm2015/src/nameserver-history-viewer/components/alert/alert.component.js +0 -108
  103. package/esm2015/src/nameserver-history-viewer/components/alert/alert.module.js +0 -21
  104. package/esm2015/src/nameserver-history-viewer/components/alert/index.js +0 -7
  105. package/esm2015/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -141
  106. package/esm2015/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  107. package/esm2015/src/nameserver-history-viewer/components/index.js +0 -13
  108. package/esm2015/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  109. package/esm2015/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -62
  110. package/esm2015/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -742
  111. package/esm2015/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  112. package/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  113. package/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -56
  114. package/esm2015/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  115. package/esm2015/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -35
  116. package/esm2015/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  117. package/esm2015/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -68
  118. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  119. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -135
  120. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -72
  121. package/esm2015/src/nameserver-history-viewer/index.js +0 -6
  122. package/esm2015/src/nameserver-history-viewer/nameserver-history.module.js +0 -42
  123. package/esm2015/src/nameserver-history-viewer/services/chart.service.js +0 -423
  124. package/esm2015/src/nameserver-history-viewer/services/file.service.js +0 -447
  125. package/esm2015/src/nameserver-history-viewer/services/index.js +0 -8
  126. package/esm2015/src/nameserver-history-viewer/services/ui.service.js +0 -817
  127. package/esm2015/src/nameserver-history-viewer/types/abort.types.js +0 -13
  128. package/esm2015/src/nameserver-history-viewer/types/alert.types.js +0 -13
  129. package/esm2015/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  130. package/esm2015/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  131. package/esm2015/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  132. package/esm2015/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  133. package/esm2015/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  134. package/esm2015/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  135. package/esm2015/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  136. package/esm2015/src/nameserver-history-viewer/types/index.js +0 -32
  137. package/esm2015/src/nameserver-history-viewer/types/item.types.js +0 -19
  138. package/esm2015/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  139. package/esm2015/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  140. package/esm2015/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  141. package/esm2015/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  142. package/esm2015/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  143. package/esm2015/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  144. package/esm2015/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  145. package/esm2015/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  146. package/esm2015/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -19
  147. package/esm2015/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  148. package/esm2015/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  149. package/esm2015/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  150. package/esm2015/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  151. package/esm2015/src/nameserver-history-viewer/types/port.types.js +0 -17
  152. package/esm2015/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  153. package/esm2015/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  154. package/esm2015/src/nameserver-history-viewer/types/unit.types.js +0 -19
  155. package/esm2015/src/nameserver-history-viewer/utils/chart-util.js +0 -38
  156. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  157. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  158. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -213
  159. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  160. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -158
  161. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -295
  162. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -130
  163. package/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -733
  164. package/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  165. package/esm2015/src/nameserver-history-viewer/utils/file-util.js +0 -149
  166. package/esm2015/src/nameserver-history-viewer/utils/index.js +0 -9
  167. package/esm2015/src/nameserver-history-viewer/utils/time-util.js +0 -135
  168. package/esm2015/src/nameserver-history-viewer/utils/ui-util.js +0 -203
  169. package/esm5/ngx-hana-nameserver-history-viewer.js +0 -10
  170. package/esm5/public-api.js +0 -6
  171. package/esm5/src/nameserver-history-viewer/components/alert/alert.component.js +0 -140
  172. package/esm5/src/nameserver-history-viewer/components/alert/alert.module.js +0 -25
  173. package/esm5/src/nameserver-history-viewer/components/alert/index.js +0 -7
  174. package/esm5/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -155
  175. package/esm5/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  176. package/esm5/src/nameserver-history-viewer/components/index.js +0 -13
  177. package/esm5/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  178. package/esm5/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -67
  179. package/esm5/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -990
  180. package/esm5/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  181. package/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  182. package/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -81
  183. package/esm5/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  184. package/esm5/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -26
  185. package/esm5/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  186. package/esm5/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -58
  187. package/esm5/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  188. package/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -164
  189. package/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -102
  190. package/esm5/src/nameserver-history-viewer/index.js +0 -6
  191. package/esm5/src/nameserver-history-viewer/nameserver-history.module.js +0 -46
  192. package/esm5/src/nameserver-history-viewer/services/chart.service.js +0 -578
  193. package/esm5/src/nameserver-history-viewer/services/file.service.js +0 -566
  194. package/esm5/src/nameserver-history-viewer/services/index.js +0 -8
  195. package/esm5/src/nameserver-history-viewer/services/ui.service.js +0 -1036
  196. package/esm5/src/nameserver-history-viewer/types/abort.types.js +0 -13
  197. package/esm5/src/nameserver-history-viewer/types/alert.types.js +0 -13
  198. package/esm5/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  199. package/esm5/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  200. package/esm5/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  201. package/esm5/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  202. package/esm5/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  203. package/esm5/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  204. package/esm5/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  205. package/esm5/src/nameserver-history-viewer/types/index.js +0 -32
  206. package/esm5/src/nameserver-history-viewer/types/item.types.js +0 -19
  207. package/esm5/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  208. package/esm5/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  209. package/esm5/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  210. package/esm5/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  211. package/esm5/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  212. package/esm5/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  213. package/esm5/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  214. package/esm5/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  215. package/esm5/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -19
  216. package/esm5/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  217. package/esm5/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  218. package/esm5/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  219. package/esm5/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  220. package/esm5/src/nameserver-history-viewer/types/port.types.js +0 -17
  221. package/esm5/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  222. package/esm5/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  223. package/esm5/src/nameserver-history-viewer/types/unit.types.js +0 -19
  224. package/esm5/src/nameserver-history-viewer/utils/chart-util.js +0 -39
  225. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  226. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  227. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -307
  228. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  229. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -232
  230. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -350
  231. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -142
  232. package/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -733
  233. package/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  234. package/esm5/src/nameserver-history-viewer/utils/file-util.js +0 -150
  235. package/esm5/src/nameserver-history-viewer/utils/index.js +0 -9
  236. package/esm5/src/nameserver-history-viewer/utils/time-util.js +0 -135
  237. package/esm5/src/nameserver-history-viewer/utils/ui-util.js +0 -205
  238. package/fesm2015/ngx-hana-nameserver-history-viewer.js +0 -5223
  239. package/fesm2015/ngx-hana-nameserver-history-viewer.js.map +0 -1
  240. package/fesm5/ngx-hana-nameserver-history-viewer.js +0 -6295
  241. package/fesm5/ngx-hana-nameserver-history-viewer.js.map +0 -1
  242. package/ngx-hana-nameserver-history-viewer.metadata.json +0 -1
@@ -1,46 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { NgModule } from '@angular/core';
6
- import { CommonModule } from '@angular/common';
7
- import { FormsModule } from '@angular/forms';
8
- import { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';
9
- import { NameServerHistoryComponent, ProgressBarComponent, FileDropInputComponent, TimezoneSelectorComponent, InstructionComponent, PortSelectorComponent, TimeRangeSelectorComponent, AlertModule } from './components';
10
- import { SelectionTableModule } from 'ngx-selection-table';
11
- import { DropdownListModule } from 'ngx-dropdown-list';
12
- var NameserverHistoryModule = /** @class */ (function () {
13
- function NameserverHistoryModule() {
14
- }
15
- NameserverHistoryModule.decorators = [
16
- { type: NgModule, args: [{
17
- declarations: [
18
- NameServerHistoryComponent,
19
- FileDropInputComponent,
20
- ProgressBarComponent,
21
- TimezoneSelectorComponent,
22
- PortSelectorComponent,
23
- InstructionComponent,
24
- TimeRangeSelectorComponent
25
- ],
26
- exports: [
27
- NameServerHistoryComponent
28
- ],
29
- imports: [
30
- AlertModule,
31
- SelectionTableModule,
32
- DropdownListModule,
33
- OwlDateTimeModule,
34
- OwlNativeDateTimeModule,
35
- CommonModule,
36
- FormsModule
37
- ],
38
- entryComponents: [],
39
- providers: [],
40
- bootstrap: []
41
- },] }
42
- ];
43
- return NameserverHistoryModule;
44
- }());
45
- export { NameserverHistoryModule };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNlcnZlci1oaXN0b3J5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci9uYW1lc2VydmVyLWhpc3RvcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUUsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1osTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQ7SUFBQTtJQTBCc0MsQ0FBQzs7Z0JBMUJ0QyxRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFDMUIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsZUFBZSxFQUFFLEVBQUU7b0JBQ25CLFNBQVMsRUFBRSxFQUFFO29CQUNiLFNBQVMsRUFBRSxFQUFFO2lCQUNkOztJQUNxQyw4QkFBQztDQUFBLEFBMUJ2QyxJQTBCdUM7U0FBMUIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBPd2xEYXRlVGltZU1vZHVsZSwgT3dsTmF0aXZlRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lJztcclxuaW1wb3J0IHtcclxuICBOYW1lU2VydmVySGlzdG9yeUNvbXBvbmVudCxcclxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcclxuICBGaWxlRHJvcElucHV0Q29tcG9uZW50LFxyXG4gIFRpbWV6b25lU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgSW5zdHJ1Y3Rpb25Db21wb25lbnQsXHJcbiAgUG9ydFNlbGVjdG9yQ29tcG9uZW50LFxyXG4gIFRpbWVSYW5nZVNlbGVjdG9yQ29tcG9uZW50LFxyXG4gIEFsZXJ0TW9kdWxlXHJcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uVGFibGVNb2R1bGUgfSBmcm9tICduZ3gtc2VsZWN0aW9uLXRhYmxlJztcclxuaW1wb3J0IHsgRHJvcGRvd25MaXN0TW9kdWxlIH0gZnJvbSAnbmd4LWRyb3Bkb3duLWxpc3QnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE5hbWVTZXJ2ZXJIaXN0b3J5Q29tcG9uZW50LFxyXG4gICAgRmlsZURyb3BJbnB1dENvbXBvbmVudCxcclxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50LFxyXG4gICAgVGltZXpvbmVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIFBvcnRTZWxlY3RvckNvbXBvbmVudCxcclxuICAgIEluc3RydWN0aW9uQ29tcG9uZW50LFxyXG4gICAgVGltZVJhbmdlU2VsZWN0b3JDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE5hbWVTZXJ2ZXJIaXN0b3J5Q29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBbGVydE1vZHVsZSxcclxuICAgIFNlbGVjdGlvblRhYmxlTW9kdWxlLFxyXG4gICAgRHJvcGRvd25MaXN0TW9kdWxlLFxyXG4gICAgT3dsRGF0ZVRpbWVNb2R1bGUsXHJcbiAgICBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBlbnRyeUNvbXBvbmVudHM6IFtdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbiAgYm9vdHN0cmFwOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmFtZXNlcnZlckhpc3RvcnlNb2R1bGUge31cclxuIl19
@@ -1,578 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Injectable } from '@angular/core';
6
- import { Chart } from 'chart.js';
7
- import { getColorString, getNumberWithCommas, randomColor } from '../utils';
8
- import { UIService } from './ui.service';
9
- import { Item, Unit } from '../types';
10
- // Using dynamic flag to fix the issue of ng-packagr #696: Lambda not supported
11
- // @dynamic
12
- var ChartService = /** @class */ (function () {
13
- function ChartService() {
14
- }
15
- /**
16
- * toggle the dataset status of the chart, synchronously
17
- */
18
- /**
19
- * toggle the dataset status of the chart, synchronously
20
- * @private
21
- * @param {?} dataSetIndex
22
- * @param {?} chart
23
- * @param {?} hidden
24
- * @return {?}
25
- */
26
- ChartService._toggleDataSet = /**
27
- * toggle the dataset status of the chart, synchronously
28
- * @private
29
- * @param {?} dataSetIndex
30
- * @param {?} chart
31
- * @param {?} hidden
32
- * @return {?}
33
- */
34
- function (dataSetIndex, chart, hidden) {
35
- // meta.hidden = false and dataset.hidden = false --> show
36
- // meta.hidden = false and dataset.hidden = true --> show
37
- // meta.hidden = null and dataset.hidden = false -> show
38
- // meta.hidden = null and dataset.hidden = true -> hide
39
- // in the first case (false, false), needs to click legend twice to
40
- // hide the dataset, because the first click only set meta.hidden = null)
41
- if (dataSetIndex != null && chart != null) {
42
- /** @type {?} */
43
- var meta = chart.getDatasetMeta(dataSetIndex);
44
- if (meta) {
45
- if (!hidden) {
46
- // display the item, if dataset hidden is false, set hidden of meta to null,
47
- meta.hidden = !chart.data.datasets[dataSetIndex].hidden ? null : hidden;
48
- }
49
- else {
50
- meta.hidden = hidden;
51
- }
52
- }
53
- }
54
- };
55
- /**
56
- * @private
57
- * @param {?} chart
58
- * @param {?} datasetIndex
59
- * @param {?} status
60
- * @return {?}
61
- */
62
- ChartService._restoreDataSetStatus = /**
63
- * @private
64
- * @param {?} chart
65
- * @param {?} datasetIndex
66
- * @param {?} status
67
- * @return {?}
68
- */
69
- function (chart, datasetIndex, status) {
70
- if (chart && chart.data && chart.data.datasets && chart.getDatasetMeta(datasetIndex) && status) {
71
- chart.data.datasets[datasetIndex].hidden = status.datasetStatus;
72
- chart.getDatasetMeta(datasetIndex).hidden = status.metaStatus;
73
- }
74
- };
75
- /**
76
- * initialize/clear the configuration for the chart
77
- */
78
- /**
79
- * initialize/clear the configuration for the chart
80
- * @private
81
- * @param {?} chart
82
- * @return {?}
83
- */
84
- ChartService._initConfig = /**
85
- * initialize/clear the configuration for the chart
86
- * @private
87
- * @param {?} chart
88
- * @return {?}
89
- */
90
- function (chart) {
91
- // init data sets
92
- if (chart.data && chart.data.datasets) {
93
- chart.data.datasets.length = 0;
94
- chart.data.datasets = void 0;
95
- chart.data = void 0;
96
- }
97
- // init options
98
- if (chart.options && chart.options.scales && (chart.options.scales.xAxes || chart.options.scales.yAxis)) {
99
- if (chart.options.scales.xAxes) {
100
- chart.options.scales.xAxes.length = 0;
101
- chart.options.scales.xAxes = void 0;
102
- }
103
- if (chart.options.scales.yAxes) {
104
- chart.options.scales.yAxes.length = 0;
105
- chart.options.scales.yAxes = void 0;
106
- }
107
- chart.options.scales = void 0;
108
- chart.options = void 0;
109
- }
110
- };
111
- /**
112
- * Generate DataSets by the data and header information
113
- */
114
- /**
115
- * Generate DataSets by the data and header information
116
- * @private
117
- * @param {?} data
118
- * @param {?} header
119
- * @param {?} headerKey
120
- * @param {?} defaultItems
121
- * @return {?}
122
- */
123
- ChartService._generateDataSets = /**
124
- * Generate DataSets by the data and header information
125
- * @private
126
- * @param {?} data
127
- * @param {?} header
128
- * @param {?} headerKey
129
- * @param {?} defaultItems
130
- * @return {?}
131
- */
132
- function (data, header, headerKey, defaultItems) {
133
- /** @type {?} */
134
- var alpha = 0.5;
135
- /** @type {?} */
136
- var colors = UIService.getColors(alpha);
137
- return data.map(function (item, i) {
138
- /** @type {?} */
139
- var color = colors[headerKey[i]] ? getColorString(colors[headerKey[i]]) : randomColor(alpha);
140
- return {
141
- borderColor: color,
142
- backgroundColor: color,
143
- borderWidth: 1.25,
144
- spanGaps: false,
145
- label: header[i],
146
- data: data[i],
147
- fill: false,
148
- yAxisID: "y-axis-" + i,
149
- hidden: !defaultItems.includes(header[i])
150
- };
151
- });
152
- };
153
- /**
154
- * @private
155
- * @param {?} time
156
- * @return {?}
157
- */
158
- ChartService._generateXAxes = /**
159
- * @private
160
- * @param {?} time
161
- * @return {?}
162
- */
163
- function (time) {
164
- /** @type {?} */
165
- var format = 'MMMDD HH:mm:ss';
166
- return [
167
- {
168
- type: 'time',
169
- time: {
170
- // unit: 'second',
171
- // stepSize: 1,
172
- displayFormats: {
173
- 'millisecond': format,
174
- 'second': format,
175
- 'minute': format,
176
- 'hour': 'MMMDD HH',
177
- 'day': 'MMMDD YYYY',
178
- 'week': format,
179
- 'month': format,
180
- 'quarter': format,
181
- 'year': format,
182
- },
183
- tooltipFormat: 'll HH:mm:ss',
184
- min: time[0],
185
- max: time[time.length - 1]
186
- },
187
- // scaleLabel: {
188
- // display: false,
189
- // labelString: 'Date'
190
- // },
191
- ticks: {
192
- maxRotation: 0,
193
- reverse: true
194
- }
195
- }
196
- ];
197
- };
198
- /**
199
- * @private
200
- * @param {?} data
201
- * @param {?} yScale
202
- * @return {?}
203
- */
204
- ChartService._generateYAxes = /**
205
- * @private
206
- * @param {?} data
207
- * @param {?} yScale
208
- * @return {?}
209
- */
210
- function (data, yScale) {
211
- return data.map(function (item, i) { return ({
212
- type: 'linear',
213
- display: false,
214
- position: 'left',
215
- id: "y-axis-" + i,
216
- gridLines: {},
217
- ticks: {
218
- min: 0,
219
- max: yScale[i]
220
- }
221
- }); });
222
- };
223
- /**
224
- * generate configuration for chart
225
- */
226
- /**
227
- * generate configuration for chart
228
- * @private
229
- * @param {?} time
230
- * @param {?} data
231
- * @param {?} yScale
232
- * @param {?} header
233
- * @param {?} headerKey
234
- * @param {?} selection
235
- * @param {?} tableSource
236
- * @param {?} title
237
- * @param {?} defaultItems
238
- * @param {?} zoomCallback
239
- * @return {?}
240
- */
241
- ChartService._generateChartConfig = /**
242
- * generate configuration for chart
243
- * @private
244
- * @param {?} time
245
- * @param {?} data
246
- * @param {?} yScale
247
- * @param {?} header
248
- * @param {?} headerKey
249
- * @param {?} selection
250
- * @param {?} tableSource
251
- * @param {?} title
252
- * @param {?} defaultItems
253
- * @param {?} zoomCallback
254
- * @return {?}
255
- */
256
- function (time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCallback) {
257
- return {
258
- type: 'line',
259
- data: {
260
- datasets: ChartService._generateDataSets(data, header, headerKey, defaultItems)
261
- },
262
- options: {
263
- elements: { point: { radius: 0, hitRadius: 5, hoverRadius: 5 } },
264
- // set radius to 0 not to display point
265
- responsive: true,
266
- animation: {
267
- duration: 0,
268
- },
269
- hover: {
270
- animationDuration: 0,
271
- // duration of animations when hovering an item
272
- onHover: function (e) {
273
- /** @type {?} */
274
- var point = this.getElementAtEvent(e);
275
- if (point.length) {
276
- e.target.style.cursor = 'pointer';
277
- }
278
- else {
279
- e.target.style.cursor = 'default';
280
- }
281
- }
282
- },
283
- responsiveAnimationDuration: 0,
284
- // animation duration after a resize
285
- legend: {
286
- position: 'bottom',
287
- onHover: function (e) {
288
- e.target.style.cursor = 'pointer';
289
- },
290
- labels: {
291
- filter: function (legendItem) { return selection.isSelected(tableSource.find(function (row) { return legendItem.text === row.KPI; })); }
292
- }
293
- },
294
- title: {
295
- display: true,
296
- text: title
297
- },
298
- responsiveDownsample: {
299
- enabled: true,
300
- desiredDataPointDistance: 2,
301
- minNumPoints: 200,
302
- maxNumPointsToDraw: 100
303
- },
304
- tooltips: {
305
- callbacks: {
306
- label: function (tooltipItem, chartData) {
307
- // format numbers with commas and add unit information
308
- /** @type {?} */
309
- var label = chartData.datasets[tooltipItem.datasetIndex].label || '';
310
- if (label) {
311
- // get unit (eg: MB, GB, MB/s, % and so on)
312
- /** @type {?} */
313
- var rowItem = tableSource.find(function (controlTableRow) { return label === controlTableRow.KPI; }) || '';
314
- /** @type {?} */
315
- var unit = rowItem[Item.unit] && rowItem[Item.unit] !== Unit.PCT ? " " + rowItem[Item.unit] : rowItem[Item.unit] || '';
316
- return label + ": " + getNumberWithCommas(tooltipItem.yLabel) + unit;
317
- }
318
- else {
319
- return getNumberWithCommas(tooltipItem.yLabel);
320
- }
321
- }
322
- }
323
- },
324
- scales: {
325
- xAxes: ChartService._generateXAxes(time),
326
- yAxes: ChartService._generateYAxes(data, yScale)
327
- },
328
- zoom: {
329
- enabled: true,
330
- drag: true,
331
- mode: 'x',
332
- onZoom: zoomCallback
333
- }
334
- }
335
- };
336
- };
337
- /**
338
- * @private
339
- * @param {?} label
340
- * @param {?} chart
341
- * @return {?}
342
- */
343
- ChartService.prototype._getDataSetIndexByLabel = /**
344
- * @private
345
- * @param {?} label
346
- * @param {?} chart
347
- * @return {?}
348
- */
349
- function (label, chart) {
350
- if (chart.data && chart.data.datasets) {
351
- return chart.data.datasets.findIndex(function (dataset) { return dataset.label === label; });
352
- }
353
- return -1;
354
- };
355
- /**
356
- * destroy the chart, release the resource of the chart
357
- */
358
- /**
359
- * destroy the chart, release the resource of the chart
360
- * @private
361
- * @param {?} chart
362
- * @return {?}
363
- */
364
- ChartService.prototype._destroyChart = /**
365
- * destroy the chart, release the resource of the chart
366
- * @private
367
- * @param {?} chart
368
- * @return {?}
369
- */
370
- function (chart) {
371
- return new Promise(function (resolve) {
372
- if (chart) {
373
- chart.destroy();
374
- }
375
- resolve();
376
- });
377
- };
378
- /**
379
- * update/refresh the chart
380
- */
381
- /**
382
- * update/refresh the chart
383
- * @private
384
- * @param {?} chart
385
- * @return {?}
386
- */
387
- ChartService.prototype._updateChart = /**
388
- * update/refresh the chart
389
- * @private
390
- * @param {?} chart
391
- * @return {?}
392
- */
393
- function (chart) {
394
- return new Promise(function (resolve, reject) {
395
- if (chart) {
396
- chart.update();
397
- resolve();
398
- }
399
- else {
400
- reject('Updating chart failed, error: the chart object is empty.');
401
- }
402
- });
403
- };
404
- /**
405
- * reset zoom of the chart
406
- */
407
- /**
408
- * reset zoom of the chart
409
- * @private
410
- * @param {?} chart
411
- * @return {?}
412
- */
413
- ChartService.prototype._resetZoom = /**
414
- * reset zoom of the chart
415
- * @private
416
- * @param {?} chart
417
- * @return {?}
418
- */
419
- function (chart) {
420
- return new Promise(function (resolve, reject) {
421
- if (chart) {
422
- /** @type {?} */
423
- var datasetStatusBeforeReset_1 = [];
424
- if (chart.data && chart.data.datasets) {
425
- chart.data.datasets.forEach(function (dataset, index) {
426
- /** @type {?} */
427
- var meta = chart.getDatasetMeta(index);
428
- if (meta) {
429
- datasetStatusBeforeReset_1[index] = { metaStatus: meta.hidden, datasetStatus: dataset.hidden };
430
- }
431
- else {
432
- reject("Internal error, can not find the meta " + index + ".");
433
- }
434
- });
435
- }
436
- chart.resetZoom();
437
- resolve(datasetStatusBeforeReset_1);
438
- }
439
- else {
440
- reject('Resetting chart failed, error: the chart object is empty.');
441
- }
442
- });
443
- };
444
- /**
445
- * Reset Chart to initial status
446
- * If legend is already selected/unselected from the list, it wouldn't be restored.
447
- * @param dataSourceData the data sets of the chart
448
- * @param selection selection status list
449
- */
450
- /**
451
- * Reset Chart to initial status
452
- * If legend is already selected/unselected from the list, it wouldn't be restored.
453
- * @param {?} dataSourceData the data sets of the chart
454
- * @param {?} selection selection status list
455
- * @return {?}
456
- */
457
- ChartService.prototype.resetChart = /**
458
- * Reset Chart to initial status
459
- * If legend is already selected/unselected from the list, it wouldn't be restored.
460
- * @param {?} dataSourceData the data sets of the chart
461
- * @param {?} selection selection status list
462
- * @return {?}
463
- */
464
- function (dataSourceData, selection) {
465
- var _this = this;
466
- return this._resetZoom(this._chart).then(function (datasetStatusBeforeZoom) {
467
- // reset the data set by the selection status
468
- dataSourceData.filter(function (row) { return !row.header; }).forEach(function (row) {
469
- /** @type {?} */
470
- var index = _this._getDataSetIndexByLabel(row.KPI, _this._chart);
471
- if (!selection.isSelected(row)) {
472
- ChartService._toggleDataSet(index, _this._chart, true);
473
- }
474
- else {
475
- ChartService._restoreDataSetStatus(_this._chart, index, datasetStatusBeforeZoom[index]);
476
- }
477
- });
478
- return _this._updateChart(_this._chart);
479
- });
480
- };
481
- /**
482
- * destroy the chart and reinitialize the configuration of the chart
483
- */
484
- /**
485
- * destroy the chart and reinitialize the configuration of the chart
486
- * @return {?}
487
- */
488
- ChartService.prototype.destroyChart = /**
489
- * destroy the chart and reinitialize the configuration of the chart
490
- * @return {?}
491
- */
492
- function () {
493
- var _this = this;
494
- return this._destroyChart(this._chart).then(function () {
495
- if (_this._chart) {
496
- ChartService._initConfig(_this._chart);
497
- _this._chart = void 0;
498
- }
499
- });
500
- };
501
- /**
502
- * generate configuration for chart and create the chart object.
503
- */
504
- /**
505
- * generate configuration for chart and create the chart object.
506
- * @param {?} time
507
- * @param {?} data
508
- * @param {?} yScale
509
- * @param {?} header
510
- * @param {?} headerKey
511
- * @param {?} selection
512
- * @param {?} tableSource
513
- * @param {?} title
514
- * @param {?} defaultItems
515
- * @param {?} zoomCB
516
- * @return {?}
517
- */
518
- ChartService.prototype.buildChart = /**
519
- * generate configuration for chart and create the chart object.
520
- * @param {?} time
521
- * @param {?} data
522
- * @param {?} yScale
523
- * @param {?} header
524
- * @param {?} headerKey
525
- * @param {?} selection
526
- * @param {?} tableSource
527
- * @param {?} title
528
- * @param {?} defaultItems
529
- * @param {?} zoomCB
530
- * @return {?}
531
- */
532
- function (time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCB) {
533
- var _this = this;
534
- return new Promise(function (resolve) {
535
- /** @type {?} */
536
- var ctx = ((/** @type {?} */ (document.getElementById('chartNameServerHistory')))).getContext('2d');
537
- /** @type {?} */
538
- var cfg = ChartService._generateChartConfig(time, data, yScale, header, headerKey, selection, tableSource, title, defaultItems, zoomCB);
539
- _this._chart = new Chart(ctx, cfg);
540
- resolve();
541
- });
542
- };
543
- /**
544
- * show/hide the relative data set
545
- */
546
- /**
547
- * show/hide the relative data set
548
- * @param {?} label
549
- * @param {?} hide
550
- * @return {?}
551
- */
552
- ChartService.prototype.toggleDataInChart = /**
553
- * show/hide the relative data set
554
- * @param {?} label
555
- * @param {?} hide
556
- * @return {?}
557
- */
558
- function (label, hide) {
559
- var _this = this;
560
- return new Promise(function (resolve) {
561
- ChartService._toggleDataSet(_this._getDataSetIndexByLabel(label, _this._chart), _this._chart, hide);
562
- resolve(_this._updateChart(_this._chart));
563
- });
564
- };
565
- ChartService.decorators = [
566
- { type: Injectable }
567
- ];
568
- return ChartService;
569
- }());
570
- export { ChartService };
571
- if (false) {
572
- /**
573
- * @type {?}
574
- * @private
575
- */
576
- ChartService.prototype._chart;
577
- }
578
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci9zZXJ2aWNlcy9jaGFydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQXFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUl6RTtJQUFBO0lBNFVBLENBQUM7SUF4VUM7O09BRUc7Ozs7Ozs7OztJQUNZLDJCQUFjOzs7Ozs7OztJQUE3QixVQUE4QixZQUFvQixFQUFFLEtBQVksRUFBRSxNQUFlO1FBQy9FLDBEQUEwRDtRQUMxRCx5REFBeUQ7UUFDekQsd0RBQXdEO1FBQ3hELHVEQUF1RDtRQUN2RCxtRUFBbUU7UUFDbkUseUVBQXlFO1FBQ3pFLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFOztnQkFDbkMsSUFBSSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO1lBQy9DLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1gsNEVBQTRFO29CQUM1RSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztpQkFDekU7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QUF4QixVQUF5QixLQUFhLEVBQUUsSUFBYTtRQUFyRCxpQkFLQztRQUpDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO1lBQ3pCLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRyxPQUFPLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQTNVRixVQUFVOztJQTRVWCxtQkFBQztDQUFBLEFBNVVELElBNFVDO1NBM1VZLFlBQVk7Ozs7OztJQUN2Qiw4QkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdwYXBhcGFyc2UnO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcclxuaW1wb3J0IHsgZ2V0Q29sb3JTdHJpbmcsIGdldE51bWJlcldpdGhDb21tYXMsIHJhbmRvbUNvbG9yIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuL3VpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFydENvbnRlbnREYXRhSXRlbSwgTGVnZW5kQ29sb3IsIEl0ZW0sIFVuaXQgfSBmcm9tICcuLi90eXBlcyc7XHJcblxyXG4vLyBVc2luZyBkeW5hbWljIGZsYWcgdG8gZml4IHRoZSBpc3N1ZSBvZiBuZy1wYWNrYWdyICM2OTY6IExhbWJkYSBub3Qgc3VwcG9ydGVkXHJcbi8vIEBkeW5hbWljXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfY2hhcnQ6IENoYXJ0O1xyXG5cclxuICAvKipcclxuICAgKiB0b2dnbGUgdGhlIGRhdGFzZXQgc3RhdHVzIG9mIHRoZSBjaGFydCwgc3luY2hyb25vdXNseVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF90b2dnbGVEYXRhU2V0KGRhdGFTZXRJbmRleDogbnVtYmVyLCBjaGFydDogQ2hhcnQsIGhpZGRlbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgLy8gbWV0YS5oaWRkZW4gPSBmYWxzZSBhbmQgZGF0YXNldC5oaWRkZW4gPSBmYWxzZSAtLT4gc2hvd1xyXG4gICAgLy8gbWV0YS5oaWRkZW4gPSBmYWxzZSBhbmQgZGF0YXNldC5oaWRkZW4gPSB0cnVlIC0tPiBzaG93XHJcbiAgICAvLyBtZXRhLmhpZGRlbiA9IG51bGwgYW5kIGRhdGFzZXQuaGlkZGVuID0gZmFsc2UgLT4gc2hvd1xyXG4gICAgLy8gbWV0YS5oaWRkZW4gPSBudWxsIGFuZCBkYXRhc2V0LmhpZGRlbiA9IHRydWUgLT4gaGlkZVxyXG4gICAgLy8gaW4gdGhlIGZpcnN0IGNhc2UgKGZhbHNlLCBmYWxzZSksIG5lZWRzIHRvIGNsaWNrIGxlZ2VuZCB0d2ljZSB0b1xyXG4gICAgLy8gaGlkZSB0aGUgZGF0YXNldCwgYmVjYXVzZSB0aGUgZmlyc3QgY2xpY2sgb25seSBzZXQgbWV0YS5oaWRkZW4gPSBudWxsKVxyXG4gICAgaWYgKGRhdGFTZXRJbmRleCAhPSBudWxsICYmIGNoYXJ0ICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFTZXRJbmRleCk7XHJcbiAgICAgIGlmIChtZXRhKSB7XHJcbiAgICAgICAgaWYgKCFoaWRkZW4pIHtcclxuICAgICAgICAgIC8vIGRpc3BsYXkgdGhlIGl0ZW0sIGlmIGRhdGFzZXQgaGlkZGVuIGlzIGZhbHNlLCBzZXQgaGlkZGVuIG9mIG1ldGEgdG8gbnVsbCxcclxuICAgICAgICAgIG1ldGEuaGlkZGVuID0gIWNoYXJ0LmRhdGEuZGF0YXNldHNbZGF0YVNldEluZGV4XS5oaWRkZW4gPyBudWxsIDogaGlkZGVuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBtZXRhLmhpZGRlbiA9IGhpZGRlbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3Jlc3RvcmVEYXRhU2V0U3RhdHVzKGNoYXJ0OiBDaGFydCwgZGF0YXNldEluZGV4OiBudW1iZXIsIHN0YXR1czoge21ldGFTdGF0dXM6IGJvb2xlYW4sIGRhdGFzZXRTdGF0dXM6IGJvb2xlYW59KTogdm9pZCB7XHJcbiAgICBpZiAoY2hhcnQgJiYgY2hhcnQuZGF0YSAmJiBjaGFydC5kYXRhLmRhdGFzZXRzICYmIGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCkgJiYgc3RhdHVzKSB7XHJcbiAgICAgIGNoYXJ0LmRhdGEuZGF0YXNldHNbZGF0YXNldEluZGV4XS5oaWRkZW4gPSBzdGF0dXMuZGF0YXNldFN0YXR1cztcclxuICAgICAgY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KS5oaWRkZW4gPSBzdGF0dXMubWV0YVN0YXR1cztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGluaXRpYWxpemUvY2xlYXIgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjaGFydFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbml0Q29uZmlnKGNoYXJ0OiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIGluaXQgZGF0YSBzZXRzXHJcbiAgICBpZiAoY2hhcnQuZGF0YSAmJiBjaGFydC5kYXRhLmRhdGFzZXRzKSB7XHJcbiAgICAgIGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoID0gMDtcclxuICAgICAgY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHZvaWQgMDtcclxuICAgICAgY2hhcnQuZGF0YSA9IHZvaWQgMDtcclxuICAgIH1cclxuICAgIC8vIGluaXQgb3B0aW9uc1xyXG4gICAgaWYgKGNoYXJ0Lm9wdGlvbnMgJiYgY2hhcnQub3B0aW9ucy5zY2FsZXMgJiYgKGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzIHx8IGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGlzKSkge1xyXG4gICAgICBpZiAoY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXMpIHtcclxuICAgICAgICBjaGFydC5vcHRpb25zLnNjYWxlcy54QXhlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgIGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzID0gdm9pZCAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaGFydC5vcHRpb25zLnNjYWxlcy55QXhlcykge1xyXG4gICAgICAgIGNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgY2hhcnQub3B0aW9ucy5zY2FsZXMueUF4ZXMgPSB2b2lkIDA7XHJcbiAgICAgIH1cclxuICAgICAgY2hhcnQub3B0aW9ucy5zY2FsZXMgPSB2b2lkIDA7XHJcbiAgICAgIGNoYXJ0Lm9wdGlvbnMgPSB2b2lkIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZSBEYXRhU2V0cyBieSB0aGUgZGF0YSBhbmQgaGVhZGVyIGluZm9ybWF0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2dlbmVyYXRlRGF0YVNldHMoZGF0YTogQ2hhcnRDb250ZW50RGF0YUl0ZW1bXVtdLCBoZWFkZXI6IHN0cmluZ1tdLCBoZWFkZXJLZXk6IHN0cmluZ1tdLCBkZWZhdWx0SXRlbXM6IHN0cmluZ1tdKTogYW55IHtcclxuICAgIGNvbnN0IGFscGhhID0gMC41O1xyXG4gICAgY29uc3QgY29sb3JzOiBMZWdlbmRDb2xvciA9IFVJU2VydmljZS5nZXRDb2xvcnMoYWxwaGEpO1xyXG4gICAgcmV0dXJuIGRhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JzW2hlYWRlcktleVtpXV0gPyBnZXRDb2xvclN0cmluZyhjb2xvcnNbaGVhZGVyS2V5W2ldXSkgOiByYW5kb21Db2xvcihhbHBoYSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYm9yZGVyV2lkdGg6IDEuMjUsXHJcbiAgICAgICAgc3BhbkdhcHM6IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsOiBoZWFkZXJbaV0sXHJcbiAgICAgICAgZGF0YTogZGF0YVtpXSxcclxuICAgICAgICBmaWxsOiBmYWxzZSxcclxuICAgICAgICB5QXhpc0lEOiBgeS1heGlzLSR7aX1gLFxyXG4gICAgICAgIGhpZGRlbjogIWRlZmF1bHRJdGVtcy5pbmNsdWRlcyhoZWFkZXJbaV0pXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2dlbmVyYXRlWEF4ZXModGltZTogbnVtYmVyW10pOiBhbnkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gJ01NTUREIEhIOm1tOnNzJztcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGltZScsXHJcbiAgICAgICAgdGltZToge1xyXG4gICAgICAgICAgLy8gdW5pdDogJ3NlY29uZCcsXHJcbiAgICAgICAgICAvLyBzdGVwU2l6ZTogMSxcclxuICAgICAgICAgIGRpc3BsYXlGb3JtYXRzOiB7XHJcbiAgICAgICAgICAgICdtaWxsaXNlY29uZCc6IGZvcm1hdCxcclxuICAgICAgICAgICAgJ3NlY29uZCc6IGZvcm1hdCxcclxuICAgICAgICAgICAgJ21pbnV0ZSc6IGZvcm1hdCxcclxuICAgICAgICAgICAgJ2hvdXInOiAnTU1NREQgSEgnLFxyXG4gICAgICAgICAgICAnZGF5JzogJ01NTUREIFlZWVknLFxyXG4gICAgICAgICAgICAnd2Vlayc6IGZvcm1hdCxcclxuICAgICAgICAgICAgJ21vbnRoJzogZm9ybWF0LFxyXG4gICAgICAgICAgICAncXVhcnRlcic6IGZvcm1hdCxcclxuICAgICAgICAgICAgJ3llYXInOiBmb3JtYXQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdG9vbHRpcEZvcm1hdDogJ2xsIEhIOm1tOnNzJyxcclxuICAgICAgICAgIG1pbjogdGltZVswXSxcclxuICAgICAgICAgIG1heDogdGltZVt0aW1lLmxlbmd0aCAtIDFdXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgLy8gICBkaXNwbGF5OiBmYWxzZSxcclxuICAgICAgICAvLyAgIGxhYmVsU3RyaW5nOiAnRGF0ZSdcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBtYXhSb3RhdGlvbjogMCxcclxuICAgICAgICAgIHJldmVyc2U6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG4gIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZVlBeGVzKGRhdGE6IENoYXJ0Q29udGVudERhdGFJdGVtW11bXSwgeVNjYWxlOiBudW1iZXJbXSk6IGFueSB7XHJcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0sIGkpID0+ICh7XHJcbiAgICAgIHR5cGU6ICdsaW5lYXInLFxyXG4gICAgICBkaXNwbGF5OiBmYWxzZSxcclxuICAgICAgcG9zaXRpb246ICdsZWZ0JyxcclxuICAgICAgaWQ6IGB5LWF4aXMtJHtpfWAsXHJcbiAgICAgIGdyaWRMaW5lczoge1xyXG4gICAgICB9LFxyXG4gICAgICB0aWNrczoge1xyXG4gICAgICAgIG1pbjogMCxcclxuICAgICAgICBtYXg6IHlTY2FsZVtpXVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZW5lcmF0ZSBjb25maWd1cmF0aW9uIGZvciBjaGFydFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZUNoYXJ0Q29uZmlnKHRpbWU6IG51bWJlcltdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IENoYXJ0Q29udGVudERhdGFJdGVtW11bXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5U2NhbGU6IG51bWJlcltdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyS2V5OiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTb3VyY2U6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtczogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbUNhbGxiYWNrOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZGF0YXNldHM6IENoYXJ0U2VydmljZS5fZ2VuZXJhdGVEYXRhU2V0cyhkYXRhLCBoZWFkZXIsIGhlYWRlcktleSwgZGVmYXVsdEl0ZW1zKVxyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgZWxlbWVudHM6IHtwb2ludDoge3JhZGl1czogMCwgaGl0UmFkaXVzOiA1LCBob3ZlclJhZGl1czogNX19LCAvLyBzZXQgcmFkaXVzIHRvIDAgbm90IHRvIGRpc3BsYXkgcG9pbnRcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIGFuaW1hdGlvbjoge1xyXG4gICAgICAgICAgZHVyYXRpb246IDAsIC8vIGdlbmVyYWwgYW5pbWF0aW9uIHRpbWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhvdmVyOiB7XHJcbiAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogMCwgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9ucyB3aGVuIGhvdmVyaW5nIGFuIGl0ZW1cclxuICAgICAgICAgIG9uSG92ZXI6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdGhpcy5nZXRFbGVtZW50QXRFdmVudChlKTtcclxuICAgICAgICAgICAgaWYgKHBvaW50Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIGUudGFyZ2V0LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlLnRhcmdldC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbjogMCwgLy8gYW5pbWF0aW9uIGR1cmF0aW9uIGFmdGVyIGEgcmVzaXplXHJcbiAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXHJcbiAgICAgICAgICBvbkhvdmVyOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnRhcmdldC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFiZWxzOiB7XHJcbiAgICAgICAgICAgIGZpbHRlcjogKGxlZ2VuZEl0ZW0pID0+IHNlbGVjdGlvbi5pc1NlbGVjdGVkKHRhYmxlU291cmNlLmZpbmQocm93ID0+IGxlZ2VuZEl0ZW0udGV4dCA9PT0gcm93LktQSSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgIHRleHQ6IHRpdGxlXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNwb25zaXZlRG93bnNhbXBsZToge1xyXG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgIGRlc2lyZWREYXRhUG9pbnREaXN0YW5jZTogMixcclxuICAgICAgICAgIG1pbk51bVBvaW50czogMjAwLFxyXG4gICAgICAgICAgbWF4TnVtUG9pbnRzVG9EcmF3OiAxMDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6IGZ1bmN0aW9uKHRvb2x0aXBJdGVtLCBjaGFydERhdGEpIHtcclxuICAgICAgICAgICAgICAvLyBmb3JtYXQgbnVtYmVycyB3aXRoIGNvbW1hcyBhbmQgYWRkIHVuaXQgaW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGNoYXJ0RGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdLmxhYmVsIHx8ICcnO1xyXG4gICAgICAgICAgICAgIGlmIChsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IHVuaXQgKGVnOiBNQiwgR0IsIE1CL3MsICUgYW5kIHNvIG9uKVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm93SXRlbSA9IHRhYmxlU291cmNlLmZpbmQoY29udHJvbFRhYmxlUm93ID0+IGxhYmVsID09PSBjb250cm9sVGFibGVSb3cuS1BJKSB8fCAnJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXQgPSByb3dJdGVtW0l0ZW0udW5pdF0gJiYgcm93SXRlbVtJdGVtLnVuaXRdICE9PSBVbml0LlBDVCA/IGAgJHtyb3dJdGVtW0l0ZW0udW5pdF19YCA6IHJvd0l0ZW1bSXRlbS51bml0XSB8fCAnJztcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsYWJlbH06ICR7Z2V0TnVtYmVyV2l0aENvbW1hcyh0b29sdGlwSXRlbS55TGFiZWwpfSR7dW5pdH1gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TnVtYmVyV2l0aENvbW1hcyh0b29sdGlwSXRlbS55TGFiZWwpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB4QXhlczogQ2hhcnRTZXJ2aWNlLl9nZW5lcmF0ZVhBeGVzKHRpbWUpLFxyXG4gICAgICAgICAgeUF4ZXM6IENoYXJ0U2VydmljZS5fZ2VuZXJhdGVZQXhlcyhkYXRhLCB5U2NhbGUpXHJcbiAgICAgICAgfSxcclxuICAgICAgICB6b29tOiB7XHJcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgZHJhZzogdHJ1ZSxcclxuICAgICAgICAgIG1vZGU6ICd4JyxcclxuICAgICAgICAgIG9uWm9vbTogem9vbUNhbGxiYWNrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0RGF0YVNldEluZGV4QnlMYWJlbChsYWJlbDogc3RyaW5nLCBjaGFydDogQ2hhcnQpOiBudW1iZXIge1xyXG4gICAgaWYgKGNoYXJ0LmRhdGEgJiYgY2hhcnQuZGF0YS5kYXRhc2V0cykge1xyXG4gICAgICByZXR1cm4gY2hhcnQuZGF0YS5kYXRhc2V0cy5maW5kSW5kZXgoZGF0YXNldCA9PiBkYXRhc2V0LmxhYmVsID09PSBsYWJlbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBkZXN0cm95IHRoZSBjaGFydCwgcmVsZWFzZSB0aGUgcmVzb3VyY2Ugb2YgdGhlIGNoYXJ0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfZGVzdHJveUNoYXJ0KGNoYXJ0OiBDaGFydCk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgICAgY2hhcnQuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiB1cGRhdGUvcmVmcmVzaCB0aGUgY2hhcnRcclxuICAgKi9cclxuICBwcml2YXRlIF91cGRhdGVDaGFydChjaGFydDogQ2hhcnQpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgICAgY2hhcnQudXBkYXRlKCk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlamVjdCgnVXBkYXRpbmcgY2hhcnQgZmFpbGVkLCBlcnJvcjogdGhlIGNoYXJ0IG9iamVjdCBpcyBlbXB0eS4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiByZXNldCB6b29tIG9mIHRoZSBjaGFydFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3Jlc2V0Wm9vbShjaGFydDogYW55KTogUHJvbWlzZTx7bWV0YVN0YXR1czogYm9vbGVhbiwgZGF0YXNldFN0YXR1czogYm9vbGVhbn1bXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgICAgY29uc3QgZGF0YXNldFN0YXR1c0JlZm9yZVJlc2V0ID0gW107XHJcbiAgICAgICAgaWYgKGNoYXJ0LmRhdGEgJiYgY2hhcnQuZGF0YS5kYXRhc2V0cykge1xyXG4gICAgICAgICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoaW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAobWV0YSkge1xyXG4gICAgICAgICAgICAgIGRhdGFzZXRTdGF0dXNCZWZvcmVSZXNldFtpbmRleF0gPSB7bWV0YVN0YXR1czogbWV0YS5oaWRkZW4sIGRhdGFzZXRTdGF0dXM6IGRhdGFzZXQuaGlkZGVufTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZWplY3QoYEludGVybmFsIGVycm9yLCBjYW4gbm90IGZpbmQgdGhlIG1ldGEgJHtpbmRleH0uYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjaGFydC5yZXNldFpvb20oKTtcclxuICAgICAgICByZXNvbHZlKGRhdGFzZXRTdGF0dXNCZWZvcmVSZXNldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVqZWN0KCdSZXNldHRpbmcgY2hhcnQgZmFpbGVkLCBlcnJvcjogdGhlIGNoYXJ0IG9iamVjdCBpcyBlbXB0eS4nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IENoYXJ0IHRvIGluaXRpYWwgc3RhdHVzXHJcbiAgICogSWYgbGVnZW5kIGlzIGFscmVhZHkgc2VsZWN0ZWQvdW5zZWxlY3RlZCBmcm9tIHRoZSBsaXN0LCBpdCB3b3VsZG4ndCBiZSByZXN0b3JlZC5cclxuICAgKiBAcGFyYW0gZGF0YVNvdXJjZURhdGEgdGhlIGRhdGEgc2V0cyBvZiB0aGUgY2hhcnRcclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uIHNlbGVjdGlvbiBzdGF0dXMgbGlzdFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNldENoYXJ0KGRhdGFTb3VyY2VEYXRhOiBhbnksIHNlbGVjdGlvbjogU2VsZWN0aW9uTW9kZWw8YW55Pik6IFByb21pc2UgPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Jlc2V0Wm9vbSh0aGlzLl9jaGFydCkudGhlbigoZGF0YXNldFN0YXR1c0JlZm9yZVpvb20pID0+IHtcclxuICAgICAgLy8gcmVzZXQgdGhlIGRhdGEgc2V0IGJ5IHRoZSBzZWxlY3Rpb24gc3RhdHVzXHJcbiAgICAgIGRhdGFTb3VyY2VEYXRhLmZpbHRlcihyb3cgPT4gIXJvdy5oZWFkZXIpLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2dldERhdGFTZXRJbmRleEJ5TGFiZWwocm93LktQSSwgdGhpcy5fY2hhcnQpO1xyXG4gICAgICAgIGlmICghc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSkge1xyXG4gICAgICAgICAgQ2hhcnRTZXJ2aWNlLl90b2dnbGVEYXRhU2V0KGluZGV4LCB0aGlzLl9jaGFydCwgdHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIENoYXJ0U2VydmljZS5fcmVzdG9yZURhdGFTZXRTdGF0dXModGhpcy5fY2hhcnQsIGluZGV4LCBkYXRhc2V0U3RhdHVzQmVmb3JlWm9vbVtpbmRleF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzLl91cGRhdGVDaGFydCh0aGlzLl9jaGFydCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGRlc3Ryb3kgdGhlIGNoYXJ0IGFuZCByZWluaXRpYWxpemUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNoYXJ0XHJcbiAgICovXHJcbiAgcHVibGljIGRlc3Ryb3lDaGFydCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3lDaGFydCh0aGlzLl9jaGFydCkudGhlbigoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9jaGFydCkge1xyXG4gICAgICAgIENoYXJ0U2VydmljZS5faW5pdENvbmZpZyh0aGlzLl9jaGFydCk7XHJcbiAgICAgICAgdGhpcy5fY2hhcnQgPSB2b2lkIDA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2VuZXJhdGUgY29uZmlndXJhdGlvbiBmb3IgY2hhcnQgYW5kIGNyZWF0ZSB0aGUgY2hhcnQgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZENoYXJ0KHRpbWU6IG51bWJlcltdLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IENoYXJ0Q29udGVudERhdGFJdGVtW11bXSxcclxuICAgICAgICAgICAgICAgICAgICB5U2NhbGU6IG51bWJlcltdLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcjogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyS2V5OiBzdHJpbmdbXSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVTb3VyY2U6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtczogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgem9vbUNCKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBjdHggPSAoPEhUTUxDYW52YXNFbGVtZW50PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnROYW1lU2VydmVySGlzdG9yeScpKS5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICBjb25zdCBjZmc6IGFueSA9IENoYXJ0U2VydmljZS5fZ2VuZXJhdGVDaGFydENvbmZpZyh0aW1lLCBkYXRhLCB5U2NhbGUsIGhlYWRlciwgaGVhZGVyS2V5LCBzZWxlY3Rpb24sIHRhYmxlU291cmNlLCB0aXRsZSwgZGVmYXVsdEl0ZW1zLCB6b29tQ0IpO1xyXG4gICAgICB0aGlzLl9jaGFydCA9IG5ldyBDaGFydChjdHgsIGNmZyk7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc2hvdy9oaWRlIHRoZSByZWxhdGl2ZSBkYXRhIHNldFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVEYXRhSW5DaGFydChsYWJlbDogc3RyaW5nLCBoaWRlOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBDaGFydFNlcnZpY2UuX3RvZ2dsZURhdGFTZXQodGhpcy5fZ2V0RGF0YVNldEluZGV4QnlMYWJlbChsYWJlbCwgdGhpcy5fY2hhcnQpLCB0aGlzLl9jaGFydCwgaGlkZSk7XHJcbiAgICAgIHJlc29sdmUodGhpcy5fdXBkYXRlQ2hhcnQodGhpcy5fY2hhcnQpKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=