@carbon/charts 0.50.10 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/build/src/charts/alluvial.d.ts +2 -0
- package/build/src/charts/bullet.d.ts +2 -0
- package/build/src/charts/radar.d.ts +3 -1
- package/build/src/charts/tree.d.ts +2 -0
- package/build/src/charts/treemap.d.ts +2 -0
- package/build/src/charts/wordcloud.d.ts +2 -0
- package/build/src/components/graphs/bullet.d.ts +0 -1
- package/build/src/model/alluvial.d.ts +8 -0
- package/build/src/model/boxplot.d.ts +1 -0
- package/build/src/model/bullet.d.ts +14 -0
- package/build/src/model/cartesian-charts.d.ts +0 -1
- package/build/src/model/circle-pack.d.ts +10 -0
- package/build/src/model/gauge.d.ts +4 -1
- package/build/src/model/meter.d.ts +1 -0
- package/build/src/model/model.d.ts +2 -0
- package/build/src/model/pie.d.ts +1 -0
- package/build/src/model/radar.d.ts +7 -0
- package/build/src/model/tree.d.ts +14 -0
- package/build/src/model/treemap.d.ts +8 -0
- package/build/src/model/wordcloud.d.ts +7 -0
- package/build/src/services/scales-cartesian.d.ts +1 -1
- package/bundle.js +1 -1
- package/chart.js +42 -20
- package/chart.js.map +1 -1
- package/charts/alluvial.d.ts +2 -0
- package/charts/alluvial.js +2 -0
- package/charts/alluvial.js.map +1 -1
- package/charts/bullet.d.ts +2 -0
- package/charts/bullet.js +2 -0
- package/charts/bullet.js.map +1 -1
- package/charts/radar.d.ts +3 -1
- package/charts/radar.js +3 -7
- package/charts/radar.js.map +1 -1
- package/charts/tree.d.ts +2 -0
- package/charts/tree.js +2 -0
- package/charts/tree.js.map +1 -1
- package/charts/treemap.d.ts +2 -0
- package/charts/treemap.js +2 -0
- package/charts/treemap.js.map +1 -1
- package/charts/wordcloud.d.ts +2 -0
- package/charts/wordcloud.js +3 -0
- package/charts/wordcloud.js.map +1 -1
- package/components/graphs/bullet.d.ts +0 -1
- package/components/graphs/bullet.js +1 -12
- package/components/graphs/bullet.js.map +1 -1
- package/model/alluvial.d.ts +8 -0
- package/model/alluvial.js +47 -0
- package/model/alluvial.js.map +1 -0
- package/model/boxplot.d.ts +1 -0
- package/model/boxplot.js +54 -0
- package/model/boxplot.js.map +1 -1
- package/model/bullet.d.ts +14 -0
- package/model/bullet.js +74 -0
- package/model/bullet.js.map +1 -0
- package/model/cartesian-charts.d.ts +0 -1
- package/model/cartesian-charts.js +0 -11
- package/model/cartesian-charts.js.map +1 -1
- package/model/circle-pack.d.ts +10 -0
- package/model/circle-pack.js +51 -0
- package/model/circle-pack.js.map +1 -1
- package/model/gauge.d.ts +4 -1
- package/model/gauge.js +24 -1
- package/model/gauge.js.map +1 -1
- package/model/meter.d.ts +1 -0
- package/model/meter.js +40 -0
- package/model/meter.js.map +1 -1
- package/model/model.d.ts +2 -0
- package/model/model.js +14 -0
- package/model/model.js.map +1 -1
- package/model/pie.d.ts +1 -0
- package/model/pie.js +21 -0
- package/model/pie.js.map +1 -1
- package/model/radar.d.ts +7 -0
- package/model/radar.js +52 -0
- package/model/radar.js.map +1 -0
- package/model/tree.d.ts +14 -0
- package/model/tree.js +56 -0
- package/model/tree.js.map +1 -0
- package/model/treemap.d.ts +8 -0
- package/model/treemap.js +37 -0
- package/model/treemap.js.map +1 -0
- package/model/wordcloud.d.ts +7 -0
- package/model/wordcloud.js +47 -0
- package/model/wordcloud.js.map +1 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +139 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tEvents,\n\tRoles,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Bullet extends Component {\n\ttype = 'bullet';\n\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\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst data = this.model.getDisplayData(this.configs.groups);\n\n\t\tconst rangeScale = this.services.cartesianScales.getRangeScale();\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\tconst [rangeScaleStart, rangeScaleEnd] = rangeScale.range();\n\t\tconst [rangeScaleDomainMin, rangeScaleDomainMax] = rangeScale.domain();\n\n\t\tconst renderRangeBoxes = () => {\n\t\t\tconst rangeBoxData = [];\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tif (datum.ranges) {\n\t\t\t\t\tdatum.ranges.forEach((range, i) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trange !== null &&\n\t\t\t\t\t\t\trange !== undefined &&\n\t\t\t\t\t\t\trange < rangeScaleDomainMax\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tvalue: range,\n\t\t\t\t\t\t\t\torder: i + 1,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\torder: 1,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Update data on all lines\n\t\t\tconst rangeBoxes = DOMUtils.appendOrSelect(svg, 'g.range-boxes')\n\t\t\t\t.selectAll('path.range-box')\n\t\t\t\t.data(\n\t\t\t\t\trangeBoxData,\n\t\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum.order}`\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\trangeBoxes.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst rangeBoxesEnter = rangeBoxes\n\t\t\t\t.enter()\n\t\t\t\t.append('path')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\trangeBoxesEnter\n\t\t\t\t.merge(rangeBoxes)\n\t\t\t\t.attr('class', (d) => `range-box order-${d.order}`)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-range-box-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 16;\n\n\t\t\t\t\tlet x0, x1, y0, y1;\n\t\t\t\t\tif (d.order === 1) {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = rangeScaleEnd - 2;\n\t\t\t\t\t\ty1 = rangeScaleStart + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\t\td.value,\n\t\t\t\t\t\t\ti\n\t\t\t\t\t\t);\n\t\t\t\t\t\ty1 = rangeScaleEnd;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderBars = () => {\n\t\t\t// Update data on all bars\n\t\t\tconst bars = DOMUtils.appendOrSelect(svg, 'g.bars')\n\t\t\t\t.selectAll('path.bar')\n\t\t\t\t.data(data, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove bars that are no longer needed\n\t\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\t\tbarsEnter\n\t\t\t\t.merge(bars)\n\t\t\t\t.classed('bar', true)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-bar-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst barWidth = 8;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tbarWidth / 2;\n\t\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\t\tconst y0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getRangeValue(0) + 1;\n\t\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1)\n\t\t\t\t// a11y\n\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t\t.attr('aria-label', (d) => d.value);\n\t\t};\n\n\t\tconst renderTargetLines = () => {\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.markers')\n\t\t\t\t.selectAll('path.marker')\n\t\t\t\t.data(\n\t\t\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null),\n\t\t\t\t\t(datum) => datum[groupMapsTo]\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.classed('marker', true)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-marker-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 24;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td.marker,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderTargetQuartiles = () => {\n\t\t\tlet quartilesData = [];\n\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null).forEach(\n\t\t\t\t(d) => {\n\t\t\t\t\tconst value = d.marker;\n\t\t\t\t\tconst barValue = d[rangeIdentifier];\n\n\t\t\t\t\tquartilesData = quartilesData.concat([\n\t\t\t\t\t\t{ datum: d, value: value * 0.25, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.5, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.75, barValue },\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.quartiles')\n\t\t\t\t.selectAll('path.quartile')\n\t\t\t\t.data(quartilesData, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.attr('class', (d) => {\n\t\t\t\t\treturn `quartile ${\n\t\t\t\t\t\td.value <= d.barValue ? 'over-bar' : ''\n\t\t\t\t\t}`;\n\t\t\t\t})\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-quartile-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', ({ datum: d, value }, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tlet lineHeight = 4;\n\t\t\t\t\t// if it lines up with a performance area border\n\t\t\t\t\t// make the line taller\n\t\t\t\t\tif (d.ranges && d.ranges.indexOf(value) !== -1) {\n\t\t\t\t\t\tlineHeight = 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\trenderRangeBoxes();\n\t\trenderBars();\n\t\trenderTargetLines();\n\t\trenderTargetQuartiles();\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-hover-simple-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-simple-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-mouseout-simple-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-simple-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\t\t\toptions,\n\t\t\t\t\t'bullet',\n\t\t\t\t\t'performanceAreaTitles'\n\t\t\t\t);\n\t\t\t\tconst matchingRangeIndex = self.getMatchingRangeIndexForDatapoint(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\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 || 'Group',\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Value',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Target',\n\t\t\t\t\t\t\tvalue: datum.marker,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Percentage',\n\t\t\t\t\t\t\tvalue: `${Math.floor(\n\t\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t\t\t)}%`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Performance',\n\t\t\t\t\t\t\tvalue: performanceAreaTitles[matchingRangeIndex],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tEvents,\n\tRoles,\n\tColorClassNameTypes,\n\tRenderTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Bullet extends Component {\n\ttype = 'bullet';\n\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\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\n\t\tconst data = this.model.getDisplayData(this.configs.groups);\n\n\t\tconst rangeScale = this.services.cartesianScales.getRangeScale();\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\tconst [rangeScaleStart, rangeScaleEnd] = rangeScale.range();\n\t\tconst [rangeScaleDomainMin, rangeScaleDomainMax] = rangeScale.domain();\n\n\t\tconst renderRangeBoxes = () => {\n\t\t\tconst rangeBoxData = [];\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tif (datum.ranges) {\n\t\t\t\t\tdatum.ranges.forEach((range, i) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trange !== null &&\n\t\t\t\t\t\t\trange !== undefined &&\n\t\t\t\t\t\t\trange < rangeScaleDomainMax\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tvalue: range,\n\t\t\t\t\t\t\t\torder: i + 1,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\trangeBoxData.push({\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\torder: 1,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Update data on all lines\n\t\t\tconst rangeBoxes = DOMUtils.appendOrSelect(svg, 'g.range-boxes')\n\t\t\t\t.selectAll('path.range-box')\n\t\t\t\t.data(\n\t\t\t\t\trangeBoxData,\n\t\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum.order}`\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\trangeBoxes.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst rangeBoxesEnter = rangeBoxes\n\t\t\t\t.enter()\n\t\t\t\t.append('path')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\trangeBoxesEnter\n\t\t\t\t.merge(rangeBoxes)\n\t\t\t\t.attr('class', (d) => `range-box order-${d.order}`)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-range-box-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 16;\n\n\t\t\t\t\tlet x0, x1, y0, y1;\n\t\t\t\t\tif (d.order === 1) {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = rangeScaleEnd - 2;\n\t\t\t\t\t\ty1 = rangeScaleStart + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx0 =\n\t\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(\n\t\t\t\t\t\t\t\td.datum,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t) -\n\t\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\t\tx1 = x0 + lineHeight;\n\t\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\t\td.value,\n\t\t\t\t\t\t\ti\n\t\t\t\t\t\t);\n\t\t\t\t\t\ty1 = rangeScaleEnd;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderBars = () => {\n\t\t\t// Update data on all bars\n\t\t\tconst bars = DOMUtils.appendOrSelect(svg, 'g.bars')\n\t\t\t\t.selectAll('path.bar')\n\t\t\t\t.data(data, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove bars that are no longer needed\n\t\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\t\tbarsEnter\n\t\t\t\t.merge(bars)\n\t\t\t\t.classed('bar', true)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-bar-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: 'bar',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => this.model.getFillColor(d[groupMapsTo]))\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst barWidth = 8;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tbarWidth / 2;\n\t\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\t\tconst y0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getRangeValue(0) + 1;\n\t\t\t\t\tconst y1 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1)\n\t\t\t\t// a11y\n\t\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t\t.attr('aria-label', (d) => d.value);\n\t\t};\n\n\t\tconst renderTargetLines = () => {\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.markers')\n\t\t\t\t.selectAll('path.marker')\n\t\t\t\t.data(\n\t\t\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null),\n\t\t\t\t\t(datum) => datum[groupMapsTo]\n\t\t\t\t);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.classed('marker', true)\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-marker-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (d, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tconst lineHeight = 24;\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\td.marker,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\tconst renderTargetQuartiles = () => {\n\t\t\tlet quartilesData = [];\n\t\t\tdata.filter((d) => Tools.getProperty(d, 'marker') !== null).forEach(\n\t\t\t\t(d) => {\n\t\t\t\t\tconst value = d.marker;\n\t\t\t\t\tconst barValue = d[rangeIdentifier];\n\n\t\t\t\t\tquartilesData = quartilesData.concat([\n\t\t\t\t\t\t{ datum: d, value: value * 0.25, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.5, barValue },\n\t\t\t\t\t\t{ datum: d, value: value * 0.75, barValue },\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Update data on all lines\n\t\t\tconst lines = DOMUtils.appendOrSelect(svg, 'g.quartiles')\n\t\t\t\t.selectAll('path.quartile')\n\t\t\t\t.data(quartilesData, (datum) => datum[groupMapsTo]);\n\n\t\t\t// Remove lines that are no longer needed\n\t\t\tlines.exit().attr('opacity', 0).remove();\n\n\t\t\t// Add the paths that need to be introduced\n\t\t\tconst linesEnter = lines.enter().append('path').attr('opacity', 0);\n\n\t\t\tlinesEnter\n\t\t\t\t.merge(lines)\n\t\t\t\t.attr('class', (d) => {\n\t\t\t\t\treturn `quartile ${\n\t\t\t\t\t\td.value <= d.barValue ? 'over-bar' : ''\n\t\t\t\t\t}`;\n\t\t\t\t})\n\t\t\t\t.transition()\n\t\t\t\t.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: 'bullet-quartile-update-enter',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', ({ datum: d, value }, i) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Orientation support for horizontal/vertical bar charts\n\t\t\t\t\t * Determine coordinates needed for a vertical set of paths\n\t\t\t\t\t * to draw the bars needed, and pass those coordinates down to\n\t\t\t\t\t * generateSVGPathString() to decide whether it needs to flip them\n\t\t\t\t\t */\n\t\t\t\t\tlet lineHeight = 4;\n\t\t\t\t\t// if it lines up with a performance area border\n\t\t\t\t\t// make the line taller\n\t\t\t\t\tif (d.ranges && d.ranges.indexOf(value) !== -1) {\n\t\t\t\t\t\tlineHeight = 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst x0 =\n\t\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\t\tlineHeight / 2;\n\t\t\t\t\tconst x1 = x0 + lineHeight;\n\t\t\t\t\tconst y0 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t\tconst y1 = y0;\n\n\t\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.attr('opacity', 1);\n\t\t};\n\n\t\trenderRangeBoxes();\n\t\trenderBars();\n\t\trenderTargetLines();\n\t\trenderTargetQuartiles();\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-hover-simple-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-simple-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition('legend-mouseout-simple-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-simple-bar',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\t\t\toptions,\n\t\t\t\t\t'bullet',\n\t\t\t\t\t'performanceAreaTitles'\n\t\t\t\t);\n\t\t\t\tconst matchingRangeIndex = self.model.getMatchingRangeIndexForDatapoint(\n\t\t\t\t\tdatum\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\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 || 'Group',\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Value',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Target',\n\t\t\t\t\t\t\tvalue: datum.marker,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Percentage',\n\t\t\t\t\t\t\tvalue: `${Math.floor(\n\t\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t\t\t)}%`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Performance',\n\t\t\t\t\t\t\tvalue: performanceAreaTitles[matchingRangeIndex],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
21
|
+
// Internal Imports
|
|
22
|
+
import { ChartModelCartesian } from './cartesian-charts';
|
|
23
|
+
/**
|
|
24
|
+
* Alluvial chart model layer
|
|
25
|
+
*/
|
|
26
|
+
var AlluvialChartModel = /** @class */ (function (_super) {
|
|
27
|
+
__extends(AlluvialChartModel, _super);
|
|
28
|
+
function AlluvialChartModel(services) {
|
|
29
|
+
return _super.call(this, services) || this;
|
|
30
|
+
}
|
|
31
|
+
AlluvialChartModel.prototype.getTabularDataArray = function () {
|
|
32
|
+
var displayData = this.getDisplayData();
|
|
33
|
+
// Sort array by source to get a close depiction of the alluvial chart
|
|
34
|
+
displayData.sort(function (a, b) { return a['source'].localeCompare(b['source']); });
|
|
35
|
+
var result = __spreadArrays([
|
|
36
|
+
['Source', 'Target', 'Value']
|
|
37
|
+
], displayData.map(function (datum) { return [
|
|
38
|
+
datum['source'],
|
|
39
|
+
datum['target'],
|
|
40
|
+
datum['value'],
|
|
41
|
+
]; }));
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
return AlluvialChartModel;
|
|
45
|
+
}(ChartModelCartesian));
|
|
46
|
+
export { AlluvialChartModel };
|
|
47
|
+
//# sourceMappingURL=../../src/model/alluvial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH;IAAwC,sCAAmB;IAC1D,4BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,gDAAmB,GAAnB;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,sEAAsE;QACtE,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAtC,CAAsC,CAAC,CAAC;QAEnE,IAAM,MAAM;YACX,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;WAC1B,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,QAAQ,CAAC;YACf,KAAK,CAAC,QAAQ,CAAC;YACf,KAAK,CAAC,OAAO,CAAC;SACd,EAJ6B,CAI7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,yBAAC;AAAD,CAAC,AAtBD,CAAwC,mBAAmB,GAsB1D","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\n\n/**\n * Alluvial chart model layer\n */\nexport class AlluvialChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\t// Sort array by source to get a close depiction of the alluvial chart\n\t\tdisplayData.sort((a, b) => a['source'].localeCompare(b['source']));\n\n\t\tconst result = [\n\t\t\t['Source', 'Target', 'Value'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['source'],\n\t\t\t\tdatum['target'],\n\t\t\t\tdatum['value'],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
|
package/model/boxplot.d.ts
CHANGED
package/model/boxplot.js
CHANGED
|
@@ -11,6 +11,13 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
11
11
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
12
|
};
|
|
13
13
|
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
14
21
|
// Internal Imports
|
|
15
22
|
import { ChartModelCartesian } from './cartesian-charts';
|
|
16
23
|
import * as Configuration from '../configuration';
|
|
@@ -96,6 +103,53 @@ var BoxplotChartModel = /** @class */ (function (_super) {
|
|
|
96
103
|
}
|
|
97
104
|
return boxplotData;
|
|
98
105
|
};
|
|
106
|
+
BoxplotChartModel.prototype.getTabularDataArray = function () {
|
|
107
|
+
var options = this.getOptions();
|
|
108
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
109
|
+
var boxplotData = this.getBoxplotData();
|
|
110
|
+
var result = __spreadArrays([
|
|
111
|
+
[
|
|
112
|
+
'Group',
|
|
113
|
+
'Minimum',
|
|
114
|
+
'Q1',
|
|
115
|
+
'Median',
|
|
116
|
+
'Q3',
|
|
117
|
+
'Maximum',
|
|
118
|
+
'IQR',
|
|
119
|
+
'Outlier(s)',
|
|
120
|
+
]
|
|
121
|
+
], boxplotData.map(function (datum) {
|
|
122
|
+
var outliers = Tools.getProperty(datum, 'outliers');
|
|
123
|
+
if (outliers === null || outliers.length === 0) {
|
|
124
|
+
outliers = ['–'];
|
|
125
|
+
}
|
|
126
|
+
return [
|
|
127
|
+
datum[groupMapsTo],
|
|
128
|
+
Tools.getProperty(datum, 'whiskers', 'min') !== null
|
|
129
|
+
? Tools.getProperty(datum, 'whiskers', 'min').toLocaleString()
|
|
130
|
+
: '–',
|
|
131
|
+
Tools.getProperty(datum, 'quartiles', 'q_25') !== null
|
|
132
|
+
? Tools.getProperty(datum, 'quartiles', 'q_25').toLocaleString()
|
|
133
|
+
: '–',
|
|
134
|
+
Tools.getProperty(datum, 'quartiles', 'q_50') !== null
|
|
135
|
+
? Tools.getProperty(datum, 'quartiles', 'q_50').toLocaleString()
|
|
136
|
+
: '–',
|
|
137
|
+
Tools.getProperty(datum, 'quartiles', 'q_75') !== null
|
|
138
|
+
? Tools.getProperty(datum, 'quartiles', 'q_75').toLocaleString()
|
|
139
|
+
: '–',
|
|
140
|
+
Tools.getProperty(datum, 'whiskers', 'max') !== null
|
|
141
|
+
? Tools.getProperty(datum, 'whiskers', 'max').toLocaleString()
|
|
142
|
+
: '–',
|
|
143
|
+
Tools.getProperty(datum, 'quartiles', 'q_75') !== null &&
|
|
144
|
+
Tools.getProperty(datum, 'quartiles', 'q_25') !== null
|
|
145
|
+
? (Tools.getProperty(datum, 'quartiles', 'q_75') -
|
|
146
|
+
Tools.getProperty(datum, 'quartiles', 'q_25')).toLocaleString()
|
|
147
|
+
: '–',
|
|
148
|
+
outliers.map(function (d) { return d.toLocaleString(); }).join(','),
|
|
149
|
+
];
|
|
150
|
+
}));
|
|
151
|
+
return result;
|
|
152
|
+
};
|
|
99
153
|
BoxplotChartModel.prototype.setColorClassNames = function () {
|
|
100
154
|
// monochrome
|
|
101
155
|
var numberOfColors = 1;
|
package/model/boxplot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Configuration from '../configuration';\nimport { Tools } from '../tools';\n\n// D3 Imports\nimport { ascending, min, max, quantile } from 'd3-array';\nimport { scaleOrdinal } from 'd3-scale';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class BoxplotChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetBoxQuartiles(d) {\n\t\treturn {\n\t\t\tq_25: quantile(d, 0.25),\n\t\t\tq_50: quantile(d, 0.5),\n\t\t\tq_75: quantile(d, 0.75),\n\t\t};\n\t}\n\n\tgetBoxplotData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst groupedData = this.getGroupedData();\n\n\t\t// Prepare the data for the box plots\n\t\tconst boxplotData = [];\n\t\tfor (const { name: group, data } of groupedData) {\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\tconst values = data.map((d) => d[rangeIdentifier]).sort(ascending);\n\n\t\t\tconst record = {\n\t\t\t\t[groupMapsTo]: group,\n\t\t\t\tcounts: values,\n\t\t\t\tquartiles: this.getBoxQuartiles(values),\n\t\t\t\toutliers: null,\n\t\t\t\twhiskers: null,\n\t\t\t};\n\n\t\t\tconst q1 = record.quartiles.q_25;\n\t\t\tconst q3 = record.quartiles.q_75;\n\n\t\t\tconst iqr = (q3 - q1) * 1.5;\n\t\t\tconst irq1 = q1 - iqr;\n\t\t\tconst irq3 = q3 + iqr;\n\n\t\t\tconst outliers = [];\n\t\t\tconst normalValues = [];\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value < irq1) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else if (value > irq3) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else {\n\t\t\t\t\tnormalValues.push(value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trecord.outliers = outliers;\n\n\t\t\tconst minNormalValue = min(normalValues);\n\t\t\tconst maxNormalValue = max(normalValues);\n\t\t\trecord.whiskers = {\n\t\t\t\tmin: minNormalValue\n\t\t\t\t\t? minNormalValue\n\t\t\t\t\t: min([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t\tmax: maxNormalValue\n\t\t\t\t\t? maxNormalValue\n\t\t\t\t\t: max([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t};\n\n\t\t\tboxplotData.push(record);\n\t\t}\n\n\t\treturn boxplotData;\n\t}\n\n\tprotected setColorClassNames() {\n\t\t// monochrome\n\t\tconst numberOfColors = 1;\n\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'pairing'\n\t\t);\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) => `${numberOfColors}-${pairingOption}-1`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport * as Configuration from '../configuration';\nimport { Tools } from '../tools';\n\n// D3 Imports\nimport { ascending, min, max, quantile } from 'd3-array';\nimport { scaleOrdinal } from 'd3-scale';\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class BoxplotChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetBoxQuartiles(d) {\n\t\treturn {\n\t\t\tq_25: quantile(d, 0.25),\n\t\t\tq_50: quantile(d, 0.5),\n\t\t\tq_75: quantile(d, 0.75),\n\t\t};\n\t}\n\n\tgetBoxplotData() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst groupedData = this.getGroupedData();\n\n\t\t// Prepare the data for the box plots\n\t\tconst boxplotData = [];\n\t\tfor (const { name: group, data } of groupedData) {\n\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\tconst values = data.map((d) => d[rangeIdentifier]).sort(ascending);\n\n\t\t\tconst record = {\n\t\t\t\t[groupMapsTo]: group,\n\t\t\t\tcounts: values,\n\t\t\t\tquartiles: this.getBoxQuartiles(values),\n\t\t\t\toutliers: null,\n\t\t\t\twhiskers: null,\n\t\t\t};\n\n\t\t\tconst q1 = record.quartiles.q_25;\n\t\t\tconst q3 = record.quartiles.q_75;\n\n\t\t\tconst iqr = (q3 - q1) * 1.5;\n\t\t\tconst irq1 = q1 - iqr;\n\t\t\tconst irq3 = q3 + iqr;\n\n\t\t\tconst outliers = [];\n\t\t\tconst normalValues = [];\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value < irq1) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else if (value > irq3) {\n\t\t\t\t\toutliers.push(value);\n\t\t\t\t} else {\n\t\t\t\t\tnormalValues.push(value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trecord.outliers = outliers;\n\n\t\t\tconst minNormalValue = min(normalValues);\n\t\t\tconst maxNormalValue = max(normalValues);\n\t\t\trecord.whiskers = {\n\t\t\t\tmin: minNormalValue\n\t\t\t\t\t? minNormalValue\n\t\t\t\t\t: min([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t\tmax: maxNormalValue\n\t\t\t\t\t? maxNormalValue\n\t\t\t\t\t: max([\n\t\t\t\t\t\t\trecord.quartiles.q_25,\n\t\t\t\t\t\t\trecord.quartiles.q_50,\n\t\t\t\t\t\t\trecord.quartiles.q_75,\n\t\t\t\t\t ]),\n\t\t\t};\n\n\t\t\tboxplotData.push(record);\n\t\t}\n\n\t\treturn boxplotData;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst boxplotData = this.getBoxplotData();\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\t'Minimum',\n\t\t\t\t'Q1',\n\t\t\t\t'Median',\n\t\t\t\t'Q3',\n\t\t\t\t'Maximum',\n\t\t\t\t'IQR',\n\t\t\t\t'Outlier(s)',\n\t\t\t],\n\t\t\t...boxplotData.map((datum) => {\n\t\t\t\tlet outliers = Tools.getProperty(datum, 'outliers');\n\t\t\t\tif (outliers === null || outliers.length === 0) {\n\t\t\t\t\toutliers = ['–'];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'min') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'min'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_25'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_50') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_50'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'quartiles',\n\t\t\t\t\t\t\t\t'q_75'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\tTools.getProperty(datum, 'whiskers', 'max') !== null\n\t\t\t\t\t\t? Tools.getProperty(\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\t'whiskers',\n\t\t\t\t\t\t\t\t'max'\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') !== null &&\n\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25') !== null\n\t\t\t\t\t\t? (\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_75') -\n\t\t\t\t\t\t\t\tTools.getProperty(datum, 'quartiles', 'q_25')\n\t\t\t\t\t\t ).toLocaleString()\n\t\t\t\t\t\t: '–',\n\t\t\t\t\toutliers.map((d) => d.toLocaleString()).join(','),\n\t\t\t\t];\n\t\t\t}),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\tprotected setColorClassNames() {\n\t\t// monochrome\n\t\tconst numberOfColors = 1;\n\n\t\tconst colorPairingOptions = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'pairing'\n\t\t);\n\t\tlet pairingOption = Tools.getProperty(colorPairingOptions, 'option');\n\t\tconst colorPairingCounts = Configuration.color.pairingOptions;\n\n\t\t// Use default palette if user choice is not in range\n\t\tpairingOption =\n\t\t\tpairingOption <= colorPairingCounts[`${numberOfColors}-color`]\n\t\t\t\t? pairingOption\n\t\t\t\t: 1;\n\n\t\t// Create color classes for graph, tooltip and stroke use\n\t\tconst colorPairing = this.allDataGroups.map(\n\t\t\t(dataGroup, index) => `${numberOfColors}-${pairingOption}-1`\n\t\t);\n\n\t\t// Create default color classnames\n\t\tthis.colorClassNames = scaleOrdinal()\n\t\t\t.range(colorPairing)\n\t\t\t.domain(this.allDataGroups);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChartModelCartesian } from './cartesian-charts';
|
|
2
|
+
/**
|
|
3
|
+
* Bullet chart model layer
|
|
4
|
+
*/
|
|
5
|
+
export declare class BulletChartModel extends ChartModelCartesian {
|
|
6
|
+
constructor(services: any);
|
|
7
|
+
/**
|
|
8
|
+
* Determines the index of the performance area titles to use
|
|
9
|
+
* @param datum
|
|
10
|
+
* @returns number
|
|
11
|
+
*/
|
|
12
|
+
getMatchingRangeIndexForDatapoint(datum: any): any;
|
|
13
|
+
getTabularDataArray(): any[];
|
|
14
|
+
}
|
package/model/bullet.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
21
|
+
// Internal Imports
|
|
22
|
+
import { ChartModelCartesian } from './cartesian-charts';
|
|
23
|
+
import { Tools } from '../tools';
|
|
24
|
+
/**
|
|
25
|
+
* Bullet chart model layer
|
|
26
|
+
*/
|
|
27
|
+
var BulletChartModel = /** @class */ (function (_super) {
|
|
28
|
+
__extends(BulletChartModel, _super);
|
|
29
|
+
function BulletChartModel(services) {
|
|
30
|
+
return _super.call(this, services) || this;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Determines the index of the performance area titles to use
|
|
34
|
+
* @param datum
|
|
35
|
+
* @returns number
|
|
36
|
+
*/
|
|
37
|
+
BulletChartModel.prototype.getMatchingRangeIndexForDatapoint = function (datum) {
|
|
38
|
+
var matchingRangeIndex;
|
|
39
|
+
for (var i = datum.ranges.length - 1; i > 0; i--) {
|
|
40
|
+
var range = datum.ranges[i];
|
|
41
|
+
if (datum.value >= range) {
|
|
42
|
+
matchingRangeIndex = i;
|
|
43
|
+
return matchingRangeIndex;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
};
|
|
48
|
+
BulletChartModel.prototype.getTabularDataArray = function () {
|
|
49
|
+
var _this = this;
|
|
50
|
+
var displayData = this.getDisplayData();
|
|
51
|
+
var options = this.getOptions();
|
|
52
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
53
|
+
var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
|
|
54
|
+
var performanceAreaTitles = Tools.getProperty(options, 'bullet', 'performanceAreaTitles');
|
|
55
|
+
var result = __spreadArrays([
|
|
56
|
+
['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance']
|
|
57
|
+
], displayData.map(function (datum) { return [
|
|
58
|
+
datum['title'],
|
|
59
|
+
datum[groupMapsTo],
|
|
60
|
+
datum['value'] === null ? '–' : datum['value'],
|
|
61
|
+
Tools.getProperty(datum, 'marker') === null
|
|
62
|
+
? '–'
|
|
63
|
+
: datum['marker'],
|
|
64
|
+
Tools.getProperty(datum, 'marker') === null
|
|
65
|
+
? '–'
|
|
66
|
+
: Math.floor((datum[rangeIdentifier] / datum.marker) * 100) + "%",
|
|
67
|
+
performanceAreaTitles[_this.getMatchingRangeIndexForDatapoint(datum)],
|
|
68
|
+
]; }));
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
return BulletChartModel;
|
|
72
|
+
}(ChartModelCartesian));
|
|
73
|
+
export { BulletChartModel };
|
|
74
|
+
//# sourceMappingURL=../../src/model/bullet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;GAEG;AACH;IAAsC,oCAAmB;IACxD,0BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,4DAAiC,GAAjC,UAAkC,KAAK;QACtC,IAAI,kBAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACzB,kBAAkB,GAAG,CAAC,CAAC;gBAEvB,OAAO,kBAAkB,CAAC;aAC1B;SACD;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAED,8CAAmB,GAAnB;QAAA,iBAiCC;QAhCA,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QACrC,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAE3E,IAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAC9C,OAAO,EACP,QAAQ,EACR,uBAAuB,CACvB,CAAC;QAEF,IAAM,MAAM;YACX,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;WAC/D,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,OAAO,CAAC;YACd,KAAK,CAAC,WAAW,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAI,IAAI,CAAC,KAAK,CACb,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAC5C,MAAG;YACP,qBAAqB,CACpB,KAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAC7C;SACD,EAf6B,CAe7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,uBAAC;AAAD,CAAC,AA1DD,CAAsC,mBAAmB,GA0DxD","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport { Tools } from '../tools';\n\n/**\n * Bullet chart model layer\n */\nexport class BulletChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t/**\n\t * Determines the index of the performance area titles to use\n\t * @param datum\n\t * @returns number\n\t */\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'bullet',\n\t\t\t'performanceAreaTitles'\n\t\t);\n\n\t\tconst result = [\n\t\t\t['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['title'],\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum['value'] === null ? '–' : datum['value'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum['marker'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: `${Math.floor(\n\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t )}%`,\n\t\t\t\tperformanceAreaTitles[\n\t\t\t\t\tthis.getMatchingRangeIndexForDatapoint(datum)\n\t\t\t\t],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
|
|
@@ -6,7 +6,6 @@ export declare class ChartModelCartesian extends ChartModel {
|
|
|
6
6
|
constructor(services: any);
|
|
7
7
|
private assignRangeAndDomains;
|
|
8
8
|
getTabularDataArray(): any[];
|
|
9
|
-
exportToCSV(): void;
|
|
10
9
|
setData(newData: any): any;
|
|
11
10
|
/**
|
|
12
11
|
* @param zoomBarData any special zoom bar data to use instead of the model data
|
|
@@ -108,17 +108,6 @@ var ChartModelCartesian = /** @class */ (function (_super) {
|
|
|
108
108
|
: [])); }));
|
|
109
109
|
return result;
|
|
110
110
|
};
|
|
111
|
-
ChartModelCartesian.prototype.exportToCSV = function () {
|
|
112
|
-
var data = this.getTabularDataArray().map(function (row) {
|
|
113
|
-
return row.map(function (column) { return "\"" + column + "\""; });
|
|
114
|
-
});
|
|
115
|
-
var csvString = '', csvData = '';
|
|
116
|
-
data.forEach(function (d, i) {
|
|
117
|
-
csvData = d.join(',');
|
|
118
|
-
csvString += i < data.length ? csvData + '\n' : csvData;
|
|
119
|
-
});
|
|
120
|
-
this.services.files.downloadCSV(csvString, 'myChart.csv');
|
|
121
|
-
};
|
|
122
111
|
ChartModelCartesian.prototype.setData = function (newData) {
|
|
123
112
|
var data;
|
|
124
113
|
if (newData) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\texportToCSV() {\n\t\tlet data = this.getTabularDataArray().map((row) =>\n\t\t\trow.map((column) => `\\\"${column}\\\"`)\n\t\t);\n\n\t\tlet csvString = '',\n\t\t\tcsvData = '';\n\t\tdata.forEach(function (d, i) {\n\t\t\tcsvData = d.join(',');\n\t\t\tcsvString += i < data.length ? csvData + '\\n' : csvData;\n\t\t});\n\n\t\tthis.services.files.downloadCSV(csvString, 'myChart.csv');\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'data'\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get('zoomBarData');\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, 'getTime') === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'data'\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get('zoomBarData');\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, 'getTime') === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
|
package/model/circle-pack.d.ts
CHANGED
|
@@ -23,4 +23,14 @@ export declare class CirclePackChartModel extends ChartModel {
|
|
|
23
23
|
hasParentNode(): boolean;
|
|
24
24
|
setDataGroups(): void;
|
|
25
25
|
protected setChildrenDataGroup(node: any, name: any): any;
|
|
26
|
+
getTabularDataArray(): string[][];
|
|
27
|
+
/**
|
|
28
|
+
* Recursively determine the relationship between all the nested elements in the child
|
|
29
|
+
* @param children: Object
|
|
30
|
+
* @param parent: String
|
|
31
|
+
* @param result: Array<Object>
|
|
32
|
+
* @param totalSum: number
|
|
33
|
+
* @returns: number
|
|
34
|
+
*/
|
|
35
|
+
private getChildrenDatums;
|
|
26
36
|
}
|
package/model/circle-pack.js
CHANGED
|
@@ -132,6 +132,57 @@ var CirclePackChartModel = /** @class */ (function (_super) {
|
|
|
132
132
|
return __assign(__assign({}, node), { dataGroupName: name });
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
+
CirclePackChartModel.prototype.getTabularDataArray = function () {
|
|
136
|
+
var _this = this;
|
|
137
|
+
var displayData = this.getDisplayData();
|
|
138
|
+
var result = [['Child', 'Parent', 'Value']];
|
|
139
|
+
displayData.forEach(function (datum) {
|
|
140
|
+
var value = datum.value ? datum.value : 0;
|
|
141
|
+
if (datum.children) {
|
|
142
|
+
// Call recursive function
|
|
143
|
+
value += _this.getChildrenDatums(datum.children, datum.name, result, 0);
|
|
144
|
+
}
|
|
145
|
+
result.push(['–', datum.name, value]);
|
|
146
|
+
});
|
|
147
|
+
return result;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Recursively determine the relationship between all the nested elements in the child
|
|
151
|
+
* @param children: Object
|
|
152
|
+
* @param parent: String
|
|
153
|
+
* @param result: Array<Object>
|
|
154
|
+
* @param totalSum: number
|
|
155
|
+
* @returns: number
|
|
156
|
+
*/
|
|
157
|
+
CirclePackChartModel.prototype.getChildrenDatums = function (children, parent, result, totalSum) {
|
|
158
|
+
var _this = this;
|
|
159
|
+
if (result === void 0) { result = []; }
|
|
160
|
+
if (totalSum === void 0) { totalSum = 0; }
|
|
161
|
+
var grandParent = parent;
|
|
162
|
+
children.forEach(function (child) {
|
|
163
|
+
var parent = child.name;
|
|
164
|
+
var sum = 0;
|
|
165
|
+
if (child.children) {
|
|
166
|
+
if (child.children.length > 0) {
|
|
167
|
+
if (typeof child.value === 'number') {
|
|
168
|
+
totalSum += child.value;
|
|
169
|
+
}
|
|
170
|
+
sum += _this.getChildrenDatums(child.children, parent, result, sum);
|
|
171
|
+
result.push([parent, grandParent, sum]);
|
|
172
|
+
totalSum += sum;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
var value = 0;
|
|
177
|
+
if (typeof child.value === 'number') {
|
|
178
|
+
value = child.value;
|
|
179
|
+
totalSum += child.value;
|
|
180
|
+
}
|
|
181
|
+
result.push([child.name, grandParent, value]);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
return totalSum;
|
|
185
|
+
};
|
|
135
186
|
return CirclePackChartModel;
|
|
136
187
|
}(ChartModel));
|
|
137
188
|
export { CirclePackChartModel };
|