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,19 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /** @enum {string} */
6
- const Unit = {
7
- PCT: '%',
8
- MS: 'ms',
9
- Empty: '',
10
- GB: 'GB',
11
- MB: 'MB',
12
- MBPerSec: 'MB/s',
13
- SecPerSec: 'Sec/s',
14
- StmtPerSec: 'stm/s',
15
- ReqPerSec: 'req/s',
16
- ColPerSec: 'col/s',
17
- };
18
- export { Unit };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci90eXBlcy91bml0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztJQUNFLEtBQU0sR0FBRztJQUNULElBQUssSUFBSTtJQUNULE9BQVEsRUFBRTtJQUNWLElBQUssSUFBSTtJQUNULElBQUssSUFBSTtJQUNULFVBQVcsTUFBTTtJQUNqQixXQUFZLE9BQU87SUFDbkIsWUFBYSxPQUFPO0lBQ3BCLFdBQVksT0FBTztJQUNuQixXQUFZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBVbml0IHtcclxuICBQQ1QgPSAnJScsXHJcbiAgTVMgPSAnbXMnLFxyXG4gIEVtcHR5ID0gJycsXHJcbiAgR0IgPSAnR0InLFxyXG4gIE1CID0gJ01CJyxcclxuICBNQlBlclNlYyA9ICdNQi9zJyxcclxuICBTZWNQZXJTZWMgPSAnU2VjL3MnLFxyXG4gIFN0bXRQZXJTZWMgPSAnc3RtL3MnLFxyXG4gIFJlcVBlclNlYyA9ICdyZXEvcycsXHJcbiAgQ29sUGVyU2VjID0gJ2NvbC9zJ1xyXG59XHJcbiJdfQ==
@@ -1,38 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * @return {?}
7
- */
8
- function _randomColorFactor() {
9
- return Math.round(Math.random() * 255);
10
- }
11
- /**
12
- * generate random color
13
- * @param {?} opacity alpha
14
- * @return {?}
15
- */
16
- export function randomColor(opacity) {
17
- return 'rgba(' + _randomColorFactor() + ',' + _randomColorFactor() + ',' + _randomColorFactor() + ',' + (opacity || '.3') + ')';
18
- }
19
- /**
20
- * generate the rgba string from ColorRgba
21
- * @param {?} rgbaColor
22
- * @return {?}
23
- */
24
- export function getColorString(rgbaColor) {
25
- return `rgba(${rgbaColor['red']}, ${rgbaColor['green']}, ${rgbaColor['blue']}, ${rgbaColor['alpha']})`;
26
- }
27
- /**
28
- * format Number with commas
29
- * @param {?} num
30
- * @return {?}
31
- */
32
- export function getNumberWithCommas(num) {
33
- const [integerPart, decimalPart] = num.toString().split('.');
34
- /** @type {?} */
35
- const integerWithCommas = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
36
- return decimalPart ? `${integerWithCommas}.${decimalPart}` : integerWithCommas;
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci91dGlscy9jaGFydC11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxTQUFTLGtCQUFrQjtJQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7Ozs7OztBQU1ELE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZTtJQUN6QyxPQUFPLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbEksQ0FBQzs7Ozs7O0FBS0QsTUFBTSxVQUFVLGNBQWMsQ0FBQyxTQUFvQjtJQUNqRCxPQUFPLFFBQVEsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDekcsQ0FBQzs7Ozs7O0FBS0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEdBQVc7VUFDdkMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7O1VBQ3RELGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztBQUNqRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JSZ2JhIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuXHJcbmZ1bmN0aW9uIF9yYW5kb21Db2xvckZhY3RvcigpOiBudW1iZXIge1xyXG4gIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAyNTUpO1xyXG59XHJcblxyXG4vKipcclxuICogZ2VuZXJhdGUgcmFuZG9tIGNvbG9yXHJcbiAqIEBwYXJhbSBvcGFjaXR5IGFscGhhXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tQ29sb3Iob3BhY2l0eTogbnVtYmVyKTogc3RyaW5nIHtcclxuICByZXR1cm4gJ3JnYmEoJyArIF9yYW5kb21Db2xvckZhY3RvcigpICsgJywnICsgX3JhbmRvbUNvbG9yRmFjdG9yKCkgKyAnLCcgKyBfcmFuZG9tQ29sb3JGYWN0b3IoKSArICcsJyArIChvcGFjaXR5IHx8ICcuMycpICsgJyknO1xyXG59XHJcblxyXG4vKipcclxuICogZ2VuZXJhdGUgdGhlIHJnYmEgc3RyaW5nIGZyb20gQ29sb3JSZ2JhXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JTdHJpbmcocmdiYUNvbG9yOiBDb2xvclJnYmEpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgcmdiYSgke3JnYmFDb2xvclsncmVkJ119LCAke3JnYmFDb2xvclsnZ3JlZW4nXX0sICR7cmdiYUNvbG9yWydibHVlJ119LCAke3JnYmFDb2xvclsnYWxwaGEnXX0pYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIGZvcm1hdCBOdW1iZXIgd2l0aCBjb21tYXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1iZXJXaXRoQ29tbWFzKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICBjb25zdCBbaW50ZWdlclBhcnQsIGRlY2ltYWxQYXJ0XSA9IG51bS50b1N0cmluZygpLnNwbGl0KCcuJyk7XHJcbiAgY29uc3QgaW50ZWdlcldpdGhDb21tYXMgPSBpbnRlZ2VyUGFydC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLCcpO1xyXG4gIHJldHVybiBkZWNpbWFsUGFydCA/IGAke2ludGVnZXJXaXRoQ29tbWFzfS4ke2RlY2ltYWxQYXJ0fWAgOiBpbnRlZ2VyV2l0aENvbW1hcztcclxufVxyXG4iXX0=
@@ -1,100 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * A chart scale
7
- * @record
8
- */
9
- export function Scale() { }
10
- if (false) {
11
- /** @type {?} */
12
- Scale.prototype.left;
13
- /** @type {?} */
14
- Scale.prototype.right;
15
- /** @type {?} */
16
- Scale.prototype.top;
17
- /** @type {?} */
18
- Scale.prototype.bottom;
19
- /**
20
- * Returns the location of the given data point. Value can either be an index or a numerical value
21
- * The coordinate (0, 0) is at the upper-left corner of the canvas
22
- * @param {?} value
23
- * @param {?=} index
24
- * @param {?=} datasetIndex
25
- * @return {?}
26
- */
27
- Scale.prototype.getPixelForValue = function (value, index, datasetIndex) { };
28
- /**
29
- * Used to get the data value from a given pixel. This is the inverse of getPixelForValue
30
- * The coordinate (0, 0) is at the upper-left corner of the canvas
31
- * @param {?} pixel
32
- * @return {?}
33
- */
34
- Scale.prototype.getValueForPixel = function (pixel) { };
35
- }
36
- /**
37
- * A time-based chart scale
38
- * @record
39
- */
40
- export function TimeScale() { }
41
- if (false) {
42
- /**
43
- * Returns the location of the given data point. Value can either be an index or a numerical value
44
- * The coordinate (0, 0) is at the upper-left corner of the canvas
45
- * @param {?} value
46
- * @param {?=} index
47
- * @param {?=} datasetIndex
48
- * @return {?}
49
- */
50
- TimeScale.prototype.getPixelForValue = function (value, index, datasetIndex) { };
51
- /**
52
- * Used to get the data value from a given pixel. This is the inverse of getPixelForValue
53
- * The coordinate (0, 0) is at the upper-left corner of the canvas
54
- * @param {?} pixel
55
- * @return {?}
56
- */
57
- TimeScale.prototype.getValueForPixel = function (pixel) { };
58
- }
59
- /**
60
- * Interface for a chart.js plugin
61
- * @record
62
- */
63
- export function IChartPlugin() { }
64
- if (false) {
65
- /** @type {?|undefined} */
66
- IChartPlugin.prototype.beforeInit;
67
- /** @type {?|undefined} */
68
- IChartPlugin.prototype.afterInit;
69
- /** @type {?|undefined} */
70
- IChartPlugin.prototype.resize;
71
- /** @type {?|undefined} */
72
- IChartPlugin.prototype.beforeUpdate;
73
- /** @type {?|undefined} */
74
- IChartPlugin.prototype.afterScaleUpdate;
75
- /** @type {?|undefined} */
76
- IChartPlugin.prototype.afterLayout;
77
- /** @type {?|undefined} */
78
- IChartPlugin.prototype.beforeDatasetsUpdate;
79
- /** @type {?|undefined} */
80
- IChartPlugin.prototype.afterDatasetsUpdate;
81
- /** @type {?|undefined} */
82
- IChartPlugin.prototype.afterUpdate;
83
- /** @type {?|undefined} */
84
- IChartPlugin.prototype.beforeRender;
85
- /** @type {?|undefined} */
86
- IChartPlugin.prototype.beforeDraw;
87
- /** @type {?|undefined} */
88
- IChartPlugin.prototype.afterDraw;
89
- /** @type {?|undefined} */
90
- IChartPlugin.prototype.beforeDatasetsDraw;
91
- /** @type {?|undefined} */
92
- IChartPlugin.prototype.afterDatasetsDraw;
93
- /** @type {?|undefined} */
94
- IChartPlugin.prototype.destroy;
95
- /** @type {?|undefined} */
96
- IChartPlugin.prototype.beforeEvent;
97
- /** @type {?|undefined} */
98
- IChartPlugin.prototype.afterEvent;
99
- }
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqc19leHQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaGFuYS1uYW1lc2VydmVyLWhpc3Rvcnktdmlld2VyLyIsInNvdXJjZXMiOlsic3JjL25hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvdXRpbHMvY2hhcnRqcy1kb3duc2FtcGxlL2NoYXJ0anNfZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBNkJBLDJCQXFCQzs7O0lBcEJHLHFCQUFhOztJQUNiLHNCQUFjOztJQUNkLG9CQUFZOztJQUNaLHVCQUFlOzs7Ozs7Ozs7SUFTZiw2RUFBNEU7Ozs7Ozs7SUFPNUUsd0RBQXFDOzs7Ozs7QUFNekMsK0JBZ0JDOzs7Ozs7Ozs7O0lBUkcsaUZBQTZFOzs7Ozs7O0lBTzdFLDREQUFzQzs7Ozs7O0FBTTFDLGtDQTJCQzs7O0lBMUJHLGtDQUE0Qzs7SUFDNUMsaUNBQTJDOztJQUUzQyw4QkFBd0U7O0lBRXhFLG9DQUF3RDs7SUFDeEQsd0NBQWlEOztJQUNqRCxtQ0FBNEM7O0lBQzVDLDRDQUErRDs7SUFDL0QsMkNBQW9EOztJQUNwRCxtQ0FBNEM7O0lBRTVDLG9DQUF1RDs7SUFFdkQsa0NBQXFFOztJQUNyRSxpQ0FBMEQ7O0lBRzFELDBDQUE2RTs7SUFDN0UseUNBQWtFOztJQUVsRSwrQkFBd0M7O0lBR3hDLG1DQUFrRTs7SUFDbEUsa0NBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIHBsdWdpbiBpcyBhZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS8zZGNsL2NoYXJ0anMtcGx1Z2luLXJlc3BvbnNpdmUtZG93bnNhbXBsZVxuICogZm9yIGNvbnRyb2xsaW5nIHRoZSByYWRpdXMgb2YgcG9pbnQuXG4gKlxuICogTUlUIExpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxOCAzRCBDb250ZW50IExvZ2lzdGljc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbi8qKlxuICogQSBjaGFydCBzY2FsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjYWxlIHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBib3R0b206IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBnaXZlbiBkYXRhIHBvaW50LiBWYWx1ZSBjYW4gZWl0aGVyIGJlIGFuIGluZGV4IG9yIGEgbnVtZXJpY2FsIHZhbHVlXG4gICAgICogVGhlIGNvb3JkaW5hdGUgKDAsIDApIGlzIGF0IHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgY2FudmFzXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHBhcmFtIGRhdGFzZXRJbmRleFxuICAgICAqL1xuICAgIGdldFBpeGVsRm9yVmFsdWUodmFsdWU6IGFueSwgaW5kZXg/OiBudW1iZXIsIGRhdGFzZXRJbmRleD86IG51bWJlcik6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gZ2V0IHRoZSBkYXRhIHZhbHVlIGZyb20gYSBnaXZlbiBwaXhlbC4gVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiBnZXRQaXhlbEZvclZhbHVlXG4gICAgICogVGhlIGNvb3JkaW5hdGUgKDAsIDApIGlzIGF0IHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgY2FudmFzXG4gICAgICogQHBhcmFtIHBpeGVsXG4gICAgICovXG4gICAgZ2V0VmFsdWVGb3JQaXhlbChwaXhlbDogbnVtYmVyKTogYW55O1xufVxuXG4vKipcbiAqIEEgdGltZS1iYXNlZCBjaGFydCBzY2FsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVTY2FsZSBleHRlbmRzIFNjYWxlIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUgZ2l2ZW4gZGF0YSBwb2ludC4gVmFsdWUgY2FuIGVpdGhlciBiZSBhbiBpbmRleCBvciBhIG51bWVyaWNhbCB2YWx1ZVxuICAgICAqIFRoZSBjb29yZGluYXRlICgwLCAwKSBpcyBhdCB0aGUgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIGNhbnZhc1xuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEBwYXJhbSBkYXRhc2V0SW5kZXhcbiAgICAgKi9cbiAgICBnZXRQaXhlbEZvclZhbHVlKHZhbHVlOiBEYXRlLCBpbmRleD86IG51bWJlciwgZGF0YXNldEluZGV4PzogbnVtYmVyKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBnZXQgdGhlIGRhdGEgdmFsdWUgZnJvbSBhIGdpdmVuIHBpeGVsLiBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIGdldFBpeGVsRm9yVmFsdWVcbiAgICAgKiBUaGUgY29vcmRpbmF0ZSAoMCwgMCkgaXMgYXQgdGhlIHVwcGVyLWxlZnQgY29ybmVyIG9mIHRoZSBjYW52YXNcbiAgICAgKiBAcGFyYW0gcGl4ZWxcbiAgICAgKi9cbiAgICBnZXRWYWx1ZUZvclBpeGVsKHBpeGVsOiBudW1iZXIpOiBEYXRlO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgYSBjaGFydC5qcyBwbHVnaW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2hhcnRQbHVnaW4ge1xuICAgIGJlZm9yZUluaXQ/OiAoY2hhcnRJbnN0YW5jZTogQ2hhcnQpID0+IHZvaWQ7XG4gICAgYWZ0ZXJJbml0PzogKGNoYXJ0SW5zdGFuY2U6IENoYXJ0KSA9PiB2b2lkO1xuXG4gICAgcmVzaXplPzogKGNoYXJ0SW5zdGFuY2U6IENoYXJ0LCBuZXdDaGFydFNpemU6IFtudW1iZXIsIG51bWJlcl0pID0+IHZvaWQ7XG5cbiAgICBiZWZvcmVVcGRhdGU/OiAoY2hhcnRJbnN0YW5jZTogQ2hhcnQpID0+IHZvaWQgfCBib29sZWFuO1xuICAgIGFmdGVyU2NhbGVVcGRhdGU/OiAoY2hhckluc3RhbmNlOiBDaGFydCkgPT4gdm9pZDtcbiAgICBhZnRlckxheW91dD86IChjaGFySW5zdGFuY2U6IENoYXJ0KSA9PiB2b2lkO1xuICAgIGJlZm9yZURhdGFzZXRzVXBkYXRlPzogKGNoYXJJbnN0YW5jZTogQ2hhcnQpID0+IHZvaWQgfCBib29sZWFuO1xuICAgIGFmdGVyRGF0YXNldHNVcGRhdGU/OiAoY2hhckluc3RhbmNlOiBDaGFydCkgPT4gdm9pZDtcbiAgICBhZnRlclVwZGF0ZT86IChjaGFySW5zdGFuY2U6IENoYXJ0KSA9PiB2b2lkO1xuXG4gICAgYmVmb3JlUmVuZGVyPzogKGNoYXJJbnN0YW5jZTogQ2hhcnQpID0+IHZvaWQgfCBib29sZWFuO1xuXG4gICAgYmVmb3JlRHJhdz86IChjaGFySW5zdGFuY2U6IENoYXJ0LCBlYXNpbmc6IHN0cmluZykgPT4gdm9pZCB8IGJvb2xlYW47XG4gICAgYWZ0ZXJEcmF3PzogKGNoYXJJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nKSA9PiB2b2lkO1xuXG4gICAgLy8gQmVmb3JlIHRoZSBkYXRhc2V0cyBhcmUgZHJhd24gYnV0IGFmdGVyIHNjYWxlcyBhcmUgZHJhd25cbiAgICBiZWZvcmVEYXRhc2V0c0RyYXc/OiAoY2hhckluc3RhbmNlOiBDaGFydCwgZWFzaW5nOiBzdHJpbmcpID0+IHZvaWQgfCBib29sZWFuO1xuICAgIGFmdGVyRGF0YXNldHNEcmF3PzogKGNoYXJJbnN0YW5jZTogQ2hhcnQsIGVhc2luZzogc3RyaW5nKSA9PiB2b2lkO1xuXG4gICAgZGVzdHJveT86IChjaGFySW5zdGFuY2U6IENoYXJ0KSA9PiB2b2lkO1xuXG4gICAgLy8gQ2FsbGVkIHdoZW4gYW4gZXZlbnQgb2NjdXJzIG9uIHRoZSBjaGFydFxuICAgIGJlZm9yZUV2ZW50PzogKGNoYXJJbnN0YW5jZTogQ2hhcnQsIGV2ZW50OiBhbnkpID0+IHZvaWQgfCBib29sZWFuO1xuICAgIGFmdGVyRXZlbnQ/OiAoY2hhckluc3RhbmNlOiBDaGFydCwgZXZlbnQ6IGFueSkgPT4gdm9pZDtcbn1cbiJdfQ==
@@ -1,88 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as moment_module from 'moment';
6
- /** @type {?} */
7
- const moment = (window && ((/** @type {?} */ (window))).moment) ? ((/** @type {?} */ (window))).moment : moment_module;
8
- import * as utils from './utils';
9
- /**
10
- * @param {?} value
11
- * @return {?}
12
- */
13
- function getCompareValue(value) {
14
- if (typeof value === 'number') {
15
- return value;
16
- }
17
- else if (typeof value === 'string') {
18
- return (new Date(value)).getTime();
19
- }
20
- else if (value instanceof Date) {
21
- return value.getTime();
22
- }
23
- else {
24
- return moment(value).toDate().getTime();
25
- }
26
- }
27
- /**
28
- * @param {?} previousValue
29
- * @param {?} currentValue
30
- * @return {?}
31
- */
32
- export function rangeIsEqual(previousValue, currentValue) {
33
- if (utils.isNil(previousValue) ||
34
- utils.isNil(currentValue) ||
35
- utils.isNil(previousValue[0]) ||
36
- utils.isNil(previousValue[1]) ||
37
- utils.isNil(currentValue[0]) ||
38
- utils.isNil(currentValue[1])) {
39
- return false;
40
- }
41
- previousValue = [getCompareValue(previousValue[0]), getCompareValue(previousValue[1])];
42
- currentValue = [getCompareValue(currentValue[0]), getCompareValue(currentValue[1])];
43
- return previousValue[0] === currentValue[0] && previousValue[1] === currentValue[1];
44
- }
45
- /**
46
- * @param {?} scale
47
- * @return {?}
48
- */
49
- export function getScaleRange(scale) {
50
- if (utils.isNil(scale)) {
51
- return [null, null];
52
- }
53
- /** @type {?} */
54
- const start = scale.getValueForPixel(scale.left);
55
- /** @type {?} */
56
- const end = scale.getValueForPixel(scale.right);
57
- return [start, end];
58
- }
59
- /**
60
- * @param {?} data
61
- * @param {?} range
62
- * @return {?}
63
- */
64
- export function cullData(data, range) {
65
- /** @type {?} */
66
- const startValue = getCompareValue(range[0]);
67
- /** @type {?} */
68
- const endValue = getCompareValue(range[1]);
69
- /** @type {?} */
70
- let startIndex = 0;
71
- /** @type {?} */
72
- let endIndex = data.length;
73
- for (let i = 1; i < data.length; ++i) {
74
- /** @type {?} */
75
- const point = data[i];
76
- /** @type {?} */
77
- const compareValue = getCompareValue(point.x || point.t);
78
- if (compareValue <= startValue) {
79
- startIndex = i;
80
- }
81
- if (compareValue >= endValue) {
82
- endIndex = i + 1;
83
- break;
84
- }
85
- }
86
- return data.slice(startIndex, endIndex);
87
- }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9jdWxsaW5nLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWhhbmEtbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci8iLCJzb3VyY2VzIjpbInNyYy9uYW1lc2VydmVyLWhpc3Rvcnktdmlld2VyL3V0aWxzL2NoYXJ0anMtZG93bnNhbXBsZS9kYXRhX2N1bGxpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQTBCQSxPQUFPLEtBQUssYUFBYSxNQUFNLFFBQVEsQ0FBQzs7TUFDbEMsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsbUJBQUEsTUFBTSxFQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUMxRixPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQzs7Ozs7QUFLakMsU0FBUyxlQUFlLENBQUMsS0FBYTtJQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNoQjtTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ3RDO1NBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1FBQzlCLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzFCO1NBQU07UUFDSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUMzQztBQUNMLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsYUFBb0IsRUFBRSxZQUFtQjtJQUNsRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlCO1FBQ0UsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxhQUFhLEdBQUcsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBGLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFZO0lBQ3RDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztVQUVLLEtBQUssR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzs7VUFDMUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFrQixFQUFFLEtBQVk7O1VBQy9DLFVBQVUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztVQUN0QyxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs7UUFDdEMsVUFBVSxHQUFHLENBQUM7O1FBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNO0lBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFOztjQUM1QixLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzs7Y0FDZixZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4RCxJQUFJLFlBQVksSUFBSSxVQUFVLEVBQUU7WUFDNUIsVUFBVSxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUVELElBQUksWUFBWSxJQUFJLFFBQVEsRUFBRTtZQUMxQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNO1NBQ1Q7S0FDSjtJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBwbHVnaW4gaXMgYWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vM2RjbC9jaGFydGpzLXBsdWdpbi1yZXNwb25zaXZlLWRvd25zYW1wbGVcbiAqIGZvciBjb250cm9sbGluZyB0aGUgcmFkaXVzIG9mIHBvaW50LlxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggM0QgQ29udGVudCBMb2dpc3RpY3NcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCB7IENoYXJ0UG9pbnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgeyBTY2FsZSB9IGZyb20gJy4vY2hhcnRqc19leHQnO1xuaW1wb3J0ICogYXMgbW9tZW50X21vZHVsZSBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gKHdpbmRvdyAmJiAod2luZG93IGFzIGFueSkubW9tZW50KSA/ICh3aW5kb3cgYXMgYW55KS5tb21lbnQgOiBtb21lbnRfbW9kdWxlO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIFhWYWx1ZSA9IG51bWJlciB8IHN0cmluZyB8IERhdGUgfCBtb21lbnRfbW9kdWxlLk1vbWVudDtcbmV4cG9ydCB0eXBlIFJhbmdlID0gW1hWYWx1ZSwgWFZhbHVlXTtcblxuZnVuY3Rpb24gZ2V0Q29tcGFyZVZhbHVlKHZhbHVlOiBYVmFsdWUpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSh2YWx1ZSkpLmdldFRpbWUoKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtb21lbnQodmFsdWUpLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5nZUlzRXF1YWwocHJldmlvdXNWYWx1ZTogUmFuZ2UsIGN1cnJlbnRWYWx1ZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICBpZiAodXRpbHMuaXNOaWwocHJldmlvdXNWYWx1ZSkgfHxcbiAgICAgICAgdXRpbHMuaXNOaWwoY3VycmVudFZhbHVlKSB8fFxuICAgICAgICB1dGlscy5pc05pbChwcmV2aW91c1ZhbHVlWzBdKSB8fFxuICAgICAgICB1dGlscy5pc05pbChwcmV2aW91c1ZhbHVlWzFdKSB8fFxuICAgICAgICB1dGlscy5pc05pbChjdXJyZW50VmFsdWVbMF0pIHx8XG4gICAgICAgIHV0aWxzLmlzTmlsKGN1cnJlbnRWYWx1ZVsxXSlcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByZXZpb3VzVmFsdWUgPSBbZ2V0Q29tcGFyZVZhbHVlKHByZXZpb3VzVmFsdWVbMF0pLCBnZXRDb21wYXJlVmFsdWUocHJldmlvdXNWYWx1ZVsxXSldO1xuICAgIGN1cnJlbnRWYWx1ZSA9IFtnZXRDb21wYXJlVmFsdWUoY3VycmVudFZhbHVlWzBdKSwgZ2V0Q29tcGFyZVZhbHVlKGN1cnJlbnRWYWx1ZVsxXSldO1xuXG4gICAgcmV0dXJuIHByZXZpb3VzVmFsdWVbMF0gPT09IGN1cnJlbnRWYWx1ZVswXSAmJiBwcmV2aW91c1ZhbHVlWzFdID09PSBjdXJyZW50VmFsdWVbMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZVJhbmdlKHNjYWxlOiBTY2FsZSk6IFJhbmdlIHtcbiAgICBpZiAodXRpbHMuaXNOaWwoc2NhbGUpKSB7XG4gICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gc2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChzY2FsZS5sZWZ0KTtcbiAgICBjb25zdCBlbmQgPSBzY2FsZS5nZXRWYWx1ZUZvclBpeGVsKHNjYWxlLnJpZ2h0KTtcblxuICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWxsRGF0YShkYXRhOiBDaGFydFBvaW50W10sIHJhbmdlOiBSYW5nZSk6IENoYXJ0UG9pbnRbXSB7XG4gICAgY29uc3Qgc3RhcnRWYWx1ZSA9IGdldENvbXBhcmVWYWx1ZShyYW5nZVswXSk7XG4gICAgY29uc3QgZW5kVmFsdWUgPSBnZXRDb21wYXJlVmFsdWUocmFuZ2VbMV0pO1xuICAgIGxldCBzdGFydEluZGV4ID0gMDtcbiAgICBsZXQgZW5kSW5kZXggPSBkYXRhLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBwb2ludCA9IGRhdGFbaV07XG4gICAgICAgIGNvbnN0IGNvbXBhcmVWYWx1ZSA9IGdldENvbXBhcmVWYWx1ZShwb2ludC54IHx8IHBvaW50LnQpO1xuXG4gICAgICAgIGlmIChjb21wYXJlVmFsdWUgPD0gc3RhcnRWYWx1ZSkge1xuICAgICAgICAgICAgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29tcGFyZVZhbHVlID49IGVuZFZhbHVlKSB7XG4gICAgICAgICAgICBlbmRJbmRleCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YS5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG59XG4iXX0=
@@ -1,213 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as utils from './utils';
6
- /**
7
- * A mipmap data structure for line chart data. Uses averages to downsample data.
8
- */
9
- export class DataMipmap {
10
- /**
11
- * Create a data mipmap
12
- * @param {?} data The orignal line chart data
13
- * @param {?=} minNumPoints Minimal number of points on lowest mipmap level(limits number of levels)
14
- */
15
- constructor(data, minNumPoints = 2) {
16
- this.minNumPoints = minNumPoints;
17
- this.setData(data);
18
- }
19
- /**
20
- * Set the line chart data and update mipmap level.
21
- * @param {?} data The orignal line chart data
22
- * @return {?}
23
- */
24
- setData(data) {
25
- this.originalData = data || [];
26
- this.mipMaps = [];
27
- this.resolution = this.computeResolution(this.originalData);
28
- this.createMipMap();
29
- }
30
- /**
31
- * Set the minimal number of points
32
- * @param {?} minNumPoints Minimal number of points on lowest mipmap level(limits number of levels)
33
- * @return {?}
34
- */
35
- setMinNumPoints(minNumPoints) {
36
- this.minNumPoints = minNumPoints;
37
- this.mipMaps = [];
38
- this.createMipMap();
39
- }
40
- /**
41
- * Get the best fitting mipmap level for a certain scale resolution
42
- * @param {?} resolution Desired resolution in ms per pixel
43
- * @return {?}
44
- */
45
- getMipMapForResolution(resolution) {
46
- return this.getMipMapLevel(this.getMipMapIndexForResolution(resolution));
47
- }
48
- /**
49
- * Computes the index of the best fitting mipmap level for a certain scale resolution
50
- * @param {?} resolution Desired resolution in ms per pixel
51
- * @return {?}
52
- */
53
- getMipMapIndexForResolution(resolution) {
54
- if (utils.isNil(resolution)) {
55
- return 0;
56
- }
57
- /** @type {?} */
58
- const factor = resolution / this.resolution;
59
- return utils.clamp(Math.floor(Math.log(factor) / Math.log(2.0)), 0, this.mipMaps.length - 1);
60
- }
61
- /**
62
- * Get a mipmap level by index
63
- * @param {?} level The index of the mipmap level
64
- * @return {?}
65
- */
66
- getMipMapLevel(level) {
67
- return this.mipMaps[level];
68
- }
69
- /**
70
- * Get all mipmap level
71
- * @return {?}
72
- */
73
- getMipMaps() {
74
- return this.mipMaps;
75
- }
76
- /**
77
- * Get the number of available mipmap level
78
- * @return {?}
79
- */
80
- getNumLevel() {
81
- return this.mipMaps.length;
82
- }
83
- /**
84
- * @protected
85
- * @param {?} data
86
- * @return {?}
87
- */
88
- computeResolution(data) {
89
- /** @type {?} */
90
- let minTimeDistance = Infinity;
91
- for (let i = 0, end = this.originalData.length - 1; i < end; ++i) {
92
- /** @type {?} */
93
- const current = this.originalData[i];
94
- /** @type {?} */
95
- const next = this.originalData[i + 1];
96
- minTimeDistance = Math.min(Math.abs(this.getTime(current) - this.getTime(next)), minTimeDistance);
97
- }
98
- return minTimeDistance;
99
- }
100
- /**
101
- * @protected
102
- * @return {?}
103
- */
104
- createMipMap() {
105
- /** @type {?} */
106
- let targetResolution = this.resolution;
107
- /** @type {?} */
108
- let targetLength = this.originalData.length;
109
- this.mipMaps.push(this.originalData);
110
- /** @type {?} */
111
- let lastMipMap = this.originalData;
112
- while (lastMipMap.length > this.minNumPoints) {
113
- targetResolution = targetResolution * 2;
114
- targetLength = Math.floor(targetLength * 0.5);
115
- lastMipMap = this.downsampleToResolution(lastMipMap, targetResolution, targetLength);
116
- this.mipMaps.push(lastMipMap);
117
- }
118
- }
119
- /**
120
- * @protected
121
- * @param {?} data
122
- * @param {?} targetResolution
123
- * @param {?} targetLength
124
- * @return {?}
125
- */
126
- downsampleToResolution(data, targetResolution, targetLength) {
127
- /** @type {?} */
128
- const output = [];
129
- /** @type {?} */
130
- let aggregationValues = [];
131
- /** @type {?} */
132
- let firstPoint = data[0];
133
- aggregationValues.push(firstPoint);
134
- for (let i = 1, end = data.length; i < end; ++i) {
135
- /** @type {?} */
136
- const currentPoint = data[i];
137
- /** @type {?} */
138
- const timeDistance = Math.abs(this.getTime(firstPoint) - this.getTime(currentPoint));
139
- if (timeDistance < targetResolution) {
140
- aggregationValues.push(currentPoint);
141
- }
142
- else {
143
- // create new sensor value in output
144
- /** @type {?} */
145
- const newPoint = this.getAverage(aggregationValues);
146
- output.push(newPoint);
147
- // reset aggregation data structure
148
- firstPoint = currentPoint;
149
- aggregationValues = [currentPoint];
150
- }
151
- }
152
- // insert last point
153
- output.push(this.getAverage(aggregationValues));
154
- return output;
155
- }
156
- /**
157
- * @protected
158
- * @param {?} aggregationValues
159
- * @return {?}
160
- */
161
- getAverage(aggregationValues) {
162
- /** @type {?} */
163
- const value = aggregationValues
164
- .map(point => (/** @type {?} */ (point.y)))
165
- .reduce((previous, current) => previous + current)
166
- / aggregationValues.length;
167
- return {
168
- x: aggregationValues[0].x || aggregationValues[0].t,
169
- y: value
170
- };
171
- }
172
- /**
173
- * @protected
174
- * @param {?} point
175
- * @return {?}
176
- */
177
- getTime(point) {
178
- /** @type {?} */
179
- const x = point.x || point.t;
180
- if (typeof x === 'number') {
181
- return x;
182
- }
183
- else if (typeof x === 'string') {
184
- return new Date(x).getTime();
185
- }
186
- else {
187
- return x.getTime();
188
- }
189
- }
190
- }
191
- if (false) {
192
- /**
193
- * @type {?}
194
- * @protected
195
- */
196
- DataMipmap.prototype.minNumPoints;
197
- /**
198
- * @type {?}
199
- * @protected
200
- */
201
- DataMipmap.prototype.mipMaps;
202
- /**
203
- * @type {?}
204
- * @protected
205
- */
206
- DataMipmap.prototype.originalData;
207
- /**
208
- * @type {?}
209
- * @protected
210
- */
211
- DataMipmap.prototype.resolution;
212
- }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9taXBtYXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaGFuYS1uYW1lc2VydmVyLWhpc3Rvcnktdmlld2VyLyIsInNvdXJjZXMiOlsic3JjL25hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvdXRpbHMvY2hhcnRqcy1kb3duc2FtcGxlL2RhdGFfbWlwbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUF5QkEsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7Ozs7QUFLakMsTUFBTSxPQUFPLFVBQVU7Ozs7OztJQVdyQixZQUFZLElBQWtCLEVBQUUsZUFBdUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Ozs7OztJQU1ELE9BQU8sQ0FBQyxJQUFrQjtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7Ozs7SUFNRCxlQUFlLENBQUMsWUFBb0I7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7OztJQU1ELHNCQUFzQixDQUFDLFVBQWtCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDOzs7Ozs7SUFNRCwyQkFBMkIsQ0FBQyxVQUFrQjtRQUM1QyxJ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S0FBSyxRQUFRLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUM7U0FDVjthQUFNLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztDQUNGOzs7Ozs7SUFwS0Msa0NBQStCOzs7OztJQUMvQiw2QkFBa0M7Ozs7O0lBQ2xDLGtDQUFxQzs7Ozs7SUFDckMsZ0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIHBsdWdpbiBpcyBhZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS8zZGNsL2NoYXJ0anMtcGx1Z2luLXJlc3BvbnNpdmUtZG93bnNhbXBsZVxuICogZm9yIGNvbnRyb2xsaW5nIHRoZSByYWRpdXMgb2YgcG9pbnQuXG4gKlxuICogTUlUIExpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxOCAzRCBDb250ZW50IExvZ2lzdGljc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0IHsgQ2hhcnRQb2ludCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEEgbWlwbWFwIGRhdGEgc3RydWN0dXJlIGZvciBsaW5lIGNoYXJ0IGRhdGEuIFVzZXMgYXZlcmFnZXMgdG8gZG93bnNhbXBsZSBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YU1pcG1hcCB7XG4gIHByb3RlY3RlZCBtaW5OdW1Qb2ludHM6IG51bWJlcjtcbiAgcHJvdGVjdGVkIG1pcE1hcHM6IENoYXJ0UG9pbnRbXVtdO1xuICBwcm90ZWN0ZWQgb3JpZ2luYWxEYXRhOiBDaGFydFBvaW50W107XG4gIHByb3RlY3RlZCByZXNvbHV0aW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRhdGEgbWlwbWFwXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvcmlnbmFsIGxpbmUgY2hhcnQgZGF0YVxuICAgKiBAcGFyYW0gbWluTnVtUG9pbnRzIE1pbmltYWwgbnVtYmVyIG9mIHBvaW50cyBvbiBsb3dlc3QgbWlwbWFwIGxldmVsKGxpbWl0cyBudW1iZXIgb2YgbGV2ZWxzKVxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YTogQ2hhcnRQb2ludFtdLCBtaW5OdW1Qb2ludHM6IG51bWJlciA9IDIpIHtcbiAgICB0aGlzLm1pbk51bVBvaW50cyA9IG1pbk51bVBvaW50cztcbiAgICB0aGlzLnNldERhdGEoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBsaW5lIGNoYXJ0IGRhdGEgYW5kIHVwZGF0ZSBtaXBtYXAgbGV2ZWwuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBvcmlnbmFsIGxpbmUgY2hhcnQgZGF0YVxuICAgKi9cbiAgc2V0RGF0YShkYXRhOiBDaGFydFBvaW50W10pOiB2b2lkIHtcbiAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IGRhdGEgfHwgW107XG4gICAgdGhpcy5taXBNYXBzID0gW107XG4gICAgdGhpcy5yZXNvbHV0aW9uID0gdGhpcy5jb21wdXRlUmVzb2x1dGlvbih0aGlzLm9yaWdpbmFsRGF0YSk7XG4gICAgdGhpcy5jcmVhdGVNaXBNYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1pbmltYWwgbnVtYmVyIG9mIHBvaW50c1xuICAgKiBAcGFyYW0gbWluTnVtUG9pbnRzIE1pbmltYWwgbnVtYmVyIG9mIHBvaW50cyBvbiBsb3dlc3QgbWlwbWFwIGxldmVsKGxpbWl0cyBudW1iZXIgb2YgbGV2ZWxzKVxuICAgKi9cbiAgc2V0TWluTnVtUG9pbnRzKG1pbk51bVBvaW50czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5taW5OdW1Qb2ludHMgPSBtaW5OdW1Qb2ludHM7XG4gICAgdGhpcy5taXBNYXBzID0gW107XG4gICAgdGhpcy5jcmVhdGVNaXBNYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJlc3QgZml0dGluZyBtaXBtYXAgbGV2ZWwgZm9yIGEgY2VydGFpbiBzY2FsZSByZXNvbHV0aW9uXG4gICAqIEBwYXJhbSByZXNvbHV0aW9uIERlc2lyZWQgcmVzb2x1dGlvbiBpbiBtcyBwZXIgcGl4ZWxcbiAgICovXG4gIGdldE1pcE1hcEZvclJlc29sdXRpb24ocmVzb2x1dGlvbjogbnVtYmVyKTogQ2hhcnRQb2ludFtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNaXBNYXBMZXZlbCh0aGlzLmdldE1pcE1hcEluZGV4Rm9yUmVzb2x1dGlvbihyZXNvbHV0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIGluZGV4IG9mIHRoZSBiZXN0IGZpdHRpbmcgbWlwbWFwIGxldmVsIGZvciBhIGNlcnRhaW4gc2NhbGUgcmVzb2x1dGlvblxuICAgKiBAcGFyYW0gcmVzb2x1dGlvbiBEZXNpcmVkIHJlc29sdXRpb24gaW4gbXMgcGVyIHBpeGVsXG4gICAqL1xuICBnZXRNaXBNYXBJbmRleEZvclJlc29sdXRpb24ocmVzb2x1dGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodXRpbHMuaXNOaWwocmVzb2x1dGlvbikpIHsgcmV0dXJuIDA7IH1cblxuICAgIGNvbnN0IGZhY3RvciA9IHJlc29sdXRpb24gLyB0aGlzLnJlc29sdXRpb247XG4gICAgcmV0dXJuIHV0aWxzLmNsYW1wKE1hdGguZmxvb3IoTWF0aC5sb2coZmFjdG9yKSAvIE1hdGgubG9nKDIuMCkpLCAwLCB0aGlzLm1pcE1hcHMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbWlwbWFwIGxldmVsIGJ5IGluZGV4XG4gICAqIEBwYXJhbSBsZXZlbCBUaGUgaW5kZXggb2YgdGhlIG1pcG1hcCBsZXZlbFxuICAgKi9cbiAgZ2V0TWlwTWFwTGV2ZWwobGV2ZWw6IG51bWJlcik6IENoYXJ0UG9pbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMubWlwTWFwc1tsZXZlbF07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBtaXBtYXAgbGV2ZWxcbiAgICovXG4gIGdldE1pcE1hcHMoKTogQ2hhcnRQb2ludFtdW10ge1xuICAgIHJldHVybiB0aGlzLm1pcE1hcHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIG1pcG1hcCBsZXZlbFxuICAgKi9cbiAgZ2V0TnVtTGV2ZWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5taXBNYXBzLmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21wdXRlUmVzb2x1dGlvbihkYXRhOiBDaGFydFBvaW50W10pOiBudW1iZXIge1xuICAgIGxldCBtaW5UaW1lRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBlbmQgPSB0aGlzLm9yaWdpbmFsRGF0YS5sZW5ndGggLSAxOyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLm9yaWdpbmFsRGF0YVtpXTtcbiAgICAgIGNvbnN0IG5leHQgPSB0aGlzLm9yaWdpbmFsRGF0YVtpICsgMV07XG5cblxuICAgICAgbWluVGltZURpc3RhbmNlID0gTWF0aC5taW4oXG4gICAgICAgIE1hdGguYWJzKHRoaXMuZ2V0VGltZShjdXJyZW50KSAtIHRoaXMuZ2V0VGltZShuZXh0KSksXG4gICAgICAgIG1pblRpbWVEaXN0YW5jZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWluVGltZURpc3RhbmNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1pcE1hcCgpOiB2b2lkIHtcbiAgICBsZXQgdGFyZ2V0UmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbjtcbiAgICBsZXQgdGFyZ2V0TGVuZ3RoID0gdGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoO1xuICAgIHRoaXMubWlwTWFwcy5wdXNoKHRoaXMub3JpZ2luYWxEYXRhKTtcbiAgICBsZXQgbGFzdE1pcE1hcCA9IHRoaXMub3JpZ2luYWxEYXRhO1xuXG4gICAgd2hpbGUgKGxhc3RNaXBNYXAubGVuZ3RoID4gdGhpcy5taW5OdW1Qb2ludHMpIHtcbiAgICAgIHRhcmdldFJlc29sdXRpb24gPSB0YXJnZXRSZXNvbHV0aW9uICogMjtcbiAgICAgIHRhcmdldExlbmd0aCA9IE1hdGguZmxvb3IodGFyZ2V0TGVuZ3RoICogMC41KTtcbiAgICAgIGxhc3RNaXBNYXAgPSB0aGlzLmRvd25zYW1wbGVUb1Jlc29sdXRpb24obGFzdE1pcE1hcCwgdGFyZ2V0UmVzb2x1dGlvbiwgdGFyZ2V0TGVuZ3RoKTtcbiAgICAgIHRoaXMubWlwTWFwcy5wdXNoKGxhc3RNaXBNYXApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBkb3duc2FtcGxlVG9SZXNvbHV0aW9uKFxuICAgIGRhdGE6IENoYXJ0UG9pbnRbXSxcbiAgICB0YXJnZXRSZXNvbHV0aW9uOiBudW1iZXIsXG4gICAgdGFyZ2V0TGVuZ3RoOiBudW1iZXJcbiAgKTogQ2hhcnRQb2ludFtdIHtcbiAgICBjb25zdCBvdXRwdXQ6IENoYXJ0UG9pbnRbXSA9IFtdO1xuICAgIGxldCBhZ2dyZWdhdGlvblZhbHVlczogQ2hhcnRQb2ludFtdID0gW107XG4gICAgbGV0IGZpcnN0UG9pbnQgPSBkYXRhWzBdO1xuICAgIGFnZ3JlZ2F0aW9uVmFsdWVzLnB1c2goZmlyc3RQb2ludCk7XG5cbiAgICBmb3IgKGxldCBpID0gMSwgZW5kID0gZGF0YS5sZW5ndGg7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgY29uc3QgY3VycmVudFBvaW50ID0gZGF0YVtpXTtcbiAgICAgIGNvbnN0IHRpbWVEaXN0YW5jZSA9IE1hdGguYWJzKHRoaXMuZ2V0VGltZShmaXJzdFBvaW50KSAtIHRoaXMuZ2V0VGltZShjdXJyZW50UG9pbnQpKTtcblxuICAgICAgaWYgKHRpbWVEaXN0YW5jZSA8IHRhcmdldFJlc29sdXRpb24pIHtcbiAgICAgICAgYWdncmVnYXRpb25WYWx1ZXMucHVzaChjdXJyZW50UG9pbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY3JlYXRlIG5ldyBzZW5zb3IgdmFsdWUgaW4gb3V0cHV0XG4gICAgICAgIGNvbnN0IG5ld1BvaW50ID0gdGhpcy5nZXRBdmVyYWdlKGFnZ3JlZ2F0aW9uVmFsdWVzKTtcbiAgICAgICAgb3V0cHV0LnB1c2gobmV3UG9pbnQpO1xuXG4gICAgICAgIC8vIHJlc2V0IGFnZ3JlZ2F0aW9uIGRhdGEgc3RydWN0dXJlXG4gICAgICAgIGZpcnN0UG9pbnQgPSBjdXJyZW50UG9pbnQ7XG4gICAgICAgIGFnZ3JlZ2F0aW9uVmFsdWVzID0gW2N1cnJlbnRQb2ludF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW5zZXJ0IGxhc3QgcG9pbnRcbiAgICBvdXRwdXQucHVzaCh0aGlzLmdldEF2ZXJhZ2UoYWdncmVnYXRpb25WYWx1ZXMpKTtcblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QXZlcmFnZShhZ2dyZWdhdGlvblZhbHVlczogQ2hhcnRQb2ludFtdKTogQ2hhcnRQb2ludCB7XG4gICAgY29uc3QgdmFsdWUgPSBhZ2dyZWdhdGlvblZhbHVlc1xuICAgICAgLm1hcChwb2ludCA9PiBwb2ludC55IGFzIG51bWJlcilcbiAgICAgIC5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBwcmV2aW91cyArIGN1cnJlbnQpXG4gICAgICAvIGFnZ3JlZ2F0aW9uVmFsdWVzLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBhZ2dyZWdhdGlvblZhbHVlc1swXS54IHx8IGFnZ3JlZ2F0aW9uVmFsdWVzWzBdLnQsXG4gICAgICB5OiB2YWx1ZVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VGltZShwb2ludDogQ2hhcnRQb2ludCk6IG51bWJlciB7XG4gICAgY29uc3QgeCA9IHBvaW50LnggfHwgcG9pbnQudDtcblxuICAgIGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoeCkuZ2V0VGltZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geC5nZXRUaW1lKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,46 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * This plugin is adapted from: https://github.com/3dcl/chartjs-plugin-responsive-downsample
7
- * for controlling the radius of point.
8
- *
9
- * MIT License
10
- * Copyright (c) 2018 3D Content Logistics
11
- *
12
- * Permission is hereby granted, free of charge, to any person obtaining a copy
13
- * of this software and associated documentation files (the "Software"), to deal
14
- * in the Software without restriction, including without limitation the rights
15
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
- * copies of the Software, and to permit persons to whom the Software is
17
- * furnished to do so, subject to the following conditions:
18
- * The above copyright notice and this permission notice shall be included in all
19
- * copies or substantial portions of the Software.
20
- *
21
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
- * SOFTWARE.
28
- */
29
- import * as chartjs from 'chart.js';
30
- /** @type {?} */
31
- const Chart = window && ((/** @type {?} */ (window))).Chart ? ((/** @type {?} */ (window))).Chart : chartjs.Chart;
32
- import { ResponsiveDownsamplePlugin } from './responsive_downsample_plugin';
33
- export { ResponsiveDownsamplePlugin } from './responsive_downsample_plugin';
34
- // comment this because this plugin is only used internally, merge ChartOptions interface is unnecessary
35
- // and causes build error: "error TS2665: Invalid module name in augmentation.".
36
- // // Extend chart.js options interface
37
- // declare module 'chart.js' {
38
- // interface ChartOptions {
39
- // /**
40
- // * Options for responsive downsample plugin
41
- // */
42
- // responsiveDownsample?: ResponsiveDownsamplePluginOptions;
43
- // }
44
- // }
45
- Chart.pluginService.register(new ResponsiveDownsamplePlugin());
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtaGFuYS1uYW1lc2VydmVyLWhpc3Rvcnktdmlld2VyLyIsInNvdXJjZXMiOlsic3JjL25hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvdXRpbHMvY2hhcnRqcy1kb3duc2FtcGxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7O01BQzlCLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUs7QUFFckYsT0FBTyxFQUFFLDBCQUEwQixFQUFxQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9HLE9BQU8sRUFBRSwwQkFBMEIsRUFBcUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBZS9HLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksMEJBQTBCLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIHBsdWdpbiBpcyBhZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS8zZGNsL2NoYXJ0anMtcGx1Z2luLXJlc3BvbnNpdmUtZG93bnNhbXBsZVxuICogZm9yIGNvbnRyb2xsaW5nIHRoZSByYWRpdXMgb2YgcG9pbnQuXG4gKlxuICogTUlUIExpY2Vuc2VcbiAqIENvcHlyaWdodCAoYykgMjAxOCAzRCBDb250ZW50IExvZ2lzdGljc1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuaW1wb3J0ICogYXMgY2hhcnRqcyBmcm9tICdjaGFydC5qcyc7XG5jb25zdCBDaGFydCA9IHdpbmRvdyAmJiAod2luZG93IGFzIGFueSkuQ2hhcnQgPyAod2luZG93IGFzIGFueSkuQ2hhcnQgOiBjaGFydGpzLkNoYXJ0O1xuXG5pbXBvcnQgeyBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbiwgUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9yZXNwb25zaXZlX2Rvd25zYW1wbGVfcGx1Z2luJztcbmV4cG9ydCB7IFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luLCBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3Jlc3BvbnNpdmVfZG93bnNhbXBsZV9wbHVnaW4nO1xuXG5cbi8vIGNvbW1lbnQgdGhpcyBiZWNhdXNlIHRoaXMgcGx1Z2luIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBtZXJnZSBDaGFydE9wdGlvbnMgaW50ZXJmYWNlIGlzIHVubmVjZXNzYXJ5XG4vLyBhbmQgY2F1c2VzIGJ1aWxkIGVycm9yOiBcImVycm9yIFRTMjY2NTogSW52YWxpZCBtb2R1bGUgbmFtZSBpbiBhdWdtZW50YXRpb24uXCIuXG4vLyAvLyBFeHRlbmQgY2hhcnQuanMgb3B0aW9ucyBpbnRlcmZhY2Vcbi8vIGRlY2xhcmUgbW9kdWxlICdjaGFydC5qcycge1xuLy8gICAgIGludGVyZmFjZSBDaGFydE9wdGlvbnMge1xuLy8gICAgICAgICAvKipcbi8vICAgICAgICAgICogT3B0aW9ucyBmb3IgcmVzcG9uc2l2ZSBkb3duc2FtcGxlIHBsdWdpblxuLy8gICAgICAgICAgKi9cbi8vICAgICAgICAgcmVzcG9uc2l2ZURvd25zYW1wbGU/OiBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbk9wdGlvbnM7XG4vLyAgICAgfVxuLy8gfVxuXG5DaGFydC5wbHVnaW5TZXJ2aWNlLnJlZ2lzdGVyKG5ldyBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbigpKTtcbiJdfQ==