@carbon/charts 0.41.100 → 0.42.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.
- package/CHANGELOG.md +57 -126
- package/axis-chart.d.ts +2 -2
- package/axis-chart.js +1 -1
- package/axis-chart.js.map +1 -1
- package/build/demo/data/CHART_TYPES.d.ts +5 -0
- package/build/demo/data/circle-pack.d.ts +2 -2
- package/build/demo/data/histogram.d.ts +63 -0
- package/build/demo/data/index.d.ts +1 -0
- package/build/src/axis-chart.d.ts +2 -2
- package/build/src/chart.d.ts +1 -1
- package/build/src/charts/boxplot.d.ts +1 -1
- package/build/src/charts/circle-pack.d.ts +1 -1
- package/build/src/charts/gauge.d.ts +1 -1
- package/build/src/charts/histogram.d.ts +8 -0
- package/build/src/charts/index.d.ts +1 -0
- package/build/src/charts/meter.d.ts +1 -1
- package/build/src/charts/pie.d.ts +1 -1
- package/build/src/components/axes/axis.d.ts +1 -1
- package/build/src/components/axes/chart-clip.d.ts +1 -1
- package/build/src/components/axes/ruler-binned.d.ts +7 -0
- package/build/src/components/axes/ruler.d.ts +2 -3
- package/build/src/components/axes/zoom-bar.d.ts +1 -1
- package/build/src/components/component.d.ts +1 -1
- package/build/src/components/essentials/modal.d.ts +1 -7
- package/build/src/components/essentials/threshold.d.ts +1 -1
- package/build/src/components/essentials/tooltip-histogram.d.ts +26 -0
- package/build/src/components/essentials/tooltip.d.ts +1 -1
- package/build/src/components/graphs/histogram.d.ts +12 -0
- package/build/src/components/index.d.ts +3 -0
- package/build/src/components/layout/layout.d.ts +1 -1
- package/build/src/configuration-non-customizable.d.ts +3 -0
- package/build/src/configuration.d.ts +2 -1
- package/build/src/interfaces/axis-scales.d.ts +53 -17
- package/build/src/interfaces/charts.d.ts +25 -2
- package/build/src/model/binned-charts.d.ts +7 -0
- package/build/src/{model-boxplot.d.ts → model/boxplot.d.ts} +1 -1
- package/build/src/{model-cartesian-charts.d.ts → model/cartesian-charts.d.ts} +2 -0
- package/build/src/{model-circle-pack.d.ts → model/circle-pack.d.ts} +1 -1
- package/build/src/{model-gauge.d.ts → model/gauge.d.ts} +0 -0
- package/build/src/{model-meter.d.ts → model/meter.d.ts} +0 -0
- package/build/src/{model.d.ts → model/model.d.ts} +15 -2
- package/build/src/{model-pie.d.ts → model/pie.d.ts} +0 -0
- package/build/src/services/service.d.ts +1 -1
- package/build/src/services/zoom.d.ts +1 -1
- package/build/src/tools.d.ts +1 -0
- package/bundle.js +1 -1
- package/chart.d.ts +1 -1
- package/chart.js +1 -1
- package/chart.js.map +1 -1
- package/charts/boxplot.d.ts +1 -1
- package/charts/boxplot.js +1 -1
- package/charts/boxplot.js.map +1 -1
- package/charts/circle-pack.d.ts +1 -1
- package/charts/circle-pack.js +1 -1
- package/charts/circle-pack.js.map +1 -1
- package/charts/gauge.d.ts +1 -1
- package/charts/gauge.js +1 -1
- package/charts/gauge.js.map +1 -1
- package/charts/histogram.d.ts +8 -0
- package/charts/histogram.js +48 -0
- package/charts/histogram.js.map +1 -0
- package/charts/index.d.ts +1 -0
- package/charts/index.js +1 -0
- package/charts/index.js.map +1 -1
- package/charts/meter.d.ts +1 -1
- package/charts/meter.js +1 -1
- package/charts/meter.js.map +1 -1
- package/charts/pie.d.ts +1 -1
- package/charts/pie.js +1 -1
- package/charts/pie.js.map +1 -1
- package/charts/wordcloud.js.map +1 -1
- package/components/axes/axis.d.ts +1 -1
- package/components/axes/axis.js.map +1 -1
- package/components/axes/chart-clip.d.ts +1 -1
- package/components/axes/chart-clip.js.map +1 -1
- package/components/axes/ruler-binned.d.ts +7 -0
- package/components/axes/ruler-binned.js +136 -0
- package/components/axes/ruler-binned.js.map +1 -0
- package/components/axes/ruler.d.ts +2 -3
- package/components/axes/ruler.js +4 -4
- package/components/axes/ruler.js.map +1 -1
- package/components/axes/zoom-bar.d.ts +1 -1
- package/components/axes/zoom-bar.js.map +1 -1
- package/components/component.d.ts +1 -1
- package/components/component.js.map +1 -1
- package/components/essentials/modal.d.ts +1 -7
- package/components/essentials/modal.js +8 -69
- package/components/essentials/modal.js.map +1 -1
- package/components/essentials/threshold.d.ts +1 -1
- package/components/essentials/threshold.js.map +1 -1
- package/components/essentials/tooltip-axis.js +2 -2
- package/components/essentials/tooltip-axis.js.map +1 -1
- package/components/essentials/tooltip-histogram.d.ts +26 -0
- package/components/essentials/tooltip-histogram.js +154 -0
- package/components/essentials/tooltip-histogram.js.map +1 -0
- package/components/essentials/tooltip.d.ts +1 -1
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/bar-grouped.js +4 -4
- package/components/graphs/bar-grouped.js.map +1 -1
- package/components/graphs/bar-stacked.js.map +1 -1
- package/components/graphs/circle-pack.js +6 -3
- package/components/graphs/circle-pack.js.map +1 -1
- package/components/graphs/histogram.d.ts +12 -0
- package/components/graphs/histogram.js +207 -0
- package/components/graphs/histogram.js.map +1 -0
- package/components/graphs/skeleton.js +3 -1
- package/components/graphs/skeleton.js.map +1 -1
- package/components/index.d.ts +3 -0
- package/components/index.js +3 -0
- package/components/index.js.map +1 -1
- package/components/layout/layout.d.ts +1 -1
- package/components/layout/layout.js.map +1 -1
- package/configuration-non-customizable.d.ts +3 -0
- package/configuration-non-customizable.js +3 -0
- package/configuration-non-customizable.js.map +1 -1
- package/configuration.d.ts +2 -1
- package/configuration.js +17 -4
- package/configuration.js.map +1 -1
- package/demo/data/CHART_TYPES.d.ts +5 -0
- package/demo/data/CHART_TYPES.js +5 -0
- package/demo/data/CHART_TYPES.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/data/circle-pack.d.ts +2 -2
- package/demo/data/circle-pack.js +2 -2
- package/demo/data/circle-pack.js.map +1 -1
- package/demo/data/histogram.d.ts +63 -0
- package/demo/data/histogram.js +312 -0
- package/demo/data/histogram.js.map +1 -0
- package/demo/data/index.d.ts +1 -0
- package/demo/data/index.js +22 -0
- package/demo/data/index.js.map +1 -1
- package/demo/styles.css +528 -4
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/demo/tsconfig.tsbuildinfo +20 -6
- package/interfaces/axis-scales.d.ts +53 -17
- package/interfaces/axis-scales.js.map +1 -1
- package/interfaces/charts.d.ts +25 -2
- package/interfaces/charts.js.map +1 -1
- package/model/binned-charts.d.ts +7 -0
- package/model/binned-charts.js +52 -0
- package/model/binned-charts.js.map +1 -0
- package/{model-boxplot.d.ts → model/boxplot.d.ts} +1 -1
- package/{model-boxplot.js → model/boxplot.js} +4 -4
- package/model/boxplot.js.map +1 -0
- package/{model-cartesian-charts.d.ts → model/cartesian-charts.d.ts} +2 -0
- package/{model-cartesian-charts.js → model/cartesian-charts.js} +80 -20
- package/model/cartesian-charts.js.map +1 -0
- package/{model-circle-pack.d.ts → model/circle-pack.d.ts} +1 -1
- package/{model-circle-pack.js → model/circle-pack.js} +3 -3
- package/model/circle-pack.js.map +1 -0
- package/{model-gauge.d.ts → model/gauge.d.ts} +0 -0
- package/{model-gauge.js → model/gauge.js} +1 -1
- package/model/gauge.js.map +1 -0
- package/{model-meter.d.ts → model/meter.d.ts} +0 -0
- package/{model-meter.js → model/meter.js} +3 -3
- package/model/meter.js.map +1 -0
- package/{model.d.ts → model/model.d.ts} +15 -2
- package/{model.js → model/model.js} +120 -11
- package/model/model.js.map +1 -0
- package/{model-pie.d.ts → model/pie.d.ts} +0 -0
- package/{model-pie.js → model/pie.js} +1 -1
- package/model/pie.js.map +1 -0
- package/package.json +1 -1
- package/services/scales-cartesian.js +18 -4
- package/services/scales-cartesian.js.map +1 -1
- package/services/service.d.ts +1 -1
- package/services/service.js.map +1 -1
- package/services/zoom.d.ts +1 -1
- package/services/zoom.js.map +1 -1
- package/styles/colors.scss +2 -0
- package/styles/components/_ruler.scss +2 -1
- package/styles/styles.scss +4 -0
- package/styles-g10.css +132 -1
- package/styles-g10.css.map +1 -1
- package/styles-g10.min.css +1 -1
- package/styles-g10.min.css.map +1 -1
- package/styles-g100.css +132 -1
- package/styles-g100.css.map +1 -1
- package/styles-g100.min.css +1 -1
- package/styles-g100.min.css.map +1 -1
- package/styles-g90.css +132 -1
- package/styles-g90.css.map +1 -1
- package/styles-g90.min.css +1 -1
- package/styles-g90.min.css.map +1 -1
- package/styles.css +132 -1
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tools.d.ts +1 -0
- package/tools.js +2 -1
- package/tools.js.map +1 -1
- package/tsconfig.tsbuildinfo +257 -146
- package/model-boxplot.js.map +0 -1
- package/model-cartesian-charts.js.map +0 -1
- package/model-circle-pack.js.map +0 -1
- package/model-gauge.js.map +0 -1
- package/model-meter.js.map +0 -1
- package/model-pie.js.map +0 -1
- package/model.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-histogram.js","sourceRoot":"","sources":["tooltip-histogram.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACN,qBAAqB,EACrB,MAAM,GACN,MAAM,oBAAoB,CAAC;AAE5B,yCAAyC;AACzC,OAAO,QAAQ,MAAM,0CAA0C,CAAC;AAEhE,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;IAAsC,oCAAiB;IAAvD;;IA0OA,CAAC;IAzOA,+BAAI,GAAJ;QAAA,iBAwEC;QAvEA,2BAA2B;QAC3B,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1D,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACpC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,OAAO,EACP,QAAQ,CACR,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CACrC,MAAM,EACN,SAAO,QAAQ,CAAC,MAAM,UAAK,WAAW,cAAW,CACjD,CAAC;QAEF,oCAAoC;QACpC,IAAM,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CACnD,IAAI,CAAC,OAAO,EACZ,iBAAiB,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEtC,6DAA6D;QAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAC,CAAC;YAC5D,mDAAmD;YACnD,IACC,KAAK,CAAC,WAAW,CAChB,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,SAAS,EACT,WAAW,EACX,SAAS,CACT,EACA;gBACD,IAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC1B,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,IAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAEtD,IAAM,WAAW,GAChB,SAAS,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC,KAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;oBACpC,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAE9B,gFAAgF;gBAChF,IACC,KAAK,CAAC,WAAW,CAChB,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,SAAS,EACT,YAAY,CACZ,EACA;oBACD,oBAAoB,CAAC,IAAI,CACxB,KAAI,CAAC,KAAK;yBACR,UAAU,EAAE;yBACZ,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CACvC,CAAC;iBACF;qBAAM;oBACN,kBAAkB;oBAClB,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACvC;gBAED,IAAM,QAAQ,GAAG,KAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAQ,CAAC;gBACtE,4CAA4C;gBAC5C,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aAChE;YAED,UAAU;YACV,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1D,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,6CAAkB,GAAlB,UAAmB,cAAc,EAAE,IAAU;QAC5C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAC9C,iBAAc,OAAO,QAAI,CACzB,CAAC;QACF,IAAM,QAAQ,GAAG,GAAG,CACnB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAC5B,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAA7B,CAA6B,CACzC,CACD,CAAC;QACF,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;aAC/D,IAAI,EAAE;aACN,qBAAqB,EAAE,CAAC;QAClB,IAAA,yEAAc,CAA+C;QAErE,IAAM,WAAW,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAC3D,IAAM,UAAU,GAAG;YAClB,IAAI,EACH,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;YAC/D,GAAG,EAAE,QAAQ,GAAG,cAAc,CAAC,GAAG,GAAG,cAAc;SACnD,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,yCAAc,GAAd,UAAe,CAAM;QACpB,IAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAChC,IAAA,cAAG,CAAU;QACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACjB,IAAA,+BAAK,CAAuB;QAC5B,IAAA,+CAAe,CAAmB;QAClC,IAAA,+FAAkB,CAIxB;QACM,IAAA,6FAAiB,CAIvB;QACF,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACvC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,SAAS,EACT,gBAAgB,CAChB;YACA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;YACvD,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO,+GAIe,WAAW,0CACX,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,oHAK3B,UAAU,yCACV,cAAc,uDAInC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,kDAAuB,GAAvB,UAAwB,IAAS;QAAjC,iBA6EC;QA5EA,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAExC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,gFAAgF;QAChF,wGAAwG;QACxG,IACC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE;YAC9C,qBAAqB,CAAC,QAAQ,EAC7B;YACD,QAAQ,CAAC,OAAO,EAAE,CAAC;SACnB;QAED,wCAAwC;QACxC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,KAAK,EAAhB,CAAgB,EAAE,CAAC,CAAC,CAAC;QAChE,yBAAyB;QACzB,KAAK,GAAG,KAAK,CAAC,WAAW,CACxB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,SAAS,EACT,gBAAgB,CAChB;YACA,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;YACvD,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAA,sDAAW,CAAkC;QAC7C,IAAA,cAAG,CAAU;QACb,IAAA,+CAAe,CAAmB;QAClC,IAAA,yFAAK,CAIX;QACF,IAAM,SAAS,GAAG,mEAEG,KAAK,wCACL,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,mCAE1C,CAAC;QACP,IAAM,SAAS,GAAG,uGAGG,KAAK,kCAEpB,CAAC;QAEP,OAAO,CACN,4BAA4B;YAC5B,SAAS;YACT,QAAQ;iBACN,GAAG,CAAC,UAAC,KAAK;gBACV,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACvC,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,SAAS,EACT,gBAAgB,CAChB;oBACA,CAAC,CAAC,KAAI,CAAC,KAAK;yBACT,UAAU,EAAE;yBACZ,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;oBACtC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAM,cAAc,GAAG,KAAI,CAAC,KAAK,CAAC,cAAc,CAC/C,KAAK,CAAC,WAAW,CAAC,CAClB,CAAC;gBAEF,OAAO,gHAGwB,cAAc,0EACxB,KAAK,CAAC,WAAW,CAAC,+CAClB,cAAc,8CAE7B,CAAC;YACR,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC;YACV,SAAS;YACT,OAAO,CACP,CAAC;IACH,CAAC;IACF,uBAAC;AAAD,CAAC,AA1OD,CAAsC,iBAAiB,GA0OtD","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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from '../component';
|
|
2
|
-
import { ChartModel } from '../../model';
|
|
2
|
+
import { ChartModel } from '../../model/model';
|
|
3
3
|
import { RenderTypes } from '../../interfaces';
|
|
4
4
|
import Position from '@carbon/utils-position';
|
|
5
5
|
export declare class Tooltip extends Component {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(Tools.getProperty(e, 'detail', 'event'), holder);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
|
@@ -64,10 +64,10 @@ var GroupedBar = /** @class */ (function (_super) {
|
|
|
64
64
|
var svg = this.getComponentContainer({ withinChartClip: true });
|
|
65
65
|
var allDataLabels = Tools.removeArrayDuplicates(displayData.map(function (datum) {
|
|
66
66
|
var domainIdentifier = _this.services.cartesianScales.getDomainIdentifier(datum);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
return datum[domainIdentifier] &&
|
|
68
|
+
typeof datum[domainIdentifier].toString === 'function'
|
|
69
|
+
? datum[domainIdentifier].toString()
|
|
70
|
+
: datum[domainIdentifier];
|
|
71
71
|
}));
|
|
72
72
|
// Update data on bar groups
|
|
73
73
|
var barGroups = svg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-grouped.js","sourceRoot":"","sources":["bar-grouped.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from './bar';\nimport { Tools } from '../../tools';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n\tRoles,\n} from '../../interfaces';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { ScaleBand, scaleBand } from 'd3-scale';\n\nexport class GroupedBar extends Bar {\n\ttype = 'grouped-bar';\n\trenderType = RenderTypes.SVG;\n\n\tgroupScale: ScaleBand<any>;\n\n\tpadding = 5;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst displayData = this.model.getDisplayData(this.configs.groups);\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Get unique labels\n\t\tthis.setGroupScale();\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst allDataLabels = Tools.removeArrayDuplicates(\n\t\t\tdisplayData.map((datum) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\n\t\t\t\tif (datum[domainIdentifier].toString) {\n\t\t\t\t\treturn datum[domainIdentifier].toString();\n\t\t\t\t}\n\n\t\t\t\treturn datum[domainIdentifier];\n\t\t\t})\n\t\t);\n\n\t\t// Update data on bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(allDataLabels, (label) => label);\n\n\t\t// Remove dot groups that need to be removed\n\t\tbarGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the bar groups that need to be introduced\n\t\tconst barGroupsEnter = barGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('bars', true)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'bars');\n\n\t\t// Update data on all bars\n\t\tconst allBarGroups = barGroupsEnter.merge(barGroups);\n\n\t\tallBarGroups\n\t\t\t// Transition\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-group-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('transform', (label, i) => {\n\t\t\t\tconst scaleValue = this.services.cartesianScales.getDomainValue(\n\t\t\t\t\tlabel,\n\t\t\t\t\ti\n\t\t\t\t);\n\t\t\t\tconst translateBy = scaleValue - this.getGroupWidth() / 2;\n\t\t\t\t// const translateBy = scaleValue - this.getGroupWidth(null) / 2 + this.getBarWidth(null);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.services.cartesianScales.getOrientation() ===\n\t\t\t\t\tCartesianOrientations.VERTICAL\n\t\t\t\t) {\n\t\t\t\t\treturn `translate(${translateBy}, 0)`;\n\t\t\t\t} else {\n\t\t\t\t\t// translate in the y direction for horizontal groups\n\t\t\t\t\treturn `translate(0, ${translateBy})`;\n\t\t\t\t}\n\t\t\t});\n\n\t\tconst bars = allBarGroups.selectAll('path.bar').data(\n\t\t\t(label) => this.getDataCorrespondingToLabel(label),\n\t\t\t(d) => d[groupMapsTo]\n\t\t);\n\n\t\t// Remove bars that are no longer needed\n\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t// Add the bars that need to be introduced\n\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\t// code for vertical grouped bar charts\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d) => {\n\t\t\t\t/*\n\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t */\n\t\t\t\tconst startX = this.groupScale(d[groupMapsTo]);\n\t\t\t\tconst barWidth = this.getBarWidth();\n\n\t\t\t\tconst x0 = startX;\n\t\t\t\tconst x1 = startX + barWidth;\n\t\t\t\tconst rangeAxis = this.services.cartesianScales.getRangeAxisPosition(\n\t\t\t\t\t{ datum: d }\n\t\t\t\t);\n\t\t\t\tconst y0 = this.services.cartesianScales.getValueThroughAxisPosition(\n\t\t\t\t\trangeAxis,\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d);\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-bar')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-bar')\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseout_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tprotected getDataCorrespondingToLabel(label: string) {\n\t\tconst displayData = this.model.getDisplayData(this.configs.groups);\n\n\t\treturn displayData.filter((datum) => {\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\tdatum\n\t\t\t);\n\t\t\treturn datum[domainIdentifier] === label;\n\t\t});\n\t}\n\n\tprotected getGroupWidth() {\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\treturn this.getBarWidth() * activeData.length + totalGroupPadding;\n\t}\n\n\tprotected getTotalGroupPadding() {\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\n\t\tif (activeData.length === 1) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst domainScale = this.services.cartesianScales.getDomainScale();\n\t\tconst padding = Math.min(5, 5 * (domainScale.step() / 70));\n\n\t\treturn padding * (activeData.length - 1);\n\t}\n\n\t// Gets the correct width for bars based on options & configurations\n\tprotected getBarWidth() {\n\t\tconst options = this.getOptions();\n\t\tconst providedWidth = Tools.getProperty(options, 'bars', 'width');\n\t\tconst providedMaxWidth = Tools.getProperty(options, 'bars', 'maxWidth');\n\n\t\t// If there's a provided width, compare with maxWidth and\n\t\t// Determine which to return\n\t\tif (providedWidth !== null) {\n\t\t\tif (\n\t\t\t\tprovidedMaxWidth === null ||\n\t\t\t\tprovidedWidth <= providedMaxWidth\n\t\t\t) {\n\t\t\t\treturn providedWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\t\tconst numOfActiveDataGroups = activeData.length;\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\tconst domainScale = this.services.cartesianScales.getDomainScale();\n\t\treturn Math.min(\n\t\t\tprovidedMaxWidth,\n\t\t\t(domainScale.step() - totalGroupPadding) / numOfActiveDataGroups\n\t\t);\n\t}\n\n\tprotected setGroupScale() {\n\t\tconst activeData = this.model.getActiveDataGroupNames(\n\t\t\tthis.configs.groups\n\t\t);\n\n\t\tthis.groupScale = scaleBand()\n\t\t\t.domain(activeData)\n\t\t\t.rangeRound([0, this.getGroupWidth()]);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bar-grouped.js","sourceRoot":"","sources":["bar-grouped.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from './bar';\nimport { Tools } from '../../tools';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n\tRoles,\n} from '../../interfaces';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { ScaleBand, scaleBand } from 'd3-scale';\n\nexport class GroupedBar extends Bar {\n\ttype = 'grouped-bar';\n\trenderType = RenderTypes.SVG;\n\n\tgroupScale: ScaleBand<any>;\n\n\tpadding = 5;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst displayData = this.model.getDisplayData(this.configs.groups);\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Get unique labels\n\t\tthis.setGroupScale();\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst allDataLabels = Tools.removeArrayDuplicates(\n\t\t\tdisplayData.map((datum) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\n\t\t\t\treturn datum[domainIdentifier] &&\n\t\t\t\t\ttypeof datum[domainIdentifier].toString === 'function'\n\t\t\t\t\t? datum[domainIdentifier].toString()\n\t\t\t\t\t: datum[domainIdentifier];\n\t\t\t})\n\t\t);\n\n\t\t// Update data on bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(allDataLabels, (label) => label);\n\n\t\t// Remove dot groups that need to be removed\n\t\tbarGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add the bar groups that need to be introduced\n\t\tconst barGroupsEnter = barGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('bars', true)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'bars');\n\n\t\t// Update data on all bars\n\t\tconst allBarGroups = barGroupsEnter.merge(barGroups);\n\n\t\tallBarGroups\n\t\t\t// Transition\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-group-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('transform', (label, i) => {\n\t\t\t\tconst scaleValue = this.services.cartesianScales.getDomainValue(\n\t\t\t\t\tlabel,\n\t\t\t\t\ti\n\t\t\t\t);\n\t\t\t\tconst translateBy = scaleValue - this.getGroupWidth() / 2;\n\t\t\t\t// const translateBy = scaleValue - this.getGroupWidth(null) / 2 + this.getBarWidth(null);\n\n\t\t\t\tif (\n\t\t\t\t\tthis.services.cartesianScales.getOrientation() ===\n\t\t\t\t\tCartesianOrientations.VERTICAL\n\t\t\t\t) {\n\t\t\t\t\treturn `translate(${translateBy}, 0)`;\n\t\t\t\t} else {\n\t\t\t\t\t// translate in the y direction for horizontal groups\n\t\t\t\t\treturn `translate(0, ${translateBy})`;\n\t\t\t\t}\n\t\t\t});\n\n\t\tconst bars = allBarGroups.selectAll('path.bar').data(\n\t\t\t(label) => this.getDataCorrespondingToLabel(label),\n\t\t\t(d) => d[groupMapsTo]\n\t\t);\n\n\t\t// Remove bars that are no longer needed\n\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t// Add the bars that need to be introduced\n\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\t// code for vertical grouped bar charts\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d) => {\n\t\t\t\t/*\n\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t */\n\t\t\t\tconst startX = this.groupScale(d[groupMapsTo]);\n\t\t\t\tconst barWidth = this.getBarWidth();\n\n\t\t\t\tconst x0 = startX;\n\t\t\t\tconst x1 = startX + barWidth;\n\t\t\t\tconst rangeAxis = this.services.cartesianScales.getRangeAxisPosition(\n\t\t\t\t\t{ datum: d }\n\t\t\t\t);\n\t\t\t\tconst y0 = this.services.cartesianScales.getValueThroughAxisPosition(\n\t\t\t\t\trangeAxis,\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d);\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-bar')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-bar')\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseout_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tprotected getDataCorrespondingToLabel(label: string) {\n\t\tconst displayData = this.model.getDisplayData(this.configs.groups);\n\n\t\treturn displayData.filter((datum) => {\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\tdatum\n\t\t\t);\n\t\t\treturn datum[domainIdentifier] === label;\n\t\t});\n\t}\n\n\tprotected getGroupWidth() {\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\treturn this.getBarWidth() * activeData.length + totalGroupPadding;\n\t}\n\n\tprotected getTotalGroupPadding() {\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\n\t\tif (activeData.length === 1) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst domainScale = this.services.cartesianScales.getDomainScale();\n\t\tconst padding = Math.min(5, 5 * (domainScale.step() / 70));\n\n\t\treturn padding * (activeData.length - 1);\n\t}\n\n\t// Gets the correct width for bars based on options & configurations\n\tprotected getBarWidth() {\n\t\tconst options = this.getOptions();\n\t\tconst providedWidth = Tools.getProperty(options, 'bars', 'width');\n\t\tconst providedMaxWidth = Tools.getProperty(options, 'bars', 'maxWidth');\n\n\t\t// If there's a provided width, compare with maxWidth and\n\t\t// Determine which to return\n\t\tif (providedWidth !== null) {\n\t\t\tif (\n\t\t\t\tprovidedMaxWidth === null ||\n\t\t\t\tprovidedWidth <= providedMaxWidth\n\t\t\t) {\n\t\t\t\treturn providedWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst activeData = this.model.getGroupedData(this.configs.groups);\n\t\tconst numOfActiveDataGroups = activeData.length;\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\tconst domainScale = this.services.cartesianScales.getDomainScale();\n\t\treturn Math.min(\n\t\t\tprovidedMaxWidth,\n\t\t\t(domainScale.step() - totalGroupPadding) / numOfActiveDataGroups\n\t\t);\n\t}\n\n\tprotected setGroupScale() {\n\t\tconst activeData = this.model.getActiveDataGroupNames(\n\t\t\tthis.configs.groups\n\t\t);\n\n\t\tthis.groupScale = scaleBand()\n\t\t\t.domain(activeData)\n\t\t\t.rangeRound([0, this.getGroupWidth()]);\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-stacked.js","sourceRoot":"","sources":["bar-stacked.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Tools } from '../../tools';\nimport { Bar } from './bar';\nimport {\n\tRoles,\n\tEvents,\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class StackedBar extends Bar {\n\ttype = 'stacked-bar';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Create the data and keys that'll be used by the stack layout\n\t\tconst stackData = this.model.getStackedData({\n\t\t\tgroups: this.configs.groups,\n\t\t});\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(stackData, (d) => Tools.getProperty(d, 0, groupMapsTo));\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tbarGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add bar groups that need to be introduced\n\t\tbarGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('bars', true)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'bars');\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.selectAll('path.bar')\n\t\t\t.data(\n\t\t\t\t(d) => d,\n\t\t\t\t(d) => d.data.sharedStackKey\n\t\t\t);\n\n\t\t// Remove bars that need to be removed\n\t\tbars.exit().remove();\n\n\t\tbars.enter()\n\t\t\t.append('path')\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d, i) => {\n\t\t\t\tconst key = d.data.sharedStackKey;\n\n\t\t\t\t/*\n\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t */\n\t\t\t\tconst barWidth = this.getBarWidth();\n\t\t\t\tconst x0 =\n\t\t\t\t\tthis.services.cartesianScales.getDomainValue(key, i) -\n\t\t\t\t\tbarWidth / 2;\n\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(d[0], i);\n\t\t\t\tlet y1 = this.services.cartesianScales.getRangeValue(d[1], i);\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Add the divider gap\n\t\t\t\tif (\n\t\t\t\t\tMath.abs(y1 - y0) > 0 &&\n\t\t\t\t\tMath.abs(y1 - y0) > options.bars.dividerSize\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation() ===\n\t\t\t\t\t\tCartesianOrientations.VERTICAL\n\t\t\t\t\t) {\n\t\t\t\t\t\ty1 += 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ty1 -= 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d[1] - d[0]);\n\n\t\t// Add event listeners for the above elements\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.model.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-bar')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-bar')\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst displayData = self.model.getDisplayData(\n\t\t\t\t\tself.configs.groups\n\t\t\t\t);\n\n\t\t\t\tlet matchingDataPoint = displayData.find((d) => {\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] === datum.data[datum.group] &&\n\t\t\t\t\t\td[domainIdentifier].toString() ===\n\t\t\t\t\t\t\tdatum.data.sharedStackKey &&\n\t\t\t\t\t\td[groupMapsTo] === datum.group\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tif (matchingDataPoint === undefined) {\n\t\t\t\t\t// use the primary range and domain ids\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier();\n\t\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier();\n\t\t\t\t\tmatchingDataPoint = {\n\t\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t\t[rangeIdentifier]: datum.data[datum.group],\n\t\t\t\t\t\t[groupMapsTo]: datum.group,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [matchingDataPoint],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bar-stacked.js","sourceRoot":"","sources":["bar-stacked.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Tools } from '../../tools';\nimport { Bar } from './bar';\nimport {\n\tRoles,\n\tEvents,\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class StackedBar extends Bar {\n\ttype = 'stacked-bar';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Create the data and keys that'll be used by the stack layout\n\t\tconst stackData = this.model.getStackedData({\n\t\t\tgroups: this.configs.groups,\n\t\t});\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(stackData, (d) => Tools.getProperty(d, 0, groupMapsTo));\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tbarGroups.exit().attr('opacity', 0).remove();\n\n\t\t// Add bar groups that need to be introduced\n\t\tbarGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.classed('bars', true)\n\t\t\t.attr('role', Roles.GROUP)\n\t\t\t.attr('data-name', 'bars');\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.selectAll('path.bar')\n\t\t\t.data(\n\t\t\t\t(d) => d,\n\t\t\t\t(d) => d.data.sharedStackKey\n\t\t\t);\n\n\t\t// Remove bars that need to be removed\n\t\tbars.exit().remove();\n\n\t\tbars.enter()\n\t\t\t.append('path')\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d, i) => {\n\t\t\t\tconst key = d.data.sharedStackKey;\n\n\t\t\t\t/*\n\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t */\n\t\t\t\tconst barWidth = this.getBarWidth();\n\t\t\t\tconst x0 =\n\t\t\t\t\tthis.services.cartesianScales.getDomainValue(key, i) -\n\t\t\t\t\tbarWidth / 2;\n\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(d[0], i);\n\t\t\t\tlet y1 = this.services.cartesianScales.getRangeValue(d[1], i);\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Add the divider gap\n\t\t\t\tif (\n\t\t\t\t\tMath.abs(y1 - y0) > 0 &&\n\t\t\t\t\tMath.abs(y1 - y0) > options.bars.dividerSize\n\t\t\t\t) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation() ===\n\t\t\t\t\t\tCartesianOrientations.VERTICAL\n\t\t\t\t\t) {\n\t\t\t\t\t\ty1 += 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ty1 -= 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d[1] - d[0]);\n\n\t\t// Add event listeners for the above elements\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.model.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-bar')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-bar')\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst displayData = self.model.getDisplayData(\n\t\t\t\t\tself.configs.groups\n\t\t\t\t);\n\n\t\t\t\tlet matchingDataPoint = displayData.find((d) => {\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] === datum.data[datum.group] &&\n\t\t\t\t\t\td[domainIdentifier].toString() ===\n\t\t\t\t\t\t\tdatum.data.sharedStackKey &&\n\t\t\t\t\t\td[groupMapsTo] === datum.group\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tif (matchingDataPoint === undefined) {\n\t\t\t\t\t// use the primary range and domain ids\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier();\n\t\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier();\n\t\t\t\t\tmatchingDataPoint = {\n\t\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t\t[rangeIdentifier]: datum.data[datum.group],\n\t\t\t\t\t\t[groupMapsTo]: datum.group,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [matchingDataPoint],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
@@ -22,11 +22,12 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
|
22
22
|
import { Component } from '../component';
|
|
23
23
|
import { DOMUtils } from '../../services';
|
|
24
24
|
import * as Configuration from '../../configuration';
|
|
25
|
+
import { ColorClassNameTypes, Events, RenderTypes, } from '../../interfaces/enums';
|
|
26
|
+
import { Tools } from './../../tools';
|
|
25
27
|
// D3 Imports
|
|
26
28
|
import { hierarchy as d3Hierarchy, pack as D3Pack } from 'd3-hierarchy';
|
|
27
29
|
import { select } from 'd3-selection';
|
|
28
|
-
import {
|
|
29
|
-
import { Tools } from './../../tools';
|
|
30
|
+
import { get } from 'lodash-es';
|
|
30
31
|
var CirclePack = /** @class */ (function (_super) {
|
|
31
32
|
__extends(CirclePack, _super);
|
|
32
33
|
function CirclePack() {
|
|
@@ -242,9 +243,11 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
242
243
|
}
|
|
243
244
|
}
|
|
244
245
|
});
|
|
246
|
+
var options = self.model.getOptions();
|
|
245
247
|
totalValue = [
|
|
246
248
|
{
|
|
247
|
-
label: '
|
|
249
|
+
label: get(options, 'tooltip.totalLabel') ||
|
|
250
|
+
'Total',
|
|
248
251
|
value: datum.value,
|
|
249
252
|
bold: true,
|
|
250
253
|
},
|