@carbon/charts 0.50.6 → 0.50.10
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 +41 -0
- package/build/demo/create-codesandbox.d.ts +6 -17
- package/build/demo/data/circle-pack.d.ts +0 -6
- package/build/src/components/axes/toolbar.d.ts +1 -0
- package/build/src/components/essentials/legend.d.ts +1 -1
- package/build/src/services/essentials/dom-utils.d.ts +3 -0
- package/build/src/services/scales-cartesian.d.ts +1 -1
- package/bundle.js +1 -1
- package/components/axes/ruler-binned.js +1 -1
- package/components/axes/ruler-binned.js.map +1 -1
- package/components/axes/toolbar.d.ts +1 -0
- package/components/axes/toolbar.js +74 -48
- package/components/axes/toolbar.js.map +1 -1
- package/components/axes/zoom-bar.js +12 -3
- package/components/axes/zoom-bar.js.map +1 -1
- package/components/component.js +2 -6
- package/components/component.js.map +1 -1
- package/components/essentials/legend.d.ts +1 -1
- package/components/essentials/legend.js +20 -8
- package/components/essentials/legend.js.map +1 -1
- package/components/essentials/modal.js +3 -3
- package/components/essentials/modal.js.map +1 -1
- package/components/essentials/title.js +2 -2
- package/components/essentials/title.js.map +1 -1
- package/components/essentials/tooltip.js +2 -2
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/alluvial.js +29 -12
- package/components/graphs/alluvial.js.map +1 -1
- package/components/graphs/area-stacked.js +1 -0
- package/components/graphs/area-stacked.js.map +1 -1
- package/components/graphs/area.js +2 -4
- package/components/graphs/area.js.map +1 -1
- package/components/graphs/boxplot.js +1 -0
- package/components/graphs/boxplot.js.map +1 -1
- package/components/graphs/bubble.js +4 -0
- package/components/graphs/bubble.js.map +1 -1
- package/components/graphs/gauge.js +2 -4
- package/components/graphs/gauge.js.map +1 -1
- package/components/graphs/histogram.js +3 -1
- package/components/graphs/histogram.js.map +1 -1
- package/components/graphs/pie.js +1 -1
- package/components/graphs/pie.js.map +1 -1
- package/components/graphs/radar.js +8 -7
- package/components/graphs/radar.js.map +1 -1
- package/components/graphs/skeleton-lines.js +8 -3
- package/components/graphs/skeleton-lines.js.map +1 -1
- package/components/graphs/skeleton.js +18 -5
- package/components/graphs/skeleton.js.map +1 -1
- package/demo/create-codesandbox.d.ts +6 -17
- package/demo/create-codesandbox.js +11 -22
- package/demo/create-codesandbox.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/data/circle-pack.d.ts +0 -6
- package/demo/data/circle-pack.js +0 -6
- package/demo/data/circle-pack.js.map +1 -1
- package/demo/styles.css +85 -93
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/demo/tsconfig.tsbuildinfo +5 -5
- package/demo/utils.js +2 -2
- package/demo/utils.js.map +1 -1
- package/package.json +1 -1
- package/services/essentials/dom-utils.d.ts +3 -0
- package/services/essentials/dom-utils.js +9 -1
- package/services/essentials/dom-utils.js.map +1 -1
- package/styles/components/_legend.scss +5 -1
- package/styles/components/_skeleton-lines.scss +1 -2
- package/styles/components/_skeleton.scss +2 -7
- package/styles/components/_toolbar.scss +1 -1
- package/styles/components/_tooltip.scss +8 -2
- package/styles/components/_zoom-bar.scss +0 -12
- package/styles-g10.css +21 -23
- package/styles-g10.css.map +1 -1
- package/styles-g10.min.css +1 -1
- package/styles-g10.min.css.map +1 -1
- package/styles-g100.css +21 -23
- package/styles-g100.css.map +1 -1
- package/styles-g100.min.css +1 -1
- package/styles-g100.min.css.map +1 -1
- package/styles-g90.css +21 -23
- package/styles-g90.css.map +1 -1
- package/styles-g90.min.css +1 -1
- package/styles-g90.min.css.map +1 -1
- package/styles.css +21 -23
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tsconfig.tsbuildinfo +23 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area.js","sourceRoot":"","sources":["area.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport {\n\tCartesianOrientations,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { GradientUtils } from '../../services';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { area } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nexport class Area extends Component {\n\ttype = 'area';\n\trenderType = RenderTypes.SVG;\n\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area 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 area 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 = true) {\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tlet domain = [0, 0];\n\n\t\tconst { cartesianScales } = this.services;\n\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst areaGenerator = area()\n\t\t\t.curve(this.services.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\t// Update the bound data on area groups\n\t\tconst groupedData = this.model.getGroupedData(this.configs.groups);\n\n\t\tconst bounds = Tools.getProperty(this.getOptions(), 'bounds');\n\t\tconst boundsEnabled = bounds && groupedData && groupedData.length === 1;\n\n\t\tif (!boundsEnabled && bounds) {\n\t\t\tconsole.warn(\n\t\t\t\t`Bounds can only be shown when having 1 single datagroup, you've supplied ${groupedData.length}`\n\t\t\t); // eslint-disable-line no-console\n\t\t}\n\n\t\tconst upperBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[0]\n\t\t\t\t: cartesianScales.getRangeValue(0);\n\n\t\tconst lowerBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[1]\n\t\t\t\t: cartesianScales.getRangeValue(d, i);\n\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tdomain = this.services.cartesianScales.getMainYScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x((d, i) => cartesianScales.getDomainValue(d, i))\n\t\t\t\t.y0((d, i) => upperBound(d, i))\n\t\t\t\t.y1((d, i) => lowerBound(d, i));\n\t\t} else {\n\t\t\tdomain = this.services.cartesianScales.getMainXScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x0((d, i) => upperBound(d, i))\n\t\t\t\t.x1((d, i) => lowerBound(d, i))\n\t\t\t\t.y((d, i) => cartesianScales.getDomainValue(d, i));\n\t\t}\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientEnabled = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Should gradient style be applicable\n\t\tconst isGradientAllowed =\n\t\t\tgroupedData && groupedData.length === 1 && isGradientEnabled;\n\n\t\tif (groupedData.length > 1 && isGradientEnabled) {\n\t\t\tconsole.error(\n\t\t\t\t'Gradients can only be enabled when having 1 single dataset'\n\t\t\t);\n\t\t}\n\n\t\tconst areas = svg\n\t\t\t.selectAll('path.area')\n\t\t\t.data(groupedData, (group) => group.name);\n\n\t\tconst chartMainContainer = select(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\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\tareas.exit().attr('opacity', 0).remove();\n\n\t\t// if there is no grouped data (if all data groups are turned OFF with legend which can happen in the case of combo charts)\n\t\tif (!groupedData.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isGradientAllowed) {\n\t\t\t// The fill value of area has been overwritten, get color value from stroke color class instead\n\t\t\tconst strokePathElement = chartMainContainer\n\t\t\t\t.select(\n\t\t\t\t\t`path.${this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: groupedData[0].name,\n\t\t\t\t\t})}`\n\t\t\t\t)\n\t\t\t\t.node();\n\n\t\t\tlet colorValue;\n\t\t\tif (strokePathElement) {\n\t\t\t\tcolorValue = getComputedStyle(\n\t\t\t\t\tstrokePathElement as HTMLElement,\n\t\t\t\t\tnull\n\t\t\t\t).getPropertyValue('stroke');\n\t\t\t} else {\n\t\t\t\tconst sparklineColorObject = Tools.getProperty(\n\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t'color',\n\t\t\t\t\t'scale'\n\t\t\t\t);\n\n\t\t\t\tif (sparklineColorObject !== null) {\n\t\t\t\t\tconst sparklineColorObjectKeys = Object.keys(\n\t\t\t\t\t\tsparklineColorObject\n\t\t\t\t\t);\n\t\t\t\t\tcolorValue =\n\t\t\t\t\t\tsparklineColorObject[sparklineColorObjectKeys[0]];\n\t\t\t\t}\n\t\t\t}\n\t\t\tGradientUtils.appendOrUpdateLinearGradient({\n\t\t\t\tsvg: this.parent,\n\t\t\t\tid:\n\t\t\t\t\tgroupedData[0].name.replace(' ', '') +\n\t\t\t\t\t'_' +\n\t\t\t\t\tthis.gradient_id,\n\t\t\t\tx1: '0%',\n\t\t\t\tx2: '0%',\n\t\t\t\ty1: '0%',\n\t\t\t\ty2: '100%',\n\t\t\t\tstops: GradientUtils.getStops(domain, colorValue),\n\t\t\t});\n\t\t} else {\n\t\t\t// make sure there is no linearGradient if no gradient is allowed\n\t\t\tif (!this.parent.selectAll('defs linearGradient').empty()) {\n\t\t\t\tthis.parent.selectAll('defs linearGradient').each(function () {\n\t\t\t\t\tthis.parentNode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst self = this;\n\n\t\t// Enter paths that need to be introduced\n\t\tconst enteringAreas = areas.enter().append('path');\n\t\tif (isGradientAllowed) {\n\t\t\tenteringAreas\n\t\t\t\t.merge(areas)\n\t\t\t\t.style(\n\t\t\t\t\t'fill',\n\t\t\t\t\t(group) =>\n\t\t\t\t\t\t`url(#${group.name.replace(' ', '')}_${\n\t\t\t\t\t\t\tthis.gradient_id\n\t\t\t\t\t\t})`\n\t\t\t\t)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\t\t} else {\n\t\t\tenteringAreas\n\t\t\t\t.attr('opacity', 0)\n\t\t\t\t.merge(areas)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (group) => self.model.getFillColor(group.name))\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'area-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr(\n\t\t\t\t\t'opacity',\n\t\t\t\t\tboundsEnabled ? 1 : Configuration.area.opacity.selected\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\n\t\t\tif (boundsEnabled) {\n\t\t\t\tenteringAreas\n\t\t\t\t\t.attr('fill-opacity', Configuration.area.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) =>\n\t\t\t\t\t\tself.model.getStrokeColor(group.name)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-dasharray', '2, 2')\n\t\t\t\t\t.attr('stroke-width', 0.7 + 'px');\n\t\t\t}\n\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.area')\n\t\t\t.transition('legend-hover-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-area',\n\t\t\t\t})\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.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-mouseout-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n\n\tdestroy() {\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":"area.js","sourceRoot":"","sources":["area.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport {\n\tCartesianOrientations,\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { GradientUtils } from '../../services';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { area } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nexport class Area extends Component {\n\ttype = 'area';\n\trenderType = RenderTypes.SVG;\n\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area 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 area 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 = true) {\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tlet domain = [0, 0];\n\n\t\tconst { cartesianScales } = this.services;\n\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst areaGenerator = area()\n\t\t\t.curve(this.services.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\t// Update the bound data on area groups\n\t\tconst groupedData = this.model.getGroupedData(this.configs.groups);\n\n\t\tconst bounds = Tools.getProperty(this.getOptions(), 'bounds');\n\t\tconst boundsEnabled = bounds && groupedData && groupedData.length === 1;\n\n\t\tif (!boundsEnabled && bounds) {\n\t\t\tconsole.warn(\n\t\t\t\t`Bounds can only be shown when having 1 single datagroup, you've supplied ${groupedData.length}`\n\t\t\t); // eslint-disable-line no-console\n\t\t}\n\n\t\tconst upperBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[0]\n\t\t\t\t: cartesianScales.getRangeValue(0);\n\n\t\tconst lowerBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[1]\n\t\t\t\t: cartesianScales.getRangeValue(d, i);\n\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tdomain = this.services.cartesianScales.getMainYScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x((d, i) => cartesianScales.getDomainValue(d, i))\n\t\t\t\t.y0((d, i) => upperBound(d, i))\n\t\t\t\t.y1((d, i) => lowerBound(d, i));\n\t\t} else {\n\t\t\tdomain = this.services.cartesianScales.getMainXScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x0((d, i) => upperBound(d, i))\n\t\t\t\t.x1((d, i) => lowerBound(d, i))\n\t\t\t\t.y((d, i) => cartesianScales.getDomainValue(d, i));\n\t\t}\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientEnabled = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Should gradient style be applicable\n\t\tconst isGradientAllowed =\n\t\t\tgroupedData && groupedData.length === 1 && isGradientEnabled;\n\n\t\tif (groupedData.length > 1 && isGradientEnabled) {\n\t\t\tconsole.error(\n\t\t\t\t'Gradients can only be enabled when having 1 single dataset'\n\t\t\t);\n\t\t}\n\n\t\tconst areas = svg\n\t\t\t.selectAll('path.area')\n\t\t\t.data(groupedData, (group) => group.name);\n\n\t\tconst chartMainContainer = select(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\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\tareas.exit().attr('opacity', 0).remove();\n\n\t\t// if there is no grouped data (if all data groups are turned OFF with legend which can happen in the case of combo charts)\n\t\tif (!groupedData.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isGradientAllowed) {\n\t\t\t// The fill value of area has been overwritten, get color value from stroke color class instead\n\t\t\tconst strokePathElement = chartMainContainer\n\t\t\t\t.select(\n\t\t\t\t\t`path.${this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: groupedData[0].name,\n\t\t\t\t\t})}`\n\t\t\t\t)\n\t\t\t\t.node();\n\n\t\t\tlet colorValue;\n\t\t\tif (strokePathElement) {\n\t\t\t\tcolorValue = getComputedStyle(\n\t\t\t\t\tstrokePathElement as HTMLElement,\n\t\t\t\t\tnull\n\t\t\t\t).getPropertyValue('stroke');\n\t\t\t} else {\n\t\t\t\tconst sparklineColorObject = Tools.getProperty(\n\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t'color',\n\t\t\t\t\t'scale'\n\t\t\t\t);\n\n\t\t\t\tif (sparklineColorObject !== null) {\n\t\t\t\t\tconst sparklineColorObjectKeys = Object.keys(\n\t\t\t\t\t\tsparklineColorObject\n\t\t\t\t\t);\n\t\t\t\t\tcolorValue =\n\t\t\t\t\t\tsparklineColorObject[sparklineColorObjectKeys[0]];\n\t\t\t\t}\n\t\t\t}\n\t\t\tGradientUtils.appendOrUpdateLinearGradient({\n\t\t\t\tsvg: this.parent,\n\t\t\t\tid: this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`${groupedData[0].name.replace(' ', '')}_${\n\t\t\t\t\t\tthis.gradient_id\n\t\t\t\t\t}`\n\t\t\t\t),\n\t\t\t\tx1: '0%',\n\t\t\t\tx2: '0%',\n\t\t\t\ty1: '0%',\n\t\t\t\ty2: '100%',\n\t\t\t\tstops: GradientUtils.getStops(domain, colorValue),\n\t\t\t});\n\t\t} else {\n\t\t\t// make sure there is no linearGradient if no gradient is allowed\n\t\t\tif (!this.parent.selectAll('defs linearGradient').empty()) {\n\t\t\t\tthis.parent.selectAll('defs linearGradient').each(function () {\n\t\t\t\t\tthis.parentNode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst self = this;\n\n\t\t// Enter paths that need to be introduced\n\t\tconst enteringAreas = areas.enter().append('path');\n\t\tif (isGradientAllowed) {\n\t\t\tenteringAreas\n\t\t\t\t.merge(areas)\n\t\t\t\t.style(\n\t\t\t\t\t'fill',\n\t\t\t\t\t(group) =>\n\t\t\t\t\t\t`url(#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`${group.name.replace(' ', '')}_${this.gradient_id}`\n\t\t\t\t\t\t)})`\n\t\t\t\t)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\t\t} else {\n\t\t\tenteringAreas\n\t\t\t\t.attr('opacity', 0)\n\t\t\t\t.merge(areas)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (group) => self.model.getFillColor(group.name))\n\t\t\t\t.transition()\n\t\t\t\t.call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'area-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr(\n\t\t\t\t\t'opacity',\n\t\t\t\t\tboundsEnabled ? 1 : Configuration.area.opacity.selected\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\n\t\t\tif (boundsEnabled) {\n\t\t\t\tenteringAreas\n\t\t\t\t\t.attr('fill-opacity', Configuration.area.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) =>\n\t\t\t\t\t\tself.model.getStrokeColor(group.name)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-dasharray', '2, 2')\n\t\t\t\t\t.attr('stroke-width', 0.7 + 'px');\n\t\t\t}\n\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.area')\n\t\t\t.transition('legend-hover-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-area',\n\t\t\t\t})\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.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition('legend-mouseout-area')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-area',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n\n\tdestroy() {\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"]}
|
|
@@ -139,6 +139,7 @@ var Boxplot = /** @class */ (function (_super) {
|
|
|
139
139
|
.attr('stroke-width', Configuration.boxplot.strokeWidth.default)
|
|
140
140
|
.attr('role', Roles.GRAPHICS_SYMBOL)
|
|
141
141
|
.attr('aria-roledescription', 'box')
|
|
142
|
+
.attr('aria-label', function (d) { return d[groupMapsTo]; })
|
|
142
143
|
.transition()
|
|
143
144
|
.call(function (t) {
|
|
144
145
|
return _this.services.transitions.setupTransition({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n\tRoles,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Boxplot extends Component {\n\ttype = 'boxplot';\n\trenderType = RenderTypes.SVG;\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.model.getDataGroupNames();\n\n\t\t/*\n\t\t * Get graphable dimensions\n\t\t */\n\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\tconst [xScaleStart, xScaleEnd] = mainXScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = mainYScale.range();\n\t\tconst width = xScaleEnd - xScaleStart;\n\t\tconst height = yScaleEnd - yScaleStart;\n\t\tif (width === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get orientation of the chart\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst isInVerticalOrientation =\n\t\t\torientation === CartesianOrientations.VERTICAL;\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i?) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i?) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\tconst gridSize = Math.floor(\n\t\t\t(isInVerticalOrientation ? width : height) / dataGroupNames.length\n\t\t);\n\t\tconst boxWidth = Math.min(gridSize / 2, 16);\n\n\t\tconst boxplotData = this.model.getBoxplotData();\n\n\t\t/*\n\t\t * update or initialize all box groups\n\t\t */\n\t\tconst boxGroups = svg.selectAll('.box-group').data(boxplotData);\n\t\tboxGroups.exit().remove();\n\n\t\tconst boxGroupsEnter = boxGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('class', 'box-group');\n\n\t\tconst allBoxGroups = boxGroups.merge(boxGroupsEnter);\n\n\t\t/*\n\t\t * draw the 2 range lines for each box\n\t\t */\n\t\t// Start range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-verticalstartline',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_25);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t// End range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-verticalendline',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_75);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the boxes\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.box'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'box',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.default)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'box')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-quartiles',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(\n\t\t\t\t\tMath[isInVerticalOrientation ? 'max' : 'min'](\n\t\t\t\t\t\td.quartiles.q_75,\n\t\t\t\t\t\td.quartiles.q_25\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst y1 =\n\t\t\t\t\ty0 +\n\t\t\t\t\tMath.abs(\n\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_75) -\n\t\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_25)\n\t\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\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update highlight areas\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.highlight-area'))\n\t\t\t.attr('class', 'highlight-area')\n\t\t\t.attr('opacity', 0)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the starting whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-startingwhisker',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.min);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the median line\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.median'))\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'median',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-median',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.quartiles.q_50);\n\t\t\t\tconst y1 = y0;\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the ending whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-endingwhisker',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the outlier circles\n\t\t */\n\t\tconst circles = allBoxGroups.selectAll('circle.outlier').data((d) =>\n\t\t\td.outliers.map((outlier) => {\n\t\t\t\treturn {\n\t\t\t\t\tmin: d.whiskers.min,\n\t\t\t\t\tmax: d.whiskers.max,\n\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\tvalue: outlier,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t\tcircles.exit().remove();\n\n\t\tconst circlesEnter = circles.enter().append('circle');\n\n\t\tcircles\n\t\t\t.merge(circlesEnter)\n\t\t\t.attr('r', Configuration.boxplot.circle.radius)\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'outlier',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.default)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-circles',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('cy', getYValue);\n\n\t\tthis.addBoxEventListeners();\n\t\tthis.addCircleEventListeners();\n\t}\n\n\taddBoxEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.highlight-area')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.hovered\n\t\t\t\t\t);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Minimum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.min,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q1',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Median',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q3',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Maximum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.max,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'IQR',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75 - datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Boxplot.BOX_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\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\taddCircleEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.hovered\n\t\t\t\t\t)\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Outlier',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\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"]}
|
|
1
|
+
{"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRenderTypes,\n\tRoles,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Boxplot extends Component {\n\ttype = 'boxplot';\n\trenderType = RenderTypes.SVG;\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.model.getDataGroupNames();\n\n\t\t/*\n\t\t * Get graphable dimensions\n\t\t */\n\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\tconst [xScaleStart, xScaleEnd] = mainXScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = mainYScale.range();\n\t\tconst width = xScaleEnd - xScaleStart;\n\t\tconst height = yScaleEnd - yScaleStart;\n\t\tif (width === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get orientation of the chart\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst isInVerticalOrientation =\n\t\t\torientation === CartesianOrientations.VERTICAL;\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i?) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i?) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\tconst gridSize = Math.floor(\n\t\t\t(isInVerticalOrientation ? width : height) / dataGroupNames.length\n\t\t);\n\t\tconst boxWidth = Math.min(gridSize / 2, 16);\n\n\t\tconst boxplotData = this.model.getBoxplotData();\n\n\t\t/*\n\t\t * update or initialize all box groups\n\t\t */\n\t\tconst boxGroups = svg.selectAll('.box-group').data(boxplotData);\n\t\tboxGroups.exit().remove();\n\n\t\tconst boxGroupsEnter = boxGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('class', 'box-group');\n\n\t\tconst allBoxGroups = boxGroups.merge(boxGroupsEnter);\n\n\t\t/*\n\t\t * draw the 2 range lines for each box\n\t\t */\n\t\t// Start range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-verticalstartline',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_25);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t// End range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-verticalendline',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_75);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the boxes\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.box'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'box',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.default)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'box')\n\t\t\t.attr('aria-label', (d) => d[groupMapsTo])\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-quartiles',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(\n\t\t\t\t\tMath[isInVerticalOrientation ? 'max' : 'min'](\n\t\t\t\t\t\td.quartiles.q_75,\n\t\t\t\t\t\td.quartiles.q_25\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst y1 =\n\t\t\t\t\ty0 +\n\t\t\t\t\tMath.abs(\n\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_75) -\n\t\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_25)\n\t\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\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update highlight areas\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.highlight-area'))\n\t\t\t.attr('class', 'highlight-area')\n\t\t\t.attr('opacity', 0)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the starting whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-startingwhisker',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.min);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the median line\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.median'))\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'median',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-median',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.quartiles.q_50);\n\t\t\t\tconst y1 = y0;\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the ending whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-endingwhisker',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the outlier circles\n\t\t */\n\t\tconst circles = allBoxGroups.selectAll('circle.outlier').data((d) =>\n\t\t\td.outliers.map((outlier) => {\n\t\t\t\treturn {\n\t\t\t\t\tmin: d.whiskers.min,\n\t\t\t\t\tmax: d.whiskers.max,\n\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\tvalue: outlier,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t\tcircles.exit().remove();\n\n\t\tconst circlesEnter = circles.enter().append('circle');\n\n\t\tcircles\n\t\t\t.merge(circlesEnter)\n\t\t\t.attr('r', Configuration.boxplot.circle.radius)\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'outlier',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.default)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'boxplot-update-circles',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('cy', getYValue);\n\n\t\tthis.addBoxEventListeners();\n\t\tthis.addCircleEventListeners();\n\t}\n\n\taddBoxEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.highlight-area')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.hovered\n\t\t\t\t\t);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Minimum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.min,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q1',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Median',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q3',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Maximum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.max,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'IQR',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75 - datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Boxplot.BOX_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\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\taddCircleEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.hovered\n\t\t\t\t\t)\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Outlier',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\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"]}
|
|
@@ -60,6 +60,10 @@ var Bubble = /** @class */ (function (_super) {
|
|
|
60
60
|
.raise()
|
|
61
61
|
.classed('dot', true)
|
|
62
62
|
.attr('role', Roles.GRAPHICS_SYMBOL)
|
|
63
|
+
.attr('aria-label', function (d) {
|
|
64
|
+
var rangeIdentifier = cartesianScales.getRangeIdentifier(d);
|
|
65
|
+
return d[rangeIdentifier];
|
|
66
|
+
})
|
|
63
67
|
.transition()
|
|
64
68
|
.call(function (t) {
|
|
65
69
|
return _this.services.transitions.setupTransition({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.js","sourceRoot":"","sources":["bubble.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;IAA4B,0BAAO;IAAnC;QAAA,
|
|
1
|
+
{"version":3,"file":"bubble.js","sourceRoot":"","sources":["bubble.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Scatter } from './scatter';\nimport { DOMUtils } from '../../services';\nimport { Roles, ColorClassNameTypes, RenderTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { Selection } from 'd3-selection';\nimport { extent } from 'd3-array';\nimport { scaleLinear } from 'd3-scale';\n\nexport class Bubble extends Scatter {\n\ttype = 'bubble';\n\trenderType = RenderTypes.SVG;\n\n\tgetRadiusScale(selection: Selection<any, any, any, any>) {\n\t\tconst options = this.getOptions();\n\t\tconst { radiusMapsTo } = options.bubble;\n\n\t\tconst data = selection.data();\n\t\t// Filter out any null/undefined values\n\t\tconst allRadii = data\n\t\t\t.map((d) => d[radiusMapsTo])\n\t\t\t.filter((radius) => radius);\n\t\tconst chartSize = DOMUtils.getHTMLElementSize(\n\t\t\tthis.services.domUtils.getMainContainer()\n\t\t);\n\n\t\t// We need the ternary operator here in case the user\n\t\t// doesn't provide radius values in data\n\t\tconst radiusDataIsValid = allRadii.length > 0;\n\t\tconst domain = radiusDataIsValid ? extent(allRadii) : [1, 1];\n\t\treturn scaleLinear()\n\t\t\t.domain(domain)\n\t\t\t.range(\n\t\t\t\tradiusDataIsValid\n\t\t\t\t\t? options.bubble.radiusRange(chartSize, data)\n\t\t\t\t\t: [4, 4]\n\t\t\t);\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { radiusMapsTo } = options.bubble;\n\n\t\tconst radiusScale = this.getRadiusScale(selection);\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\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\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t})\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'bubble-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t// We need `|| 1` here in case the user doesn't provide radius values in data\n\t\t\t.attr('r', (d) => radiusScale(d[radiusMapsTo] || 1))\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', options.bubble.fillOpacity)\n\t\t\t.attr('opacity', 1);\n\t}\n\n\tgetTooltipAdditionalItems(datum) {\n\t\tconst bubbleOptions = Tools.getProperty(this.getOptions(), 'bubble');\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: Tools.getProperty(bubbleOptions, 'radiusLabel'),\n\t\t\t\tvalue: datum[Tools.getProperty(bubbleOptions, 'radiusMapsTo')],\n\t\t\t},\n\t\t];\n\t}\n}\n"]}
|
|
@@ -107,9 +107,7 @@ var Gauge = /** @class */ (function (_super) {
|
|
|
107
107
|
.startAngle(startAngle)
|
|
108
108
|
.endAngle(currentAngle);
|
|
109
109
|
// draw the container
|
|
110
|
-
DOMUtils.appendOrSelect(svg, 'path.arc-background')
|
|
111
|
-
.attr('d', this.backgroundArc)
|
|
112
|
-
.attr('role', Roles.GROUP);
|
|
110
|
+
DOMUtils.appendOrSelect(svg, 'path.arc-background').attr('d', this.backgroundArc);
|
|
113
111
|
// Add data arc
|
|
114
112
|
var arcValue = svg.selectAll('path.arc-foreground').data([value]);
|
|
115
113
|
var arcEnter = arcValue.enter().append('path');
|
|
@@ -127,7 +125,7 @@ var Gauge = /** @class */ (function (_super) {
|
|
|
127
125
|
// a11y
|
|
128
126
|
.attr('role', Roles.GRAPHICS_SYMBOL)
|
|
129
127
|
.attr('aria-roledescription', 'value')
|
|
130
|
-
.attr('aria-label', function (d) { return d
|
|
128
|
+
.attr('aria-label', function (d) { return d; });
|
|
131
129
|
// draw the value and delta to the center
|
|
132
130
|
this.drawValueNumber();
|
|
133
131
|
this.drawDelta();
|
|
@@ -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\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\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\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\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.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.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 svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\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\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\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// 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\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\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.getComponentContainer();\n\t\tconst options = this.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\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\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\tconst fontSize = valueFontSize(radius);\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);\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', `${fontSize}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\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\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.getComponentContainer();\n\t\tconst options = this.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 showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\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\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\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)}${gaugeSymbol}`);\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\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\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'polygon.gauge-delta-arrow'\n\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\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.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-foreground')\n\t\t\t.on('mouseover', function (event, 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\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\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\tevent,\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.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 {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n\tRenderTypes,\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\trenderType = RenderTypes.SVG;\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\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.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.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 svg = this.getComponentContainer()\n\t\t\t.attr('width', '100%')\n\t\t\t.attr('height', '100%');\n\t\tconst options = this.getOptions();\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').attr(\n\t\t\t'd',\n\t\t\tthis.backgroundArc\n\t\t);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\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);\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\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('x', gaugeTranslateX).attr('y', radius);\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.getComponentContainer();\n\t\tconst options = this.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\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\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\tconst fontSize = valueFontSize(radius);\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);\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', `${fontSize}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\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\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.getComponentContainer();\n\t\tconst options = this.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 showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\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\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\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)}${gaugeSymbol}`);\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\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\t\t\t/*\n\t\t\t * using .each() here to ensure that the below function runs\n\t\t\t * after svg.gauge-delta-arrow has been mounted onto the DOM\n\t\t\t */\n\t\t\t.each(function () {\n\t\t\t\tconst deltaArrowSelection = select(this);\n\n\t\t\t\t// Needed to correctly size SVG in Firefox\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'rect.gauge-delta-arrow-backdrop'\n\t\t\t\t)\n\t\t\t\t\t.attr('width', '16')\n\t\t\t\t\t.attr('height', '16')\n\t\t\t\t\t.attr('fill', 'none');\n\n\t\t\t\t// Draw the arrow with status\n\t\t\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\t\t\tDOMUtils.appendOrSelect(\n\t\t\t\t\tdeltaArrowSelection,\n\t\t\t\t\t'polygon.gauge-delta-arrow'\n\t\t\t\t)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\tstatus !== null\n\t\t\t\t\t\t\t? `gauge-delta-arrow status--${status}`\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t)\n\t\t\t\t\t.attr('points', self.getArrow(delta));\n\t\t\t});\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.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-foreground')\n\t\t\t.on('mouseover', function (event, 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\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\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\tevent,\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.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"]}
|
|
@@ -146,7 +146,9 @@ var Histogram = /** @class */ (function (_super) {
|
|
|
146
146
|
// a11y
|
|
147
147
|
.attr('role', Roles.GRAPHICS_SYMBOL)
|
|
148
148
|
.attr('aria-roledescription', 'bar')
|
|
149
|
-
.attr('aria-label', function (d) {
|
|
149
|
+
.attr('aria-label', function (d) {
|
|
150
|
+
return Tools.getProperty(d, 'data', d[groupMapsTo]);
|
|
151
|
+
});
|
|
150
152
|
// Add event listeners for the above elements
|
|
151
153
|
this.addEventListeners();
|
|
152
154
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"histogram.js","sourceRoot":"","sources":["histogram.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Tools } from '../../tools';\nimport {\n\tRoles,\n\tEvents,\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Component } from '../component';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nimport { get } from 'lodash-es';\n\nexport class Histogram extends Component {\n\ttype = 'histogram';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer();\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupIdentifier } = options;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst binnedStackedData = this.model.getBinnedStackedData();\n\n\t\tconst x = this.services.cartesianScales.getMainXScale();\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(binnedStackedData, (d) => get(d, `0.${groupMapsTo}`));\n\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.attr(groupIdentifier, (d, i) => i)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'histogram-bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d, i) => {\n\t\t\t\tconst bin = get(d, 'data');\n\n\t\t\t\tif (!bin) {\n\t\t\t\t\treturn;\n\t\t\t\t}\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 = x(bin.x1) - x(bin.x0) - 1;\n\t\t\t\tconst x0 = this.services.cartesianScales.getDomainValue(\n\t\t\t\t\tbin.x0,\n\t\t\t\t\ti\n\t\t\t\t);\n\t\t\t\tconst x1 = x0 + barWidth;\n\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\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-hover-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-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\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('legend-mouseout-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst x0 = parseFloat(get(datum, 'data.x0'));\n\t\t\t\tconst x1 = parseFloat(get(datum, 'data.x1'));\n\n\t\t\t\tconst rangeAxisPosition = self.services.cartesianScales.getRangeAxisPosition();\n\t\t\t\tconst rangeScaleLabel = self.services.cartesianScales.getScaleLabel(\n\t\t\t\t\trangeAxisPosition\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: get(options, 'bins.rangeLabel') || 'Range',\n\t\t\t\t\t\t\tvalue: `${x0} – ${x1}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel || 'Group',\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: rangeScaleLabel,\n\t\t\t\t\t\t\tvalue: get(datum, `data.${datum[groupMapsTo]}`),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Select all same group elements\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\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":"histogram.js","sourceRoot":"","sources":["histogram.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Tools } from '../../tools';\nimport {\n\tRoles,\n\tEvents,\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Component } from '../component';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nimport { get } from 'lodash-es';\n\nexport class Histogram extends Component {\n\ttype = 'histogram';\n\trenderType = RenderTypes.SVG;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer();\n\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.model.getOptions();\n\t\tconst { groupIdentifier } = options;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst binnedStackedData = this.model.getBinnedStackedData();\n\n\t\tconst x = this.services.cartesianScales.getMainXScale();\n\n\t\t// Update data on all bar groups\n\t\tconst barGroups = svg\n\t\t\t.selectAll('g.bars')\n\t\t\t.data(binnedStackedData, (d) => get(d, `0.${groupMapsTo}`));\n\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.attr(groupIdentifier, (d, i) => i)\n\t\t\t.transition()\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'histogram-bar-update-enter',\n\t\t\t\t\tanimate,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t.attr('d', (d, i) => {\n\t\t\t\tconst bin = get(d, 'data');\n\n\t\t\t\tif (!bin) {\n\t\t\t\t\treturn;\n\t\t\t\t}\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 = x(bin.x1) - x(bin.x0) - 1;\n\t\t\t\tconst x0 = this.services.cartesianScales.getDomainValue(\n\t\t\t\t\tbin.x0,\n\t\t\t\t\ti\n\t\t\t\t);\n\t\t\t\tconst x1 = x0 + barWidth;\n\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) =>\n\t\t\t\tTools.getProperty(d, 'data', d[groupMapsTo])\n\t\t\t);\n\n\t\t// Add event listeners for the above elements\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-hover-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-hover-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\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('legend-mouseout-bar')\n\t\t\t.call((t) =>\n\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\ttransition: t,\n\t\t\t\t\tname: 'legend-mouseout-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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst x0 = parseFloat(get(datum, 'data.x0'));\n\t\t\t\tconst x1 = parseFloat(get(datum, 'data.x1'));\n\n\t\t\t\tconst rangeAxisPosition = self.services.cartesianScales.getRangeAxisPosition();\n\t\t\t\tconst rangeScaleLabel = self.services.cartesianScales.getScaleLabel(\n\t\t\t\t\trangeAxisPosition\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: get(options, 'bins.rangeLabel') || 'Range',\n\t\t\t\t\t\t\tvalue: `${x0} – ${x1}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel || 'Group',\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: rangeScaleLabel,\n\t\t\t\t\t\t\tvalue: get(datum, `data.${datum[groupMapsTo]}`),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Select all same group elements\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\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"]}
|
package/components/graphs/pie.js
CHANGED
|
@@ -270,7 +270,7 @@ var Pie = /** @class */ (function (_super) {
|
|
|
270
270
|
.append('g')
|
|
271
271
|
.classed('callout', true)
|
|
272
272
|
// a11y
|
|
273
|
-
.attr('role', Roles.
|
|
273
|
+
.attr('role', Roles.GROUP)
|
|
274
274
|
.attr('aria-roledescription', 'label callout');
|
|
275
275
|
// Update data values for each callout
|
|
276
276
|
// For the horizontal and vertical lines to use
|