@carbon/charts 0.41.63 → 0.41.67
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 +34 -1
- package/bundle.js +1 -1
- package/components/essentials/tooltip.js +24 -13
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/bar-simple.js +16 -2
- package/components/graphs/bar-simple.js.map +1 -1
- package/components/graphs/circle-pack.js +24 -15
- package/components/graphs/circle-pack.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/data/index.js +1 -0
- package/demo/data/index.js.map +1 -1
- package/demo/styles.css +48 -12
- 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 +1 -1
- package/model-circle-pack.js +1 -1
- package/model-circle-pack.js.map +1 -1
- package/package.json +2 -2
- package/services/scales-cartesian.js +9 -1
- package/services/scales-cartesian.js.map +1 -1
- package/styles/graphs/_circle-pack.scss +18 -3
- package/styles-g10.css +13 -3
- 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 +13 -3
- 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 +13 -3
- 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 +13 -3
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tsconfig.tsbuildinfo +5 -5
|
@@ -198,19 +198,30 @@ var Tooltip = /** @class */ (function (_super) {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
var pos;
|
|
201
|
-
|
|
202
|
-
var
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
PLACEMENTS.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
201
|
+
var holderWidth = holder.offsetWidth;
|
|
202
|
+
var holderHeight = holder.offsetHeight;
|
|
203
|
+
var bestPlacementOption;
|
|
204
|
+
if (mouseRelativePos[0] / holderWidth > 0.9) {
|
|
205
|
+
bestPlacementOption = PLACEMENTS.LEFT;
|
|
206
|
+
}
|
|
207
|
+
else if (mouseRelativePos[0] / holderWidth < 0.1) {
|
|
208
|
+
bestPlacementOption = PLACEMENTS.RIGHT;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Find out whether tooltip should be shown on the left or right side
|
|
212
|
+
bestPlacementOption = this.positionService.findBestPlacementAt({
|
|
213
|
+
left: mouseRelativePos[0],
|
|
214
|
+
top: mouseRelativePos[1],
|
|
215
|
+
}, target, [
|
|
216
|
+
PLACEMENTS.RIGHT,
|
|
217
|
+
PLACEMENTS.LEFT,
|
|
218
|
+
PLACEMENTS.TOP,
|
|
219
|
+
PLACEMENTS.BOTTOM,
|
|
220
|
+
], function () { return ({
|
|
221
|
+
width: holderWidth,
|
|
222
|
+
height: holderHeight,
|
|
223
|
+
}); });
|
|
224
|
+
}
|
|
214
225
|
var horizontalOffset = Configuration.tooltips.horizontalOffset;
|
|
215
226
|
if (bestPlacementOption === PLACEMENTS.LEFT) {
|
|
216
227
|
horizontalOffset *= -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\nimport { Events, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select, mouse } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tthis.positionTooltip(e);\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = mouse(holder);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\t// Find out whether tooltip should be shown on the left or right side\n\t\tconst bestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\t[\n\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t],\n\t\t\t() => ({\n\t\t\t\twidth: holder.offsetWidth,\n\t\t\t\theight: holder.offsetHeight,\n\t\t\t})\n\t\t);\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\nimport { Events, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select, mouse } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tthis.positionTooltip(e);\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = mouse(holder);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
|
@@ -13,7 +13,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
13
13
|
})();
|
|
14
14
|
// Internal Imports
|
|
15
15
|
import { Bar } from './bar';
|
|
16
|
-
import { Events, Roles, ColorClassNameTypes } from '../../interfaces';
|
|
16
|
+
import { Events, Roles, ColorClassNameTypes, CartesianOrientations, } from '../../interfaces';
|
|
17
17
|
import { Tools } from '../../tools';
|
|
18
18
|
// D3 Imports
|
|
19
19
|
import { select } from 'd3-selection';
|
|
@@ -54,6 +54,7 @@ var SimpleBar = /** @class */ (function (_super) {
|
|
|
54
54
|
// Grab container SVG
|
|
55
55
|
var svg = this.getContainerSVG({ withinChartClip: true });
|
|
56
56
|
var data = this.model.getDisplayData(this.configs.groups);
|
|
57
|
+
var orientation = this.services.cartesianScales.getOrientation();
|
|
57
58
|
// Update data on all bars
|
|
58
59
|
var bars = svg
|
|
59
60
|
.selectAll('path.bar')
|
|
@@ -97,11 +98,24 @@ var SimpleBar = /** @class */ (function (_super) {
|
|
|
97
98
|
y0 = _this.services.cartesianScales.getRangeValue(0);
|
|
98
99
|
y1 = _this.services.cartesianScales.getRangeValue(d, i);
|
|
99
100
|
}
|
|
101
|
+
var difference = Math.abs(y1 - y0);
|
|
102
|
+
// Set a min-2px size for the bar
|
|
103
|
+
if (difference !== 0 && difference < 2) {
|
|
104
|
+
if ((value > 0 &&
|
|
105
|
+
orientation === CartesianOrientations.VERTICAL) ||
|
|
106
|
+
(value < 0 &&
|
|
107
|
+
orientation === CartesianOrientations.HORIZONTAL)) {
|
|
108
|
+
y1 = y0 - 2;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
y1 = y0 + 2;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
100
114
|
// don't show if part of bar is out of zoom domain
|
|
101
115
|
if (_this.isOutsideZoomedDomain(x0, x1)) {
|
|
102
116
|
return;
|
|
103
117
|
}
|
|
104
|
-
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 },
|
|
118
|
+
return Tools.generateSVGPathString({ x0: x0, x1: x1, y0: y0, y1: y1 }, orientation);
|
|
105
119
|
})
|
|
106
120
|
.attr('opacity', 1)
|
|
107
121
|
// a11y
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-simple.js","sourceRoot":"","sources":["bar-simple.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from './bar';\nimport { Events, Roles, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class SimpleBar extends Bar {\n\ttype = 'simple-bar';\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst data = this.model.getDisplayData(this.configs.groups);\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll('path.bar')\n\t\t\t.data(data, (datum) => datum[groupMapsTo]);\n\n\t\t// Remove bars that are no longer needed\n\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t// Add the paths that need to be introduced\n\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.attr('width', this.getBarWidth.bind(this))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'bar-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('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\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 rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\t\tconst barWidth = this.getBarWidth();\n\t\t\t\tconst value = d[rangeIdentifier];\n\n\t\t\t\tconst x0 =\n\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\tbarWidth / 2;\n\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\tlet y0, y1;\n\t\t\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(value[0]);\n\t\t\t\t\ty1 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\tvalue[1],\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(0);\n\t\t\t\t\ty1 = this.services.cartesianScales.getRangeValue(d, i);\n\t\t\t\t}\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\tthis.services.cartesianScales.getOrientation()\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-simple-bar'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-simple-bar'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseout_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bar-simple.js","sourceRoot":"","sources":["bar-simple.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Bar } from './bar';\nimport {\n\tEvents,\n\tRoles,\n\tColorClassNameTypes,\n\tCartesianOrientations,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class SimpleBar extends Bar {\n\ttype = 'simple-bar';\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct circle on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight circles on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst data = this.model.getDisplayData(this.configs.groups);\n\n\t\tconst orientation = this.services.cartesianScales.getOrientation();\n\n\t\t// Update data on all bars\n\t\tconst bars = svg\n\t\t\t.selectAll('path.bar')\n\t\t\t.data(data, (datum) => datum[groupMapsTo]);\n\n\t\t// Remove bars that are no longer needed\n\t\tbars.exit().attr('opacity', 0).remove();\n\n\t\t// Add the paths that need to be introduced\n\t\tconst barsEnter = bars.enter().append('path').attr('opacity', 0);\n\n\t\tbarsEnter\n\t\t\t.merge(bars)\n\t\t\t.classed('bar', true)\n\t\t\t.attr('width', this.getBarWidth.bind(this))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'bar-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('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\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 rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\t\t\t\tconst barWidth = this.getBarWidth();\n\t\t\t\tconst value = d[rangeIdentifier];\n\n\t\t\t\tconst x0 =\n\t\t\t\t\tthis.services.cartesianScales.getDomainValue(d, i) -\n\t\t\t\t\tbarWidth / 2;\n\t\t\t\tconst x1 = x0 + barWidth;\n\t\t\t\tlet y0, y1;\n\t\t\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(value[0]);\n\t\t\t\t\ty1 = this.services.cartesianScales.getRangeValue(\n\t\t\t\t\t\tvalue[1],\n\t\t\t\t\t\ti\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ty0 = this.services.cartesianScales.getRangeValue(0);\n\t\t\t\t\ty1 = this.services.cartesianScales.getRangeValue(d, i);\n\t\t\t\t}\n\n\t\t\t\tconst difference = Math.abs(y1 - y0);\n\t\t\t\t// Set a min-2px size for the bar\n\t\t\t\tif (difference !== 0 && difference < 2) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(value > 0 &&\n\t\t\t\t\t\t\torientation === CartesianOrientations.VERTICAL) ||\n\t\t\t\t\t\t(value < 0 &&\n\t\t\t\t\t\t\torientation === CartesianOrientations.HORIZONTAL)\n\t\t\t\t\t) {\n\t\t\t\t\t\ty1 = y0 - 2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ty1 = y0 + 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// don't show if part of bar is out of zoom domain\n\t\t\t\tif (this.isOutsideZoomedDomain(x0, x1)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\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\t\t\t.attr('opacity', 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'bar')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-simple-bar'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-simple-bar'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseover_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOVER, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEMOVE, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\thoveredElement.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'graph_element_mouseout_fill_update'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Bar.BAR_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.bar')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
|
|
@@ -73,7 +73,7 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
73
73
|
var canvasZoomEnabled = Tools.getProperty(options, 'canvasZoom', 'enabled');
|
|
74
74
|
// check if there is one root for the data
|
|
75
75
|
// that root will be the only datagroup (colorscale will be monochrome)
|
|
76
|
-
if (parentNode) {
|
|
76
|
+
if (parentNode && Tools.getProperty(displayData, 0, 'children')) {
|
|
77
77
|
// remove want to remove the parent from being rendered
|
|
78
78
|
displayData = Tools.getProperty(displayData, 0, 'children');
|
|
79
79
|
}
|
|
@@ -169,17 +169,18 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
169
169
|
events.addEventListener(Events.Legend.ITEM_MOUSEOUT, this.handleLegendMouseOut);
|
|
170
170
|
};
|
|
171
171
|
CirclePack.prototype.removeBackgroundListeners = function () {
|
|
172
|
-
var chartSvg = select(this.services.domUtils.
|
|
172
|
+
var chartSvg = select(this.services.domUtils.getMainSVG());
|
|
173
173
|
chartSvg.on('click', function () { return null; });
|
|
174
174
|
};
|
|
175
175
|
CirclePack.prototype.setBackgroundListeners = function () {
|
|
176
|
-
var chartSvg = select(this.services.domUtils.
|
|
176
|
+
var chartSvg = select(this.services.domUtils.getMainSVG());
|
|
177
177
|
var self = this;
|
|
178
178
|
var canvasSelection = this.parent.selectAll('circle.node');
|
|
179
179
|
var zoomSetting = Tools.getProperty(Configuration, 'canvasZoomSettings');
|
|
180
180
|
chartSvg.on('click', function () {
|
|
181
181
|
self.focal = null;
|
|
182
182
|
self.model.updateHierarchyLevel(2);
|
|
183
|
+
chartSvg.classed('zoomed-in', false);
|
|
183
184
|
self.services.canvasZoom.zoomOut(canvasSelection, zoomSetting);
|
|
184
185
|
});
|
|
185
186
|
};
|
|
@@ -195,9 +196,8 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
195
196
|
.on('mouseover', function (datum) {
|
|
196
197
|
var hoveredElement = select(this);
|
|
197
198
|
hoveredElement.classed('hovered', true);
|
|
198
|
-
var
|
|
199
|
-
|
|
200
|
-
.classList.contains('non-focal');
|
|
199
|
+
var hierarchyLevel = self.model.getHierarchyLevel();
|
|
200
|
+
var disabled = hierarchyLevel > 2 && !hoveredElement.classed('focal');
|
|
201
201
|
var canvasZoomEnabled = Tools.getProperty(self.model.getOptions(), 'canvasZoom', 'enabled');
|
|
202
202
|
var zoomable = false;
|
|
203
203
|
if (!disabled) {
|
|
@@ -225,7 +225,8 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
225
225
|
value = child.data.children.reduce(function (a, b) { return a + b.value; }, 0);
|
|
226
226
|
return {
|
|
227
227
|
label: child.data.name,
|
|
228
|
-
labelIcon: canvasZoomEnabled
|
|
228
|
+
labelIcon: canvasZoomEnabled &&
|
|
229
|
+
hierarchyLevel <= 2
|
|
229
230
|
? self.getZoomIcon()
|
|
230
231
|
: null,
|
|
231
232
|
value: value,
|
|
@@ -255,7 +256,9 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
255
256
|
{
|
|
256
257
|
color: fillColor,
|
|
257
258
|
label: datum.data.name,
|
|
258
|
-
labelIcon: zoomable &&
|
|
259
|
+
labelIcon: zoomable &&
|
|
260
|
+
canvasZoomEnabled &&
|
|
261
|
+
hierarchyLevel <= 2
|
|
259
262
|
? self.getZoomIcon()
|
|
260
263
|
: null,
|
|
261
264
|
value: parentValue,
|
|
@@ -296,15 +299,21 @@ var CirclePack = /** @class */ (function (_super) {
|
|
|
296
299
|
})
|
|
297
300
|
.on('click', function (datum) {
|
|
298
301
|
var hoveredElement = select(this);
|
|
299
|
-
var disabled = hoveredElement
|
|
300
|
-
|
|
301
|
-
|
|
302
|
+
var disabled = hoveredElement.classed('non-focal');
|
|
303
|
+
var zoomedIn = Tools.getProperty(self.getOptions(), 'canvasZoom', 'enabled') && self.model.getHierarchyLevel() > 2;
|
|
304
|
+
if (zoomedIn) {
|
|
305
|
+
var canvasSelection = self.parent.selectAll('circle.node');
|
|
306
|
+
var chartSvg = select(self.services.domUtils.getMainSVG());
|
|
307
|
+
chartSvg.classed('zoomed-in', false);
|
|
308
|
+
self.focal = null;
|
|
309
|
+
self.model.updateHierarchyLevel(2);
|
|
310
|
+
self.services.canvasZoom.zoomOut(canvasSelection, Configuration.canvasZoomSettings);
|
|
311
|
+
}
|
|
302
312
|
// zoom if chart has zoom enabled and if its a depth 2 circle that has children
|
|
303
|
-
if (
|
|
304
|
-
datum.depth === 2 &&
|
|
305
|
-
datum.children &&
|
|
306
|
-
!disabled) {
|
|
313
|
+
else if (datum.depth === 2 && datum.children && !disabled) {
|
|
307
314
|
var canvasSelection = self.parent.selectAll('circle.node');
|
|
315
|
+
var chartSvg = select(self.services.domUtils.getMainSVG());
|
|
316
|
+
chartSvg.classed('zoomed-in', true);
|
|
308
317
|
self.focal = datum;
|
|
309
318
|
self.model.updateHierarchyLevel(3);
|
|
310
319
|
self.services.canvasZoom.zoomIn(datum, canvasSelection, Configuration.canvasZoomSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, pack as D3Pack } from 'd3-hierarchy';\nimport { event, select } from 'd3-selection';\n\nimport { ColorClassNameTypes, Events } from '../../interfaces/enums';\nimport { Tools } from './../../tools';\n\nexport class CirclePack extends Component {\n\ttype = 'circle-pack';\n\tfocal;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\t// on first render the svg is width and height 0\n\t\t\t// the circle packing layout functionality will not run\n\t\t\treturn;\n\t\t}\n\n\t\t// data and options (zoom/not zoom)\n\t\tlet displayData = this.model.getDisplayData();\n\t\t// check if there is just one parent for the data\n\t\tconst parentNode = this.model.hasParentNode();\n\t\tconst hierarchyLevel = this.model.getHierarchyLevel();\n\t\tconst options = this.getOptions();\n\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'canvasZoom',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// check if there is one root for the data\n\t\t// that root will be the only datagroup (colorscale will be monochrome)\n\t\tif (parentNode) {\n\t\t\t// remove want to remove the parent from being rendered\n\t\t\tdisplayData = Tools.getProperty(displayData, 0, 'children');\n\t\t}\n\n\t\tconst root = d3Hierarchy({children: displayData})\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst packLayout = D3Pack()\n\t\t\t.size([width, height])\n\t\t\t.padding((d) => {\n\t\t\t\t// add 3 px to account for the stroke width 1.5px\n\t\t\t\treturn d.depth >= 1\n\t\t\t\t\t? Configuration.circlePack.padding.children + 3\n\t\t\t\t\t: Configuration.circlePack.padding.mainGroup + 3;\n\t\t\t});\n\n\t\tconst nodeData = packLayout(root)\n\t\t\t.descendants()\n\t\t\t.splice(1)\n\t\t\t.filter((node) => {\n\t\t\t\t// filter based on hierarchy level\n\t\t\t\treturn node.depth <= hierarchyLevel;\n\t\t\t});\n\n\t\t// enter the circles\n\t\tconst circles = svg.selectAll('circle.node').data(nodeData);\n\n\t\tcircles.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('node', true);\n\n\t\tenteringCircles\n\t\t\t.merge(circles)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst originalClass =\n\t\t\t\t\tcanvasZoomEnabled && hierarchyLevel === 3\n\t\t\t\t\t\t? this.getZoomClass(d)\n\t\t\t\t\t\t: '';\n\t\t\t\treturn this.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.data.dataGroupName,\n\t\t\t\t\toriginalClassName: d.children\n\t\t\t\t\t\t? `node ${originalClass}`\n\t\t\t\t\t\t: `node node-leaf ${originalClass}`,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.attr('cx', (d) => d.x)\n\t\t\t.attr('cy', (d) => d.y)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'circlepack-leaf-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('r', (d) => d.r)\n\t\t\t.attr('opacity', 1)\n\t\t\t.attr('fill-opacity', Configuration.circlePack.circles.fillOpacity);\n\n\t\tif (canvasZoomEnabled === true && this.focal) {\n\t\t\tthis.services.canvasZoom.zoomIn(\n\t\t\t\tthis.focal,\n\t\t\t\tenteringCircles,\n\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t);\n\t\t\tthis.setBackgroundListeners();\n\t\t}\n\n\t\tif (!parentNode) {\n\t\t\t// add legend filtering if it isnt a monochrome chart\n\t\t\tthis.addLegendListeners();\n\t\t}\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// turn off the highlight class on children circles\n\tunhighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.classed('hovered-child', false);\n\t}\n\n\t// highlight the children circles with a stroke\n\thighlightChildren(childData, classname?) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.classed(classname ? classname : 'hovered-child', true);\n\t}\n\n\tgetZoomClass(node) {\n\t\tif (this.model.getHierarchyLevel() === 3 && this.focal) {\n\t\t\tif (\n\t\t\t\tnode.data === this.focal.data ||\n\t\t\t\tthis.focal.children.some((d) => d.data === node.data)\n\t\t\t) {\n\t\t\t\treturn 'focal';\n\t\t\t}\n\t\t}\n\t\treturn 'non-focal';\n\t}\n\n\taddLegendListeners() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tremoveBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getHolder());\n\t\tchartSvg.on('click', () => null);\n\t}\n\n\tsetBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getHolder());\n\t\tconst self = this;\n\t\tconst canvasSelection = this.parent.selectAll('circle.node');\n\t\tconst zoomSetting = Tools.getProperty(\n\t\t\tConfiguration,\n\t\t\t'canvasZoomSettings'\n\t\t);\n\n\t\tchartSvg.on('click', () => {\n\t\t\tself.focal = null;\n\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\tself.services.canvasZoom.zoomOut(canvasSelection, zoomSetting);\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('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\treturn d.data.dataGroupName === hoveredElement.datum()['name']\n\t\t\t\t\t? 1\n\t\t\t\t\t: Configuration.circlePack.circles.fillOpacity;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// Zoom icon to be appended to the label in the tooltip\n\tgetZoomIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\">\n\t\t\t<polygon points=\"5.93 3.71 4.45 3.71 4.45 2.23 3.71 2.23 3.71 3.71 2.23 3.71 2.23 4.45 3.71 4.45 3.71 5.93 4.45 5.93 4.45 4.45 5.93 4.45 5.93 3.71\"/>\n\t\t\t<path d=\"M7.2,6.67a4,4,0,0,0,1-2.59A4.08,4.08,0,1,0,4.07,8.15h0a4,4,0,0,0,2.59-1L9.48,10,10,9.48Zm-3.12.77A3.34,3.34,0,1,1,7.41,4.08,3.34,3.34,0,0,1,4.08,7.44Z\"/>\n\t\t</svg>`;\n\t}\n\n\t// add event listeners for tooltip on the circles\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst disabled = hoveredElement\n\t\t\t\t\t.node()\n\t\t\t\t\t.classList.contains('non-focal');\n\n\t\t\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\t\t\tself.model.getOptions(),\n\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t'enabled'\n\t\t\t\t);\n\n\t\t\t\tlet zoomable = false;\n\t\t\t\tif (!disabled) {\n\t\t\t\t\t// get the children data for the tooltip\n\t\t\t\t\tlet childrenData = [];\n\t\t\t\t\tlet totalValue = [];\n\t\t\t\t\tlet parentValue = null;\n\t\t\t\t\tif (datum.children) {\n\t\t\t\t\t\tif (datum.depth > 1 && canvasZoomEnabled) {\n\t\t\t\t\t\t\tzoomable = true;\n\t\t\t\t\t\t\thoveredElement.classed('clickable', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildrenData = datum.children.map((child) => {\n\t\t\t\t\t\t\tif (child !== null) {\n\t\t\t\t\t\t\t\t// sum up the children values if there are any 3rd level\n\t\t\t\t\t\t\t\tlet value;\n\t\t\t\t\t\t\t\tif (typeof child.data.value === 'number') {\n\t\t\t\t\t\t\t\t\tvalue = child.data.value;\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = child.data.children.reduce(\n\t\t\t\t\t\t\t\t\t\t(a, b) => a + b.value,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tlabelIcon: canvasZoomEnabled\n\t\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttotalValue = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Total',\n\t\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\t// children get a highlight stroke\n\t\t\t\t\t\tself.highlightChildren(datum.children);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there is no children we want to display the value for the data\n\t\t\t\t\t\tparentValue = datum.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet fillColor = getComputedStyle(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tnull\n\t\t\t\t\t).getPropertyValue('fill');\n\n\t\t\t\t\t// Show tooltip\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\thoveredElement,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\tzoomable && canvasZoomEnabled\n\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tvalue: parentValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...childrenData,\n\t\t\t\t\t\t\t...totalValue,\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.CirclePack.CIRCLE_MOUSEOVER,\n\t\t\t\t\t{\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 (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.CirclePack.CIRCLE_MOUSEMOVE,\n\t\t\t\t\t{\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})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (datum.children) {\n\t\t\t\t\tself.unhighlightChildren(datum.children);\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.CirclePack.CIRCLE_MOUSEOUT,\n\t\t\t\t\t{\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\t\t.on('click', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst disabled = hoveredElement\n\t\t\t\t\t.node()\n\t\t\t\t\t.classList.contains('non-focal');\n\t\t\t\t// zoom if chart has zoom enabled and if its a depth 2 circle that has children\n\t\t\t\tif (\n\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t\t'enabled'\n\t\t\t\t\t) === true &&\n\t\t\t\t\tdatum.depth === 2 &&\n\t\t\t\t\tdatum.children &&\n\t\t\t\t\t!disabled\n\t\t\t\t) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\n\t\t\t\t\tself.focal = datum;\n\t\t\t\t\tself.model.updateHierarchyLevel(3);\n\t\t\t\t\tself.services.canvasZoom.zoomIn(\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t\t// don't want the click event to propagate to the background zoom out\n\t\t\t\t\t// does not clash with the tooltip/other events because it does need to close the\n\t\t\t\t\t// tooltip on the click event in order to zoom in/out\n\t\t\t\t\tevent.stopPropagation();\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.CirclePack.CIRCLE_CLICK,\n\t\t\t\t\t{\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}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.on('click', null);\n\n\t\t// remove the listeners on the legend\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\n\t\tthis.removeBackgroundListeners();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { hierarchy as d3Hierarchy, pack as D3Pack } from 'd3-hierarchy';\nimport { event, select } from 'd3-selection';\n\nimport { ColorClassNameTypes, Events } from '../../interfaces/enums';\nimport { Tools } from './../../tools';\n\nexport class CirclePack extends Component {\n\ttype = 'circle-pack';\n\tfocal;\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\t// on first render the svg is width and height 0\n\t\t\t// the circle packing layout functionality will not run\n\t\t\treturn;\n\t\t}\n\n\t\t// data and options (zoom/not zoom)\n\t\tlet displayData = this.model.getDisplayData();\n\t\t// check if there is just one parent for the data\n\t\tconst parentNode = this.model.hasParentNode();\n\t\tconst hierarchyLevel = this.model.getHierarchyLevel();\n\t\tconst options = this.getOptions();\n\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'canvasZoom',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// check if there is one root for the data\n\t\t// that root will be the only datagroup (colorscale will be monochrome)\n\t\tif (parentNode && Tools.getProperty(displayData, 0, 'children')) {\n\t\t\t// remove want to remove the parent from being rendered\n\t\t\tdisplayData = Tools.getProperty(displayData, 0, 'children');\n\t\t}\n\n\t\tconst root = d3Hierarchy({ children: displayData })\n\t\t\t.sum((d: any) => d.value)\n\t\t\t.sort((a, b) => b.value - a.value);\n\n\t\tconst packLayout = D3Pack()\n\t\t\t.size([width, height])\n\t\t\t.padding((d) => {\n\t\t\t\t// add 3 px to account for the stroke width 1.5px\n\t\t\t\treturn d.depth >= 1\n\t\t\t\t\t? Configuration.circlePack.padding.children + 3\n\t\t\t\t\t: Configuration.circlePack.padding.mainGroup + 3;\n\t\t\t});\n\n\t\tconst nodeData = packLayout(root)\n\t\t\t.descendants()\n\t\t\t.splice(1)\n\t\t\t.filter((node) => {\n\t\t\t\t// filter based on hierarchy level\n\t\t\t\treturn node.depth <= hierarchyLevel;\n\t\t\t});\n\n\t\t// enter the circles\n\t\tconst circles = svg.selectAll('circle.node').data(nodeData);\n\n\t\tcircles.exit().attr('width', 0).attr('height', 0).remove();\n\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('node', true);\n\n\t\tenteringCircles\n\t\t\t.merge(circles)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst originalClass =\n\t\t\t\t\tcanvasZoomEnabled && hierarchyLevel === 3\n\t\t\t\t\t\t? this.getZoomClass(d)\n\t\t\t\t\t\t: '';\n\t\t\t\treturn this.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.data.dataGroupName,\n\t\t\t\t\toriginalClassName: d.children\n\t\t\t\t\t\t? `node ${originalClass}`\n\t\t\t\t\t\t: `node node-leaf ${originalClass}`,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.attr('cx', (d) => d.x)\n\t\t\t.attr('cy', (d) => d.y)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'circlepack-leaf-update-enter',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('r', (d) => d.r)\n\t\t\t.attr('opacity', 1)\n\t\t\t.attr('fill-opacity', Configuration.circlePack.circles.fillOpacity);\n\n\t\tif (canvasZoomEnabled === true && this.focal) {\n\t\t\tthis.services.canvasZoom.zoomIn(\n\t\t\t\tthis.focal,\n\t\t\t\tenteringCircles,\n\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t);\n\t\t\tthis.setBackgroundListeners();\n\t\t}\n\n\t\tif (!parentNode) {\n\t\t\t// add legend filtering if it isnt a monochrome chart\n\t\t\tthis.addLegendListeners();\n\t\t}\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// turn off the highlight class on children circles\n\tunhighlightChildren(childData) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.classed('hovered-child', false);\n\t}\n\n\t// highlight the children circles with a stroke\n\thighlightChildren(childData, classname?) {\n\t\tconst data = childData.map((d) => d.data);\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.filter(\n\t\t\t\t(d) => data.some((datum) => datum === d.data) && d.depth > 1\n\t\t\t)\n\t\t\t.classed(classname ? classname : 'hovered-child', true);\n\t}\n\n\tgetZoomClass(node) {\n\t\tif (this.model.getHierarchyLevel() === 3 && this.focal) {\n\t\t\tif (\n\t\t\t\tnode.data === this.focal.data ||\n\t\t\t\tthis.focal.children.some((d) => d.data === node.data)\n\t\t\t) {\n\t\t\t\treturn 'focal';\n\t\t\t}\n\t\t}\n\t\treturn 'non-focal';\n\t}\n\n\taddLegendListeners() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tremoveBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tchartSvg.on('click', () => null);\n\t}\n\n\tsetBackgroundListeners() {\n\t\tconst chartSvg = select(this.services.domUtils.getMainSVG());\n\t\tconst self = this;\n\t\tconst canvasSelection = this.parent.selectAll('circle.node');\n\t\tconst zoomSetting = Tools.getProperty(\n\t\t\tConfiguration,\n\t\t\t'canvasZoomSettings'\n\t\t);\n\n\t\tchartSvg.on('click', () => {\n\t\t\tself.focal = null;\n\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\tself.services.canvasZoom.zoomOut(canvasSelection, zoomSetting);\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('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) => {\n\t\t\t\treturn d.data.dataGroupName === hoveredElement.datum()['name']\n\t\t\t\t\t? 1\n\t\t\t\t\t: Configuration.circlePack.circles.fillOpacity;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-circlepack'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\t// Zoom icon to be appended to the label in the tooltip\n\tgetZoomIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\">\n\t\t\t<polygon points=\"5.93 3.71 4.45 3.71 4.45 2.23 3.71 2.23 3.71 3.71 2.23 3.71 2.23 4.45 3.71 4.45 3.71 5.93 4.45 5.93 4.45 4.45 5.93 4.45 5.93 3.71\"/>\n\t\t\t<path d=\"M7.2,6.67a4,4,0,0,0,1-2.59A4.08,4.08,0,1,0,4.07,8.15h0a4,4,0,0,0,2.59-1L9.48,10,10,9.48Zm-3.12.77A3.34,3.34,0,1,1,7.41,4.08,3.34,3.34,0,0,1,4.08,7.44Z\"/>\n\t\t</svg>`;\n\t}\n\n\t// add event listeners for tooltip on the circles\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', true);\n\n\t\t\t\tconst hierarchyLevel = self.model.getHierarchyLevel();\n\t\t\t\tconst disabled =\n\t\t\t\t\thierarchyLevel > 2 && !hoveredElement.classed('focal');\n\t\t\t\tconst canvasZoomEnabled = Tools.getProperty(\n\t\t\t\t\tself.model.getOptions(),\n\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t'enabled'\n\t\t\t\t);\n\n\t\t\t\tlet zoomable = false;\n\t\t\t\tif (!disabled) {\n\t\t\t\t\t// get the children data for the tooltip\n\t\t\t\t\tlet childrenData = [];\n\t\t\t\t\tlet totalValue = [];\n\t\t\t\t\tlet parentValue = null;\n\t\t\t\t\tif (datum.children) {\n\t\t\t\t\t\tif (datum.depth > 1 && canvasZoomEnabled) {\n\t\t\t\t\t\t\tzoomable = true;\n\t\t\t\t\t\t\thoveredElement.classed('clickable', true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildrenData = datum.children.map((child) => {\n\t\t\t\t\t\t\tif (child !== null) {\n\t\t\t\t\t\t\t\t// sum up the children values if there are any 3rd level\n\t\t\t\t\t\t\t\tlet value;\n\t\t\t\t\t\t\t\tif (typeof child.data.value === 'number') {\n\t\t\t\t\t\t\t\t\tvalue = child.data.value;\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = child.data.children.reduce(\n\t\t\t\t\t\t\t\t\t\t(a, b) => a + b.value,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tlabel: child.data.name,\n\t\t\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\ttotalValue = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Total',\n\t\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t\t\tbold: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t\t// children get a highlight stroke\n\t\t\t\t\t\tself.highlightChildren(datum.children);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// if there is no children we want to display the value for the data\n\t\t\t\t\t\tparentValue = datum.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet fillColor = getComputedStyle(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tnull\n\t\t\t\t\t).getPropertyValue('fill');\n\n\t\t\t\t\t// Show tooltip\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\thoveredElement,\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolor: fillColor,\n\t\t\t\t\t\t\t\tlabel: datum.data.name,\n\t\t\t\t\t\t\t\tlabelIcon:\n\t\t\t\t\t\t\t\t\tzoomable &&\n\t\t\t\t\t\t\t\t\tcanvasZoomEnabled &&\n\t\t\t\t\t\t\t\t\thierarchyLevel <= 2\n\t\t\t\t\t\t\t\t\t\t? self.getZoomIcon()\n\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\tvalue: parentValue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...childrenData,\n\t\t\t\t\t\t\t...totalValue,\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.CirclePack.CIRCLE_MOUSEOVER,\n\t\t\t\t\t{\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 (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.CirclePack.CIRCLE_MOUSEMOVE,\n\t\t\t\t\t{\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})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (datum.children) {\n\t\t\t\t\tself.unhighlightChildren(datum.children);\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.CirclePack.CIRCLE_MOUSEOUT,\n\t\t\t\t\t{\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\t\t.on('click', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst disabled = hoveredElement.classed('non-focal');\n\n\t\t\t\tconst zoomedIn =\n\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t\t'canvasZoom',\n\t\t\t\t\t\t'enabled'\n\t\t\t\t\t) && self.model.getHierarchyLevel() > 2;\n\n\t\t\t\tif (zoomedIn) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', false);\n\t\t\t\t\tself.focal = null;\n\t\t\t\t\tself.model.updateHierarchyLevel(2);\n\t\t\t\t\tself.services.canvasZoom.zoomOut(\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// zoom if chart has zoom enabled and if its a depth 2 circle that has children\n\t\t\t\telse if (datum.depth === 2 && datum.children && !disabled) {\n\t\t\t\t\tconst canvasSelection = self.parent.selectAll(\n\t\t\t\t\t\t'circle.node'\n\t\t\t\t\t);\n\t\t\t\t\tconst chartSvg = select(\n\t\t\t\t\t\tself.services.domUtils.getMainSVG()\n\t\t\t\t\t);\n\t\t\t\t\tchartSvg.classed('zoomed-in', true);\n\t\t\t\t\tself.focal = datum;\n\t\t\t\t\tself.model.updateHierarchyLevel(3);\n\t\t\t\t\tself.services.canvasZoom.zoomIn(\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t\tcanvasSelection,\n\t\t\t\t\t\tConfiguration.canvasZoomSettings\n\t\t\t\t\t);\n\t\t\t\t\t// don't want the click event to propagate to the background zoom out\n\t\t\t\t\t// does not clash with the tooltip/other events because it does need to close the\n\t\t\t\t\t// tooltip on the click event in order to zoom in/out\n\t\t\t\t\tevent.stopPropagation();\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.CirclePack.CIRCLE_CLICK,\n\t\t\t\t\t{\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}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle.node')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null)\n\t\t\t.on('click', null);\n\n\t\t// remove the listeners on the legend\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\n\t\tthis.removeBackgroundListeners();\n\t}\n}\n"]}
|