@carbon/charts 0.32.12 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +322 -163
- package/README.md +18 -8
- package/axis-chart.js +20 -20
- package/axis-chart.js.map +1 -1
- package/build/demo/data/bar.d.ts +20 -0
- package/build/demo/data/line.d.ts +29 -0
- package/build/src/interfaces/charts.d.ts +5 -0
- package/build/src/model.d.ts +1 -0
- package/build/src/tools.d.ts +7 -7
- package/bundle.js +1 -1
- package/charts/area-stacked.js +3 -3
- package/charts/area-stacked.js.map +1 -1
- package/charts/area.js +3 -3
- package/charts/area.js.map +1 -1
- package/charts/bar-grouped.js +3 -3
- package/charts/bar-grouped.js.map +1 -1
- package/charts/bar-simple.js +3 -3
- package/charts/bar-simple.js.map +1 -1
- package/charts/bar-stacked.js +3 -3
- package/charts/bar-stacked.js.map +1 -1
- package/charts/bubble.js +3 -3
- package/charts/bubble.js.map +1 -1
- package/charts/donut.js +3 -3
- package/charts/donut.js.map +1 -1
- package/charts/gauge.js.map +1 -1
- package/charts/line.js +3 -3
- package/charts/line.js.map +1 -1
- package/charts/pie.js +3 -3
- package/charts/pie.js.map +1 -1
- package/charts/radar.js +1 -1
- package/charts/radar.js.map +1 -1
- package/charts/scatter.js +3 -3
- package/charts/scatter.js.map +1 -1
- package/components/axes/axis.js +25 -23
- package/components/axes/axis.js.map +1 -1
- package/components/axes/grid.js +1 -1
- package/components/axes/grid.js.map +1 -1
- package/components/axes/ruler.js +2 -2
- package/components/axes/ruler.js.map +1 -1
- package/components/axes/two-dimensional-axes.js +3 -3
- package/components/axes/two-dimensional-axes.js.map +1 -1
- package/components/axes/zero-line.js +1 -1
- package/components/axes/zero-line.js.map +1 -1
- package/components/essentials/legend.js +20 -11
- package/components/essentials/legend.js.map +1 -1
- package/components/essentials/threshold.js +9 -9
- package/components/essentials/threshold.js.map +1 -1
- package/components/essentials/title.js +2 -2
- package/components/essentials/title.js.map +1 -1
- package/components/essentials/tooltip-bar.js +7 -6
- package/components/essentials/tooltip-bar.js.map +1 -1
- package/components/essentials/tooltip.js +7 -7
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/area-stacked.js +1 -3
- package/components/graphs/area-stacked.js.map +1 -1
- package/components/graphs/bar-grouped.js +7 -7
- package/components/graphs/bar-grouped.js.map +1 -1
- package/components/graphs/bar-simple.js +6 -6
- package/components/graphs/bar-simple.js.map +1 -1
- package/components/graphs/bar-stacked.js +6 -6
- package/components/graphs/bar-stacked.js.map +1 -1
- package/components/graphs/gauge.js +4 -3
- package/components/graphs/gauge.js.map +1 -1
- package/components/graphs/line.js +1 -3
- package/components/graphs/line.js.map +1 -1
- package/components/graphs/pie.js +12 -12
- package/components/graphs/pie.js.map +1 -1
- package/components/graphs/radar.js +11 -11
- package/components/graphs/radar.js.map +1 -1
- package/components/graphs/scatter-stacked.js +1 -3
- package/components/graphs/scatter-stacked.js.map +1 -1
- package/components/graphs/scatter.js +6 -8
- package/components/graphs/scatter.js.map +1 -1
- package/components/graphs/skeleton.js +3 -3
- package/components/graphs/skeleton.js.map +1 -1
- package/components/layout/layout.js +10 -4
- package/components/layout/layout.js.map +1 -1
- package/configuration.js +14 -9
- package/configuration.js.map +1 -1
- package/demo/create-codesandbox.js +19 -19
- package/demo/create-codesandbox.js.map +1 -1
- package/demo/data/bar.d.ts +20 -0
- package/demo/data/bar.js +139 -110
- package/demo/data/bar.js.map +1 -1
- package/demo/data/bubble.js +29 -29
- package/demo/data/bubble.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/data/index.js +15 -5
- package/demo/data/index.js.map +1 -1
- package/demo/data/line.d.ts +29 -0
- package/demo/data/line.js +122 -60
- package/demo/data/line.js.map +1 -1
- package/demo/data/pie.js +5 -5
- package/demo/data/pie.js.map +1 -1
- package/demo/data/radar.js +12 -12
- package/demo/data/radar.js.map +1 -1
- package/demo/data/scatter.js +48 -32
- package/demo/data/scatter.js.map +1 -1
- package/demo/data/step.js +6 -6
- package/demo/data/step.js.map +1 -1
- package/demo/data/time-series-axis.js +107 -107
- package/demo/data/time-series-axis.js.map +1 -1
- package/demo/tsconfig.tsbuildinfo +18 -18
- package/interfaces/a11y.js.map +1 -1
- package/interfaces/charts.d.ts +5 -0
- package/interfaces/charts.js.map +1 -1
- package/interfaces/enums.js.map +1 -1
- package/interfaces/events.js.map +1 -1
- package/model.d.ts +1 -0
- package/model.js +47 -6
- package/model.js.map +1 -1
- package/package.json +1 -1
- package/polyfills.js +1 -1
- package/polyfills.js.map +1 -1
- package/services/angle-utils.js +8 -8
- package/services/angle-utils.js.map +1 -1
- package/services/colorPalettes.js +2 -2
- package/services/colorPalettes.js.map +1 -1
- package/services/colors.js +1 -1
- package/services/colors.js.map +1 -1
- package/services/curves.js +2 -2
- package/services/curves.js.map +1 -1
- package/services/essentials/dom-utils.js +6 -6
- package/services/essentials/dom-utils.js.map +1 -1
- package/services/essentials/events.js +1 -1
- package/services/essentials/events.js.map +1 -1
- package/services/scales-cartesian.js +17 -17
- package/services/scales-cartesian.js.map +1 -1
- package/services/time-series.js +2 -2
- package/services/time-series.js.map +1 -1
- package/tools.d.ts +7 -7
- package/tools.js +16 -14
- package/tools.js.map +1 -1
- package/tsconfig.tsbuildinfo +54 -54
|
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
// Internal Imports
|
|
15
15
|
import { Bar } from "./bar";
|
|
16
16
|
import { Tools } from "../../tools";
|
|
17
|
-
import { CartesianOrientations, Events, Roles, TooltipTypes
|
|
17
|
+
import { CartesianOrientations, Events, Roles, TooltipTypes } from "../../interfaces";
|
|
18
18
|
// D3 Imports
|
|
19
19
|
import { map } from "d3-collection";
|
|
20
20
|
import { select } from "d3-selection";
|
|
@@ -147,26 +147,26 @@ var GroupedBar = /** @class */ (function (_super) {
|
|
|
147
147
|
// Dispatch mouse event
|
|
148
148
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {
|
|
149
149
|
element: hoveredElement,
|
|
150
|
-
datum: datum
|
|
150
|
+
datum: datum
|
|
151
151
|
});
|
|
152
152
|
// Show tooltip
|
|
153
153
|
self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
|
|
154
154
|
hoveredElement: hoveredElement,
|
|
155
|
-
type: TooltipTypes.DATAPOINT
|
|
155
|
+
type: TooltipTypes.DATAPOINT
|
|
156
156
|
});
|
|
157
157
|
})
|
|
158
158
|
.on("mousemove", function (datum) {
|
|
159
159
|
// Dispatch mouse event
|
|
160
160
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {
|
|
161
161
|
element: select(this),
|
|
162
|
-
datum: datum
|
|
162
|
+
datum: datum
|
|
163
163
|
});
|
|
164
164
|
})
|
|
165
165
|
.on("click", function (datum) {
|
|
166
166
|
// Dispatch mouse event
|
|
167
167
|
self.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {
|
|
168
168
|
element: select(this),
|
|
169
|
-
datum: datum
|
|
169
|
+
datum: datum
|
|
170
170
|
});
|
|
171
171
|
})
|
|
172
172
|
.on("mouseout", function (datum) {
|
|
@@ -181,11 +181,11 @@ var GroupedBar = /** @class */ (function (_super) {
|
|
|
181
181
|
// Dispatch mouse event
|
|
182
182
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {
|
|
183
183
|
element: hoveredElement,
|
|
184
|
-
datum: datum
|
|
184
|
+
datum: datum
|
|
185
185
|
});
|
|
186
186
|
// Hide tooltip
|
|
187
187
|
self.services.events.dispatchEvent(Events.Tooltip.HIDE, {
|
|
188
|
-
hoveredElement: hoveredElement
|
|
188
|
+
hoveredElement: hoveredElement
|
|
189
189
|
});
|
|
190
190
|
});
|
|
191
191
|
};
|
|
@@ -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\tEvents,\n\tRoles,\n\tTooltipTypes,\n} from \"../../interfaces\";\n\n// D3 Imports\nimport { map } from \"d3-collection\";\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\nimport { ScaleBand, scaleBand } from \"d3-scale\";\n\nexport class GroupedBar extends Bar {\n\ttype = \"grouped-bar\";\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();\n\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Get unique labels\n\t\tthis.setGroupScale();\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG();\n\n\t\tconst allDataLabels = map(\n\t\t\tdisplayData,\n\t\t\t(datum) => datum[domainIdentifier]\n\t\t).keys();\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(\"aria-labelledby\", (d) => d);\n\n\t\t// Update data on all bars\n\t\tconst bars = barGroupsEnter\n\t\t\t.merge(barGroups)\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\t\t\t.selectAll(\"path.bar\")\n\t\t\t.data((label) => this.getDataCorrespondingToLabel(label));\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 circles 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\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"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 y0 = this.services.cartesianScales.getRangeValue(0);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d.value);\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.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.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 self = this;\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\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\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT,\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\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\tconst { groupMapsTo } = self.model.getOptions().data;\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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\tprotected getDataCorrespondingToLabel(label: string) {\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\treturn displayData.filter((datum) => datum[domainIdentifier] === label);\n\t}\n\n\tprotected getGroupWidth() {\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.length;\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\treturn this.getBarWidth() * numOfActiveDataGroups + totalGroupPadding;\n\t}\n\n\tprotected getTotalGroupPadding() {\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.length;\n\n\t\tif (numOfActiveDataGroups === 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 * (numOfActiveDataGroups - 1);\n\t}\n\n\t// Gets the correct width for bars based on options & configurations\n\tprotected getBarWidth() {\n\t\tconst options = this.model.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 (providedMaxWidth === null) {\n\t\t\t\treturn providedWidth;\n\t\t\t} else if (providedWidth <= providedMaxWidth) {\n\t\t\t\treturn providedWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.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\tthis.groupScale = scaleBand()\n\t\t\t.domain(this.model.getActiveDataGroupNames())\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\tEvents,\n\tRoles,\n\tTooltipTypes\n} from \"../../interfaces\";\n\n// D3 Imports\nimport { map } from \"d3-collection\";\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\nimport { ScaleBand, scaleBand } from \"d3-scale\";\n\nexport class GroupedBar extends Bar {\n\ttype = \"grouped-bar\";\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();\n\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Get unique labels\n\t\tthis.setGroupScale();\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG();\n\n\t\tconst allDataLabels = map(\n\t\t\tdisplayData,\n\t\t\t(datum) => datum[domainIdentifier]\n\t\t).keys();\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(\"aria-labelledby\", (d) => d);\n\n\t\t// Update data on all bars\n\t\tconst bars = barGroupsEnter\n\t\t\t.merge(barGroups)\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\t\t\t.selectAll(\"path.bar\")\n\t\t\t.data((label) => this.getDataCorrespondingToLabel(label));\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 circles 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\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"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 y0 = this.services.cartesianScales.getRangeValue(0);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d.value);\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.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.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 self = this;\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\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\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT\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\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\tconst { groupMapsTo } = self.model.getOptions().data;\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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\tprotected getDataCorrespondingToLabel(label: string) {\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\treturn displayData.filter((datum) => datum[domainIdentifier] === label);\n\t}\n\n\tprotected getGroupWidth() {\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.length;\n\t\tconst totalGroupPadding = this.getTotalGroupPadding();\n\n\t\treturn this.getBarWidth() * numOfActiveDataGroups + totalGroupPadding;\n\t}\n\n\tprotected getTotalGroupPadding() {\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.length;\n\n\t\tif (numOfActiveDataGroups === 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 * (numOfActiveDataGroups - 1);\n\t}\n\n\t// Gets the correct width for bars based on options & configurations\n\tprotected getBarWidth() {\n\t\tconst options = this.model.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 (providedMaxWidth === null) {\n\t\t\t\treturn providedWidth;\n\t\t\t} else if (providedWidth <= providedMaxWidth) {\n\t\t\t\treturn providedWidth;\n\t\t\t}\n\t\t}\n\n\t\tconst numOfActiveDataGroups = this.model.getActiveDataGroupNames()\n\t\t\t.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\tthis.groupScale = scaleBand()\n\t\t\t.domain(this.model.getActiveDataGroupNames())\n\t\t\t.rangeRound([0, this.getGroupWidth()]);\n\t}\n}\n"]}
|
|
@@ -110,25 +110,25 @@ var SimpleBar = /** @class */ (function (_super) {
|
|
|
110
110
|
// Dispatch mouse event
|
|
111
111
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {
|
|
112
112
|
element: hoveredElement,
|
|
113
|
-
datum: datum
|
|
113
|
+
datum: datum
|
|
114
114
|
});
|
|
115
115
|
self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
|
|
116
116
|
hoveredElement: hoveredElement,
|
|
117
|
-
type: TooltipTypes.DATAPOINT
|
|
117
|
+
type: TooltipTypes.DATAPOINT
|
|
118
118
|
});
|
|
119
119
|
})
|
|
120
120
|
.on("mousemove", function (datum) {
|
|
121
121
|
// Dispatch mouse event
|
|
122
122
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {
|
|
123
123
|
element: select(this),
|
|
124
|
-
datum: datum
|
|
124
|
+
datum: datum
|
|
125
125
|
});
|
|
126
126
|
})
|
|
127
127
|
.on("click", function (datum) {
|
|
128
128
|
// Dispatch mouse event
|
|
129
129
|
self.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {
|
|
130
130
|
element: select(this),
|
|
131
|
-
datum: datum
|
|
131
|
+
datum: datum
|
|
132
132
|
});
|
|
133
133
|
})
|
|
134
134
|
.on("mouseout", function (datum) {
|
|
@@ -142,11 +142,11 @@ var SimpleBar = /** @class */ (function (_super) {
|
|
|
142
142
|
// Dispatch mouse event
|
|
143
143
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {
|
|
144
144
|
element: hoveredElement,
|
|
145
|
-
datum: datum
|
|
145
|
+
datum: datum
|
|
146
146
|
});
|
|
147
147
|
// Hide tooltip
|
|
148
148
|
self.services.events.dispatchEvent(Events.Tooltip.HIDE, {
|
|
149
|
-
hoveredElement: hoveredElement
|
|
149
|
+
hoveredElement: hoveredElement
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-simple.js","sourceRoot":"","sources":["bar-simple.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from \"./bar\";\nimport { Events, Roles, TooltipTypes } from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\n\nexport class SimpleBar extends Bar {\n\ttype = \"simple-bar\";\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.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG();\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll(\"path.bar\")\n\t\t\t.data(this.model.getDisplayData(), (datum) => datum[groupMapsTo]);\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 paths that need to be introduced\n\t\tconst barsEnter = bars.enter().append(\"path\").attr(\"opacity\", 0);\n\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed(\"bar\", true)\n\t\t\t.attr(\"width\", this.getBarWidth.bind(this))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"fill\", (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr(\"d\", (d, i) => {\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(d, 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(0);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d, i);\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.value);\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.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(\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\taddEventListeners() {\n\t\tconst options = this.model.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 (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed(\"hovered\", true);\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT,\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\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\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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"]}
|
|
1
|
+
{"version":3,"file":"bar-simple.js","sourceRoot":"","sources":["bar-simple.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from \"./bar\";\nimport { Events, Roles, TooltipTypes } from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\n\nexport class SimpleBar extends Bar {\n\ttype = \"simple-bar\";\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.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG();\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll(\"path.bar\")\n\t\t\t.data(this.model.getDisplayData(), (datum) => datum[groupMapsTo]);\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 paths that need to be introduced\n\t\tconst barsEnter = bars.enter().append(\"path\").attr(\"opacity\", 0);\n\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed(\"bar\", true)\n\t\t\t.attr(\"width\", this.getBarWidth.bind(this))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"fill\", (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr(\"d\", (d, i) => {\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(d, 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(0);\n\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(d, i);\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.value);\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.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(\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\taddEventListeners() {\n\t\tconst options = this.model.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 (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed(\"hovered\", true);\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT\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\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\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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"]}
|
|
@@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
// Internal Imports
|
|
15
15
|
import { Tools } from "../../tools";
|
|
16
16
|
import { Bar } from "./bar";
|
|
17
|
-
import { Roles, TooltipTypes, Events, CartesianOrientations
|
|
17
|
+
import { Roles, TooltipTypes, Events, CartesianOrientations } from "../../interfaces";
|
|
18
18
|
// D3 Imports
|
|
19
19
|
import { select } from "d3-selection";
|
|
20
20
|
import { color } from "d3-color";
|
|
@@ -141,7 +141,7 @@ var StackedBar = /** @class */ (function (_super) {
|
|
|
141
141
|
// Dispatch mouse event
|
|
142
142
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {
|
|
143
143
|
element: hoveredElement,
|
|
144
|
-
datum: datum
|
|
144
|
+
datum: datum
|
|
145
145
|
});
|
|
146
146
|
})
|
|
147
147
|
.on("mousemove", function (datum) {
|
|
@@ -168,14 +168,14 @@ var StackedBar = /** @class */ (function (_super) {
|
|
|
168
168
|
self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
|
|
169
169
|
hoveredElement: hoveredElement,
|
|
170
170
|
data: matchingDataPoint,
|
|
171
|
-
type: TooltipTypes.DATAPOINT
|
|
171
|
+
type: TooltipTypes.DATAPOINT
|
|
172
172
|
});
|
|
173
173
|
})
|
|
174
174
|
.on("click", function (datum) {
|
|
175
175
|
// Dispatch mouse event
|
|
176
176
|
self.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {
|
|
177
177
|
element: select(this),
|
|
178
|
-
datum: datum
|
|
178
|
+
datum: datum
|
|
179
179
|
});
|
|
180
180
|
})
|
|
181
181
|
.on("mouseout", function (datum) {
|
|
@@ -189,11 +189,11 @@ var StackedBar = /** @class */ (function (_super) {
|
|
|
189
189
|
// Dispatch mouse event
|
|
190
190
|
self.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {
|
|
191
191
|
element: hoveredElement,
|
|
192
|
-
datum: datum
|
|
192
|
+
datum: datum
|
|
193
193
|
});
|
|
194
194
|
// Hide tooltip
|
|
195
195
|
self.services.events.dispatchEvent(Events.Tooltip.HIDE, {
|
|
196
|
-
hoveredElement: hoveredElement
|
|
196
|
+
hoveredElement: hoveredElement
|
|
197
197
|
});
|
|
198
198
|
});
|
|
199
199
|
};
|
|
@@ -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\tTooltipTypes,\n\tEvents,\n\tCartesianOrientations,\n} from \"../../interfaces\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\nimport { map } from \"d3-collection\";\n\nexport class StackedBar extends Bar {\n\ttype = \"stacked-bar\";\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.getContainerSVG();\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Create the data and keys that'll be used by the stack layout\n\t\tconst stackKeys = map(\n\t\t\tdisplayData,\n\t\t\t(datum) => datum[domainIdentifier]\n\t\t).keys();\n\t\tconst stackData = this.model.getStackedData();\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg.selectAll(\"g.bars\").data(stackData, (d) => d.key);\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\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((data) => data);\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\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"fill\", (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr(\"d\", (d, i) => {\n\t\t\t\tconst key = stackKeys[i];\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// 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.value);\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\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.datasetLabel !== hoveredElement.datum()[\"key\"] ? 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.model.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 (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\t\t\t})\n\t\t\t.on(\"mousemove\", function (datum) {\n\t\t\t\tconst displayData = self.model.getDisplayData();\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier();\n\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier();\n\t\t\t\tconst { groupMapsTo } = self.model.getOptions().data;\n\n\t\t\t\tlet matchingDataPoint = displayData.find((d) => {\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\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\thoveredElement,\n\t\t\t\t\tdata: matchingDataPoint,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT,\n\t\t\t\t});\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\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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"]}
|
|
1
|
+
{"version":3,"file":"bar-stacked.js","sourceRoot":"","sources":["bar-stacked.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EACN,KAAK,EACL,YAAY,EACZ,MAAM,EACN,qBAAqB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC;IAAgC,8BAAG;IAAnC;QAAA,qEAiQC;QAhQA,UAAI,GAAG,aAAa,CAAC;QAuHrB,wDAAwD;QACxD,yBAAmB,GAAG,UAAC,KAAkB;YAChC,IAAA,4CAAc,CAAkB;YAExC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,UAAU,CAAC;iBACrB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAC3D;iBACA,IAAI,CAAC,SAAS,EAAE,UAAC,CAAC;gBAClB,OAAA,CAAC,CAAC,YAAY,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAA1D,CAA0D,CAC1D,CAAC;QACJ,CAAC,CAAC;QAEF,4BAA4B;QAC5B,0BAAoB,GAAG,UAAC,KAAkB;YACzC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,UAAU,CAAC;iBACrB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAC9D;iBACA,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;;IAmHH,CAAC;IA9PA,yBAAI,GAAJ;QACC,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAE5C,iDAAiD;QACjD,cAAc,CAAC,gBAAgB,CAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QAEF,gDAAgD;QAChD,cAAc,CAAC,gBAAgB,CAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;IACH,CAAC;IAED,2BAAM,GAAN,UAAO,OAAgB;QAAvB,iBAmGC;QAlGA,qBAAqB;QACrB,IAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEnC,uDAAuD;QACvD,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAChD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAChC,IAAA,sCAAW,CAAkB;QAErC,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;QAE7E,+DAA+D;QAC/D,IAAM,SAAS,GAAG,GAAG,CACpB,WAAW,EACX,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,gBAAgB,CAAC,EAAvB,CAAuB,CAClC,CAAC,IAAI,EAAE,CAAC;QACT,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE9C,gCAAgC;QAChC,IAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,CAAC;QAExE,yCAAyC;QACzC,iDAAiD;QACjD,0DAA0D;QAC1D,4BAA4B;QAC5B,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAE7C,4CAA4C;QAC5C,SAAS;aACP,KAAK,EAAE;aACP,MAAM,CAAC,GAAG,CAAC;aACX,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;aACrB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE5B,0BAA0B;QAC1B,IAAM,IAAI,GAAG,GAAG;aACd,SAAS,CAAC,QAAQ,CAAC;aACnB,SAAS,CAAC,UAAU,CAAC;aACrB,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;QAEvB,sCAAsC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE;aACV,MAAM,CAAC,MAAM,CAAC;aACd,KAAK,CAAC,IAAI,CAAC;aACX,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;aACpB,UAAU,CACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,kBAAkB,EAClB,OAAO,CACP,CACD;aACA,IAAI,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAvC,CAAuC,CAAC;aAC5D,IAAI,CAAC,GAAG,EAAE,UAAC,CAAC,EAAE,CAAC;YACf,IAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAEzB;;;;;eAKG;YACH,IAAM,QAAQ,GAAG,KAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAM,EAAE,GACP,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpD,QAAQ,GAAG,CAAC,CAAC;YACd,IAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;YACzB,IAAM,EAAE,GAAG,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,EAAE,GAAG,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9D,sBAAsB;YACtB,IACC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAC3C;gBACD,IACC,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE;oBAC9C,qBAAqB,CAAC,QAAQ,EAC7B;oBACD,EAAE,IAAI,CAAC,CAAC;iBACR;qBAAM;oBACN,EAAE,IAAI,CAAC,CAAC;iBACR;aACD;YAED,OAAO,KAAK,CAAC,qBAAqB,CACjC,EAAE,EAAE,IAAA,EAAE,EAAE,IAAA,EAAE,EAAE,IAAA,EAAE,EAAE,IAAA,EAAE,EAClB,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,CAC9C,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACnB,OAAO;aACN,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC;aACnC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;aACnC,IAAI,CAAC,YAAY,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAC;QAErC,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IA0BD,sCAAiB,GAAjB;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAChC,IAAA,sCAAW,CAAkB;QAErC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,UAAU,CAAC;aACrB,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK;YAC/B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpC,cAAc;iBACZ,UAAU,CACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,qCAAqC,CACrC,CACD;iBACA,IAAI,CAAC,MAAM,EAAE,UAAC,CAAM;gBACpB,OAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC;qBACX,QAAQ,EAAE;YAFZ,CAEY,CACZ,CAAC;YAEH,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;gBAC5D,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK;;YAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAChD,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;YAC7E,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YACnE,IAAA,sDAAW,CAAkC;YAErD,IAAI,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC1C,OAAO,CACN,CAAC,CAAC,eAAe,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC9C,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;wBAC7B,KAAK,CAAC,IAAI,CAAC,cAAc;oBAC1B,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,KAAK,CAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,iBAAiB,KAAK,SAAS,EAAE;gBACpC,iBAAiB;oBAChB,GAAC,gBAAgB,IAAG,KAAK,CAAC,IAAI,CAAC,cAAc;oBAC7C,GAAC,eAAe,IAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC1C,GAAC,WAAW,IAAG,KAAK,CAAC,KAAK;uBAC1B,CAAC;aACF;YAED,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,cAAc,gBAAA;gBACd,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,YAAY,CAAC,SAAS;aAC5B,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;YAC3B,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;gBACxD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC;gBACrB,KAAK,OAAA;aACL,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK;YAC9B,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAEzC,cAAc;iBACZ,UAAU,CACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,oCAAoC,CACpC,CACD;iBACA,IAAI,CAAC,MAAM,EAAE,UAAC,CAAM;gBACpB,OAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAAvC,CAAuC,CACvC,CAAC;YAEH,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;gBAC3D,OAAO,EAAE,cAAc;gBACvB,KAAK,OAAA;aACL,CAAC,CAAC;YAEH,eAAe;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvD,cAAc,gBAAA;aACd,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4BAAO,GAAP;QACC,yBAAyB;QACzB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,UAAU,CAAC;aACrB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEvB,0BAA0B;QAC1B,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;IACH,CAAC;IACF,iBAAC;AAAD,CAAC,AAjQD,CAAgC,GAAG,GAiQlC","sourcesContent":["// Internal Imports\nimport { Tools } from \"../../tools\";\nimport { Bar } from \"./bar\";\nimport {\n\tRoles,\n\tTooltipTypes,\n\tEvents,\n\tCartesianOrientations\n} from \"../../interfaces\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { color } from \"d3-color\";\nimport { map } from \"d3-collection\";\n\nexport class StackedBar extends Bar {\n\ttype = \"stacked-bar\";\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.getContainerSVG();\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Create the data and keys that'll be used by the stack layout\n\t\tconst stackKeys = map(\n\t\t\tdisplayData,\n\t\t\t(datum) => datum[domainIdentifier]\n\t\t).keys();\n\t\tconst stackData = this.model.getStackedData();\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg.selectAll(\"g.bars\").data(stackData, (d) => d.key);\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\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((data) => data);\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\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"bar-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"fill\", (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr(\"d\", (d, i) => {\n\t\t\t\tconst key = stackKeys[i];\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// 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.value);\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\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.datasetLabel !== hoveredElement.datum()[\"key\"] ? 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.model.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 (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseover_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tcolor(self.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t\t\t\t.darker(0.7)\n\t\t\t\t\t\t\t.toString()\n\t\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\t\t\t})\n\t\t\t.on(\"mousemove\", function (datum) {\n\t\t\t\tconst displayData = self.model.getDisplayData();\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier();\n\t\t\t\tconst rangeIdentifier = self.services.cartesianScales.getRangeIdentifier();\n\t\t\t\tconst { groupMapsTo } = self.model.getOptions().data;\n\n\t\t\t\tlet matchingDataPoint = displayData.find((d) => {\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\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\thoveredElement,\n\t\t\t\t\tdata: matchingDataPoint,\n\t\t\t\t\ttype: TooltipTypes.DATAPOINT\n\t\t\t\t});\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\n\t\t\t\t\t.transition(\n\t\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t\t\"graph_element_mouseout_fill_update\"\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.attr(\"fill\", (d: any) =>\n\t\t\t\t\t\tself.model.getFillColor(d[groupMapsTo])\n\t\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"]}
|
|
@@ -194,15 +194,16 @@ var Gauge = /** @class */ (function (_super) {
|
|
|
194
194
|
? Tools.getProperty(options, "gauge", "deltaFontSize")
|
|
195
195
|
: function () { return 0; };
|
|
196
196
|
// use numberFormatter here only if there is a delta supplied
|
|
197
|
-
var numberFormatter = delta
|
|
197
|
+
var numberFormatter = delta
|
|
198
|
+
? Tools.getProperty(options, "gauge", "numberFormatter")
|
|
199
|
+
: function () { return null; };
|
|
198
200
|
var arrowSize = Tools.getProperty(options, "gauge", "deltaArrow", "size");
|
|
199
201
|
var numberSpacing = Tools.getProperty(options, "gauge", "numberSpacing");
|
|
200
202
|
var numbersGroup = DOMUtils.appendOrSelect(svg, "g.gauge-numbers");
|
|
201
203
|
// Add the smaller number of the delta
|
|
202
204
|
var deltaGroup = DOMUtils.appendOrSelect(numbersGroup, "g.gauge-delta").attr("transform", "translate(0, " + (deltaFontSize(radius) + numberSpacing) + ")");
|
|
203
205
|
var deltaNumber = DOMUtils.appendOrSelect(deltaGroup, "text.gauge-delta-number");
|
|
204
|
-
deltaNumber
|
|
205
|
-
.data(delta === null ? [] : [delta]);
|
|
206
|
+
deltaNumber.data(delta === null ? [] : [delta]);
|
|
206
207
|
deltaNumber
|
|
207
208
|
.enter()
|
|
208
209
|
.append("text")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport { DOMUtils } from \"../../services\";\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections\n} from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { arc } from \"d3-shape\";\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = \"4,10 8,6 12,10\";\nconst ARROW_DOWN_PATH_STRING = \"12,6 8,10 4,6\";\n\nexport class Gauge extends Component {\n\ttype = \"gauge\";\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\t}\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === \"value\")?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === \"delta\")?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.model.getOptions();\n\t\tconst type = Tools.getProperty(options, \"gauge\", \"type\");\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.model.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaArrow\",\n\t\t\t\"direction\"\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, \"path.arc-background\")\n\t\t\t.attr(\"d\", this.backgroundArc)\n\t\t\t.attr(\"role\", Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll(\"path.arc-foreground\").data([value]);\n\n\t\tarcValue\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"class\", \"arc-foreground\")\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.attr(\"fill\", (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr(\"role\", Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr(\"aria-roledescription\", \"value\")\n\t\t\t.attr(\"aria-label\", (d) => d.value);\n\n\t\t// Position Arc\n\t\tsvg.attr(\"transform\", `translate(${radius}, ${radius})`);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, \"gauge\", \"type\");\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"valueFontSize\"\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaFontSize\"\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberSpacing\"\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t\"g.gauge-numbers\"\n\t\t).attr(\"transform\", `translate(0, ${numbersYPosition})`);\n\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t\"g.gauge-value-number\"\n\t\t).attr(\"transform\", \"translate(-10, 0)\"); // Optical centering for the presence of the smaller % symbol\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberFormatter\"\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll(\"text.gauge-value-number\")\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.attr(\"class\", \"gauge-value-number\")\n\t\t\t.merge(valueNumber)\n\t\t\t.style(\"font-size\", `${valueFontSize(radius)}px`)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, \"text.gauge-value-number\"),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tDOMUtils.appendOrSelect(valueNumberGroup, \"text.gauge-value-symbol\")\n\t\t\t.style(\"font-size\", `${valueFontSize(radius) / 2}px`)\n\t\t\t.attr(\"x\", valueNumberWidth / 2)\n\t\t\t.text(\"%\");\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, \"gauge\", \"deltaFontSize\")\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta ? Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberFormatter\"\n\t\t) : () => null;\n\n\t\tconst arrowSize = Tools.getProperty(options, \"gauge\", \"deltaArrow\", \"size\");\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberSpacing\"\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, \"g.gauge-numbers\");\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t\"g.gauge-delta\"\n\t\t).attr(\n\t\t\t\"transform\",\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(deltaGroup, \"text.gauge-delta-number\");\n\n\t\tdeltaNumber\n\t\t\t.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.classed(\"gauge-delta-number\", true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.style(\"font-size\", `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}%`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, \".gauge-delta-number\"),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(options, \"gauge\", \"deltaArrow\", \"enabled\");\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll(\"svg.gauge-delta-arrow\")\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append(\"svg\")\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr(\"class\", \"gauge-delta-arrow\")\n\t\t\t.attr(\"x\", -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr(\"y\", -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr(\"width\", arrowSize(radius))\n\t\t\t.attr(\"height\", arrowSize(radius))\n\t\t\t.attr(\"viewBox\", \"0 0 16 16\");\n\n\t\t// Needed to correctly size SVG in Firefox\n\t\tDOMUtils.appendOrSelect(deltaArrow, \"rect.gauge-delta-arrow-backdrop\")\n\t\t\t.attr(\"width\", \"16\")\n\t\t\t.attr(\"height\", \"16\")\n\t\t\t.attr(\"fill\", \"none\");\n\n\t\t// Draw the arrow with status\n\t\tconst status = Tools.getProperty(options, \"gauge\", \"status\");\n\t\tDOMUtils.appendOrSelect(deltaArrow, \"polygon.gauge-delta-arrow\")\n\t\t\t.classed(`status--${status}`, status !== null)\n\t\t\t.attr(\"fill\", () => (status === null ? \"currentColor\" : null))\n\t\t\t.attr(\"points\", self.getArrow(delta));\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t\"gauge\",\n\t\t\t\"arcWidth\"\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll(\"path.arc\")\n\t\t\t.on(\"mouseover\", function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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(\"mousemove\", function (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.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum\n\t\t\t\t});\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.Gauge.ARC_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\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.model.getOptions();\n\t\tconst arcType = Tools.getProperty(options, \"gauge\", \"type\");\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport { DOMUtils } from \"../../services\";\nimport { Roles, Events, GaugeTypes, ArrowDirections } from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { select } from \"d3-selection\";\nimport { arc } from \"d3-shape\";\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = \"4,10 8,6 12,10\";\nconst ARROW_DOWN_PATH_STRING = \"12,6 8,10 4,6\";\n\nexport class Gauge extends Component {\n\ttype = \"gauge\";\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\t}\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === \"value\")?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === \"delta\")?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.model.getOptions();\n\t\tconst type = Tools.getProperty(options, \"gauge\", \"type\");\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.model.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaArrow\",\n\t\t\t\"direction\"\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, \"path.arc-background\")\n\t\t\t.attr(\"d\", this.backgroundArc)\n\t\t\t.attr(\"role\", Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll(\"path.arc-foreground\").data([value]);\n\n\t\tarcValue\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.attr(\"class\", \"arc-foreground\")\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\"d\", this.arc)\n\t\t\t.attr(\"fill\", (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr(\"role\", Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr(\"aria-roledescription\", \"value\")\n\t\t\t.attr(\"aria-label\", (d) => d.value);\n\n\t\t// Position Arc\n\t\tsvg.attr(\"transform\", `translate(${radius}, ${radius})`);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, \"gauge\", \"type\");\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"valueFontSize\"\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaFontSize\"\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberSpacing\"\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t\"g.gauge-numbers\"\n\t\t).attr(\"transform\", `translate(0, ${numbersYPosition})`);\n\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t\"g.gauge-value-number\"\n\t\t).attr(\"transform\", \"translate(-10, 0)\"); // Optical centering for the presence of the smaller % symbol\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberFormatter\"\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll(\"text.gauge-value-number\")\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.attr(\"class\", \"gauge-value-number\")\n\t\t\t.merge(valueNumber)\n\t\t\t.style(\"font-size\", `${valueFontSize(radius)}px`)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, \"text.gauge-value-number\"),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tDOMUtils.appendOrSelect(valueNumberGroup, \"text.gauge-value-symbol\")\n\t\t\t.style(\"font-size\", `${valueFontSize(radius) / 2}px`)\n\t\t\t.attr(\"x\", valueNumberWidth / 2)\n\t\t\t.text(\"%\");\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.model.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, \"gauge\", \"deltaFontSize\")\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, \"gauge\", \"numberFormatter\")\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaArrow\",\n\t\t\t\"size\"\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"numberSpacing\"\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, \"g.gauge-numbers\");\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t\"g.gauge-delta\"\n\t\t).attr(\n\t\t\t\"transform\",\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t\"text.gauge-delta-number\"\n\t\t);\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append(\"text\")\n\t\t\t.classed(\"gauge-delta-number\", true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.style(\"font-size\", `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}%`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, \".gauge-delta-number\"),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t\"gauge\",\n\t\t\t\"deltaArrow\",\n\t\t\t\"enabled\"\n\t\t);\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll(\"svg.gauge-delta-arrow\")\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append(\"svg\")\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr(\"class\", \"gauge-delta-arrow\")\n\t\t\t.attr(\"x\", -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr(\"y\", -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr(\"width\", arrowSize(radius))\n\t\t\t.attr(\"height\", arrowSize(radius))\n\t\t\t.attr(\"viewBox\", \"0 0 16 16\");\n\n\t\t// Needed to correctly size SVG in Firefox\n\t\tDOMUtils.appendOrSelect(deltaArrow, \"rect.gauge-delta-arrow-backdrop\")\n\t\t\t.attr(\"width\", \"16\")\n\t\t\t.attr(\"height\", \"16\")\n\t\t\t.attr(\"fill\", \"none\");\n\n\t\t// Draw the arrow with status\n\t\tconst status = Tools.getProperty(options, \"gauge\", \"status\");\n\t\tDOMUtils.appendOrSelect(deltaArrow, \"polygon.gauge-delta-arrow\")\n\t\t\t.classed(`status--${status}`, status !== null)\n\t\t\t.attr(\"fill\", () => (status === null ? \"currentColor\" : null))\n\t\t\t.attr(\"points\", self.getArrow(delta));\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.model.getOptions(),\n\t\t\t\"gauge\",\n\t\t\t\"arcWidth\"\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll(\"path.arc\")\n\t\t\t.on(\"mouseover\", function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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(\"mousemove\", function (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.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum\n\t\t\t\t});\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.Gauge.ARC_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\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.model.getOptions();\n\t\tconst arcType = Tools.getProperty(options, \"gauge\", \"type\");\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
|
|
@@ -74,9 +74,7 @@ var Line = /** @class */ (function (_super) {
|
|
|
74
74
|
});
|
|
75
75
|
var data = [];
|
|
76
76
|
if (this.configs.stacked) {
|
|
77
|
-
var percentage = Object.keys(options.axes).some(function (axis) {
|
|
78
|
-
return options.axes[axis].percentage;
|
|
79
|
-
});
|
|
77
|
+
var percentage = Object.keys(options.axes).some(function (axis) { return options.axes[axis].percentage; });
|
|
80
78
|
var groupMapsTo_1 = options.data.groupMapsTo;
|
|
81
79
|
var stackedData = this.model.getStackedData({ percentage: percentage });
|
|
82
80
|
var domainIdentifier_1 = this.services.cartesianScales.getDomainIdentifier();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line.js","sourceRoot":"","sources":["line.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport * as Configuration from \"../../configuration\";\nimport { Roles, Events } from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { line } from \"d3-shape\";\n\nexport class Line extends Component {\n\ttype = \"line\";\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight lines on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst { cartesianScales, curves } = this.services;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\t\tconst options = this.model.getOptions();\n\n\t\t// D3 line generator function\n\t\tconst lineGenerator = line()\n\t\t\t.x(getXValue)\n\t\t\t.y(getYValue)\n\t\t\t.curve(curves.getD3Curve())\n\t\t\t.defined((datum: any, i) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\tconst value = datum[rangeIdentifier];\n\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tlet data = [];\n\t\tif (this.configs.stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(axis =>\n\t\t\t\toptions.axes[axis].percentage\n\t\t\t);\n\t\t\tconst { groupMapsTo } = options.data;\n\t\t\tconst stackedData = this.model.getStackedData({ percentage });\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\t\tdata = stackedData.map((d) => ({\n\t\t\t\tname: d[0][groupMapsTo],\n\t\t\t\tdata: d.map((datum) => ({\n\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t[groupMapsTo]: datum[groupMapsTo],\n\t\t\t\t\t[rangeIdentifier]: datum[1]\n\t\t\t\t})),\n\t\t\t\thidden: !Tools.some(d, (datum) => datum[0] !== datum[1])\n\t\t\t}));\n\t\t} else {\n\t\t\tdata = this.model.getGroupedData();\n\t\t}\n\n\t\t// Update the bound data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.data(data, (group) => group.name);\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\tlines.exit().attr(\"opacity\", 0).remove();\n\n\t\t// Add lines that need to be introduced\n\t\tconst enteringLines = lines\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.classed(\"line\", true)\n\t\t\t.attr(\"opacity\", 0);\n\n\t\t// Apply styles and datum\n\t\tenteringLines\n\t\t\t.merge(lines)\n\t\t\t.data(data, (group) => group.name)\n\t\t\t.attr(\"stroke\", (group, i) => {\n\t\t\t\treturn this.model.getStrokeColor(group.name);\n\t\t\t})\n\t\t\t// a11y\n\t\t\t.attr(\"role\", Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr(\"aria-roledescription\", \"line\")\n\t\t\t.attr(\"aria-label\", (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\t\treturn groupData\n\t\t\t\t\t.map((datum) => datum[rangeIdentifier])\n\t\t\t\t\t.join(\",\");\n\t\t\t})\n\t\t\t// Transition\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"line-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"opacity\", (d) => (d.hidden ? 0 : 1))\n\t\t\t.attr(\"d\", (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn lineGenerator(groupData);\n\t\t\t});\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\"legend-hover-line\")\n\t\t\t)\n\t\t\t.attr(\"opacity\", (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()[\"name\"]) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\"legend-mouseout-line\")\n\t\t\t)\n\t\t\t.attr(\"opacity\", Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\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":"line.js","sourceRoot":"","sources":["line.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from \"../component\";\nimport * as Configuration from \"../../configuration\";\nimport { Roles, Events } from \"../../interfaces\";\nimport { Tools } from \"../../tools\";\n\n// D3 Imports\nimport { line } from \"d3-shape\";\n\nexport class Line extends Component {\n\ttype = \"line\";\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct line legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight lines on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst { cartesianScales, curves } = this.services;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\t\tconst options = this.model.getOptions();\n\n\t\t// D3 line generator function\n\t\tconst lineGenerator = line()\n\t\t\t.x(getXValue)\n\t\t\t.y(getYValue)\n\t\t\t.curve(curves.getD3Curve())\n\t\t\t.defined((datum: any, i) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\tconst value = datum[rangeIdentifier];\n\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\tlet data = [];\n\t\tif (this.configs.stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tconst { groupMapsTo } = options.data;\n\t\t\tconst stackedData = this.model.getStackedData({ percentage });\n\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\t\tdata = stackedData.map((d) => ({\n\t\t\t\tname: d[0][groupMapsTo],\n\t\t\t\tdata: d.map((datum) => ({\n\t\t\t\t\t[domainIdentifier]: datum.data.sharedStackKey,\n\t\t\t\t\t[groupMapsTo]: datum[groupMapsTo],\n\t\t\t\t\t[rangeIdentifier]: datum[1]\n\t\t\t\t})),\n\t\t\t\thidden: !Tools.some(d, (datum) => datum[0] !== datum[1])\n\t\t\t}));\n\t\t} else {\n\t\t\tdata = this.model.getGroupedData();\n\t\t}\n\n\t\t// Update the bound data on lines\n\t\tconst lines = svg\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.data(data, (group) => group.name);\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\tlines.exit().attr(\"opacity\", 0).remove();\n\n\t\t// Add lines that need to be introduced\n\t\tconst enteringLines = lines\n\t\t\t.enter()\n\t\t\t.append(\"path\")\n\t\t\t.classed(\"line\", true)\n\t\t\t.attr(\"opacity\", 0);\n\n\t\t// Apply styles and datum\n\t\tenteringLines\n\t\t\t.merge(lines)\n\t\t\t.data(data, (group) => group.name)\n\t\t\t.attr(\"stroke\", (group, i) => {\n\t\t\t\treturn this.model.getStrokeColor(group.name);\n\t\t\t})\n\t\t\t// a11y\n\t\t\t.attr(\"role\", Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr(\"aria-roledescription\", \"line\")\n\t\t\t.attr(\"aria-label\", (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\t\treturn groupData\n\t\t\t\t\t.map((datum) => datum[rangeIdentifier])\n\t\t\t\t\t.join(\",\");\n\t\t\t})\n\t\t\t// Transition\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\"line-update-enter\",\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr(\"opacity\", (d) => (d.hidden ? 0 : 1))\n\t\t\t.attr(\"d\", (group) => {\n\t\t\t\tconst { data: groupData } = group;\n\t\t\t\treturn lineGenerator(groupData);\n\t\t\t});\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\"legend-hover-line\")\n\t\t\t)\n\t\t\t.attr(\"opacity\", (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()[\"name\"]) {\n\t\t\t\t\treturn Configuration.lines.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.lines.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\"legend-mouseout-line\")\n\t\t\t)\n\t\t\t.attr(\"opacity\", Configuration.lines.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll(\"path.line\")\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"]}
|