@carbon/charts 1.6.13 → 1.7.0

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 (190) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/axis-chart.js +1 -1
  3. package/axis-chart.js.map +1 -1
  4. package/build/src/interfaces/charts.d.ts +6 -0
  5. package/build/src/tools.d.ts +2420 -151
  6. package/bundle.js +1 -1
  7. package/chart.js +1 -1
  8. package/chart.js.map +1 -1
  9. package/charts/alluvial.js +1 -1
  10. package/charts/alluvial.js.map +1 -1
  11. package/charts/area-stacked.js +1 -1
  12. package/charts/area-stacked.js.map +1 -1
  13. package/charts/area.js +1 -1
  14. package/charts/area.js.map +1 -1
  15. package/charts/bar-grouped.js +1 -1
  16. package/charts/bar-grouped.js.map +1 -1
  17. package/charts/bar-simple.js +1 -1
  18. package/charts/bar-simple.js.map +1 -1
  19. package/charts/bar-stacked.js +1 -1
  20. package/charts/bar-stacked.js.map +1 -1
  21. package/charts/boxplot.js +1 -1
  22. package/charts/boxplot.js.map +1 -1
  23. package/charts/bubble.js +1 -1
  24. package/charts/bubble.js.map +1 -1
  25. package/charts/bullet.js +1 -1
  26. package/charts/bullet.js.map +1 -1
  27. package/charts/circle-pack.js +1 -1
  28. package/charts/circle-pack.js.map +1 -1
  29. package/charts/combo.js +1 -1
  30. package/charts/combo.js.map +1 -1
  31. package/charts/donut.js +1 -1
  32. package/charts/donut.js.map +1 -1
  33. package/charts/gauge.js +1 -1
  34. package/charts/gauge.js.map +1 -1
  35. package/charts/heatmap.js +1 -1
  36. package/charts/heatmap.js.map +1 -1
  37. package/charts/histogram.js +1 -1
  38. package/charts/histogram.js.map +1 -1
  39. package/charts/line.js +1 -1
  40. package/charts/line.js.map +1 -1
  41. package/charts/lollipop.js +1 -1
  42. package/charts/lollipop.js.map +1 -1
  43. package/charts/meter.js +1 -1
  44. package/charts/meter.js.map +1 -1
  45. package/charts/pie.js +1 -1
  46. package/charts/pie.js.map +1 -1
  47. package/charts/radar.js +1 -1
  48. package/charts/radar.js.map +1 -1
  49. package/charts/scatter.js +1 -1
  50. package/charts/scatter.js.map +1 -1
  51. package/charts/tree.js +1 -1
  52. package/charts/tree.js.map +1 -1
  53. package/charts/treemap.js +1 -1
  54. package/charts/treemap.js.map +1 -1
  55. package/charts/wordcloud.js +1 -1
  56. package/charts/wordcloud.js.map +1 -1
  57. package/components/axes/axis.js +1 -1
  58. package/components/axes/axis.js.map +1 -1
  59. package/components/axes/grid.js +1 -1
  60. package/components/axes/grid.js.map +1 -1
  61. package/components/axes/hover-axis.js +1 -1
  62. package/components/axes/hover-axis.js.map +1 -1
  63. package/components/axes/ruler-binned.js +1 -1
  64. package/components/axes/ruler-binned.js.map +1 -1
  65. package/components/axes/ruler.js +1 -1
  66. package/components/axes/ruler.js.map +1 -1
  67. package/components/axes/toolbar.js +1 -1
  68. package/components/axes/toolbar.js.map +1 -1
  69. package/components/axes/two-dimensional-axes.js +1 -1
  70. package/components/axes/two-dimensional-axes.js.map +1 -1
  71. package/components/axes/zero-line.js +1 -1
  72. package/components/axes/zero-line.js.map +1 -1
  73. package/components/axes/zoom-bar.js +1 -1
  74. package/components/axes/zoom-bar.js.map +1 -1
  75. package/components/component.js +1 -1
  76. package/components/component.js.map +1 -1
  77. package/components/essentials/color-scale-legend.js +1 -1
  78. package/components/essentials/color-scale-legend.js.map +1 -1
  79. package/components/essentials/highlights.js +1 -1
  80. package/components/essentials/highlights.js.map +1 -1
  81. package/components/essentials/legend.js +1 -1
  82. package/components/essentials/legend.js.map +1 -1
  83. package/components/essentials/modal.js +1 -1
  84. package/components/essentials/modal.js.map +1 -1
  85. package/components/essentials/threshold.js +1 -1
  86. package/components/essentials/threshold.js.map +1 -1
  87. package/components/essentials/title-meter.js +1 -1
  88. package/components/essentials/title-meter.js.map +1 -1
  89. package/components/essentials/title.js +1 -1
  90. package/components/essentials/title.js.map +1 -1
  91. package/components/essentials/tooltip-axis.js +1 -1
  92. package/components/essentials/tooltip-axis.js.map +1 -1
  93. package/components/essentials/tooltip.js +1 -1
  94. package/components/essentials/tooltip.js.map +1 -1
  95. package/components/graphs/alluvial.js +1 -1
  96. package/components/graphs/alluvial.js.map +1 -1
  97. package/components/graphs/area-stacked.js +1 -1
  98. package/components/graphs/area-stacked.js.map +1 -1
  99. package/components/graphs/area.js +1 -1
  100. package/components/graphs/area.js.map +1 -1
  101. package/components/graphs/bar-grouped.js +1 -1
  102. package/components/graphs/bar-grouped.js.map +1 -1
  103. package/components/graphs/bar-simple.js +1 -1
  104. package/components/graphs/bar-simple.js.map +1 -1
  105. package/components/graphs/bar-stacked.js +1 -1
  106. package/components/graphs/bar-stacked.js.map +1 -1
  107. package/components/graphs/bar.js +1 -1
  108. package/components/graphs/bar.js.map +1 -1
  109. package/components/graphs/boxplot.js +1 -1
  110. package/components/graphs/boxplot.js.map +1 -1
  111. package/components/graphs/bubble.js +1 -1
  112. package/components/graphs/bubble.js.map +1 -1
  113. package/components/graphs/bullet.js +1 -1
  114. package/components/graphs/bullet.js.map +1 -1
  115. package/components/graphs/circle-pack.js +1 -1
  116. package/components/graphs/circle-pack.js.map +1 -1
  117. package/components/graphs/donut.js +1 -1
  118. package/components/graphs/donut.js.map +1 -1
  119. package/components/graphs/gauge.js +1 -1
  120. package/components/graphs/gauge.js.map +1 -1
  121. package/components/graphs/heatmap.js +1 -1
  122. package/components/graphs/heatmap.js.map +1 -1
  123. package/components/graphs/histogram.js +1 -1
  124. package/components/graphs/histogram.js.map +1 -1
  125. package/components/graphs/line.js +1 -1
  126. package/components/graphs/line.js.map +1 -1
  127. package/components/graphs/lollipop.js +1 -1
  128. package/components/graphs/lollipop.js.map +1 -1
  129. package/components/graphs/meter.js +1 -1
  130. package/components/graphs/meter.js.map +1 -1
  131. package/components/graphs/pie.js +1 -1
  132. package/components/graphs/pie.js.map +1 -1
  133. package/components/graphs/radar.js +1 -1
  134. package/components/graphs/radar.js.map +1 -1
  135. package/components/graphs/scatter-stacked.js +1 -1
  136. package/components/graphs/scatter-stacked.js.map +1 -1
  137. package/components/graphs/scatter.js +1 -1
  138. package/components/graphs/scatter.js.map +1 -1
  139. package/components/graphs/skeleton-lines.js +1 -1
  140. package/components/graphs/skeleton-lines.js.map +1 -1
  141. package/components/graphs/skeleton.js +1 -1
  142. package/components/graphs/skeleton.js.map +1 -1
  143. package/components/graphs/tree.js +1 -1
  144. package/components/graphs/tree.js.map +1 -1
  145. package/components/graphs/treemap.js +1 -1
  146. package/components/graphs/treemap.js.map +1 -1
  147. package/components/graphs/wordcloud.js +1 -1
  148. package/components/graphs/wordcloud.js.map +1 -1
  149. package/components/layout/layout.js +1 -1
  150. package/components/layout/layout.js.map +1 -1
  151. package/configuration.js +1 -1
  152. package/configuration.js.map +1 -1
  153. package/demo/data/bar.js +60 -12
  154. package/demo/data/bar.js.map +1 -1
  155. package/demo/tsconfig.tsbuildinfo +1 -1
  156. package/interfaces/charts.d.ts +6 -0
  157. package/interfaces/charts.js.map +1 -1
  158. package/model/boxplot.js +1 -1
  159. package/model/boxplot.js.map +1 -1
  160. package/model/bullet.js +1 -1
  161. package/model/bullet.js.map +1 -1
  162. package/model/cartesian-charts.js +1 -1
  163. package/model/cartesian-charts.js.map +1 -1
  164. package/model/circle-pack.js +1 -1
  165. package/model/circle-pack.js.map +1 -1
  166. package/model/heatmap.js +1 -1
  167. package/model/heatmap.js.map +1 -1
  168. package/model/meter.js +1 -1
  169. package/model/meter.js.map +1 -1
  170. package/model/model.js +8 -2
  171. package/model/model.js.map +1 -1
  172. package/model/radar.js +1 -1
  173. package/model/radar.js.map +1 -1
  174. package/model/treemap.js +1 -1
  175. package/model/treemap.js.map +1 -1
  176. package/package.json +1 -1
  177. package/services/essentials/dom-utils.js +15 -3
  178. package/services/essentials/dom-utils.js.map +1 -1
  179. package/services/essentials/transitions.js +1 -1
  180. package/services/essentials/transitions.js.map +1 -1
  181. package/services/scales-cartesian.js +1 -1
  182. package/services/scales-cartesian.js.map +1 -1
  183. package/services/time-series.js +1 -1
  184. package/services/time-series.js.map +1 -1
  185. package/services/zoom.js +1 -1
  186. package/services/zoom.js.map +1 -1
  187. package/tools.d.ts +141 -155
  188. package/tools.js +315 -344
  189. package/tools.js.map +1 -1
  190. package/tsconfig.tsbuildinfo +92 -92
package/model/boxplot.js CHANGED
@@ -21,7 +21,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
21
21
  // Internal Imports
22
22
  import { ChartModelCartesian } from './cartesian-charts';
23
23
  import * as Configuration from '../configuration';
24
- import { Tools } from '../tools';
24
+ import * as Tools from '../tools';
25
25
  // D3 Imports
26
26
  import { ascending, min, max, quantile } from 'd3-array';
27
27
  import { scaleOrdinal } from 'd3-scale';
@@ -1 +1 @@
1
- {"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Configuration from '../configuration';\nimport { Tools } from '../tools';\n\n// D3 Imports\nimport { ascending, min, max, quantile } from 'd3-array';\nimport { scaleOrdinal } from 'd3-scale';\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 BoxplotChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetBoxQuartiles(d) {\n\t\treturn {\n\t\t\tq_25: quantile(d, 0.25),\n\t\t\tq_50: quantile(d, 0.5),\n\t\t\tq_75: quantile(d, 0.75),\n\t\t};\n\t}\n\n\tgetBoxplotData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst groupedData = this.getGroupedData();\n\n\t\t// Prepare the data for the box plots\n\t\tconst boxplotData = [];\n\t\tfor (const { name: group, data } of groupedData) {\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\tconst values = data.map((d) => d[rangeIdentifier]).sort(ascending);\n\n\t\t\tconst record = {\n\t\t\t\t[groupMapsTo]: group,\n\t\t\t\tcounts: values,\n\t\t\t\tquartiles: this.getBoxQuartiles(values),\n\t\t\t\toutliers: null,\n\t\t\t\twhiskers: null,\n\t\t\t};\n\n\t\t\tconst q1 = record.quartiles.q_25;\n\t\t\tconst q3 = record.quartiles.q_75;\n\n\t\t\tconst iqr = (q3 - q1) * 1.5;\n\t\t\tconst irq1 = q1 - iqr;\n\t\t\tconst irq3 = q3 + iqr;\n\n\t\t\tconst outliers = [];\n\t\t\tconst normalValues = [];\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value < irq1) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else if (value > irq3) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else {\n\t\t\t\t\tnormalValues.push(value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trecord.outliers = outliers;\n\n\t\t\tconst minNormalValue = min(normalValues);\n\t\t\tconst maxNormalValue = max(normalValues);\n\t\t\trecord.whiskers = {\n\t\t\t\tmin: minNormalValue\n\t\t\t\t\t? minNormalValue\n\t\t\t\t\t: min([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t\tmax: maxNormalValue\n\t\t\t\t\t? maxNormalValue\n\t\t\t\t\t: max([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t};\n\n\t\t\tboxplotData.push(record);\n\t\t}\n\n\t\treturn boxplotData;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst boxplotData = this.getBoxplotData();\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\t'Minimum',\n\t\t\t\t'Q1',\n\t\t\t\t'Median',\n\t\t\t\t'Q3',\n\t\t\t\t'Maximum',\n\t\t\t\t'IQR',\n\t\t\t\t'Outlier(s)',\n\t\t\t],\n\t\t\t...boxplotData.map((datum) => {\n\t\t\t\tlet outliers = Tools.getProperty(datum, 'outliers');\n\t\t\t\tif (outliers === null || outliers.length === 0) {\n\t\t\t\t\toutliers = ['&ndash;'];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'min') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'min'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_25'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_50') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_50'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_75'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'max') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'max'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null &&\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') -\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25')\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\toutliers.map((d) => d.toLocaleString()).join(','),\n\t\t\t\t];\n\t\t\t}),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\tprotected setColorClassNames() {\n\t\t// monochrome\n\t\tconst numberOfColors = 1;\n\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\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\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) => `${numberOfColors}-${pairingOption}-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":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;qEACqE;AACrE;IAAuC,qCAAmB;IACzD,2BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,2CAAe,GAAf,UAAgB,CAAC;QAChB,OAAO;YACN,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;YACvB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YACtB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;SACvB,CAAC;IACH,CAAC;IAED,0CAAc,GAAd;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QAErC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,qCAAqC;QACrC,IAAM,WAAW,GAAG,EAAE,CAAC;gCACJ,KAAK,EAAE,IAAI;;YAC7B,IAAM,eAAe,GAAG,OAAK,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YAC3E,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,CAAC,EAAlB,CAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnE,IAAM,MAAM;gBACX,GAAC,WAAW,IAAG,KAAK;gBACpB,SAAM,GAAE,MAAM;gBACd,YAAS,GAAE,OAAK,eAAe,CAAC,MAAM,CAAC;gBACvC,WAAQ,GAAE,IAAI;gBACd,WAAQ,GAAE,IAAI;mBACd,CAAC;YAEF,IAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACjC,IAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAEjC,IAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;YAC5B,IAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;YACtB,IAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;YAEtB,IAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAM,YAAY,GAAG,EAAE,CAAC;YAExB,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE;gBAAvB,IAAM,KAAK,eAAA;gBACf,IAAI,KAAK,GAAG,IAAI,EAAE;oBACjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACrB;qBAAM,IAAI,KAAK,GAAG,IAAI,EAAE;oBACxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACrB;qBAAM;oBACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB;aACD;YAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE3B,IAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;YACzC,IAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG;gBACjB,GAAG,EAAE,cAAc;oBAClB,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,GAAG,CAAC;wBACJ,MAAM,CAAC,SAAS,CAAC,IAAI;wBACrB,MAAM,CAAC,SAAS,CAAC,IAAI;wBACrB,MAAM,CAAC,SAAS,CAAC,IAAI;qBACpB,CAAC;gBACL,GAAG,EAAE,cAAc;oBAClB,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,GAAG,CAAC;wBACJ,MAAM,CAAC,SAAS,CAAC,IAAI;wBACrB,MAAM,CAAC,SAAS,CAAC,IAAI;wBACrB,MAAM,CAAC,SAAS,CAAC,IAAI;qBACpB,CAAC;aACL,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;QArD1B,KAAoC,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW;YAApC,IAAA,sBAAqB,EAAnB,eAAW,EAAE,cAAI;oBAAX,KAAK,EAAE,IAAI;SAsD7B;QAED,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,+CAAmB,GAAnB;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QAErC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAM,MAAM;YACX;gBACC,OAAO;gBACP,SAAS;gBACT,IAAI;gBACJ,QAAQ;gBACR,IAAI;gBACJ,SAAS;gBACT,KAAK;gBACL,YAAY;aACZ;WACE,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK;YACxB,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACpD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC;aACvB;YACD,OAAO;gBACN,KAAK,CAAC,WAAW,CAAC;gBAClB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,IAAI;oBACnD,CAAC,CAAC,KAAK,CAAC,WAAW,CACjB,KAAK,EACL,UAAU,EACV,KAAK,CACJ,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI;oBACrD,CAAC,CAAC,KAAK,CAAC,WAAW,CACjB,KAAK,EACL,WAAW,EACX,MAAM,CACL,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI;oBACrD,CAAC,CAAC,KAAK,CAAC,WAAW,CACjB,KAAK,EACL,WAAW,EACX,MAAM,CACL,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI;oBACrD,CAAC,CAAC,KAAK,CAAC,WAAW,CACjB,KAAK,EACL,WAAW,EACX,MAAM,CACL,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,IAAI;oBACnD,CAAC,CAAC,KAAK,CAAC,WAAW,CACjB,KAAK,EACL,UAAU,EACV,KAAK,CACJ,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI;oBACtD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI;oBACrD,CAAC,CAAC,CACA,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC;wBAC7C,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAC5C,CAAC,cAAc,EAAE;oBACpB,CAAC,CAAC,SAAS;gBACZ,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,cAAc,EAAE,EAAlB,CAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aACjD,CAAC;QACH,CAAC,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAES,8CAAkB,GAA5B;QACC,aAAa;QACb,IAAM,cAAc,GAAG,CAAC,CAAC;QAEzB,IAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC5C,IAAI,CAAC,UAAU,EAAE,EACjB,OAAO,EACP,SAAS,CACT,CAAC;QACF,IAAI,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;QAE9D,qDAAqD;QACrD,aAAa;YACZ,aAAa,IAAI,kBAAkB,CAAI,cAAc,WAAQ,CAAC;gBAC7D,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,CAAC,CAAC;QAEN,yDAAyD;QACzD,IAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAC1C,UAAC,SAAS,EAAE,KAAK,IAAK,OAAG,cAAc,SAAI,aAAa,OAAI,EAAtC,CAAsC,CAC5D,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,eAAe,GAAG,YAAY,EAAE;aACnC,KAAK,CAAC,YAAY,CAAC;aACnB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IACF,wBAAC;AAAD,CAAC,AAtLD,CAAuC,mBAAmB,GAsLzD","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Configuration from '../configuration';\nimport * as Tools from '../tools';\n\n// D3 Imports\nimport { ascending, min, max, quantile } from 'd3-array';\nimport { scaleOrdinal } from 'd3-scale';\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 BoxplotChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetBoxQuartiles(d) {\n\t\treturn {\n\t\t\tq_25: quantile(d, 0.25),\n\t\t\tq_50: quantile(d, 0.5),\n\t\t\tq_75: quantile(d, 0.75),\n\t\t};\n\t}\n\n\tgetBoxplotData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst groupedData = this.getGroupedData();\n\n\t\t// Prepare the data for the box plots\n\t\tconst boxplotData = [];\n\t\tfor (const { name: group, data } of groupedData) {\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\tconst values = data.map((d) => d[rangeIdentifier]).sort(ascending);\n\n\t\t\tconst record = {\n\t\t\t\t[groupMapsTo]: group,\n\t\t\t\tcounts: values,\n\t\t\t\tquartiles: this.getBoxQuartiles(values),\n\t\t\t\toutliers: null,\n\t\t\t\twhiskers: null,\n\t\t\t};\n\n\t\t\tconst q1 = record.quartiles.q_25;\n\t\t\tconst q3 = record.quartiles.q_75;\n\n\t\t\tconst iqr = (q3 - q1) * 1.5;\n\t\t\tconst irq1 = q1 - iqr;\n\t\t\tconst irq3 = q3 + iqr;\n\n\t\t\tconst outliers = [];\n\t\t\tconst normalValues = [];\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value < irq1) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else if (value > irq3) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else {\n\t\t\t\t\tnormalValues.push(value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trecord.outliers = outliers;\n\n\t\t\tconst minNormalValue = min(normalValues);\n\t\t\tconst maxNormalValue = max(normalValues);\n\t\t\trecord.whiskers = {\n\t\t\t\tmin: minNormalValue\n\t\t\t\t\t? minNormalValue\n\t\t\t\t\t: min([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t\tmax: maxNormalValue\n\t\t\t\t\t? maxNormalValue\n\t\t\t\t\t: max([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t};\n\n\t\t\tboxplotData.push(record);\n\t\t}\n\n\t\treturn boxplotData;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst boxplotData = this.getBoxplotData();\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\t'Minimum',\n\t\t\t\t'Q1',\n\t\t\t\t'Median',\n\t\t\t\t'Q3',\n\t\t\t\t'Maximum',\n\t\t\t\t'IQR',\n\t\t\t\t'Outlier(s)',\n\t\t\t],\n\t\t\t...boxplotData.map((datum) => {\n\t\t\t\tlet outliers = Tools.getProperty(datum, 'outliers');\n\t\t\t\tif (outliers === null || outliers.length === 0) {\n\t\t\t\t\toutliers = ['&ndash;'];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'min') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'min'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_25'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_50') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_50'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_75'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'max') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'max'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null &&\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') -\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25')\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '&ndash;',\n\t\t\t\t\toutliers.map((d) => d.toLocaleString()).join(','),\n\t\t\t\t];\n\t\t\t}),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\tprotected setColorClassNames() {\n\t\t// monochrome\n\t\tconst numberOfColors = 1;\n\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\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\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) => `${numberOfColors}-${pairingOption}-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/model/bullet.js CHANGED
@@ -20,7 +20,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
20
20
  };
21
21
  // Internal Imports
22
22
  import { ChartModelCartesian } from './cartesian-charts';
23
- import { Tools } from '../tools';
23
+ import * as Tools from '../tools';
24
24
  /**
25
25
  * Bullet chart model layer
26
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;GAEG;AACH;IAAsC,oCAAmB;IACxD,0BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,4DAAiC,GAAjC,UAAkC,KAAK;QACtC,IAAI,kBAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACzB,kBAAkB,GAAG,CAAC,CAAC;gBAEvB,OAAO,kBAAkB,CAAC;aAC1B;SACD;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAED,8CAAmB,GAAnB;QAAA,iBAiCC;QAhCA,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QACrC,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAE3E,IAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAC9C,OAAO,EACP,QAAQ,EACR,uBAAuB,CACvB,CAAC;QAEF,IAAM,MAAM;YACX,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;WAC/D,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,OAAO,CAAC;YACd,KAAK,CAAC,WAAW,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAI,IAAI,CAAC,KAAK,CACb,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAC5C,MAAG;YACP,qBAAqB,CACpB,KAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAC7C;SACD,EAf6B,CAe7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,uBAAC;AAAD,CAAC,AA1DD,CAAsC,mBAAmB,GA0DxD","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport { Tools } from '../tools';\n\n/**\n * Bullet chart model layer\n */\nexport class BulletChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t/**\n\t * Determines the index of the performance area titles to use\n\t * @param datum\n\t * @returns number\n\t */\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'bullet',\n\t\t\t'performanceAreaTitles'\n\t\t);\n\n\t\tconst result = [\n\t\t\t['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['title'],\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum['value'] === null ? '&ndash;' : datum['value'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum['marker'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: `${Math.floor(\n\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t )}%`,\n\t\t\t\tperformanceAreaTitles[\n\t\t\t\t\tthis.getMatchingRangeIndexForDatapoint(datum)\n\t\t\t\t],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
1
+ {"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH;IAAsC,oCAAmB;IACxD,0BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,4DAAiC,GAAjC,UAAkC,KAAK;QACtC,IAAI,kBAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACzB,kBAAkB,GAAG,CAAC,CAAC;gBAEvB,OAAO,kBAAkB,CAAC;aAC1B;SACD;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAED,8CAAmB,GAAnB;QAAA,iBAiCC;QAhCA,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QACrC,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAE3E,IAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAC9C,OAAO,EACP,QAAQ,EACR,uBAAuB,CACvB,CAAC;QAEF,IAAM,MAAM;YACX,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;WAC/D,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,OAAO,CAAC;YACd,KAAK,CAAC,WAAW,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAI,IAAI,CAAC,KAAK,CACb,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAC5C,MAAG;YACP,qBAAqB,CACpB,KAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAC7C;SACD,EAf6B,CAe7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,uBAAC;AAAD,CAAC,AA1DD,CAAsC,mBAAmB,GA0DxD","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Tools from '../tools';\n\n/**\n * Bullet chart model layer\n */\nexport class BulletChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t/**\n\t * Determines the index of the performance area titles to use\n\t * @param datum\n\t * @returns number\n\t */\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'bullet',\n\t\t\t'performanceAreaTitles'\n\t\t);\n\n\t\tconst result = [\n\t\t\t['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['title'],\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum['value'] === null ? '&ndash;' : datum['value'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum['marker'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: `${Math.floor(\n\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t )}%`,\n\t\t\t\tperformanceAreaTitles[\n\t\t\t\t\tthis.getMatchingRangeIndexForDatapoint(datum)\n\t\t\t\t],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
@@ -20,7 +20,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
20
20
  };
21
21
  // Internal Imports
22
22
  import { ChartModel } from './model';
23
- import { Tools } from '../tools';
23
+ import * as Tools from '../tools';
24
24
  import { ScaleTypes, AxisPositions, AxisFlavor } from '../interfaces';
25
25
  // date formatting
26
26
  import { format } from 'date-fns';
@@ -1 +1 @@
1
- {"version":3,"file":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions, AxisFlavor } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tprotected axisFlavor = AxisFlavor.DEFAULT;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprotected assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\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":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport * as Tools from '../tools';\nimport { ScaleTypes, AxisPositions, AxisFlavor } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tprotected axisFlavor = AxisFlavor.DEFAULT;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprotected assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\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"]}
@@ -24,7 +24,7 @@ var __assign = (this && this.__assign) || function () {
24
24
  };
25
25
  // Internal Imports
26
26
  import { ChartModel } from './model';
27
- import { Tools } from '../tools';
27
+ import * as Tools from '../tools';
28
28
  import { LegendItemType } from '../interfaces/enums';
29
29
  /** The charting model layer which includes mainly the chart data and options,
30
30
  * as well as some misc. information to be shared among components */
@@ -1 +1 @@
1
- {"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { LegendItemType } from '../interfaces/enums';\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 CirclePackChartModel extends ChartModel {\n\tparentNode = false;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t\tthis.set({ depth: 2 }, { skipUpdate: true });\n\t}\n\n\tsetData(newData) {\n\t\tsuper.setData(newData);\n\t\tthis.setDataGroups();\n\t\tif (newData.length === 1) {\n\t\t\tthis.parentNode = true;\n\t\t}\n\t\tthis.setZoom();\n\t}\n\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tconst zoomOptions = Tools.merge(\n\t\t\t{},\n\t\t\tnewOptions,\n\t\t\tthis.getZoomOptions(newOptions)\n\t\t);\n\t\tTools.updateLegendAdditionalItems(options, zoomOptions);\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\tlet userProvidedDepth = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'circlePack',\n\t\t\t'hierarchyLevel'\n\t\t);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, zoomOptions),\n\t\t\tdepth:\n\t\t\t\tuserProvidedDepth && userProvidedDepth < 4\n\t\t\t\t\t? userProvidedDepth\n\t\t\t\t\t: depth,\n\t\t});\n\t}\n\n\tgetZoomOptions(options?) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn {};\n\t\t}\n\t\t// uses the user provided options and data to determine if there is zoom in this CP chart\n\t\tconst displayData = this.getDisplayData();\n\t\tconst zoomOptions = options ? options : this.getOptions();\n\t\tconst data =\n\t\t\tdisplayData.length === 1 &&\n\t\t\tTools.getProperty(displayData, 0, 'children')\n\t\t\t\t? Tools.getProperty(displayData, 0, 'children')\n\t\t\t\t: displayData;\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\t// check the data depth\n\t\tdata.some((datum) => {\n\t\t\tif (datum.children) {\n\t\t\t\tif (datum.children.some((item) => item.children)) {\n\t\t\t\t\tdepth = 3;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tTools.getProperty(zoomOptions, 'canvasZoom', 'enabled') === true &&\n\t\t\tdepth > 2\n\t\t) {\n\t\t\treturn {\n\t\t\t\tlegend: {\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: LegendItemType.ZOOM,\n\t\t\t\t\t\t\tname: 'Click to zoom',\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\t\treturn null;\n\t}\n\n\tsetZoom(options?) {\n\t\tthis.setOptions(this.getZoomOptions(options));\n\t}\n\n\t// update the hierarchy level\n\tupdateHierarchyLevel(depth: number) {\n\t\tthis.set({ depth: depth });\n\t}\n\n\tgetHierarchyLevel() {\n\t\treturn this.get('depth');\n\t}\n\n\thasParentNode() {\n\t\treturn this.parentNode;\n\t}\n\n\t// set the datagroup name on the items that are it's children\n\tsetDataGroups() {\n\t\tconst data = this.getData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst newData = data.map((depthOne) => {\n\t\t\tconst groupName = depthOne[groupMapsTo];\n\t\t\treturn this.setChildrenDataGroup(depthOne, groupName);\n\t\t});\n\n\t\tthis.set(\n\t\t\t{\n\t\t\t\tdata: newData,\n\t\t\t},\n\t\t\t{ skipUpdate: true }\n\t\t);\n\t}\n\n\t// sets name recursively down the node tree\n\tprotected setChildrenDataGroup(node, name) {\n\t\tif (node.children) {\n\t\t\treturn {\n\t\t\t\t...node,\n\t\t\t\tdataGroupName: name,\n\t\t\t\tchildren: node.children.map((child, i) => {\n\t\t\t\t\treturn this.setChildrenDataGroup(child, name);\n\t\t\t\t}),\n\t\t\t};\n\t\t} else {\n\t\t\treturn { ...node, dataGroupName: name };\n\t\t}\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\tconst result = [['Child', 'Parent', 'Value']];\n\n\t\tdisplayData.forEach((datum) => {\n\t\t\tlet value = datum.value ? datum.value : 0;\n\t\t\tif (datum.children) {\n\t\t\t\t// Call recursive function\n\t\t\t\tvalue += this.getChildrenDatums(\n\t\t\t\t\tdatum.children,\n\t\t\t\t\tdatum.name,\n\t\t\t\t\tresult,\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t}\n\t\t\tresult.push(['&ndash;', datum.name, value]);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Recursively determine the relationship between all the nested elements in the child\n\t * @param children: Object\n\t * @param parent: String\n\t * @param result: Array<Object>\n\t * @param totalSum: number\n\t * @returns: number\n\t */\n\tprivate getChildrenDatums(children, parent, result = [], totalSum = 0) {\n\t\tconst grandParent = parent;\n\n\t\tchildren.forEach((child) => {\n\t\t\tconst parent = child.name;\n\t\t\tlet sum = 0;\n\n\t\t\tif (child.children) {\n\t\t\t\tif (child.children.length > 0) {\n\t\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tsum += this.getChildrenDatums(\n\t\t\t\t\t\tchild.children,\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tsum\n\t\t\t\t\t);\n\t\t\t\t\tresult.push([parent, grandParent, sum]);\n\t\t\t\t\ttotalSum += sum;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\tvalue = child.value;\n\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t}\n\t\t\t\tresult.push([child.name, grandParent, value]);\n\t\t\t}\n\t\t});\n\n\t\treturn totalSum;\n\t}\n}\n"]}
1
+ {"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport * as Tools from '../tools';\nimport { LegendItemType } from '../interfaces/enums';\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 CirclePackChartModel extends ChartModel {\n\tparentNode = false;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t\tthis.set({ depth: 2 }, { skipUpdate: true });\n\t}\n\n\tsetData(newData) {\n\t\tsuper.setData(newData);\n\t\tthis.setDataGroups();\n\t\tif (newData.length === 1) {\n\t\t\tthis.parentNode = true;\n\t\t}\n\t\tthis.setZoom();\n\t}\n\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tconst zoomOptions = Tools.merge(\n\t\t\t{},\n\t\t\tnewOptions,\n\t\t\tthis.getZoomOptions(newOptions)\n\t\t);\n\t\tTools.updateLegendAdditionalItems(options, zoomOptions);\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\tlet userProvidedDepth = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'circlePack',\n\t\t\t'hierarchyLevel'\n\t\t);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, zoomOptions),\n\t\t\tdepth:\n\t\t\t\tuserProvidedDepth && userProvidedDepth < 4\n\t\t\t\t\t? userProvidedDepth\n\t\t\t\t\t: depth,\n\t\t});\n\t}\n\n\tgetZoomOptions(options?) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn {};\n\t\t}\n\t\t// uses the user provided options and data to determine if there is zoom in this CP chart\n\t\tconst displayData = this.getDisplayData();\n\t\tconst zoomOptions = options ? options : this.getOptions();\n\t\tconst data =\n\t\t\tdisplayData.length === 1 &&\n\t\t\tTools.getProperty(displayData, 0, 'children')\n\t\t\t\t? Tools.getProperty(displayData, 0, 'children')\n\t\t\t\t: displayData;\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\t// check the data depth\n\t\tdata.some((datum) => {\n\t\t\tif (datum.children) {\n\t\t\t\tif (datum.children.some((item) => item.children)) {\n\t\t\t\t\tdepth = 3;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tTools.getProperty(zoomOptions, 'canvasZoom', 'enabled') === true &&\n\t\t\tdepth > 2\n\t\t) {\n\t\t\treturn {\n\t\t\t\tlegend: {\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: LegendItemType.ZOOM,\n\t\t\t\t\t\t\tname: 'Click to zoom',\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\t\treturn null;\n\t}\n\n\tsetZoom(options?) {\n\t\tthis.setOptions(this.getZoomOptions(options));\n\t}\n\n\t// update the hierarchy level\n\tupdateHierarchyLevel(depth: number) {\n\t\tthis.set({ depth: depth });\n\t}\n\n\tgetHierarchyLevel() {\n\t\treturn this.get('depth');\n\t}\n\n\thasParentNode() {\n\t\treturn this.parentNode;\n\t}\n\n\t// set the datagroup name on the items that are it's children\n\tsetDataGroups() {\n\t\tconst data = this.getData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst newData = data.map((depthOne) => {\n\t\t\tconst groupName = depthOne[groupMapsTo];\n\t\t\treturn this.setChildrenDataGroup(depthOne, groupName);\n\t\t});\n\n\t\tthis.set(\n\t\t\t{\n\t\t\t\tdata: newData,\n\t\t\t},\n\t\t\t{ skipUpdate: true }\n\t\t);\n\t}\n\n\t// sets name recursively down the node tree\n\tprotected setChildrenDataGroup(node, name) {\n\t\tif (node.children) {\n\t\t\treturn {\n\t\t\t\t...node,\n\t\t\t\tdataGroupName: name,\n\t\t\t\tchildren: node.children.map((child, i) => {\n\t\t\t\t\treturn this.setChildrenDataGroup(child, name);\n\t\t\t\t}),\n\t\t\t};\n\t\t} else {\n\t\t\treturn { ...node, dataGroupName: name };\n\t\t}\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\tconst result = [['Child', 'Parent', 'Value']];\n\n\t\tdisplayData.forEach((datum) => {\n\t\t\tlet value = datum.value ? datum.value : 0;\n\t\t\tif (datum.children) {\n\t\t\t\t// Call recursive function\n\t\t\t\tvalue += this.getChildrenDatums(\n\t\t\t\t\tdatum.children,\n\t\t\t\t\tdatum.name,\n\t\t\t\t\tresult,\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t}\n\t\t\tresult.push(['&ndash;', datum.name, value]);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Recursively determine the relationship between all the nested elements in the child\n\t * @param children: Object\n\t * @param parent: String\n\t * @param result: Array<Object>\n\t * @param totalSum: number\n\t * @returns: number\n\t */\n\tprivate getChildrenDatums(children, parent, result = [], totalSum = 0) {\n\t\tconst grandParent = parent;\n\n\t\tchildren.forEach((child) => {\n\t\t\tconst parent = child.name;\n\t\t\tlet sum = 0;\n\n\t\t\tif (child.children) {\n\t\t\t\tif (child.children.length > 0) {\n\t\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tsum += this.getChildrenDatums(\n\t\t\t\t\t\tchild.children,\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tsum\n\t\t\t\t\t);\n\t\t\t\t\tresult.push([parent, grandParent, sum]);\n\t\t\t\t\ttotalSum += sum;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\tvalue = child.value;\n\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t}\n\t\t\t\tresult.push([child.name, grandParent, value]);\n\t\t\t}\n\t\t});\n\n\t\treturn totalSum;\n\t}\n}\n"]}
package/model/heatmap.js CHANGED
@@ -21,7 +21,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
21
21
  // Internal Imports
22
22
  import { AxisFlavor, ScaleTypes } from '../interfaces';
23
23
  import { ChartModelCartesian } from './cartesian-charts';
24
- import { Tools } from '../tools';
24
+ import * as Tools from '../tools';
25
25
  // d3 imports
26
26
  import { extent } from 'd3-array';
27
27
  import { scaleQuantize, scaleLinear } from 'd3-scale';
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.js","sourceRoot":"","sources":["heatmap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEtD,kCAAkC;AAClC;IAAkC,gCAAmB;IAUpD,sBAAY,QAAa;QAAzB,YACC,kBAAM,QAAQ,CAAC,SAsBf;QAhCS,gBAAU,GAAG,UAAU,CAAC,SAAS,CAAC;QACpC,iBAAW,GAAQ,SAAS,CAAC;QAErC,oCAAoC;QAC5B,cAAQ,GAAG,EAAE,CAAC;QACd,aAAO,GAAG,EAAE,CAAC;QAEb,aAAO,GAAG,EAAE,CAAC;QAKpB,yCAAyC;QACzC,IAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,KAAI,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;QAE1D,qEAAqE;QACrE,IACC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC;YAC9C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC;gBAC3C,UAAU,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;gBAC/C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5C,UAAU,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;gBAC7C,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;oBAC1C,UAAU,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;gBAChD,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC;oBAC7C,UAAU,CAAC,MAAM,CAAC,EACnB;YACD,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;SACvD;;IACF,CAAC;IAED;;;OAGG;IACH,qCAAc,GAAd;QACC,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAC;QAClE,IAAM,MAAM,GAAG,WAAW,EAAE;aAC1B,MAAM,CAAC,MAA0B,CAAC;aAClC,IAAI,EAAE;aACN,MAAM,EAAE,CAAC;QAEX,6DAA6D;QAC7D,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YAClB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACd;aAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YAC9C,2CAA2C;YAC3C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACd;QAED,sFAAsF;QACtF,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACnC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;gBACpC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;iBAAM;gBACN,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACvB;SACD;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,mCAAY,GAAZ,UAAa,KAAa;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,sCAAe,GAAf;QACC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,IAAA,+CAAe,CAAmB;YAE1C,IAAM,kBAAgB,GAAG,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAC/D,IAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;YACjE,IAAM,YAAY,GAAG,eAAe,CAAC,+BAA+B,CACnE,iBAAiB,CACjB,CAAC;YAEF,uCAAuC;YACvC,IAAI,CAAC,CAAC,YAAY,EAAE;gBACnB,OAAO,YAAY,CAAC;aACpB;YAED,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,IAAI,GAAG,CACN,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC;gBACjB,OAAO,CAAC,CAAC,kBAAgB,CAAC,CAAC;YAC5B,CAAC,CAAC,CACF,CACD,CAAC;SACF;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,sCAAe,GAAf;QACC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAClC,IAAA,+CAAe,CAAmB;YAE1C,IAAM,iBAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;YAC7D,IAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;YACjE,IAAM,YAAY,GAAG,eAAe,CAAC,+BAA+B,CACnE,iBAAiB,CACjB,CAAC;YAEF,uCAAuC;YACvC,IAAI,CAAC,CAAC,YAAY,EAAE;gBACnB,OAAO,YAAY,CAAC;aACpB;YAED,2CAA2C;YAC3C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,IAAI,GAAG,CACN,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC;gBACjB,OAAO,CAAC,CAAC,iBAAe,CAAC,CAAC;YAC3B,CAAC,CAAC,CACF,CACD,CAAC;SACF;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,gCAAS,GAAT;QAAA,iBAiCC;QAhCA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChC,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAE3C,IAAM,kBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAC7E,IAAM,iBAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YAE3E,kBAAkB;YAClB,IAAM,OAAK,GAAG,EAAE,CAAC;YACjB,WAAW,CAAC,OAAO,CAAC,UAAC,GAAQ;gBAC5B,mCAAmC;gBACnC,OAAK,CAAC,GAAG,CAAC,GAAG;oBACZ,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,CAAC,CAAC;iBACT,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,2DAA2D;YAC3D,YAAY,CAAC,OAAO,CAAC,UAAC,GAAQ;gBAC7B,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,2BAA2B;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC;gBAClC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAe,CAAC,CAAC,GAAG;oBACvD,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;oBACjB,KAAK,EAAE,CAAC;iBACR,CAAC;YACH,CAAC,CAAC,CAAC;SACH;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,8BAAO,GAAP,UAAQ,OAAO;QACd,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,IAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE1D,IAAI,CAAC,GAAG,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,UAAU,YAAA;SACV,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,OAAO,aAAa,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,uCAAgB,GAAhB;QAAA,iBAyBC;QAxBA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;SACjB;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3C,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;QAC7E,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAE3E,IAAM,GAAG,GAAG,EAAE,CAAC;QACf,YAAY,CAAC,OAAO,CAAC,UAAC,MAAM;YAC3B,WAAW,CAAC,OAAO,CAAC,UAAC,KAAK;gBACzB,IAAM,OAAO,GAAG;oBACf,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK;oBACxC,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK;iBACxC,CAAC;gBACF,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;gBACnC,OAAO,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,0CAAmB,GAAnB;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEpC,IAAA,iCAA8D,EAA5D,gCAAa,EAAE,8BAA6C,CAAC;QAErE,IAAI,oBAAoB,CAAC;QAEzB,IAAM,MAAM;YACX,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;WAC/C,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,IAAI;gBACvC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACvD,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;YAClC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI;gBACtC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;YAClD,KAAK,CAAC,OAAO,CAAC;SACd,EAV6B,CAU7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,4CAA4C;IAC5C,wCAAiB,GAAjB,UAAkB,OAAuD;QACxE,OAAU,OAAO,CAAC,iBAAiB,SAAI,IAAI,CAAC,WAAW,CACtD,OAAO,CAAC,KAAe,CACrB,CAAC;IACL,CAAC;IAES,yCAAkB,GAA5B;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACrC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,CACR,CAAC;QACF,IAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,kBAAkB,GAAG,KAAK,CAAC,WAAW,CACzC,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,CACR,CAAC;QAEF,6EAA6E;QAC7E,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAExE,4DAA4D;QAC5D,IACC,kBAAkB,GAAG,CAAC;YACtB,kBAAkB,GAAG,CAAC;YACtB,WAAW,KAAK,MAAM,EACrB;YACD,kBAAkB,GAAG,CAAC,CAAC;SACvB;aAAM,IACN,kBAAkB,GAAG,CAAC;YACtB,kBAAkB,GAAG,CAAC;YACtB,WAAW,KAAK,SAAS,EACxB;YACD,kBAAkB,GAAG,CAAC,CAAC;SACvB;QAED,4BAA4B;QAC5B,IAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,IAAI,CAAC,mBAAmB,EAAE;YACzB,mEAAmE;YACnE,8FAA8F;YAC9F,IAAM,mBAAmB,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,YAAY,CAAC,IAAI,CAChB,UAAQ,WAAW,SAAI,kBAAkB,SAAI,CAAG,CAChD,CAAC;aACF;SACD;QAED,kBAAkB;QAClB,IAAI,CAAC,WAAW,GAAG,aAAa,EAAE;aAChC,MAAM,CAAC,MAA0B,CAAC;aAClC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvB,CAAC;IACF,mBAAC;AAAD,CAAC,AApUD,CAAkC,mBAAmB,GAoUpD","sourcesContent":["// Internal Imports\nimport { AxisFlavor, ScaleTypes } from '../interfaces';\nimport { ChartModelCartesian } from './cartesian-charts';\nimport { Tools } from '../tools';\n\n// d3 imports\nimport { extent } from 'd3-array';\nimport { scaleQuantize, scaleLinear } from 'd3-scale';\n\n/** The gauge chart model layer */\nexport class HeatmapModel extends ChartModelCartesian {\n\tprotected axisFlavor = AxisFlavor.HOVERABLE;\n\tprivate _colorScale: any = undefined;\n\n\t// List of unique ranges and domains\n\tprivate _domains = [];\n\tprivate _ranges = [];\n\n\tprivate _matrix = {};\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\n\t\t// Check which scale types are being used\n\t\tconst axis = Tools.getProperty(this.getOptions(), 'axes');\n\n\t\t// Need to check options since scale service hasn't been instantiated\n\t\tif (\n\t\t\t(!!Tools.getProperty(axis, 'left', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'left', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'right', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'right', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'top', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'top', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'bottom', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'bottom', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS)\n\t\t) {\n\t\t\tthrow Error('Heatmap only supports label scaletypes.');\n\t\t}\n\t}\n\n\t/**\n\t * Get min and maximum value of the display data\n\t * @returns Array consisting of smallest and largest values in data\n\t */\n\tgetValueDomain() {\n\t\tconst limits = extent(this.getDisplayData(), (d: any) => d.value);\n\t\tconst domain = scaleLinear()\n\t\t\t.domain(limits as [number, number])\n\t\t\t.nice()\n\t\t\t.domain();\n\n\t\t// Ensuring limits start at 0 to make scale look more `nicer`\n\t\tif (domain[0] > 0) {\n\t\t\tdomain[0] = 0;\n\t\t} else if (domain[0] === 0 && domain[1] === 0) {\n\t\t\t// Range cannot be between 0 and 0 (itself)\n\t\t\treturn [0, 1];\n\t\t}\n\n\t\t// Ensure the median of the range is 0 if domain extends into both negative & positive\n\t\tif (domain[0] < 0 && domain[1] > 0) {\n\t\t\tif (Math.abs(domain[0]) > domain[1]) {\n\t\t\t\tdomain[1] = Math.abs(domain[0]);\n\t\t\t} else {\n\t\t\t\tdomain[0] = -domain[1];\n\t\t\t}\n\t\t}\n\n\t\treturn domain;\n\t}\n\n\t/**\n\t * @override\n\t * @param value\n\t * @returns string\n\t */\n\tgetFillColor(value: number) {\n\t\treturn this._colorScale(value);\n\t}\n\n\t/**\n\t * Generate a list of all unique domains\n\t * @returns String[]\n\t */\n\tgetUniqueDomain(): string[] {\n\t\tif (Tools.isEmpty(this._domains)) {\n\t\t\tconst displayData = this.getDisplayData();\n\t\t\tconst { cartesianScales } = this.services;\n\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst mainXAxisPosition = cartesianScales.getMainXAxisPosition();\n\t\t\tconst customDomain = cartesianScales.getCustomDomainValuesByposition(\n\t\t\t\tmainXAxisPosition\n\t\t\t);\n\n\t\t\t// Use user defined domain if specified\n\t\t\tif (!!customDomain) {\n\t\t\t\treturn customDomain;\n\t\t\t}\n\n\t\t\t// Get unique axis values & create a matrix\n\t\t\tthis._domains = Array.from(\n\t\t\t\tnew Set(\n\t\t\t\t\tdisplayData.map((d) => {\n\t\t\t\t\t\treturn d[domainIdentifier];\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn this._domains;\n\t}\n\n\t/**\n\t * Generates a list of all unique ranges\n\t * @returns String[]\n\t */\n\tgetUniqueRanges(): string[] {\n\t\tif (Tools.isEmpty(this._ranges)) {\n\t\t\tconst displayData = this.getDisplayData();\n\t\t\tconst { cartesianScales } = this.services;\n\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\tconst mainYAxisPosition = cartesianScales.getMainYAxisPosition();\n\t\t\tconst customDomain = cartesianScales.getCustomDomainValuesByposition(\n\t\t\t\tmainYAxisPosition\n\t\t\t);\n\n\t\t\t// Use user defined domain if specified\n\t\t\tif (!!customDomain) {\n\t\t\t\treturn customDomain;\n\t\t\t}\n\n\t\t\t// Get unique axis values & create a matrix\n\t\t\tthis._ranges = Array.from(\n\t\t\t\tnew Set(\n\t\t\t\t\tdisplayData.map((d) => {\n\t\t\t\t\t\treturn d[rangeIdentifier];\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn this._ranges;\n\t}\n\n\t/**\n\t * Generates a matrix (If doesn't exist) and returns it\n\t * @returns Object\n\t */\n\tgetMatrix() {\n\t\tif (Tools.isEmpty(this._matrix)) {\n\t\t\tconst uniqueDomain = this.getUniqueDomain();\n\t\t\tconst uniqueRange = this.getUniqueRanges();\n\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\t\t// Create a column\n\t\t\tconst range = {};\n\t\t\tuniqueRange.forEach((ran: any) => {\n\t\t\t\t// Initialize matrix to empty state\n\t\t\t\trange[ran] = {\n\t\t\t\t\tvalue: null,\n\t\t\t\t\tindex: -1,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\t// Complete the matrix by cloning the column to all domains\n\t\t\tuniqueDomain.forEach((dom: any) => {\n\t\t\t\tthis._matrix[dom] = Tools.clone(range);\n\t\t\t});\n\n\t\t\t// Fill in user passed data\n\t\t\tthis.getDisplayData().forEach((d, i) => {\n\t\t\t\tthis._matrix[d[domainIdentifier]][d[rangeIdentifier]] = {\n\t\t\t\t\tvalue: d['value'],\n\t\t\t\t\tindex: i,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn this._matrix;\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\t// Set attributes to empty\n\t\tthis._domains = [];\n\t\tthis._ranges = [];\n\t\tthis._matrix = {};\n\n\t\treturn sanitizedData;\n\t}\n\n\t/**\n\t * Converts Object matrix into a single array\n\t * @returns Object[]\n\t */\n\tgetMatrixAsArray(): Object[] {\n\t\tif (Tools.isEmpty(this._matrix)) {\n\t\t\tthis.getMatrix();\n\t\t}\n\n\t\tconst uniqueDomain = this.getUniqueDomain();\n\t\tconst uniqueRange = this.getUniqueRanges();\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst arr = [];\n\t\tuniqueDomain.forEach((domain) => {\n\t\t\tuniqueRange.forEach((range) => {\n\t\t\t\tconst element = {\n\t\t\t\t\tvalue: this._matrix[domain][range].value,\n\t\t\t\t\tindex: this._matrix[domain][range].index,\n\t\t\t\t};\n\t\t\t\telement[domainIdentifier] = domain;\n\t\t\t\telement[rangeIdentifier] = range;\n\t\t\t\tarr.push(element);\n\t\t\t});\n\t\t});\n\n\t\treturn arr;\n\t}\n\n\t/**\n\t * Generate tabular data from display data\n\t * @returns Array<Object>\n\t */\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\tconst { primaryDomain, primaryRange } = this.assignRangeAndDomains();\n\n\t\tlet domainValueFormatter;\n\n\t\tconst result = [\n\t\t\t[primaryDomain.label, primaryRange.label, 'Value'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\tdatum['value'],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\t// Uses quantize scale to return class names\n\tgetColorClassName(configs: { value?: number; originalClassName?: string }) {\n\t\treturn `${configs.originalClassName} ${this._colorScale(\n\t\t\tconfigs.value as number\n\t\t)}`;\n\t}\n\n\tprotected setColorClassNames() {\n\t\tconst options = this.getOptions();\n\n\t\tconst customColors = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'colors'\n\t\t);\n\t\tconst customColorsEnabled = !Tools.isEmpty(customColors);\n\n\t\tlet colorPairingOption = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'color',\n\t\t\t'pairing',\n\t\t\t'option'\n\t\t);\n\n\t\t// If domain consists of negative and positive values, use diverging palettes\n\t\tconst domain = this.getValueDomain();\n\t\tconst colorScheme = domain[0] < 0 && domain[1] > 0 ? 'diverge' : 'mono';\n\n\t\t// Use default color pairing options if not in defined range\n\t\tif (\n\t\t\tcolorPairingOption < 1 &&\n\t\t\tcolorPairingOption > 4 &&\n\t\t\tcolorScheme === 'mono'\n\t\t) {\n\t\t\tcolorPairingOption = 1;\n\t\t} else if (\n\t\t\tcolorPairingOption < 1 &&\n\t\t\tcolorPairingOption > 2 &&\n\t\t\tcolorScheme === 'diverge'\n\t\t) {\n\t\t\tcolorPairingOption = 1;\n\t\t}\n\n\t\t// Uses css classes for fill\n\t\tconst colorPairing = customColorsEnabled ? customColors : [];\n\n\t\tif (!customColorsEnabled) {\n\t\t\t// Add class names to list and the amount based on the color scheme\n\t\t\t// Carbon charts has 11 colors for a single monochromatic palette & 17 for a divergent palette\n\t\t\tconst colorGroupingLength = colorScheme === 'diverge' ? 17 : 11;\n\t\t\tfor (let i = 1; i < colorGroupingLength + 1; i++) {\n\t\t\t\tcolorPairing.push(\n\t\t\t\t\t`fill-${colorScheme}-${colorPairingOption}-${i}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Save scale type\n\t\tthis._colorScale = scaleQuantize()\n\t\t\t.domain(domain as [number, number])\n\t\t\t.range(colorPairing);\n\t}\n}\n"]}
1
+ {"version":3,"file":"heatmap.js","sourceRoot":"","sources":["heatmap.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { AxisFlavor, ScaleTypes } from '../interfaces';\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Tools from '../tools';\n\n// d3 imports\nimport { extent } from 'd3-array';\nimport { scaleQuantize, scaleLinear } from 'd3-scale';\n\n/** The gauge chart model layer */\nexport class HeatmapModel extends ChartModelCartesian {\n\tprotected axisFlavor = AxisFlavor.HOVERABLE;\n\tprivate _colorScale: any = undefined;\n\n\t// List of unique ranges and domains\n\tprivate _domains = [];\n\tprivate _ranges = [];\n\n\tprivate _matrix = {};\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\n\t\t// Check which scale types are being used\n\t\tconst axis = Tools.getProperty(this.getOptions(), 'axes');\n\n\t\t// Need to check options since scale service hasn't been instantiated\n\t\tif (\n\t\t\t(!!Tools.getProperty(axis, 'left', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'left', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'right', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'right', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'top', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'top', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS) ||\n\t\t\t(!!Tools.getProperty(axis, 'bottom', 'scaleType') &&\n\t\t\t\tTools.getProperty(axis, 'bottom', 'scaleType') !==\n\t\t\t\t\tScaleTypes.LABELS)\n\t\t) {\n\t\t\tthrow Error('Heatmap only supports label scaletypes.');\n\t\t}\n\t}\n\n\t/**\n\t * Get min and maximum value of the display data\n\t * @returns Array consisting of smallest and largest values in data\n\t */\n\tgetValueDomain() {\n\t\tconst limits = extent(this.getDisplayData(), (d: any) => d.value);\n\t\tconst domain = scaleLinear()\n\t\t\t.domain(limits as [number, number])\n\t\t\t.nice()\n\t\t\t.domain();\n\n\t\t// Ensuring limits start at 0 to make scale look more `nicer`\n\t\tif (domain[0] > 0) {\n\t\t\tdomain[0] = 0;\n\t\t} else if (domain[0] === 0 && domain[1] === 0) {\n\t\t\t// Range cannot be between 0 and 0 (itself)\n\t\t\treturn [0, 1];\n\t\t}\n\n\t\t// Ensure the median of the range is 0 if domain extends into both negative & positive\n\t\tif (domain[0] < 0 && domain[1] > 0) {\n\t\t\tif (Math.abs(domain[0]) > domain[1]) {\n\t\t\t\tdomain[1] = Math.abs(domain[0]);\n\t\t\t} else {\n\t\t\t\tdomain[0] = -domain[1];\n\t\t\t}\n\t\t}\n\n\t\treturn domain;\n\t}\n\n\t/**\n\t * @override\n\t * @param value\n\t * @returns string\n\t */\n\tgetFillColor(value: number) {\n\t\treturn this._colorScale(value);\n\t}\n\n\t/**\n\t * Generate a list of all unique domains\n\t * @returns String[]\n\t */\n\tgetUniqueDomain(): string[] {\n\t\tif (Tools.isEmpty(this._domains)) {\n\t\t\tconst displayData = this.getDisplayData();\n\t\t\tconst { cartesianScales } = this.services;\n\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst mainXAxisPosition = cartesianScales.getMainXAxisPosition();\n\t\t\tconst customDomain = cartesianScales.getCustomDomainValuesByposition(\n\t\t\t\tmainXAxisPosition\n\t\t\t);\n\n\t\t\t// Use user defined domain if specified\n\t\t\tif (!!customDomain) {\n\t\t\t\treturn customDomain;\n\t\t\t}\n\n\t\t\t// Get unique axis values & create a matrix\n\t\t\tthis._domains = Array.from(\n\t\t\t\tnew Set(\n\t\t\t\t\tdisplayData.map((d) => {\n\t\t\t\t\t\treturn d[domainIdentifier];\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn this._domains;\n\t}\n\n\t/**\n\t * Generates a list of all unique ranges\n\t * @returns String[]\n\t */\n\tgetUniqueRanges(): string[] {\n\t\tif (Tools.isEmpty(this._ranges)) {\n\t\t\tconst displayData = this.getDisplayData();\n\t\t\tconst { cartesianScales } = this.services;\n\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\tconst mainYAxisPosition = cartesianScales.getMainYAxisPosition();\n\t\t\tconst customDomain = cartesianScales.getCustomDomainValuesByposition(\n\t\t\t\tmainYAxisPosition\n\t\t\t);\n\n\t\t\t// Use user defined domain if specified\n\t\t\tif (!!customDomain) {\n\t\t\t\treturn customDomain;\n\t\t\t}\n\n\t\t\t// Get unique axis values & create a matrix\n\t\t\tthis._ranges = Array.from(\n\t\t\t\tnew Set(\n\t\t\t\t\tdisplayData.map((d) => {\n\t\t\t\t\t\treturn d[rangeIdentifier];\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn this._ranges;\n\t}\n\n\t/**\n\t * Generates a matrix (If doesn't exist) and returns it\n\t * @returns Object\n\t */\n\tgetMatrix() {\n\t\tif (Tools.isEmpty(this._matrix)) {\n\t\t\tconst uniqueDomain = this.getUniqueDomain();\n\t\t\tconst uniqueRange = this.getUniqueRanges();\n\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\t\t// Create a column\n\t\t\tconst range = {};\n\t\t\tuniqueRange.forEach((ran: any) => {\n\t\t\t\t// Initialize matrix to empty state\n\t\t\t\trange[ran] = {\n\t\t\t\t\tvalue: null,\n\t\t\t\t\tindex: -1,\n\t\t\t\t};\n\t\t\t});\n\n\t\t\t// Complete the matrix by cloning the column to all domains\n\t\t\tuniqueDomain.forEach((dom: any) => {\n\t\t\t\tthis._matrix[dom] = Tools.clone(range);\n\t\t\t});\n\n\t\t\t// Fill in user passed data\n\t\t\tthis.getDisplayData().forEach((d, i) => {\n\t\t\t\tthis._matrix[d[domainIdentifier]][d[rangeIdentifier]] = {\n\t\t\t\t\tvalue: d['value'],\n\t\t\t\t\tindex: i,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn this._matrix;\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\t// Set attributes to empty\n\t\tthis._domains = [];\n\t\tthis._ranges = [];\n\t\tthis._matrix = {};\n\n\t\treturn sanitizedData;\n\t}\n\n\t/**\n\t * Converts Object matrix into a single array\n\t * @returns Object[]\n\t */\n\tgetMatrixAsArray(): Object[] {\n\t\tif (Tools.isEmpty(this._matrix)) {\n\t\t\tthis.getMatrix();\n\t\t}\n\n\t\tconst uniqueDomain = this.getUniqueDomain();\n\t\tconst uniqueRange = this.getUniqueRanges();\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst arr = [];\n\t\tuniqueDomain.forEach((domain) => {\n\t\t\tuniqueRange.forEach((range) => {\n\t\t\t\tconst element = {\n\t\t\t\t\tvalue: this._matrix[domain][range].value,\n\t\t\t\t\tindex: this._matrix[domain][range].index,\n\t\t\t\t};\n\t\t\t\telement[domainIdentifier] = domain;\n\t\t\t\telement[rangeIdentifier] = range;\n\t\t\t\tarr.push(element);\n\t\t\t});\n\t\t});\n\n\t\treturn arr;\n\t}\n\n\t/**\n\t * Generate tabular data from display data\n\t * @returns Array<Object>\n\t */\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\tconst { primaryDomain, primaryRange } = this.assignRangeAndDomains();\n\n\t\tlet domainValueFormatter;\n\n\t\tconst result = [\n\t\t\t[primaryDomain.label, primaryRange.label, 'Value'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null\n\t\t\t\t\t? '&ndash;'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\tdatum['value'],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\t// Uses quantize scale to return class names\n\tgetColorClassName(configs: { value?: number; originalClassName?: string }) {\n\t\treturn `${configs.originalClassName} ${this._colorScale(\n\t\t\tconfigs.value as number\n\t\t)}`;\n\t}\n\n\tprotected setColorClassNames() {\n\t\tconst options = this.getOptions();\n\n\t\tconst customColors = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'colors'\n\t\t);\n\t\tconst customColorsEnabled = !Tools.isEmpty(customColors);\n\n\t\tlet colorPairingOption = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'color',\n\t\t\t'pairing',\n\t\t\t'option'\n\t\t);\n\n\t\t// If domain consists of negative and positive values, use diverging palettes\n\t\tconst domain = this.getValueDomain();\n\t\tconst colorScheme = domain[0] < 0 && domain[1] > 0 ? 'diverge' : 'mono';\n\n\t\t// Use default color pairing options if not in defined range\n\t\tif (\n\t\t\tcolorPairingOption < 1 &&\n\t\t\tcolorPairingOption > 4 &&\n\t\t\tcolorScheme === 'mono'\n\t\t) {\n\t\t\tcolorPairingOption = 1;\n\t\t} else if (\n\t\t\tcolorPairingOption < 1 &&\n\t\t\tcolorPairingOption > 2 &&\n\t\t\tcolorScheme === 'diverge'\n\t\t) {\n\t\t\tcolorPairingOption = 1;\n\t\t}\n\n\t\t// Uses css classes for fill\n\t\tconst colorPairing = customColorsEnabled ? customColors : [];\n\n\t\tif (!customColorsEnabled) {\n\t\t\t// Add class names to list and the amount based on the color scheme\n\t\t\t// Carbon charts has 11 colors for a single monochromatic palette & 17 for a divergent palette\n\t\t\tconst colorGroupingLength = colorScheme === 'diverge' ? 17 : 11;\n\t\t\tfor (let i = 1; i < colorGroupingLength + 1; i++) {\n\t\t\t\tcolorPairing.push(\n\t\t\t\t\t`fill-${colorScheme}-${colorPairingOption}-${i}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Save scale type\n\t\tthis._colorScale = scaleQuantize()\n\t\t\t.domain(domain as [number, number])\n\t\t\t.range(colorPairing);\n\t}\n}\n"]}
package/model/meter.js CHANGED
@@ -19,7 +19,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
19
19
  return r;
20
20
  };
21
21
  import { ChartModel } from './model';
22
- import { Tools } from '../tools';
22
+ import * as Tools from '../tools';
23
23
  /** The meter chart model layer which extends some of the data setting options.
24
24
  * Meter only uses 1 dataset
25
25
  * */
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","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\tgetMaximumDomain(data) {\n\t\tconst max = data.reduce(\n\t\t\t(accumulator, datum) => accumulator + datum.value,\n\t\t\t0\n\t\t);\n\t\treturn max;\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 dataValues = Tools.getProperty(this.getDisplayData());\n\n\t\tconst { value: totalValue } = dataValues\n\t\t\t? dataValues.reduce((previous, current) => {\n\t\t\t\t\treturn { value: previous.value + current.value };\n\t\t\t })\n\t\t\t: 0;\n\n\t\t// use max value if the percentage is bigger than 100%\n\t\tconst boundedValue = Tools.getProperty(options, 'meter', 'proportional')\n\t\t\t? totalValue\n\t\t\t: totalValue > 100\n\t\t\t? 100\n\t\t\t: totalValue;\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\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst status = this.getStatus();\n\t\tconst proportional = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\tlet result = [];\n\t\tlet domainMax;\n\t\t// Display the appropriate columns and fields depending on the type of meter\n\t\tif (proportional === null) {\n\t\t\tdomainMax = 100;\n\t\t\tconst datum = displayData[0];\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', ...(status ? ['Status'] : [])],\n\t\t\t\t[\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t...(status ? [status] : []),\n\t\t\t\t],\n\t\t\t];\n\t\t} else {\n\t\t\tconst total = Tools.getProperty(proportional, 'total');\n\t\t\tdomainMax = total ? total : this.getMaximumDomain(displayData);\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', 'Percentage of total'],\n\t\t\t\t...displayData.map((datum) => [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t((datum['value'] / domainMax) * 100).toFixed(2) + ' %',\n\t\t\t\t]),\n\t\t\t];\n\t\t}\n\n\t\treturn result;\n\t}\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAElC;;MAEM;AAEN;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,0CAAgB,GAAhB,UAAiB,IAAI;QACpB,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CACtB,UAAC,WAAW,EAAE,KAAK,IAAK,OAAA,WAAW,GAAG,KAAK,CAAC,KAAK,EAAzB,CAAyB,EACjD,CAAC,CACD,CAAC;QACF,OAAO,GAAG,CAAC;IACZ,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,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAEpD,IAAA;;;;sBAAiB,CAIpB;QAEL,sDAAsD;QACtD,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC;YACvE,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,GAAG,GAAG;gBAClB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,UAAU,CAAC;QAEd,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;IAED,6CAAmB,GAAnB;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QACrC,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACrC,OAAO,EACP,OAAO,EACP,cAAc,CACd,CAAC;QAEF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,CAAC;QACd,4EAA4E;QAC5E,IAAI,YAAY,KAAK,IAAI,EAAE;YAC1B,SAAS,GAAG,GAAG,CAAC;YAChB,IAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAE7B,MAAM,GAAG;gCACP,OAAO,EAAE,OAAO,GAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;oBAE/C,KAAK,CAAC,WAAW,CAAC;oBAClB,KAAK,CAAC,OAAO,CAAC;mBACX,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAE5B,CAAC;SACF;aAAM;YACN,IAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAE/D,MAAM;gBACL,CAAC,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC;eACtC,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;gBAC7B,KAAK,CAAC,WAAW,CAAC;gBAClB,KAAK,CAAC,OAAO,CAAC;gBACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;aACtD,EAJ6B,CAI7B,CAAC,CACF,CAAC;SACF;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IACF,sBAAC;AAAD,CAAC,AAlHD,CAAqC,UAAU,GAkH9C","sourcesContent":["// Internal Imports\nimport * as Configuration from '../configuration';\nimport { ChartModel } from './model';\nimport * as 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\tgetMaximumDomain(data) {\n\t\tconst max = data.reduce(\n\t\t\t(accumulator, datum) => accumulator + datum.value,\n\t\t\t0\n\t\t);\n\t\treturn max;\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 dataValues = Tools.getProperty(this.getDisplayData());\n\n\t\tconst { value: totalValue } = dataValues\n\t\t\t? dataValues.reduce((previous, current) => {\n\t\t\t\t\treturn { value: previous.value + current.value };\n\t\t\t })\n\t\t\t: 0;\n\n\t\t// use max value if the percentage is bigger than 100%\n\t\tconst boundedValue = Tools.getProperty(options, 'meter', 'proportional')\n\t\t\t? totalValue\n\t\t\t: totalValue > 100\n\t\t\t? 100\n\t\t\t: totalValue;\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\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst status = this.getStatus();\n\t\tconst proportional = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\tlet result = [];\n\t\tlet domainMax;\n\t\t// Display the appropriate columns and fields depending on the type of meter\n\t\tif (proportional === null) {\n\t\t\tdomainMax = 100;\n\t\t\tconst datum = displayData[0];\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', ...(status ? ['Status'] : [])],\n\t\t\t\t[\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t...(status ? [status] : []),\n\t\t\t\t],\n\t\t\t];\n\t\t} else {\n\t\t\tconst total = Tools.getProperty(proportional, 'total');\n\t\t\tdomainMax = total ? total : this.getMaximumDomain(displayData);\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', 'Percentage of total'],\n\t\t\t\t...displayData.map((datum) => [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t((datum['value'] / domainMax) * 100).toFixed(2) + ' %',\n\t\t\t\t]),\n\t\t\t];\n\t\t}\n\n\t\treturn result;\n\t}\n}\n"]}
package/model/model.js CHANGED
@@ -12,7 +12,7 @@ var __assign = (this && this.__assign) || function () {
12
12
  // Internal Imports
13
13
  import * as Configuration from '../configuration';
14
14
  import { histogram as histogramConfigs } from '../configuration-non-customizable';
15
- import { Tools } from '../tools';
15
+ import * as Tools from '../tools';
16
16
  import { Events, ScaleTypes } from '../interfaces';
17
17
  // D3
18
18
  import { scaleOrdinal } from 'd3-scale';
@@ -586,7 +586,13 @@ var ChartModel = /** @class */ (function () {
586
586
  csvData = d.join(',');
587
587
  csvString += i < data.length ? csvData + '\n' : csvData;
588
588
  });
589
- this.services.files.downloadCSV(csvString, 'myChart.csv');
589
+ var options = this.getOptions();
590
+ var fileName = 'myChart';
591
+ var customFilename = Tools.getProperty(options, 'fileDownload', 'fileName');
592
+ if (typeof customFilename === 'function') {
593
+ fileName = customFilename('csv');
594
+ }
595
+ this.services.files.downloadCSV(csvString, fileName + ".csv");
590
596
  };
591
597
  ChartModel.prototype.getTabularData = function (data) {
592
598
  // if data is not an array