@carbon/charts 0.50.8 → 0.51.1

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 (166) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/build/demo/data/circle-pack.d.ts +0 -6
  3. package/build/src/charts/alluvial.d.ts +2 -0
  4. package/build/src/charts/bullet.d.ts +2 -0
  5. package/build/src/charts/radar.d.ts +3 -1
  6. package/build/src/charts/tree.d.ts +2 -0
  7. package/build/src/charts/treemap.d.ts +2 -0
  8. package/build/src/charts/wordcloud.d.ts +2 -0
  9. package/build/src/components/axes/toolbar.d.ts +1 -0
  10. package/build/src/components/essentials/legend.d.ts +1 -1
  11. package/build/src/components/graphs/bullet.d.ts +0 -1
  12. package/build/src/model/alluvial.d.ts +8 -0
  13. package/build/src/model/boxplot.d.ts +1 -0
  14. package/build/src/model/bullet.d.ts +14 -0
  15. package/build/src/model/cartesian-charts.d.ts +0 -1
  16. package/build/src/model/circle-pack.d.ts +10 -0
  17. package/build/src/model/gauge.d.ts +4 -1
  18. package/build/src/model/meter.d.ts +1 -0
  19. package/build/src/model/model.d.ts +2 -0
  20. package/build/src/model/pie.d.ts +1 -0
  21. package/build/src/model/radar.d.ts +7 -0
  22. package/build/src/model/tree.d.ts +14 -0
  23. package/build/src/model/treemap.d.ts +8 -0
  24. package/build/src/model/wordcloud.d.ts +7 -0
  25. package/build/src/services/essentials/dom-utils.d.ts +3 -0
  26. package/bundle.js +1 -1
  27. package/chart.js +42 -20
  28. package/chart.js.map +1 -1
  29. package/charts/alluvial.d.ts +2 -0
  30. package/charts/alluvial.js +2 -0
  31. package/charts/alluvial.js.map +1 -1
  32. package/charts/bullet.d.ts +2 -0
  33. package/charts/bullet.js +2 -0
  34. package/charts/bullet.js.map +1 -1
  35. package/charts/radar.d.ts +3 -1
  36. package/charts/radar.js +3 -7
  37. package/charts/radar.js.map +1 -1
  38. package/charts/tree.d.ts +2 -0
  39. package/charts/tree.js +2 -0
  40. package/charts/tree.js.map +1 -1
  41. package/charts/treemap.d.ts +2 -0
  42. package/charts/treemap.js +2 -0
  43. package/charts/treemap.js.map +1 -1
  44. package/charts/wordcloud.d.ts +2 -0
  45. package/charts/wordcloud.js +3 -0
  46. package/charts/wordcloud.js.map +1 -1
  47. package/components/axes/toolbar.d.ts +1 -0
  48. package/components/axes/toolbar.js +74 -48
  49. package/components/axes/toolbar.js.map +1 -1
  50. package/components/axes/zoom-bar.js +12 -3
  51. package/components/axes/zoom-bar.js.map +1 -1
  52. package/components/component.js +2 -6
  53. package/components/component.js.map +1 -1
  54. package/components/essentials/legend.d.ts +1 -1
  55. package/components/essentials/legend.js +20 -8
  56. package/components/essentials/legend.js.map +1 -1
  57. package/components/essentials/modal.js +3 -3
  58. package/components/essentials/modal.js.map +1 -1
  59. package/components/essentials/title.js +2 -2
  60. package/components/essentials/title.js.map +1 -1
  61. package/components/essentials/tooltip.js +2 -2
  62. package/components/essentials/tooltip.js.map +1 -1
  63. package/components/graphs/alluvial.js +29 -12
  64. package/components/graphs/alluvial.js.map +1 -1
  65. package/components/graphs/area-stacked.js +1 -0
  66. package/components/graphs/area-stacked.js.map +1 -1
  67. package/components/graphs/area.js +2 -4
  68. package/components/graphs/area.js.map +1 -1
  69. package/components/graphs/boxplot.js +1 -0
  70. package/components/graphs/boxplot.js.map +1 -1
  71. package/components/graphs/bubble.js +4 -0
  72. package/components/graphs/bubble.js.map +1 -1
  73. package/components/graphs/bullet.d.ts +0 -1
  74. package/components/graphs/bullet.js +1 -12
  75. package/components/graphs/bullet.js.map +1 -1
  76. package/components/graphs/gauge.js +2 -4
  77. package/components/graphs/gauge.js.map +1 -1
  78. package/components/graphs/histogram.js +3 -1
  79. package/components/graphs/histogram.js.map +1 -1
  80. package/components/graphs/pie.js +1 -1
  81. package/components/graphs/pie.js.map +1 -1
  82. package/components/graphs/radar.js +8 -7
  83. package/components/graphs/radar.js.map +1 -1
  84. package/components/graphs/skeleton-lines.js +8 -3
  85. package/components/graphs/skeleton-lines.js.map +1 -1
  86. package/components/graphs/skeleton.js +18 -5
  87. package/components/graphs/skeleton.js.map +1 -1
  88. package/demo/data/bundle.js +1 -1
  89. package/demo/data/circle-pack.d.ts +0 -6
  90. package/demo/data/circle-pack.js +0 -6
  91. package/demo/data/circle-pack.js.map +1 -1
  92. package/demo/styles.css +85 -93
  93. package/demo/styles.css.map +1 -1
  94. package/demo/styles.min.css +1 -1
  95. package/demo/styles.min.css.map +1 -1
  96. package/demo/tsconfig.tsbuildinfo +3 -3
  97. package/demo/utils.js +2 -2
  98. package/demo/utils.js.map +1 -1
  99. package/model/alluvial.d.ts +8 -0
  100. package/model/alluvial.js +47 -0
  101. package/model/alluvial.js.map +1 -0
  102. package/model/boxplot.d.ts +1 -0
  103. package/model/boxplot.js +54 -0
  104. package/model/boxplot.js.map +1 -1
  105. package/model/bullet.d.ts +14 -0
  106. package/model/bullet.js +74 -0
  107. package/model/bullet.js.map +1 -0
  108. package/model/cartesian-charts.d.ts +0 -1
  109. package/model/cartesian-charts.js +0 -11
  110. package/model/cartesian-charts.js.map +1 -1
  111. package/model/circle-pack.d.ts +10 -0
  112. package/model/circle-pack.js +51 -0
  113. package/model/circle-pack.js.map +1 -1
  114. package/model/gauge.d.ts +4 -1
  115. package/model/gauge.js +24 -1
  116. package/model/gauge.js.map +1 -1
  117. package/model/meter.d.ts +1 -0
  118. package/model/meter.js +40 -0
  119. package/model/meter.js.map +1 -1
  120. package/model/model.d.ts +2 -0
  121. package/model/model.js +14 -0
  122. package/model/model.js.map +1 -1
  123. package/model/pie.d.ts +1 -0
  124. package/model/pie.js +21 -0
  125. package/model/pie.js.map +1 -1
  126. package/model/radar.d.ts +7 -0
  127. package/model/radar.js +52 -0
  128. package/model/radar.js.map +1 -0
  129. package/model/tree.d.ts +14 -0
  130. package/model/tree.js +56 -0
  131. package/model/tree.js.map +1 -0
  132. package/model/treemap.d.ts +8 -0
  133. package/model/treemap.js +37 -0
  134. package/model/treemap.js.map +1 -0
  135. package/model/wordcloud.d.ts +7 -0
  136. package/model/wordcloud.js +47 -0
  137. package/model/wordcloud.js.map +1 -0
  138. package/package.json +1 -1
  139. package/services/angle-utils.js +3 -1
  140. package/services/angle-utils.js.map +1 -1
  141. package/services/essentials/dom-utils.d.ts +3 -0
  142. package/services/essentials/dom-utils.js +9 -1
  143. package/services/essentials/dom-utils.js.map +1 -1
  144. package/styles/components/_legend.scss +5 -1
  145. package/styles/components/_skeleton-lines.scss +1 -2
  146. package/styles/components/_skeleton.scss +2 -7
  147. package/styles/components/_toolbar.scss +1 -1
  148. package/styles/components/_tooltip.scss +8 -2
  149. package/styles/components/_zoom-bar.scss +0 -12
  150. package/styles-g10.css +21 -23
  151. package/styles-g10.css.map +1 -1
  152. package/styles-g10.min.css +1 -1
  153. package/styles-g10.min.css.map +1 -1
  154. package/styles-g100.css +21 -23
  155. package/styles-g100.css.map +1 -1
  156. package/styles-g100.min.css +1 -1
  157. package/styles-g100.min.css.map +1 -1
  158. package/styles-g90.css +21 -23
  159. package/styles-g90.css.map +1 -1
  160. package/styles-g90.min.css +1 -1
  161. package/styles-g90.min.css.map +1 -1
  162. package/styles.css +21 -23
  163. package/styles.css.map +1 -1
  164. package/styles.min.css +1 -1
  165. package/styles.min.css.map +1 -1
  166. package/tsconfig.tsbuildinfo +162 -53
@@ -126,7 +126,7 @@
126
126
  "signature": "68cae4858c0af344da1a1f10100e7fb06e6255cae5874bc2fe35699f8d7e65a9"
127
127
  },
128
128
  "../../demo/utils.ts": {
129
- "version": "99f295800a68fdcf647d0c881089f87d0b037fac99e78b7e499441cc656a3e02",
129
+ "version": "e27f9077a015660cec5b656e787480359f4a879acdb8ea907c6ec50e38b2e706",
130
130
  "signature": "4fe7f477469cf1883226ae5bcbdbbb8d0b5508efdbf4ea909e2f7dc4393483b2"
131
131
  },
132
132
  "../../demo/data/CHART_TYPES.ts": {
@@ -174,8 +174,8 @@
174
174
  "signature": "e3c0096afbbbe8f52f7c04bc1247c816f0dac99224230da02922713863487848"
175
175
  },
176
176
  "../../demo/data/circle-pack.ts": {
177
- "version": "a24011462b444886427626676785f6a09fd384fcbac8bbd5b360b5f7a544204e",
178
- "signature": "b2bdfa0a230eabe364e7b78a21de3872166852dc8d8ae7755ccec3ef522a35c3"
177
+ "version": "ae1f5bda2ca84210da5e8107dde39268017f7448bdb3c6fe9ef30956e3e1e5ae",
178
+ "signature": "7b00ae7dcd05fee92b97b681b3aa5162ef15d785623d3dce0d73c7217eb931cc"
179
179
  },
180
180
  "../../demo/data/combo.ts": {
181
181
  "version": "b8d59a88e89f82c77a516f5f3db692065f2ca6cc6fc925a3beb08cedb4c00a3f",
package/demo/utils.js CHANGED
@@ -8,7 +8,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
8
8
  var generateThemePickerHTML = function (container, configs) {
9
9
  var div = document.createElement('div');
10
10
  div.id = 'theme-picker';
11
- div.innerHTML = "\n<fieldset class=\"bx--fieldset marginTop-45\">\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--radio-button-group \">\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button\" type=\"radio\" value=\"white\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">White</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button\" type=\"radio\" value=\"g10\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G10</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button\" type=\"radio\" value=\"g90\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G90</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button\" type=\"radio\" value=\"g100\" name=\"radio-button\" tabindex=\"0\" checked>\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G100</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</fieldset>";
11
+ div.innerHTML = "\n<fieldset class=\"bx--fieldset marginTop-45\">\n\t<legend class=\"bx--label\">Active theme</legend>\n\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--radio-button-group \">\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button\" type=\"radio\" value=\"white\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">White</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button\" type=\"radio\" value=\"g10\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G10</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button\" type=\"radio\" value=\"g90\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G90</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button\" type=\"radio\" value=\"g100\" name=\"radio-button\" tabindex=\"0\" checked>\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G100</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</fieldset>";
12
12
  container.querySelector('#charting-controls').appendChild(div);
13
13
  };
14
14
  var generateColorPalettePickerHTML = function (container, chart, configs) {
@@ -25,7 +25,7 @@ var generateColorPalettePickerHTML = function (container, chart, configs) {
25
25
  var selectedColorPalette = numberOfVariants + "-" + option;
26
26
  var div = document.createElement('div');
27
27
  div.id = 'color-palette-picker';
28
- div.innerHTML = "\n<div class=\"bx--form-item\">\n\t<div\n\tclass=\"bx--select\">\n\t<label for=\"select-id\" class=\"bx--label\">Color palette</label>\n\t\t<div class=\"bx--select-input__wrapper\">\n\t\t<select id=\"color-palette-select\" class=\"bx--select-input\">\n\t\t\t<option class=\"bx--select-option\" value=\"\" disabled selected hidden>\n\t\t\tChoose an option\n\t\t\t</option>\n\t\t\t" + Object.keys(colorPairingOptions)
28
+ div.innerHTML = "\n<div class=\"bx--form-item\">\n\t<div\n\tclass=\"bx--select\">\n\t<label for=\"color-palette-select\" class=\"bx--label\">Active color palette</label>\n\t\t<div class=\"bx--select-input__wrapper\">\n\t\t<select id=\"color-palette-select\" class=\"bx--select-input\">\n\t\t\t<option class=\"bx--select-option\" value=\"\" disabled selected hidden>\n\t\t\tChoose an option\n\t\t\t</option>\n\t\t\t" + Object.keys(colorPairingOptions)
29
29
  .map(function (colorGroup) {
30
30
  var optionsCount = colorPairingOptions[colorGroup];
31
31
  var optionsHTML = "<optgroup class=\"bx--select-optgroup\" label=\"" + colorGroup + " groups\">";
package/demo/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["const generateThemePickerHTML = (container, configs) => {\n\tconst div = document.createElement('div');\n\tdiv.id = 'theme-picker';\n\tdiv.innerHTML = `\n<fieldset class=\"bx--fieldset marginTop-45\">\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--radio-button-group \">\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button\" type=\"radio\" value=\"white\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">White</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button\" type=\"radio\" value=\"g10\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G10</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button\" type=\"radio\" value=\"g90\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G90</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button\" type=\"radio\" value=\"g100\" name=\"radio-button\" tabindex=\"0\" checked>\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G100</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</fieldset>`;\n\n\tcontainer.querySelector('#charting-controls').appendChild(div);\n};\n\nconst generateColorPalettePickerHTML = (\n\tcontainer,\n\tchart,\n\tconfigs = { colorPairingOptions: null }\n) => {\n\tconst { colorPairingOptions } = configs;\n\n\tconst chartOptions = chart.model.getOptions();\n\tconst { numberOfVariants: variants, option } = chartOptions.color.pairing;\n\n\tconst numberOfChartDataGroups = chart.model.getAllDataGroupsNames().length;\n\tconst numberOfVariants = variants || numberOfChartDataGroups;\n\n\tlet onlyCategoricalPaletteIsApplicable = false;\n\tif (numberOfChartDataGroups > 5) {\n\t\tonlyCategoricalPaletteIsApplicable = true;\n\t}\n\n\tconst selectedColorPalette = `${numberOfVariants}-${option}`;\n\n\tconst div = document.createElement('div');\n\tdiv.id = 'color-palette-picker';\n\tdiv.innerHTML = `\n<div class=\"bx--form-item\">\n\t<div\n\tclass=\"bx--select\">\n\t<label for=\"select-id\" class=\"bx--label\">Color palette</label>\n\t\t<div class=\"bx--select-input__wrapper\">\n\t\t<select id=\"color-palette-select\" class=\"bx--select-input\">\n\t\t\t<option class=\"bx--select-option\" value=\"\" disabled selected hidden>\n\t\t\tChoose an option\n\t\t\t</option>\n\t\t\t${Object.keys(colorPairingOptions)\n\t\t\t\t.map((colorGroup) => {\n\t\t\t\t\tconst optionsCount = colorPairingOptions[colorGroup];\n\t\t\t\t\tlet optionsHTML = `<optgroup class=\"bx--select-optgroup\" label=\"${colorGroup} groups\">`;\n\n\t\t\t\t\tconst numberOfVariants = parseInt(colorGroup);\n\n\t\t\t\t\tif (numberOfVariants !== 14) {\n\t\t\t\t\t\tfor (let i = 1; i <= optionsCount; i++) {\n\t\t\t\t\t\t\toptionsHTML += `\n\t\t\t\t\t\t<option class=\"bx--select-option\" ${\n\t\t\t\t\t\t\tonlyCategoricalPaletteIsApplicable ||\n\t\t\t\t\t\t\tnumberOfVariants < numberOfChartDataGroups\n\t\t\t\t\t\t\t\t? 'disabled'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t} value=\"${colorGroup}-option-${i}\" ${\n\t\t\t\t\t\t\t\tselectedColorPalette ===\n\t\t\t\t\t\t\t\t`${numberOfVariants}-${i}`\n\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t${numberOfVariants}-color groups, option ${i}\n\t\t\t\t\t\t</option>`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptionsHTML += `<option class=\"bx--select-option\" value=\"14-color-option-1\" ${\n\t\t\t\t\t\t\tselectedColorPalette === `14-1` ||\n\t\t\t\t\t\t\tonlyCategoricalPaletteIsApplicable\n\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}>\n\t\t\t\t\t\tCategorical palette\n\t\t\t\t\t</option>`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn optionsHTML;\n\t\t\t\t})\n\t\t\t\t.join('')}\n\t\t</select>\n\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform;\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--select__arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path></svg>\n\t\t</div>\n\t</div>\n\t</div>\n</div>`;\n\n\tdiv.querySelector('#color-palette-select').addEventListener(\n\t\t'change',\n\t\t(e: any) => {\n\t\t\tconst { value } = e.target;\n\t\t\tconst [numberOfVariants, pairingOption] = value.split(\n\t\t\t\t'-color-option-'\n\t\t\t);\n\n\t\t\tchartOptions.color.pairing.numberOfVariants = numberOfVariants;\n\t\t\tchartOptions.color.pairing.option = pairingOption;\n\t\t\tchart.model.setOptions(chartOptions);\n\t\t}\n\t);\n\n\tcontainer.querySelector('#charting-controls').appendChild(div);\n};\n\nexport const addControls = (\n\tcontainer,\n\tdemoGroup,\n\tchart,\n\tconfigs = { colorPairingOptions: null }\n) => {\n\tgenerateThemePickerHTML(container, configs);\n\n\tif (demoGroup?.configs?.excludeColorPaletteControl !== true) {\n\t\tgenerateColorPalettePickerHTML(container, chart, configs);\n\t}\n\n\taddRadioButtonEventListeners(container, chart, configs);\n};\n\nexport const addRadioButtonEventListeners = (container, chart, configs) => {\n\t// Add event listeners for radio buttons\n\tconst radioButtons = container.querySelectorAll(\n\t\t'div#theme-picker input.bx--radio-button'\n\t);\n\tradioButtons.forEach((radioButton) => {\n\t\tradioButton.addEventListener('click', (e: any) => {\n\t\t\tconst theme = e.target.value;\n\t\t\tcontainer.setAttribute('class', `container theme--${theme}`);\n\n\t\t\tchart.update();\n\t\t});\n\t});\n};\n\nexport const addOtherVersions = (\n\tcontainer,\n\tdemoGroup,\n\tdemo,\n\tconfigs = { currentVersion: 'vanilla' }\n) => {\n\tconst { currentVersion } = configs;\n\n\tconst demoGroupClassification = (demoGroup.type || '').replace(\n\t\t'-chart',\n\t\t''\n\t);\n\n\tconst div = document.createElement('div');\n\tdiv.setAttribute('class', 'bx--row resource-card-group');\n\n\tlet htmlContent = '';\n\tconst otherVersions = [\n\t\t...(currentVersion !== 'vanilla'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'vanilla',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'react'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'React',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/react/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'angular'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Angular',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/angular/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'vue'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Vue',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/vue/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'svelte'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Svelte',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/svelte/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t];\n\n\totherVersions.forEach((otherVersion) => {\n\t\thtmlContent += `<div class=\"bx--no-gutter-sm bx--col-md-6 bx--col-lg-6\">\n\t\t<div class=\"bx--resource-card\">\n\t\t <div class=\"bx--aspect-ratio bx--aspect-ratio--2x1\">\n\t\t\t<div class=\"bx--aspect-ratio--object\">\n\t\t\t <a href=\"${otherVersion.link}\" class=\"bx--tile bx--tile--clickable\">\n\t\t\t\t<h5 class=\"bx--resource-card__subtitle\">${otherVersion.name}</h5>\n\t\t\t\t<div class=\"bx--resource-card__icon--img\"></div>\n\t\t\t\t<div class=\"bx--resource-card__icon--action\">\n\t\t\t\t <svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Open resource\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\">\n\t\t\t\t\t<path d=\"M26,28H6a2.0027,2.0027,0,0,1-2-2V6A2.0027,2.0027,0,0,1,6,4H16V6H6V26H26V16h2V26A2.0027,2.0027,0,0,1,26,28Z\"></path>\n\t\t\t\t\t<path d=\"M20 2L20 4 26.586 4 18 12.586 19.414 14 28 5.414 28 12 30 12 30 2 20 2z\"></path>\n\t\t\t\t </svg>\n\t\t\t\t</div>\n\t\t\t </a>\n\t\t\t</div>\n\t\t </div>\n\t\t</div>\n\t </div>`;\n\t});\n\n\tdiv.innerHTML = htmlContent;\n\tcontainer.querySelector('#other-versions').appendChild(div);\n};\n\n/**\n * Generates random data going backwards from now once a minute\n * @param {number} quantity number of data points to create\n * @param {number} min min range of integer value\n * @param {number} max max range of integer value\n * @returns {array} randomly generated array of objects with a date and value field\n */\nexport const generateRandomData = (quantity, min, max) => {\n\tconst now = Date.now();\n\treturn Array(quantity)\n\t\t.fill(0)\n\t\t.map((value, index) => {\n\t\t\treturn {\n\t\t\t\tgroup: 'group',\n\t\t\t\tvalue: Math.floor(Math.random() * (max - min + 1) + min),\n\t\t\t\tdate: new Date(now.valueOf() + (index - quantity) * 60000), // go forward a minute for every value\n\t\t\t};\n\t\t});\n};\n/**\n * Adds a generate demo data form to the story\n */\nexport const generateHighScaleDemoDataForm = () =>\n\t`<form id=\"demo-data\"><label for=\"demo-data-name\">Records to generate: </label><input type=\"number\" id=\"demo-data-number\" name=\"number\" required\n\t size=\"5\" value=\"100\"><input type=\"submit\"></label></form>`;\nexport const addDemoDataFormListeners = (container, demo, chart) => {\n\t// Add event listeners for form\n\tconst form = container.querySelector('form#demo-data');\n\tif (form) {\n\t\tform.addEventListener('submit', (e: any) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tconst recordsToGenerate =\n\t\t\t\tparseInt(e.currentTarget[0].value) || 2000;\n\t\t\tchart.model.setData(\n\t\t\t\tgenerateRandomData(recordsToGenerate, 100, 500)\n\t\t\t);\n\t\t\tchart.update();\n\t\t});\n\t}\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["const generateThemePickerHTML = (container, configs) => {\n\tconst div = document.createElement('div');\n\tdiv.id = 'theme-picker';\n\tdiv.innerHTML = `\n<fieldset class=\"bx--fieldset marginTop-45\">\n\t<legend class=\"bx--label\">Active theme</legend>\n\n\t<div class=\"bx--form-item\">\n\t\t<div class=\"bx--radio-button-group \">\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button\" type=\"radio\" value=\"white\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-1\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">White</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button\" type=\"radio\" value=\"g10\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-2\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G10</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button\" type=\"radio\" value=\"g90\" name=\"radio-button\" tabindex=\"0\">\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-3\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G90</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class=\"bx--radio-button-wrapper\">\n\t\t\t\t<input id=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button\" type=\"radio\" value=\"g100\" name=\"radio-button\" tabindex=\"0\" checked>\n\t\t\t\t<label for=\"radio-button-abfeuherm2f-4\" class=\"bx--radio-button__label\">\n\t\t\t\t<span class=\"bx--radio-button__appearance\"></span>\n\t\t\t\t<span class=\"bx--radio-button__label-text\">G100</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</fieldset>`;\n\n\tcontainer.querySelector('#charting-controls').appendChild(div);\n};\n\nconst generateColorPalettePickerHTML = (\n\tcontainer,\n\tchart,\n\tconfigs = { colorPairingOptions: null }\n) => {\n\tconst { colorPairingOptions } = configs;\n\n\tconst chartOptions = chart.model.getOptions();\n\tconst { numberOfVariants: variants, option } = chartOptions.color.pairing;\n\n\tconst numberOfChartDataGroups = chart.model.getAllDataGroupsNames().length;\n\tconst numberOfVariants = variants || numberOfChartDataGroups;\n\n\tlet onlyCategoricalPaletteIsApplicable = false;\n\tif (numberOfChartDataGroups > 5) {\n\t\tonlyCategoricalPaletteIsApplicable = true;\n\t}\n\n\tconst selectedColorPalette = `${numberOfVariants}-${option}`;\n\n\tconst div = document.createElement('div');\n\tdiv.id = 'color-palette-picker';\n\tdiv.innerHTML = `\n<div class=\"bx--form-item\">\n\t<div\n\tclass=\"bx--select\">\n\t<label for=\"color-palette-select\" class=\"bx--label\">Active color palette</label>\n\t\t<div class=\"bx--select-input__wrapper\">\n\t\t<select id=\"color-palette-select\" class=\"bx--select-input\">\n\t\t\t<option class=\"bx--select-option\" value=\"\" disabled selected hidden>\n\t\t\tChoose an option\n\t\t\t</option>\n\t\t\t${Object.keys(colorPairingOptions)\n\t\t\t\t.map((colorGroup) => {\n\t\t\t\t\tconst optionsCount = colorPairingOptions[colorGroup];\n\t\t\t\t\tlet optionsHTML = `<optgroup class=\"bx--select-optgroup\" label=\"${colorGroup} groups\">`;\n\n\t\t\t\t\tconst numberOfVariants = parseInt(colorGroup);\n\n\t\t\t\t\tif (numberOfVariants !== 14) {\n\t\t\t\t\t\tfor (let i = 1; i <= optionsCount; i++) {\n\t\t\t\t\t\t\toptionsHTML += `\n\t\t\t\t\t\t<option class=\"bx--select-option\" ${\n\t\t\t\t\t\t\tonlyCategoricalPaletteIsApplicable ||\n\t\t\t\t\t\t\tnumberOfVariants < numberOfChartDataGroups\n\t\t\t\t\t\t\t\t? 'disabled'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t} value=\"${colorGroup}-option-${i}\" ${\n\t\t\t\t\t\t\t\tselectedColorPalette ===\n\t\t\t\t\t\t\t\t`${numberOfVariants}-${i}`\n\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t${numberOfVariants}-color groups, option ${i}\n\t\t\t\t\t\t</option>`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptionsHTML += `<option class=\"bx--select-option\" value=\"14-color-option-1\" ${\n\t\t\t\t\t\t\tselectedColorPalette === `14-1` ||\n\t\t\t\t\t\t\tonlyCategoricalPaletteIsApplicable\n\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}>\n\t\t\t\t\t\tCategorical palette\n\t\t\t\t\t</option>`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn optionsHTML;\n\t\t\t\t})\n\t\t\t\t.join('')}\n\t\t</select>\n\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform;\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--select__arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z\"></path></svg>\n\t\t</div>\n\t</div>\n\t</div>\n</div>`;\n\n\tdiv.querySelector('#color-palette-select').addEventListener(\n\t\t'change',\n\t\t(e: any) => {\n\t\t\tconst { value } = e.target;\n\t\t\tconst [numberOfVariants, pairingOption] = value.split(\n\t\t\t\t'-color-option-'\n\t\t\t);\n\n\t\t\tchartOptions.color.pairing.numberOfVariants = numberOfVariants;\n\t\t\tchartOptions.color.pairing.option = pairingOption;\n\t\t\tchart.model.setOptions(chartOptions);\n\t\t}\n\t);\n\n\tcontainer.querySelector('#charting-controls').appendChild(div);\n};\n\nexport const addControls = (\n\tcontainer,\n\tdemoGroup,\n\tchart,\n\tconfigs = { colorPairingOptions: null }\n) => {\n\tgenerateThemePickerHTML(container, configs);\n\n\tif (demoGroup?.configs?.excludeColorPaletteControl !== true) {\n\t\tgenerateColorPalettePickerHTML(container, chart, configs);\n\t}\n\n\taddRadioButtonEventListeners(container, chart, configs);\n};\n\nexport const addRadioButtonEventListeners = (container, chart, configs) => {\n\t// Add event listeners for radio buttons\n\tconst radioButtons = container.querySelectorAll(\n\t\t'div#theme-picker input.bx--radio-button'\n\t);\n\tradioButtons.forEach((radioButton) => {\n\t\tradioButton.addEventListener('click', (e: any) => {\n\t\t\tconst theme = e.target.value;\n\t\t\tcontainer.setAttribute('class', `container theme--${theme}`);\n\n\t\t\tchart.update();\n\t\t});\n\t});\n};\n\nexport const addOtherVersions = (\n\tcontainer,\n\tdemoGroup,\n\tdemo,\n\tconfigs = { currentVersion: 'vanilla' }\n) => {\n\tconst { currentVersion } = configs;\n\n\tconst demoGroupClassification = (demoGroup.type || '').replace(\n\t\t'-chart',\n\t\t''\n\t);\n\n\tconst div = document.createElement('div');\n\tdiv.setAttribute('class', 'bx--row resource-card-group');\n\n\tlet htmlContent = '';\n\tconst otherVersions = [\n\t\t...(currentVersion !== 'vanilla'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'vanilla',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'react'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'React',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/react/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'angular'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Angular',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/angular/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'vue'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Vue',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/vue/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t\t...(currentVersion !== 'svelte'\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Svelte',\n\t\t\t\t\t\tlink: `https://carbon-design-system.github.io/carbon-charts/svelte/?path=/story/${demoGroupClassification}-charts-${demo.id}`,\n\t\t\t\t\t},\n\t\t\t ]\n\t\t\t: []),\n\t];\n\n\totherVersions.forEach((otherVersion) => {\n\t\thtmlContent += `<div class=\"bx--no-gutter-sm bx--col-md-6 bx--col-lg-6\">\n\t\t<div class=\"bx--resource-card\">\n\t\t <div class=\"bx--aspect-ratio bx--aspect-ratio--2x1\">\n\t\t\t<div class=\"bx--aspect-ratio--object\">\n\t\t\t <a href=\"${otherVersion.link}\" class=\"bx--tile bx--tile--clickable\">\n\t\t\t\t<h5 class=\"bx--resource-card__subtitle\">${otherVersion.name}</h5>\n\t\t\t\t<div class=\"bx--resource-card__icon--img\"></div>\n\t\t\t\t<div class=\"bx--resource-card__icon--action\">\n\t\t\t\t <svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Open resource\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\">\n\t\t\t\t\t<path d=\"M26,28H6a2.0027,2.0027,0,0,1-2-2V6A2.0027,2.0027,0,0,1,6,4H16V6H6V26H26V16h2V26A2.0027,2.0027,0,0,1,26,28Z\"></path>\n\t\t\t\t\t<path d=\"M20 2L20 4 26.586 4 18 12.586 19.414 14 28 5.414 28 12 30 12 30 2 20 2z\"></path>\n\t\t\t\t </svg>\n\t\t\t\t</div>\n\t\t\t </a>\n\t\t\t</div>\n\t\t </div>\n\t\t</div>\n\t </div>`;\n\t});\n\n\tdiv.innerHTML = htmlContent;\n\tcontainer.querySelector('#other-versions').appendChild(div);\n};\n\n/**\n * Generates random data going backwards from now once a minute\n * @param {number} quantity number of data points to create\n * @param {number} min min range of integer value\n * @param {number} max max range of integer value\n * @returns {array} randomly generated array of objects with a date and value field\n */\nexport const generateRandomData = (quantity, min, max) => {\n\tconst now = Date.now();\n\treturn Array(quantity)\n\t\t.fill(0)\n\t\t.map((value, index) => {\n\t\t\treturn {\n\t\t\t\tgroup: 'group',\n\t\t\t\tvalue: Math.floor(Math.random() * (max - min + 1) + min),\n\t\t\t\tdate: new Date(now.valueOf() + (index - quantity) * 60000), // go forward a minute for every value\n\t\t\t};\n\t\t});\n};\n/**\n * Adds a generate demo data form to the story\n */\nexport const generateHighScaleDemoDataForm = () =>\n\t`<form id=\"demo-data\"><label for=\"demo-data-name\">Records to generate: </label><input type=\"number\" id=\"demo-data-number\" name=\"number\" required\n\t size=\"5\" value=\"100\"><input type=\"submit\"></label></form>`;\nexport const addDemoDataFormListeners = (container, demo, chart) => {\n\t// Add event listeners for form\n\tconst form = container.querySelector('form#demo-data');\n\tif (form) {\n\t\tform.addEventListener('submit', (e: any) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\tconst recordsToGenerate =\n\t\t\t\tparseInt(e.currentTarget[0].value) || 2000;\n\t\t\tchart.model.setData(\n\t\t\t\tgenerateRandomData(recordsToGenerate, 100, 500)\n\t\t\t);\n\t\t\tchart.update();\n\t\t});\n\t}\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { ChartModelCartesian } from './cartesian-charts';
2
+ /**
3
+ * Alluvial chart model layer
4
+ */
5
+ export declare class AlluvialChartModel extends ChartModelCartesian {
6
+ constructor(services: any);
7
+ getTabularDataArray(): any[];
8
+ }
@@ -0,0 +1,47 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
15
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
16
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
17
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
18
+ r[k] = a[j];
19
+ return r;
20
+ };
21
+ // Internal Imports
22
+ import { ChartModelCartesian } from './cartesian-charts';
23
+ /**
24
+ * Alluvial chart model layer
25
+ */
26
+ var AlluvialChartModel = /** @class */ (function (_super) {
27
+ __extends(AlluvialChartModel, _super);
28
+ function AlluvialChartModel(services) {
29
+ return _super.call(this, services) || this;
30
+ }
31
+ AlluvialChartModel.prototype.getTabularDataArray = function () {
32
+ var displayData = this.getDisplayData();
33
+ // Sort array by source to get a close depiction of the alluvial chart
34
+ displayData.sort(function (a, b) { return a['source'].localeCompare(b['source']); });
35
+ var result = __spreadArrays([
36
+ ['Source', 'Target', 'Value']
37
+ ], displayData.map(function (datum) { return [
38
+ datum['source'],
39
+ datum['target'],
40
+ datum['value'],
41
+ ]; }));
42
+ return result;
43
+ };
44
+ return AlluvialChartModel;
45
+ }(ChartModelCartesian));
46
+ export { AlluvialChartModel };
47
+ //# sourceMappingURL=../../src/model/alluvial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH;IAAwC,sCAAmB;IAC1D,4BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,gDAAmB,GAAnB;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,sEAAsE;QACtE,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAtC,CAAsC,CAAC,CAAC;QAEnE,IAAM,MAAM;YACX,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;WAC1B,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,QAAQ,CAAC;YACf,KAAK,CAAC,QAAQ,CAAC;YACf,KAAK,CAAC,OAAO,CAAC;SACd,EAJ6B,CAI7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,yBAAC;AAAD,CAAC,AAtBD,CAAwC,mBAAmB,GAsB1D","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\n\n/**\n * Alluvial chart model layer\n */\nexport class AlluvialChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\t// Sort array by source to get a close depiction of the alluvial chart\n\t\tdisplayData.sort((a, b) => a['source'].localeCompare(b['source']));\n\n\t\tconst result = [\n\t\t\t['Source', 'Target', 'Value'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['source'],\n\t\t\t\tdatum['target'],\n\t\t\t\tdatum['value'],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
@@ -9,5 +9,6 @@ export declare class BoxplotChartModel extends ChartModelCartesian {
9
9
  q_75: number;
10
10
  };
11
11
  getBoxplotData(): any[];
12
+ getTabularDataArray(): any[][];
12
13
  protected setColorClassNames(): void;
13
14
  }
package/model/boxplot.js CHANGED
@@ -11,6 +11,13 @@ var __extends = (this && this.__extends) || (function () {
11
11
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
12
  };
13
13
  })();
14
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
15
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
16
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
17
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
18
+ r[k] = a[j];
19
+ return r;
20
+ };
14
21
  // Internal Imports
15
22
  import { ChartModelCartesian } from './cartesian-charts';
16
23
  import * as Configuration from '../configuration';
@@ -96,6 +103,53 @@ var BoxplotChartModel = /** @class */ (function (_super) {
96
103
  }
97
104
  return boxplotData;
98
105
  };
106
+ BoxplotChartModel.prototype.getTabularDataArray = function () {
107
+ var options = this.getOptions();
108
+ var groupMapsTo = options.data.groupMapsTo;
109
+ var boxplotData = this.getBoxplotData();
110
+ var result = __spreadArrays([
111
+ [
112
+ 'Group',
113
+ 'Minimum',
114
+ 'Q1',
115
+ 'Median',
116
+ 'Q3',
117
+ 'Maximum',
118
+ 'IQR',
119
+ 'Outlier(s)',
120
+ ]
121
+ ], boxplotData.map(function (datum) {
122
+ var outliers = Tools.getProperty(datum, 'outliers');
123
+ if (outliers === null || outliers.length === 0) {
124
+ outliers = ['&ndash;'];
125
+ }
126
+ return [
127
+ datum[groupMapsTo],
128
+ Tools.getProperty(datum, 'whiskers', 'min') !== null
129
+ ? Tools.getProperty(datum, 'whiskers', 'min').toLocaleString()
130
+ : '&ndash;',
131
+ Tools.getProperty(datum, 'quartiles', 'q_25') !== null
132
+ ? Tools.getProperty(datum, 'quartiles', 'q_25').toLocaleString()
133
+ : '&ndash;',
134
+ Tools.getProperty(datum, 'quartiles', 'q_50') !== null
135
+ ? Tools.getProperty(datum, 'quartiles', 'q_50').toLocaleString()
136
+ : '&ndash;',
137
+ Tools.getProperty(datum, 'quartiles', 'q_75') !== null
138
+ ? Tools.getProperty(datum, 'quartiles', 'q_75').toLocaleString()
139
+ : '&ndash;',
140
+ Tools.getProperty(datum, 'whiskers', 'max') !== null
141
+ ? Tools.getProperty(datum, 'whiskers', 'max').toLocaleString()
142
+ : '&ndash;',
143
+ Tools.getProperty(datum, 'quartiles', 'q_75') !== null &&
144
+ Tools.getProperty(datum, 'quartiles', 'q_25') !== null
145
+ ? (Tools.getProperty(datum, 'quartiles', 'q_75') -
146
+ Tools.getProperty(datum, 'quartiles', 'q_25')).toLocaleString()
147
+ : '&ndash;',
148
+ outliers.map(function (d) { return d.toLocaleString(); }).join(','),
149
+ ];
150
+ }));
151
+ return result;
152
+ };
99
153
  BoxplotChartModel.prototype.setColorClassNames = function () {
100
154
  // monochrome
101
155
  var numberOfColors = 1;
@@ -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\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":"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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"]}
@@ -0,0 +1,14 @@
1
+ import { ChartModelCartesian } from './cartesian-charts';
2
+ /**
3
+ * Bullet chart model layer
4
+ */
5
+ export declare class BulletChartModel extends ChartModelCartesian {
6
+ constructor(services: any);
7
+ /**
8
+ * Determines the index of the performance area titles to use
9
+ * @param datum
10
+ * @returns number
11
+ */
12
+ getMatchingRangeIndexForDatapoint(datum: any): any;
13
+ getTabularDataArray(): any[];
14
+ }
@@ -0,0 +1,74 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
15
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
16
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
17
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
18
+ r[k] = a[j];
19
+ return r;
20
+ };
21
+ // Internal Imports
22
+ import { ChartModelCartesian } from './cartesian-charts';
23
+ import { Tools } from '../tools';
24
+ /**
25
+ * Bullet chart model layer
26
+ */
27
+ var BulletChartModel = /** @class */ (function (_super) {
28
+ __extends(BulletChartModel, _super);
29
+ function BulletChartModel(services) {
30
+ return _super.call(this, services) || this;
31
+ }
32
+ /**
33
+ * Determines the index of the performance area titles to use
34
+ * @param datum
35
+ * @returns number
36
+ */
37
+ BulletChartModel.prototype.getMatchingRangeIndexForDatapoint = function (datum) {
38
+ var matchingRangeIndex;
39
+ for (var i = datum.ranges.length - 1; i > 0; i--) {
40
+ var range = datum.ranges[i];
41
+ if (datum.value >= range) {
42
+ matchingRangeIndex = i;
43
+ return matchingRangeIndex;
44
+ }
45
+ }
46
+ return 0;
47
+ };
48
+ BulletChartModel.prototype.getTabularDataArray = function () {
49
+ var _this = this;
50
+ var displayData = this.getDisplayData();
51
+ var options = this.getOptions();
52
+ var groupMapsTo = options.data.groupMapsTo;
53
+ var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
54
+ var performanceAreaTitles = Tools.getProperty(options, 'bullet', 'performanceAreaTitles');
55
+ var result = __spreadArrays([
56
+ ['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance']
57
+ ], displayData.map(function (datum) { return [
58
+ datum['title'],
59
+ datum[groupMapsTo],
60
+ datum['value'] === null ? '&ndash;' : datum['value'],
61
+ Tools.getProperty(datum, 'marker') === null
62
+ ? '&ndash;'
63
+ : datum['marker'],
64
+ Tools.getProperty(datum, 'marker') === null
65
+ ? '&ndash;'
66
+ : Math.floor((datum[rangeIdentifier] / datum.marker) * 100) + "%",
67
+ performanceAreaTitles[_this.getMatchingRangeIndexForDatapoint(datum)],
68
+ ]; }));
69
+ return result;
70
+ };
71
+ return BulletChartModel;
72
+ }(ChartModelCartesian));
73
+ export { BulletChartModel };
74
+ //# sourceMappingURL=../../src/model/bullet.js.map
@@ -0,0 +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"]}
@@ -6,7 +6,6 @@ export declare class ChartModelCartesian extends ChartModel {
6
6
  constructor(services: any);
7
7
  private assignRangeAndDomains;
8
8
  getTabularDataArray(): any[];
9
- exportToCSV(): void;
10
9
  setData(newData: any): any;
11
10
  /**
12
11
  * @param zoomBarData any special zoom bar data to use instead of the model data
@@ -108,17 +108,6 @@ var ChartModelCartesian = /** @class */ (function (_super) {
108
108
  : [])); }));
109
109
  return result;
110
110
  };
111
- ChartModelCartesian.prototype.exportToCSV = function () {
112
- var data = this.getTabularDataArray().map(function (row) {
113
- return row.map(function (column) { return "\"" + column + "\""; });
114
- });
115
- var csvString = '', csvData = '';
116
- data.forEach(function (d, i) {
117
- csvData = d.join(',');
118
- csvString += i < data.length ? csvData + '\n' : csvData;
119
- });
120
- this.services.files.downloadCSV(csvString, 'myChart.csv');
121
- };
122
111
  ChartModelCartesian.prototype.setData = function (newData) {
123
112
  var data;
124
113
  if (newData) {
@@ -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 } 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\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate 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\texportToCSV() {\n\t\tlet data = this.getTabularDataArray().map((row) =>\n\t\t\trow.map((column) => `\\\"${column}\\\"`)\n\t\t);\n\n\t\tlet csvString = '',\n\t\t\tcsvData = '';\n\t\tdata.forEach(function (d, i) {\n\t\t\tcsvData = d.join(',');\n\t\t\tcsvString += i < data.length ? csvData + '\\n' : csvData;\n\t\t});\n\n\t\tthis.services.files.downloadCSV(csvString, 'myChart.csv');\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 { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions } 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\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate 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"]}
@@ -23,4 +23,14 @@ export declare class CirclePackChartModel extends ChartModel {
23
23
  hasParentNode(): boolean;
24
24
  setDataGroups(): void;
25
25
  protected setChildrenDataGroup(node: any, name: any): any;
26
+ getTabularDataArray(): string[][];
27
+ /**
28
+ * Recursively determine the relationship between all the nested elements in the child
29
+ * @param children: Object
30
+ * @param parent: String
31
+ * @param result: Array<Object>
32
+ * @param totalSum: number
33
+ * @returns: number
34
+ */
35
+ private getChildrenDatums;
26
36
  }
@@ -132,6 +132,57 @@ var CirclePackChartModel = /** @class */ (function (_super) {
132
132
  return __assign(__assign({}, node), { dataGroupName: name });
133
133
  }
134
134
  };
135
+ CirclePackChartModel.prototype.getTabularDataArray = function () {
136
+ var _this = this;
137
+ var displayData = this.getDisplayData();
138
+ var result = [['Child', 'Parent', 'Value']];
139
+ displayData.forEach(function (datum) {
140
+ var value = datum.value ? datum.value : 0;
141
+ if (datum.children) {
142
+ // Call recursive function
143
+ value += _this.getChildrenDatums(datum.children, datum.name, result, 0);
144
+ }
145
+ result.push(['&ndash;', datum.name, value]);
146
+ });
147
+ return result;
148
+ };
149
+ /**
150
+ * Recursively determine the relationship between all the nested elements in the child
151
+ * @param children: Object
152
+ * @param parent: String
153
+ * @param result: Array<Object>
154
+ * @param totalSum: number
155
+ * @returns: number
156
+ */
157
+ CirclePackChartModel.prototype.getChildrenDatums = function (children, parent, result, totalSum) {
158
+ var _this = this;
159
+ if (result === void 0) { result = []; }
160
+ if (totalSum === void 0) { totalSum = 0; }
161
+ var grandParent = parent;
162
+ children.forEach(function (child) {
163
+ var parent = child.name;
164
+ var sum = 0;
165
+ if (child.children) {
166
+ if (child.children.length > 0) {
167
+ if (typeof child.value === 'number') {
168
+ totalSum += child.value;
169
+ }
170
+ sum += _this.getChildrenDatums(child.children, parent, result, sum);
171
+ result.push([parent, grandParent, sum]);
172
+ totalSum += sum;
173
+ }
174
+ }
175
+ else {
176
+ var value = 0;
177
+ if (typeof child.value === 'number') {
178
+ value = child.value;
179
+ totalSum += child.value;
180
+ }
181
+ result.push([child.name, grandParent, value]);
182
+ }
183
+ });
184
+ return totalSum;
185
+ };
135
186
  return CirclePackChartModel;
136
187
  }(ChartModel));
137
188
  export { CirclePackChartModel };