@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/CHANGELOG.md +61 -0
- package/README.md +5 -0
- package/bar-chart.js +6 -12
- package/bar-chart.js.map +1 -1
- package/base-chart.d.ts +6 -7
- package/base-chart.js +52 -120
- package/base-chart.js.map +1 -1
- package/components/index.d.ts +1 -0
- package/components/index.js +2 -0
- package/components/index.js.map +1 -0
- package/components/overlay.d.ts +9 -0
- package/components/overlay.js +28 -0
- package/components/overlay.js.map +1 -0
- package/components/tooltip.d.ts +13 -0
- package/components/tooltip.js +110 -0
- package/components/tooltip.js.map +1 -0
- package/configuration.d.ts +28 -7
- package/configuration.js +20 -16
- package/configuration.js.map +1 -1
- package/index.d.ts +3 -2
- package/index.js +4 -3
- package/index.js.map +1 -1
- package/index.umd.js +1 -1
- package/index.umd.js.map +1 -1
- package/package.json +9 -9
- package/pie-chart.d.ts +1 -1
- package/pie-chart.js +15 -39
- package/pie-chart.js.map +1 -1
- package/scatter-chart.d.ts +1 -0
- package/scatter-chart.js +20 -14
- package/scatter-chart.js.map +1 -1
- package/services/colorPalettes.d.ts +4 -0
- package/services/colorPalettes.js +30 -0
- package/services/colorPalettes.js.map +1 -0
- package/services/colors.d.ts +9 -0
- package/services/colors.js +11 -0
- package/services/colors.js.map +1 -0
- package/stacked-bar-chart.js +5 -12
- package/stacked-bar-chart.js.map +1 -1
- package/style.css +7 -5
- package/style.scss +5 -3
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 @@
|
|
|
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"]}
|
package/configuration.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
|
|
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
|
/**
|