@carbon/charts 0.41.40 → 0.41.44

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.
@@ -12,9 +12,8 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  import { Tooltip } from './tooltip';
15
- import { AxisPositions, ScaleTypes, ColorClassNameTypes, } from '../../interfaces';
15
+ import { AxisPositions, ColorClassNameTypes } from '../../interfaces';
16
16
  import { Tools } from '../../tools';
17
- import { format } from 'date-fns';
18
17
  var AxisChartsTooltip = /** @class */ (function (_super) {
19
18
  __extends(AxisChartsTooltip, _super);
20
19
  function AxisChartsTooltip() {
@@ -33,7 +32,6 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
33
32
  var cartesianScales = this.services.cartesianScales;
34
33
  var domainAxisOptions = cartesianScales.getDomainAxisOptions();
35
34
  var domainIdentifier = cartesianScales.getDomainIdentifier();
36
- var domainAxisScaleType = cartesianScales.getDomainAxisScaleType();
37
35
  // Generate default tooltip
38
36
  var groupMapsTo = options.data.groupMapsTo;
39
37
  var domainLabel = domainAxisOptions.title;
@@ -48,12 +46,6 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
48
46
  }
49
47
  }
50
48
  var domainValue = data[0][domainIdentifier];
51
- if (domainAxisScaleType === ScaleTypes.TIME) {
52
- domainValue = format(new Date(data[0][domainIdentifier]), 'MMM d, yyyy');
53
- }
54
- else if (domainAxisScaleType === ScaleTypes.LINEAR) {
55
- domainValue = domainValue.toLocaleString();
56
- }
57
49
  var items;
58
50
  if (data.length === 1) {
59
51
  var datum = data[0];
@@ -96,13 +88,13 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
96
88
  items = [
97
89
  {
98
90
  label: domainLabel,
99
- value: this.valueFormatter(domainValue),
91
+ value: domainValue,
100
92
  },
101
93
  ];
102
94
  items = items.concat(data
103
95
  .map(function (datum) { return ({
104
96
  label: datum[groupMapsTo],
105
- value: _this.valueFormatter(datum[cartesianScales.getRangeIdentifier(datum)]),
97
+ value: datum[cartesianScales.getRangeIdentifier(datum)],
106
98
  color: _this.model.getFillColor(datum[groupMapsTo]),
107
99
  class: _this.model.getColorClassName({
108
100
  classNameTypes: [ColorClassNameTypes.TOOLTIP],
@@ -117,9 +109,9 @@ var AxisChartsTooltip = /** @class */ (function (_super) {
117
109
  var rangeIdentifier_1 = cartesianScales.getRangeIdentifier();
118
110
  items.push({
119
111
  label: options.tooltip.totalLabel || 'Total',
120
- value: this.valueFormatter(data.reduce(function (accumulator, datum) {
112
+ value: data.reduce(function (accumulator, datum) {
121
113
  return accumulator + datum[rangeIdentifier_1];
122
- }, 0)),
114
+ }, 0),
123
115
  bold: true,
124
116
  });
125
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tooltip } from './tooltip';\nimport {\n\tAxisPositions,\n\tScaleTypes,\n\tColorClassNameTypes,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\nimport { format } from 'date-fns';\n\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainAxisOptions = cartesianScales.getDomainAxisOptions();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\tconst domainAxisScaleType = cartesianScales.getDomainAxisScaleType();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tlet domainLabel = domainAxisOptions.title;\n\t\tif (!domainLabel) {\n\t\t\tconst domainAxisPosition = cartesianScales.getDomainAxisPosition();\n\t\t\tif (\n\t\t\t\tdomainAxisPosition === AxisPositions.BOTTOM ||\n\t\t\t\tdomainAxisPosition === AxisPositions.TOP\n\t\t\t) {\n\t\t\t\tdomainLabel = 'x-value';\n\t\t\t} else {\n\t\t\t\tdomainLabel = 'y-value';\n\t\t\t}\n\t\t}\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tif (domainAxisScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValue = format(\n\t\t\t\tnew Date(data[0][domainIdentifier]),\n\t\t\t\t'MMM d, yyyy'\n\t\t\t);\n\t\t} else if (domainAxisScaleType === ScaleTypes.LINEAR) {\n\t\t\tdomainValue = domainValue.toLocaleString();\n\t\t}\n\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeAxisPosition = cartesianScales.getRangeAxisPosition({\n\t\t\t\tdatum,\n\t\t\t});\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\t\t\tconst rangeAxisOptions = cartesianScales.getAxisOptions(\n\t\t\t\trangeAxisPosition\n\t\t\t);\n\n\t\t\tlet rangeLabel = rangeAxisOptions.title;\n\t\t\tif (!rangeLabel) {\n\t\t\t\tif (\n\t\t\t\t\trangeAxisPosition === AxisPositions.LEFT ||\n\t\t\t\t\trangeAxisPosition === AxisPositions.RIGHT\n\t\t\t\t) {\n\t\t\t\t\trangeLabel = 'y-value';\n\t\t\t\t} else {\n\t\t\t\t\trangeLabel = 'x-value';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: options.tooltip.groupLabel || 'Group',\n\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t];\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: this.valueFormatter(domainValue),\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: this.valueFormatter(\n\t\t\t\t\t\t\tdatum[cartesianScales.getRangeIdentifier(datum)]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tconst dualAxes = cartesianScales.isDualAxes();\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: options.tooltip.totalLabel || 'Total',\n\t\t\t\t\tvalue: this.valueFormatter(\n\t\t\t\t\t\tdata.reduce(\n\t\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t\t0\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tooltip } from './tooltip';\nimport { AxisPositions, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainAxisOptions = cartesianScales.getDomainAxisOptions();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tlet domainLabel = domainAxisOptions.title;\n\t\tif (!domainLabel) {\n\t\t\tconst domainAxisPosition = cartesianScales.getDomainAxisPosition();\n\t\t\tif (\n\t\t\t\tdomainAxisPosition === AxisPositions.BOTTOM ||\n\t\t\t\tdomainAxisPosition === AxisPositions.TOP\n\t\t\t) {\n\t\t\t\tdomainLabel = 'x-value';\n\t\t\t} else {\n\t\t\t\tdomainLabel = 'y-value';\n\t\t\t}\n\t\t}\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeAxisPosition = cartesianScales.getRangeAxisPosition({\n\t\t\t\tdatum,\n\t\t\t});\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\t\t\tconst rangeAxisOptions = cartesianScales.getAxisOptions(\n\t\t\t\trangeAxisPosition\n\t\t\t);\n\n\t\t\tlet rangeLabel = rangeAxisOptions.title;\n\t\t\tif (!rangeLabel) {\n\t\t\t\tif (\n\t\t\t\t\trangeAxisPosition === AxisPositions.LEFT ||\n\t\t\t\t\trangeAxisPosition === AxisPositions.RIGHT\n\t\t\t\t) {\n\t\t\t\t\trangeLabel = 'y-value';\n\t\t\t\t} else {\n\t\t\t\t\trangeLabel = 'x-value';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: options.tooltip.groupLabel || 'Group',\n\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t];\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: datum[cartesianScales.getRangeIdentifier(datum)],\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tconst dualAxes = cartesianScales.isDualAxes();\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: options.tooltip.totalLabel || 'Total',\n\t\t\t\t\tvalue: data.reduce(\n\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t0\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
@@ -14,7 +14,7 @@ export declare class Tooltip extends Component {
14
14
  getItems(e: CustomEvent): any;
15
15
  formatItems(items: any): any;
16
16
  getTooltipHTML(e: CustomEvent): any;
17
- valueFormatter(value: any): any;
17
+ valueFormatter(value: any, label: string): any;
18
18
  render(): void;
19
19
  positionTooltip(e: CustomEvent): void;
20
20
  }
@@ -22,6 +22,7 @@ import Position, { PLACEMENTS } from '@carbon/utils-position';
22
22
  import settings from 'carbon-components/es/globals/js/settings';
23
23
  // D3 Imports
24
24
  import { select, mouse } from 'd3-selection';
25
+ import { format } from 'date-fns';
25
26
  var Tooltip = /** @class */ (function (_super) {
26
27
  __extends(Tooltip, _super);
27
28
  function Tooltip(model, services, configs) {
@@ -102,7 +103,7 @@ var Tooltip = /** @class */ (function (_super) {
102
103
  if (truncationType !== TruncationTypes.NONE) {
103
104
  return items.map(function (item) {
104
105
  item.value = item.value
105
- ? _this.valueFormatter(item.value)
106
+ ? _this.valueFormatter(item.value, item.label)
106
107
  : item.value;
107
108
  if (item.label && item.label.length > truncationThreshold) {
108
109
  item.label = Tools.truncateLabel(item.label, truncationType, truncationNumCharacter);
@@ -138,11 +139,14 @@ var Tooltip = /** @class */ (function (_super) {
138
139
  }
139
140
  return defaultHTML;
140
141
  };
141
- Tooltip.prototype.valueFormatter = function (value) {
142
+ Tooltip.prototype.valueFormatter = function (value, label) {
142
143
  var options = this.getOptions();
143
144
  var valueFormatter = Tools.getProperty(options, 'tooltip', 'valueFormatter');
144
145
  if (valueFormatter) {
145
- return valueFormatter(value);
146
+ return valueFormatter(value, label);
147
+ }
148
+ if (typeof value.getTime === "function") {
149
+ return format(value, 'MMM d, yyyy');
146
150
  }
147
151
  return value.toLocaleString();
148
152
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\nimport { Events, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select, mouse } from 'd3-selection';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tthis.positionTooltip(e);\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\titem.value = item.value\n\t\t\t\t\t? this.valueFormatter(item.value)\n\t\t\t\t\t: item.value;\n\t\t\t\tif (item.label && item.label.length > truncationThreshold) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<p class=\"label\">${item.label || ''}</p>\n\t\t\t\t\t\t\t\t<p class=\"value\">${item.value || ''}</p>\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) {\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);\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = mouse(holder);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\t// Find out whether tooltip should be shown on the left or right side\n\t\tconst bestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\t[\n\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t],\n\t\t\t() => ({\n\t\t\t\twidth: holder.offsetWidth,\n\t\t\t\theight: holder.offsetHeight,\n\t\t\t})\n\t\t);\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\nimport { Events, TruncationTypes } from '../../interfaces';\nimport * as Configuration from '../../configuration';\n\n// Carbon position service\nimport Position, { PLACEMENTS } from '@carbon/utils-position';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select, mouse } from 'd3-selection';\n\nimport { format } from 'date-fns';\n\nexport class Tooltip extends Component {\n\ttype = 'tooltip';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\ttooltip: any;\n\tpositionService = new Position();\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowTooltip = (e) => {\n\t\tconst data = e.detail.data || e.detail.items;\n\t\tconst defaultHTML = this.getTooltipHTML(e);\n\n\t\tconst tooltipTextContainer = DOMUtils.appendOrSelect(\n\t\t\tthis.tooltip,\n\t\t\t'div.content-box'\n\t\t);\n\n\t\t// if there is a provided tooltip HTML function call it\n\t\tif (Tools.getProperty(this.getOptions(), 'tooltip', 'customHTML')) {\n\t\t\tif (e.detail.content) {\n\t\t\t\tconst labelHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t\t\ttooltipTextContainer.html(labelHTML);\n\t\t\t} else {\n\t\t\t\ttooltipTextContainer.html(\n\t\t\t\t\tthis.model\n\t\t\t\t\t\t.getOptions()\n\t\t\t\t\t\t.tooltip.customHTML(data, defaultHTML)\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// Use default tooltip\n\t\t\ttooltipTextContainer.html(defaultHTML);\n\t\t}\n\n\t\t// Position the tooltip\n\t\tthis.positionTooltip(e);\n\n\t\t// Fade in\n\t\tthis.tooltip.classed('hidden', false).attr('aria-hidden', false);\n\t};\n\n\thandleHideTooltip = () => {\n\t\tthis.tooltip.classed('hidden', true).attr('aria-hidden', true);\n\t};\n\n\taddTooltipEventListener() {\n\t\t// listen to move-tooltip Custom Events to move the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.MOVE,\n\t\t\t(e: CustomEvent) => {\n\t\t\t\tthis.positionTooltip(e);\n\t\t\t}\n\t\t);\n\n\t\t// listen to show-tooltip Custom Events to render the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// listen to hide-tooltip Custom Events to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// listen to chart-mouseout event to hide the tooltip\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tremoveTooltipEventListener() {\n\t\t// remove move-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(Events.Tooltip.MOVE, null);\n\n\t\t// remove show-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.SHOW,\n\t\t\tthis.handleShowTooltip\n\t\t);\n\n\t\t// remove hide-tooltip Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Tooltip.HIDE,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\n\t\t// remove the listener on chart-mouseout\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleHideTooltip\n\t\t);\n\t}\n\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tformatItems(items) {\n\t\tconst options = this.getOptions();\n\n\t\t// get user provided custom values for truncation\n\t\tconst truncationType = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'type'\n\t\t);\n\n\t\tconst truncationThreshold = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'threshold'\n\t\t);\n\n\t\tconst truncationNumCharacter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'truncation',\n\t\t\t'numCharacter'\n\t\t);\n\n\t\t// truncate the label if it's too long\n\t\t// only applies to discrete type\n\t\tif (truncationType !== TruncationTypes.NONE) {\n\t\t\treturn items.map((item) => {\n\t\t\t\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 (item.label && item.label.length > truncationThreshold) {\n\t\t\t\t\titem.label = Tools.truncateLabel(\n\t\t\t\t\t\titem.label,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (item.value && item.value.length > truncationThreshold) {\n\t\t\t\t\titem.value = Tools.truncateLabel(\n\t\t\t\t\t\titem.value,\n\t\t\t\t\t\ttruncationType,\n\t\t\t\t\t\ttruncationNumCharacter\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tgetTooltipHTML(e: CustomEvent) {\n\t\tlet defaultHTML;\n\t\tif (e.detail.content) {\n\t\t\tdefaultHTML = `<div class=\"title-tooltip\"><p>${e.detail.content}</p></div>`;\n\t\t} else {\n\t\t\tconst items = this.getItems(e);\n\t\t\tconst formattedItems = this.formatItems(items);\n\n\t\t\tdefaultHTML =\n\t\t\t\t`<ul class='multi-tooltip'>` +\n\t\t\t\tformattedItems\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t`<li>\n\t\t\t\t\t\t\t<div class=\"datapoint-tooltip ${item.bold ? 'bold' : ''}\">\n\t\t\t\t\t\t\t\t${item.class ? `<a class=\"tooltip-color ${item.class}\"></a>` : ''}\n\t\t\t\t\t\t\t\t${\n\t\t\t\t\t\t\t\t\titem.color\n\t\t\t\t\t\t\t\t\t\t? '<a style=\"background-color: ' +\n\t\t\t\t\t\t\t\t\t\t item.color +\n\t\t\t\t\t\t\t\t\t\t '\" class=\"tooltip-color\"></a>'\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<p class=\"label\">${item.label || ''}</p>\n\t\t\t\t\t\t\t\t<p class=\"value\">${item.value || ''}</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</li>`\n\t\t\t\t\t)\n\t\t\t\t\t.join('') +\n\t\t\t\t`</ul>`;\n\t\t}\n\n\t\treturn defaultHTML;\n\t}\n\n\tvalueFormatter(value: any, label: string) {\n\t\tconst options = this.getOptions();\n\t\tconst valueFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'valueFormatter'\n\t\t);\n\n\t\tif (valueFormatter) {\n\t\t\treturn valueFormatter(value, label);\n\t\t}\n\n\t\tif (typeof value.getTime === \"function\") {\n\t\t\treturn format(value, 'MMM d, yyyy');\n\t\t}\n\n\t\treturn value.toLocaleString();\n\t}\n\n\trender() {\n\t\tconst options = this.getOptions();\n\t\tconst isTooltipEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'tooltip',\n\t\t\t'enabled'\n\t\t);\n\t\tif (isTooltipEnabled) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.tooltip = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--tooltip`\n\t\t\t);\n\n\t\t\tthis.tooltip.style('max-width', null);\n\t\t\tif (!this.isEventListenerAdded) {\n\t\t\t\tthis.addTooltipEventListener();\n\t\t\t\tthis.isEventListenerAdded = true;\n\t\t\t}\n\t\t\tthis.tooltip.classed('hidden', true);\n\t\t} else if (!isTooltipEnabled && this.isEventListenerAdded) {\n\t\t\t// remove tooltip eventListener\n\t\t\tthis.removeTooltipEventListener();\n\t\t\tthis.isEventListenerAdded = false;\n\t\t}\n\t}\n\n\tpositionTooltip(e: CustomEvent) {\n\t\tconst holder = this.services.domUtils.getHolder();\n\t\tconst target = this.tooltip.node();\n\t\tconst options = this.getOptions();\n\t\tconst isTopZoomBarEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'zoomBar',\n\t\t\t'top',\n\t\t\t'enabled'\n\t\t);\n\n\t\tlet mouseRelativePos = Tools.getProperty(e, 'detail', 'mousePosition');\n\t\tif (!mouseRelativePos) {\n\t\t\tmouseRelativePos = mouse(holder);\n\t\t} else {\n\t\t\tconst zoombarType = Tools.getProperty(\n\t\t\t\toptions,\n\t\t\t\t'zoomBar',\n\t\t\t\t'top',\n\t\t\t\t'type'\n\t\t\t);\n\t\t\tconst zoombarHeight = Configuration.zoomBar.height[zoombarType];\n\n\t\t\t// if the mouse position is from event (ruler)\n\t\t\t// we need add zoom bar height\n\t\t\tif (isTopZoomBarEnabled) {\n\t\t\t\tmouseRelativePos[1] +=\n\t\t\t\t\tzoombarHeight + Configuration.zoomBar.spacerHeight;\n\n\t\t\t\t// TODO - we need to add toolbar height when toolbar is available\n\t\t\t}\n\t\t}\n\n\t\tlet pos;\n\n\t\t// Find out whether tooltip should be shown on the left or right side\n\t\tconst bestPlacementOption = this.positionService.findBestPlacementAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0],\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\t[\n\t\t\t\tPLACEMENTS.RIGHT,\n\t\t\t\tPLACEMENTS.LEFT,\n\t\t\t\tPLACEMENTS.TOP,\n\t\t\t\tPLACEMENTS.BOTTOM,\n\t\t\t],\n\t\t\t() => ({\n\t\t\t\twidth: holder.offsetWidth,\n\t\t\t\theight: holder.offsetHeight,\n\t\t\t})\n\t\t);\n\n\t\tlet { horizontalOffset } = Configuration.tooltips;\n\t\tif (bestPlacementOption === PLACEMENTS.LEFT) {\n\t\t\thorizontalOffset *= -1;\n\t\t}\n\n\t\t// Get coordinates to where tooltip should be positioned\n\t\tpos = this.positionService.findPositionAt(\n\t\t\t{\n\t\t\t\tleft: mouseRelativePos[0] + horizontalOffset,\n\t\t\t\ttop: mouseRelativePos[1],\n\t\t\t},\n\t\t\ttarget,\n\t\t\tbestPlacementOption\n\t\t);\n\n\t\tthis.positionService.setElement(target, pos);\n\t}\n}\n"]}
@@ -112,17 +112,23 @@ var Area = /** @class */ (function (_super) {
112
112
  if (!groupedData.length) {
113
113
  return;
114
114
  }
115
- // The fill value of area has been overwritten, get color value from stroke color class instead
116
- var strokePathElement = chartSVG
117
- .select("path." + this.model.getColorClassName({
118
- classNameTypes: [ColorClassNameTypes.STROKE],
119
- dataGroupName: groupedData[0].name,
120
- }))
121
- .node();
122
- var colorValue = strokePathElement
123
- ? getComputedStyle(strokePathElement, null).getPropertyValue('stroke')
124
- : null;
125
- if (isGradientAllowed && colorValue) {
115
+ if (isGradientAllowed) {
116
+ // The fill value of area has been overwritten, get color value from stroke color class instead
117
+ var strokePathElement = chartSVG
118
+ .select("path." + this.model.getColorClassName({
119
+ classNameTypes: [ColorClassNameTypes.STROKE],
120
+ dataGroupName: groupedData[0].name
121
+ }))
122
+ .node();
123
+ var colorValue = void 0;
124
+ if (strokePathElement) {
125
+ colorValue = getComputedStyle(strokePathElement, null).getPropertyValue('stroke');
126
+ }
127
+ else {
128
+ var sparklineColorObject = Tools.getProperty(this.model.getOptions(), 'color', 'scale');
129
+ var sparklineColorObjectKeys = Object.keys(sparklineColorObject);
130
+ colorValue = sparklineColorObject[sparklineColorObjectKeys[0]];
131
+ }
126
132
  GradientUtils.appendOrUpdateLinearGradient({
127
133
  svg: this.parent,
128
134
  id: groupedData[0].name.replace(' ', '') +
@@ -1 +1 @@
1
- {"version":3,"file":"area.js","sourceRoot":"","sources":["area.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport {\n\tCartesianOrientations,\n\tEvents,\n\tColorClassNameTypes,\n} from '../../interfaces';\nimport { GradientUtils, DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { area } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nexport class Area extends Component {\n\ttype = 'area';\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight area on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tlet domain = [0, 0];\n\n\t\tconst { cartesianScales } = this.services;\n\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst areaGenerator = area().curve(this.services.curves.getD3Curve());\n\n\t\t// Update the bound data on area groups\n\t\tconst groupedData = this.model.getGroupedData(this.configs.groups);\n\n\t\tconst bounds = Tools.getProperty(this.getOptions(), 'bounds');\n\t\tconst boundsEnabled = bounds && groupedData && groupedData.length === 1;\n\n\t\tif (!boundsEnabled && bounds) {\n\t\t\tconsole.warn(\n\t\t\t\t`Bounds can only be shown when having 1 single datagroup, you've supplied ${groupedData.length}`\n\t\t\t); // eslint-disable-line no-console\n\t\t}\n\n\t\tconst upperBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[0]\n\t\t\t\t: cartesianScales.getRangeValue(0);\n\n\t\tconst lowerBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[1]\n\t\t\t\t: cartesianScales.getRangeValue(d, i);\n\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tdomain = this.services.cartesianScales.getMainYScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x((d, i) => cartesianScales.getDomainValue(d, i))\n\t\t\t\t.y0((d, i) => upperBound(d, i))\n\t\t\t\t.y1((d, i) => lowerBound(d, i));\n\t\t} else {\n\t\t\tdomain = this.services.cartesianScales.getMainXScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x0((d, i) => upperBound(d, i))\n\t\t\t\t.x1((d, i) => lowerBound(d, i))\n\t\t\t\t.y((d, i) => cartesianScales.getDomainValue(d, i));\n\t\t}\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientEnabled = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Should gradient style be applicable\n\t\tconst isGradientAllowed =\n\t\t\tgroupedData && groupedData.length === 1 && isGradientEnabled;\n\n\t\tif (groupedData.length > 1 && isGradientEnabled) {\n\t\t\tconsole.error(\n\t\t\t\t'Gradients can only be enabled when having 1 single dataset'\n\t\t\t);\n\t\t}\n\n\t\tconst areas = svg.selectAll('path.area').data(groupedData);\n\n\t\tconst chartprefix = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'style',\n\t\t\t'prefix'\n\t\t);\n\t\tconst chartSVG = DOMUtils.appendOrSelect(\n\t\t\tselect(this.services.domUtils.getHolder()),\n\t\t\t`svg.${settings.prefix}--${chartprefix}--chart-svg`\n\t\t);\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tareas.exit().attr('opacity', 0).remove();\n\n\t\t// if there is no grouped data (if all data groups are turned OFF with legend which can happen in the case of combo charts)\n\t\tif (!groupedData.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The fill value of area has been overwritten, get color value from stroke color class instead\n\t\tconst strokePathElement = chartSVG\n\t\t\t.select(\n\t\t\t\t`path.${this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: groupedData[0].name,\n\t\t\t\t})}`\n\t\t\t)\n\t\t\t.node();\n\n\t\tconst colorValue = strokePathElement\n\t\t\t? getComputedStyle(strokePathElement, null).getPropertyValue(\n\t\t\t\t\t'stroke'\n\t\t\t )\n\t\t\t: null;\n\n\t\tif (isGradientAllowed && colorValue) {\n\t\t\tGradientUtils.appendOrUpdateLinearGradient({\n\t\t\t\tsvg: this.parent,\n\t\t\t\tid:\n\t\t\t\t\tgroupedData[0].name.replace(' ', '') +\n\t\t\t\t\t'_' +\n\t\t\t\t\tthis.gradient_id,\n\t\t\t\tx1: '0%',\n\t\t\t\tx2: '0%',\n\t\t\t\ty1: '0%',\n\t\t\t\ty2: '100%',\n\t\t\t\tstops: GradientUtils.getStops(domain, colorValue),\n\t\t\t});\n\t\t} else {\n\t\t\t// make sure there is no linearGradient if no gradient is allowed\n\t\t\tif (!this.parent.selectAll('defs linearGradient').empty()) {\n\t\t\t\tthis.parent.selectAll('defs linearGradient').each(function () {\n\t\t\t\t\tthis.parentNode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst self = this;\n\n\t\t// Enter paths that need to be introduced\n\t\tconst enteringAreas = areas.enter().append('path');\n\t\tif (isGradientAllowed) {\n\t\t\tenteringAreas\n\t\t\t\t.merge(areas)\n\t\t\t\t.style(\n\t\t\t\t\t'fill',\n\t\t\t\t\t(group) =>\n\t\t\t\t\t\t`url(#${group.name.replace(' ', '')}_${\n\t\t\t\t\t\t\tthis.gradient_id\n\t\t\t\t\t\t})`\n\t\t\t\t)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\t\t} else {\n\t\t\tenteringAreas\n\t\t\t\t.attr('opacity', 0)\n\t\t\t\t.merge(areas)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (group) => self.model.getFillColor(group.name))\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'area-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr(\n\t\t\t\t\t'opacity',\n\t\t\t\t\tboundsEnabled ? 1 : Configuration.area.opacity.selected\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\n\t\t\tif (boundsEnabled) {\n\t\t\t\tenteringAreas\n\t\t\t\t\t.attr('fill-opacity', Configuration.area.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) =>\n\t\t\t\t\t\tself.model.getStrokeColor(group.name)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-dasharray', '2, 2')\n\t\t\t\t\t.attr('stroke-width', 0.7 + 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-area')\n\t\t\t)\n\t\t\t.attr('opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-area')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"area.js","sourceRoot":"","sources":["area.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACN,qBAAqB,EACrB,MAAM,EACN,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,0CAA0C,CAAC;AAEhE,aAAa;AACb,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;IAA0B,wBAAS;IAAnC;QAAA,qEA2QC;QA1QA,UAAI,GAAG,MAAM,CAAC;QACd,iBAAW,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC;QA6NvE,yBAAmB,GAAG,UAAC,KAAkB;YAChC,IAAA,4CAAc,CAAkB;YAExC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,WAAW,CAAC;iBACtB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAC5D;iBACA,IAAI,CAAC,SAAS,EAAE,UAAC,KAAK;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;oBAClD,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;iBAC7C;gBAED,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,0BAAoB,GAAG,UAAC,KAAkB;YACzC,KAAI,CAAC,MAAM;iBACT,SAAS,CAAC,WAAW,CAAC;iBACtB,UAAU,CACV,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAC/D;iBACA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC;;IAoBH,CAAC;IAvQA,mBAAI,GAAJ;QACC,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAE5C,+CAA+C;QAC/C,cAAc,CAAC,gBAAgB,CAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QAEF,6CAA6C;QAC7C,cAAc,CAAC,gBAAgB,CAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;IACH,CAAC;IAED,qBAAM,GAAN,UAAO,OAAc;QAArB,iBAyMC;QAzMM,wBAAA,EAAA,cAAc;QACpB,IAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEZ,IAAA,+CAAe,CAAmB;QAE1C,IAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;QACrD,IAAM,aAAa,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAEtE,uCAAuC;QACvC,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAM,aAAa,GAAG,MAAM,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;QAExE,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE;YAC7B,OAAO,CAAC,IAAI,CACX,8EAA4E,WAAW,CAAC,MAAQ,CAChG,CAAC,CAAC,iCAAiC;SACpC;QAED,IAAM,UAAU,GAAG,UAAC,CAAC,EAAE,CAAC;YACvB,OAAA,aAAa;gBACZ,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;QAFnC,CAEmC,CAAC;QAErC,IAAM,UAAU,GAAG,UAAC,CAAC,EAAE,CAAC;YACvB,OAAA,aAAa;gBACZ,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;QAFtC,CAEsC,CAAC;QAExC,IAAI,WAAW,KAAK,qBAAqB,CAAC,QAAQ,EAAE;YACnD,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;YAChE,aAAa;iBACX,CAAC,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAApC,CAAoC,CAAC;iBACjD,EAAE,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC;iBAC9B,EAAE,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC;SACjC;aAAM;YACN,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;YAChE,aAAa;iBACX,EAAE,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC;iBAC9B,EAAE,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC;iBAC9B,CAAC,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAApC,CAAoC,CAAC,CAAC;SACpD;QAED,6BAA6B;QAC7B,IAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAC1C,IAAI,CAAC,UAAU,EAAE,EACjB,OAAO,EACP,UAAU,EACV,SAAS,CACT,CAAC;QAEF,sCAAsC;QACtC,IAAM,iBAAiB,GACtB,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC;QAE9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,EAAE;YAChD,OAAO,CAAC,KAAK,CACZ,4DAA4D,CAC5D,CAAC;SACF;QAED,IAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACpC,IAAI,CAAC,UAAU,EAAE,EACjB,OAAO,EACP,QAAQ,CACR,CAAC;QACF,IAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAC1C,SAAO,QAAQ,CAAC,MAAM,UAAK,WAAW,gBAAa,CACnD,CAAC;QAEF,yCAAyC;QACzC,iDAAiD;QACjD,0DAA0D;QAC1D,4BAA4B;QAC5B,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAEzC,2HAA2H;QAC3H,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACxB,OAAO;SACP;QAED,IAAI,iBAAiB,EAAE;YACtB,+FAA+F;YAC/F,IAAM,iBAAiB,GAAG,QAAQ;iBAChC,MAAM,CACN,UAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACpC,cAAc,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBAC5C,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;aAClC,CAAG,CACJ;iBACA,IAAI,EAAE,CAAC;YACT,IAAI,UAAU,SAAA,CAAC;YACf,IAAI,iBAAiB,EAAE;gBACtB,UAAU,GAAG,gBAAgB,CAC5B,iBAAiB,EACjB,IAAI,CACJ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC7B;iBAAM;gBACN,IAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAC7C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EACvB,OAAO,EACP,OAAO,CACP,CAAC;gBACF,IAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAC3C,oBAAoB,CACpB,CAAC;gBACF,UAAU,GAAG,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/D;YACD,aAAa,CAAC,4BAA4B,CAAC;gBAC1C,GAAG,EAAE,IAAI,CAAC,MAAM;gBAChB,EAAE,EACD,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBACpC,GAAG;oBACH,IAAI,CAAC,WAAW;gBACjB,EAAE,EAAE,IAAI;gBACR,EAAE,EAAE,IAAI;gBACR,EAAE,EAAE,IAAI;gBACR,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;aACjD,CAAC,CAAC;SACH;aAAM;YACN,iEAAiE;YACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;aACH;SACD;QAED,IAAM,IAAI,GAAG,IAAI,CAAC;QAElB,yCAAyC;QACzC,IAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,iBAAiB,EAAE;YACtB,aAAa;iBACX,KAAK,CAAC,KAAK,CAAC;iBACZ,KAAK,CACL,MAAM,EACN,UAAC,KAAK;gBACL,OAAA,UAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,SAClC,KAAI,CAAC,WAAW,MACd;YAFH,CAEG,CACJ;iBACA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;iBACrB,IAAI,CAAC,OAAO,EAAE,UAAC,KAAK;gBACpB,OAAA,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAC5B,cAAc,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC1C,aAAa,EAAE,KAAK,CAAC,IAAI;oBACzB,iBAAiB,EAAE,MAAM;iBACzB,CAAC;YAJF,CAIE,CACF;iBACA,IAAI,CAAC,GAAG,EAAE,UAAC,KAAK;gBACR,IAAA,iBAAI,CAAW;gBACvB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;SACJ;aAAM;YACN,aAAa;iBACX,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBAClB,KAAK,CAAC,KAAK,CAAC;iBACZ,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;iBACrB,IAAI,CAAC,OAAO,EAAE,UAAC,KAAK;gBACpB,OAAA,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAC5B,cAAc,EAAE;wBACf,mBAAmB,CAAC,IAAI;wBACxB,mBAAmB,CAAC,MAAM;qBAC1B;oBACD,aAAa,EAAE,KAAK,CAAC,IAAI;oBACzB,iBAAiB,EAAE,MAAM;iBACzB,CAAC;YAPF,CAOE,CACF;iBACA,KAAK,CAAC,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAnC,CAAmC,CAAC;iBAC7D,UAAU,CACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtC,mBAAmB,EACnB,OAAO,CACP,CACD;iBACA,IAAI,CACJ,SAAS,EACT,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CACvD;iBACA,IAAI,CAAC,GAAG,EAAE,UAAC,KAAK;gBACR,IAAA,iBAAI,CAAW;gBACvB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEJ,IAAI,aAAa,EAAE;gBAClB,aAAa;qBACX,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;qBACzD,KAAK,CAAC,QAAQ,EAAE,UAAC,KAAK;oBACtB,OAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;gBAArC,CAAqC,CACrC;qBACA,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC;qBACjC,IAAI,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;aACnC;SACD;IACF,CAAC;IA4BD,sBAAO,GAAP;QACC,yBAAyB;QACzB,IAAI,CAAC,MAAM;aACT,SAAS,CAAC,WAAW,CAAC;aACtB,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC;aACrB,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEvB,0BAA0B;QAC1B,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,IAAI,CAAC,mBAAmB,CACxB,CAAC;QACF,cAAc,CAAC,mBAAmB,CACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAC3B,IAAI,CAAC,oBAAoB,CACzB,CAAC;IACH,CAAC;IACF,WAAC;AAAD,CAAC,AA3QD,CAA0B,SAAS,GA2QlC","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport * as Configuration from '../../configuration';\nimport {\n\tCartesianOrientations,\n\tEvents,\n\tColorClassNameTypes,\n} from '../../interfaces';\nimport { GradientUtils, DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { area } from 'd3-shape';\nimport { select } from 'd3-selection';\n\nexport class Area extends Component {\n\ttype = 'area';\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct area on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight area on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\t\tlet domain = [0, 0];\n\n\t\tconst { cartesianScales } = this.services;\n\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst areaGenerator = area().curve(this.services.curves.getD3Curve());\n\n\t\t// Update the bound data on area groups\n\t\tconst groupedData = this.model.getGroupedData(this.configs.groups);\n\n\t\tconst bounds = Tools.getProperty(this.getOptions(), 'bounds');\n\t\tconst boundsEnabled = bounds && groupedData && groupedData.length === 1;\n\n\t\tif (!boundsEnabled && bounds) {\n\t\t\tconsole.warn(\n\t\t\t\t`Bounds can only be shown when having 1 single datagroup, you've supplied ${groupedData.length}`\n\t\t\t); // eslint-disable-line no-console\n\t\t}\n\n\t\tconst upperBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[0]\n\t\t\t\t: cartesianScales.getRangeValue(0);\n\n\t\tconst lowerBound = (d, i) =>\n\t\t\tboundsEnabled\n\t\t\t\t? cartesianScales.getBoundedScaledValues(d, i)[1]\n\t\t\t\t: cartesianScales.getRangeValue(d, i);\n\n\t\tif (orientation === CartesianOrientations.VERTICAL) {\n\t\t\tdomain = this.services.cartesianScales.getMainYScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x((d, i) => cartesianScales.getDomainValue(d, i))\n\t\t\t\t.y0((d, i) => upperBound(d, i))\n\t\t\t\t.y1((d, i) => lowerBound(d, i));\n\t\t} else {\n\t\t\tdomain = this.services.cartesianScales.getMainXScale().domain();\n\t\t\tareaGenerator\n\t\t\t\t.x0((d, i) => upperBound(d, i))\n\t\t\t\t.x1((d, i) => lowerBound(d, i))\n\t\t\t\t.y((d, i) => cartesianScales.getDomainValue(d, i));\n\t\t}\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientEnabled = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Should gradient style be applicable\n\t\tconst isGradientAllowed =\n\t\t\tgroupedData && groupedData.length === 1 && isGradientEnabled;\n\n\t\tif (groupedData.length > 1 && isGradientEnabled) {\n\t\t\tconsole.error(\n\t\t\t\t'Gradients can only be enabled when having 1 single dataset'\n\t\t\t);\n\t\t}\n\n\t\tconst areas = svg.selectAll('path.area').data(groupedData);\n\n\t\tconst chartprefix = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'style',\n\t\t\t'prefix'\n\t\t);\n\t\tconst chartSVG = DOMUtils.appendOrSelect(\n\t\t\tselect(this.services.domUtils.getHolder()),\n\t\t\t`svg.${settings.prefix}--${chartprefix}--chart-svg`\n\t\t);\n\n\t\t// Remove elements that need to be exited\n\t\t// We need exit at the top here to make sure that\n\t\t// Data filters are processed before entering new elements\n\t\t// Or updating existing ones\n\t\tareas.exit().attr('opacity', 0).remove();\n\n\t\t// if there is no grouped data (if all data groups are turned OFF with legend which can happen in the case of combo charts)\n\t\tif (!groupedData.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isGradientAllowed) {\n\t\t\t// The fill value of area has been overwritten, get color value from stroke color class instead\n\t\t\tconst strokePathElement = chartSVG\n\t\t\t\t.select(\n\t\t\t\t\t`path.${this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: groupedData[0].name\n\t\t\t\t\t})}`\n\t\t\t\t)\n\t\t\t\t.node();\n\t\t\tlet colorValue;\n\t\t\tif (strokePathElement) {\n\t\t\t\tcolorValue = getComputedStyle(\n\t\t\t\t\tstrokePathElement,\n\t\t\t\t\tnull\n\t\t\t\t).getPropertyValue('stroke');\n\t\t\t} else {\n\t\t\t\tconst sparklineColorObject = Tools.getProperty(\n\t\t\t\t\tthis.model.getOptions(),\n\t\t\t\t\t'color',\n\t\t\t\t\t'scale'\n\t\t\t\t);\n\t\t\t\tconst sparklineColorObjectKeys = Object.keys(\n\t\t\t\t\tsparklineColorObject\n\t\t\t\t);\n\t\t\t\tcolorValue = sparklineColorObject[sparklineColorObjectKeys[0]];\n\t\t\t}\n\t\t\tGradientUtils.appendOrUpdateLinearGradient({\n\t\t\t\tsvg: this.parent,\n\t\t\t\tid:\n\t\t\t\t\tgroupedData[0].name.replace(' ', '') +\n\t\t\t\t\t'_' +\n\t\t\t\t\tthis.gradient_id,\n\t\t\t\tx1: '0%',\n\t\t\t\tx2: '0%',\n\t\t\t\ty1: '0%',\n\t\t\t\ty2: '100%',\n\t\t\t\tstops: GradientUtils.getStops(domain, colorValue),\n\t\t\t});\n\t\t} else {\n\t\t\t// make sure there is no linearGradient if no gradient is allowed\n\t\t\tif (!this.parent.selectAll('defs linearGradient').empty()) {\n\t\t\t\tthis.parent.selectAll('defs linearGradient').each(function () {\n\t\t\t\t\tthis.parentNode.remove();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst self = this;\n\n\t\t// Enter paths that need to be introduced\n\t\tconst enteringAreas = areas.enter().append('path');\n\t\tif (isGradientAllowed) {\n\t\t\tenteringAreas\n\t\t\t\t.merge(areas)\n\t\t\t\t.style(\n\t\t\t\t\t'fill',\n\t\t\t\t\t(group) =>\n\t\t\t\t\t\t`url(#${group.name.replace(' ', '')}_${\n\t\t\t\t\t\t\tthis.gradient_id\n\t\t\t\t\t\t})`\n\t\t\t\t)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\t\t} else {\n\t\t\tenteringAreas\n\t\t\t\t.attr('opacity', 0)\n\t\t\t\t.merge(areas)\n\t\t\t\t.attr('class', 'area')\n\t\t\t\t.attr('class', (group) =>\n\t\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdataGroupName: group.name,\n\t\t\t\t\t\toriginalClassName: 'area',\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (group) => self.model.getFillColor(group.name))\n\t\t\t\t.transition(\n\t\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t\t'area-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr(\n\t\t\t\t\t'opacity',\n\t\t\t\t\tboundsEnabled ? 1 : Configuration.area.opacity.selected\n\t\t\t\t)\n\t\t\t\t.attr('d', (group) => {\n\t\t\t\t\tconst { data } = group;\n\t\t\t\t\treturn areaGenerator(data);\n\t\t\t\t});\n\n\t\t\tif (boundsEnabled) {\n\t\t\t\tenteringAreas\n\t\t\t\t\t.attr('fill-opacity', Configuration.area.opacity.selected)\n\t\t\t\t\t.style('stroke', (group) =>\n\t\t\t\t\t\tself.model.getStrokeColor(group.name)\n\t\t\t\t\t)\n\t\t\t\t\t.style('stroke-dasharray', '2, 2')\n\t\t\t\t\t.attr('stroke-width', 0.7 + 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-area')\n\t\t\t)\n\t\t\t.attr('opacity', (group) => {\n\t\t\t\tif (group.name !== hoveredElement.datum()['name']) {\n\t\t\t\t\treturn Configuration.area.opacity.unselected;\n\t\t\t\t}\n\n\t\t\t\treturn Configuration.area.opacity.selected;\n\t\t\t});\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-mouseout-area')\n\t\t\t)\n\t\t\t.attr('opacity', Configuration.area.opacity.selected);\n\t};\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('path.area')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst eventsFragment = this.services.events;\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\teventsFragment.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n}\n"]}
@@ -165,6 +165,7 @@ var Gauge = /** @class */ (function (_super) {
165
165
  // if there is a delta, use the size to center the numbers, otherwise center the valueNumber
166
166
  var deltaFontSize = Tools.getProperty(options, 'gauge', 'deltaFontSize');
167
167
  var numberSpacing = Tools.getProperty(options, 'gauge', 'numberSpacing');
168
+ var showPercentageSymbol = Tools.getProperty(options, 'gauge', 'showPercentageSymbol');
168
169
  // circular gauge without delta should have valueNumber centered
169
170
  var numbersYPosition = 0;
170
171
  if (arcType === GaugeTypes.FULL && !delta) {
@@ -194,10 +195,11 @@ var Gauge = /** @class */ (function (_super) {
194
195
  // add the percentage symbol beside the valueNumber
195
196
  var valueNumberWidth = DOMUtils.getSVGElementSize(DOMUtils.appendOrSelect(svg, 'text.gauge-value-number'), { useBBox: true }).width;
196
197
  var symbolFontSize = fontSize / 2;
198
+ var gaugeSymbol = showPercentageSymbol ? '%' : '';
197
199
  var symbol = DOMUtils.appendOrSelect(valueNumberGroup, 'text.gauge-value-symbol')
198
200
  .style('font-size', symbolFontSize + "px")
199
201
  .attr('x', valueNumberWidth / 2)
200
- .text('%');
202
+ .text(gaugeSymbol);
201
203
  var _a = DOMUtils.getSVGElementSize(symbol, { useBBox: true }), symbolWidth = _a.width, symbolHeight = _a.height;
202
204
  // adjust the symbol to superscript using the bbox instead of the font-size cause
203
205
  // we want to align the actual character to the value number
@@ -224,10 +226,12 @@ var Gauge = /** @class */ (function (_super) {
224
226
  : function () { return null; };
225
227
  var arrowSize = Tools.getProperty(options, 'gauge', 'deltaArrow', 'size');
226
228
  var numberSpacing = Tools.getProperty(options, 'gauge', 'numberSpacing');
229
+ var showPercentageSymbol = Tools.getProperty(options, 'gauge', 'showPercentageSymbol');
227
230
  var numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');
228
231
  // Add the smaller number of the delta
229
232
  var deltaGroup = DOMUtils.appendOrSelect(numbersGroup, 'g.gauge-delta').attr('transform', "translate(0, " + (deltaFontSize(radius) + numberSpacing) + ")");
230
233
  var deltaNumber = DOMUtils.appendOrSelect(deltaGroup, 'text.gauge-delta-number');
234
+ var gaugeSymbol = showPercentageSymbol ? '%' : '';
231
235
  deltaNumber.data(delta === null ? [] : [delta]);
232
236
  deltaNumber
233
237
  .enter()
@@ -236,7 +240,7 @@ var Gauge = /** @class */ (function (_super) {
236
240
  .merge(deltaNumber)
237
241
  .attr('text-anchor', 'middle')
238
242
  .style('font-size', deltaFontSize(radius) + "px")
239
- .text(function (d) { return numberFormatter(d) + "%"; });
243
+ .text(function (d) { return "" + numberFormatter(d) + gaugeSymbol; });
240
244
  // Add the caret for the delta number
241
245
  var deltaNumberWidth = DOMUtils.getSVGElementSize(DOMUtils.appendOrSelect(svg, '.gauge-delta-number'), { useBBox: true }).width;
242
246
  // check if delta arrow is disabled
@@ -1 +1 @@
1
- {"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\t}\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('transform', `translate(${gaugeTranslateX}, ${radius})`);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text('%');\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}%`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16');\n\n\t\t// Needed to correctly size SVG in Firefox\n\t\tDOMUtils.appendOrSelect(deltaArrow, 'rect.gauge-delta-arrow-backdrop')\n\t\t\t.attr('width', '16')\n\t\t\t.attr('height', '16')\n\t\t\t.attr('fill', 'none');\n\n\t\t// Draw the arrow with status\n\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\tDOMUtils.appendOrSelect(deltaArrow, 'polygon.gauge-delta-arrow')\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tstatus !== null ? `gauge-delta-arrow status--${status}` : ''\n\t\t\t)\n\t\t\t.attr('points', self.getArrow(delta));\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
1
+ {"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport {\n\tRoles,\n\tEvents,\n\tGaugeTypes,\n\tArrowDirections,\n\tColorClassNameTypes,\n\tAlignments,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\n\n// arrow paths for delta\nconst ARROW_UP_PATH_STRING = '4,10 8,6 12,10';\nconst ARROW_DOWN_PATH_STRING = '12,6 8,10 4,6';\n\nexport class Gauge extends Component {\n\ttype = 'gauge';\n\n\t// We need to store our arcs so that addEventListeners() can access them\n\tarc: any;\n\tbackgroundArc: any;\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\t}\n\n\tgetValue(): number {\n\t\tconst data = this.model.getData();\n\t\tconst value = data.find((d) => d.group === 'value')?.value ?? null;\n\t\treturn value;\n\t}\n\n\tgetValueRatio(): number {\n\t\tconst value = Tools.clamp(this.getValue(), 0, 100);\n\t\treturn value / 100;\n\t}\n\n\tgetDelta(): number {\n\t\tconst data = this.model.getData();\n\t\tconst delta = data.find((d) => d.group === 'delta')?.value ?? null;\n\t\treturn delta;\n\t}\n\n\tgetArcRatio(): number {\n\t\tconst options = this.getOptions();\n\t\tconst type = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst arcRatio = type === GaugeTypes.FULL ? 1 : 0.5;\n\t\treturn arcRatio;\n\t}\n\n\tgetArcSize(): number {\n\t\treturn this.getArcRatio() * Math.PI * 2;\n\t}\n\n\tgetStartAngle(): number {\n\t\tconst arcSize = this.getArcSize();\n\t\tif (arcSize === 2 * Math.PI) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -arcSize / 2;\n\t}\n\n\t// use provided arrow direction or default to using the delta\n\tgetArrow(delta): string {\n\t\tconst options = this.getOptions();\n\t\tconst arrowDirection = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'direction'\n\t\t);\n\n\t\tswitch (arrowDirection) {\n\t\t\tcase ArrowDirections.UP:\n\t\t\t\treturn ARROW_UP_PATH_STRING;\n\t\t\tcase ArrowDirections.DOWN:\n\t\t\t\treturn ARROW_DOWN_PATH_STRING;\n\t\t\tdefault:\n\t\t\t\treturn delta > 0\n\t\t\t\t\t? ARROW_UP_PATH_STRING\n\t\t\t\t\t: ARROW_DOWN_PATH_STRING;\n\t\t}\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst value = this.getValue();\n\t\tconst valueRatio = this.getValueRatio();\n\t\tconst arcSize = this.getArcSize();\n\n\t\t// angles for drawing the gauge\n\t\tconst startAngle = this.getStartAngle();\n\t\tconst rotationAngle = valueRatio * arcSize;\n\t\tconst currentAngle = startAngle + rotationAngle;\n\t\tconst endAngle = startAngle + arcSize;\n\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst innerRadius = this.getInnerRadius();\n\n\t\t// draw the container and arc\n\t\tthis.backgroundArc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(currentAngle)\n\t\t\t.endAngle(endAngle);\n\n\t\tthis.arc = arc()\n\t\t\t.innerRadius(innerRadius)\n\t\t\t.outerRadius(radius)\n\t\t\t.startAngle(startAngle)\n\t\t\t.endAngle(currentAngle);\n\n\t\t// draw the container\n\t\tDOMUtils.appendOrSelect(svg, 'path.arc-background')\n\t\t\t.attr('d', this.backgroundArc)\n\t\t\t.attr('role', Roles.GROUP);\n\n\t\t// Add data arc\n\t\tconst arcValue = svg.selectAll('path.arc-foreground').data([value]);\n\t\tconst arcEnter = arcValue.enter().append('path');\n\n\t\tarcEnter\n\t\t\t.merge(arcValue)\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: 'value',\n\t\t\t\t\toriginalClassName: 'arc-foreground',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.style('fill', (d) =>\n\t\t\t\tTools.getProperty(this.getOptions(), 'color', 'scale', 'value')\n\t\t\t)\n\t\t\t.attr('d', this.arc)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the value and delta to the center\n\t\tthis.drawValueNumber();\n\t\tthis.drawDelta();\n\n\t\tarcValue.exit().remove();\n\n\t\tconst alignment = Tools.getProperty(options, 'gauge', 'alignment');\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.getParent(), {\n\t\t\tuseAttr: true,\n\t\t});\n\n\t\t// Position gauge\n\t\tlet gaugeTranslateX = radius;\n\t\tif (alignment === Alignments.CENTER) {\n\t\t\tgaugeTranslateX = width / 2;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tgaugeTranslateX = width - radius;\n\t\t}\n\t\tsvg.attr('transform', `translate(${gaugeTranslateX}, ${radius})`);\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t/**\n\t * draws the value number associated with the Gauge component in the center\n\t */\n\tdrawValueNumber() {\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\t\tconst value = this.getValue();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\n\t\tconst valueFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'valueFontSize'\n\t\t);\n\t\t// if there is a delta, use the size to center the numbers, otherwise center the valueNumber\n\t\tconst deltaFontSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaFontSize'\n\t\t);\n\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\t// circular gauge without delta should have valueNumber centered\n\t\tlet numbersYPosition = 0;\n\t\tif (arcType === GaugeTypes.FULL && !delta) {\n\t\t\tnumbersYPosition = deltaFontSize(radius);\n\t\t} else if (arcType === GaugeTypes.SEMI && delta) {\n\t\t\t// semi circular gauge we want the numbers aligned to the chart container\n\t\t\tnumbersYPosition = -(deltaFontSize(radius) + numberSpacing);\n\t\t}\n\n\t\t// Add the numbers at the center\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(\n\t\t\tsvg,\n\t\t\t'g.gauge-numbers'\n\t\t).attr('transform', `translate(0, ${numbersYPosition})`);\n\n\t\tconst fontSize = valueFontSize(radius);\n\t\t// Add the big number\n\t\tconst valueNumberGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-value-number'\n\t\t);\n\n\t\tconst numberFormatter = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberFormatter'\n\t\t);\n\t\tconst valueNumber = valueNumberGroup\n\t\t\t.selectAll('text.gauge-value-number')\n\t\t\t.data([value]);\n\n\t\tvalueNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.attr('class', 'gauge-value-number')\n\t\t\t.merge(valueNumber)\n\t\t\t.style('font-size', `${fontSize}px`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d) => numberFormatter(d));\n\n\t\t// add the percentage symbol beside the valueNumber\n\t\tconst {\n\t\t\twidth: valueNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, 'text.gauge-value-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\tconst symbolFontSize = fontSize / 2;\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\t\tconst symbol = DOMUtils.appendOrSelect(\n\t\t\tvalueNumberGroup,\n\t\t\t'text.gauge-value-symbol'\n\t\t)\n\t\t\t.style('font-size', `${symbolFontSize}px`)\n\t\t\t.attr('x', valueNumberWidth / 2)\n\t\t\t.text(gaugeSymbol);\n\n\t\tconst {\n\t\t\twidth: symbolWidth,\n\t\t\theight: symbolHeight,\n\t\t} = DOMUtils.getSVGElementSize(symbol, { useBBox: true });\n\n\t\t// adjust the symbol to superscript using the bbox instead of the font-size cause\n\t\t// we want to align the actual character to the value number\n\t\tsymbol.attr('y', `-${symbolHeight / 2}px`);\n\n\t\t// move the value group depending on the symbol's drawn size\n\t\tvalueNumberGroup.attr('transform', `translate(-${symbolWidth / 2}, 0)`); // Optical centering for the presence of the smaller % symbol\n\t}\n\n\t/**\n\t * adds the delta number for the gauge\n\t */\n\tdrawDelta() {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst delta = this.getDelta();\n\n\t\t// Sizing and positions relative to the radius\n\t\tconst radius = this.computeRadius();\n\t\tconst deltaFontSize = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'deltaFontSize')\n\t\t\t: () => 0;\n\n\t\t// use numberFormatter here only if there is a delta supplied\n\t\tconst numberFormatter = delta\n\t\t\t? Tools.getProperty(options, 'gauge', 'numberFormatter')\n\t\t\t: () => null;\n\n\t\tconst arrowSize = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'size'\n\t\t);\n\t\tconst numberSpacing = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'numberSpacing'\n\t\t);\n\n\t\tconst showPercentageSymbol = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'showPercentageSymbol'\n\t\t);\n\n\t\tconst numbersGroup = DOMUtils.appendOrSelect(svg, 'g.gauge-numbers');\n\n\t\t// Add the smaller number of the delta\n\t\tconst deltaGroup = DOMUtils.appendOrSelect(\n\t\t\tnumbersGroup,\n\t\t\t'g.gauge-delta'\n\t\t).attr(\n\t\t\t'transform',\n\t\t\t`translate(0, ${deltaFontSize(radius) + numberSpacing})`\n\t\t);\n\n\t\tconst deltaNumber = DOMUtils.appendOrSelect(\n\t\t\tdeltaGroup,\n\t\t\t'text.gauge-delta-number'\n\t\t);\n\t\tconst gaugeSymbol = showPercentageSymbol ? '%' : '';\n\n\t\tdeltaNumber.data(delta === null ? [] : [delta]);\n\n\t\tdeltaNumber\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t.classed('gauge-delta-number', true)\n\t\t\t.merge(deltaNumber)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', `${deltaFontSize(radius)}px`)\n\t\t\t.text((d) => `${numberFormatter(d)}${gaugeSymbol}`);\n\n\t\t// Add the caret for the delta number\n\t\tconst {\n\t\t\twidth: deltaNumberWidth,\n\t\t} = DOMUtils.getSVGElementSize(\n\t\t\tDOMUtils.appendOrSelect(svg, '.gauge-delta-number'),\n\t\t\t{ useBBox: true }\n\t\t);\n\n\t\t// check if delta arrow is disabled\n\t\tconst arrowEnabled = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'gauge',\n\t\t\t'deltaArrow',\n\t\t\t'enabled'\n\t\t);\n\t\tconst deltaArrow = deltaGroup\n\t\t\t.selectAll('svg.gauge-delta-arrow')\n\t\t\t.data(delta !== null && arrowEnabled ? [delta] : []);\n\n\t\tdeltaArrow\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.merge(deltaArrow)\n\t\t\t.attr('class', 'gauge-delta-arrow')\n\t\t\t.attr('x', -arrowSize(radius) - deltaNumberWidth / 2)\n\t\t\t.attr('y', -arrowSize(radius) / 2 - deltaFontSize(radius) * 0.35)\n\t\t\t.attr('width', arrowSize(radius))\n\t\t\t.attr('height', arrowSize(radius))\n\t\t\t.attr('viewBox', '0 0 16 16');\n\n\t\t// Needed to correctly size SVG in Firefox\n\t\tDOMUtils.appendOrSelect(deltaArrow, 'rect.gauge-delta-arrow-backdrop')\n\t\t\t.attr('width', '16')\n\t\t\t.attr('height', '16')\n\t\t\t.attr('fill', 'none');\n\n\t\t// Draw the arrow with status\n\t\tconst status = Tools.getProperty(options, 'gauge', 'status');\n\t\tDOMUtils.appendOrSelect(deltaArrow, 'polygon.gauge-delta-arrow')\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\tstatus !== null ? `gauge-delta-arrow status--${status}` : ''\n\t\t\t)\n\t\t\t.attr('points', self.getArrow(delta));\n\n\t\tdeltaArrow.exit().remove();\n\t\tdeltaNumber.exit().remove();\n\t}\n\n\tgetInnerRadius() {\n\t\t// Compute the outer radius needed\n\t\tconst radius = this.computeRadius();\n\t\tconst arcWidth = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'gauge',\n\t\t\t'arcWidth'\n\t\t);\n\t\treturn radius - arcWidth;\n\t}\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('path.arc-foreground')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOVER, {\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('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEMOVE, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Gauge.ARC_MOUSEOUT, {\n\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Helper functions\n\tprotected computeRadius() {\n\t\tconst options = this.getOptions();\n\t\tconst arcType = Tools.getProperty(options, 'gauge', 'type');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst radius =\n\t\t\tarcType === GaugeTypes.SEMI\n\t\t\t\t? Math.min(width / 2, height)\n\t\t\t\t: Math.min(width / 2, height / 2);\n\n\t\treturn radius;\n\t}\n}\n"]}
@@ -52,7 +52,7 @@ var Meter = /** @class */ (function (_super) {
52
52
  // if user provided a color for the bar, we dont want to attach a status class
53
53
  var className = status != null && !self.model.isUserProvidedColorScaleValid()
54
54
  ? "value status--" + status
55
- : '';
55
+ : 'value';
56
56
  // draw the value bar
57
57
  value
58
58
  .enter()
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { Roles, ColorClassNameTypes } from '../../interfaces';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\n\nexport class Meter extends Component {\n\ttype = 'meter';\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\t\tconst status = this.model.getStatus();\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// each meter has a scale for the value but no visual axis\n\t\tconst xScale = scaleLinear().domain([0, 100]).range([0, width]);\n\n\t\t// draw the container to hold the value\n\t\tDOMUtils.appendOrSelect(svg, 'rect.container')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'));\n\n\t\t// value larger than 100 will display as 100% on meter chart\n\t\tconst maximumBarWidth = data.value >= 100;\n\n\t\t// rect with the value binded\n\t\tconst value = svg.selectAll('rect.value').data([data]);\n\n\t\t// if user provided a color for the bar, we dont want to attach a status class\n\t\tconst className =\n\t\t\tstatus != null && !self.model.isUserProvidedColorScaleValid()\n\t\t\t\t? `value status--${status}`\n\t\t\t\t: '';\n\n\t\t// draw the value bar\n\t\tvalue\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('value', true)\n\t\t\t.merge(value)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: className,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'meter-bar-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('width', (d) =>\n\t\t\t\tmaximumBarWidth ? xScale(100) : xScale(d.value)\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the peak\n\t\tconst peakValue = Tools.getProperty(options, 'meter', 'peak');\n\n\t\t// update the peak if it is less than the value, it should be equal to the value\n\t\tconst updatedPeak =\n\t\t\tpeakValue !== null && peakValue < data.value\n\t\t\t\t? data.value\n\t\t\t\t: peakValue;\n\t\t// dont display peak if there isnt one\n\t\tconst peakData =\n\t\t\tupdatedPeak === null || maximumBarWidth ? [] : [updatedPeak];\n\n\t\t// if a peak is supplied within the domain, we want to render it\n\t\tconst peak = svg.selectAll('line.peak').data(peakData);\n\n\t\tpeak.enter()\n\t\t\t.append('line')\n\t\t\t.classed('peak', true)\n\t\t\t.merge(peak)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'peak-line-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('x1', (d) => xScale(d))\n\t\t\t.attr('x2', (d) => xScale(d))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'peak')\n\t\t\t.attr('aria-label', (d) => d);\n\n\t\tpeak.exit().remove();\n\n\t\t// this forces the meter chart to only take up as much height as needed (if no height is provided)\n\t\tthis.services.domUtils.setSVGMaxHeight();\n\t}\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport { Roles, ColorClassNameTypes } from '../../interfaces';\n\n// D3 Imports\nimport { scaleLinear } from 'd3-scale';\n\nexport class Meter extends Component {\n\ttype = 'meter';\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\t\tconst options = this.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\t\tconst status = this.model.getStatus();\n\n\t\tconst { width } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// each meter has a scale for the value but no visual axis\n\t\tconst xScale = scaleLinear().domain([0, 100]).range([0, width]);\n\n\t\t// draw the container to hold the value\n\t\tDOMUtils.appendOrSelect(svg, 'rect.container')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'));\n\n\t\t// value larger than 100 will display as 100% on meter chart\n\t\tconst maximumBarWidth = data.value >= 100;\n\n\t\t// rect with the value binded\n\t\tconst value = svg.selectAll('rect.value').data([data]);\n\n\t\t// if user provided a color for the bar, we dont want to attach a status class\n\t\tconst className =\n\t\t\tstatus != null && !self.model.isUserProvidedColorScaleValid()\n\t\t\t\t? `value status--${status}`\n\t\t\t\t: 'value';\n\n\t\t// draw the value bar\n\t\tvalue\n\t\t\t.enter()\n\t\t\t.append('rect')\n\t\t\t.classed('value', true)\n\t\t\t.merge(value)\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('height', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.attr('class', (d) =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: className,\n\t\t\t\t})\n\t\t\t)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'meter-bar-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('width', (d) =>\n\t\t\t\tmaximumBarWidth ? xScale(100) : xScale(d.value)\n\t\t\t)\n\t\t\t.style('fill', (d) => self.model.getFillColor(d[groupMapsTo]))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'value')\n\t\t\t.attr('aria-label', (d) => d.value);\n\n\t\t// draw the peak\n\t\tconst peakValue = Tools.getProperty(options, 'meter', 'peak');\n\n\t\t// update the peak if it is less than the value, it should be equal to the value\n\t\tconst updatedPeak =\n\t\t\tpeakValue !== null && peakValue < data.value\n\t\t\t\t? data.value\n\t\t\t\t: peakValue;\n\t\t// dont display peak if there isnt one\n\t\tconst peakData =\n\t\t\tupdatedPeak === null || maximumBarWidth ? [] : [updatedPeak];\n\n\t\t// if a peak is supplied within the domain, we want to render it\n\t\tconst peak = svg.selectAll('line.peak').data(peakData);\n\n\t\tpeak.enter()\n\t\t\t.append('line')\n\t\t\t.classed('peak', true)\n\t\t\t.merge(peak)\n\t\t\t.attr('y1', 0)\n\t\t\t.attr('y2', Tools.getProperty(options, 'meter', 'height'))\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'peak-line-update',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('x1', (d) => xScale(d))\n\t\t\t.attr('x2', (d) => xScale(d))\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'peak')\n\t\t\t.attr('aria-label', (d) => d);\n\n\t\tpeak.exit().remove();\n\n\t\t// this forces the meter chart to only take up as much height as needed (if no height is provided)\n\t\tthis.services.domUtils.setSVGMaxHeight();\n\t}\n}\n"]}
package/configuration.js CHANGED
@@ -55,7 +55,6 @@ export var ruler = {
55
55
  export var baseTooltip = {
56
56
  enabled: true,
57
57
  showTotal: true,
58
- valueFormatter: function (d) { return d.toLocaleString(); },
59
58
  truncation: standardTruncationOptions,
60
59
  };
61
60
  // These options will be managed by Tools.mergeDefaultChartOptions
@@ -265,6 +264,7 @@ var gaugeChart = Tools.merge({}, chart, {
265
264
  size: function (radius) { return radius / 8; },
266
265
  enabled: true,
267
266
  },
267
+ showPercentageSymbol: true,
268
268
  status: null,
269
269
  numberSpacing: 10,
270
270
  deltaFontSize: function (radius) { return radius / 8; },