@carbon/charts 0.41.20 → 0.41.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/CHANGELOG.md +28 -46
  2. package/axis-chart.d.ts +4 -4
  3. package/axis-chart.js +46 -46
  4. package/axis-chart.js.map +1 -1
  5. package/build/demo/create-codesandbox.d.ts +42 -42
  6. package/build/demo/data/bar.d.ts +2 -2
  7. package/build/demo/data/index.d.ts +13 -13
  8. package/build/demo/data/line.d.ts +4 -4
  9. package/build/demo/data/meter.d.ts +1 -1
  10. package/build/src/axis-chart.d.ts +4 -4
  11. package/build/src/chart.d.ts +3 -3
  12. package/build/src/charts/area-stacked.d.ts +2 -2
  13. package/build/src/charts/area.d.ts +2 -2
  14. package/build/src/charts/bar-grouped.d.ts +2 -2
  15. package/build/src/charts/bar-simple.d.ts +2 -2
  16. package/build/src/charts/bar-stacked.d.ts +2 -2
  17. package/build/src/charts/bubble.d.ts +2 -2
  18. package/build/src/charts/combo.d.ts +2 -2
  19. package/build/src/charts/donut.d.ts +2 -2
  20. package/build/src/charts/gauge.d.ts +3 -3
  21. package/build/src/charts/index.d.ts +16 -16
  22. package/build/src/charts/line.d.ts +2 -2
  23. package/build/src/charts/lollipop.d.ts +2 -2
  24. package/build/src/charts/meter.d.ts +3 -3
  25. package/build/src/charts/pie.d.ts +3 -3
  26. package/build/src/charts/radar.d.ts +2 -2
  27. package/build/src/charts/scatter.d.ts +2 -2
  28. package/build/src/charts/treemap.d.ts +2 -2
  29. package/build/src/components/axes/axis.d.ts +3 -3
  30. package/build/src/components/axes/chart-clip.d.ts +2 -2
  31. package/build/src/components/axes/grid-brush.d.ts +1 -1
  32. package/build/src/components/axes/grid.d.ts +1 -1
  33. package/build/src/components/axes/ruler-stacked.d.ts +1 -1
  34. package/build/src/components/axes/ruler.d.ts +2 -2
  35. package/build/src/components/axes/toolbar.d.ts +2 -2
  36. package/build/src/components/axes/two-dimensional-axes.d.ts +2 -2
  37. package/build/src/components/axes/zero-line.d.ts +1 -1
  38. package/build/src/components/axes/zoom-bar.d.ts +2 -2
  39. package/build/src/components/component.d.ts +1 -1
  40. package/build/src/components/essentials/legend.d.ts +1 -1
  41. package/build/src/components/essentials/threshold.d.ts +3 -3
  42. package/build/src/components/essentials/title-meter.d.ts +1 -1
  43. package/build/src/components/essentials/title.d.ts +1 -1
  44. package/build/src/components/essentials/tooltip-axis.d.ts +1 -1
  45. package/build/src/components/essentials/tooltip.d.ts +3 -3
  46. package/build/src/components/graphs/area-stacked.d.ts +1 -1
  47. package/build/src/components/graphs/area.d.ts +1 -1
  48. package/build/src/components/graphs/bar-grouped.d.ts +2 -2
  49. package/build/src/components/graphs/bar-simple.d.ts +1 -1
  50. package/build/src/components/graphs/bar-stacked.d.ts +1 -1
  51. package/build/src/components/graphs/bar.d.ts +1 -1
  52. package/build/src/components/graphs/bubble.d.ts +2 -2
  53. package/build/src/components/graphs/donut.d.ts +1 -1
  54. package/build/src/components/graphs/gauge.d.ts +1 -1
  55. package/build/src/components/graphs/line.d.ts +1 -1
  56. package/build/src/components/graphs/lollipop.d.ts +1 -1
  57. package/build/src/components/graphs/meter.d.ts +1 -1
  58. package/build/src/components/graphs/pie.d.ts +1 -1
  59. package/build/src/components/graphs/radar.d.ts +1 -1
  60. package/build/src/components/graphs/scatter-stacked.d.ts +1 -1
  61. package/build/src/components/graphs/scatter.d.ts +2 -2
  62. package/build/src/components/graphs/skeleton-lines.d.ts +1 -1
  63. package/build/src/components/graphs/skeleton.d.ts +1 -1
  64. package/build/src/components/graphs/treemap.d.ts +1 -1
  65. package/build/src/components/index.d.ts +36 -36
  66. package/build/src/components/layout/layout.d.ts +3 -3
  67. package/build/src/components/layout/spacer.d.ts +1 -1
  68. package/build/src/configuration-non-customizable.d.ts +7 -7
  69. package/build/src/configuration.d.ts +2 -2
  70. package/build/src/interfaces/axis-scales.d.ts +7 -7
  71. package/build/src/interfaces/charts.d.ts +11 -4
  72. package/build/src/interfaces/components.d.ts +3 -3
  73. package/build/src/interfaces/enums.d.ts +1 -1
  74. package/build/src/interfaces/index.d.ts +7 -7
  75. package/build/src/interfaces/layout.d.ts +1 -1
  76. package/build/src/interfaces/model.d.ts +1 -1
  77. package/build/src/model-cartesian-charts.d.ts +1 -1
  78. package/build/src/model-gauge.d.ts +1 -1
  79. package/build/src/model-meter.d.ts +1 -1
  80. package/build/src/model-pie.d.ts +1 -1
  81. package/build/src/model.d.ts +1 -9
  82. package/build/src/services/angle-utils.d.ts +1 -1
  83. package/build/src/services/curves.d.ts +2 -2
  84. package/build/src/services/essentials/dom-utils.d.ts +2 -2
  85. package/build/src/services/essentials/events.d.ts +1 -1
  86. package/build/src/services/essentials/gradient-utils.d.ts +1 -1
  87. package/build/src/services/essentials/transitions.d.ts +2 -2
  88. package/build/src/services/index.d.ts +7 -7
  89. package/build/src/services/scales-cartesian.d.ts +2 -2
  90. package/build/src/services/service.d.ts +1 -1
  91. package/build/src/services/time-series.d.ts +1 -1
  92. package/build/src/services/zoom.d.ts +2 -2
  93. package/build/src/tools.d.ts +2 -2
  94. package/build/stories/all.stories.d.ts +1 -1
  95. package/build/stories/tutorials/index.d.ts +11 -11
  96. package/build/stories/tutorials.stories.d.ts +1 -1
  97. package/bundle.js +1 -1
  98. package/chart.d.ts +3 -3
  99. package/chart.js +35 -35
  100. package/chart.js.map +1 -1
  101. package/charts/area-stacked.d.ts +2 -2
  102. package/charts/area-stacked.js +8 -8
  103. package/charts/area-stacked.js.map +1 -1
  104. package/charts/area.d.ts +2 -2
  105. package/charts/area.js +8 -8
  106. package/charts/area.js.map +1 -1
  107. package/charts/bar-grouped.d.ts +2 -2
  108. package/charts/bar-grouped.js +7 -7
  109. package/charts/bar-grouped.js.map +1 -1
  110. package/charts/bar-simple.d.ts +2 -2
  111. package/charts/bar-simple.js +7 -7
  112. package/charts/bar-simple.js.map +1 -1
  113. package/charts/bar-stacked.d.ts +2 -2
  114. package/charts/bar-stacked.js +7 -7
  115. package/charts/bar-stacked.js.map +1 -1
  116. package/charts/bubble.d.ts +2 -2
  117. package/charts/bubble.js +7 -7
  118. package/charts/bubble.js.map +1 -1
  119. package/charts/combo.d.ts +2 -2
  120. package/charts/combo.js +12 -12
  121. package/charts/combo.js.map +1 -1
  122. package/charts/donut.d.ts +2 -2
  123. package/charts/donut.js +7 -7
  124. package/charts/donut.js.map +1 -1
  125. package/charts/gauge.d.ts +3 -3
  126. package/charts/gauge.js +5 -5
  127. package/charts/gauge.js.map +1 -1
  128. package/charts/index.d.ts +16 -16
  129. package/charts/index.js +16 -16
  130. package/charts/index.js.map +1 -1
  131. package/charts/line.d.ts +2 -2
  132. package/charts/line.js +5 -5
  133. package/charts/line.js.map +1 -1
  134. package/charts/lollipop.d.ts +2 -2
  135. package/charts/lollipop.js +7 -7
  136. package/charts/lollipop.js.map +1 -1
  137. package/charts/meter.d.ts +3 -3
  138. package/charts/meter.js +18 -18
  139. package/charts/meter.js.map +1 -1
  140. package/charts/pie.d.ts +3 -3
  141. package/charts/pie.js +8 -8
  142. package/charts/pie.js.map +1 -1
  143. package/charts/radar.d.ts +2 -2
  144. package/charts/radar.js +5 -5
  145. package/charts/radar.js.map +1 -1
  146. package/charts/scatter.d.ts +2 -2
  147. package/charts/scatter.js +7 -7
  148. package/charts/scatter.js.map +1 -1
  149. package/charts/treemap.d.ts +2 -2
  150. package/charts/treemap.js +4 -4
  151. package/charts/treemap.js.map +1 -1
  152. package/components/axes/axis.d.ts +3 -3
  153. package/components/axes/axis.js +98 -98
  154. package/components/axes/axis.js.map +1 -1
  155. package/components/axes/chart-clip.d.ts +2 -2
  156. package/components/axes/chart-clip.js +9 -9
  157. package/components/axes/chart-clip.js.map +1 -1
  158. package/components/axes/grid-brush.d.ts +1 -1
  159. package/components/axes/grid-brush.js +32 -32
  160. package/components/axes/grid-brush.js.map +1 -1
  161. package/components/axes/grid.d.ts +1 -1
  162. package/components/axes/grid.js +34 -34
  163. package/components/axes/grid.js.map +1 -1
  164. package/components/axes/ruler-stacked.d.ts +1 -1
  165. package/components/axes/ruler-stacked.js +5 -5
  166. package/components/axes/ruler-stacked.js.map +1 -1
  167. package/components/axes/ruler.d.ts +2 -2
  168. package/components/axes/ruler.js +36 -36
  169. package/components/axes/ruler.js.map +1 -1
  170. package/components/axes/toolbar.d.ts +2 -2
  171. package/components/axes/toolbar.js +85 -85
  172. package/components/axes/toolbar.js.map +1 -1
  173. package/components/axes/two-dimensional-axes.d.ts +2 -2
  174. package/components/axes/two-dimensional-axes.js +13 -13
  175. package/components/axes/two-dimensional-axes.js.map +1 -1
  176. package/components/axes/zero-line.d.ts +1 -1
  177. package/components/axes/zero-line.js +12 -12
  178. package/components/axes/zero-line.js.map +1 -1
  179. package/components/axes/zoom-bar.d.ts +2 -2
  180. package/components/axes/zoom-bar.js +114 -114
  181. package/components/axes/zoom-bar.js.map +1 -1
  182. package/components/component.d.ts +1 -1
  183. package/components/component.js +13 -13
  184. package/components/component.js.map +1 -1
  185. package/components/essentials/legend.d.ts +1 -1
  186. package/components/essentials/legend.js +95 -92
  187. package/components/essentials/legend.js.map +1 -1
  188. package/components/essentials/threshold.d.ts +3 -3
  189. package/components/essentials/threshold.js +39 -39
  190. package/components/essentials/threshold.js.map +1 -1
  191. package/components/essentials/title-meter.d.ts +1 -1
  192. package/components/essentials/title-meter.js +42 -42
  193. package/components/essentials/title-meter.js.map +1 -1
  194. package/components/essentials/title.d.ts +1 -1
  195. package/components/essentials/title.js +19 -19
  196. package/components/essentials/title.js.map +1 -1
  197. package/components/essentials/tooltip-axis.d.ts +1 -1
  198. package/components/essentials/tooltip-axis.js +23 -23
  199. package/components/essentials/tooltip-axis.js.map +1 -1
  200. package/components/essentials/tooltip.d.ts +3 -3
  201. package/components/essentials/tooltip.js +31 -31
  202. package/components/essentials/tooltip.js.map +1 -1
  203. package/components/graphs/area-stacked.d.ts +1 -1
  204. package/components/graphs/area-stacked.js +28 -29
  205. package/components/graphs/area-stacked.js.map +1 -1
  206. package/components/graphs/area.d.ts +1 -1
  207. package/components/graphs/area.js +62 -57
  208. package/components/graphs/area.js.map +1 -1
  209. package/components/graphs/bar-grouped.d.ts +2 -2
  210. package/components/graphs/bar-grouped.js +56 -56
  211. package/components/graphs/bar-grouped.js.map +1 -1
  212. package/components/graphs/bar-simple.d.ts +1 -1
  213. package/components/graphs/bar-simple.js +45 -45
  214. package/components/graphs/bar-simple.js.map +1 -1
  215. package/components/graphs/bar-stacked.d.ts +1 -1
  216. package/components/graphs/bar-stacked.js +50 -51
  217. package/components/graphs/bar-stacked.js.map +1 -1
  218. package/components/graphs/bar.d.ts +1 -1
  219. package/components/graphs/bar.js +4 -4
  220. package/components/graphs/bar.js.map +1 -1
  221. package/components/graphs/bubble.d.ts +2 -2
  222. package/components/graphs/bubble.js +19 -19
  223. package/components/graphs/bubble.js.map +1 -1
  224. package/components/graphs/donut.d.ts +1 -1
  225. package/components/graphs/donut.js +20 -20
  226. package/components/graphs/donut.js.map +1 -1
  227. package/components/graphs/gauge.d.ts +1 -1
  228. package/components/graphs/gauge.js +89 -87
  229. package/components/graphs/gauge.js.map +1 -1
  230. package/components/graphs/line.d.ts +1 -1
  231. package/components/graphs/line.js +33 -33
  232. package/components/graphs/line.js.map +1 -1
  233. package/components/graphs/lollipop.d.ts +1 -1
  234. package/components/graphs/lollipop.js +32 -32
  235. package/components/graphs/lollipop.js.map +1 -1
  236. package/components/graphs/meter.d.ts +1 -1
  237. package/components/graphs/meter.js +39 -39
  238. package/components/graphs/meter.js.map +1 -1
  239. package/components/graphs/pie.d.ts +1 -1
  240. package/components/graphs/pie.js +102 -100
  241. package/components/graphs/pie.js.map +1 -1
  242. package/components/graphs/radar.d.ts +1 -1
  243. package/components/graphs/radar.js +180 -180
  244. package/components/graphs/radar.js.map +1 -1
  245. package/components/graphs/scatter-stacked.d.ts +1 -1
  246. package/components/graphs/scatter-stacked.js +22 -22
  247. package/components/graphs/scatter-stacked.js.map +1 -1
  248. package/components/graphs/scatter.d.ts +2 -2
  249. package/components/graphs/scatter.js +67 -66
  250. package/components/graphs/scatter.js.map +1 -1
  251. package/components/graphs/skeleton-lines.d.ts +1 -1
  252. package/components/graphs/skeleton-lines.js +27 -27
  253. package/components/graphs/skeleton-lines.js.map +1 -1
  254. package/components/graphs/skeleton.d.ts +1 -1
  255. package/components/graphs/skeleton.js +85 -85
  256. package/components/graphs/skeleton.js.map +1 -1
  257. package/components/graphs/treemap.d.ts +1 -1
  258. package/components/graphs/treemap.js +82 -82
  259. package/components/graphs/treemap.js.map +1 -1
  260. package/components/index.d.ts +36 -36
  261. package/components/index.js +36 -36
  262. package/components/index.js.map +1 -1
  263. package/components/layout/layout.d.ts +3 -3
  264. package/components/layout/layout.js +28 -28
  265. package/components/layout/layout.js.map +1 -1
  266. package/components/layout/spacer.d.ts +1 -1
  267. package/components/layout/spacer.js +10 -10
  268. package/components/layout/spacer.js.map +1 -1
  269. package/configuration-non-customizable.d.ts +7 -7
  270. package/configuration-non-customizable.js +37 -37
  271. package/configuration-non-customizable.js.map +1 -1
  272. package/configuration.d.ts +2 -2
  273. package/configuration.js +81 -78
  274. package/configuration.js.map +1 -1
  275. package/demo/create-codesandbox.d.ts +42 -42
  276. package/demo/create-codesandbox.js +100 -100
  277. package/demo/create-codesandbox.js.map +1 -1
  278. package/demo/data/area.js +220 -190
  279. package/demo/data/area.js.map +1 -1
  280. package/demo/data/bar.d.ts +2 -2
  281. package/demo/data/bar.js +302 -302
  282. package/demo/data/bar.js.map +1 -1
  283. package/demo/data/bubble.js +108 -108
  284. package/demo/data/bubble.js.map +1 -1
  285. package/demo/data/combo.js +323 -323
  286. package/demo/data/combo.js.map +1 -1
  287. package/demo/data/donut.js +19 -19
  288. package/demo/data/donut.js.map +1 -1
  289. package/demo/data/gauge.js +20 -20
  290. package/demo/data/gauge.js.map +1 -1
  291. package/demo/data/high-scale.js +3 -3
  292. package/demo/data/high-scale.js.map +1 -1
  293. package/demo/data/index.d.ts +13 -13
  294. package/demo/data/index.js +299 -299
  295. package/demo/data/index.js.map +1 -1
  296. package/demo/data/line.d.ts +4 -4
  297. package/demo/data/line.js +332 -332
  298. package/demo/data/line.js.map +1 -1
  299. package/demo/data/lollipop.js +19 -19
  300. package/demo/data/lollipop.js.map +1 -1
  301. package/demo/data/meter.d.ts +1 -1
  302. package/demo/data/meter.js +22 -22
  303. package/demo/data/meter.js.map +1 -1
  304. package/demo/data/pie.js +17 -17
  305. package/demo/data/pie.js.map +1 -1
  306. package/demo/data/radar.js +84 -84
  307. package/demo/data/radar.js.map +1 -1
  308. package/demo/data/scatter.js +125 -125
  309. package/demo/data/scatter.js.map +1 -1
  310. package/demo/data/step.js +11 -11
  311. package/demo/data/step.js.map +1 -1
  312. package/demo/data/time-series-axis.js +164 -164
  313. package/demo/data/time-series-axis.js.map +1 -1
  314. package/demo/data/toolbar.js +15 -15
  315. package/demo/data/toolbar.js.map +1 -1
  316. package/demo/data/treemap.js +63 -63
  317. package/demo/data/treemap.js.map +1 -1
  318. package/demo/data/zoom-bar.js +65 -65
  319. package/demo/data/zoom-bar.js.map +1 -1
  320. package/demo/styles.css +1 -1
  321. package/demo/styles.min.css +1 -1
  322. package/demo/tsconfig.tsbuildinfo +45 -45
  323. package/index.d.ts +3 -3
  324. package/index.js +3 -3
  325. package/index.js.map +1 -1
  326. package/interfaces/a11y.js.map +1 -1
  327. package/interfaces/axis-scales.d.ts +7 -7
  328. package/interfaces/axis-scales.js.map +1 -1
  329. package/interfaces/charts.d.ts +11 -4
  330. package/interfaces/charts.js.map +1 -1
  331. package/interfaces/components.d.ts +3 -3
  332. package/interfaces/components.js.map +1 -1
  333. package/interfaces/enums.d.ts +1 -1
  334. package/interfaces/enums.js +1 -1
  335. package/interfaces/enums.js.map +1 -1
  336. package/interfaces/events.js.map +1 -1
  337. package/interfaces/index.d.ts +7 -7
  338. package/interfaces/index.js +2 -2
  339. package/interfaces/index.js.map +1 -1
  340. package/interfaces/layout.d.ts +1 -1
  341. package/interfaces/layout.js.map +1 -1
  342. package/interfaces/model.d.ts +1 -1
  343. package/interfaces/model.js.map +1 -1
  344. package/model-cartesian-charts.d.ts +1 -1
  345. package/model-cartesian-charts.js +7 -7
  346. package/model-cartesian-charts.js.map +1 -1
  347. package/model-gauge.d.ts +1 -1
  348. package/model-gauge.js +2 -2
  349. package/model-gauge.js.map +1 -1
  350. package/model-meter.d.ts +1 -1
  351. package/model-meter.js +7 -7
  352. package/model-meter.js.map +1 -1
  353. package/model-pie.d.ts +1 -1
  354. package/model-pie.js +1 -1
  355. package/model-pie.js.map +1 -1
  356. package/model.d.ts +1 -9
  357. package/model.js +31 -42
  358. package/model.js.map +1 -1
  359. package/package.json +2 -3
  360. package/polyfills.js +9 -9
  361. package/polyfills.js.map +1 -1
  362. package/services/angle-utils.d.ts +1 -1
  363. package/services/angle-utils.js +9 -9
  364. package/services/angle-utils.js.map +1 -1
  365. package/services/curves.d.ts +2 -2
  366. package/services/curves.js +6 -6
  367. package/services/curves.js.map +1 -1
  368. package/services/essentials/dom-utils.d.ts +2 -2
  369. package/services/essentials/dom-utils.js +37 -37
  370. package/services/essentials/dom-utils.js.map +1 -1
  371. package/services/essentials/events.d.ts +1 -1
  372. package/services/essentials/events.js +3 -3
  373. package/services/essentials/events.js.map +1 -1
  374. package/services/essentials/gradient-utils.d.ts +1 -1
  375. package/services/essentials/gradient-utils.js +25 -25
  376. package/services/essentials/gradient-utils.js.map +1 -1
  377. package/services/essentials/transitions.d.ts +2 -2
  378. package/services/essentials/transitions.js +8 -8
  379. package/services/essentials/transitions.js.map +1 -1
  380. package/services/index.d.ts +7 -7
  381. package/services/index.js +7 -7
  382. package/services/index.js.map +1 -1
  383. package/services/scales-cartesian.d.ts +2 -2
  384. package/services/scales-cartesian.js +57 -60
  385. package/services/scales-cartesian.js.map +1 -1
  386. package/services/service.d.ts +1 -1
  387. package/services/service.js.map +1 -1
  388. package/services/time-series.d.ts +1 -1
  389. package/services/time-series.js +27 -27
  390. package/services/time-series.js.map +1 -1
  391. package/services/zoom.d.ts +2 -2
  392. package/services/zoom.js +20 -20
  393. package/services/zoom.js.map +1 -1
  394. package/styles/_type.scss +7 -7
  395. package/styles/color-palatte.scss +218 -218
  396. package/styles/colors.scss +3 -3
  397. package/styles/components/_axis.scss +5 -5
  398. package/styles/components/_ruler.scss +2 -2
  399. package/styles/components/_threshold.scss +1 -1
  400. package/styles/components/_title.scss +3 -3
  401. package/styles/components/_toolbar.scss +1 -1
  402. package/styles/components/_tooltip.scss +6 -6
  403. package/styles/components/index.scss +16 -16
  404. package/styles/graphs/_bubble.scss +1 -1
  405. package/styles/graphs/_radar.scss +2 -2
  406. package/styles/graphs/_scatter.scss +1 -1
  407. package/styles/graphs/_treemap.scss +1 -1
  408. package/styles/graphs/index.scss +9 -9
  409. package/styles/styles-g10.scss +2 -2
  410. package/styles/styles-g100.scss +2 -2
  411. package/styles/styles-g90.scss +2 -2
  412. package/styles/styles-white.scss +2 -2
  413. package/styles/styles.scss +10 -10
  414. package/tools.d.ts +2 -2
  415. package/tools.js +26 -26
  416. package/tools.js.map +1 -1
  417. package/tsconfig.tsbuildinfo +173 -173
@@ -1 +1 @@
1
- {"version":3,"file":"model-cartesian-charts.js","sourceRoot":"","sources":["model-cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from \"./model\";\nimport { Tools } from \"./tools\";\nimport { ScaleTypes, AxisPositions } from \"./interfaces\";\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t\"zoomBar\",\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t\"enabled\"\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t\"zoomBar\",\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t\"data\"\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get(\"zoomBarData\");\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, \"getTime\") === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-cartesian-charts.js","sourceRoot":"","sources":["model-cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from './tools';\nimport { ScaleTypes, AxisPositions } from './interfaces';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'data'\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get('zoomBarData');\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, 'getTime') === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
package/model-gauge.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ChartModel } from "./model";
1
+ import { ChartModel } from './model';
2
2
  /** The gauge chart model layer */
3
3
  export declare class GaugeChartModel extends ChartModel {
4
4
  constructor(services: any);
package/model-gauge.js CHANGED
@@ -12,7 +12,7 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  // Internal Imports
15
- import { ChartModel } from "./model";
15
+ import { ChartModel } from './model';
16
16
  /** The gauge chart model layer */
17
17
  var GaugeChartModel = /** @class */ (function (_super) {
18
18
  __extends(GaugeChartModel, _super);
@@ -20,7 +20,7 @@ var GaugeChartModel = /** @class */ (function (_super) {
20
20
  return _super.call(this, services) || this;
21
21
  }
22
22
  GaugeChartModel.prototype.getDataGroups = function () {
23
- return _super.prototype.getDataGroups.call(this).filter(function (item) { return item.name !== "delta"; });
23
+ return _super.prototype.getDataGroups.call(this).filter(function (item) { return item.name !== 'delta'; });
24
24
  };
25
25
  return GaugeChartModel;
26
26
  }(ChartModel));
@@ -1 +1 @@
1
- {"version":3,"file":"model-gauge.js","sourceRoot":"","sources":["model-gauge.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,kCAAkC;AAClC;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,uCAAa,GAAb;QACC,OAAO,iBAAM,aAAa,WAAE,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC,CAAC;IACtE,CAAC;IACF,sBAAC;AAAD,CAAC,AARD,CAAqC,UAAU,GAQ9C","sourcesContent":["// Internal Imports\nimport { ChartModel } from \"./model\";\n\n/** The gauge chart model layer */\nexport class GaugeChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetDataGroups() {\n\t\treturn super.getDataGroups().filter((item) => item.name !== \"delta\");\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-gauge.js","sourceRoot":"","sources":["model-gauge.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,kCAAkC;AAClC;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,uCAAa,GAAb;QACC,OAAO,iBAAM,aAAa,WAAE,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC,CAAC;IACtE,CAAC;IACF,sBAAC;AAAD,CAAC,AARD,CAAqC,UAAU,GAQ9C","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\n\n/** The gauge chart model layer */\nexport class GaugeChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetDataGroups() {\n\t\treturn super.getDataGroups().filter((item) => item.name !== 'delta');\n\t}\n}\n"]}
package/model-meter.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ChartModel } from "./model";
1
+ import { ChartModel } from './model';
2
2
  /** The meter chart model layer which extends some of the data setting options.
3
3
  * Meter only uses 1 dataset
4
4
  * */
package/model-meter.js CHANGED
@@ -12,9 +12,9 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  // Internal Imports
15
- import * as Configuration from "./configuration";
16
- import { ChartModel } from "./model";
17
- import { Tools } from "./tools";
15
+ import * as Configuration from './configuration';
16
+ import { ChartModel } from './model';
17
+ import { Tools } from './tools';
18
18
  /** The meter chart model layer which extends some of the data setting options.
19
19
  * Meter only uses 1 dataset
20
20
  * */
@@ -29,11 +29,11 @@ var MeterChartModel = /** @class */ (function (_super) {
29
29
  return dataLabels;
30
30
  };
31
31
  MeterChartModel.prototype.getDisplayData = function () {
32
- if (!this.get("data")) {
32
+ if (!this.get('data')) {
33
33
  return null;
34
34
  }
35
35
  // meter only uses displays one data group and value
36
- return this.get("data")[0];
36
+ return this.get('data')[0];
37
37
  };
38
38
  /**
39
39
  * Use a provided color for the bar or default to carbon color if no status provided.
@@ -42,7 +42,7 @@ var MeterChartModel = /** @class */ (function (_super) {
42
42
  */
43
43
  MeterChartModel.prototype.getFillColor = function (group) {
44
44
  var options = this.getOptions();
45
- var userProvidedScale = Tools.getProperty(options, "color", "scale");
45
+ var userProvidedScale = Tools.getProperty(options, 'color', 'scale');
46
46
  var status = this.getStatus();
47
47
  // user provided a fill color or there isn't a status we can use the colorScale
48
48
  if (userProvidedScale || !status) {
@@ -61,7 +61,7 @@ var MeterChartModel = /** @class */ (function (_super) {
61
61
  // use max value if the percentage is bigger than 100%
62
62
  var boundedValue = dataValue > 100 ? 100 : dataValue;
63
63
  // user needs to supply ranges
64
- var allRanges = Tools.getProperty(options, "meter", "status", "ranges");
64
+ var allRanges = Tools.getProperty(options, 'meter', 'status', 'ranges');
65
65
  if (allRanges) {
66
66
  var result = allRanges.filter(function (step) {
67
67
  return step.range[0] <= boundedValue &&
@@ -1 +1 @@
1
- {"version":3,"file":"model-meter.js","sourceRoot":"","sources":["model-meter.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;MAEM;AAEN;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,4CAAkB,GAAlB,UAAmB,OAAO;QACzB,IAAM,UAAU,GAAG,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAErE,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,wCAAc,GAAd;QACC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC;SACZ;QACD,oDAAoD;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,sCAAY,GAAZ,UAAa,KAAa;QACzB,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvE,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,+EAA+E;QAC/E,IAAI,iBAAiB,IAAI,CAAC,MAAM,EAAE;YACjC,OAAO,iBAAM,YAAY,YAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACN,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;IAED;;OAEG;IACH,mCAAS,GAAT;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;QAE9C,sDAAsD;QACtD,IAAM,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvD,8BAA8B;QAC9B,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAClC,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,CACR,CAAC;QAEF,IAAI,SAAS,EAAE;YACd,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAC9B,UAAC,IAAI;gBACJ,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY;oBAC7B,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAD7B,CAC6B,CAC9B,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACxB;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IACF,sBAAC;AAAD,CAAC,AApED,CAAqC,UAAU,GAoE9C","sourcesContent":["// Internal Imports\nimport * as Configuration from \"./configuration\";\nimport { ChartModel } from \"./model\";\nimport { Tools } from \"./tools\";\n\n/** The meter chart model layer which extends some of the data setting options.\n * Meter only uses 1 dataset\n * */\n\nexport class MeterChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgenerateDataLabels(newData) {\n\t\tconst dataLabels = {};\n\t\tdataLabels[newData.label] = Configuration.legend.items.status.ACTIVE;\n\n\t\treturn dataLabels;\n\t}\n\n\tgetDisplayData() {\n\t\tif (!this.get(\"data\")) {\n\t\t\treturn null;\n\t\t}\n\t\t// meter only uses displays one data group and value\n\t\treturn this.get(\"data\")[0];\n\t}\n\n\t/**\n\t * Use a provided color for the bar or default to carbon color if no status provided.\n\t * Defaults to carbon color otherwise.\n\t * @param group dataset group label\n\t */\n\tgetFillColor(group: string) {\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, \"color\", \"scale\");\n\t\tconst status = this.getStatus();\n\t\t// user provided a fill color or there isn't a status we can use the colorScale\n\t\tif (userProvidedScale || !status) {\n\t\t\treturn super.getFillColor(group);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the associated status for the data by checking the ranges\n\t */\n\tgetStatus() {\n\t\tconst options = this.getOptions();\n\t\tconst dataValue = this.getDisplayData().value;\n\n\t\t// use max value if the percentage is bigger than 100%\n\t\tconst boundedValue = dataValue > 100 ? 100 : dataValue;\n\n\t\t// user needs to supply ranges\n\t\tconst allRanges = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"meter\",\n\t\t\t\"status\",\n\t\t\t\"ranges\"\n\t\t);\n\n\t\tif (allRanges) {\n\t\t\tconst result = allRanges.filter(\n\t\t\t\t(step) =>\n\t\t\t\t\tstep.range[0] <= boundedValue &&\n\t\t\t\t\tboundedValue <= step.range[1]\n\t\t\t);\n\t\t\tif (result.length > 0) {\n\t\t\t\treturn result[0].status;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-meter.js","sourceRoot":"","sources":["model-meter.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;MAEM;AAEN;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,4CAAkB,GAAlB,UAAmB,OAAO;QACzB,IAAM,UAAU,GAAG,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAErE,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,wCAAc,GAAd;QACC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC;SACZ;QACD,oDAAoD;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,sCAAY,GAAZ,UAAa,KAAa;QACzB,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvE,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,+EAA+E;QAC/E,IAAI,iBAAiB,IAAI,CAAC,MAAM,EAAE;YACjC,OAAO,iBAAM,YAAY,YAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACN,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;IAED;;OAEG;IACH,mCAAS,GAAT;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;QAE9C,sDAAsD;QACtD,IAAM,YAAY,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvD,8BAA8B;QAC9B,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAClC,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,CACR,CAAC;QAEF,IAAI,SAAS,EAAE;YACd,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAC9B,UAAC,IAAI;gBACJ,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY;oBAC7B,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAD7B,CAC6B,CAC9B,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACxB;SACD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IACF,sBAAC;AAAD,CAAC,AApED,CAAqC,UAAU,GAoE9C","sourcesContent":["// Internal Imports\nimport * as Configuration from './configuration';\nimport { ChartModel } from './model';\nimport { Tools } from './tools';\n\n/** The meter chart model layer which extends some of the data setting options.\n * Meter only uses 1 dataset\n * */\n\nexport class MeterChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgenerateDataLabels(newData) {\n\t\tconst dataLabels = {};\n\t\tdataLabels[newData.label] = Configuration.legend.items.status.ACTIVE;\n\n\t\treturn dataLabels;\n\t}\n\n\tgetDisplayData() {\n\t\tif (!this.get('data')) {\n\t\t\treturn null;\n\t\t}\n\t\t// meter only uses displays one data group and value\n\t\treturn this.get('data')[0];\n\t}\n\n\t/**\n\t * Use a provided color for the bar or default to carbon color if no status provided.\n\t * Defaults to carbon color otherwise.\n\t * @param group dataset group label\n\t */\n\tgetFillColor(group: string) {\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, 'color', 'scale');\n\t\tconst status = this.getStatus();\n\t\t// user provided a fill color or there isn't a status we can use the colorScale\n\t\tif (userProvidedScale || !status) {\n\t\t\treturn super.getFillColor(group);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the associated status for the data by checking the ranges\n\t */\n\tgetStatus() {\n\t\tconst options = this.getOptions();\n\t\tconst dataValue = this.getDisplayData().value;\n\n\t\t// use max value if the percentage is bigger than 100%\n\t\tconst boundedValue = dataValue > 100 ? 100 : dataValue;\n\n\t\t// user needs to supply ranges\n\t\tconst allRanges = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'status',\n\t\t\t'ranges'\n\t\t);\n\n\t\tif (allRanges) {\n\t\t\tconst result = allRanges.filter(\n\t\t\t\t(step) =>\n\t\t\t\t\tstep.range[0] <= boundedValue &&\n\t\t\t\t\tboundedValue <= step.range[1]\n\t\t\t);\n\t\t\tif (result.length > 0) {\n\t\t\t\treturn result[0].status;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}\n"]}
package/model-pie.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ChartModel } from "./model";
1
+ import { ChartModel } from './model';
2
2
  /** The charting model layer which includes mainly the chart data and options,
3
3
  * as well as some misc. information to be shared among components */
4
4
  export declare class PieChartModel extends ChartModel {
package/model-pie.js CHANGED
@@ -12,7 +12,7 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  // Internal Imports
15
- import { ChartModel } from "./model";
15
+ import { ChartModel } from './model';
16
16
  /** The charting model layer which includes mainly the chart data and options,
17
17
  * as well as some misc. information to be shared among components */
18
18
  var PieChartModel = /** @class */ (function (_super) {
package/model-pie.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model-pie.js","sourceRoot":"","sources":["model-pie.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;qEACqE;AACrE;IAAmC,iCAAU;IAC5C,uBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,sCAAc,GAAd,UAAe,IAAI;QAClB,IAAM,WAAW,GAAG,iBAAM,cAAc,YAAC,IAAI,CAAC,CAAC;QAE/C,4CAA4C;QAC5C,wFAAwF;QACxF,IAAI,IAAI,KAAK,WAAW,EAAE;YACzB,uEAAuE;YACvE,WAAW,CAAC,OAAO,CAAC,UAAC,CAAC;gBACrB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE;oBAC/B,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;iBAChB;YACF,CAAC,CAAC,CAAC;SACH;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAI;QACZ,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,OAAO,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;IACtD,CAAC;IACF,oBAAC;AAAD,CAAC,AA5BD,CAAmC,UAAU,GA4B5C","sourcesContent":["// Internal Imports\nimport { ChartModel } from \"./model\";\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class PieChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetTabularData(data) {\n\t\tconst tabularData = super.getTabularData(data);\n\n\t\t// if the data was changed to tabular format\n\t\t// update the group to the key so the slices render with the correct tooltips and colors\n\t\tif (data !== tabularData) {\n\t\t\t// If a label was set for the overall dataset, reassign it to key value\n\t\t\ttabularData.forEach((d) => {\n\t\t\t\tif (d.key && d.key !== d.group) {\n\t\t\t\t\td.group = d.key;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn tabularData;\n\t}\n\n\tsanitize(data) {\n\t\tconst tabularData = this.getTabularData(data);\n\n\t\t// Sort data based on value\n\t\treturn tabularData.sort((a, b) => b.value - a.value);\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-pie.js","sourceRoot":"","sources":["model-pie.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;qEACqE;AACrE;IAAmC,iCAAU;IAC5C,uBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,sCAAc,GAAd,UAAe,IAAI;QAClB,IAAM,WAAW,GAAG,iBAAM,cAAc,YAAC,IAAI,CAAC,CAAC;QAE/C,4CAA4C;QAC5C,wFAAwF;QACxF,IAAI,IAAI,KAAK,WAAW,EAAE;YACzB,uEAAuE;YACvE,WAAW,CAAC,OAAO,CAAC,UAAC,CAAC;gBACrB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE;oBAC/B,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;iBAChB;YACF,CAAC,CAAC,CAAC;SACH;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAI;QACZ,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,OAAO,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;IACtD,CAAC;IACF,oBAAC;AAAD,CAAC,AA5BD,CAAmC,UAAU,GA4B5C","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class PieChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetTabularData(data) {\n\t\tconst tabularData = super.getTabularData(data);\n\n\t\t// if the data was changed to tabular format\n\t\t// update the group to the key so the slices render with the correct tooltips and colors\n\t\tif (data !== tabularData) {\n\t\t\t// If a label was set for the overall dataset, reassign it to key value\n\t\t\ttabularData.forEach((d) => {\n\t\t\t\tif (d.key && d.key !== d.group) {\n\t\t\t\t\td.group = d.key;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn tabularData;\n\t}\n\n\tsanitize(data) {\n\t\tconst tabularData = this.getTabularData(data);\n\n\t\t// Sort data based on value\n\t\treturn tabularData.sort((a, b) => b.value - a.value);\n\t}\n}\n"]}
package/model.d.ts CHANGED
@@ -1,12 +1,7 @@
1
- import { ColorClassNameTypes } from "./interfaces";
1
+ import { ColorClassNameTypes } from './interfaces';
2
2
  /** The charting model layer which includes mainly the chart data and options,
3
3
  * as well as some misc. information to be shared among components */
4
4
  export declare class ChartModel {
5
- /**
6
- * Function to be called when data or options update within the model
7
- * @type Function
8
- */
9
- protected updateCallback: Function;
10
5
  protected services: any;
11
6
  protected state: any;
12
7
  /**
@@ -23,8 +18,6 @@ export declare class ChartModel {
23
18
  * @param groups the included datasets for the particular chart
24
19
  */
25
20
  getDisplayData(groups?: any): any;
26
- setStackedGroups(groups: any): void;
27
- getStackedGroups(): any;
28
21
  getData(): any;
29
22
  isDataEmpty(): boolean;
30
23
  /**
@@ -62,7 +55,6 @@ export declare class ChartModel {
62
55
  * such as the color scales, or the legend data labels
63
56
  */
64
57
  update(animate?: boolean): void;
65
- setUpdateCallback(cb: Function): void;
66
58
  toggleDataLabel(changedLabel: string): void;
67
59
  /**
68
60
  * Should the data point be filled?
package/model.js CHANGED
@@ -10,20 +10,20 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  // Internal Imports
13
- import * as Configuration from "./configuration";
14
- import { Tools } from "./tools";
15
- import { Events, ScaleTypes } from "./interfaces";
13
+ import * as Configuration from './configuration';
14
+ import { Tools } from './tools';
15
+ import { Events, ScaleTypes } from './interfaces';
16
16
  // D3
17
- import { map } from "d3-collection";
18
- import { scaleOrdinal } from "d3-scale";
19
- import { stack } from "d3-shape";
17
+ import { map } from 'd3-collection';
18
+ import { scaleOrdinal } from 'd3-scale';
19
+ import { stack } from 'd3-shape';
20
20
  /** The charting model layer which includes mainly the chart data and options,
21
21
  * as well as some misc. information to be shared among components */
22
22
  var ChartModel = /** @class */ (function () {
23
23
  function ChartModel(services) {
24
24
  // Internal Model state
25
25
  this.state = {
26
- options: {}
26
+ options: {},
27
27
  };
28
28
  // Fill scales & fill related objects
29
29
  this.colorScale = {};
@@ -38,8 +38,8 @@ var ChartModel = /** @class */ (function () {
38
38
  // Remove datasets that have been disabled
39
39
  var allData = this.getData();
40
40
  var dataGroups = this.getDataGroups();
41
- var groupMapsTo = Tools.getProperty(options, "data").groupMapsTo;
42
- var axesOptions = Tools.getProperty(options, "axes");
41
+ var groupMapsTo = Tools.getProperty(options, 'data').groupMapsTo;
42
+ var axesOptions = Tools.getProperty(options, 'axes');
43
43
  // filter out the groups that are irrelevant to the component
44
44
  if (groups) {
45
45
  allData = allData.filter(function (item) {
@@ -84,7 +84,7 @@ var ChartModel = /** @class */ (function () {
84
84
  * @param groups the included datasets for the particular chart
85
85
  */
86
86
  ChartModel.prototype.getDisplayData = function (groups) {
87
- if (!this.get("data")) {
87
+ if (!this.get('data')) {
88
88
  return null;
89
89
  }
90
90
  var ACTIVE = Configuration.legend.items.status.ACTIVE;
@@ -98,16 +98,8 @@ var ChartModel = /** @class */ (function () {
98
98
  });
99
99
  });
100
100
  };
101
- ChartModel.prototype.setStackedGroups = function (groups) {
102
- this.set({
103
- stackedGroups: groups
104
- });
105
- };
106
- ChartModel.prototype.getStackedGroups = function () {
107
- return this.get("stackedGroups");
108
- };
109
101
  ChartModel.prototype.getData = function () {
110
- return this.get("data");
102
+ return this.get('data');
111
103
  };
112
104
  ChartModel.prototype.isDataEmpty = function () {
113
105
  return !this.getData().length;
@@ -121,23 +113,23 @@ var ChartModel = /** @class */ (function () {
121
113
  var dataGroups = this.generateDataGroups(sanitizedData);
122
114
  this.set({
123
115
  data: sanitizedData,
124
- dataGroups: dataGroups
116
+ dataGroups: dataGroups,
125
117
  });
126
118
  return sanitizedData;
127
119
  };
128
120
  ChartModel.prototype.getDataGroups = function (groups) {
129
- var isDataLoading = Tools.getProperty(this.getOptions(), "data", "loading");
121
+ var isDataLoading = Tools.getProperty(this.getOptions(), 'data', 'loading');
130
122
  // No data should be displayed while data is still loading
131
123
  if (isDataLoading) {
132
124
  return [];
133
125
  }
134
126
  // if its a combo chart, the specific chart will pass the model the groups it needs
135
127
  if (groups) {
136
- return this.get("dataGroups").filter(function (dataGroup) {
128
+ return this.get('dataGroups').filter(function (dataGroup) {
137
129
  return groups.includes(dataGroup.name);
138
130
  });
139
131
  }
140
- return this.get("dataGroups");
132
+ return this.get('dataGroups');
141
133
  };
142
134
  ChartModel.prototype.getActiveDataGroups = function (groups) {
143
135
  var ACTIVE = Configuration.legend.items.status.ACTIVE;
@@ -167,7 +159,7 @@ var ChartModel = /** @class */ (function () {
167
159
  });
168
160
  return Object.keys(groupedData).map(function (groupName) { return ({
169
161
  name: groupName,
170
- data: groupedData[groupName]
162
+ data: groupedData[groupName],
171
163
  }); });
172
164
  };
173
165
  ChartModel.prototype.getDataValuesGroupedByKeys = function (groups) {
@@ -276,7 +268,7 @@ var ChartModel = /** @class */ (function () {
276
268
  */
277
269
  ChartModel.prototype.setOptions = function (newOptions) {
278
270
  this.set({
279
- options: Tools.merge(this.getOptions(), newOptions)
271
+ options: Tools.merge(this.getOptions(), newOptions),
280
272
  });
281
273
  };
282
274
  /**
@@ -294,9 +286,6 @@ var ChartModel = /** @class */ (function () {
294
286
  this.setColorClassNames();
295
287
  this.services.events.dispatchEvent(Events.Model.UPDATE, { animate: animate });
296
288
  };
297
- ChartModel.prototype.setUpdateCallback = function (cb) {
298
- this.updateCallback = cb;
299
- };
300
289
  /*
301
290
  * Data labels
302
291
  */
@@ -345,11 +334,11 @@ var ChartModel = /** @class */ (function () {
345
334
  }
346
335
  // dispatch legend filtering event with the status of all the dataLabels
347
336
  this.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {
348
- dataGroups: dataGroups
337
+ dataGroups: dataGroups,
349
338
  });
350
339
  // Update model
351
340
  this.set({
352
- dataGroups: dataGroups
341
+ dataGroups: dataGroups,
353
342
  });
354
343
  };
355
344
  /**
@@ -389,7 +378,7 @@ var ChartModel = /** @class */ (function () {
389
378
  }
390
379
  };
391
380
  ChartModel.prototype.isUserProvidedColorScaleValid = function () {
392
- var userProvidedScale = Tools.getProperty(this.getOptions(), "color", "scale");
381
+ var userProvidedScale = Tools.getProperty(this.getOptions(), 'color', 'scale');
393
382
  var dataGroups = this.getDataGroups();
394
383
  if (userProvidedScale == null ||
395
384
  Object.keys(userProvidedScale).length == 0) {
@@ -431,14 +420,14 @@ var ChartModel = /** @class */ (function () {
431
420
  // Update each data point to the new format
432
421
  dataset.data.forEach(function (datum, i) {
433
422
  var group;
434
- var datasetLabel = Tools.getProperty(dataset, "label");
423
+ var datasetLabel = Tools.getProperty(dataset, 'label');
435
424
  if (datasetLabel === null) {
436
425
  var correspondingLabel = Tools.getProperty(labels, i);
437
426
  if (correspondingLabel) {
438
427
  group = correspondingLabel;
439
428
  }
440
429
  else {
441
- group = "Ungrouped";
430
+ group = 'Ungrouped';
442
431
  }
443
432
  }
444
433
  else {
@@ -446,14 +435,14 @@ var ChartModel = /** @class */ (function () {
446
435
  }
447
436
  var updatedDatum = {
448
437
  group: group,
449
- key: labels[i]
438
+ key: labels[i],
450
439
  };
451
440
  if (isNaN(datum)) {
452
- updatedDatum["value"] = datum.value;
453
- updatedDatum["date"] = datum.date;
441
+ updatedDatum['value'] = datum.value;
442
+ updatedDatum['date'] = datum.date;
454
443
  }
455
444
  else {
456
- updatedDatum["value"] = datum;
445
+ updatedDatum['value'] = datum;
457
446
  }
458
447
  tabularData.push(updatedDatum);
459
448
  });
@@ -517,7 +506,7 @@ var ChartModel = /** @class */ (function () {
517
506
  };
518
507
  return uniqueDataGroups.map(function (groupName) { return ({
519
508
  name: groupName,
520
- status: getStatus(groupName)
509
+ status: getStatus(groupName),
521
510
  }); });
522
511
  };
523
512
  /*
@@ -529,7 +518,7 @@ var ChartModel = /** @class */ (function () {
529
518
  return;
530
519
  }
531
520
  var options = this.getOptions();
532
- var userProvidedScale = Tools.getProperty(options, "color", "scale");
521
+ var userProvidedScale = Tools.getProperty(options, 'color', 'scale');
533
522
  Object.keys(userProvidedScale).forEach(function (dataGroup) {
534
523
  if (!_this.allDataGroups.includes(dataGroup)) {
535
524
  console.warn("\"" + dataGroup + "\" does not exist in data groups.");
@@ -548,13 +537,13 @@ var ChartModel = /** @class */ (function () {
548
537
  * Color palette
549
538
  */
550
539
  ChartModel.prototype.setColorClassNames = function () {
551
- var colorPairingOptions = Tools.getProperty(this.getOptions(), "color", "pairing");
540
+ var colorPairingOptions = Tools.getProperty(this.getOptions(), 'color', 'pairing');
552
541
  // Check if user has defined numberOfVariants (differ from given data)
553
- var numberOfVariants = Tools.getProperty(colorPairingOptions, "numberOfVariants");
542
+ var numberOfVariants = Tools.getProperty(colorPairingOptions, 'numberOfVariants');
554
543
  if (!numberOfVariants || numberOfVariants < this.allDataGroups.length) {
555
544
  numberOfVariants = this.allDataGroups.length;
556
545
  }
557
- var pairingOption = Tools.getProperty(colorPairingOptions, "option");
546
+ var pairingOption = Tools.getProperty(colorPairingOptions, 'option');
558
547
  var colorPairingCounts = Configuration.color.pairingOptions;
559
548
  // If number of dataGroups is greater than 5, user 14-color palette
560
549
  var numberOfColors = numberOfVariants > 5 ? 14 : numberOfVariants;
package/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["model.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from \"./configuration\";\nimport { Tools } from \"./tools\";\nimport { Events, ScaleTypes, ColorClassNameTypes } from \"./interfaces\";\n\n// D3\nimport { map } from \"d3-collection\";\nimport { scaleOrdinal } from \"d3-scale\";\nimport { stack } from \"d3-shape\";\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class ChartModel {\n\t// Callbacks\n\t/**\n\t * Function to be called when data or options update within the model\n\t * @type Function\n\t */\n\tprotected updateCallback: Function;\n\tprotected services: any;\n\n\t// Internal Model state\n\tprotected state: any = {\n\t\toptions: {}\n\t};\n\n\t// Data labels\n\t/**\n\t * A list of all the data groups that have existed within the lifetime of the chart\n\t * @type string[]\n\t */\n\tprotected allDataGroups: string[];\n\n\t// Fill scales & fill related objects\n\tprotected colorScale: any = {};\n\n\tprotected colorClassNames: any = {};\n\n\tconstructor(services: any) {\n\t\tthis.services = services;\n\t}\n\n\tgetAllDataFromDomain(groups?) {\n\t\tif (!this.getData()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this.getOptions();\n\t\t// Remove datasets that have been disabled\n\t\tlet allData = this.getData();\n\t\tconst dataGroups = this.getDataGroups();\n\t\tconst { groupMapsTo } = Tools.getProperty(options, \"data\");\n\t\tconst axesOptions = Tools.getProperty(options, \"axes\");\n\n\t\t// filter out the groups that are irrelevant to the component\n\t\tif (groups) {\n\t\t\tallData = allData.filter((item) => {\n\t\t\t\treturn groups.includes(item.group);\n\t\t\t});\n\t\t}\n\n\t\tif (axesOptions) {\n\t\t\tObject.keys(axesOptions).forEach((axis) => {\n\t\t\t\tconst mapsTo = axesOptions[axis].mapsTo;\n\t\t\t\tconst scaleType = axesOptions[axis].scaleType;\n\t\t\t\t// make sure linear/log values are numbers\n\t\t\t\tif (\n\t\t\t\t\tscaleType === ScaleTypes.LINEAR ||\n\t\t\t\t\tscaleType === ScaleTypes.LOG\n\t\t\t\t) {\n\t\t\t\t\tallData = allData.map((datum) => {\n\t\t\t\t\t\treturn { ...datum, [mapsTo]: Number(datum[mapsTo]) };\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Check for custom domain\n\t\t\t\tif (mapsTo && axesOptions[axis].domain) {\n\t\t\t\t\tif (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\t\tallData = allData.filter((datum) =>\n\t\t\t\t\t\t\taxesOptions[axis].domain.includes(datum[mapsTo])\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [start, end] = axesOptions[axis].domain;\n\n\t\t\t\t\t\t// Filter out data outside domain\n\t\t\t\t\t\tallData = allData.filter(\n\t\t\t\t\t\t\t(datum) =>\n\t\t\t\t\t\t\t\tdatum[mapsTo] >= start && datum[mapsTo] <= end\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn allData.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(group) => group.name === datum[groupMapsTo]\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Charts that have group configs passed into them, only want to retrieve the display data relevant to that chart\n\t * @param groups the included datasets for the particular chart\n\t */\n\tgetDisplayData(groups?) {\n\t\tif (!this.get(\"data\")) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst allDataFromDomain = this.getAllDataFromDomain(groups);\n\n\t\treturn allDataFromDomain.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(dataGroup) =>\n\t\t\t\t\tdataGroup.name === datum[groupMapsTo] &&\n\t\t\t\t\tdataGroup.status === ACTIVE\n\t\t\t);\n\t\t});\n\t}\n\n\tsetStackedGroups(groups) {\n\t\tthis.set({\n\t\t\tstackedGroups: groups\n\t\t});\n\t}\n\n\tgetStackedGroups() {\n\t\treturn this.get(\"stackedGroups\");\n\t}\n\n\tgetData() {\n\t\treturn this.get(\"data\");\n\t}\n\n\tisDataEmpty() {\n\t\treturn !this.getData().length;\n\t}\n\n\t/**\n\t *\n\t * @param newData The new raw data to be set\n\t */\n\tsetData(newData) {\n\t\tconst sanitizedData = this.sanitize(Tools.clone(newData));\n\t\tconst dataGroups = this.generateDataGroups(sanitizedData);\n\n\t\tthis.set({\n\t\t\tdata: sanitizedData,\n\t\t\tdataGroups\n\t\t});\n\n\t\treturn sanitizedData;\n\t}\n\n\tgetDataGroups(groups?) {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t\"data\",\n\t\t\t\"loading\"\n\t\t);\n\n\t\t// No data should be displayed while data is still loading\n\t\tif (isDataLoading) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// if its a combo chart, the specific chart will pass the model the groups it needs\n\t\tif (groups) {\n\t\t\treturn this.get(\"dataGroups\").filter((dataGroup) =>\n\t\t\t\tgroups.includes(dataGroup.name)\n\t\t\t);\n\t\t}\n\t\treturn this.get(\"dataGroups\");\n\t}\n\n\tgetActiveDataGroups(groups?) {\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\n\t\treturn this.getDataGroups(groups).filter(\n\t\t\t(dataGroup) => dataGroup.status === ACTIVE\n\t\t);\n\t}\n\n\tgetDataGroupNames(groups?) {\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\treturn dataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetActiveDataGroupNames(groups?) {\n\t\tconst activeDataGroups = this.getActiveDataGroups(groups);\n\t\treturn activeDataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetGroupedData(groups?) {\n\t\tconst displayData = this.getDisplayData(groups);\n\t\tconst groupedData = {};\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tdisplayData.map((datum) => {\n\t\t\tconst group = datum[groupMapsTo];\n\t\t\tif (\n\t\t\t\tgroupedData[group] !== null &&\n\t\t\t\tgroupedData[group] !== undefined\n\t\t\t) {\n\t\t\t\tgroupedData[group].push(datum);\n\t\t\t} else {\n\t\t\t\tgroupedData[group] = [datum];\n\t\t\t}\n\t\t});\n\n\t\treturn Object.keys(groupedData).map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tdata: groupedData[groupName]\n\t\t}));\n\t}\n\n\tgetDataValuesGroupedByKeys(groups?) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tconst stackKeys = map(displayData, (datum) => {\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\tdatum\n\t\t\t);\n\t\t\treturn datum[domainIdentifier];\n\t\t}).keys();\n\n\t\tconst axisPosition = this.services.cartesianScales.domainAxisPosition;\n\t\tconst scaleType = options.axes[axisPosition].scaleType;\n\n\t\t// Sort keys\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tstackKeys.sort((a: any, b: any) => {\n\t\t\t\tconst dateA: any = new Date(a);\n\t\t\t\tconst dateB: any = new Date(b);\n\t\t\t\treturn dateA - dateB;\n\t\t\t});\n\t\t} else if (\n\t\t\tscaleType === ScaleTypes.LOG ||\n\t\t\tscaleType === ScaleTypes.LINEAR\n\t\t) {\n\t\t\tstackKeys.sort((a: any, b: any) => a - b);\n\t\t}\n\n\t\tconst dataGroupNames = this.getDataGroupNames();\n\n\t\treturn stackKeys.map((key) => {\n\t\t\tconst correspondingValues = { sharedStackKey: key };\n\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\tconst correspondingDatum = displayData.find((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tdatum[groupMapsTo] === dataGroupName &&\n\t\t\t\t\t\tdatum[domainIdentifier].toString() === key\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\tcorrespondingValues\n\t\t\t\t);\n\t\t\t\tcorrespondingValues[dataGroupName] = correspondingDatum\n\t\t\t\t\t? correspondingDatum[rangeIdentifier]\n\t\t\t\t\t: null;\n\t\t\t});\n\t\t\treturn correspondingValues;\n\t\t}) as any;\n\t}\n\n\tgetStackedData({ percentage = false, groups = null }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.getDataGroupNames(groups);\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys(groups);\n\n\t\tif (percentage) {\n\t\t\tconst maxByKey = Tools.fromPairs(\n\t\t\t\tdataValuesGroupedByKeys.map((d: any) => [d.sharedStackKey, 0])\n\t\t\t);\n\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tmaxByKey[d.sharedStackKey] += d[name];\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// cycle through data values to get percentage\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tif (maxByKey[d.sharedStackKey]) {\n\t\t\t\t\t\td[name] = (d[name] / maxByKey[d.sharedStackKey]) * 100;\n\t\t\t\t\t} else {\n\t\t\t\t\t\td[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn stack()\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * @return {Object} The chart's options\n\t */\n\tgetOptions() {\n\t\treturn this.state.options;\n\t}\n\n\tset(newState: any, configs?: any) {\n\t\tthis.state = Object.assign({}, this.state, newState);\n\t\tconst newConfig = Object.assign(\n\t\t\t{ skipUpdate: false, animate: true }, // default configs\n\t\t\tconfigs\n\t\t);\n\t\tif (!newConfig.skipUpdate) {\n\t\t\tthis.update(newConfig.animate);\n\t\t}\n\t}\n\n\tget(property?: string) {\n\t\tif (property) {\n\t\t\treturn this.state[property];\n\t\t} else {\n\t\t\treturn this.state;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param newOptions New options to be set\n\t */\n\tsetOptions(newOptions) {\n\t\tthis.set({\n\t\t\toptions: Tools.merge(this.getOptions(), newOptions)\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * Updates miscellanous information within the model\n\t * such as the color scales, or the legend data labels\n\t */\n\tupdate(animate = true) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateAllDataGroups();\n\n\t\tthis.setCustomColorScale();\n\t\tthis.setColorClassNames();\n\t\tthis.services.events.dispatchEvent(Events.Model.UPDATE, { animate });\n\t}\n\n\tsetUpdateCallback(cb: Function) {\n\t\tthis.updateCallback = cb;\n\t}\n\n\t/*\n\t * Data labels\n\t */\n\ttoggleDataLabel(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\t\tconst activeItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\n\t\t// If there are deactivated items, toggle \"changedLabel\"\n\t\tif (hasDeactivatedItems) {\n\t\t\t// If the only active item is being toggled\n\t\t\t// Activate all items\n\t\t\tif (\n\t\t\t\tactiveItems.length === 1 &&\n\t\t\t\tactiveItems[0].name === changedLabel\n\t\t\t) {\n\t\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\t\tdataGroups[i].status = ACTIVE;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst indexToChange = dataGroups.findIndex(\n\t\t\t\t\t(group) => group.name === changedLabel\n\t\t\t\t);\n\t\t\t\tdataGroups[indexToChange].status =\n\t\t\t\t\tdataGroups[indexToChange].status === DISABLED\n\t\t\t\t\t\t? ACTIVE\n\t\t\t\t\t\t: DISABLED;\n\t\t\t}\n\t\t} else {\n\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\tdataGroups[i].status =\n\t\t\t\t\tgroup.name === changedLabel ? ACTIVE : DISABLED;\n\t\t\t});\n\t\t}\n\n\t\t// Updates selected groups\n\t\tconst updatedActiveItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\t\tconst options = this.getOptions();\n\n\t\tconst hasUpdatedDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\n\t\t// If there are deactivated items, map the item name into selected groups\n\t\tif (hasUpdatedDeactivatedItems) {\n\t\t\toptions.data.selectedGroups = updatedActiveItems.map(\n\t\t\t\t(activeItem) => activeItem.name\n\t\t\t);\n\t\t} else {\n\t\t\t// If every item is active, clear array\n\t\t\toptions.data.selectedGroups = [];\n\t\t}\n\n\t\t// dispatch legend filtering event with the status of all the dataLabels\n\t\tthis.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {\n\t\t\tdataGroups\n\t\t});\n\n\t\t// Update model\n\t\tthis.set({\n\t\t\tdataGroups\n\t\t});\n\t}\n\n\t/**\n\t * Should the data point be filled?\n\t * @param group\n\t * @param key\n\t * @param value\n\t * @param defaultFilled the default for this chart\n\t */\n\tgetIsFilled(group: any, key?: any, data?: any, defaultFilled?: boolean) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getIsFilled) {\n\t\t\treturn options.getIsFilled(group, key, data, defaultFilled);\n\t\t} else {\n\t\t\treturn defaultFilled;\n\t\t}\n\t}\n\n\tgetFillColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultFillColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getFillColor) {\n\t\t\treturn options.getFillColor(group, key, data, defaultFillColor);\n\t\t} else {\n\t\t\treturn defaultFillColor;\n\t\t}\n\t}\n\n\tgetStrokeColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultStrokeColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getStrokeColor) {\n\t\t\treturn options.getStrokeColor(group, key, data, defaultStrokeColor);\n\t\t} else {\n\t\t\treturn defaultStrokeColor;\n\t\t}\n\t}\n\n\tisUserProvidedColorScaleValid() {\n\t\tconst userProvidedScale = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t\"color\",\n\t\t\t\"scale\"\n\t\t);\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tif (\n\t\t\tuserProvidedScale == null ||\n\t\t\tObject.keys(userProvidedScale).length == 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn dataGroups.some((dataGroup) =>\n\t\t\tObject.keys(userProvidedScale).includes(dataGroup.name)\n\t\t);\n\t}\n\n\tgetColorClassName(configs: {\n\t\tclassNameTypes: ColorClassNameTypes[];\n\t\tdataGroupName: string;\n\t\toriginalClassName?: string;\n\t}) {\n\t\tconst colorPairingTag = this.colorClassNames(configs.dataGroupName);\n\t\tlet className = configs.originalClassName;\n\t\tconfigs.classNameTypes.forEach(\n\t\t\t(type) =>\n\t\t\t\t(className = configs.originalClassName\n\t\t\t\t\t? `${className} ${type}-${colorPairingTag}`\n\t\t\t\t\t: `${type}-${colorPairingTag}`)\n\t\t);\n\n\t\treturn className;\n\t}\n\n\t/**\n\t * For charts that might hold an associated status for their dataset\n\t */\n\tgetStatus() {\n\t\treturn null;\n\t}\n\n\tgetAllDataGroupsNames() {\n\t\treturn this.allDataGroups;\n\t}\n\n\t/**\n\t * Converts data provided in the older format to tabular\n\t *\n\t */\n\tprotected transformToTabularData(data) {\n\t\tconsole.warn(\n\t\t\t\"We've updated the charting data format to be tabular by default. The current format you're using is deprecated and will be removed in v1.0, read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/tutorials--tabular-data-format\"\n\t\t);\n\t\tconst tabularData = [];\n\t\tconst { datasets, labels } = data;\n\n\t\t// Loop through all datasets\n\t\tdatasets.forEach((dataset) => {\n\t\t\t// Update each data point to the new format\n\t\t\tdataset.data.forEach((datum, i) => {\n\t\t\t\tlet group;\n\n\t\t\t\tconst datasetLabel = Tools.getProperty(dataset, \"label\");\n\t\t\t\tif (datasetLabel === null) {\n\t\t\t\t\tconst correspondingLabel = Tools.getProperty(labels, i);\n\t\t\t\t\tif (correspondingLabel) {\n\t\t\t\t\t\tgroup = correspondingLabel;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroup = \"Ungrouped\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgroup = datasetLabel;\n\t\t\t\t}\n\n\t\t\t\tconst updatedDatum = {\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey: labels[i]\n\t\t\t\t};\n\n\t\t\t\tif (isNaN(datum)) {\n\t\t\t\t\tupdatedDatum[\"value\"] = datum.value;\n\t\t\t\t\tupdatedDatum[\"date\"] = datum.date;\n\t\t\t\t} else {\n\t\t\t\t\tupdatedDatum[\"value\"] = datum;\n\t\t\t\t}\n\n\t\t\t\ttabularData.push(updatedDatum);\n\t\t\t});\n\t\t});\n\n\t\treturn tabularData;\n\t}\n\n\tprotected getTabularData(data) {\n\t\t// if data is not an array\n\t\tif (!Array.isArray(data)) {\n\t\t\treturn this.transformToTabularData(data);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = this.getTabularData(data);\n\n\t\treturn data;\n\t}\n\n\t/*\n\t * Data groups\n\t */\n\tprotected updateAllDataGroups() {\n\t\t// allDataGroups is used to generate a color scale that applies\n\t\t// to all the groups. Now when the data updates, you might remove a group,\n\t\t// and then bring it back in a newer data update, therefore\n\t\t// the order of the groups in allDataGroups matters so that you'd never\n\t\t// have an incorrect color assigned to a group.\n\n\t\t// Also, a new group should only be added to allDataGroups if\n\t\t// it doesn't currently exist\n\n\t\tif (!this.allDataGroups) {\n\t\t\tthis.allDataGroups = this.getDataGroupNames();\n\t\t} else {\n\t\t\t// Loop through current data groups\n\t\t\tthis.getDataGroupNames().forEach((dataGroupName) => {\n\t\t\t\t// If group name hasn't been stored yet, store it\n\t\t\t\tif (this.allDataGroups.indexOf(dataGroupName) === -1) {\n\t\t\t\t\tthis.allDataGroups.push(dataGroupName);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected generateDataGroups(data) {\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst options = this.getOptions();\n\n\t\tconst uniqueDataGroups = map(\n\t\t\tdata,\n\t\t\t(datum) => datum[groupMapsTo]\n\t\t).keys();\n\n\t\t// check if selectedGroups can be applied to chart with current data groups\n\t\tif (options.data.selectedGroups.length) {\n\t\t\tconst hasAllSelectedGroups = options.data.selectedGroups.every(\n\t\t\t\t(groupName) => uniqueDataGroups.includes(groupName)\n\t\t\t);\n\t\t\tif (!hasAllSelectedGroups) {\n\t\t\t\toptions.data.selectedGroups = [];\n\t\t\t}\n\t\t}\n\n\t\t// Get group status based on items in selected groups\n\t\tconst getStatus = (groupName) =>\n\t\t\t!options.data.selectedGroups.length ||\n\t\t\toptions.data.selectedGroups.includes(groupName)\n\t\t\t\t? ACTIVE\n\t\t\t\t: DISABLED;\n\n\t\treturn uniqueDataGroups.map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tstatus: getStatus(groupName)\n\t\t}));\n\t}\n\n\t/*\n\t * Fill scales\n\t */\n\tprotected setCustomColorScale() {\n\t\tif (!this.isUserProvidedColorScaleValid()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, \"color\", \"scale\");\n\n\t\tObject.keys(userProvidedScale).forEach((dataGroup) => {\n\t\t\tif (!this.allDataGroups.includes(dataGroup)) {\n\t\t\t\tconsole.warn(`\"${dataGroup}\" does not exist in data groups.`);\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Go through allDataGroups. If a data group has a color value provided\n\t\t * by the user, add that to the color range\n\t\t */\n\t\tconst providedDataGroups = this.allDataGroups.filter(\n\t\t\t(dataGroup) => userProvidedScale[dataGroup]\n\t\t);\n\n\t\tprovidedDataGroups.forEach(\n\t\t\t(dataGroup) =>\n\t\t\t\t(this.colorScale[dataGroup] = userProvidedScale[dataGroup])\n\t\t);\n\t}\n\n\t/*\n\t * Color palette\n\t */\n\tprotected setColorClassNames() {\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t\"color\",\n\t\t\t\"pairing\"\n\t\t);\n\n\t\t// Check if user has defined numberOfVariants (differ from given data)\n\t\tlet numberOfVariants = Tools.getProperty(\n\t\t\tcolorPairingOptions,\n\t\t\t\"numberOfVariants\"\n\t\t);\n\t\tif (!numberOfVariants || numberOfVariants < this.allDataGroups.length) {\n\t\t\tnumberOfVariants = this.allDataGroups.length;\n\t\t}\n\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, \"option\");\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// If number of dataGroups is greater than 5, user 14-color palette\n\t\tconst numberOfColors = numberOfVariants > 5 ? 14 : numberOfVariants;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) =>\n\t\t\t\t`${numberOfColors}-${pairingOption}-${(index % 14) + 1}`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["model.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from './configuration';\nimport { Tools } from './tools';\nimport { Events, ScaleTypes, ColorClassNameTypes } from './interfaces';\n\n// D3\nimport { map } from 'd3-collection';\nimport { scaleOrdinal } from 'd3-scale';\nimport { stack } from 'd3-shape';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class ChartModel {\n\tprotected services: any;\n\n\t// Internal Model state\n\tprotected state: any = {\n\t\toptions: {},\n\t};\n\n\t// Data labels\n\t/**\n\t * A list of all the data groups that have existed within the lifetime of the chart\n\t * @type string[]\n\t */\n\tprotected allDataGroups: string[];\n\n\t// Fill scales & fill related objects\n\tprotected colorScale: any = {};\n\n\tprotected colorClassNames: any = {};\n\n\tconstructor(services: any) {\n\t\tthis.services = services;\n\t}\n\n\tgetAllDataFromDomain(groups?) {\n\t\tif (!this.getData()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this.getOptions();\n\t\t// Remove datasets that have been disabled\n\t\tlet allData = this.getData();\n\t\tconst dataGroups = this.getDataGroups();\n\t\tconst { groupMapsTo } = Tools.getProperty(options, 'data');\n\t\tconst axesOptions = Tools.getProperty(options, 'axes');\n\n\t\t// filter out the groups that are irrelevant to the component\n\t\tif (groups) {\n\t\t\tallData = allData.filter((item) => {\n\t\t\t\treturn groups.includes(item.group);\n\t\t\t});\n\t\t}\n\n\t\tif (axesOptions) {\n\t\t\tObject.keys(axesOptions).forEach((axis) => {\n\t\t\t\tconst mapsTo = axesOptions[axis].mapsTo;\n\t\t\t\tconst scaleType = axesOptions[axis].scaleType;\n\t\t\t\t// make sure linear/log values are numbers\n\t\t\t\tif (\n\t\t\t\t\tscaleType === ScaleTypes.LINEAR ||\n\t\t\t\t\tscaleType === ScaleTypes.LOG\n\t\t\t\t) {\n\t\t\t\t\tallData = allData.map((datum) => {\n\t\t\t\t\t\treturn { ...datum, [mapsTo]: Number(datum[mapsTo]) };\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Check for custom domain\n\t\t\t\tif (mapsTo && axesOptions[axis].domain) {\n\t\t\t\t\tif (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\t\tallData = allData.filter((datum) =>\n\t\t\t\t\t\t\taxesOptions[axis].domain.includes(datum[mapsTo])\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [start, end] = axesOptions[axis].domain;\n\n\t\t\t\t\t\t// Filter out data outside domain\n\t\t\t\t\t\tallData = allData.filter(\n\t\t\t\t\t\t\t(datum) =>\n\t\t\t\t\t\t\t\tdatum[mapsTo] >= start && datum[mapsTo] <= end\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn allData.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(group) => group.name === datum[groupMapsTo]\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Charts that have group configs passed into them, only want to retrieve the display data relevant to that chart\n\t * @param groups the included datasets for the particular chart\n\t */\n\tgetDisplayData(groups?) {\n\t\tif (!this.get('data')) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst allDataFromDomain = this.getAllDataFromDomain(groups);\n\n\t\treturn allDataFromDomain.filter((datum) => {\n\t\t\treturn dataGroups.find(\n\t\t\t\t(dataGroup) =>\n\t\t\t\t\tdataGroup.name === datum[groupMapsTo] &&\n\t\t\t\t\tdataGroup.status === ACTIVE\n\t\t\t);\n\t\t});\n\t}\n\n\tgetData() {\n\t\treturn this.get('data');\n\t}\n\n\tisDataEmpty() {\n\t\treturn !this.getData().length;\n\t}\n\n\t/**\n\t *\n\t * @param newData The new raw data to be set\n\t */\n\tsetData(newData) {\n\t\tconst sanitizedData = this.sanitize(Tools.clone(newData));\n\t\tconst dataGroups = this.generateDataGroups(sanitizedData);\n\n\t\tthis.set({\n\t\t\tdata: sanitizedData,\n\t\t\tdataGroups,\n\t\t});\n\n\t\treturn sanitizedData;\n\t}\n\n\tgetDataGroups(groups?) {\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\t// No data should be displayed while data is still loading\n\t\tif (isDataLoading) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// if its a combo chart, the specific chart will pass the model the groups it needs\n\t\tif (groups) {\n\t\t\treturn this.get('dataGroups').filter((dataGroup) =>\n\t\t\t\tgroups.includes(dataGroup.name)\n\t\t\t);\n\t\t}\n\t\treturn this.get('dataGroups');\n\t}\n\n\tgetActiveDataGroups(groups?) {\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\n\t\treturn this.getDataGroups(groups).filter(\n\t\t\t(dataGroup) => dataGroup.status === ACTIVE\n\t\t);\n\t}\n\n\tgetDataGroupNames(groups?) {\n\t\tconst dataGroups = this.getDataGroups(groups);\n\t\treturn dataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetActiveDataGroupNames(groups?) {\n\t\tconst activeDataGroups = this.getActiveDataGroups(groups);\n\t\treturn activeDataGroups.map((dataGroup) => dataGroup.name);\n\t}\n\n\tgetGroupedData(groups?) {\n\t\tconst displayData = this.getDisplayData(groups);\n\t\tconst groupedData = {};\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tdisplayData.map((datum) => {\n\t\t\tconst group = datum[groupMapsTo];\n\t\t\tif (\n\t\t\t\tgroupedData[group] !== null &&\n\t\t\t\tgroupedData[group] !== undefined\n\t\t\t) {\n\t\t\t\tgroupedData[group].push(datum);\n\t\t\t} else {\n\t\t\t\tgroupedData[group] = [datum];\n\t\t\t}\n\t\t});\n\n\t\treturn Object.keys(groupedData).map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tdata: groupedData[groupName],\n\t\t}));\n\t}\n\n\tgetDataValuesGroupedByKeys(groups?) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst displayData = this.getDisplayData(groups);\n\n\t\tconst stackKeys = map(displayData, (datum) => {\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\tdatum\n\t\t\t);\n\t\t\treturn datum[domainIdentifier];\n\t\t}).keys();\n\n\t\tconst axisPosition = this.services.cartesianScales.domainAxisPosition;\n\t\tconst scaleType = options.axes[axisPosition].scaleType;\n\n\t\t// Sort keys\n\t\tif (scaleType === ScaleTypes.TIME) {\n\t\t\tstackKeys.sort((a: any, b: any) => {\n\t\t\t\tconst dateA: any = new Date(a);\n\t\t\t\tconst dateB: any = new Date(b);\n\t\t\t\treturn dateA - dateB;\n\t\t\t});\n\t\t} else if (\n\t\t\tscaleType === ScaleTypes.LOG ||\n\t\t\tscaleType === ScaleTypes.LINEAR\n\t\t) {\n\t\t\tstackKeys.sort((a: any, b: any) => a - b);\n\t\t}\n\n\t\tconst dataGroupNames = this.getDataGroupNames();\n\n\t\treturn stackKeys.map((key) => {\n\t\t\tconst correspondingValues = { sharedStackKey: key };\n\t\t\tdataGroupNames.forEach((dataGroupName) => {\n\t\t\t\tconst correspondingDatum = displayData.find((datum) => {\n\t\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tdatum[groupMapsTo] === dataGroupName &&\n\t\t\t\t\t\tdatum[domainIdentifier].toString() === key\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\tcorrespondingValues\n\t\t\t\t);\n\t\t\t\tcorrespondingValues[dataGroupName] = correspondingDatum\n\t\t\t\t\t? correspondingDatum[rangeIdentifier]\n\t\t\t\t\t: null;\n\t\t\t});\n\t\t\treturn correspondingValues;\n\t\t}) as any;\n\t}\n\n\tgetStackedData({ percentage = false, groups = null }) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.getDataGroupNames(groups);\n\t\tconst dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys(groups);\n\n\t\tif (percentage) {\n\t\t\tconst maxByKey = Tools.fromPairs(\n\t\t\t\tdataValuesGroupedByKeys.map((d: any) => [d.sharedStackKey, 0])\n\t\t\t);\n\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tmaxByKey[d.sharedStackKey] += d[name];\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// cycle through data values to get percentage\n\t\t\tdataValuesGroupedByKeys.forEach((d: any) => {\n\t\t\t\tdataGroupNames.forEach((name) => {\n\t\t\t\t\tif (maxByKey[d.sharedStackKey]) {\n\t\t\t\t\t\td[name] = (d[name] / maxByKey[d.sharedStackKey]) * 100;\n\t\t\t\t\t} else {\n\t\t\t\t\t\td[name] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn stack()\n\t\t\t.keys(dataGroupNames)(dataValuesGroupedByKeys)\n\t\t\t.map((series, i) => {\n\t\t\t\t// Add data group names to each series\n\t\t\t\treturn Object.keys(series)\n\t\t\t\t\t.filter((key: any) => !isNaN(key))\n\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\tconst element = series[key];\n\t\t\t\t\t\telement[groupMapsTo] = dataGroupNames[i];\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * @return {Object} The chart's options\n\t */\n\tgetOptions() {\n\t\treturn this.state.options;\n\t}\n\n\tset(newState: any, configs?: any) {\n\t\tthis.state = Object.assign({}, this.state, newState);\n\t\tconst newConfig = Object.assign(\n\t\t\t{ skipUpdate: false, animate: true }, // default configs\n\t\t\tconfigs\n\t\t);\n\t\tif (!newConfig.skipUpdate) {\n\t\t\tthis.update(newConfig.animate);\n\t\t}\n\t}\n\n\tget(property?: string) {\n\t\tif (property) {\n\t\t\treturn this.state[property];\n\t\t} else {\n\t\t\treturn this.state;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param newOptions New options to be set\n\t */\n\tsetOptions(newOptions) {\n\t\tthis.set({\n\t\t\toptions: Tools.merge(this.getOptions(), newOptions),\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * Updates miscellanous information within the model\n\t * such as the color scales, or the legend data labels\n\t */\n\tupdate(animate = true) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.updateAllDataGroups();\n\n\t\tthis.setCustomColorScale();\n\t\tthis.setColorClassNames();\n\t\tthis.services.events.dispatchEvent(Events.Model.UPDATE, { animate });\n\t}\n\n\t/*\n\t * Data labels\n\t */\n\ttoggleDataLabel(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tconst hasDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\t\tconst activeItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\n\t\t// If there are deactivated items, toggle \"changedLabel\"\n\t\tif (hasDeactivatedItems) {\n\t\t\t// If the only active item is being toggled\n\t\t\t// Activate all items\n\t\t\tif (\n\t\t\t\tactiveItems.length === 1 &&\n\t\t\t\tactiveItems[0].name === changedLabel\n\t\t\t) {\n\t\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\t\tdataGroups[i].status = ACTIVE;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst indexToChange = dataGroups.findIndex(\n\t\t\t\t\t(group) => group.name === changedLabel\n\t\t\t\t);\n\t\t\t\tdataGroups[indexToChange].status =\n\t\t\t\t\tdataGroups[indexToChange].status === DISABLED\n\t\t\t\t\t\t? ACTIVE\n\t\t\t\t\t\t: DISABLED;\n\t\t\t}\n\t\t} else {\n\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\tdataGroups.forEach((group, i) => {\n\t\t\t\tdataGroups[i].status =\n\t\t\t\t\tgroup.name === changedLabel ? ACTIVE : DISABLED;\n\t\t\t});\n\t\t}\n\n\t\t// Updates selected groups\n\t\tconst updatedActiveItems = dataGroups.filter(\n\t\t\t(group) => group.status === ACTIVE\n\t\t);\n\t\tconst options = this.getOptions();\n\n\t\tconst hasUpdatedDeactivatedItems = dataGroups.some(\n\t\t\t(group) => group.status === DISABLED\n\t\t);\n\n\t\t// If there are deactivated items, map the item name into selected groups\n\t\tif (hasUpdatedDeactivatedItems) {\n\t\t\toptions.data.selectedGroups = updatedActiveItems.map(\n\t\t\t\t(activeItem) => activeItem.name\n\t\t\t);\n\t\t} else {\n\t\t\t// If every item is active, clear array\n\t\t\toptions.data.selectedGroups = [];\n\t\t}\n\n\t\t// dispatch legend filtering event with the status of all the dataLabels\n\t\tthis.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {\n\t\t\tdataGroups,\n\t\t});\n\n\t\t// Update model\n\t\tthis.set({\n\t\t\tdataGroups,\n\t\t});\n\t}\n\n\t/**\n\t * Should the data point be filled?\n\t * @param group\n\t * @param key\n\t * @param value\n\t * @param defaultFilled the default for this chart\n\t */\n\tgetIsFilled(group: any, key?: any, data?: any, defaultFilled?: boolean) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getIsFilled) {\n\t\t\treturn options.getIsFilled(group, key, data, defaultFilled);\n\t\t} else {\n\t\t\treturn defaultFilled;\n\t\t}\n\t}\n\n\tgetFillColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultFillColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getFillColor) {\n\t\t\treturn options.getFillColor(group, key, data, defaultFillColor);\n\t\t} else {\n\t\t\treturn defaultFillColor;\n\t\t}\n\t}\n\n\tgetStrokeColor(group: any, key?: any, data?: any) {\n\t\tconst options = this.getOptions();\n\t\tconst defaultStrokeColor = Tools.getProperty(this.colorScale, group);\n\n\t\tif (options.getStrokeColor) {\n\t\t\treturn options.getStrokeColor(group, key, data, defaultStrokeColor);\n\t\t} else {\n\t\t\treturn defaultStrokeColor;\n\t\t}\n\t}\n\n\tisUserProvidedColorScaleValid() {\n\t\tconst userProvidedScale = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'scale'\n\t\t);\n\t\tconst dataGroups = this.getDataGroups();\n\n\t\tif (\n\t\t\tuserProvidedScale == null ||\n\t\t\tObject.keys(userProvidedScale).length == 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn dataGroups.some((dataGroup) =>\n\t\t\tObject.keys(userProvidedScale).includes(dataGroup.name)\n\t\t);\n\t}\n\n\tgetColorClassName(configs: {\n\t\tclassNameTypes: ColorClassNameTypes[];\n\t\tdataGroupName: string;\n\t\toriginalClassName?: string;\n\t}) {\n\t\tconst colorPairingTag = this.colorClassNames(configs.dataGroupName);\n\t\tlet className = configs.originalClassName;\n\t\tconfigs.classNameTypes.forEach(\n\t\t\t(type) =>\n\t\t\t\t(className = configs.originalClassName\n\t\t\t\t\t? `${className} ${type}-${colorPairingTag}`\n\t\t\t\t\t: `${type}-${colorPairingTag}`)\n\t\t);\n\n\t\treturn className;\n\t}\n\n\t/**\n\t * For charts that might hold an associated status for their dataset\n\t */\n\tgetStatus() {\n\t\treturn null;\n\t}\n\n\tgetAllDataGroupsNames() {\n\t\treturn this.allDataGroups;\n\t}\n\n\t/**\n\t * Converts data provided in the older format to tabular\n\t *\n\t */\n\tprotected transformToTabularData(data) {\n\t\tconsole.warn(\n\t\t\t\"We've updated the charting data format to be tabular by default. The current format you're using is deprecated and will be removed in v1.0, read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/tutorials--tabular-data-format\"\n\t\t);\n\t\tconst tabularData = [];\n\t\tconst { datasets, labels } = data;\n\n\t\t// Loop through all datasets\n\t\tdatasets.forEach((dataset) => {\n\t\t\t// Update each data point to the new format\n\t\t\tdataset.data.forEach((datum, i) => {\n\t\t\t\tlet group;\n\n\t\t\t\tconst datasetLabel = Tools.getProperty(dataset, 'label');\n\t\t\t\tif (datasetLabel === null) {\n\t\t\t\t\tconst correspondingLabel = Tools.getProperty(labels, i);\n\t\t\t\t\tif (correspondingLabel) {\n\t\t\t\t\t\tgroup = correspondingLabel;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroup = 'Ungrouped';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgroup = datasetLabel;\n\t\t\t\t}\n\n\t\t\t\tconst updatedDatum = {\n\t\t\t\t\tgroup,\n\t\t\t\t\tkey: labels[i],\n\t\t\t\t};\n\n\t\t\t\tif (isNaN(datum)) {\n\t\t\t\t\tupdatedDatum['value'] = datum.value;\n\t\t\t\t\tupdatedDatum['date'] = datum.date;\n\t\t\t\t} else {\n\t\t\t\t\tupdatedDatum['value'] = datum;\n\t\t\t\t}\n\n\t\t\t\ttabularData.push(updatedDatum);\n\t\t\t});\n\t\t});\n\n\t\treturn tabularData;\n\t}\n\n\tprotected getTabularData(data) {\n\t\t// if data is not an array\n\t\tif (!Array.isArray(data)) {\n\t\t\treturn this.transformToTabularData(data);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = this.getTabularData(data);\n\n\t\treturn data;\n\t}\n\n\t/*\n\t * Data groups\n\t */\n\tprotected updateAllDataGroups() {\n\t\t// allDataGroups is used to generate a color scale that applies\n\t\t// to all the groups. Now when the data updates, you might remove a group,\n\t\t// and then bring it back in a newer data update, therefore\n\t\t// the order of the groups in allDataGroups matters so that you'd never\n\t\t// have an incorrect color assigned to a group.\n\n\t\t// Also, a new group should only be added to allDataGroups if\n\t\t// it doesn't currently exist\n\n\t\tif (!this.allDataGroups) {\n\t\t\tthis.allDataGroups = this.getDataGroupNames();\n\t\t} else {\n\t\t\t// Loop through current data groups\n\t\t\tthis.getDataGroupNames().forEach((dataGroupName) => {\n\t\t\t\t// If group name hasn't been stored yet, store it\n\t\t\t\tif (this.allDataGroups.indexOf(dataGroupName) === -1) {\n\t\t\t\t\tthis.allDataGroups.push(dataGroupName);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected generateDataGroups(data) {\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst options = this.getOptions();\n\n\t\tconst uniqueDataGroups = map(\n\t\t\tdata,\n\t\t\t(datum) => datum[groupMapsTo]\n\t\t).keys();\n\n\t\t// check if selectedGroups can be applied to chart with current data groups\n\t\tif (options.data.selectedGroups.length) {\n\t\t\tconst hasAllSelectedGroups = options.data.selectedGroups.every(\n\t\t\t\t(groupName) => uniqueDataGroups.includes(groupName)\n\t\t\t);\n\t\t\tif (!hasAllSelectedGroups) {\n\t\t\t\toptions.data.selectedGroups = [];\n\t\t\t}\n\t\t}\n\n\t\t// Get group status based on items in selected groups\n\t\tconst getStatus = (groupName) =>\n\t\t\t!options.data.selectedGroups.length ||\n\t\t\toptions.data.selectedGroups.includes(groupName)\n\t\t\t\t? ACTIVE\n\t\t\t\t: DISABLED;\n\n\t\treturn uniqueDataGroups.map((groupName) => ({\n\t\t\tname: groupName,\n\t\t\tstatus: getStatus(groupName),\n\t\t}));\n\t}\n\n\t/*\n\t * Fill scales\n\t */\n\tprotected setCustomColorScale() {\n\t\tif (!this.isUserProvidedColorScaleValid()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, 'color', 'scale');\n\n\t\tObject.keys(userProvidedScale).forEach((dataGroup) => {\n\t\t\tif (!this.allDataGroups.includes(dataGroup)) {\n\t\t\t\tconsole.warn(`\"${dataGroup}\" does not exist in data groups.`);\n\t\t\t}\n\t\t});\n\n\t\t/**\n\t\t * Go through allDataGroups. If a data group has a color value provided\n\t\t * by the user, add that to the color range\n\t\t */\n\t\tconst providedDataGroups = this.allDataGroups.filter(\n\t\t\t(dataGroup) => userProvidedScale[dataGroup]\n\t\t);\n\n\t\tprovidedDataGroups.forEach(\n\t\t\t(dataGroup) =>\n\t\t\t\t(this.colorScale[dataGroup] = userProvidedScale[dataGroup])\n\t\t);\n\t}\n\n\t/*\n\t * Color palette\n\t */\n\tprotected setColorClassNames() {\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'pairing'\n\t\t);\n\n\t\t// Check if user has defined numberOfVariants (differ from given data)\n\t\tlet numberOfVariants = Tools.getProperty(\n\t\t\tcolorPairingOptions,\n\t\t\t'numberOfVariants'\n\t\t);\n\t\tif (!numberOfVariants || numberOfVariants < this.allDataGroups.length) {\n\t\t\tnumberOfVariants = this.allDataGroups.length;\n\t\t}\n\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// If number of dataGroups is greater than 5, user 14-color palette\n\t\tconst numberOfColors = numberOfVariants > 5 ? 14 : numberOfVariants;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) =>\n\t\t\t\t`${numberOfColors}-${pairingOption}-${(index % 14) + 1}`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carbon/charts",
3
- "version": "0.41.20",
3
+ "version": "0.41.24",
4
4
  "description": "Carbon charting components",
5
5
  "main": "./bundle.js",
6
6
  "module": "./index.js",
@@ -84,7 +84,7 @@
84
84
  "extract-text-webpack-plugin": "3.0.2",
85
85
  "file-loader": "1.1.5",
86
86
  "fork-ts-checker-webpack-plugin": "^4.0.5",
87
- "highlight.js": "9.18.1",
87
+ "highlight.js": "10.5.0",
88
88
  "html-loader": "0.5.1",
89
89
  "html-webpack-exclude-assets-plugin": "0.0.7",
90
90
  "html-webpack-plugin": "3.2.0",
@@ -98,7 +98,6 @@
98
98
  "lerna": "3.13.4",
99
99
  "marked": "0.8.2",
100
100
  "mini-css-extract-plugin": "0.9.0",
101
- "prettier": "2.0.5",
102
101
  "raw-loader": "0.5.1",
103
102
  "react-docgen-typescript-loader": "^3.6.0",
104
103
  "rollup": "1.27.10",