@carbon/charts 0.44.1 → 0.46.4

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 (101) hide show
  1. package/CHANGELOG.md +65 -18
  2. package/README.md +2 -2
  3. package/build/demo/data/donut.d.ts +11 -0
  4. package/build/demo/data/meter.d.ts +31 -0
  5. package/build/demo/data/pie.d.ts +11 -0
  6. package/build/src/components/essentials/title-meter.d.ts +2 -0
  7. package/build/src/components/graphs/meter.d.ts +3 -0
  8. package/build/src/components/index.d.ts +0 -1
  9. package/build/src/configuration-non-customizable.d.ts +8 -0
  10. package/build/src/configuration.d.ts +2 -1
  11. package/build/src/interfaces/charts.d.ts +17 -0
  12. package/build/src/interfaces/events.d.ts +9 -0
  13. package/build/src/model/meter.d.ts +1 -2
  14. package/build/src/tools.d.ts +2 -1
  15. package/bundle.js +1 -1
  16. package/charts/histogram.js.map +1 -1
  17. package/charts/meter.js +7 -3
  18. package/charts/meter.js.map +1 -1
  19. package/components/axes/ruler-binned.js.map +1 -1
  20. package/components/essentials/title-meter.d.ts +2 -0
  21. package/components/essentials/title-meter.js +123 -24
  22. package/components/essentials/title-meter.js.map +1 -1
  23. package/components/essentials/title.js +3 -1
  24. package/components/essentials/title.js.map +1 -1
  25. package/components/graphs/bar-stacked.js +1 -1
  26. package/components/graphs/bar-stacked.js.map +1 -1
  27. package/components/graphs/donut.js +1 -1
  28. package/components/graphs/donut.js.map +1 -1
  29. package/components/graphs/histogram.js.map +1 -1
  30. package/components/graphs/meter.d.ts +3 -0
  31. package/components/graphs/meter.js +176 -21
  32. package/components/graphs/meter.js.map +1 -1
  33. package/components/graphs/pie.js +10 -9
  34. package/components/graphs/pie.js.map +1 -1
  35. package/components/index.d.ts +0 -1
  36. package/components/index.js +0 -1
  37. package/components/index.js.map +1 -1
  38. package/configuration-non-customizable.d.ts +8 -0
  39. package/configuration-non-customizable.js +8 -0
  40. package/configuration-non-customizable.js.map +1 -1
  41. package/configuration.d.ts +2 -1
  42. package/configuration.js +9 -1
  43. package/configuration.js.map +1 -1
  44. package/demo/create-codesandbox.js +6 -5
  45. package/demo/create-codesandbox.js.map +1 -1
  46. package/demo/data/bundle.js +1 -1
  47. package/demo/data/donut.d.ts +11 -0
  48. package/demo/data/donut.js +10 -1
  49. package/demo/data/donut.js.map +1 -1
  50. package/demo/data/histogram.js +2 -2
  51. package/demo/data/histogram.js.map +1 -1
  52. package/demo/data/index.js +25 -0
  53. package/demo/data/index.js.map +1 -1
  54. package/demo/data/meter.d.ts +31 -0
  55. package/demo/data/meter.js +35 -0
  56. package/demo/data/meter.js.map +1 -1
  57. package/demo/data/pie.d.ts +11 -0
  58. package/demo/data/pie.js +16 -0
  59. package/demo/data/pie.js.map +1 -1
  60. package/demo/styles.css +46 -0
  61. package/demo/styles.css.map +1 -1
  62. package/demo/styles.min.css +1 -1
  63. package/demo/styles.min.css.map +1 -1
  64. package/demo/tsconfig.tsbuildinfo +9 -9
  65. package/interfaces/axis-scales.js.map +1 -1
  66. package/interfaces/charts.d.ts +17 -0
  67. package/interfaces/charts.js.map +1 -1
  68. package/interfaces/events.d.ts +9 -0
  69. package/interfaces/events.js +10 -0
  70. package/interfaces/events.js.map +1 -1
  71. package/model/meter.d.ts +1 -2
  72. package/model/meter.js +4 -14
  73. package/model/meter.js.map +1 -1
  74. package/package.json +1 -1
  75. package/styles/components/_legend.scss +4 -1
  76. package/styles/components/_meter-title.scss +4 -0
  77. package/styles/graphs/_meter.scss +12 -0
  78. package/styles-g10.css +11 -0
  79. package/styles-g10.css.map +1 -1
  80. package/styles-g10.min.css +1 -1
  81. package/styles-g10.min.css.map +1 -1
  82. package/styles-g100.css +12 -0
  83. package/styles-g100.css.map +1 -1
  84. package/styles-g100.min.css +1 -1
  85. package/styles-g100.min.css.map +1 -1
  86. package/styles-g90.css +12 -0
  87. package/styles-g90.css.map +1 -1
  88. package/styles-g90.min.css +1 -1
  89. package/styles-g90.min.css.map +1 -1
  90. package/styles.css +11 -0
  91. package/styles.css.map +1 -1
  92. package/styles.min.css +1 -1
  93. package/styles.min.css.map +1 -1
  94. package/tools.d.ts +2 -1
  95. package/tools.js +16 -9
  96. package/tools.js.map +1 -1
  97. package/tsconfig.tsbuildinfo +30 -50
  98. package/build/src/components/essentials/tooltip-histogram.d.ts +0 -26
  99. package/components/essentials/tooltip-histogram.d.ts +0 -26
  100. package/components/essentials/tooltip-histogram.js +0 -154
  101. package/components/essentials/tooltip-histogram.js.map +0 -1
@@ -1,26 +0,0 @@
1
- import { AxisChartsTooltip } from './tooltip-axis';
2
- export declare class TooltipHistogram extends AxisChartsTooltip {
3
- init(): void;
4
- /**
5
- * Get the position of the tooltip relative to the active hovered bar. Tooltip should appear above
6
- * positive valued data and below negative value data.
7
- * @param hoveredElement
8
- */
9
- getTooltipPosition(hoveredElement: any, data?: any): {
10
- placement: string;
11
- position: {
12
- left: number;
13
- top: number;
14
- };
15
- };
16
- /**
17
- * Returns the html for the bar single point tooltip
18
- * @param data associated values for the hovered bar
19
- */
20
- getTooltipHTML(e: any): string;
21
- /**
22
- * Multip tooltips for bar charts include totals for each stack
23
- * @param data
24
- */
25
- getMultilineTooltipHTML(data: any): string;
26
- }
@@ -1,154 +0,0 @@
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
- import { AxisChartsTooltip } from './tooltip-axis';
15
- import { Tools } from '../../tools';
16
- import { DOMUtils } from '../../services';
17
- import { CartesianOrientations, Events, } from './../../interfaces';
18
- // import the settings for the css prefix
19
- import settings from 'carbon-components/es/globals/js/settings';
20
- // D3 Imports
21
- import { select } from 'd3-selection';
22
- import { min } from 'd3-array';
23
- var TooltipHistogram = /** @class */ (function (_super) {
24
- __extends(TooltipHistogram, _super);
25
- function TooltipHistogram() {
26
- return _super !== null && _super.apply(this, arguments) || this;
27
- }
28
- TooltipHistogram.prototype.init = function () {
29
- var _this = this;
30
- // Grab the tooltip element
31
- var holder = select(this.services.domUtils.getHolder());
32
- var chartprefix = Tools.getProperty(this.model.getOptions(), 'style', 'prefix');
33
- this.tooltip = DOMUtils.appendOrSelect(holder, "div." + settings.prefix + "--" + chartprefix + "--tooltip");
34
- // Apply html content to the tooltip
35
- var tooltipTextContainer = DOMUtils.appendOrSelect(this.tooltip, 'div.content-box');
36
- this.tooltip.style('max-width', null);
37
- // listen to show-tooltip Custom Events to render the tooltip
38
- this.services.events.addEventListener(Events.Tooltip.SHOW, function (e) {
39
- // check the type of tooltip and that it is enabled
40
- if (Tools.getProperty(_this.model.getOptions(), 'tooltip', 'datapoint', 'enabled')) {
41
- var data = e.detail.data;
42
- console.log("data1", data);
43
- var multidata = data.multidata;
44
- var hoveredElement = e.detail.hoveredElement.node();
45
- var defaultHTML = multidata.length > 1
46
- ? _this.getMultilineTooltipHTML(data)
47
- : _this.getTooltipHTML(data);
48
- // if there is a provided tooltip HTML function call it and pass the defaultHTML
49
- if (Tools.getProperty(_this.model.getOptions(), 'tooltip', 'customHTML')) {
50
- tooltipTextContainer.html(_this.model
51
- .getOptions()
52
- .tooltip.customHTML(data, defaultHTML));
53
- }
54
- else {
55
- // default tooltip
56
- tooltipTextContainer.html(defaultHTML);
57
- }
58
- var position = _this.getTooltipPosition(hoveredElement, data);
59
- // Position the tooltip relative to the bars
60
- _this.positionTooltip(e.detail.multidata ? undefined : position);
61
- }
62
- // Fade in
63
- _this.tooltip.classed('hidden', false);
64
- });
65
- // listen to hide-tooltip Custom Events to hide the tooltip
66
- this.services.events.addEventListener(Events.Tooltip.HIDE, function () {
67
- _this.tooltip.classed('hidden', true);
68
- });
69
- };
70
- /**
71
- * Get the position of the tooltip relative to the active hovered bar. Tooltip should appear above
72
- * positive valued data and below negative value data.
73
- * @param hoveredElement
74
- */
75
- TooltipHistogram.prototype.getTooltipPosition = function (hoveredElement, data) {
76
- var groupId = data['group-id'];
77
- var groupElements = document.querySelectorAll("[group-id=\"" + groupId + "\"]");
78
- var groupTop = min(Array.from(groupElements).map(function (d) { return d.getBoundingClientRect().top; }));
79
- var holderPosition = select(this.services.domUtils.getHolder())
80
- .node()
81
- .getBoundingClientRect();
82
- var verticalOffset = this.model.getOptions().tooltip.datapoint.verticalOffset;
83
- var barPosition = hoveredElement.getBoundingClientRect();
84
- var tooltipPos = {
85
- left: barPosition.left - holderPosition.left + barPosition.width / 2,
86
- top: groupTop - holderPosition.top - verticalOffset,
87
- };
88
- return { placement: "top", position: tooltipPos };
89
- };
90
- /**
91
- * Returns the html for the bar single point tooltip
92
- * @param data associated values for the hovered bar
93
- */
94
- TooltipHistogram.prototype.getTooltipHTML = function (e) {
95
- var data = e.detail.data;
96
- var options = this.model.getOptions();
97
- var bin = data.bin;
98
- console.log("data", data);
99
- var value = data.multidata[0].value;
100
- var cartesianScales = this.services.cartesianScales;
101
- var domainTitle = Tools.getProperty(options, 'axes', cartesianScales.getDomainAxisPosition()).title;
102
- var rangeTitle = Tools.getProperty(options, 'axes', cartesianScales.getRangeAxisPosition()).title;
103
- var formattedValue = Tools.getProperty(this.model.getOptions(), 'tooltip', 'valueFormatter')
104
- ? this.model.getOptions().tooltip.valueFormatter(value)
105
- : value.toLocaleString('en');
106
- return "\n\t\t<ul class='multi-tooltip'>\n\t\t\t<li>\n\t\t\t\t<div class='title-val'>\n\t\t\t\t\t<p class='label'>" + domainTitle + "</p>\n\t\t\t\t\t<p class='value'>" + (bin.x0 + '-' + (bin.x1 - 1)) + "</p>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<div class='title-val'>\n\t\t\t\t\t<p class='label'>" + rangeTitle + "</p>\n\t\t\t\t\t<p class='value'>" + formattedValue + "</p>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t</ul>\n\t\t";
107
- };
108
- /**
109
- * Multip tooltips for bar charts include totals for each stack
110
- * @param data
111
- */
112
- TooltipHistogram.prototype.getMultilineTooltipHTML = function (data) {
113
- var _this = this;
114
- var segments = data.multidata;
115
- var options = this.model.getOptions();
116
- segments.reverse();
117
- // in a vertical bar chart the tooltip should display in order of the drawn bars
118
- // in horizontal stacked bar, the order of the bars from Left to Right are displayed top down in tooltip
119
- if (this.services.cartesianScales.getOrientation() ===
120
- CartesianOrientations.VERTICAL) {
121
- segments.reverse();
122
- }
123
- // get the total for the stacked tooltip
124
- var total = segments.reduce(function (sum, item) { return sum + item.value; }, 0);
125
- // format the total value
126
- total = Tools.getProperty(this.model.getOptions(), 'tooltip', 'valueFormatter')
127
- ? this.model.getOptions().tooltip.valueFormatter(total)
128
- : total.toLocaleString('en');
129
- var groupMapsTo = this.model.getOptions().data.groupMapsTo;
130
- var bin = data.bin;
131
- var cartesianScales = this.services.cartesianScales;
132
- var title = Tools.getProperty(options, 'axes', cartesianScales.getDomainAxisPosition()).title;
133
- var titleHTML = "<li>\n\t\t\t<div class='title-val'>\n\t\t\t\t<p class='label'>" + title + "</p>\n\t\t\t\t<p class='value'>" + (bin.x0 + '-' + (bin.x1 - 1)) + "</p>\n\t\t\t</div>\n\t\t</li>";
134
- var totalHTML = "<li>\n\t\t\t<div class='total-val'>\n\t\t\t\t<p class='label'>Total</p>\n\t\t\t\t<p class='value'>" + total + "</p>\n\t\t\t</div>\n\t\t</li>";
135
- return ("<ul class='multi-tooltip'>" +
136
- titleHTML +
137
- segments
138
- .map(function (datum) {
139
- var formattedValue = Tools.getProperty(_this.model.getOptions(), 'tooltip', 'valueFormatter')
140
- ? _this.model
141
- .getOptions()
142
- .tooltip.valueFormatter(datum.value)
143
- : datum.value.toLocaleString('en');
144
- var indicatorColor = _this.model.getStrokeColor(datum[groupMapsTo]);
145
- return "\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"datapoint-tooltip\">\n\t\t\t\t\t\t\t<a style=\"background-color:" + indicatorColor + "\" class=\"tooltip-color\"></a>\n\t\t\t\t\t\t\t<p class=\"label\">" + datum[groupMapsTo] + "</p>\n\t\t\t\t\t\t\t<p class=\"value\">" + formattedValue + "</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>";
146
- })
147
- .join('') +
148
- totalHTML +
149
- "</ul>");
150
- };
151
- return TooltipHistogram;
152
- }(AxisChartsTooltip));
153
- export { TooltipHistogram };
154
- //# sourceMappingURL=../../../src/components/essentials/tooltip-histogram.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tooltip-histogram.js","sourceRoot":"","sources":["tooltip-histogram.ts"],"names":[],"mappings":"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","sourcesContent":["import { AxisChartsTooltip } from './tooltip-axis';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport {\n\tCartesianOrientations,\n\tEvents,\n} from './../../interfaces';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { min } from 'd3-array';\n\nexport class TooltipHistogram extends AxisChartsTooltip {\n\tinit() {\n\t\t// Grab the tooltip element\n\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\tconst chartprefix = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t'style',\n\t\t\t'prefix'\n\t\t);\n\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\tholder,\n\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t);\n\n\t\t// Apply html content to the tooltip\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\t\tthis.tooltip.style('max-width', null);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(Events.Tooltip.SHOW, (e) => {\n\t\t\t// check the type of tooltip and that it is enabled\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t'tooltip',\n\t\t\t\t\t'datapoint',\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst data = e.detail.data;\n\t\t\t\tconsole.log(\"data1\", data)\n\t\t\t\tconst multidata = data.multidata;\n\t\t\t\tconst hoveredElement = e.detail.hoveredElement.node();\n\n\t\t\t\tconst defaultHTML =\n\t\t\t\t\tmultidata.length > 1\n\t\t\t\t\t\t? this.getMultilineTooltipHTML(data)\n\t\t\t\t\t\t: this.getTooltipHTML(data);\n\n\t\t\t\t// if there is a provided tooltip HTML function call it and pass the defaultHTML\n\t\t\t\tif (\n\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t\t'tooltip',\n\t\t\t\t\t\t'customHTML'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\t\tthis.model\n\t\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// default tooltip\n\t\t\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t\t\t}\n\n\t\t\t\tconst position = this.getTooltipPosition(hoveredElement, data) as any;\n\t\t\t\t// Position the tooltip relative to the bars\n\t\t\t\tthis.positionTooltip(e.detail.multidata ? undefined : position);\n\t\t\t}\n\n\t\t\t// Fade in\n\t\t\tthis.tooltip.classed('hidden', false);\n\t\t});\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(Events.Tooltip.HIDE, () => {\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t});\n\t}\n\n\t/**\n\t * Get the position of the tooltip relative to the active hovered bar. Tooltip should appear above\n\t * positive valued data and below negative value data.\n\t * @param hoveredElement\n\t */\n\tgetTooltipPosition(hoveredElement, data?: any) {\n\t\tconst groupId = data['group-id'];\n\t\tconst groupElements = document.querySelectorAll(\n\t\t\t`[group-id=\"${groupId}\"]`\n\t\t);\n\t\tconst groupTop = min(\n\t\t\tArray.from(groupElements).map(\n\t\t\t\t(d: any) => d.getBoundingClientRect().top\n\t\t\t)\n\t\t);\n\t\tconst holderPosition = select(this.services.domUtils.getHolder())\n\t\t\t.node()\n\t\t\t.getBoundingClientRect();\n\t\tconst { verticalOffset } = this.model.getOptions().tooltip.datapoint;\n\n\t\tconst barPosition = hoveredElement.getBoundingClientRect();\n\t\tconst tooltipPos = {\n\t\t\tleft:\n\t\t\t\tbarPosition.left - holderPosition.left + barPosition.width / 2,\n\t\t\ttop: groupTop - holderPosition.top - verticalOffset,\n\t\t};\n\n\t\treturn { placement: \"top\", position: tooltipPos };\n\t}\n\n\t/**\n\t * Returns the html for the bar single point tooltip\n\t * @param data associated values for the hovered bar\n\t */\n\tgetTooltipHTML(e: any) {\n\t\tconst data = e.detail.data;\n\t\tconst options = this.model.getOptions();\n\t\tconst { bin } = data;\n\t\tconsole.log(\"data\", data)\n\t\tconst { value } = data.multidata[0];\n\t\tconst { cartesianScales } = this.services;\n\t\tconst { title: domainTitle } = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'axes',\n\t\t\tcartesianScales.getDomainAxisPosition()\n\t\t);\n\t\tconst { title: rangeTitle } = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'axes',\n\t\t\tcartesianScales.getRangeAxisPosition()\n\t\t);\n\t\tconst formattedValue = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t)\n\t\t\t? this.model.getOptions().tooltip.valueFormatter(value)\n\t\t\t: value.toLocaleString('en');\n\n\t\treturn `\n\t\t<ul class='multi-tooltip'>\n\t\t\t<li>\n\t\t\t\t<div class='title-val'>\n\t\t\t\t\t<p class='label'>${domainTitle}</p>\n\t\t\t\t\t<p class='value'>${bin.x0 + '-' + (bin.x1 - 1)}</p>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<div class='title-val'>\n\t\t\t\t\t<p class='label'>${rangeTitle}</p>\n\t\t\t\t\t<p class='value'>${formattedValue}</p>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t</ul>\n\t\t`;\n\t}\n\n\t/**\n\t * Multip tooltips for bar charts include totals for each stack\n\t * @param data\n\t */\n\tgetMultilineTooltipHTML(data: any) {\n\t\tconst segments = data.multidata;\n\t\tconst options = this.model.getOptions();\n\n\t\tsegments.reverse();\n\t\t// in a vertical bar chart the tooltip should display in order of the drawn bars\n\t\t// in horizontal stacked bar, the order of the bars from Left to Right are displayed top down in tooltip\n\t\tif (\n\t\t\tthis.services.cartesianScales.getOrientation() ===\n\t\t\tCartesianOrientations.VERTICAL\n\t\t) {\n\t\t\tsegments.reverse();\n\t\t}\n\n\t\t// get the total for the stacked tooltip\n\t\tlet total = segments.reduce((sum, item) => sum + item.value, 0);\n\t\t// format the total value\n\t\ttotal = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t)\n\t\t\t? this.model.getOptions().tooltip.valueFormatter(total)\n\t\t\t: total.toLocaleString('en');\n\n\t\tconst { groupMapsTo } = this.model.getOptions().data;\n\t\tconst { bin } = data;\n\t\tconst { cartesianScales } = this.services;\n\t\tconst { title } = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'axes',\n\t\t\tcartesianScales.getDomainAxisPosition()\n\t\t);\n\t\tconst titleHTML = `<li>\n\t\t\t<div class='title-val'>\n\t\t\t\t<p class='label'>${title}</p>\n\t\t\t\t<p class='value'>${bin.x0 + '-' + (bin.x1 - 1)}</p>\n\t\t\t</div>\n\t\t</li>`;\n\t\tconst totalHTML = `<li>\n\t\t\t<div class='total-val'>\n\t\t\t\t<p class='label'>Total</p>\n\t\t\t\t<p class='value'>${total}</p>\n\t\t\t</div>\n\t\t</li>`;\n\n\t\treturn (\n\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\ttitleHTML +\n\t\t\tsegments\n\t\t\t\t.map((datum) => {\n\t\t\t\t\tconst formattedValue = Tools.getProperty(\n\t\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t\t'tooltip',\n\t\t\t\t\t\t'valueFormatter'\n\t\t\t\t\t)\n\t\t\t\t\t\t? this.model\n\t\t\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t\t\t.tooltip.valueFormatter(datum.value)\n\t\t\t\t\t\t: datum.value.toLocaleString('en');\n\t\t\t\t\tconst indicatorColor = this.model.getStrokeColor(\n\t\t\t\t\t\tdatum[groupMapsTo]\n\t\t\t\t\t);\n\n\t\t\t\t\treturn `\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div class=\"datapoint-tooltip\">\n\t\t\t\t\t\t\t<a style=\"background-color:${indicatorColor}\" class=\"tooltip-color\"></a>\n\t\t\t\t\t\t\t<p class=\"label\">${datum[groupMapsTo]}</p>\n\t\t\t\t\t\t\t<p class=\"value\">${formattedValue}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>`;\n\t\t\t\t})\n\t\t\t\t.join('') +\n\t\t\ttotalHTML +\n\t\t\t`</ul>`\n\t\t);\n\t}\n}\n"]}