@carbon/charts 1.6.9 → 1.6.13
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 +35 -0
- package/build/src/components/essentials/tooltip.d.ts +1 -1
- package/bundle.js +1 -1
- package/components/axes/axis.js +2 -2
- package/components/axes/axis.js.map +1 -1
- package/components/essentials/tooltip.d.ts +1 -1
- package/components/essentials/tooltip.js +32 -26
- package/components/essentials/tooltip.js.map +1 -1
- package/demo/styles.css +1 -1
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/package.json +1 -1
- package/styles/components/_tooltip.scss +4 -1
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tsconfig.tsbuildinfo +3 -3
package/components/axes/axis.js
CHANGED
|
@@ -434,13 +434,13 @@ var Axis = /** @class */ (function (_super) {
|
|
|
434
434
|
container
|
|
435
435
|
.selectAll('g.ticks g.tick text')
|
|
436
436
|
.attr('transform', "rotate(-45)")
|
|
437
|
-
.
|
|
437
|
+
.attr('text-anchor', axisPosition === AxisPositions.TOP ? 'start' : 'end');
|
|
438
438
|
}
|
|
439
439
|
else {
|
|
440
440
|
container
|
|
441
441
|
.selectAll('g.ticks g.tick text')
|
|
442
442
|
.attr('transform', null)
|
|
443
|
-
.
|
|
443
|
+
.attr('text-anchor', null);
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
446
|
// we don't need to show axes on empty state and on skeleton state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axis.js","sourceRoot":"","sources":["axis.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tAxisPositions,\n\tEvents,\n\tScaleTypes,\n\tRoles,\n\tTruncationTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport { ChartModel } from '../../model/model';\nimport { DOMUtils } from '../../services';\nimport {\n\tAxisTitleOrientations,\n\tRenderTypes,\n\tTickRotations,\n} from '../../interfaces/enums';\nimport * as Configuration from '../../configuration';\nimport {\n\tcomputeTimeIntervalName,\n\tformatTick,\n\tisTickPrimary,\n} from '../../services/time-series';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { axisBottom, axisLeft, axisRight, axisTop } from 'd3-axis';\n\nexport class Axis extends Component {\n\ttype = 'axes';\n\trenderType = RenderTypes.SVG;\n\n\tmargins: any;\n\ttruncation = {\n\t\t[AxisPositions.LEFT]: false,\n\t\t[AxisPositions.RIGHT]: false,\n\t\t[AxisPositions.TOP]: false,\n\t\t[AxisPositions.BOTTOM]: false,\n\t};\n\n\tscale: any;\n\tscaleType: ScaleTypes;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tif (configs) {\n\t\t\tthis.configs = configs;\n\t\t}\n\n\t\tthis.margins = this.configs.margins;\n\t}\n\n\trender(animate = true) {\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst options = this.getOptions();\n\t\tconst isAxisVisible = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'axes',\n\t\t\taxisPosition,\n\t\t\t'visible'\n\t\t);\n\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Add axis into the parent\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\t\tlet startPosition, endPosition;\n\t\tif (\n\t\t\taxisPosition === AxisPositions.BOTTOM ||\n\t\t\taxisPosition === AxisPositions.TOP\n\t\t) {\n\t\t\tstartPosition = this.configs.axes[AxisPositions.LEFT]\n\t\t\t\t? this.margins.left\n\t\t\t\t: 0;\n\t\t\tendPosition = this.configs.axes[AxisPositions.RIGHT]\n\t\t\t\t? width - this.margins.right\n\t\t\t\t: width;\n\t\t} else {\n\t\t\tstartPosition = height - this.margins.bottom;\n\t\t\tendPosition = this.margins.top;\n\t\t}\n\n\t\t// Grab the scale off of the Scales service\n\t\tconst scale = this.services.cartesianScales.getScaleByPosition(\n\t\t\taxisPosition\n\t\t);\n\n\t\tif (\n\t\t\tthis.scaleType === ScaleTypes.LABELS ||\n\t\t\tthis.scaleType === ScaleTypes.LABELS_RATIO\n\t\t) {\n\t\t\tscale.rangeRound([startPosition, endPosition]);\n\t\t} else {\n\t\t\tscale.range([startPosition, endPosition]);\n\t\t}\n\n\t\t// Identify the corresponding d3 axis function\n\t\tlet axisFunction;\n\t\tswitch (axisPosition) {\n\t\t\tcase AxisPositions.LEFT:\n\t\t\t\taxisFunction = axisLeft;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\taxisFunction = axisBottom;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\taxisFunction = axisRight;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.TOP:\n\t\t\t\taxisFunction = axisTop;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcontainer.attr('aria-label', `${axisPosition} axis`);\n\t\tconst axisRefExists = !container.select(`g.ticks`).empty();\n\t\tlet axisRef = DOMUtils.appendOrSelect(container, `g.ticks`);\n\t\tif (!axisRefExists) {\n\t\t\taxisRef.attr('role', `${Roles.GRAPHICS_OBJECT} ${Roles.GROUP}`);\n\t\t\taxisRef.attr('aria-label', `${axisPosition} ticks`);\n\t\t}\n\n\t\t// We draw the invisible axis because of the async nature of d3 transitions\n\t\t// To be able to tell the final width & height of the axis when initiaing the transition\n\t\t// The invisible axis is updated instantly and without a transition\n\t\tconst invisibleAxisRef = DOMUtils.appendOrSelect(\n\t\t\tcontainer,\n\t\t\t`g.ticks.invisible`\n\t\t)\n\t\t\t.style('opacity', '0')\n\t\t\t.style('pointer-events', 'none')\n\t\t\t.attr('aria-hidden', true)\n\t\t\t.attr('aria-label', `invisible ${axisPosition} ticks`);\n\n\t\tconst axisOptions = Tools.getProperty(options, 'axes', axisPosition);\n\t\tconst isTimeScaleType =\n\t\t\tthis.scaleType === ScaleTypes.TIME ||\n\t\t\taxisOptions.scaleType === ScaleTypes.TIME;\n\t\tconst isVerticalAxis =\n\t\t\taxisPosition === AxisPositions.LEFT ||\n\t\t\taxisPosition === AxisPositions.RIGHT;\n\n\t\t// if zoomDomain is available, scale type is time, and axis position isBOTTOM or TOP\n\t\t// update scale domain to zoomDomain.\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain && isTimeScaleType && !isVerticalAxis) {\n\t\t\tscale.domain(zoomDomain);\n\t\t}\n\n\t\tif (!isAxisVisible) {\n\t\t\taxisRef.attr('aria-hidden', true);\n\t\t\treturn;\n\t\t}\n\n\t\tconst axisScaleType = Tools.getProperty(axisOptions, 'scaleType');\n\t\tconst isDataLoading = Tools.getProperty(options, 'data', 'loading');\n\t\tconst numberOfTicksProvided = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'number'\n\t\t);\n\n\t\t// user can provide custom ticks to be displayed\n\t\t// ticks need to be in the domain of the axis data\n\t\tconst userProvidedTickValues = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'values'\n\t\t);\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\tconst isNumberOfTicksProvided = numberOfTicksProvided !== null;\n\t\tconst timeScaleOptions = Tools.getProperty(options, 'timeScale');\n\n\t\t// Append to DOM a fake tick to get the right computed font height\n\t\tconst fakeTick = DOMUtils.appendOrSelect(invisibleAxisRef, `g.tick`);\n\t\tconst fakeTickText = DOMUtils.appendOrSelect(fakeTick, `text`).text(\n\t\t\t'0'\n\t\t);\n\t\tconst tickHeight = DOMUtils.getSVGElementSize(fakeTickText.node(), {\n\t\t\tuseBBox: true,\n\t\t}).height;\n\t\tfakeTick.remove();\n\n\t\tconst scaleType =\n\t\t\tthis.scaleType || axisOptions.scaleType || ScaleTypes.LINEAR;\n\n\t\t// Initialize axis object\n\t\tconst axis = axisFunction(scale).tickSizeOuter(0);\n\n\t\tif (scale.ticks) {\n\t\t\tlet numberOfTicks;\n\n\t\t\tif (isNumberOfTicksProvided) {\n\t\t\t\tnumberOfTicks = numberOfTicksProvided;\n\t\t\t} else {\n\t\t\t\tnumberOfTicks = Configuration.axis.ticks.number;\n\t\t\t\tif (isVerticalAxis) {\n\t\t\t\t\t// Set how many ticks based on height\n\t\t\t\t\tnumberOfTicks = this.getNumberOfFittingTicks(\n\t\t\t\t\t\theight,\n\t\t\t\t\t\ttickHeight,\n\t\t\t\t\t\tConfiguration.axis.ticks.verticalSpaceRatio\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// scale continuous\n\t\t\t// remove 0 ticks for skeleton\n\t\t\tif (scale.ticks().length === 1 && scale.ticks()[0] === 0) {\n\t\t\t\tnumberOfTicks = 0;\n\t\t\t}\n\n\t\t\taxis.ticks(numberOfTicks);\n\n\t\t\tif (isTimeScaleType) {\n\t\t\t\tif (!scale.ticks(numberOfTicks).length) {\n\t\t\t\t\taxis.tickValues([]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addSpaceOnEdges = Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'timeScale',\n\t\t\t\t\t\t'addSpaceOnEdges'\n\t\t\t\t\t);\n\n\t\t\t\t\tconst customDomain = Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\taxisPosition,\n\t\t\t\t\t\t'domain'\n\t\t\t\t\t);\n\n\t\t\t\t\tlet tickValues;\n\t\t\t\t\t// scale.nice() will change scale domain which causes extra space near chart edge\n\t\t\t\t\t// so use another scale instance to avoid impacts to original scale\n\t\t\t\t\tconst tempScale = scale.copy();\n\t\t\t\t\tif (addSpaceOnEdges && !customDomain) {\n\t\t\t\t\t\ttempScale.nice(numberOfTicks);\n\t\t\t\t\t}\n\t\t\t\t\ttickValues = tempScale.ticks(numberOfTicks);\n\n\t\t\t\t\t// Remove labels on the edges\n\t\t\t\t\t// If there are more than 2 labels to show\n\t\t\t\t\tif (\n\t\t\t\t\t\taddSpaceOnEdges &&\n\t\t\t\t\t\ttickValues.length > 2 &&\n\t\t\t\t\t\t!customDomain\n\t\t\t\t\t) {\n\t\t\t\t\t\ttickValues.splice(tickValues.length - 1, 1);\n\t\t\t\t\t\ttickValues.splice(0, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\taxis.tickValues(tickValues);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// create the right ticks formatter\n\t\tlet formatter;\n\t\tconst userProvidedFormatter = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'formatter'\n\t\t);\n\t\tif (isTimeScaleType) {\n\t\t\tconst timeInterval = computeTimeIntervalName(axis.tickValues());\n\t\t\tif (userProvidedFormatter === null) {\n\t\t\t\tformatter = (t: number, i: number) =>\n\t\t\t\t\tformatTick(\n\t\t\t\t\t\tt,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\t\ttimeInterval,\n\t\t\t\t\t\ttimeScaleOptions\n\t\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tformatter = (t: number, i: number) => {\n\t\t\t\t\tconst defaultFormattedValue = formatTick(\n\t\t\t\t\t\tt,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\t\ttimeInterval,\n\t\t\t\t\t\ttimeScaleOptions\n\t\t\t\t\t);\n\t\t\t\t\treturn userProvidedFormatter(t, i, defaultFormattedValue);\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tif (userProvidedFormatter === null) {\n\t\t\t\tif (scaleType === ScaleTypes.LINEAR) {\n\t\t\t\t\tformatter = (t) => t.toLocaleString();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tformatter = userProvidedFormatter;\n\t\t\t}\n\t\t}\n\n\t\t// Set ticks formatter\n\t\taxis.tickFormat(formatter);\n\n\t\t// prioritize using a custom array of values rather than number of ticks\n\t\t// if both are provided. custom tick values need to be within the domain of the scale\n\t\tconst [\n\t\t\tlowerBound,\n\t\t\tupperBound,\n\t\t] = this.services.cartesianScales\n\t\t\t.getScaleByPosition(axisPosition)\n\t\t\t.domain();\n\t\tlet validTicks;\n\t\tif (userProvidedTickValues) {\n\t\t\tif (isTimeScaleType) {\n\t\t\t\t// sanitize user-provided tick values\n\t\t\t\tuserProvidedTickValues.forEach((userProvidedTickValue, i) => {\n\t\t\t\t\tif (userProvidedTickValue.getTime === undefined) {\n\t\t\t\t\t\tuserProvidedTickValues[i] = new Date(\n\t\t\t\t\t\t\tuserProvidedTickValue\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// check the supplied ticks are within the time domain\n\t\t\t\tvalidTicks = userProvidedTickValues.filter((tick) => {\n\t\t\t\t\tconst tickTimestamp = tick.getTime();\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttickTimestamp >= new Date(lowerBound).getTime() &&\n\t\t\t\t\t\ttickTimestamp <= new Date(upperBound).getTime()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t} else if (axisScaleType === ScaleTypes.LABELS) {\n\t\t\t\tconst discreteDomain = this.services.cartesianScales\n\t\t\t\t\t.getScaleByPosition(axisPosition)\n\t\t\t\t\t.domain();\n\t\t\t\tvalidTicks = userProvidedTickValues.filter((tick) =>\n\t\t\t\t\tdiscreteDomain.includes(tick)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// continuous scales\n\t\t\t\tvalidTicks = userProvidedTickValues.filter(\n\t\t\t\t\t(tick) => tick >= lowerBound && tick <= upperBound\n\t\t\t\t);\n\t\t\t}\n\n\t\t\taxis.tickValues(validTicks);\n\t\t}\n\n\t\t// Position and transition the axis\n\t\tswitch (axisPosition) {\n\t\t\tcase AxisPositions.LEFT:\n\t\t\t\taxisRef.attr('transform', `translate(${this.margins.left}, 0)`);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\taxisRef.attr(\n\t\t\t\t\t'transform',\n\t\t\t\t\t`translate(0, ${height - this.margins.bottom})`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\taxisRef.attr(\n\t\t\t\t\t'transform',\n\t\t\t\t\t`translate(${width - this.margins.right}, 0)`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.TOP:\n\t\t\t\taxisRef.attr('transform', `translate(0, ${this.margins.top})`);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Position the axis title\n\t\t// check that data exists, if they don't, doesn't show the title axis\n\t\tconst isDataEmpty = this.model.isDataEmpty();\n\t\tif (axisOptions.title) {\n\t\t\tconst axisTitleRef = DOMUtils.appendOrSelect(\n\t\t\t\tcontainer,\n\t\t\t\t`text.axis-title`\n\t\t\t).html(isDataEmpty || isDataLoading ? '' : axisOptions.title);\n\n\t\t\t// vertical axes can have override for title orientation\n\t\t\tconst titleOrientation = Tools.getProperty(\n\t\t\t\taxisOptions,\n\t\t\t\t'titleOrientation'\n\t\t\t);\n\t\t\tswitch (axisPosition) {\n\t\t\t\tcase AxisPositions.LEFT:\n\t\t\t\t\tif (titleOrientation === AxisTitleOrientations.RIGHT) {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(90)')\n\t\t\t\t\t\t\t.attr('y', 0)\n\t\t\t\t\t\t\t.attr('x', scale.range()[0] / 2)\n\t\t\t\t\t\t\t.attr('dy', '-0.5em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t} else {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(-90)')\n\t\t\t\t\t\t\t.attr('y', 0)\n\t\t\t\t\t\t\t.attr('x', -(scale.range()[0] / 2))\n\t\t\t\t\t\t\t.attr('dy', '0.75em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${\n\t\t\t\t\t\t\t\tthis.margins.left / 2 + scale.range()[1] / 2\n\t\t\t\t\t\t\t}, ${height + 4})`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\t\tif (titleOrientation === AxisTitleOrientations.LEFT) {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(-90)')\n\t\t\t\t\t\t\t.attr('y', width)\n\t\t\t\t\t\t\t.attr('x', -(scale.range()[0] / 2))\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t} else {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(90)')\n\t\t\t\t\t\t\t.attr('y', -width)\n\t\t\t\t\t\t\t.attr('x', scale.range()[0] / 2)\n\t\t\t\t\t\t\t.attr('dy', '0.75em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.TOP:\n\t\t\t\t\tconst { height: titleHeight } = DOMUtils.getSVGElementSize(\n\t\t\t\t\t\taxisTitleRef,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${\n\t\t\t\t\t\t\t\tthis.margins.left / 2 + scale.range()[1] / 2\n\t\t\t\t\t\t\t}, ${titleHeight / 2})`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Apply new axis to the axis element\n\t\tif (isTimeScaleType) {\n\t\t\tconst timeInterval = computeTimeIntervalName(axis.tickValues());\n\t\t\tconst showDayName = timeScaleOptions.showDayName;\n\t\t\tconst axisRefSelection = axisRef;\n\n\t\t\tif (animate) {\n\t\t\t\taxisRef = axisRef.transition().call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'axis-update',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\taxisRef = axisRef.call(axis);\n\n\t\t\t// Manipulate tick labels to make bold those that are in long format\n\t\t\tconst ticks = axisRefSelection\n\t\t\t\t.selectAll('.tick')\n\t\t\t\t.data(axis.tickValues(), scale)\n\t\t\t\t.order()\n\t\t\t\t.select('text');\n\t\t\tticks.style('font-weight', (tick: number, i: number) => {\n\t\t\t\treturn isTickPrimary(\n\t\t\t\t\ttick,\n\t\t\t\t\ti,\n\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\ttimeInterval,\n\t\t\t\t\tshowDayName\n\t\t\t\t)\n\t\t\t\t\t? 'bold'\n\t\t\t\t\t: 'normal';\n\t\t\t});\n\t\t} else {\n\t\t\tif (!animate || !axisRefExists) {\n\t\t\t\taxisRef = axisRef.call(axis);\n\t\t\t} else {\n\t\t\t\taxisRef = axisRef\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'axis-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.call(axis);\n\t\t\t}\n\t\t}\n\n\t\tinvisibleAxisRef.call(axis);\n\n\t\tif (\n\t\t\taxisPosition === AxisPositions.BOTTOM ||\n\t\t\taxisPosition === AxisPositions.TOP\n\t\t) {\n\t\t\tlet shouldRotateTicks = false;\n\t\t\t// user could decide if tick rotation is required during zoom domain changing\n\t\t\tconst tickRotation = Tools.getProperty(\n\t\t\t\taxisOptions,\n\t\t\t\t'ticks',\n\t\t\t\t'rotation'\n\t\t\t);\n\n\t\t\tif (tickRotation === TickRotations.ALWAYS) {\n\t\t\t\tshouldRotateTicks = true;\n\t\t\t} else if (tickRotation === TickRotations.NEVER) {\n\t\t\t\tshouldRotateTicks = false;\n\t\t\t} else if (!tickRotation || tickRotation === TickRotations.AUTO) {\n\t\t\t\t// if the option is not set or set to AUTO\n\n\t\t\t\t// depending on if tick rotation is necessary by calculating space\n\t\t\t\t// If we're dealing with a discrete scale type\n\t\t\t\t// We're able to grab the spacing between the ticks\n\t\t\t\tif (scale.step) {\n\t\t\t\t\tconst textNodes = invisibleAxisRef\n\t\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t\t.nodes();\n\n\t\t\t\t\t// If any ticks are any larger than the scale step size\n\t\t\t\t\tshouldRotateTicks = textNodes.some(\n\t\t\t\t\t\t(textNode) =>\n\t\t\t\t\t\t\tDOMUtils.getSVGElementSize(textNode, {\n\t\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t\t}).width >= scale.step()\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tshouldRotateTicks = false;\n\n\t\t\t\t\tconst mockTextPiece = invisibleAxisRef\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.text('A');\n\n\t\t\t\t\tconst averageLetterWidth = DOMUtils.getSVGElementSize(\n\t\t\t\t\t\tmockTextPiece.node(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t).width;\n\n\t\t\t\t\tlet lastStartPosition;\n\n\t\t\t\t\t// Find out whether any text nodes roughly collide\n\t\t\t\t\tinvisibleAxisRef.selectAll('g.tick').each(function () {\n\t\t\t\t\t\tconst selection = select(this);\n\t\t\t\t\t\tconst xTransformation = parseFloat(\n\t\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\t\tTools.getTranslationValues(this),\n\t\t\t\t\t\t\t\t'tx'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\txTransformation !== null &&\n\t\t\t\t\t\t\tlastStartPosition +\n\t\t\t\t\t\t\t\tselection.text().length *\n\t\t\t\t\t\t\t\t\taverageLetterWidth *\n\t\t\t\t\t\t\t\t\t0.8 >=\n\t\t\t\t\t\t\t\txTransformation\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tshouldRotateTicks = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastStartPosition = xTransformation;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Cleanup mock text piece\n\t\t\t\t\tmockTextPiece.remove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (shouldRotateTicks) {\n\t\t\t\tif (!isNumberOfTicksProvided) {\n\t\t\t\t\taxis.ticks(\n\t\t\t\t\t\tthis.getNumberOfFittingTicks(\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\ttickHeight,\n\t\t\t\t\t\t\tConfiguration.axis.ticks.horizontalSpaceRatio\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tinvisibleAxisRef.call(axis);\n\t\t\t\t\taxisRef.call(axis);\n\t\t\t\t}\n\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks g.tick text')\n\t\t\t\t\t.attr('transform', `rotate(-45)`)\n\t\t\t\t\t.style(\n\t\t\t\t\t\t'text-anchor',\n\t\t\t\t\t\taxisPosition === AxisPositions.TOP ? 'start' : 'end'\n\t\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks g.tick text')\n\t\t\t\t\t.attr('transform', null)\n\t\t\t\t\t.style('text-anchor', null);\n\t\t\t}\n\t\t}\n\n\t\t// we don't need to show axes on empty state and on skeleton state\n\t\t// because the Skeleton component draws them\n\t\tif (isDataLoading) {\n\t\t\tcontainer.attr('opacity', 0);\n\t\t} else {\n\t\t\tcontainer.attr('opacity', 1);\n\t\t}\n\n\t\taxisRef.selectAll('g.tick').attr('aria-label', (d) => d);\n\n\t\tinvisibleAxisRef.selectAll('g.tick').attr('aria-label', (d) => d);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (\n\t\t\ttruncationType !== TruncationTypes.NONE &&\n\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t!userProvidedTickValues\n\t\t) {\n\t\t\tconst axisTickLabels = this.services.cartesianScales.getScaleDomain(\n\t\t\t\taxisPosition\n\t\t\t);\n\t\t\tif (axisTickLabels.length > 0) {\n\t\t\t\tconst tick_html = svg\n\t\t\t\t\t.select(`g.axis.${axisPosition} g.ticks g.tick`)\n\t\t\t\t\t.html();\n\n\t\t\t\tcontainer.selectAll('g.ticks g.tick').html(tick_html);\n\n\t\t\t\tconst self = this;\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t.data(axisTickLabels)\n\t\t\t\t\t.text(function (d) {\n\t\t\t\t\t\tif (d.length > truncationThreshold) {\n\t\t\t\t\t\t\tself.truncation[axisPosition] = true;\n\t\t\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tthis.getInvisibleAxisRef()\n\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t.data(axisTickLabels)\n\t\t\t\t\t.text(function (d) {\n\t\t\t\t\t\tif (d.length > truncationThreshold) {\n\t\t\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks')\n\t\t\t\t\t.html(this.getInvisibleAxisRef().html());\n\n\t\t\t\tcontainer.selectAll('g.tick text').data(axisTickLabels);\n\t\t\t}\n\t\t}\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\taddEventListeners() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\t\tconst options = this.getOptions();\n\t\tconst axisOptions = Tools.getProperty(options, 'axes', axisPosition);\n\t\tconst axisScaleType = Tools.getProperty(axisOptions, 'scaleType');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst self = this;\n\t\tcontainer\n\t\t\t.selectAll('g.tick text')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Axis.LABEL_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t\t\tdatum.length > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\t\tcontent: datum,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Axis.LABEL_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t\t\tdatum.length > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Axis.LABEL_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Axis.LABEL_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tif (axisScaleType === ScaleTypes.LABELS) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tgetInvisibleAxisRef() {\n\t\tconst { position: axisPosition } = this.configs;\n\n\t\treturn this.getComponentContainer().select(\n\t\t\t`g.axis.${axisPosition} g.ticks.invisible`\n\t\t);\n\t}\n\n\tgetTitleRef() {\n\t\tconst { position: axisPosition } = this.configs;\n\n\t\treturn this.getComponentContainer().select(\n\t\t\t`g.axis.${axisPosition} text.axis-title`\n\t\t);\n\t}\n\n\tgetNumberOfFittingTicks(size, tickSize, spaceRatio) {\n\t\tconst numberOfTicksFit = Math.floor(size / (tickSize * spaceRatio));\n\t\treturn Tools.clamp(\n\t\t\tnumberOfTicksFit,\n\t\t\t2,\n\t\t\tConfiguration.axis.ticks.number\n\t\t);\n\t}\n\n\tdestroy() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\n\t\t// Remove event listeners\n\t\tcontainer\n\t\t\t.selectAll('g.tick text')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"axis.js","sourceRoot":"","sources":["axis.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tAxisPositions,\n\tEvents,\n\tScaleTypes,\n\tRoles,\n\tTruncationTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport { ChartModel } from '../../model/model';\nimport { DOMUtils } from '../../services';\nimport {\n\tAxisTitleOrientations,\n\tRenderTypes,\n\tTickRotations,\n} from '../../interfaces/enums';\nimport * as Configuration from '../../configuration';\nimport {\n\tcomputeTimeIntervalName,\n\tformatTick,\n\tisTickPrimary,\n} from '../../services/time-series';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { axisBottom, axisLeft, axisRight, axisTop } from 'd3-axis';\n\nexport class Axis extends Component {\n\ttype = 'axes';\n\trenderType = RenderTypes.SVG;\n\n\tmargins: any;\n\ttruncation = {\n\t\t[AxisPositions.LEFT]: false,\n\t\t[AxisPositions.RIGHT]: false,\n\t\t[AxisPositions.TOP]: false,\n\t\t[AxisPositions.BOTTOM]: false,\n\t};\n\n\tscale: any;\n\tscaleType: ScaleTypes;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tif (configs) {\n\t\t\tthis.configs = configs;\n\t\t}\n\n\t\tthis.margins = this.configs.margins;\n\t}\n\n\trender(animate = true) {\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst options = this.getOptions();\n\t\tconst isAxisVisible = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'axes',\n\t\t\taxisPosition,\n\t\t\t'visible'\n\t\t);\n\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Add axis into the parent\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\t\tlet startPosition, endPosition;\n\t\tif (\n\t\t\taxisPosition === AxisPositions.BOTTOM ||\n\t\t\taxisPosition === AxisPositions.TOP\n\t\t) {\n\t\t\tstartPosition = this.configs.axes[AxisPositions.LEFT]\n\t\t\t\t? this.margins.left\n\t\t\t\t: 0;\n\t\t\tendPosition = this.configs.axes[AxisPositions.RIGHT]\n\t\t\t\t? width - this.margins.right\n\t\t\t\t: width;\n\t\t} else {\n\t\t\tstartPosition = height - this.margins.bottom;\n\t\t\tendPosition = this.margins.top;\n\t\t}\n\n\t\t// Grab the scale off of the Scales service\n\t\tconst scale = this.services.cartesianScales.getScaleByPosition(\n\t\t\taxisPosition\n\t\t);\n\n\t\tif (\n\t\t\tthis.scaleType === ScaleTypes.LABELS ||\n\t\t\tthis.scaleType === ScaleTypes.LABELS_RATIO\n\t\t) {\n\t\t\tscale.rangeRound([startPosition, endPosition]);\n\t\t} else {\n\t\t\tscale.range([startPosition, endPosition]);\n\t\t}\n\n\t\t// Identify the corresponding d3 axis function\n\t\tlet axisFunction;\n\t\tswitch (axisPosition) {\n\t\t\tcase AxisPositions.LEFT:\n\t\t\t\taxisFunction = axisLeft;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\taxisFunction = axisBottom;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\taxisFunction = axisRight;\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.TOP:\n\t\t\t\taxisFunction = axisTop;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tcontainer.attr('aria-label', `${axisPosition} axis`);\n\t\tconst axisRefExists = !container.select(`g.ticks`).empty();\n\t\tlet axisRef = DOMUtils.appendOrSelect(container, `g.ticks`);\n\t\tif (!axisRefExists) {\n\t\t\taxisRef.attr('role', `${Roles.GRAPHICS_OBJECT} ${Roles.GROUP}`);\n\t\t\taxisRef.attr('aria-label', `${axisPosition} ticks`);\n\t\t}\n\n\t\t// We draw the invisible axis because of the async nature of d3 transitions\n\t\t// To be able to tell the final width & height of the axis when initiaing the transition\n\t\t// The invisible axis is updated instantly and without a transition\n\t\tconst invisibleAxisRef = DOMUtils.appendOrSelect(\n\t\t\tcontainer,\n\t\t\t`g.ticks.invisible`\n\t\t)\n\t\t\t.style('opacity', '0')\n\t\t\t.style('pointer-events', 'none')\n\t\t\t.attr('aria-hidden', true)\n\t\t\t.attr('aria-label', `invisible ${axisPosition} ticks`);\n\n\t\tconst axisOptions = Tools.getProperty(options, 'axes', axisPosition);\n\t\tconst isTimeScaleType =\n\t\t\tthis.scaleType === ScaleTypes.TIME ||\n\t\t\taxisOptions.scaleType === ScaleTypes.TIME;\n\t\tconst isVerticalAxis =\n\t\t\taxisPosition === AxisPositions.LEFT ||\n\t\t\taxisPosition === AxisPositions.RIGHT;\n\n\t\t// if zoomDomain is available, scale type is time, and axis position isBOTTOM or TOP\n\t\t// update scale domain to zoomDomain.\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain && isTimeScaleType && !isVerticalAxis) {\n\t\t\tscale.domain(zoomDomain);\n\t\t}\n\n\t\tif (!isAxisVisible) {\n\t\t\taxisRef.attr('aria-hidden', true);\n\t\t\treturn;\n\t\t}\n\n\t\tconst axisScaleType = Tools.getProperty(axisOptions, 'scaleType');\n\t\tconst isDataLoading = Tools.getProperty(options, 'data', 'loading');\n\t\tconst numberOfTicksProvided = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'number'\n\t\t);\n\n\t\t// user can provide custom ticks to be displayed\n\t\t// ticks need to be in the domain of the axis data\n\t\tconst userProvidedTickValues = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'values'\n\t\t);\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\tconst isNumberOfTicksProvided = numberOfTicksProvided !== null;\n\t\tconst timeScaleOptions = Tools.getProperty(options, 'timeScale');\n\n\t\t// Append to DOM a fake tick to get the right computed font height\n\t\tconst fakeTick = DOMUtils.appendOrSelect(invisibleAxisRef, `g.tick`);\n\t\tconst fakeTickText = DOMUtils.appendOrSelect(fakeTick, `text`).text(\n\t\t\t'0'\n\t\t);\n\t\tconst tickHeight = DOMUtils.getSVGElementSize(fakeTickText.node(), {\n\t\t\tuseBBox: true,\n\t\t}).height;\n\t\tfakeTick.remove();\n\n\t\tconst scaleType =\n\t\t\tthis.scaleType || axisOptions.scaleType || ScaleTypes.LINEAR;\n\n\t\t// Initialize axis object\n\t\tconst axis = axisFunction(scale).tickSizeOuter(0);\n\n\t\tif (scale.ticks) {\n\t\t\tlet numberOfTicks;\n\n\t\t\tif (isNumberOfTicksProvided) {\n\t\t\t\tnumberOfTicks = numberOfTicksProvided;\n\t\t\t} else {\n\t\t\t\tnumberOfTicks = Configuration.axis.ticks.number;\n\t\t\t\tif (isVerticalAxis) {\n\t\t\t\t\t// Set how many ticks based on height\n\t\t\t\t\tnumberOfTicks = this.getNumberOfFittingTicks(\n\t\t\t\t\t\theight,\n\t\t\t\t\t\ttickHeight,\n\t\t\t\t\t\tConfiguration.axis.ticks.verticalSpaceRatio\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// scale continuous\n\t\t\t// remove 0 ticks for skeleton\n\t\t\tif (scale.ticks().length === 1 && scale.ticks()[0] === 0) {\n\t\t\t\tnumberOfTicks = 0;\n\t\t\t}\n\n\t\t\taxis.ticks(numberOfTicks);\n\n\t\t\tif (isTimeScaleType) {\n\t\t\t\tif (!scale.ticks(numberOfTicks).length) {\n\t\t\t\t\taxis.tickValues([]);\n\t\t\t\t} else {\n\t\t\t\t\tconst addSpaceOnEdges = Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'timeScale',\n\t\t\t\t\t\t'addSpaceOnEdges'\n\t\t\t\t\t);\n\n\t\t\t\t\tconst customDomain = Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\taxisPosition,\n\t\t\t\t\t\t'domain'\n\t\t\t\t\t);\n\n\t\t\t\t\tlet tickValues;\n\t\t\t\t\t// scale.nice() will change scale domain which causes extra space near chart edge\n\t\t\t\t\t// so use another scale instance to avoid impacts to original scale\n\t\t\t\t\tconst tempScale = scale.copy();\n\t\t\t\t\tif (addSpaceOnEdges && !customDomain) {\n\t\t\t\t\t\ttempScale.nice(numberOfTicks);\n\t\t\t\t\t}\n\t\t\t\t\ttickValues = tempScale.ticks(numberOfTicks);\n\n\t\t\t\t\t// Remove labels on the edges\n\t\t\t\t\t// If there are more than 2 labels to show\n\t\t\t\t\tif (\n\t\t\t\t\t\taddSpaceOnEdges &&\n\t\t\t\t\t\ttickValues.length > 2 &&\n\t\t\t\t\t\t!customDomain\n\t\t\t\t\t) {\n\t\t\t\t\t\ttickValues.splice(tickValues.length - 1, 1);\n\t\t\t\t\t\ttickValues.splice(0, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\taxis.tickValues(tickValues);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// create the right ticks formatter\n\t\tlet formatter;\n\t\tconst userProvidedFormatter = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'ticks',\n\t\t\t'formatter'\n\t\t);\n\t\tif (isTimeScaleType) {\n\t\t\tconst timeInterval = computeTimeIntervalName(axis.tickValues());\n\t\t\tif (userProvidedFormatter === null) {\n\t\t\t\tformatter = (t: number, i: number) =>\n\t\t\t\t\tformatTick(\n\t\t\t\t\t\tt,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\t\ttimeInterval,\n\t\t\t\t\t\ttimeScaleOptions\n\t\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tformatter = (t: number, i: number) => {\n\t\t\t\t\tconst defaultFormattedValue = formatTick(\n\t\t\t\t\t\tt,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\t\ttimeInterval,\n\t\t\t\t\t\ttimeScaleOptions\n\t\t\t\t\t);\n\t\t\t\t\treturn userProvidedFormatter(t, i, defaultFormattedValue);\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tif (userProvidedFormatter === null) {\n\t\t\t\tif (scaleType === ScaleTypes.LINEAR) {\n\t\t\t\t\tformatter = (t) => t.toLocaleString();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tformatter = userProvidedFormatter;\n\t\t\t}\n\t\t}\n\n\t\t// Set ticks formatter\n\t\taxis.tickFormat(formatter);\n\n\t\t// prioritize using a custom array of values rather than number of ticks\n\t\t// if both are provided. custom tick values need to be within the domain of the scale\n\t\tconst [\n\t\t\tlowerBound,\n\t\t\tupperBound,\n\t\t] = this.services.cartesianScales\n\t\t\t.getScaleByPosition(axisPosition)\n\t\t\t.domain();\n\t\tlet validTicks;\n\t\tif (userProvidedTickValues) {\n\t\t\tif (isTimeScaleType) {\n\t\t\t\t// sanitize user-provided tick values\n\t\t\t\tuserProvidedTickValues.forEach((userProvidedTickValue, i) => {\n\t\t\t\t\tif (userProvidedTickValue.getTime === undefined) {\n\t\t\t\t\t\tuserProvidedTickValues[i] = new Date(\n\t\t\t\t\t\t\tuserProvidedTickValue\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// check the supplied ticks are within the time domain\n\t\t\t\tvalidTicks = userProvidedTickValues.filter((tick) => {\n\t\t\t\t\tconst tickTimestamp = tick.getTime();\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttickTimestamp >= new Date(lowerBound).getTime() &&\n\t\t\t\t\t\ttickTimestamp <= new Date(upperBound).getTime()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t} else if (axisScaleType === ScaleTypes.LABELS) {\n\t\t\t\tconst discreteDomain = this.services.cartesianScales\n\t\t\t\t\t.getScaleByPosition(axisPosition)\n\t\t\t\t\t.domain();\n\t\t\t\tvalidTicks = userProvidedTickValues.filter((tick) =>\n\t\t\t\t\tdiscreteDomain.includes(tick)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// continuous scales\n\t\t\t\tvalidTicks = userProvidedTickValues.filter(\n\t\t\t\t\t(tick) => tick >= lowerBound && tick <= upperBound\n\t\t\t\t);\n\t\t\t}\n\n\t\t\taxis.tickValues(validTicks);\n\t\t}\n\n\t\t// Position and transition the axis\n\t\tswitch (axisPosition) {\n\t\t\tcase AxisPositions.LEFT:\n\t\t\t\taxisRef.attr('transform', `translate(${this.margins.left}, 0)`);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\taxisRef.attr(\n\t\t\t\t\t'transform',\n\t\t\t\t\t`translate(0, ${height - this.margins.bottom})`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\taxisRef.attr(\n\t\t\t\t\t'transform',\n\t\t\t\t\t`translate(${width - this.margins.right}, 0)`\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AxisPositions.TOP:\n\t\t\t\taxisRef.attr('transform', `translate(0, ${this.margins.top})`);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Position the axis title\n\t\t// check that data exists, if they don't, doesn't show the title axis\n\t\tconst isDataEmpty = this.model.isDataEmpty();\n\t\tif (axisOptions.title) {\n\t\t\tconst axisTitleRef = DOMUtils.appendOrSelect(\n\t\t\t\tcontainer,\n\t\t\t\t`text.axis-title`\n\t\t\t).html(isDataEmpty || isDataLoading ? '' : axisOptions.title);\n\n\t\t\t// vertical axes can have override for title orientation\n\t\t\tconst titleOrientation = Tools.getProperty(\n\t\t\t\taxisOptions,\n\t\t\t\t'titleOrientation'\n\t\t\t);\n\t\t\tswitch (axisPosition) {\n\t\t\t\tcase AxisPositions.LEFT:\n\t\t\t\t\tif (titleOrientation === AxisTitleOrientations.RIGHT) {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(90)')\n\t\t\t\t\t\t\t.attr('y', 0)\n\t\t\t\t\t\t\t.attr('x', scale.range()[0] / 2)\n\t\t\t\t\t\t\t.attr('dy', '-0.5em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t} else {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(-90)')\n\t\t\t\t\t\t\t.attr('y', 0)\n\t\t\t\t\t\t\t.attr('x', -(scale.range()[0] / 2))\n\t\t\t\t\t\t\t.attr('dy', '0.75em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.BOTTOM:\n\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${\n\t\t\t\t\t\t\t\tthis.margins.left / 2 + scale.range()[1] / 2\n\t\t\t\t\t\t\t}, ${height + 4})`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.RIGHT:\n\t\t\t\t\tif (titleOrientation === AxisTitleOrientations.LEFT) {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(-90)')\n\t\t\t\t\t\t\t.attr('y', width)\n\t\t\t\t\t\t\t.attr('x', -(scale.range()[0] / 2))\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t} else {\n\t\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t\t.attr('transform', 'rotate(90)')\n\t\t\t\t\t\t\t.attr('y', -width)\n\t\t\t\t\t\t\t.attr('x', scale.range()[0] / 2)\n\t\t\t\t\t\t\t.attr('dy', '0.75em')\n\t\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase AxisPositions.TOP:\n\t\t\t\t\tconst { height: titleHeight } = DOMUtils.getSVGElementSize(\n\t\t\t\t\t\taxisTitleRef,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\taxisTitleRef\n\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${\n\t\t\t\t\t\t\t\tthis.margins.left / 2 + scale.range()[1] / 2\n\t\t\t\t\t\t\t}, ${titleHeight / 2})`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('text-anchor', 'middle');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Apply new axis to the axis element\n\t\tif (isTimeScaleType) {\n\t\t\tconst timeInterval = computeTimeIntervalName(axis.tickValues());\n\t\t\tconst showDayName = timeScaleOptions.showDayName;\n\t\t\tconst axisRefSelection = axisRef;\n\n\t\t\tif (animate) {\n\t\t\t\taxisRef = axisRef.transition().call((t) =>\n\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\tname: 'axis-update',\n\t\t\t\t\t\tanimate,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\taxisRef = axisRef.call(axis);\n\n\t\t\t// Manipulate tick labels to make bold those that are in long format\n\t\t\tconst ticks = axisRefSelection\n\t\t\t\t.selectAll('.tick')\n\t\t\t\t.data(axis.tickValues(), scale)\n\t\t\t\t.order()\n\t\t\t\t.select('text');\n\t\t\tticks.style('font-weight', (tick: number, i: number) => {\n\t\t\t\treturn isTickPrimary(\n\t\t\t\t\ttick,\n\t\t\t\t\ti,\n\t\t\t\t\taxis.tickValues(),\n\t\t\t\t\ttimeInterval,\n\t\t\t\t\tshowDayName\n\t\t\t\t)\n\t\t\t\t\t? 'bold'\n\t\t\t\t\t: 'normal';\n\t\t\t});\n\t\t} else {\n\t\t\tif (!animate || !axisRefExists) {\n\t\t\t\taxisRef = axisRef.call(axis);\n\t\t\t} else {\n\t\t\t\taxisRef = axisRef\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'axis-update',\n\t\t\t\t\t\t\tanimate,\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.call(axis);\n\t\t\t}\n\t\t}\n\n\t\tinvisibleAxisRef.call(axis);\n\n\t\tif (\n\t\t\taxisPosition === AxisPositions.BOTTOM ||\n\t\t\taxisPosition === AxisPositions.TOP\n\t\t) {\n\t\t\tlet shouldRotateTicks = false;\n\t\t\t// user could decide if tick rotation is required during zoom domain changing\n\t\t\tconst tickRotation = Tools.getProperty(\n\t\t\t\taxisOptions,\n\t\t\t\t'ticks',\n\t\t\t\t'rotation'\n\t\t\t);\n\n\t\t\tif (tickRotation === TickRotations.ALWAYS) {\n\t\t\t\tshouldRotateTicks = true;\n\t\t\t} else if (tickRotation === TickRotations.NEVER) {\n\t\t\t\tshouldRotateTicks = false;\n\t\t\t} else if (!tickRotation || tickRotation === TickRotations.AUTO) {\n\t\t\t\t// if the option is not set or set to AUTO\n\n\t\t\t\t// depending on if tick rotation is necessary by calculating space\n\t\t\t\t// If we're dealing with a discrete scale type\n\t\t\t\t// We're able to grab the spacing between the ticks\n\t\t\t\tif (scale.step) {\n\t\t\t\t\tconst textNodes = invisibleAxisRef\n\t\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t\t.nodes();\n\n\t\t\t\t\t// If any ticks are any larger than the scale step size\n\t\t\t\t\tshouldRotateTicks = textNodes.some(\n\t\t\t\t\t\t(textNode) =>\n\t\t\t\t\t\t\tDOMUtils.getSVGElementSize(textNode, {\n\t\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t\t}).width >= scale.step()\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tshouldRotateTicks = false;\n\n\t\t\t\t\tconst mockTextPiece = invisibleAxisRef\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.text('A');\n\n\t\t\t\t\tconst averageLetterWidth = DOMUtils.getSVGElementSize(\n\t\t\t\t\t\tmockTextPiece.node(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t).width;\n\n\t\t\t\t\tlet lastStartPosition;\n\n\t\t\t\t\t// Find out whether any text nodes roughly collide\n\t\t\t\t\tinvisibleAxisRef.selectAll('g.tick').each(function () {\n\t\t\t\t\t\tconst selection = select(this);\n\t\t\t\t\t\tconst xTransformation = parseFloat(\n\t\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\t\tTools.getTranslationValues(this),\n\t\t\t\t\t\t\t\t'tx'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\txTransformation !== null &&\n\t\t\t\t\t\t\tlastStartPosition +\n\t\t\t\t\t\t\t\tselection.text().length *\n\t\t\t\t\t\t\t\t\taverageLetterWidth *\n\t\t\t\t\t\t\t\t\t0.8 >=\n\t\t\t\t\t\t\t\txTransformation\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tshouldRotateTicks = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastStartPosition = xTransformation;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Cleanup mock text piece\n\t\t\t\t\tmockTextPiece.remove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (shouldRotateTicks) {\n\t\t\t\tif (!isNumberOfTicksProvided) {\n\t\t\t\t\taxis.ticks(\n\t\t\t\t\t\tthis.getNumberOfFittingTicks(\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\ttickHeight,\n\t\t\t\t\t\t\tConfiguration.axis.ticks.horizontalSpaceRatio\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\tinvisibleAxisRef.call(axis);\n\t\t\t\t\taxisRef.call(axis);\n\t\t\t\t}\n\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks g.tick text')\n\t\t\t\t\t.attr('transform', `rotate(-45)`)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'text-anchor',\n\t\t\t\t\t\taxisPosition === AxisPositions.TOP ? 'start' : 'end'\n\t\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks g.tick text')\n\t\t\t\t\t.attr('transform', null)\n\t\t\t\t\t.attr('text-anchor', null);\n\t\t\t}\n\t\t}\n\n\t\t// we don't need to show axes on empty state and on skeleton state\n\t\t// because the Skeleton component draws them\n\t\tif (isDataLoading) {\n\t\t\tcontainer.attr('opacity', 0);\n\t\t} else {\n\t\t\tcontainer.attr('opacity', 1);\n\t\t}\n\n\t\taxisRef.selectAll('g.tick').attr('aria-label', (d) => d);\n\n\t\tinvisibleAxisRef.selectAll('g.tick').attr('aria-label', (d) => d);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (\n\t\t\ttruncationType !== TruncationTypes.NONE &&\n\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t!userProvidedTickValues\n\t\t) {\n\t\t\tconst axisTickLabels = this.services.cartesianScales.getScaleDomain(\n\t\t\t\taxisPosition\n\t\t\t);\n\t\t\tif (axisTickLabels.length > 0) {\n\t\t\t\tconst tick_html = svg\n\t\t\t\t\t.select(`g.axis.${axisPosition} g.ticks g.tick`)\n\t\t\t\t\t.html();\n\n\t\t\t\tcontainer.selectAll('g.ticks g.tick').html(tick_html);\n\n\t\t\t\tconst self = this;\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t.data(axisTickLabels)\n\t\t\t\t\t.text(function (d) {\n\t\t\t\t\t\tif (d.length > truncationThreshold) {\n\t\t\t\t\t\t\tself.truncation[axisPosition] = true;\n\t\t\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tthis.getInvisibleAxisRef()\n\t\t\t\t\t.selectAll('g.tick text')\n\t\t\t\t\t.data(axisTickLabels)\n\t\t\t\t\t.text(function (d) {\n\t\t\t\t\t\tif (d.length > truncationThreshold) {\n\t\t\t\t\t\t\treturn Tools.truncateLabel(\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\tcontainer\n\t\t\t\t\t.selectAll('g.ticks')\n\t\t\t\t\t.html(this.getInvisibleAxisRef().html());\n\n\t\t\t\tcontainer.selectAll('g.tick text').data(axisTickLabels);\n\t\t\t}\n\t\t}\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\taddEventListeners() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\t\tconst options = this.getOptions();\n\t\tconst axisOptions = Tools.getProperty(options, 'axes', axisPosition);\n\t\tconst axisScaleType = Tools.getProperty(axisOptions, 'scaleType');\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\taxisOptions,\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst self = this;\n\t\tcontainer\n\t\t\t.selectAll('g.tick text')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Axis.LABEL_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t\t\tdatum.length > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\thoveredElement: select(this),\n\t\t\t\t\t\tcontent: datum,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mousemove', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Axis.LABEL_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\taxisScaleType === ScaleTypes.LABELS &&\n\t\t\t\t\tdatum.length > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Axis.LABEL_CLICK, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (event, datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Axis.LABEL_MOUSEOUT, {\n\t\t\t\t\tevent,\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\n\t\t\t\tif (axisScaleType === ScaleTypes.LABELS) {\n\t\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tgetInvisibleAxisRef() {\n\t\tconst { position: axisPosition } = this.configs;\n\n\t\treturn this.getComponentContainer().select(\n\t\t\t`g.axis.${axisPosition} g.ticks.invisible`\n\t\t);\n\t}\n\n\tgetTitleRef() {\n\t\tconst { position: axisPosition } = this.configs;\n\n\t\treturn this.getComponentContainer().select(\n\t\t\t`g.axis.${axisPosition} text.axis-title`\n\t\t);\n\t}\n\n\tgetNumberOfFittingTicks(size, tickSize, spaceRatio) {\n\t\tconst numberOfTicksFit = Math.floor(size / (tickSize * spaceRatio));\n\t\treturn Tools.clamp(\n\t\t\tnumberOfTicksFit,\n\t\t\t2,\n\t\t\tConfiguration.axis.ticks.number\n\t\t);\n\t}\n\n\tdestroy() {\n\t\tconst svg = this.getComponentContainer();\n\t\tconst { position: axisPosition } = this.configs;\n\t\tconst container = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t`g.axis.${axisPosition}`\n\t\t);\n\n\t\t// Remove event listeners\n\t\tcontainer\n\t\t\t.selectAll('g.tick text')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
|
|
@@ -15,7 +15,7 @@ export declare class Tooltip extends Component {
|
|
|
15
15
|
removeTooltipEventListener(): void;
|
|
16
16
|
getItems(e: CustomEvent): any;
|
|
17
17
|
formatItems(items: any): any;
|
|
18
|
-
getTooltipHTML(
|
|
18
|
+
getTooltipHTML(formattedItems: any): string;
|
|
19
19
|
valueFormatter(value: any, label: string): any;
|
|
20
20
|
render(): void;
|
|
21
21
|
positionTooltip(e: CustomEvent): void;
|
|
@@ -37,7 +37,14 @@ var Tooltip = /** @class */ (function (_super) {
|
|
|
37
37
|
_this.positionService = new Position();
|
|
38
38
|
_this.handleShowTooltip = function (e) {
|
|
39
39
|
var data = e.detail.data || e.detail.items;
|
|
40
|
-
var defaultHTML
|
|
40
|
+
var defaultHTML;
|
|
41
|
+
var formattedItems = _this.formatItems(_this.getItems(e));
|
|
42
|
+
if (e.detail.content) {
|
|
43
|
+
defaultHTML = "<div class=\"title-tooltip\"><p>" + e.detail.content + "</p></div>";
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
defaultHTML = _this.getTooltipHTML(formattedItems);
|
|
47
|
+
}
|
|
41
48
|
var tooltipTextContainer = DOMUtils.appendOrSelect(_this.tooltip, 'div.content-box');
|
|
42
49
|
// if there is a provided tooltip HTML function call it
|
|
43
50
|
if (Tools.getProperty(_this.getOptions(), 'tooltip', 'customHTML')) {
|
|
@@ -55,6 +62,18 @@ var Tooltip = /** @class */ (function (_super) {
|
|
|
55
62
|
// Use default tooltip
|
|
56
63
|
tooltipTextContainer.html(defaultHTML);
|
|
57
64
|
}
|
|
65
|
+
// Apply custom background colors
|
|
66
|
+
tooltipTextContainer
|
|
67
|
+
.selectAll('.datapoint-tooltip')
|
|
68
|
+
.each(function (datum, i) {
|
|
69
|
+
var item = formattedItems[i];
|
|
70
|
+
if (formattedItems[i] && formattedItems[i].color) {
|
|
71
|
+
select(this)
|
|
72
|
+
.select('.tooltip-color')
|
|
73
|
+
.attr('class', 'tooltip-color')
|
|
74
|
+
.style('background-color', item.color);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
58
77
|
// Position the tooltip
|
|
59
78
|
_this.positionTooltip(e);
|
|
60
79
|
// Fade in
|
|
@@ -125,31 +144,18 @@ var Tooltip = /** @class */ (function (_super) {
|
|
|
125
144
|
}
|
|
126
145
|
return items;
|
|
127
146
|
};
|
|
128
|
-
Tooltip.prototype.getTooltipHTML = function (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return "<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip " + (item.bold ? 'bold' : '') + "\">\n\t\t\t\t\t\t\t\t" + (item.class ? "<div class=\"tooltip-color " + item.class + "\"></div>" : '') + "\n\t\t\t\t\t\t\t\t" + (item.color
|
|
141
|
-
? '<div style="background-color: ' +
|
|
142
|
-
item.color +
|
|
143
|
-
'" class="tooltip-color"></div>'
|
|
144
|
-
: '') + "\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>" + (item.label || '') + "</p>\n\t\t\t\t\t\t\t\t" + (item.labelIcon ? "<span class=\"label-icon\"/>" + item.labelIcon + "</span>" : '') + "\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t" + (item.value === undefined ||
|
|
145
|
-
item.value === null
|
|
146
|
-
? ''
|
|
147
|
-
: "<p class=\"value\"/>" + item.value + "</p>") + "\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>";
|
|
148
|
-
})
|
|
149
|
-
.join('') +
|
|
150
|
-
"</ul>";
|
|
151
|
-
}
|
|
152
|
-
return defaultHTML;
|
|
147
|
+
Tooltip.prototype.getTooltipHTML = function (formattedItems) {
|
|
148
|
+
return ("<ul class=\"multi-tooltip\">" +
|
|
149
|
+
formattedItems
|
|
150
|
+
.map(function (item) {
|
|
151
|
+
return "<li>\n\t\t\t\t\t<div class=\"datapoint-tooltip" + (item.bold ? ' bold' : '') + "\">\n\t\t\t\t\t\t" + (item.class || item.color
|
|
152
|
+
? "<div class=\"tooltip-color " + item.class + "\"></div>"
|
|
153
|
+
: '') + "\n\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t<p>" + (item.label || '') + "</p>\n\t\t\t\t\t\t" + (item.labelIcon ? "<span class=\"label-icon\"/>" + item.labelIcon + "</span>" : '') + "\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t" + (item.value === undefined || item.value === null
|
|
154
|
+
? ''
|
|
155
|
+
: "<p class=\"value\"/>" + item.value + "</p>") + "\n\t\t\t\t\t</div>\n\t\t\t\t</li>";
|
|
156
|
+
})
|
|
157
|
+
.join('') +
|
|
158
|
+
"</ul>");
|
|
153
159
|
};
|
|
154
160
|
Tooltip.prototype.valueFormatter = function (value, label) {
|
|
155
161
|
var options = this.getOptions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class=\"multi-tooltip\">` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<div class=\"tooltip-color ${item.class}\"></div>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<div style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></div>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.value === undefined ||\n\t\t\t\t\t\t\t\t\titem.value === null\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\ttry {\n\t\t\t// it's a correct ISO format Date string\n\t\t\tif (\n\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(value)\n\t\t\t) {\n\t\t\t\treturn format(Date.parse(value), 'MMM d, yyyy');\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// not a valid ISO format string\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${carbonPrefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null).attr('role', 'tooltip');\n\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events, RenderTypes, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { select, pointer } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\trenderType = RenderTypes.HTML;\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\n\t\tlet defaultHTML;\n\t\tlet formattedItems = this.formatItems(this.getItems(e));\n\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tdefaultHTML = this.getTooltipHTML(formattedItems);\n\t\t}\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Apply custom background colors\n\t\ttooltipTextContainer\n\t\t\t.selectAll('.datapoint-tooltip')\n\t\t\t.each(function (datum, i) {\n\t\t\t\tconst item = formattedItems[i];\n\n\t\t\t\tif (formattedItems[i] && formattedItems[i].color) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('.tooltip-color')\n\t\t\t\t\t\t.attr('class', 'tooltip-color')\n\t\t\t\t\t\t.style('background-color', item.color);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tif (this.tooltip.classed('hidden') === false) {\n\t\t\t\t\tthis.positionTooltip(e);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\t// get width of the label icon if it exists\n\t\t\t\tconst labelIconSize = item.labelIcon ? 12 : 0;\n\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value, item.label)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (\n\t\t\t\t\titem.label &&\n\t\t\t\t\titem.label.length + labelIconSize > truncationThreshold\n\t\t\t\t) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(formattedItems: any) {\n\t\treturn (\n\t\t\t`<ul class=\"multi-tooltip\">` +\n\t\t\tformattedItems\n\t\t\t\t.map(\n\t\t\t\t\t(item) =>\n\t\t\t\t\t\t`<li>\n\t\t\t\t\t<div class=\"datapoint-tooltip${item.bold ? ' bold' : ''}\">\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.class || item.color\n\t\t\t\t\t\t\t\t? `<div class=\"tooltip-color ${item.class}\"></div>`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<div class=\"label\">\n\t\t\t\t\t\t<p>${item.label || ''}</p>\n\t\t\t\t\t\t${item.labelIcon ? `<span class=\"label-icon\"/>${item.labelIcon}</span>` : ''}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${\n\t\t\t\t\t\t\titem.value === undefined || item.value === null\n\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t: `<p class=\"value\"/>${item.value}</p>`\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</li>`\n\t\t\t\t)\n\t\t\t\t.join('') +\n\t\t\t`</ul>`\n\t\t);\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === 'function') {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\ttry {\n\t\t\t// it's a correct ISO format Date string\n\t\t\tif (\n\t\t\t\ttypeof value === 'string' &&\n\t\t\t\t/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test(value)\n\t\t\t) {\n\t\t\t\treturn format(Date.parse(value), 'MMM d, yyyy');\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// not a valid ISO format string\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${carbonPrefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null).attr('role', 'tooltip');\n\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = pointer(\n\t\t\t\tTools.getProperty(e, 'detail', 'event'),\n\t\t\t\tholder\n\t\t\t);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\tconst holderWidth = holder.offsetWidth;\n\t\tconst holderHeight = holder.offsetHeight;\n\n\t\tlet bestPlacementOption;\n\t\tif (mouseRelativePos[0] / holderWidth > 0.9) {\n\t\t\tbestPlacementOption = PLACEMENTS.LEFT;\n\t\t} else if (mouseRelativePos[0] / holderWidth < 0.1) {\n\t\t\tbestPlacementOption = PLACEMENTS.RIGHT;\n\t\t} else {\n\t\t\t// Find out whether tooltip should be shown on the left or right side\n\t\t\tbestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t\t{\n\t\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t\t},\n\t\t\t\ttarget,\n\t\t\t\t[\n\t\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t\t],\n\t\t\t\t() => ({\n\t\t\t\t\twidth: holderWidth,\n\t\t\t\t\theight: holderHeight,\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
|
package/demo/styles.css
CHANGED
|
@@ -23798,7 +23798,7 @@ div.cds--cc--legend.clickable div.legend-item:not(.additional):hover div.checkbo
|
|
|
23798
23798
|
width: auto;
|
|
23799
23799
|
fill: var(--cds-layer-inverse-absolute, #000000);
|
|
23800
23800
|
}
|
|
23801
|
-
.cds--cc--tooltip .content-box .datapoint-tooltip.bold {
|
|
23801
|
+
.cds--cc--tooltip .content-box .datapoint-tooltip.bold div.label p {
|
|
23802
23802
|
font-weight: 600;
|
|
23803
23803
|
}
|
|
23804
23804
|
.cds--cc--tooltip .content-box .datapoint-tooltip p {
|