@carbon/charts 0.41.60 → 0.41.64
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 +31 -4
- package/axis-chart.js +2 -2
- package/axis-chart.js.map +1 -1
- package/build/demo/data/CHART_TYPES.d.ts +10 -0
- package/build/demo/data/bullet.d.ts +30 -0
- package/build/demo/data/circle-pack.d.ts +82 -0
- package/build/demo/data/index.d.ts +2 -0
- package/build/src/charts/bullet.d.ts +6 -0
- package/build/src/charts/circle-pack.d.ts +8 -0
- package/build/src/charts/index.d.ts +2 -0
- package/build/src/components/essentials/canvas-chart-clip.d.ts +6 -0
- package/build/src/components/graphs/bullet.d.ts +11 -0
- package/build/src/components/graphs/circle-pack.d.ts +17 -0
- package/build/src/components/index.d.ts +3 -0
- package/build/src/configuration-non-customizable.d.ts +39 -11
- package/build/src/configuration.d.ts +3 -1
- package/build/src/interfaces/axis-scales.d.ts +7 -0
- package/build/src/interfaces/charts.d.ts +23 -0
- package/build/src/interfaces/enums.d.ts +4 -2
- package/build/src/interfaces/events.d.ts +16 -0
- package/build/src/model-circle-pack.d.ts +26 -0
- package/build/src/services/canvas-zoom.d.ts +11 -0
- package/build/src/services/index.d.ts +1 -0
- package/bundle.js +1 -1
- package/chart.js +9 -3
- package/chart.js.map +1 -1
- package/charts/bullet.d.ts +6 -0
- package/charts/bullet.js +48 -0
- package/charts/bullet.js.map +1 -0
- package/charts/circle-pack.d.ts +8 -0
- package/charts/circle-pack.js +45 -0
- package/charts/circle-pack.js.map +1 -0
- package/charts/index.d.ts +2 -0
- package/charts/index.js +2 -0
- package/charts/index.js.map +1 -1
- package/components/axes/axis.js +5 -4
- package/components/axes/axis.js.map +1 -1
- package/components/axes/grid.js +2 -2
- package/components/axes/grid.js.map +1 -1
- package/components/essentials/canvas-chart-clip.d.ts +6 -0
- package/components/essentials/canvas-chart-clip.js +46 -0
- package/components/essentials/canvas-chart-clip.js.map +1 -0
- package/components/essentials/legend.js +39 -12
- package/components/essentials/legend.js.map +1 -1
- package/components/essentials/tooltip-axis.js +1 -1
- package/components/essentials/tooltip-axis.js.map +1 -1
- package/components/essentials/tooltip.js +6 -3
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/area-stacked.js +9 -6
- package/components/graphs/area-stacked.js.map +1 -1
- package/components/graphs/area.js +3 -1
- package/components/graphs/area.js.map +1 -1
- package/components/graphs/bar-simple.js +17 -3
- package/components/graphs/bar-simple.js.map +1 -1
- package/components/graphs/bar-stacked.js +1 -1
- package/components/graphs/bar-stacked.js.map +1 -1
- package/components/graphs/bubble.js +7 -6
- package/components/graphs/bubble.js.map +1 -1
- package/components/graphs/bullet.d.ts +11 -0
- package/components/graphs/bullet.js +360 -0
- package/components/graphs/bullet.js.map +1 -0
- package/components/graphs/circle-pack.d.ts +17 -0
- package/components/graphs/circle-pack.js +340 -0
- package/components/graphs/circle-pack.js.map +1 -0
- package/components/graphs/line.js +1 -1
- package/components/graphs/line.js.map +1 -1
- package/components/graphs/scatter-stacked.js +1 -1
- package/components/graphs/scatter-stacked.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/configuration-non-customizable.d.ts +39 -11
- package/configuration-non-customizable.js +37 -13
- package/configuration-non-customizable.js.map +1 -1
- package/configuration.d.ts +3 -1
- package/configuration.js +27 -0
- package/configuration.js.map +1 -1
- package/demo/data/CHART_TYPES.d.ts +10 -0
- package/demo/data/CHART_TYPES.js +10 -0
- package/demo/data/CHART_TYPES.js.map +1 -1
- package/demo/data/bullet.d.ts +30 -0
- package/demo/data/bullet.js +75 -0
- package/demo/data/bullet.js.map +1 -0
- package/demo/data/bundle.js +1 -1
- package/demo/data/circle-pack.d.ts +82 -0
- package/demo/data/circle-pack.js +215 -0
- package/demo/data/circle-pack.js.map +1 -0
- package/demo/data/index.d.ts +2 -0
- package/demo/data/index.js +44 -5
- package/demo/data/index.js.map +1 -1
- package/demo/styles.css +308 -32
- 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 +32 -4
- package/interfaces/axis-scales.d.ts +7 -0
- package/interfaces/axis-scales.js.map +1 -1
- package/interfaces/charts.d.ts +23 -0
- package/interfaces/charts.js.map +1 -1
- package/interfaces/enums.d.ts +4 -2
- package/interfaces/enums.js +2 -0
- package/interfaces/enums.js.map +1 -1
- package/interfaces/events.d.ts +16 -0
- package/interfaces/events.js +18 -0
- package/interfaces/events.js.map +1 -1
- package/model-circle-pack.d.ts +26 -0
- package/model-circle-pack.js +137 -0
- package/model-circle-pack.js.map +1 -0
- package/package.json +1 -1
- package/services/canvas-zoom.d.ts +11 -0
- package/services/canvas-zoom.js +72 -0
- package/services/canvas-zoom.js.map +1 -0
- package/services/index.d.ts +1 -0
- package/services/index.js +1 -0
- package/services/index.js.map +1 -1
- package/services/scales-cartesian.js +13 -5
- package/services/scales-cartesian.js.map +1 -1
- package/styles/colors.scss +28 -0
- package/styles/components/_axis.scss +3 -1
- package/styles/components/_legend.scss +6 -0
- package/styles/components/_tooltip.scss +33 -10
- package/styles/graphs/_bullet.scss +67 -0
- package/styles/graphs/_circle-pack.scss +23 -0
- package/styles/graphs/index.scss +2 -0
- package/styles-g10.css +80 -8
- 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 +80 -8
- 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 +80 -8
- 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 +80 -8
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tsconfig.tsbuildinfo +212 -52
|
@@ -0,0 +1,360 @@
|
|
|
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
|
+
// Internal Imports
|
|
15
|
+
import { Component } from '../component';
|
|
16
|
+
import { Events, Roles, ColorClassNameTypes } from '../../interfaces';
|
|
17
|
+
import { Tools } from '../../tools';
|
|
18
|
+
import { DOMUtils } from '../../services';
|
|
19
|
+
// D3 Imports
|
|
20
|
+
import { select } from 'd3-selection';
|
|
21
|
+
var Bullet = /** @class */ (function (_super) {
|
|
22
|
+
__extends(Bullet, _super);
|
|
23
|
+
function Bullet() {
|
|
24
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
25
|
+
_this.type = 'bullet';
|
|
26
|
+
_this.handleLegendOnHover = function (event) {
|
|
27
|
+
var hoveredElement = event.detail.hoveredElement;
|
|
28
|
+
var groupMapsTo = _this.getOptions().data.groupMapsTo;
|
|
29
|
+
_this.parent
|
|
30
|
+
.selectAll('path.bar')
|
|
31
|
+
.transition(_this.services.transitions.getTransition('legend-hover-simple-bar'))
|
|
32
|
+
.attr('opacity', function (d) {
|
|
33
|
+
return d[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
_this.handleLegendMouseOut = function (event) {
|
|
37
|
+
_this.parent
|
|
38
|
+
.selectAll('path.bar')
|
|
39
|
+
.transition(_this.services.transitions.getTransition('legend-mouseout-simple-bar'))
|
|
40
|
+
.attr('opacity', 1);
|
|
41
|
+
};
|
|
42
|
+
return _this;
|
|
43
|
+
}
|
|
44
|
+
Bullet.prototype.init = function () {
|
|
45
|
+
var eventsFragment = this.services.events;
|
|
46
|
+
// Highlight correct circle on legend item hovers
|
|
47
|
+
eventsFragment.addEventListener(Events.Legend.ITEM_HOVER, this.handleLegendOnHover);
|
|
48
|
+
// Un-highlight circles on legend item mouseouts
|
|
49
|
+
eventsFragment.addEventListener(Events.Legend.ITEM_MOUSEOUT, this.handleLegendMouseOut);
|
|
50
|
+
};
|
|
51
|
+
Bullet.prototype.render = function (animate) {
|
|
52
|
+
var _this = this;
|
|
53
|
+
var options = this.getOptions();
|
|
54
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
55
|
+
// Grab container SVG
|
|
56
|
+
var svg = this.getContainerSVG({ withinChartClip: true });
|
|
57
|
+
var data = this.model.getDisplayData(this.configs.groups);
|
|
58
|
+
var rangeScale = this.services.cartesianScales.getRangeScale();
|
|
59
|
+
var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
|
|
60
|
+
var _a = rangeScale.range(), rangeScaleStart = _a[0], rangeScaleEnd = _a[1];
|
|
61
|
+
var _b = rangeScale.domain(), rangeScaleDomainMin = _b[0], rangeScaleDomainMax = _b[1];
|
|
62
|
+
var renderRangeBoxes = function () {
|
|
63
|
+
var rangeBoxData = [];
|
|
64
|
+
data.forEach(function (datum) {
|
|
65
|
+
if (datum.ranges) {
|
|
66
|
+
datum.ranges.forEach(function (range, i) {
|
|
67
|
+
if (range !== null &&
|
|
68
|
+
range !== undefined &&
|
|
69
|
+
range < rangeScaleDomainMax) {
|
|
70
|
+
rangeBoxData.push({
|
|
71
|
+
datum: datum,
|
|
72
|
+
value: range,
|
|
73
|
+
order: i + 1,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
rangeBoxData.push({
|
|
80
|
+
datum: datum,
|
|
81
|
+
order: 1,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// Update data on all lines
|
|
86
|
+
var rangeBoxes = DOMUtils.appendOrSelect(svg, 'g.range-boxes')
|
|
87
|
+
.selectAll('path.range-box')
|
|
88
|
+
.data(rangeBoxData, function (datum) { return datum[groupMapsTo] + "-" + datum.order; });
|
|
89
|
+
// Remove lines that are no longer needed
|
|
90
|
+
rangeBoxes.exit().attr('opacity', 0).remove();
|
|
91
|
+
// Add the paths that need to be introduced
|
|
92
|
+
var rangeBoxesEnter = rangeBoxes
|
|
93
|
+
.enter()
|
|
94
|
+
.append('path')
|
|
95
|
+
.attr('opacity', 0);
|
|
96
|
+
rangeBoxesEnter
|
|
97
|
+
.merge(rangeBoxes)
|
|
98
|
+
.attr('class', function (d) { return "range-box order-" + d.order; })
|
|
99
|
+
.transition(_this.services.transitions.getTransition('bullet-range-box-update-enter', animate))
|
|
100
|
+
.attr('d', function (d, i) {
|
|
101
|
+
/*
|
|
102
|
+
* Orientation support for horizontal/vertical bar charts
|
|
103
|
+
* Determine coordinates needed for a vertical set of paths
|
|
104
|
+
* to draw the bars needed, and pass those coordinates down to
|
|
105
|
+
* generateSVGPathString() to decide whether it needs to flip them
|
|
106
|
+
*/
|
|
107
|
+
var lineHeight = 16;
|
|
108
|
+
var x0, x1, y0, y1;
|
|
109
|
+
if (d.order === 1) {
|
|
110
|
+
x0 =
|
|
111
|
+
_this.services.cartesianScales.getDomainValue(d.datum, i) -
|
|
112
|
+
lineHeight / 2;
|
|
113
|
+
x1 = x0 + lineHeight;
|
|
114
|
+
y0 = rangeScaleEnd - 2;
|
|
115
|
+
y1 = rangeScaleStart + 1;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
x0 =
|
|
119
|
+
_this.services.cartesianScales.getDomainValue(d.datum, i) -
|
|
120
|
+
lineHeight / 2;
|
|
121
|
+
x1 = x0 + lineHeight;
|
|
122
|
+
y0 = _this.services.cartesianScales.getRangeValue(d.value, i);
|
|
123
|
+
y1 = rangeScaleEnd;
|
|
124
|
+
}
|
|
125
|
+
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 }, _this.services.cartesianScales.getOrientation());
|
|
126
|
+
})
|
|
127
|
+
.attr('opacity', 1);
|
|
128
|
+
};
|
|
129
|
+
var renderBars = function () {
|
|
130
|
+
// Update data on all bars
|
|
131
|
+
var bars = DOMUtils.appendOrSelect(svg, 'g.bars')
|
|
132
|
+
.selectAll('path.bar')
|
|
133
|
+
.data(data, function (datum) { return datum[groupMapsTo]; });
|
|
134
|
+
// Remove bars that are no longer needed
|
|
135
|
+
bars.exit().attr('opacity', 0).remove();
|
|
136
|
+
// Add the paths that need to be introduced
|
|
137
|
+
var barsEnter = bars.enter().append('path').attr('opacity', 0);
|
|
138
|
+
barsEnter
|
|
139
|
+
.merge(bars)
|
|
140
|
+
.classed('bar', true)
|
|
141
|
+
.transition(_this.services.transitions.getTransition('bullet-bar-update-enter', animate))
|
|
142
|
+
.attr('class', function (d) {
|
|
143
|
+
return _this.model.getColorClassName({
|
|
144
|
+
classNameTypes: [ColorClassNameTypes.FILL],
|
|
145
|
+
dataGroupName: d[groupMapsTo],
|
|
146
|
+
originalClassName: 'bar',
|
|
147
|
+
});
|
|
148
|
+
})
|
|
149
|
+
.style('fill', function (d) { return _this.model.getFillColor(d[groupMapsTo]); })
|
|
150
|
+
.attr('d', function (d, i) {
|
|
151
|
+
/*
|
|
152
|
+
* Orientation support for horizontal/vertical bar charts
|
|
153
|
+
* Determine coordinates needed for a vertical set of paths
|
|
154
|
+
* to draw the bars needed, and pass those coordinates down to
|
|
155
|
+
* generateSVGPathString() to decide whether it needs to flip them
|
|
156
|
+
*/
|
|
157
|
+
var barWidth = 8;
|
|
158
|
+
var x0 = _this.services.cartesianScales.getDomainValue(d, i) -
|
|
159
|
+
barWidth / 2;
|
|
160
|
+
var x1 = x0 + barWidth;
|
|
161
|
+
var y0 = _this.services.cartesianScales.getRangeValue(0) + 1;
|
|
162
|
+
var y1 = _this.services.cartesianScales.getRangeValue(d, i);
|
|
163
|
+
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 }, _this.services.cartesianScales.getOrientation());
|
|
164
|
+
})
|
|
165
|
+
.attr('opacity', 1)
|
|
166
|
+
// a11y
|
|
167
|
+
.attr('role', Roles.GRAPHICS_SYMBOL)
|
|
168
|
+
.attr('aria-roledescription', 'bar')
|
|
169
|
+
.attr('aria-label', function (d) { return d.value; });
|
|
170
|
+
};
|
|
171
|
+
var renderTargetLines = function () {
|
|
172
|
+
// Update data on all lines
|
|
173
|
+
var lines = DOMUtils.appendOrSelect(svg, 'g.markers')
|
|
174
|
+
.selectAll('path.marker')
|
|
175
|
+
.data(data.filter(function (d) { return Tools.getProperty(d, 'marker') !== null; }), function (datum) { return datum[groupMapsTo]; });
|
|
176
|
+
// Remove lines that are no longer needed
|
|
177
|
+
lines.exit().attr('opacity', 0).remove();
|
|
178
|
+
// Add the paths that need to be introduced
|
|
179
|
+
var linesEnter = lines.enter().append('path').attr('opacity', 0);
|
|
180
|
+
linesEnter
|
|
181
|
+
.merge(lines)
|
|
182
|
+
.classed('marker', true)
|
|
183
|
+
.transition(_this.services.transitions.getTransition('bullet-marker-update-enter', animate))
|
|
184
|
+
.attr('d', function (d, i) {
|
|
185
|
+
/*
|
|
186
|
+
* Orientation support for horizontal/vertical bar charts
|
|
187
|
+
* Determine coordinates needed for a vertical set of paths
|
|
188
|
+
* to draw the bars needed, and pass those coordinates down to
|
|
189
|
+
* generateSVGPathString() to decide whether it needs to flip them
|
|
190
|
+
*/
|
|
191
|
+
var lineHeight = 24;
|
|
192
|
+
var x0 = _this.services.cartesianScales.getDomainValue(d, i) -
|
|
193
|
+
lineHeight / 2;
|
|
194
|
+
var x1 = x0 + lineHeight;
|
|
195
|
+
var y0 = _this.services.cartesianScales.getRangeValue(d.marker, i);
|
|
196
|
+
var y1 = y0;
|
|
197
|
+
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 }, _this.services.cartesianScales.getOrientation());
|
|
198
|
+
})
|
|
199
|
+
.attr('opacity', 1);
|
|
200
|
+
};
|
|
201
|
+
var renderTargetQuartiles = function () {
|
|
202
|
+
var quartilesData = [];
|
|
203
|
+
data.filter(function (d) { return Tools.getProperty(d, 'marker') !== null; }).forEach(function (d) {
|
|
204
|
+
var value = d.marker;
|
|
205
|
+
var barValue = d[rangeIdentifier];
|
|
206
|
+
quartilesData = quartilesData.concat([
|
|
207
|
+
{ datum: d, value: value * 0.25, barValue: barValue },
|
|
208
|
+
{ datum: d, value: value * 0.5, barValue: barValue },
|
|
209
|
+
{ datum: d, value: value * 0.75, barValue: barValue },
|
|
210
|
+
]);
|
|
211
|
+
});
|
|
212
|
+
// Update data on all lines
|
|
213
|
+
var lines = DOMUtils.appendOrSelect(svg, 'g.quartiles')
|
|
214
|
+
.selectAll('path.quartile')
|
|
215
|
+
.data(quartilesData, function (datum) { return datum[groupMapsTo]; });
|
|
216
|
+
// Remove lines that are no longer needed
|
|
217
|
+
lines.exit().attr('opacity', 0).remove();
|
|
218
|
+
// Add the paths that need to be introduced
|
|
219
|
+
var linesEnter = lines.enter().append('path').attr('opacity', 0);
|
|
220
|
+
linesEnter
|
|
221
|
+
.merge(lines)
|
|
222
|
+
.attr('class', function (d) {
|
|
223
|
+
return "quartile " + (d.value <= d.barValue ? 'over-bar' : '');
|
|
224
|
+
})
|
|
225
|
+
.transition(_this.services.transitions.getTransition('bullet-quartile-update-enter', animate))
|
|
226
|
+
.attr('d', function (_a, i) {
|
|
227
|
+
var d = _a.datum, value = _a.value;
|
|
228
|
+
/*
|
|
229
|
+
* Orientation support for horizontal/vertical bar charts
|
|
230
|
+
* Determine coordinates needed for a vertical set of paths
|
|
231
|
+
* to draw the bars needed, and pass those coordinates down to
|
|
232
|
+
* generateSVGPathString() to decide whether it needs to flip them
|
|
233
|
+
*/
|
|
234
|
+
var lineHeight = 4;
|
|
235
|
+
// if it lines up with a performance area border
|
|
236
|
+
// make the line taller
|
|
237
|
+
if (d.ranges && d.ranges.indexOf(value) !== -1) {
|
|
238
|
+
lineHeight = 8;
|
|
239
|
+
}
|
|
240
|
+
var x0 = _this.services.cartesianScales.getDomainValue(d, i) -
|
|
241
|
+
lineHeight / 2;
|
|
242
|
+
var x1 = x0 + lineHeight;
|
|
243
|
+
var y0 = _this.services.cartesianScales.getRangeValue(value, i);
|
|
244
|
+
var y1 = y0;
|
|
245
|
+
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 }, _this.services.cartesianScales.getOrientation());
|
|
246
|
+
})
|
|
247
|
+
.attr('opacity', 1);
|
|
248
|
+
};
|
|
249
|
+
renderRangeBoxes();
|
|
250
|
+
renderBars();
|
|
251
|
+
renderTargetLines();
|
|
252
|
+
renderTargetQuartiles();
|
|
253
|
+
// Add event listeners to elements drawn
|
|
254
|
+
this.addEventListeners();
|
|
255
|
+
};
|
|
256
|
+
Bullet.prototype.getMatchingRangeIndexForDatapoint = function (datum) {
|
|
257
|
+
var matchingRangeIndex;
|
|
258
|
+
for (var i = datum.ranges.length - 1; i > 0; i--) {
|
|
259
|
+
var range = datum.ranges[i];
|
|
260
|
+
if (datum.value >= range) {
|
|
261
|
+
matchingRangeIndex = i;
|
|
262
|
+
return matchingRangeIndex;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return 0;
|
|
266
|
+
};
|
|
267
|
+
Bullet.prototype.addEventListeners = function () {
|
|
268
|
+
var self = this;
|
|
269
|
+
var options = this.getOptions();
|
|
270
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
271
|
+
var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
|
|
272
|
+
this.parent
|
|
273
|
+
.selectAll('path.bar')
|
|
274
|
+
.on('mouseover', function (datum) {
|
|
275
|
+
var hoveredElement = select(this);
|
|
276
|
+
hoveredElement.classed('hovered', true);
|
|
277
|
+
hoveredElement.transition(self.services.transitions.getTransition('graph_element_mouseover_fill_update'));
|
|
278
|
+
// Dispatch mouse event
|
|
279
|
+
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {
|
|
280
|
+
element: hoveredElement,
|
|
281
|
+
datum: datum,
|
|
282
|
+
});
|
|
283
|
+
var performanceAreaTitles = Tools.getProperty(options, 'bullet', 'performanceAreaTitles');
|
|
284
|
+
var matchingRangeIndex = self.getMatchingRangeIndexForDatapoint(datum);
|
|
285
|
+
self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
|
|
286
|
+
hoveredElement: hoveredElement,
|
|
287
|
+
items: [
|
|
288
|
+
{
|
|
289
|
+
label: options.tooltip.groupLabel || 'Group',
|
|
290
|
+
value: datum[groupMapsTo],
|
|
291
|
+
class: self.model.getColorClassName({
|
|
292
|
+
classNameTypes: [ColorClassNameTypes.TOOLTIP],
|
|
293
|
+
dataGroupName: datum[groupMapsTo],
|
|
294
|
+
}),
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
label: 'Value',
|
|
298
|
+
value: datum[rangeIdentifier],
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
label: 'Target',
|
|
302
|
+
value: datum.marker,
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
label: 'Percentage',
|
|
306
|
+
value: Math.floor((datum[rangeIdentifier] / datum.marker) * 100) + "%",
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
label: 'Performance',
|
|
310
|
+
value: performanceAreaTitles[matchingRangeIndex],
|
|
311
|
+
},
|
|
312
|
+
],
|
|
313
|
+
});
|
|
314
|
+
})
|
|
315
|
+
.on('mousemove', function (datum) {
|
|
316
|
+
// Dispatch mouse event
|
|
317
|
+
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {
|
|
318
|
+
element: select(this),
|
|
319
|
+
datum: datum,
|
|
320
|
+
});
|
|
321
|
+
self.services.events.dispatchEvent(Events.Tooltip.MOVE);
|
|
322
|
+
})
|
|
323
|
+
.on('click', function (datum) {
|
|
324
|
+
// Dispatch mouse event
|
|
325
|
+
self.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {
|
|
326
|
+
element: select(this),
|
|
327
|
+
datum: datum,
|
|
328
|
+
});
|
|
329
|
+
})
|
|
330
|
+
.on('mouseout', function (datum) {
|
|
331
|
+
var hoveredElement = select(this);
|
|
332
|
+
hoveredElement.classed('hovered', false);
|
|
333
|
+
hoveredElement.transition(self.services.transitions.getTransition('graph_element_mouseout_fill_update'));
|
|
334
|
+
// Dispatch mouse event
|
|
335
|
+
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {
|
|
336
|
+
element: hoveredElement,
|
|
337
|
+
datum: datum,
|
|
338
|
+
});
|
|
339
|
+
// Hide tooltip
|
|
340
|
+
self.services.events.dispatchEvent(Events.Tooltip.HIDE, {
|
|
341
|
+
hoveredElement: hoveredElement,
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
};
|
|
345
|
+
Bullet.prototype.destroy = function () {
|
|
346
|
+
// Remove event listeners
|
|
347
|
+
this.parent
|
|
348
|
+
.selectAll('path.bar')
|
|
349
|
+
.on('mouseover', null)
|
|
350
|
+
.on('mousemove', null)
|
|
351
|
+
.on('mouseout', null);
|
|
352
|
+
// Remove legend listeners
|
|
353
|
+
var eventsFragment = this.services.events;
|
|
354
|
+
eventsFragment.removeEventListener(Events.Legend.ITEM_HOVER, this.handleLegendOnHover);
|
|
355
|
+
eventsFragment.removeEventListener(Events.Legend.ITEM_MOUSEOUT, this.handleLegendMouseOut);
|
|
356
|
+
};
|
|
357
|
+
return Bullet;
|
|
358
|
+
}(Component));
|
|
359
|
+
export { Bullet };
|
|
360
|
+
//# sourceMappingURL=../../../src/components/graphs/bullet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, Roles, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Bullet extends Component {\n\ttype = 'bullet';\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\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst data = this.model.getDisplayData(this.configs.groups);\n\n\t\tconst rangeScale = this.services.cartesianScales.getRangeScale();\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\tconst [rangeScaleStart, rangeScaleEnd] = rangeScale.range();\n\t\tconst [rangeScaleDomainMin, rangeScaleDomainMax] = rangeScale.domain();\n\n\t\tconst renderRangeBoxes = () => {\n\t\t\tconst rangeBoxData = [];\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tif (datum.ranges) {\n\t\t\t\t\tdatum.ranges.forEach((range, i) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trange !== null &&\n\t\t\t\t\t\t\trange !== undefined &&\n\t\t\t\t\t\t\trange < rangeScaleDomainMax\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tvalue: range,\n\t\t\t\t\t\t\t\torder: i + 1,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\torder: 1,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Update data on all lines\n\t\t\tconst rangeBoxes = DOMUtils.appendOrSelect(svg, 'g.range-boxes')\n\t\t\t\t.selectAll('path.range-box')\n\t\t\t\t.data(\n\t\t\t\t\trangeBoxData,\n\t\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum.order}`\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\trangeBoxes.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst rangeBoxesEnter = rangeBoxes\n\t\t\t\t.enter()\n\t\t\t\t.append('path')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\trangeBoxesEnter\n\t\t\t\t.merge(rangeBoxes)\n\t\t\t\t.attr('class', (d) => `range-box order-${d.order}`)\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'bullet-range-box-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 16;\n\n\t\t\t\t\tlet x0, x1, y0, y1;\n\t\t\t\t\tif (d.order === 1) {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = rangeScaleEnd - 2;\n\t\t\t\t\t\ty1 = rangeScaleStart + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\t\td.value,\n\t\t\t\t\t\t\ti\n\t\t\t\t\t\t);\n\t\t\t\t\t\ty1 = rangeScaleEnd;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderBars = () => {\n\t\t\t// Update data on all bars\n\t\t\tconst bars = DOMUtils.appendOrSelect(svg, 'g.bars')\n\t\t\t\t.selectAll('path.bar')\n\t\t\t\t.data(data, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove bars that are no longer needed\n\t\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\t\tbarsEnter\n\t\t\t\t.merge(bars)\n\t\t\t\t.classed('bar', true)\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'bullet-bar-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst barWidth = 8;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tbarWidth / 2;\n\t\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\t\tconst y0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getRangeValue(0) + 1;\n\t\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1)\n\t\t\t\t// a11y\n\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t\t.attr('aria-label', (d) => d.value);\n\t\t};\n\n\t\tconst renderTargetLines = () => {\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.markers')\n\t\t\t\t.selectAll('path.marker')\n\t\t\t\t.data(\n\t\t\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null),\n\t\t\t\t\t(datum) => datum[groupMapsTo]\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.classed('marker', true)\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'bullet-marker-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 24;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td.marker,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderTargetQuartiles = () => {\n\t\t\tlet quartilesData = [];\n\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null).forEach(\n\t\t\t\t(d) => {\n\t\t\t\t\tconst value = d.marker;\n\t\t\t\t\tconst barValue = d[rangeIdentifier];\n\n\t\t\t\t\tquartilesData = quartilesData.concat([\n\t\t\t\t\t\t{ datum: d, value: value * 0.25, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.5, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.75, barValue },\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.quartiles')\n\t\t\t\t.selectAll('path.quartile')\n\t\t\t\t.data(quartilesData, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.attr('class', (d) => {\n\t\t\t\t\treturn `quartile ${\n\t\t\t\t\t\td.value <= d.barValue ? 'over-bar' : ''\n\t\t\t\t\t}`;\n\t\t\t\t})\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'bullet-quartile-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('d', ({ datum: d, value }, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tlet lineHeight = 4;\n\t\t\t\t\t// if it lines up with a performance area border\n\t\t\t\t\t// make the line taller\n\t\t\t\t\tif (d.ranges && d.ranges.indexOf(value) !== -1) {\n\t\t\t\t\t\tlineHeight = 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\trenderRangeBoxes();\n\t\trenderBars();\n\t\trenderTargetLines();\n\t\trenderTargetQuartiles();\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\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(\n\t\t\t\t\t'legend-hover-simple-bar'\n\t\t\t\t)\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\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(\n\t\t\t\t\t'legend-mouseout-simple-bar'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\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\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\t\t\toptions,\n\t\t\t\t\t'bullet',\n\t\t\t\t\t'performanceAreaTitles'\n\t\t\t\t);\n\t\t\t\tconst matchingRangeIndex = self.getMatchingRangeIndexForDatapoint(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel || 'Group',\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Value',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Target',\n\t\t\t\t\t\t\tvalue: datum.marker,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Percentage',\n\t\t\t\t\t\t\tvalue: `${Math.floor(\n\t\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t\t\t)}%`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Performance',\n\t\t\t\t\t\t\tvalue: performanceAreaTitles[matchingRangeIndex],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\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\telement: select(this),\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})\n\t\t\t.on('click', function (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\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 (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\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"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Component } from '../component';
|
|
2
|
+
export declare class CirclePack extends Component {
|
|
3
|
+
type: string;
|
|
4
|
+
focal: any;
|
|
5
|
+
render(animate?: boolean): void;
|
|
6
|
+
unhighlightChildren(childData: any): void;
|
|
7
|
+
highlightChildren(childData: any, classname?: any): void;
|
|
8
|
+
getZoomClass(node: any): "focal" | "non-focal";
|
|
9
|
+
addLegendListeners(): void;
|
|
10
|
+
removeBackgroundListeners(): void;
|
|
11
|
+
setBackgroundListeners(): void;
|
|
12
|
+
handleLegendOnHover: (event: CustomEvent<any>) => void;
|
|
13
|
+
handleLegendMouseOut: (event: CustomEvent<any>) => void;
|
|
14
|
+
getZoomIcon(): string;
|
|
15
|
+
addEventListeners(): void;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|