@carbon/charts 0.11.11 → 0.12.1

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/base-chart.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base-chart.js","sourceRoot":"","sources":["src/base-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport {\n\tevent,\n\tmouse,\n\tselect,\n\tselectAll\n} from \"d3-selection\";\nimport { scaleOrdinal } from \"d3-scale\";\nimport { transition, Transition } from \"d3-transition\";\n\n// Internal Imports\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, BaseChartOptions, ChartData } from \"./configuration\";\nimport { Tools } from \"./tools\";\nimport PatternsService from \"./services/patterns\";\n\n// Misc\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport class BaseChart {\n\tstatic chartCount = 1;\n\n\tid = \"\";\n\tchartContainerID = \"\";\n\n\t// Chart element references\n\tcontainer: any;\n\tholder: Element;\n\tsvg: any;\n\tinnerWrap: any;\n\n\toptions: BaseChartOptions = Tools.merge({}, Configuration.options.BASE);\n\n\t// Data\n\tdata: ChartData;\n\tdisplayData: ChartData;\n\tfixedDataLabels;\n\n\t// Fill scales & fill related objects\n\tpatternScale = {};\n\tcolorScale = {};\n\tpatternsService: PatternsService;\n\n\t// Event target\n\tevents: any;\n\teventHandlers = {\n\t\ttooltips: null\n\t};\n\n\tconstructor(holder: Element, configs: ChartConfig<BaseChartOptions>) {\n\t\tthis.id = `chart-${BaseChart.chartCount++}`;\n\t\tif (configs.options) {\n\t\t\tthis.options = Tools.merge({}, this.options, configs.options);\n\t\t}\n\n\t\t// Save holder element reference, and initialize it by applying appropriate styling\n\t\tthis.holder = holder;\n\t\tthis.styleHolderElement();\n\n\t\tconst {chartId, container} = this.setChartIDContainer();\n\t\tthis.container = container;\n\t\tthis.chartContainerID = chartId;\n\n\t\tif (this.options.containerResizable) {\n\t\t\tthis.resizeWhenContainerChange();\n\t\t}\n\n\t\tthis.events = document.createDocumentFragment();\n\n\t\tif (configs.data) {\n\t\t\tthis.setData(configs.data);\n\t\t}\n\t}\n\n\tstyleHolderElement() {\n\t\tconst holderElement = this.holder as HTMLElement;\n\t\tconst { width, height } = this.options;\n\n\t\t// Add class to chart holder\n\t\tselect(this.holder).classed(\"chart-holder\", true);\n\n\t\t// If width exists in options\n\t\tif (width) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.width = Tools.formatWidthHeightValues(width);\n\t\t}\n\n\t\t// If height exists in options\n\t\tif (height) {\n\t\t\t// Apply formatted height attribute to chart\n\t\t\tholderElement.style.height = Tools.formatWidthHeightValues(height);\n\t\t}\n\t}\n\n\tdispatchEvent(eventType: string, eventDetail?: object) {\n\t\tlet newEvent;\n\t\tif (eventDetail) {\n\t\t\tnewEvent = new CustomEvent(eventType, {\n\t\t\t\tdetail: eventDetail\n\t\t\t});\n\t\t} else {\n\t\t\tnewEvent = document.createEvent(\"Event\");\n\t\t\tnewEvent.initEvent(eventType, false, true);\n\t\t}\n\n\t\tthis.events.dispatchEvent(newEvent);\n\t}\n\n\tsetData(data: any) {\n\t\tconst initialDraw = !this.innerWrap;\n\t\tconst newDataIsAPromise = Promise.resolve(data) === data;\n\n\t\t// Dispatch the update event\n\t\tthis.dispatchEvent(\"data-change\");\n\n\t\tif (initialDraw || newDataIsAPromise) {\n\t\t\tthis.updateOverlay().show();\n\t\t}\n\n\t\t// Hide current showing tooltip\n\t\tif (!initialDraw) {\n\t\t\tthis.hideTooltip();\n\t\t}\n\n\t\tPromise.resolve(data).then(value => {\n\t\t\t// Dispatch the update event\n\t\t\tthis.dispatchEvent(\"data-load\");\n\n\t\t\t// Process data\n\t\t\t// this.data = this.dataProcessor(Tools.clone(value));\n\t\t\tthis.data = Tools.clone(value);\n\t\t\tthis.displayData = this.dataProcessor(Tools.clone(value));\n\n\t\t\tconst keys = this.getKeysFromData();\n\n\t\t\t// Grab the old legend items, the keys from the current data\n\t\t\t// Compare the two, if there are any differences (additions/removals)\n\t\t\t// Completely remove the legend and render again\n\t\t\tconst oldLegendItems = this.getActiveLegendItems();\n\t\t\tconst keysArray = Object.keys(keys);\n\t\t\tconst { missing: removedItems, added: newItems } = Tools.arrayDifferences(oldLegendItems, keysArray);\n\n\t\t\t// Update keys for legend use the latest data keys\n\t\t\tthis.options.keys = keys;\n\n\t\t\t// Set the color scale based on the keys present in the data\n\t\t\tthis.setColorScale();\n\n\t\t\t// Add patterns to page, set pattern scales\n\t\t\tif (this.options.accessibility) {\n\t\t\t\tthis.setPatterns();\n\t\t\t}\n\n\t\t\t// Perform the draw or update chart\n\t\t\tif (initialDraw) {\n\t\t\t\tthis.initialDraw();\n\t\t\t} else {\n\t\t\t\tif (removedItems.length > 0 || newItems.length > 0) {\n\t\t\t\t\tthis.addOrUpdateLegend();\n\t\t\t\t}\n\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKeysFromData() {\n\t\tconst keys = {};\n\n\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t// Build out the keys array of objects to represent the legend items\n\t\t\tthis.displayData.labels.forEach(label => {\n\t\t\t\tkeys[label] = Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.displayData.datasets.forEach(dataset => {\n\t\t\t\tkeys[dataset.label] = Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\t\t}\n\n\t\t// Apply disabled legend items from previous data\n\t\t// That also are applicable to the new data\n\t\tconst disabledLegendItems = this.getDisabledLegendItems();\n\t\tObject.keys(keys).forEach(key => {\n\t\t\tif (disabledLegendItems.indexOf(key) !== -1) {\n\t\t\t\tkeys[key] = Configuration.legend.items.status.DISABLED;\n\t\t\t}\n\t\t});\n\n\t\tif (!this.fixedDataLabels) {\n\t\t\tthis.fixedDataLabels = this.displayData.labels;\n\t\t} else {\n\t\t\tthis.displayData.labels.forEach(element => {\n\t\t\t\tif (this.fixedDataLabels.indexOf(element) === -1) {\n\t\t\t\t\tthis.fixedDataLabels.push(element);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tgetLegendType() {\n\t\tconst { datasets } = this.displayData;\n\n\t\t// TODO - Support the labels based legend for line chart\n\t\tif (datasets.length === 1 && datasets[0].backgroundColors && datasets[0].backgroundColors.length > 1) {\n\t\t\treturn Configuration.legend.basedOn.LABELS;\n\t\t} else {\n\t\t\treturn Configuration.legend.basedOn.SERIES;\n\t\t}\n\t}\n\n\tsetPatterns() {\n\t\t// Accessibility & patterns\n\t\tthis.patternsService = new PatternsService();\n\t\tthis.patternsService.addPatternSVGs(this.displayData, this.colorScale, this.chartContainerID, this.getLegendType());\n\n\t\tconst patternURLs = this.patternsService.getFillValues();\n\t\tObject.keys(patternURLs).forEach(datasetLabel => {\n\t\t\tthis.patternScale[datasetLabel] = scaleOrdinal()\n\t\t\t\t.range(patternURLs[datasetLabel])\n\t\t\t\t.domain(this.getLegendItemKeys());\n\t\t});\n\t}\n\n\tsetColorScale() {\n\t\tif (this.displayData.datasets[0].backgroundColors) {\n\t\t\tthis.displayData.datasets.forEach(dataset => {\n\t\t\t\tthis.colorScale[dataset.label] = scaleOrdinal().range(dataset.backgroundColors).domain(this.fixedDataLabels);\n\t\t\t});\n\t\t} else {\n\t\t\tconst colors = Configuration.options.BASE.colors;\n\t\t\tthis.displayData.datasets.forEach((dataset, i) => {\n\t\t\t\tthis.colorScale[dataset.label] = scaleOrdinal().range([colors[i]]).domain(this.fixedDataLabels);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetFillColor(datasetLabel: any, label?: any, value?: any) {\n\t\tif (this.options.getFillColor && !this.options.accessibility) {\n\t\t\treturn this.options.getFillColor(datasetLabel, label, value) || this.getFillScale()[datasetLabel](label);\n\t\t} else {\n\t\t\treturn this.getFillScale()[datasetLabel](label);\n\t\t}\n\t}\n\n\tgetStrokeColor(datasetLabel: any, label?: any, value?: any) {\n\t\tif (this.options.getStrokeColor) {\n\t\t\treturn this.options.getStrokeColor(datasetLabel, label, value) || this.colorScale[datasetLabel](label);\n\t\t} else {\n\t\t\treturn this.colorScale[datasetLabel](label);\n\t\t}\n\t}\n\n\t// TODO - Refactor\n\tgetChartSize(container = this.container) {\n\t\tlet ratio, marginForLegendTop;\n\t\tif (container.node().clientWidth > Configuration.charts.widthBreak) {\n\t\t\tratio = Configuration.charts.magicRatio;\n\t\t\tmarginForLegendTop = 0;\n\t\t} else {\n\t\t\tmarginForLegendTop = Configuration.charts.marginForLegendTop;\n\t\t\tratio = 1;\n\t\t}\n\n\t\t// Store computed actual size, to be considered for change if chart does not support axis\n\t\tconst marginsToExclude = 0;\n\t\tconst computedChartSize = {\n\t\t\theight: container.node().clientHeight - marginForLegendTop,\n\t\t\twidth: (container.node().clientWidth - marginsToExclude) * ratio\n\t\t};\n\n\t\t// If chart is of type pie or donut, width and height should equal to the min of the width and height computed\n\t\tlet maxSizePossible = Math.min(computedChartSize.height, computedChartSize.width);\n\t\tmaxSizePossible = Math.max(maxSizePossible, Configuration.charts.minWidth);\n\n\t\treturn {\n\t\t\theight: maxSizePossible,\n\t\t\twidth: maxSizePossible\n\t\t};\n\t}\n\n\t/*\n\t * removes the chart and any tooltips\n\t */\n\tremoveChart() {\n\t\tthis.holder.remove();\n\t}\n\n\tsetSVG(): any {\n\t\tconst chartSize = this.getChartSize();\n\t\tthis.svg = this.container.append(\"svg\")\n\t\t\t.classed(\"chart-svg \" + this.options.type, true);\n\n\t\tthis.innerWrap = this.svg.append(\"g\")\n\t\t\t.classed(\"inner-wrap\", true);\n\n\t\treturn this.svg;\n\t}\n\n\t// Default fallback when no data processing is needed\n\tdataProcessor(data: ChartData): any {\n\t\treturn data;\n\t}\n\n\t/*\n\t * called when the chart needs to be drawn initially\n\t */\n\tinitialDraw() {\n\t\tconsole.warn(\"You should implement your own `initialDraw()` function.\");\n\t}\n\n\tupdateChart() {\n\t\tconsole.warn(\"You should implement your own `updateChart()` function.\");\n\t}\n\n\tresizeChart() {\n\t\tconsole.warn(\"You should implement your own `resizeChart()` function.\");\n\t}\n\n\tupdate(value?: any) {\n\t\tconsole.warn(\"You should implement your own `update()` function.\");\n\t}\n\n\tresizeWhenContainerChange() {\n\t\tlet containerWidth = this.holder.clientWidth;\n\t\tlet containerHeight = this.holder.clientHeight;\n\n\t\tconst resizeObserver = new ResizeObserver((entries, observer) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (Math.abs(containerWidth - this.holder.clientWidth) > 1\n\t\t\t\t\t|| Math.abs(containerHeight - this.holder.clientHeight) > 1) {\n\t\t\t\t\tcontainerWidth = this.holder.clientWidth;\n\t\t\t\t\tcontainerHeight = this.holder.clientHeight;\n\n\t\t\t\t\tselectAll(\".legend-tooltip\").style(\"display\", \"none\");\n\n\t\t\t\t\tthis.hideTooltip();\n\n\t\t\t\t\tthis.resizeChart();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tresizeObserver.observe(this.holder);\n\t}\n\n\tsetClickableLegend() {\n\t\tconst self = this;\n\t\tconst c = select(this.holder);\n\n\t\tif (this.getActiveLegendItems().length === 1) {\n\t\t\tc.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t}\n\n\t\t// Add hover effect for legend item circles\n\t\tself.addLegendCircleHoverEffect();\n\n\t\tc.selectAll(\".legend-btn\").each(function() {\n\t\t\tselect(this).classed(\"clickable\", true);\n\n\t\t\tselect(this).on(\"click\", function() {\n\t\t\t\tc.selectAll(\".chart-tooltip\").remove();\n\t\t\t\tc.selectAll(\".label-tooltip\").remove();\n\n\t\t\t\t// Only apply legend filters if there are more than 1 active legend items\n\t\t\t\tconst activeLegendItems = self.getActiveLegendItems();\n\t\t\t\tconst legendButton = select(this);\n\t\t\t\tconst enabling = !legendButton.classed(\"active\");\n\n\t\t\t\t// If there are more than 1 active legend items & one is getting toggled on\n\t\t\t\tif (activeLegendItems.length > 1 || enabling) {\n\t\t\t\t\tself.updateLegend(this);\n\t\t\t\t\tself.applyLegendFilter(legendButton.select(\"text\").text());\n\t\t\t\t}\n\t\t\t\t// If there are 2 active legend items & one is getting toggled off\n\t\t\t\tif (activeLegendItems.length === 2 && !enabling) {\n\t\t\t\t\tc.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t\t\t}\n\n\t\t\t\tif (activeLegendItems.length === 1 && enabling) {\n\t\t\t\t\tc.selectAll(\".legend-btn.not-allowed\").classed(\"not-allowed\", false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tsetChartIDContainer() {\n\t\tconst parent = select(this.holder);\n\t\tlet chartId, container;\n\t\tif (parent.select(\".chart-wrapper\").nodes().length > 0) {\n\t\t\tcontainer = parent.select(\".chart-wrapper\");\n\t\t\tchartId = container.attr(\"chart-id\");\n\n\t\t\tcontainer.selectAll(\".chart-svg\").remove();\n\t\t} else {\n\t\t\tchartId = this.id;\n\t\t\tcontainer = parent.append(\"div\");\n\t\t\tcontainer.attr(\"chart-id\", chartId)\n\t\t\t\t.classed(\"chart-wrapper\", true);\n\t\t\tif (container.select(\".legend-wrapper\").nodes().length === 0) {\n\t\t\t\tconst legendWrapper = container.append(\"div\")\n\t\t\t\t\t.attr(\"class\", \"legend-wrapper\")\n\t\t\t\t\t.attr(\"role\", \"region\")\n\t\t\t\t\t.attr(\"aria-label\", `Chart ${chartId} Legend`);\n\n\t\t\t\tlegendWrapper.append(\"ul\")\n\t\t\t\t\t.attr(\"class\", \"legend\");\n\t\t\t}\n\t\t}\n\t\treturn {chartId, container};\n\t}\n\n\tresetOpacity() {\n\t\tconst svg = selectAll(\"svg.chart-svg\");\n\t\tsvg.selectAll(\"rect\")\n\t\t\t.attr(\"fill-opacity\", Configuration.charts.resetOpacity.opacity)\n\t\t\t.attr(\"stroke-opacity\", Configuration.charts.resetOpacity.opacity);\n\t}\n\n\treduceOpacity(exception) {\n\t\tconst exceptedElement = select(exception);\n\t\tconst exceptedElementData = exceptedElement.datum() as any;\n\t\tselect(exception).attr(\"fill-opacity\", false);\n\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\tselect(exception).attr(\"fill\", (d: any) => this.getFillColor(d.datasetLabel, exceptedElementData.label, exceptedElementData.value));\n\t}\n\n\t// ================================================================================\n\t// Legend\n\t// ================================================================================\n\tgetLegendItems() {\n\t\tlet legendItems = {};\n\t\tif (this.options.keys) {\n\t\t\tlegendItems = this.options.keys;\n\t\t}\n\n\t\treturn legendItems;\n\t}\n\n\tgetLegendItemArray() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.map(key => ({\n\t\t\tkey,\n\t\t\tvalue: legendItems[key]\n\t\t}));\n\t}\n\n\tgetLegendItemKeys() {\n\t\treturn Object.keys(this.getLegendItems());\n\t}\n\n\tgetDisabledLegendItems() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.filter(itemKey => legendItems[itemKey] === Configuration.legend.items.status.DISABLED);\n\t}\n\n\tgetActiveLegendItems() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.filter(itemKey => legendItems[itemKey] === Configuration.legend.items.status.ACTIVE);\n\t}\n\n\tupdateLegend(legend) {\n\t\tconst thisLegend = select(legend);\n\t\tconst circle = select(legend).select(\".legend-circle\");\n\n\t\tthisLegend.classed(\"active\", !thisLegend.classed(\"active\"));\n\t\tif (thisLegend.classed(\"active\")) {\n\t\t\tcircle.style(\"background-color\", circle.style(\"border-color\"))\n\t\t\t\t.style(\"border-color\", Configuration.legend.active.borderColor)\n\t\t\t\t.style(\"border-style\", Configuration.legend.active.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.active.borderWidth);\n\t\t} else {\n\t\t\tcircle.style(\"border-color\", circle.style(\"background-color\"))\n\t\t\t\t.style(\"background-color\", Configuration.legend.inactive.backgroundColor)\n\t\t\t\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\t\t}\n\t}\n\n\taddLegend() {\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst legendItemsArray = this.getLegendItemArray();\n\t\tconst legendItems = this.container.select(\".legend\")\n\t\t\t.attr(\"font-size\", Configuration.legend.fontSize)\n\t\t\t.selectAll(\"li.legend-btn\")\n\t\t\t.data(legendItemsArray, d => d.key);\n\n\t\tlegendItems.exit()\n\t\t\t.remove();\n\n\t\tconst legendEnter = legendItems.enter()\n\t\t\t.append(\"li\")\n\t\t\t.attr(\"class\", \"legend-btn active\");\n\n\t\tlegendEnter.append(\"div\")\n\t\t\t.attr(\"class\", \"legend-circle\");\n\n\t\tlegendEnter.append(\"text\");\n\n\t\tlegendEnter.selectAll(\"text\")\n\t\t\t.merge(legendItems.selectAll(\"text\"))\n\t\t\t.text(d => d.key);\n\n\t\tlegendEnter.select(\"div\")\n\t\t\t.merge(legendItems.selectAll(\"div\"))\n\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t}\n\n\t\t\t\treturn \"white\";\n\t\t\t});\n\t}\n\n\tpositionLegend() {\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0\n\t\t\t&& this.container.select(\".legend-tooltip\").node().style.display === \"block\") { return; }\n\n\t\tthis.container.selectAll(\".legend-btn\").style(\"display\", \"inline-block\");\n\t\tconst svgWidth = this.container.select(\"g.inner-wrap\").node().getBBox().width;\n\t\tif (this.isLegendOnRight()) {\n\t\t\tthis.container.selectAll(\".expand-btn\").remove();\n\t\t\tthis.container.select(\".legend-wrapper\").style(\"height\", 0);\n\t\t\tconst containerWidth = this.container.node().clientWidth;\n\t\t\tconst legendWidth = containerWidth - svgWidth;\n\t\t\tthis.container.select(\".legend\").classed(\"right-legend\", true)\n\t\t\t\t.style(\"width\", legendWidth + \"px\");\n\t\t} else {\n\t\t\tthis.container.select(\".legend-wrapper\").style(\"height\", Configuration.legend.wrapperHeight);\n\t\t}\n\n\t\tif (this.hasLegendExpandBtn()) {\n\t\t\tthis.container.select(\".legend\").classed(\"right-legend\", false)\n\t\t\t\t.style(\"width\", null);\n\t\t\tconst btns = this.container.selectAll(\".legend-btn\").nodes();\n\t\t\tlet btnsWidth = 0;\n\t\t\tbtns.forEach(btn => {\n\t\t\t\tif ((btnsWidth + btn.clientWidth + Configuration.legend.widthTolerance) > svgWidth) {\n\t\t\t\t\tselect(btn).style(\"display\", \"none\");\n\t\t\t\t} else {\n\t\t\t\t\tbtnsWidth += btn.clientWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this.container.select(\".expand-btn\").nodes().length === 0) {\n\t\t\t\tthis.addTooltipOpenButtonToLegend();\n\t\t\t}\n\t\t}\n\t}\n\n\taddOrUpdateLegend() {\n\t\tthis.addLegend();\n\n\t\tif (this.options.legendClickable) {\n\t\t\tthis.setClickableLegend();\n\t\t}\n\n\t\tthis.positionLegend();\n\t}\n\n\taddLegendCircleHoverEffect() {\n\t\tthis.container.selectAll(\"li.legend-btn\")\n\t\t\t.on(\"mouseover\", function() {\n\t\t\t\tconst circleRef = select(this).select(\"div.legend-circle\");\n\t\t\t\tconst color = (circleRef.node() as HTMLElement).style.backgroundColor.substring(4,\n\t\t\t\t\t(circleRef.node() as HTMLElement).style.backgroundColor.length - 1);\n\n\t\t\t\tcircleRef.style(\n\t\t\t\t\t\"box-shadow\",\n\t\t\t\t\t`0 0 0 ${Configuration.legend.hoverShadowSize} rgba(${color}, ${Configuration.legend.hoverShadowTransparency})`\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on(\"mouseout\", function() {\n\t\t\t\tselect(this).select(\"div.legend-circle\").style(\"box-shadow\", \"none\");\n\t\t\t});\n\t}\n\n\thasLegendExpandBtn() {\n\t\treturn (\n\t\t\tthis.container.node().clientWidth < Configuration.charts.widthBreak ||\n\t\t\t\tthis.container.node().clientHeight < this.container.select(\"ul.legend\").node().clientHeight\n\n\t\t\t// && this.getLegendItems().length > Configuration.legend.countBreak\n\t\t);\n\t}\n\n\tisLegendOnRight() {\n\t\treturn (\n\t\t\tthis.container.node().clientWidth > Configuration.charts.widthBreak &&\n\t\t\t\tthis.container.node().clientHeight > this.container.select(\"ul.legend\").node().clientHeight\n\n\t\t\t// && this.getLegendItems().length > Configuration.legend.countBreak\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * When a legend item is clicked, apply/remove the appropriate filter\n\t * @param {string} changedLabel The label of the legend element the user clicked on\n\t * @memberof PieChart\n\t */\n\tapplyLegendFilter(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst oldStatus = this.options.keys[changedLabel];\n\n\t\tthis.options.keys[changedLabel] = (oldStatus === ACTIVE ? DISABLED : ACTIVE);\n\n\t\tthis.update();\n\t}\n\n\tsetClickableLegendInTooltip() {\n\t\tconst self = this;\n\t\tconst c = select(this.container);\n\t\tconst tooltip = c.select(\".legend-tooltip-content\");\n\t\ttooltip.selectAll(\".legend-btn\").each(function() {\n\t\t\tselect(this).on(\"click\", function() {\n\t\t\t\tself.updateLegend(this);\n\n\t\t\t\t// TODO - setClickableLegendInTooltip()\n\t\t\t});\n\t\t});\n\t}\n\n\t// ================================================================================\n\t// Tooltips\n\t// ================================================================================\n\taddTooltipOpenButtonToLegend() {\n\t\tconst self = this;\n\t\tconst thisLegend = this.container.select(\".legend\");\n\t\tthisLegend.append(\"div\")\n\t\t\t.attr(\"class\", \"expand-btn\")\n\t\t\t.style(\"cursor\", \"pointer\")\n\t\t\t.on(\"click\", function() {\n\t\t\t\tself.openLegendTooltip(this);\n\t\t\t});\n\t}\n\n\t// TODO - Refactor\n\topenLegendTooltip(target) {\n\t\tselectAll(\".legend-tooltip\").remove();\n\t\tconst mouseXPoint = mouse(this.container.node())[0];\n\t\tconst windowXPoint = event.x;\n\t\tlet tooltip;\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0) {\n\t\t\ttooltip = selectAll(\".legend-tooltip\").style(\"display\", \"block\");\n\t\t\ttooltip.select(\"arrow\").remove();\n\t\t} else {\n\t\t\ttooltip = this.container.append(\"div\")\n\t\t\t\t.attr(\"class\", \"tooltip chart-tooltip legend-tooltip\")\n\t\t\t\t.style(\"display\", \"block\")\n\t\t\t\t.style(\"top\", (mouse(this.container.node())[1] - Configuration.legend.margin.top) + \"px\");\n\t\t\ttooltip.append(\"p\").text(\"Legend\")\n\t\t\t\t.attr(\"class\", \"legend-tooltip-header\");\n\t\t\ttooltip.append(\"ul\")\n\t\t\t\t.attr(\"class\", \"legend-tooltip-content\")\n\t\t\t\t.attr(\"font-size\", Configuration.legend.fontSize);\n\t\t\tTools.addCloseBtn(tooltip, \"md\", \"white\")\n\t\t\t\t.on(\"click\", () => {\n\t\t\t\t\tselectAll(\".legend-tooltip\").style(\"display\", \"none\");\n\t\t\t\t});\n\n\t\t\tconst activeLegendItems = this.getActiveLegendItems();\n\t\t\tconst legendContent = select(\".legend-tooltip-content\")\n\t\t\t\t.attr(\"font-size\", Configuration.legend.fontSize)\n\t\t\t\t.selectAll(\"div\")\n\t\t\t\t.data(this.getLegendItemArray(), (d: any) => d.key)\n\t\t\t\t.enter()\n\t\t\t\t\t.append(\"li\")\n\t\t\t\t\t.classed(\"legend-btn\", true)\n\t\t\t\t\t.classed(\"clickable\", this.options.legendClickable)\n\t\t\t\t\t.classed(\"active\", d => d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t.classed(\"not-allowed\", d => activeLegendItems.length === 1 && d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t.on(\"click\", (clickedItem, e) => {\n\t\t\t\t\t\tif (!this.options.legendClickable) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst legendButton = select(event.currentTarget);\n\t\t\t\t\t\tconst enabling = !legendButton.classed(\"active\");\n\n\t\t\t\t\t\tif (activeLegendItems.length > 1 || enabling) {\n\t\t\t\t\t\t\tthis.updateLegend(event.currentTarget);\n\n\t\t\t\t\t\t\tthis.applyLegendFilter(clickedItem.key);\n\n\t\t\t\t\t\t\tthis.container.selectAll(\"ul.legend li.legend-btn\")\n\t\t\t\t\t\t\t\t.data(this.getLegendItemArray(), (d: any) => d.key)\n\t\t\t\t\t\t\t\t.classed(\"active\", d => d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t\t\t\t.select(\"div.legend-circle\")\n\t\t\t\t\t\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\t\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn \"white\";\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.style(\"border-color\", d => {\n\t\t\t\t\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(d.key);\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\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If there are 2 active legend items & one is getting toggled off\n\t\t\t\t\t\tif (activeLegendItems.length === 2 && !enabling) {\n\t\t\t\t\t\t\tthis.container.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (activeLegendItems.length === 1 && enabling) {\n\t\t\t\t\t\t\tthis.container.selectAll(\".legend-btn.not-allowed\").classed(\"not-allowed\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\tlegendContent.append(\"div\")\n\t\t\t\t.attr(\"class\", \"legend-circle\")\n\t\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn \"white\";\n\t\t\t\t})\n\t\t\t\t.style(\"border-color\", d => {\n\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\n\t\t\tlegendContent.append(\"text\")\n\t\t\t\t.text(d => d.key);\n\t\t}\n\n\t\t// Position the tooltip\n\t\ttooltip.classed(\"arrow-right\", true);\n\t\ttooltip.append(\"div\").attr(\"class\", \"arrow\");\n\t\ttooltip.style(\"left\", `${mouseXPoint - Configuration.tooltip.width - Configuration.tooltip.arrowWidth}px`);\n\n\t\tif (this.options.legendClickable) {\n\t\t\tthis.addLegendCircleHoverEffect();\n\t\t}\n\t}\n\n\tshowLabelTooltip(d, leftSide) {\n\t\tselectAll(\".label-tooltip\").remove();\n\t\tconst mouseXPoint = mouse(this.holder as SVGSVGElement)[0] + Configuration.tooltip.arrowWidth;\n\t\tconst tooltip = this.container.append(\"div\")\n\t\t\t.attr(\"class\", \"tooltip label-tooltip\")\n\t\t\t.style(\"top\", mouse(this.holder as SVGSVGElement)[1] - Configuration.tooltip.magicTop1 + \"px\");\n\t\tTools.addCloseBtn(tooltip, \"xs\")\n\t\t\t.on(\"click\", () => {\n\t\t\t\tthis.resetOpacity();\n\t\t\t\tselectAll(\".tooltip\").remove();\n\t\t\t});\n\t\ttooltip.append(\"p\").text(d);\n\n\t\tif (leftSide) {\n\t\t\ttooltip.classed(\"arrow-left\", true)\n\t\t\t\t\t.style(\"left\", mouseXPoint + \"px\")\n\t\t\t\t\t.append(\"div\").attr(\"class\", \"arrow\");\n\t\t} else {\n\t\t\ttooltip.classed(\"arrow-right\", true);\n\n\t\t\tconst xPoint = mouseXPoint - (tooltip.node() as Element).clientWidth - Configuration.tooltip.magicXPoint2;\n\t\t\ttooltip.style(\"left\", xPoint + \"px\")\n\t\t\t\t\t.append(\"div\").attr(\"class\", \"arrow\");\n\t\t}\n\t}\n\n\thideTooltip() {\n\t\tthis.resetOpacity();\n\n\t\tconst tooltipRef = select(this.holder).select(\"div.chart-tooltip\");\n\t\ttooltipRef.style(\"opacity\", 1)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.tooltip.fadeOut.duration)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\tthis.removeTooltipEventListeners();\n\t}\n\n\taddTooltipEventListeners(tooltip: any) {\n\t\tthis.eventHandlers.tooltips = (evt: Event) => {\n\t\t\tconst targetTagName = evt.target[\"tagName\"];\n\t\t\tconst targetsToBeSkipped = [\"rect\", \"circle\", \"path\"];\n\n\t\t\t// If keyboard event\n\t\t\tif (evt[\"key\"]) {\n\t\t\t\tif (evt[\"key\"] === \"Escape\" || evt[\"key\"] === \"Esc\") {\n\t\t\t\t\tthis.hideTooltip();\n\t\t\t\t}\n\t\t\t} else if (targetsToBeSkipped.indexOf(targetTagName) === -1) {\n\t\t\t\t// If mouse event\n\t\t\t\tthis.hideTooltip();\n\t\t\t}\n\t\t};\n\n\t\t// Apply the event listeners to close the tooltip\n\t\t// setTimeout is there to avoid catching the click event that opened the tooltip\n\t\tsetTimeout(() => {\n\t\t\t// When ESC is pressed\n\t\t\twindow.addEventListener(\"keydown\", this.eventHandlers.tooltips);\n\n\t\t\t// TODO - Don't bind on window\n\t\t\t// If clicked outside\n\t\t\tthis.holder.addEventListener(\"click\", this.eventHandlers.tooltips);\n\n\t\t\t// Stop clicking inside tooltip from bubbling up to window\n\t\t\ttooltip.on(\"click\", () => {\n\t\t\t\tevent.stopPropagation();\n\t\t\t});\n\t\t}, 0);\n\t}\n\n\tremoveTooltipEventListeners() {\n\t\t// TODO - Don't bind on window\n\t\t// Remove eventlistener to close tooltip when ESC is pressed\n\t\twindow.removeEventListener(\"keydown\", this.eventHandlers.tooltips);\n\n\t\t// Remove eventlistener to close tooltip when clicked outside\n\t\tthis.holder.removeEventListener(\"click\", this.eventHandlers.tooltips);\n\t}\n\n\tgenerateTooltipHTML(label, value) {\n\t\tif (this.options.tooltip.size === Configuration.tooltip.size.COMPACT) {\n\t\t\treturn `<b>${label}:</b> ${value}<br/>`;\n\t\t} else {\n\t\t\treturn `\n\t\t\t\t<p class='bignum'>${label}</p>\n\t\t\t\t<p>${value}</p>\n\t\t\t`;\n\t\t}\n\t}\n\n\tshowTooltip(d, clickedElement) {\n\t\t// Rest opacity of all elements in the chart\n\t\tthis.resetOpacity();\n\n\t\t// Remove existing tooltips on the page\n\t\t// TODO - Update class to not conflict with other elements on page\n\t\tselectAll(\".chart-tooltip\").remove();\n\n\t\t// Draw tooltip\n\t\tconst tooltip = select(this.holder).append(\"div\")\n\t\t\t.attr(\"class\", \"tooltip chart-tooltip\")\n\t\t\t.style(\"top\", mouse(this.holder as SVGSVGElement)[1] - Configuration.tooltip.magicTop2 + \"px\");\n\n\n\t\tlet tooltipHTML = \"\";\n\t\tconst formattedValue = this.options.tooltip.formatter ? this.options.tooltip.formatter(d.value) : d.value.toLocaleString(\"en\");\n\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\ttooltipHTML += this.generateTooltipHTML(d.label, formattedValue);\n\t\t} else {\n\t\t\ttooltipHTML += this.generateTooltipHTML(d.datasetLabel, formattedValue);\n\t\t}\n\n\t\ttooltip.append(\"div\").attr(\"class\", \"text-box\").html(tooltipHTML);\n\n\t\t// Draw tooltip arrow in the right direction\n\t\tif (mouse(this.holder as SVGSVGElement)[0] + (tooltip.node() as Element).clientWidth > this.holder.clientWidth) {\n\t\t\ttooltip.style(\n\t\t\t\t\"left\",\n\t\t\t\tmouse(this.holder as SVGSVGElement)[0] - (tooltip.node() as Element).clientWidth - Configuration.tooltip.magicLeft1 + \"px\"\n\t\t\t);\n\t\t} else {\n\t\t\ttooltip.style(\"left\", mouse(this.holder as SVGSVGElement)[0] + Configuration.tooltip.magicLeft2 + \"px\");\n\t\t}\n\n\t\ttooltip.style(\"opacity\", 0)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.tooltip.fadeIn.duration)\n\t\t\t.style(\"opacity\", 1);\n\n\t\tthis.addTooltipEventListeners(tooltip);\n\t}\n\n\tgetFillScale() {\n\t\treturn this.options.accessibility ? this.patternScale : this.colorScale;\n\t}\n\n\tgetDefaultTransition(): Transition<any, any, any, any> {\n\t\tif (this.options.animations === false) {\n\t\t\treturn this.getInstantTransition();\n\t\t}\n\n\t\treturn transition().duration(Configuration.transitions.default.duration);\n\t}\n\n\tgetInstantTransition(): Transition<any, any, any, any> {\n\t\treturn transition().duration(0);\n\t}\n\n\t// Used to determine whether to use a transition for updating fill attributes in charting elements\n\t// Will disable the transition if in accessibility mode\n\tgetFillTransition(animate?: boolean): Transition<any, any, any, any> {\n\t\tif (this.options.animations === false) {\n\t\t\treturn this.getInstantTransition();\n\t\t}\n\n\t\treturn transition().duration(animate === false ? 0 : Configuration.transitions.default.duration);\n\t}\n\n\t// ================================================================================\n\t// Loading overlay\n\t// ================================================================================\n\tupdateOverlay() {\n\t\tconst overlayElement = <HTMLElement>this.holder.querySelector(\"div.chart-overlay\");\n\n\t\treturn {\n\t\t\tshow: () => {\n\t\t\t\t// If overlay element has already been added to the chart container\n\t\t\t\t// Just show it\n\t\t\t\tif (overlayElement) {\n\t\t\t\t\toverlayElement.style.display = \"block\";\n\t\t\t\t} else {\n\t\t\t\t\tconst loadingOverlay = document.createElement(\"div\");\n\n\t\t\t\t\tloadingOverlay.classList.add(\"chart-overlay\");\n\t\t\t\t\tloadingOverlay.innerHTML = this.options.loadingOverlay.innerHTML;\n\n\t\t\t\t\tthis.holder.appendChild(loadingOverlay);\n\t\t\t\t}\n\t\t\t},\n\t\t\thide: () => {\n\t\t\t\toverlayElement.style.display = \"none\";\n\t\t\t}\n\t\t};\n\t}\n\n\tgetBBox(selector: any) {\n\t\treturn this.innerWrap.select(selector).node().getBBox();\n\t}\n}\n"]}
1
+ {"version":3,"file":"base-chart.js","sourceRoot":"","sources":["src/base-chart.ts"],"names":[],"mappings":"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","sourcesContent":["// D3 Imports\nimport {\n\tevent,\n\tmouse,\n\tselect,\n\tselectAll\n} from \"d3-selection\";\nimport { scaleOrdinal } from \"d3-scale\";\nimport { transition, Transition } from \"d3-transition\";\n\n// Internal Imports\nimport * as Configuration from \"./configuration\";\nimport { ChartConfig, BaseChartOptions, ChartData } from \"./configuration\";\nimport { Tools } from \"./tools\";\nimport PatternsService from \"./services/patterns\";\nimport { ChartOverlay } from \"./components/index\";\nimport { ChartTooltip } from \"./components/tooltip\";\n\n// Misc\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport class BaseChart {\n\tstatic chartCount = 1;\n\n\tid = \"\";\n\tchartContainerID = \"\";\n\n\t// Chart element references\n\tcontainer: any;\n\tholder: Element;\n\tsvg: any;\n\tinnerWrap: any;\n\n\toptions: BaseChartOptions = Tools.merge({}, Configuration.options.BASE);\n\n\t// Data\n\tdata: ChartData;\n\tdisplayData: ChartData;\n\tfixedDataLabels;\n\n\t// Fill scales & fill related objects\n\tpatternScale = {};\n\tcolorScale = {};\n\tpatternsService: PatternsService;\n\n\t// Event target\n\tevents: any;\n\teventHandlers = {\n\t\ttooltips: null\n\t};\n\n\t// Misc\n\tchartOverlay: ChartOverlay;\n\ttooltip: ChartTooltip;\n\n\tconstructor(holder: Element, configs: ChartConfig<BaseChartOptions>) {\n\t\tthis.id = `chart-${BaseChart.chartCount++}`;\n\t\tif (configs.options) {\n\t\t\tthis.options = Tools.merge({}, this.options, configs.options);\n\t\t}\n\n\t\t// Save holder element reference, and initialize it by applying appropriate styling\n\t\tthis.holder = holder;\n\t\tthis.styleHolderElement();\n\n\t\tconst {chartId, container} = this.setChartIDContainer();\n\t\tthis.container = container;\n\t\tthis.chartContainerID = chartId;\n\n\t\tif (this.options.containerResizable) {\n\t\t\tthis.resizeWhenContainerChange();\n\t\t}\n\n\t\tthis.events = document.createDocumentFragment();\n\n\t\t// Initialize charting components\n\t\tthis.chartOverlay = new ChartOverlay(this.holder, this.options.overlay);\n\t\tthis.tooltip = new ChartTooltip(this.container.node());\n\n\t\tif (configs.data) {\n\t\t\tthis.setData(configs.data);\n\t\t}\n\t}\n\n\tstyleHolderElement() {\n\t\tconst holderElement = this.holder as HTMLElement;\n\t\tconst { width, height } = this.options;\n\n\t\t// Add class to chart holder\n\t\tselect(this.holder).classed(\"chart-holder\", true);\n\n\t\t// If width exists in options\n\t\tif (width) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.width = Tools.formatWidthHeightValues(width);\n\t\t}\n\n\t\t// If height exists in options\n\t\tif (height) {\n\t\t\t// Apply formatted height attribute to chart\n\t\t\tholderElement.style.height = Tools.formatWidthHeightValues(height);\n\t\t}\n\t}\n\n\tdispatchEvent(eventType: string, eventDetail?: object) {\n\t\tlet newEvent;\n\t\tif (eventDetail) {\n\t\t\tnewEvent = new CustomEvent(eventType, {\n\t\t\t\tdetail: eventDetail\n\t\t\t});\n\t\t} else {\n\t\t\tnewEvent = document.createEvent(\"Event\");\n\t\t\tnewEvent.initEvent(eventType, false, true);\n\t\t}\n\n\t\tthis.events.dispatchEvent(newEvent);\n\t}\n\n\tsetData(data: any) {\n\t\tconst initialDraw = !this.innerWrap;\n\t\tconst newDataIsAPromise = Promise.resolve(data) === data;\n\n\t\t// Dispatch the update event\n\t\tthis.dispatchEvent(\"data-change\");\n\n\t\tif (initialDraw || newDataIsAPromise) {\n\t\t\tthis.chartOverlay.show();\n\t\t}\n\n\t\t// Hide current showing tooltip\n\t\tif (!initialDraw) {\n\t\t\tthis.hideTooltip();\n\t\t}\n\n\t\tPromise.resolve(data).then(value => {\n\t\t\t// Dispatch the update event\n\t\t\tthis.dispatchEvent(\"data-load\");\n\n\t\t\t// Process data\n\t\t\t// this.data = this.dataProcessor(Tools.clone(value));\n\t\t\tthis.data = Tools.clone(value);\n\n\t\t\tif (this.data.datasets && this.data.datasets.length > 0) {\n\t\t\t\tthis.displayData = this.dataProcessor(Tools.clone(value));\n\n\t\t\t\tconst keys = this.getKeysFromData();\n\n\t\t\t\t// Grab the old legend items, the keys from the current data\n\t\t\t\t// Compare the two, if there are any differences (additions/removals)\n\t\t\t\t// Completely remove the legend and render again\n\t\t\t\tconst oldLegendItems = this.getActiveLegendItems();\n\t\t\t\tconst keysArray = Object.keys(keys);\n\t\t\t\tconst { missing: removedItems, added: newItems } = Tools.arrayDifferences(oldLegendItems, keysArray);\n\n\t\t\t\t// Update keys for legend use the latest data keys\n\t\t\t\tthis.options.keys = keys;\n\n\t\t\t\t// Set the color scale based on the keys present in the data\n\t\t\t\tthis.setColorScale();\n\n\t\t\t\t// Add patterns to page, set pattern scales\n\t\t\t\tif (this.options.accessibility) {\n\t\t\t\t\tthis.setPatterns();\n\t\t\t\t}\n\n\t\t\t\t// Perform the draw or update chart\n\t\t\t\tif (initialDraw) {\n\t\t\t\t\tthis.initialDraw();\n\t\t\t\t} else {\n\t\t\t\t\tif (removedItems.length > 0 || newItems.length > 0) {\n\t\t\t\t\t\tthis.addOrUpdateLegend();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.chartOverlay.show(Configuration.options.BASE.overlay.types.noData);\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKeysFromData() {\n\t\tconst keys = {};\n\n\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t// Build out the keys array of objects to represent the legend items\n\t\t\tthis.displayData.labels.forEach(label => {\n\t\t\t\tkeys[label] = Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.displayData.datasets.forEach(dataset => {\n\t\t\t\tkeys[dataset.label] = Configuration.legend.items.status.ACTIVE;\n\t\t\t});\n\t\t}\n\n\t\t// Apply disabled legend items from previous data\n\t\t// That also are applicable to the new data\n\t\tconst disabledLegendItems = this.getDisabledLegendItems();\n\t\tObject.keys(keys).forEach(key => {\n\t\t\tif (disabledLegendItems.indexOf(key) !== -1) {\n\t\t\t\tkeys[key] = Configuration.legend.items.status.DISABLED;\n\t\t\t}\n\t\t});\n\n\t\tif (!this.fixedDataLabels) {\n\t\t\tthis.fixedDataLabels = this.displayData.labels;\n\t\t} else {\n\t\t\tthis.displayData.labels.forEach(element => {\n\t\t\t\tif (this.fixedDataLabels.indexOf(element) === -1) {\n\t\t\t\t\tthis.fixedDataLabels.push(element);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tgetLegendType() {\n\t\tconst { datasets } = this.displayData;\n\n\t\t// TODO - Support the labels based legend for line chart\n\t\tif (datasets.length === 1 && datasets[0].backgroundColors && datasets[0].backgroundColors.length > 1) {\n\t\t\treturn Configuration.legend.basedOn.LABELS;\n\t\t} else {\n\t\t\treturn Configuration.legend.basedOn.SERIES;\n\t\t}\n\t}\n\n\tsetPatterns() {\n\t\t// Accessibility & patterns\n\t\tthis.patternsService = new PatternsService();\n\t\tthis.patternsService.addPatternSVGs(this.displayData, this.colorScale, this.chartContainerID, this.getLegendType());\n\n\t\tconst patternURLs = this.patternsService.getFillValues();\n\t\tObject.keys(patternURLs).forEach(datasetLabel => {\n\t\t\tthis.patternScale[datasetLabel] = scaleOrdinal()\n\t\t\t\t.range(patternURLs[datasetLabel])\n\t\t\t\t.domain(this.getLegendItemKeys());\n\t\t});\n\t}\n\n\tsetColorScale() {\n\t\tif (this.displayData.datasets[0].backgroundColors) {\n\t\t\tthis.displayData.datasets.forEach(dataset => {\n\t\t\t\tthis.colorScale[dataset.label] = scaleOrdinal().range(dataset.backgroundColors).domain(this.fixedDataLabels);\n\t\t\t});\n\t\t} else {\n\t\t\tconst colors = Configuration.options.BASE.colors;\n\t\t\tthis.displayData.datasets.forEach((dataset, i) => {\n\t\t\t\tthis.colorScale[dataset.label] = scaleOrdinal().range([colors[i]]).domain(this.fixedDataLabels);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetFillColor(datasetLabel: any, label?: any, value?: any) {\n\t\tif (this.options.getFillColor && !this.options.accessibility) {\n\t\t\treturn this.options.getFillColor(datasetLabel, label, value) || this.getFillScale()[datasetLabel](label);\n\t\t} else {\n\t\t\treturn this.getFillScale()[datasetLabel](label);\n\t\t}\n\t}\n\n\tgetStrokeColor(datasetLabel: any, label?: any, value?: any) {\n\t\tif (this.options.getStrokeColor) {\n\t\t\treturn this.options.getStrokeColor(datasetLabel, label, value) || this.colorScale[datasetLabel](label);\n\t\t} else {\n\t\t\treturn this.colorScale[datasetLabel](label);\n\t\t}\n\t}\n\n\t// TODO - Refactor\n\tgetChartSize(container = this.container) {\n\t\tlet ratio, marginForLegendTop;\n\t\tif (container.node().clientWidth > Configuration.charts.widthBreak) {\n\t\t\tratio = Configuration.charts.magicRatio;\n\t\t\tmarginForLegendTop = 0;\n\t\t} else {\n\t\t\tmarginForLegendTop = Configuration.charts.marginForLegendTop;\n\t\t\tratio = 1;\n\t\t}\n\n\t\t// Store computed actual size, to be considered for change if chart does not support axis\n\t\tconst marginsToExclude = 0;\n\t\tconst computedChartSize = {\n\t\t\theight: container.node().clientHeight - marginForLegendTop,\n\t\t\twidth: (container.node().clientWidth - marginsToExclude) * ratio\n\t\t};\n\n\t\t// If chart is of type pie or donut, width and height should equal to the min of the width and height computed\n\t\tlet maxSizePossible = Math.min(computedChartSize.height, computedChartSize.width);\n\t\tmaxSizePossible = Math.max(maxSizePossible, Configuration.charts.minWidth);\n\n\t\treturn {\n\t\t\theight: maxSizePossible,\n\t\t\twidth: maxSizePossible\n\t\t};\n\t}\n\n\t/*\n\t * removes the chart and any tooltips\n\t */\n\tremoveChart() {\n\t\t// this.holder.remove();\n\t\tthis.holder.querySelector(\"div.chart-wrapper\").parentNode.removeChild(this.holder.querySelector(\"div.chart-wrapper\"));\n\n\t}\n\n\tsetSVG(): any {\n\t\tconst chartSize = this.getChartSize();\n\t\tthis.svg = this.container.append(\"svg\")\n\t\t\t.classed(\"chart-svg \" + this.options.type, true);\n\n\t\tthis.innerWrap = this.svg.append(\"g\")\n\t\t\t.classed(\"inner-wrap\", true);\n\n\t\treturn this.svg;\n\t}\n\n\t// Default fallback when no data processing is needed\n\tdataProcessor(data: ChartData): any {\n\t\treturn data;\n\t}\n\n\t/*\n\t * called when the chart needs to be drawn initially\n\t */\n\tinitialDraw() {\n\t\tconsole.warn(\"You should implement your own `initialDraw()` function.\");\n\t}\n\n\tupdateChart() {\n\t\tconsole.warn(\"You should implement your own `updateChart()` function.\");\n\t}\n\n\tresizeChart() {\n\t\tconsole.warn(\"You should implement your own `resizeChart()` function.\");\n\t}\n\n\tupdate(value?: any) {\n\t\tconsole.warn(\"You should implement your own `update()` function.\");\n\t}\n\n\tresizeWhenContainerChange() {\n\t\tlet containerWidth = this.holder.clientWidth;\n\t\tlet containerHeight = this.holder.clientHeight;\n\n\t\tconst resizeObserver = new ResizeObserver((entries, observer) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (Math.abs(containerWidth - this.holder.clientWidth) > 1\n\t\t\t\t\t|| Math.abs(containerHeight - this.holder.clientHeight) > 1) {\n\t\t\t\t\tcontainerWidth = this.holder.clientWidth;\n\t\t\t\t\tcontainerHeight = this.holder.clientHeight;\n\n\t\t\t\t\tselectAll(\".legend-tooltip\").style(\"display\", \"none\");\n\n\t\t\t\t\tthis.hideTooltip();\n\n\t\t\t\t\tthis.resizeChart();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tresizeObserver.observe(this.holder);\n\t}\n\n\tsetClickableLegend() {\n\t\tconst self = this;\n\t\tconst c = select(this.holder);\n\n\t\tif (this.getActiveLegendItems().length === 1) {\n\t\t\tc.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t}\n\n\t\t// Add hover effect for legend item circles\n\t\tself.addLegendCircleHoverEffect();\n\n\t\tc.selectAll(\".legend-btn\").each(function() {\n\t\t\tselect(this).classed(\"clickable\", true);\n\n\t\t\tselect(this).on(\"click\", function() {\n\t\t\t\tc.selectAll(\".chart-tooltip\").remove();\n\t\t\t\tc.selectAll(\".label-tooltip\").remove();\n\n\t\t\t\t// Only apply legend filters if there are more than 1 active legend items\n\t\t\t\tconst activeLegendItems = self.getActiveLegendItems();\n\t\t\t\tconst legendButton = select(this);\n\t\t\t\tconst enabling = !legendButton.classed(\"active\");\n\n\t\t\t\t// If there are more than 1 active legend items & one is getting toggled on\n\t\t\t\tif (activeLegendItems.length > 1 || enabling) {\n\t\t\t\t\tself.updateLegend(this);\n\t\t\t\t\tself.applyLegendFilter(legendButton.select(\"text\").text());\n\t\t\t\t}\n\t\t\t\t// If there are 2 active legend items & one is getting toggled off\n\t\t\t\tif (activeLegendItems.length === 2 && !enabling) {\n\t\t\t\t\tc.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t\t\t}\n\n\t\t\t\tif (activeLegendItems.length === 1 && enabling) {\n\t\t\t\t\tc.selectAll(\".legend-btn.not-allowed\").classed(\"not-allowed\", false);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tsetChartIDContainer() {\n\t\tconst parent = select(this.holder);\n\t\tlet chartId, container;\n\t\tif (parent.select(\".chart-wrapper\").nodes().length > 0) {\n\t\t\tcontainer = parent.select(\".chart-wrapper\");\n\t\t\tchartId = container.attr(\"chart-id\");\n\n\t\t\tcontainer.selectAll(\".chart-svg\").remove();\n\t\t} else {\n\t\t\tchartId = this.id;\n\t\t\tcontainer = parent.append(\"div\");\n\t\t\tcontainer.attr(\"chart-id\", chartId)\n\t\t\t\t.classed(\"chart-wrapper\", true);\n\t\t\tif (container.select(\".legend-wrapper\").nodes().length === 0) {\n\t\t\t\tconst legendWrapper = container.append(\"div\")\n\t\t\t\t\t.attr(\"class\", \"legend-wrapper\")\n\t\t\t\t\t.attr(\"role\", \"region\")\n\t\t\t\t\t.attr(\"aria-label\", `Chart ${chartId} Legend`);\n\n\t\t\t\tlegendWrapper.append(\"ul\")\n\t\t\t\t\t.attr(\"class\", \"legend\");\n\t\t\t}\n\t\t}\n\t\treturn {chartId, container};\n\t}\n\n\tresetOpacity() {\n\t\tconst svg = selectAll(\"svg.chart-svg\");\n\t\tsvg.selectAll(\"rect\")\n\t\t\t.attr(\"fill-opacity\", Configuration.charts.resetOpacity.opacity)\n\t\t\t.attr(\"stroke-opacity\", Configuration.charts.resetOpacity.opacity);\n\t}\n\n\treduceOpacity(exception) {\n\t\tconst exceptedElement = select(exception);\n\t\tconst exceptedElementData = exceptedElement.datum() as any;\n\t\tselect(exception).attr(\"fill-opacity\", false);\n\t\tselect(exception).attr(\"stroke-opacity\", Configuration.charts.reduceOpacity.opacity);\n\t\tselect(exception).attr(\"fill\", (d: any) => this.getFillColor(d.datasetLabel, exceptedElementData.label, exceptedElementData.value));\n\t}\n\n\t// ================================================================================\n\t// Legend\n\t// ================================================================================\n\tgetLegendItems() {\n\t\tlet legendItems = {};\n\t\tif (this.options.keys) {\n\t\t\tlegendItems = this.options.keys;\n\t\t}\n\n\t\treturn legendItems;\n\t}\n\n\tgetLegendItemArray() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.map(key => ({\n\t\t\tkey,\n\t\t\tvalue: legendItems[key]\n\t\t}));\n\t}\n\n\tgetLegendItemKeys() {\n\t\treturn Object.keys(this.getLegendItems());\n\t}\n\n\tgetDisabledLegendItems() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.filter(itemKey => legendItems[itemKey] === Configuration.legend.items.status.DISABLED);\n\t}\n\n\tgetActiveLegendItems() {\n\t\tconst legendItems = this.getLegendItems();\n\t\tconst legendItemKeys = Object.keys(legendItems);\n\n\t\treturn legendItemKeys.filter(itemKey => legendItems[itemKey] === Configuration.legend.items.status.ACTIVE);\n\t}\n\n\tupdateLegend(legend) {\n\t\tconst thisLegend = select(legend);\n\t\tconst circle = select(legend).select(\".legend-circle\");\n\n\t\tthisLegend.classed(\"active\", !thisLegend.classed(\"active\"));\n\t\tif (thisLegend.classed(\"active\")) {\n\t\t\tcircle.style(\"background-color\", circle.style(\"border-color\"))\n\t\t\t\t.style(\"border-color\", Configuration.legend.active.borderColor)\n\t\t\t\t.style(\"border-style\", Configuration.legend.active.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.active.borderWidth);\n\t\t} else {\n\t\t\tcircle.style(\"border-color\", circle.style(\"background-color\"))\n\t\t\t\t.style(\"background-color\", Configuration.legend.inactive.backgroundColor)\n\t\t\t\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\t\t}\n\t}\n\n\taddLegend() {\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst legendItemsArray = this.getLegendItemArray();\n\t\tconst legendItems = this.container.select(\".legend\")\n\t\t\t.attr(\"font-size\", Configuration.legend.fontSize)\n\t\t\t.selectAll(\"li.legend-btn\")\n\t\t\t.data(legendItemsArray, d => d.key);\n\n\t\tlegendItems.exit()\n\t\t\t.remove();\n\n\t\tconst legendEnter = legendItems.enter()\n\t\t\t.append(\"li\")\n\t\t\t.attr(\"class\", \"legend-btn active\");\n\n\t\tlegendEnter.append(\"div\")\n\t\t\t.attr(\"class\", \"legend-circle\");\n\n\t\tlegendEnter.append(\"text\");\n\n\t\tlegendEnter.selectAll(\"text\")\n\t\t\t.merge(legendItems.selectAll(\"text\"))\n\t\t\t.text(d => d.key);\n\n\t\tlegendEnter.select(\"div\")\n\t\t\t.merge(legendItems.selectAll(\"div\"))\n\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t}\n\n\t\t\t\treturn \"white\";\n\t\t\t});\n\t}\n\n\tpositionLegend() {\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0\n\t\t\t&& this.container.select(\".legend-tooltip\").node().style.display === \"block\") { return; }\n\n\t\tthis.container.selectAll(\".legend-btn\").style(\"display\", \"inline-block\");\n\t\tconst svgWidth = this.container.select(\"g.inner-wrap\").node().getBBox().width;\n\t\tif (this.isLegendOnRight()) {\n\t\t\tthis.container.selectAll(\".expand-btn\").remove();\n\t\t\tthis.container.select(\".legend-wrapper\").style(\"height\", 0);\n\t\t\tconst containerWidth = this.container.node().clientWidth;\n\t\t\tconst legendWidth = containerWidth - svgWidth;\n\t\t\tthis.container.select(\".legend\").classed(\"right-legend\", true)\n\t\t\t\t.style(\"width\", legendWidth + \"px\");\n\t\t} else {\n\t\t\tthis.container.select(\".legend-wrapper\").style(\"height\", Configuration.legend.wrapperHeight);\n\t\t}\n\n\t\tif (this.hasLegendExpandBtn()) {\n\t\t\tthis.container.select(\".legend\").classed(\"right-legend\", false)\n\t\t\t\t.style(\"width\", null);\n\t\t\tconst btns = this.container.selectAll(\".legend-btn\").nodes();\n\t\t\tlet btnsWidth = 0;\n\t\t\tbtns.forEach(btn => {\n\t\t\t\tif ((btnsWidth + btn.clientWidth + Configuration.legend.widthTolerance) > svgWidth) {\n\t\t\t\t\tselect(btn).style(\"display\", \"none\");\n\t\t\t\t} else {\n\t\t\t\t\tbtnsWidth += btn.clientWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this.container.select(\".expand-btn\").nodes().length === 0) {\n\t\t\t\tthis.addTooltipOpenButtonToLegend();\n\t\t\t}\n\t\t}\n\t}\n\n\taddOrUpdateLegend() {\n\t\tthis.addLegend();\n\n\t\tif (this.options.legendClickable) {\n\t\t\tthis.setClickableLegend();\n\t\t}\n\n\t\tthis.positionLegend();\n\t}\n\n\taddLegendCircleHoverEffect() {\n\t\tthis.container.selectAll(\"li.legend-btn\")\n\t\t\t.on(\"mouseover\", function() {\n\t\t\t\tconst circleRef = select(this).select(\"div.legend-circle\");\n\t\t\t\tconst color = (circleRef.node() as HTMLElement).style.backgroundColor.substring(4,\n\t\t\t\t\t(circleRef.node() as HTMLElement).style.backgroundColor.length - 1);\n\n\t\t\t\tcircleRef.style(\n\t\t\t\t\t\"box-shadow\",\n\t\t\t\t\t`0 0 0 ${Configuration.legend.hoverShadowSize} rgba(${color}, ${Configuration.legend.hoverShadowTransparency})`\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on(\"mouseout\", function() {\n\t\t\t\tselect(this).select(\"div.legend-circle\").style(\"box-shadow\", \"none\");\n\t\t\t});\n\t}\n\n\thasLegendExpandBtn() {\n\t\treturn (\n\t\t\tthis.container.node().clientWidth < Configuration.charts.widthBreak ||\n\t\t\t\tthis.container.node().clientHeight < this.container.select(\"ul.legend\").node().clientHeight\n\n\t\t\t// && this.getLegendItems().length > Configuration.legend.countBreak\n\t\t);\n\t}\n\n\tisLegendOnRight() {\n\t\treturn (\n\t\t\tthis.container.node().clientWidth > Configuration.charts.widthBreak &&\n\t\t\t\tthis.container.node().clientHeight > this.container.select(\"ul.legend\").node().clientHeight\n\n\t\t\t// && this.getLegendItems().length > Configuration.legend.countBreak\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * When a legend item is clicked, apply/remove the appropriate filter\n\t * @param {string} changedLabel The label of the legend element the user clicked on\n\t * @memberof PieChart\n\t */\n\tapplyLegendFilter(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst oldStatus = this.options.keys[changedLabel];\n\n\t\tthis.options.keys[changedLabel] = (oldStatus === ACTIVE ? DISABLED : ACTIVE);\n\n\t\tthis.update();\n\t}\n\n\tsetClickableLegendInTooltip() {\n\t\tconst self = this;\n\t\tconst c = select(this.container);\n\t\tconst tooltip = c.select(\".legend-tooltip-content\");\n\t\ttooltip.selectAll(\".legend-btn\").each(function() {\n\t\t\tselect(this).on(\"click\", function() {\n\t\t\t\tself.updateLegend(this);\n\n\t\t\t\t// TODO - setClickableLegendInTooltip()\n\t\t\t});\n\t\t});\n\t}\n\n\t// ================================================================================\n\t// Tooltips\n\t// ================================================================================\n\taddTooltipOpenButtonToLegend() {\n\t\tconst self = this;\n\t\tconst thisLegend = this.container.select(\".legend\");\n\t\tthisLegend.append(\"div\")\n\t\t\t.attr(\"class\", \"expand-btn\")\n\t\t\t.style(\"cursor\", \"pointer\")\n\t\t\t.on(\"click\", function() {\n\t\t\t\tself.openLegendTooltip(this);\n\t\t\t});\n\t}\n\n\t// TODO - Refactor\n\topenLegendTooltip(target) {\n\t\tselectAll(\".legend-tooltip\").remove();\n\t\tconst mouseXPoint = mouse(this.container.node())[0];\n\t\tconst windowXPoint = event.x;\n\t\tlet tooltip;\n\t\tif (this.container.select(\".legend-tooltip\").nodes().length > 0) {\n\t\t\ttooltip = selectAll(\".legend-tooltip\").style(\"display\", \"block\");\n\t\t\ttooltip.select(\"arrow\").remove();\n\t\t} else {\n\t\t\ttooltip = this.container.append(\"div\")\n\t\t\t\t.attr(\"class\", \"tooltip chart-tooltip legend-tooltip\")\n\t\t\t\t.style(\"display\", \"block\")\n\t\t\t\t.style(\"top\", (mouse(this.container.node())[1] - Configuration.legend.margin.top) + \"px\");\n\t\t\ttooltip.append(\"p\").text(\"Legend\")\n\t\t\t\t.attr(\"class\", \"legend-tooltip-header\");\n\t\t\ttooltip.append(\"ul\")\n\t\t\t\t.attr(\"class\", \"legend-tooltip-content\")\n\t\t\t\t.attr(\"font-size\", Configuration.legend.fontSize);\n\t\t\tTools.addCloseBtn(tooltip, \"md\", \"white\")\n\t\t\t\t.on(\"click\", () => {\n\t\t\t\t\tselectAll(\".legend-tooltip\").style(\"display\", \"none\");\n\t\t\t\t});\n\n\t\t\tconst activeLegendItems = this.getActiveLegendItems();\n\t\t\tconst legendContent = select(\".legend-tooltip-content\")\n\t\t\t\t.attr(\"font-size\", Configuration.legend.fontSize)\n\t\t\t\t.selectAll(\"div\")\n\t\t\t\t.data(this.getLegendItemArray(), (d: any) => d.key)\n\t\t\t\t.enter()\n\t\t\t\t\t.append(\"li\")\n\t\t\t\t\t.classed(\"legend-btn\", true)\n\t\t\t\t\t.classed(\"clickable\", this.options.legendClickable)\n\t\t\t\t\t.classed(\"active\", d => d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t.classed(\"not-allowed\", d => activeLegendItems.length === 1 && d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t.on(\"click\", (clickedItem, e) => {\n\t\t\t\t\t\tif (!this.options.legendClickable) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst legendButton = select(event.currentTarget);\n\t\t\t\t\t\tconst enabling = !legendButton.classed(\"active\");\n\n\t\t\t\t\t\tif (activeLegendItems.length > 1 || enabling) {\n\t\t\t\t\t\t\tthis.updateLegend(event.currentTarget);\n\n\t\t\t\t\t\t\tthis.applyLegendFilter(clickedItem.key);\n\n\t\t\t\t\t\t\tthis.container.selectAll(\"ul.legend li.legend-btn\")\n\t\t\t\t\t\t\t\t.data(this.getLegendItemArray(), (d: any) => d.key)\n\t\t\t\t\t\t\t\t.classed(\"active\", d => d.value === Configuration.legend.items.status.ACTIVE)\n\t\t\t\t\t\t\t\t.select(\"div.legend-circle\")\n\t\t\t\t\t\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\t\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn \"white\";\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.style(\"border-color\", d => {\n\t\t\t\t\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn this.getStrokeColor(d.key);\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\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If there are 2 active legend items & one is getting toggled off\n\t\t\t\t\t\tif (activeLegendItems.length === 2 && !enabling) {\n\t\t\t\t\t\t\tthis.container.selectAll(\".legend-btn.active\").classed(\"not-allowed\", true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (activeLegendItems.length === 1 && enabling) {\n\t\t\t\t\t\t\tthis.container.selectAll(\".legend-btn.not-allowed\").classed(\"not-allowed\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\tlegendContent.append(\"div\")\n\t\t\t\t.attr(\"class\", \"legend-circle\")\n\t\t\t\t.style(\"background-color\", (d, i) => {\n\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS && d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t} else if (d.value === Configuration.legend.items.status.ACTIVE) {\n\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn \"white\";\n\t\t\t\t})\n\t\t\t\t.style(\"border-color\", d => {\n\t\t\t\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\t\t\t\treturn this.getStrokeColor(this.displayData.datasets[0].label, d.key, d.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.getStrokeColor(d.key);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.style(\"border-style\", Configuration.legend.inactive.borderStyle)\n\t\t\t\t.style(\"border-width\", Configuration.legend.inactive.borderWidth);\n\n\t\t\tlegendContent.append(\"text\")\n\t\t\t\t.text(d => d.key);\n\t\t}\n\n\t\t// Position the tooltip\n\t\ttooltip.classed(\"arrow-right\", true);\n\t\ttooltip.append(\"div\").attr(\"class\", \"arrow\");\n\t\ttooltip.style(\"left\", `${mouseXPoint - Configuration.tooltip.width - Configuration.tooltip.arrowWidth}px`);\n\n\t\tif (this.options.legendClickable) {\n\t\t\tthis.addLegendCircleHoverEffect();\n\t\t}\n\t}\n\n\tshowLabelTooltip(d, leftSide) {\n\t\tselectAll(\".label-tooltip\").remove();\n\t\tconst mouseXPoint = mouse(this.holder as SVGSVGElement)[0] + Configuration.tooltip.arrowWidth;\n\t\tconst tooltip = this.container.append(\"div\")\n\t\t\t.attr(\"class\", \"tooltip label-tooltip\")\n\t\t\t.style(\"top\", mouse(this.holder as SVGSVGElement)[1] - Configuration.tooltip.magicTop1 + \"px\");\n\t\tTools.addCloseBtn(tooltip, \"xs\")\n\t\t\t.on(\"click\", () => {\n\t\t\t\tthis.resetOpacity();\n\t\t\t\tselectAll(\".tooltip\").remove();\n\t\t\t});\n\t\ttooltip.append(\"p\").text(d);\n\n\t\tif (leftSide) {\n\t\t\ttooltip.classed(\"arrow-left\", true)\n\t\t\t\t\t.style(\"left\", mouseXPoint + \"px\")\n\t\t\t\t\t.append(\"div\").attr(\"class\", \"arrow\");\n\t\t} else {\n\t\t\ttooltip.classed(\"arrow-right\", true);\n\n\t\t\tconst xPoint = mouseXPoint - (tooltip.node() as Element).clientWidth - Configuration.tooltip.magicXPoint2;\n\t\t\ttooltip.style(\"left\", xPoint + \"px\")\n\t\t\t\t\t.append(\"div\").attr(\"class\", \"arrow\");\n\t\t}\n\t}\n\n\thideTooltip() {\n\t\tthis.resetOpacity();\n\n\t\tthis.tooltip.hide();\n\t}\n\n\tgenerateTooltipHTML(label, value) {\n\t\tif (this.options.tooltip.size === Configuration.tooltip.size.COMPACT) {\n\t\t\treturn `<b>${label}:</b> ${value}<br/>`;\n\t\t} else {\n\t\t\treturn `\n\t\t\t\t<p class='bignum'>${label}</p>\n\t\t\t\t<p>${value}</p>\n\t\t\t`;\n\t\t}\n\t}\n\n\tgetTooltipHTML = d => {\n\t\tconst formattedValue = this.options.tooltip.formatter ? this.options.tooltip.formatter(d.value) : d.value.toLocaleString(\"en\");\n\t\tif (this.getLegendType() === Configuration.legend.basedOn.LABELS) {\n\t\t\treturn this.generateTooltipHTML(d.label, formattedValue);\n\t\t}\n\n\t\treturn this.generateTooltipHTML(d.datasetLabel, formattedValue);\n\t}\n\n\tshowTooltip(d, clickedElement?: Element) {\n\t\t// Reset opacity of all elements in the chart\n\t\tthis.resetOpacity();\n\n\t\tconst { customHTML } = this.options.tooltip;\n\t\tlet contentHTML;\n\t\tif (customHTML) {\n\t\t\tcontentHTML = customHTML;\n\t\t} else {\n\t\t\tcontentHTML = this.getTooltipHTML(d);\n\t\t}\n\n\t\tthis.tooltip.show(contentHTML);\n\t}\n\n\tgetFillScale() {\n\t\treturn this.options.accessibility ? this.patternScale : this.colorScale;\n\t}\n\n\tgetDefaultTransition(): Transition<any, any, any, any> {\n\t\tif (this.options.animations === false) {\n\t\t\treturn this.getInstantTransition();\n\t\t}\n\n\t\treturn transition().duration(Configuration.transitions.default.duration);\n\t}\n\n\tgetInstantTransition(): Transition<any, any, any, any> {\n\t\treturn transition().duration(0);\n\t}\n\n\t// Used to determine whether to use a transition for updating fill attributes in charting elements\n\t// Will disable the transition if in accessibility mode\n\tgetFillTransition(animate?: boolean): Transition<any, any, any, any> {\n\t\tif (this.options.animations === false) {\n\t\t\treturn this.getInstantTransition();\n\t\t}\n\n\t\treturn transition().duration(animate === false ? 0 : Configuration.transitions.default.duration);\n\t}\n\n\tgetBBox(selector: any) {\n\t\treturn this.innerWrap.select(selector).node().getBBox();\n\t}\n}\n"]}
@@ -0,0 +1 @@
1
+ export * from "./overlay";
@@ -0,0 +1,2 @@
1
+ export * from "./overlay";
2
+ //# sourceMappingURL=/home/travis/build/carbon-design-system/carbon-charts/packages/core/components/index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC","sourcesContent":["export * from \"./overlay\";\n"]}
@@ -0,0 +1,9 @@
1
+ import * as Configuration from "../configuration";
2
+ export declare class ChartOverlay {
3
+ holder: HTMLElement;
4
+ overlayElement: HTMLElement;
5
+ overlayOptions: Configuration.ChartOverlayOptions;
6
+ constructor(holder: Element, options: Configuration.ChartOverlayOptions);
7
+ show(type?: string): void;
8
+ hide(): void;
9
+ }
@@ -0,0 +1,28 @@
1
+ import * as Configuration from "../configuration";
2
+ var ChartOverlay = /** @class */ (function () {
3
+ function ChartOverlay(holder, options) {
4
+ this.holder = holder;
5
+ this.overlayElement = this.holder.querySelector("div.chart-overlay");
6
+ if (options) {
7
+ this.overlayOptions = options;
8
+ }
9
+ else {
10
+ this.overlayOptions = Configuration.options.BASE.overlay;
11
+ }
12
+ }
13
+ ChartOverlay.prototype.show = function (type) {
14
+ if (this.overlayElement) {
15
+ this.overlayElement.parentNode.removeChild(this.overlayElement);
16
+ }
17
+ var overlay = document.createElement("div");
18
+ overlay.classList.add("chart-overlay");
19
+ overlay.innerHTML = this.overlayOptions.innerHTML[type ? type : "loading"];
20
+ this.overlayElement = this.holder.appendChild(overlay);
21
+ };
22
+ ChartOverlay.prototype.hide = function () {
23
+ this.overlayElement.style.display = "none";
24
+ };
25
+ return ChartOverlay;
26
+ }());
27
+ export { ChartOverlay };
28
+ //# sourceMappingURL=/home/travis/build/carbon-design-system/carbon-charts/packages/core/components/overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/components/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAElD;IAKC,sBAAY,MAAe,EAAE,OAA0C;QACtE,IAAI,CAAC,MAAM,GAAgB,MAAM,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAErE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC/B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,2BAAI,GAAJ,UAAK,IAAa;QACjB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC;QAED,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,2BAAI,GAAJ;QACC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5C,CAAC;IACF,mBAAC;AAAD,CAAC,AAhCD,IAgCC","sourcesContent":["import * as Configuration from \"../configuration\";\n\nexport class ChartOverlay {\n\tholder: HTMLElement;\n\toverlayElement: HTMLElement;\n\toverlayOptions: Configuration.ChartOverlayOptions;\n\n\tconstructor(holder: Element, options: Configuration.ChartOverlayOptions) {\n\t\tthis.holder = <HTMLElement>holder;\n\t\tthis.overlayElement = this.holder.querySelector(\"div.chart-overlay\");\n\n\t\tif (options) {\n\t\t\tthis.overlayOptions = options;\n\t\t} else {\n\t\t\tthis.overlayOptions = Configuration.options.BASE.overlay;\n\t\t}\n\t}\n\n\tshow(type?: string) {\n\t\tif (this.overlayElement) {\n\t\t\tthis.overlayElement.parentNode.removeChild(this.overlayElement);\n\t\t}\n\n\t\tconst overlay = document.createElement(\"div\");\n\n\t\toverlay.classList.add(\"chart-overlay\");\n\t\toverlay.innerHTML = this.overlayOptions.innerHTML[type ? type : \"loading\"];\n\n\t\tthis.overlayElement = this.holder.appendChild(overlay);\n\t}\n\n\thide() {\n\t\tthis.overlayElement.style.display = \"none\";\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import Position from "@carbon/utils-position";
2
+ export declare class ChartTooltip {
3
+ container: HTMLElement;
4
+ positionService: Position;
5
+ constructor(container: Element);
6
+ getRef: () => HTMLElement;
7
+ positionTooltip(): void;
8
+ show(contentHTML: any): void;
9
+ hide(): void;
10
+ handleTooltipEvents(evt: Event): void;
11
+ addEventListeners(): void;
12
+ removeEventLinteners(): void;
13
+ }
@@ -0,0 +1,110 @@
1
+ import * as Configuration from "../configuration";
2
+ // Carbon position service
3
+ import Position, { PLACEMENTS } from "@carbon/utils-position";
4
+ // D3 Imports
5
+ import { select, selectAll, mouse } from "d3-selection";
6
+ var ChartTooltip = /** @class */ (function () {
7
+ function ChartTooltip(container) {
8
+ var _this = this;
9
+ this.positionService = new Position();
10
+ this.getRef = function () { return select(_this.container).select("div.chart-tooltip").node(); };
11
+ this.container = container;
12
+ }
13
+ ChartTooltip.prototype.positionTooltip = function () {
14
+ var _this = this;
15
+ var target = this.getRef();
16
+ var mouseRelativePos = mouse(this.container);
17
+ // Find out whether tooltip should be shown on the left or right side
18
+ var bestPlacementOption = this.positionService.findBestPlacementAt({
19
+ left: mouseRelativePos[0],
20
+ top: mouseRelativePos[1]
21
+ }, target, [
22
+ PLACEMENTS.RIGHT,
23
+ PLACEMENTS.LEFT
24
+ ], function () { return ({
25
+ width: _this.container.offsetWidth,
26
+ height: _this.container.offsetHeight
27
+ }); });
28
+ var horizontalOffset = Configuration.tooltip.magicLeft2;
29
+ if (bestPlacementOption === PLACEMENTS.LEFT) {
30
+ horizontalOffset *= -1;
31
+ }
32
+ // Get coordinates to where tooltip should be positioned
33
+ var pos = this.positionService.findPositionAt({
34
+ left: mouseRelativePos[0] + horizontalOffset,
35
+ top: mouseRelativePos[1]
36
+ }, target, bestPlacementOption);
37
+ this.positionService.setElement(target, pos);
38
+ };
39
+ ChartTooltip.prototype.show = function (contentHTML) {
40
+ // Remove existing tooltips on the page
41
+ // TODO - Update class to not conflict with other elements on page
42
+ selectAll(".chart-tooltip").remove();
43
+ // Draw tooltip
44
+ var tooltip = select(this.container).append("div")
45
+ .attr("class", "tooltip chart-tooltip");
46
+ // Apply html content to the tooltip
47
+ tooltip.append("div")
48
+ .attr("class", "text-box")
49
+ .html(contentHTML);
50
+ // Position the tooltip
51
+ this.positionTooltip();
52
+ // Fade in
53
+ tooltip.style("opacity", 0)
54
+ .transition()
55
+ .duration(Configuration.tooltip.fadeIn.duration)
56
+ .style("opacity", 1);
57
+ // this.addEventListeners();
58
+ };
59
+ ChartTooltip.prototype.hide = function () {
60
+ var tooltipRef = select(this.container).select("div.chart-tooltip");
61
+ // Fade out and remove
62
+ tooltipRef.style("opacity", 1)
63
+ .transition()
64
+ .duration(Configuration.tooltip.fadeOut.duration)
65
+ .style("opacity", 0)
66
+ .remove();
67
+ this.removeEventLinteners();
68
+ };
69
+ ChartTooltip.prototype.handleTooltipEvents = function (evt) {
70
+ // If keyboard event
71
+ if (evt["key"]) {
72
+ if (evt["key"] === "Escape" || evt["key"] === "Esc") {
73
+ this.hide();
74
+ }
75
+ }
76
+ else {
77
+ var targetTagName = evt.target["tagName"];
78
+ var targetsToBeSkipped = Configuration.options.BASE.tooltip.targetsToSkip;
79
+ if (targetsToBeSkipped.indexOf(targetTagName) === -1) {
80
+ // If mouse event
81
+ this.hide();
82
+ }
83
+ }
84
+ };
85
+ ChartTooltip.prototype.addEventListeners = function () {
86
+ var _this = this;
87
+ var tooltipRef = select(this.container).select("div.chart-tooltip");
88
+ // Apply the event listeners to close the tooltip
89
+ // setTimeout is there to avoid catching the click event that opened the tooltip
90
+ setTimeout(function () {
91
+ // When ESC is pressed
92
+ window.addEventListener("keydown", _this.handleTooltipEvents);
93
+ // If clicked outside
94
+ _this.container.addEventListener("click", _this.handleTooltipEvents);
95
+ // Stop clicking inside tooltip from bubbling up to window
96
+ tooltipRef.on("click", function () {
97
+ event.stopPropagation();
98
+ });
99
+ }, 0);
100
+ };
101
+ ChartTooltip.prototype.removeEventLinteners = function () {
102
+ // Remove eventlistener to close tooltip when ESC is pressed
103
+ window.removeEventListener("keydown", this.handleTooltipEvents);
104
+ // Remove eventlistener to close tooltip when clicked outside
105
+ this.container.removeEventListener("click", this.handleTooltipEvents);
106
+ };
107
+ return ChartTooltip;
108
+ }());
109
+ export { ChartTooltip };
110
+ //# sourceMappingURL=/home/travis/build/carbon-design-system/carbon-charts/packages/core/components/tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../src/components/tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Configuration from \"../configuration\";\n\n// Carbon position service\nimport Position, { PLACEMENTS } from \"@carbon/utils-position\";\n\n// D3 Imports\nimport { select, selectAll, mouse } from \"d3-selection\";\n\nexport class ChartTooltip {\n\tcontainer: HTMLElement;\n\tpositionService: Position = new Position();\n\n\tconstructor(container: Element) {\n\t\tthis.container = container as HTMLElement;\n\t}\n\n\tgetRef = () => select(this.container).select(\"div.chart-tooltip\").node() as HTMLElement;\n\n\tpositionTooltip() {\n\t\tconst target = this.getRef();\n\t\tconst mouseRelativePos = mouse(this.container);\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],\n\t\t\t() => ({\n\t\t\t\twidth: this.container.offsetWidth,\n\t\t\t\theight: this.container.offsetHeight\n\t\t\t})\n\t\t);\n\n\t\tlet { magicLeft2: horizontalOffset } = Configuration.tooltip;\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\tconst pos = 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\tshow(contentHTML) {\n\t\t// Remove existing tooltips on the page\n\t\t// TODO - Update class to not conflict with other elements on page\n\t\tselectAll(\".chart-tooltip\").remove();\n\n\t\t// Draw tooltip\n\t\tconst tooltip = select(this.container).append(\"div\")\n\t\t\t.attr(\"class\", \"tooltip chart-tooltip\");\n\n\t\t// Apply html content to the tooltip\n\t\ttooltip.append(\"div\")\n\t\t\t.attr(\"class\", \"text-box\")\n\t\t\t.html(contentHTML);\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip();\n\n\t\t// Fade in\n\t\ttooltip.style(\"opacity\", 0)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.tooltip.fadeIn.duration)\n\t\t\t.style(\"opacity\", 1);\n\n\t\t// this.addEventListeners();\n\t}\n\n\thide() {\n\t\tconst tooltipRef = select(this.container).select(\"div.chart-tooltip\");\n\n\t\t// Fade out and remove\n\t\ttooltipRef.style(\"opacity\", 1)\n\t\t\t.transition()\n\t\t\t.duration(Configuration.tooltip.fadeOut.duration)\n\t\t\t.style(\"opacity\", 0)\n\t\t\t.remove();\n\n\t\tthis.removeEventLinteners();\n\t}\n\n\thandleTooltipEvents(evt: Event) {\n\t\t// If keyboard event\n\t\tif (evt[\"key\"]) {\n\t\t\tif (evt[\"key\"] === \"Escape\" || evt[\"key\"] === \"Esc\") {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} else {\n\t\t\tconst targetTagName = evt.target[\"tagName\"];\n\t\t\tconst targetsToBeSkipped = Configuration.options.BASE.tooltip.targetsToSkip;\n\t\t\tif (targetsToBeSkipped.indexOf(targetTagName) === -1) {\n\t\t\t\t// If mouse event\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\taddEventListeners() {\n\t\tconst tooltipRef = select(this.container).select(\"div.chart-tooltip\");\n\n\t\t// Apply the event listeners to close the tooltip\n\t\t// setTimeout is there to avoid catching the click event that opened the tooltip\n\t\tsetTimeout(() => {\n\t\t\t// When ESC is pressed\n\t\t\twindow.addEventListener(\"keydown\", this.handleTooltipEvents);\n\n\t\t\t// If clicked outside\n\t\t\tthis.container.addEventListener(\"click\", this.handleTooltipEvents);\n\n\t\t\t// Stop clicking inside tooltip from bubbling up to window\n\t\t\ttooltipRef.on(\"click\", () => {\n\t\t\t\tevent.stopPropagation();\n\t\t\t});\n\t\t}, 0);\n\t}\n\n\tremoveEventLinteners() {\n\t\t// Remove eventlistener to close tooltip when ESC is pressed\n\t\twindow.removeEventListener(\"keydown\", this.handleTooltipEvents);\n\n\t\t// Remove eventlistener to close tooltip when clicked outside\n\t\tthis.container.removeEventListener(\"click\", this.handleTooltipEvents);\n\t}\n}\n"]}
@@ -25,6 +25,25 @@ export declare enum ThresholdTheme {
25
25
  ERROR = "error",
26
26
  WARNING = "warning",
27
27
  }
28
+ /**
29
+ * customize the overlay contents
30
+ */
31
+ export interface ChartOverlayOptions {
32
+ /**
33
+ * types of overlay states
34
+ */
35
+ types: {
36
+ loading: string;
37
+ noData: string;
38
+ };
39
+ /**
40
+ * raw html to be injected into the overlay container
41
+ */
42
+ innerHTML: {
43
+ loading: string;
44
+ noData: string;
45
+ };
46
+ }
28
47
  /**
29
48
  * Base chart options common to any chart
30
49
  */
@@ -65,16 +84,16 @@ export interface BaseChartOptions {
65
84
  * a function to format the tooltip contents
66
85
  */
67
86
  formatter: Function;
68
- };
69
- /**
70
- * customize the loading overlay contents
71
- */
72
- loadingOverlay?: {
73
87
  /**
74
- * raw html to be injected into the loading container
88
+ * elements onto which a hover or click would not trigger the tooltip to hide
89
+ */
90
+ targetsToSkip: Array<String>;
91
+ /**
92
+ * custom HTML content for tooltip provided by user
75
93
  */
76
- innerHTML: string;
94
+ customHTML?: string;
77
95
  };
96
+ overlay?: ChartOverlayOptions;
78
97
  /**
79
98
  * Optional function to generate the fill color based on datasetLabel, label, and/or value
80
99
  */
@@ -212,6 +231,7 @@ export interface LineChartOptions extends AxisChartOptions {
212
231
  * sets the radius of the point
213
232
  */
214
233
  radius: number;
234
+ fillOpacity?: number;
215
235
  };
216
236
  }
217
237
  /**
@@ -226,6 +246,7 @@ export interface ScatterChartOptions extends AxisChartOptions {
226
246
  * sets the radius of the point
227
247
  */
228
248
  radius: number;
249
+ fillOpacity?: number;
229
250
  };
230
251
  }
231
252
  /**