@fluentui/react-charting 5.23.96 → 5.23.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +34 -1
- package/CHANGELOG.md +14 -2
- package/dist/react-charting.d.ts +8 -2
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/etc/react-charting.api.md +8 -2
- package/lib/components/ChartTable/ChartTable.base.js +2 -2
- package/lib/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.types.d.ts +9 -2
- package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +0 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +145 -28
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +40 -24
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/ChartTable/ChartTable.base.js +2 -2
- package/lib-amd/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-amd/components/ChartTable/ChartTable.types.d.ts +9 -2
- package/lib-amd/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +0 -1
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +152 -37
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +1 -0
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +39 -24
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.base.js +2 -2
- package/lib-commonjs/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.types.d.ts +9 -2
- package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +0 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +152 -36
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +39 -23
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/package.json +2 -2
- package/src/components/ChartTable/ChartTable.types.ts +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-scale", "@fluentui/react/lib/Utilities", "@fluentui/react/lib/Callout", "@fluentui/react-focus", "../../utilities/index", "../../index", "../../utilities/image-export-utils"], function (require, exports, tslib_1, React, d3_array_1, d3_selection_1, d3_scale_1, Utilities_1, Callout_1, react_focus_1, index_1, index_2, image_export_utils_1) {
|
|
1
|
+
define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-scale", "@fluentui/react/lib/Utilities", "@fluentui/react/lib/Callout", "@fluentui/react-focus", "../../utilities/index", "../../index", "../../utilities/image-export-utils", "d3-color"], function (require, exports, tslib_1, React, d3_array_1, d3_selection_1, d3_scale_1, Utilities_1, Callout_1, react_focus_1, index_1, index_2, image_export_utils_1, d3_color_1) {
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.GroupedVerticalBarChartBase = void 0;
|
|
@@ -153,28 +153,29 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
|
|
|
153
153
|
var xPoint_1 = xScale1(legendTitle) + (xScale1.bandwidth() - _this._barWidth) / 2;
|
|
154
154
|
var isLegendActive_1 = _this._legendHighlighted(legendTitle) || _this._noLegendHighlighted();
|
|
155
155
|
var barOpacity_1 = isLegendActive_1 ? '' : '0.1';
|
|
156
|
-
var gradientId_1 = (0, Utilities_1.getId)('GVBC_Gradient') + "_".concat(singleSet.indexNum, "_").concat(legendIndex);
|
|
157
|
-
var startColor_1 = barPoints[0].color;
|
|
158
|
-
var endColor = startColor_1;
|
|
159
|
-
if (_this.props.enableGradient) {
|
|
160
|
-
startColor_1 = barPoints[0].gradient[0];
|
|
161
|
-
endColor = barPoints[0].gradient[1];
|
|
162
|
-
singleGroup.push(React.createElement("linearGradient", { key: gradientId_1, id: gradientId_1, x1: "0%", y1: "100%", x2: "0%", y2: "0%" },
|
|
163
|
-
React.createElement("stop", { offset: "0", stopColor: startColor_1 }),
|
|
164
|
-
React.createElement("stop", { offset: "100%", stopColor: endColor })));
|
|
165
|
-
}
|
|
166
156
|
var barTotalValue_1 = 0;
|
|
167
157
|
var yBaseline = yBarScale_1(_this.Y_ORIGIN);
|
|
168
158
|
var yPositiveStart_1 = yBaseline;
|
|
169
159
|
var yNegativeStart_1 = yBaseline;
|
|
170
160
|
var yPoint_1 = _this.Y_ORIGIN;
|
|
171
161
|
barPoints.forEach(function (pointData, pointIndex) {
|
|
162
|
+
var _a, _b;
|
|
172
163
|
if (!pointData.data) {
|
|
173
164
|
// Not rendering data with 0.
|
|
174
165
|
return;
|
|
175
166
|
}
|
|
167
|
+
var gradientId = (0, Utilities_1.getId)('GVBC_Gradient') + "_".concat(singleSet.indexNum, "_").concat(legendIndex, "_").concat(pointIndex);
|
|
168
|
+
if (_this.props.enableGradient) {
|
|
169
|
+
var startColor = ((_a = pointData.gradient) === null || _a === void 0 ? void 0 : _a[0]) || pointData.color;
|
|
170
|
+
var endColor = ((_b = pointData.gradient) === null || _b === void 0 ? void 0 : _b[1]) || pointData.color;
|
|
171
|
+
singleGroup.push(React.createElement("defs", { key: "defs_".concat(gradientId) },
|
|
172
|
+
React.createElement("linearGradient", { id: gradientId, x1: "0%", y1: "100%", x2: "0%", y2: "0%" },
|
|
173
|
+
React.createElement("stop", { offset: "0%", stopColor: startColor }),
|
|
174
|
+
React.createElement("stop", { offset: "100%", stopColor: endColor }))));
|
|
175
|
+
}
|
|
176
176
|
var barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);
|
|
177
177
|
var height = Math.max(yBarScale_1(_this.Y_ORIGIN) - yBarScale_1(Math.abs(pointData.data)), MIN_BAR_HEIGHT);
|
|
178
|
+
var pointColor = pointData.color; // Use the color of the current point
|
|
178
179
|
if (pointData.data >= _this.Y_ORIGIN) {
|
|
179
180
|
yPositiveStart_1 -= height + barGap;
|
|
180
181
|
yPoint_1 = yPositiveStart_1;
|
|
@@ -183,7 +184,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
|
|
|
183
184
|
yPoint_1 = yNegativeStart_1 + barGap;
|
|
184
185
|
yNegativeStart_1 = yPoint_1 + height;
|
|
185
186
|
}
|
|
186
|
-
singleGroup.push(React.createElement("rect", { key: "".concat(singleSet.indexNum, "-").concat(legendIndex, "-").concat(pointIndex), className: _this._classNames.opacityChangeOnHover, height: height, width: _this._barWidth, x: xPoint_1, y: yPoint_1, "data-is-focusable": !_this.props.hideTooltip && isLegendActive_1, opacity: barOpacity_1, fill: _this.props.enableGradient ? "url(#".concat(
|
|
187
|
+
singleGroup.push(React.createElement("rect", { key: "".concat(singleSet.indexNum, "-").concat(legendIndex, "-").concat(pointIndex), className: _this._classNames.opacityChangeOnHover, height: height, width: _this._barWidth, x: xPoint_1, y: yPoint_1, "data-is-focusable": !_this.props.hideTooltip && isLegendActive_1, opacity: barOpacity_1, fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : pointColor, rx: _this.props.roundCorners ? 3 : 0, onMouseOver: _this._onBarHover.bind(_this, pointData, singleSet), onMouseMove: _this._onBarHover.bind(_this, pointData, singleSet), onMouseOut: _this._onBarLeave, onFocus: _this._onBarFocus.bind(_this, pointData, singleSet), onBlur: _this._onBarLeave, onClick: _this.props.href ? _this._redirectToUrl.bind(_this, _this.props.href) : pointData.onClick, "aria-label": _this._getAriaLabel(pointData, singleSet.xAxisPoint), role: "img" }));
|
|
187
188
|
barTotalValue_1 += pointData.data;
|
|
188
189
|
});
|
|
189
190
|
if (barTotalValue_1 !== null && !_this.props.hideLabels && _this._barWidth >= 16 && isLegendActive_1) {
|
|
@@ -357,6 +358,12 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
|
|
|
357
358
|
return ((chartTitle ? "".concat(chartTitle, ". ") : '') +
|
|
358
359
|
"Vertical bar chart with ".concat(_this._xAxisLabels.length, " groups of ").concat(_this._legends.length, " bars each. "));
|
|
359
360
|
};
|
|
361
|
+
// Lighten/Darken a color by a given percentage using d3-scale
|
|
362
|
+
_this._adjustColor = function (color, percentage, lightenColor, isDarkTheme) {
|
|
363
|
+
var targetColor = lightenColor ? (isDarkTheme ? '#000000' : '#ffffff') : isDarkTheme ? '#ffffff' : '#000000';
|
|
364
|
+
var colorInterpolator = (0, d3_scale_1.scaleLinear)().domain([0, 1]).range([color, targetColor]);
|
|
365
|
+
return (0, d3_color_1.rgb)(colorInterpolator(percentage)).formatRgb();
|
|
366
|
+
};
|
|
360
367
|
_this._addDefaultColors = function (data) {
|
|
361
368
|
var _a;
|
|
362
369
|
_this._legendColorMap = {};
|
|
@@ -364,21 +371,29 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
|
|
|
364
371
|
return ((_a = data === null || data === void 0 ? void 0 : data.map(function (point) {
|
|
365
372
|
var _a, _b;
|
|
366
373
|
return tslib_1.__assign(tslib_1.__assign({}, point), { series: (_b = (_a = point.series) === null || _a === void 0 ? void 0 : _a.map(function (seriesPoint) {
|
|
367
|
-
var _a, _b, _c, _d;
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
if (
|
|
374
|
-
|
|
375
|
-
startColor = ((
|
|
376
|
-
endColor = ((
|
|
374
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
375
|
+
var startColor = seriesPoint.color
|
|
376
|
+
? seriesPoint.color
|
|
377
|
+
: (0, index_1.getNextColor)(colorIndex, 0, (_a = _this.props.theme) === null || _a === void 0 ? void 0 : _a.isInverted);
|
|
378
|
+
var endColor = startColor;
|
|
379
|
+
if (_this.props.enableGradient) {
|
|
380
|
+
if (seriesPoint.color) {
|
|
381
|
+
// Generate gradient colors based on seriesPoint.color
|
|
382
|
+
startColor = _this._adjustColor(seriesPoint.color || endColor, 0.2, false, (_b = _this.props.theme) === null || _b === void 0 ? void 0 : _b.isInverted);
|
|
383
|
+
endColor = _this._adjustColor(seriesPoint.color || startColor, 0.2, true, (_c = _this.props.theme) === null || _c === void 0 ? void 0 : _c.isInverted);
|
|
377
384
|
}
|
|
385
|
+
else {
|
|
386
|
+
var nextGradient = (0, index_1.getNextGradient)(colorIndex, 0, (_d = _this.props.theme) === null || _d === void 0 ? void 0 : _d.isInverted);
|
|
387
|
+
startColor = ((_e = seriesPoint.gradient) === null || _e === void 0 ? void 0 : _e[0]) || nextGradient[0];
|
|
388
|
+
endColor = ((_f = seriesPoint.gradient) === null || _f === void 0 ? void 0 : _f[1]) || nextGradient[1];
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
var pointGradient = [startColor, endColor];
|
|
392
|
+
if (!_this._legendColorMap[seriesPoint.legend]) {
|
|
378
393
|
_this._legendColorMap[seriesPoint.legend] = [startColor, endColor];
|
|
379
|
-
colorIndex += 1;
|
|
380
394
|
}
|
|
381
|
-
|
|
395
|
+
colorIndex += 1;
|
|
396
|
+
return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, seriesPoint), { color: (_g = seriesPoint.color) !== null && _g !== void 0 ? _g : _this._legendColorMap[seriesPoint.legend][0] }), (_this.props.enableGradient ? { gradient: pointGradient } : {}));
|
|
382
397
|
})) !== null && _b !== void 0 ? _b : [] });
|
|
383
398
|
})) !== null && _a !== void 0 ? _a : []);
|
|
384
399
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport {\n classNamesFunction,\n getId,\n getRTL,\n initializeComponentRef,\n memoizeFunction,\n warnDeprecations,\n} from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatValueLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextGradient,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n YAxisType,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n Legends,\n} from '../../index';\nimport { IChart, IImageExportOptions } from '../../types/index';\nimport { toImage } from '../../utilities/image-export-utils';\nimport { ILegendContainer } from '../Legends/index';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface IGVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n selectedLegends: string[];\n}\n\nexport class GroupedVerticalBarChartBase\n extends React.Component<IGroupedVerticalBarChartProps, IGroupedVerticalBarChartState>\n implements IChart\n{\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n };\n\n private _createSet: (\n data: IGroupedVerticalBarChartData[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { legends: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _legends: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n private _groupedVerticalBarGraph: JSX.Element[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _yMax: number;\n private _calloutId: string;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n private _cartesianChartRef: React.RefObject<IChart>;\n private _legendsRef: React.RefObject<ILegendContainer>;\n private _legendColorMap: Record<string, [string, string]> = {};\n private readonly Y_ORIGIN: number = 0;\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._createSet = memoizeFunction((data: IGroupedVerticalBarChartData[]) => this._createDataSetOfGVBC(data));\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegends: props.legendProps?.selectedLegends || [],\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._calloutId = getId('callout');\n this._tooltipId = getId('GVBCTooltipId_');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n this._cartesianChartRef = React.createRef();\n this._legendsRef = React.createRef();\n }\n\n public componentDidUpdate(prevProps: IGroupedVerticalBarChartProps): void {\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, this.props.legendProps?.selectedLegends)) {\n this.setState({\n selectedLegends: this.props.legendProps?.selectedLegends || [],\n });\n }\n }\n\n public render(): React.ReactNode {\n const points = this._addDefaultColors(this.props.data);\n const { legends, xAxisLabels, datasetForBars } = this._createSet(points);\n this._legends = legends;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n this._xAxisType = getTypeOfAxis(points[0].name, true) as XAxisTypes;\n const legendBars: JSX.Element = this._getLegendData();\n this._adjustProps();\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = this._getMinMaxOfYAxis(this._datasetForBars).endValue;\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\n color: this.state.color,\n Legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty() ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n ref={this._cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{this._groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n public get chartContainer(): HTMLElement | null {\n return this._cartesianChartRef.current?.chartContainer || null;\n }\n\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return toImage(this._cartesianChartRef.current?.chartContainer, this._legendsRef.current?.toSVG, this._isRtl, opts);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _getMinMaxOfYAxis = (datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) => {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: IGVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n };\n\n private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) => {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n };\n\n private _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = this._createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n xScale0.bandwidth() / (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE),\n );\n this._groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * this._barWidth;\n\n const xScale1 = this._createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(\n this._buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (points: IGroupedVerticalBarChartData[]) => {\n const legends = new Set<string>();\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points.forEach((point: IGroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n legends.add(seriesPoint.legend);\n });\n });\n const datasetForBars = this._createDataset(points);\n return {\n legends: Array.from(legends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n focusEvent: React.FocusEvent<SVGElement>,\n ): void => {\n this.setState({\n refSelected: focusEvent.currentTarget,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n href ? (window.location.href = href) : '';\n };\n\n private _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n this._legends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(legendTitle) + (xScale1.bandwidth() - this._barWidth) / 2;\n const isLegendActive = this._legendHighlighted(legendTitle) || this._noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${legendIndex}`;\n let startColor = barPoints[0].color;\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n startColor = barPoints[0].gradient![0];\n endColor = barPoints[0].gradient![1];\n\n singleGroup.push(\n <linearGradient key={gradientId} id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>,\n );\n }\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(this.Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = this.Y_ORIGIN;\n\n barPoints.forEach((pointData: IGVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(this.Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n if (pointData.data >= this.Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={this._classNames.opacityChangeOnHover}\n height={height}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!this.props.hideTooltip && isLegendActive}\n opacity={barOpacity}\n fill={this.props.enableGradient ? `url(#${gradientId})` : startColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\n role=\"img\"\n />,\n );\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !this.props.hideLabels && this._barWidth >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + this._barWidth / 2}\n y={barTotalValue >= this.Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {formatValueLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - this._groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n private _createDataset = (points: IGroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n points.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, IGVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = Object.values(legendToBarPoint);\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n });\n return datasetForBars;\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._legends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (): JSX.Element => {\n const actions: ILegend[] = [];\n\n this._legends.forEach((legendTitle: string) => {\n const legend: ILegend = {\n title: legendTitle,\n color: this._legendColorMap[legendTitle][0],\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n onChange={this._onLegendSelectionChange.bind(this)}\n ref={this._legendsRef}\n />\n );\n };\n\n private _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: ILegend,\n ): void {\n if (this.props.legendProps?.canSelectMultipleLegends) {\n this.setState({ selectedLegends });\n } else {\n this.setState({ selectedLegends: selectedLegends.slice(-1) });\n }\n if (this.props.legendProps?.onChange) {\n this.props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return this._getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this._getHighlightedLegend().length === 0;\n };\n\n private _getHighlightedLegend() {\n return this.state.selectedLegends.length > 0\n ? this.state.selectedLegends\n : this.state.activeLegend\n ? [this.state.activeLegend]\n : [];\n }\n\n private _getAriaLabel = (point: IGVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth =\n containerWidth - (this.margins.left! + MIN_DOMAIN_MARGIN) - (this.margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = this._xAxisInnerPadding / (1 - this._xAxisInnerPadding);\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n this._domainMargin = 0;\n } else if (this.props.barwidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * this._barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (this.props.mode === 'plotly' && this._xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = totalWidth / (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth, barBandwidth);\n const groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!this.props.hideTickOverlap) {\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(this._xAxisLabels) + 20;\n reqWidth = (this._xAxisLabels.length - this._xAxisInnerPadding) * step;\n margin2 = (totalWidth - reqWidth) / 2;\n }\n\n this._domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n\n private _isChartEmpty(): boolean {\n return !(\n this.props.data &&\n this.props.data.length > 0 &&\n this.props.data.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._legends.length * bar_width + (this._legends.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._xAxisLabels.length} groups of ${this._legends.length} bars each. `\n );\n };\n\n private _addDefaultColors = (data?: IGroupedVerticalBarChartData[]): IGroupedVerticalBarChartData[] => {\n this._legendColorMap = {};\n let colorIndex = 0;\n\n return (\n data?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n if (!this._legendColorMap[seriesPoint.legend]) {\n let startColor = seriesPoint.color\n ? seriesPoint.color\n : getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n const nextGradient = getNextGradient(colorIndex, 0, this.props.theme?.isInverted);\n startColor = seriesPoint.gradient?.[0] || nextGradient[0];\n endColor = seriesPoint.gradient?.[1] || nextGradient[1];\n }\n\n this._legendColorMap[seriesPoint.legend] = [startColor, endColor];\n colorIndex += 1;\n }\n\n return {\n ...seriesPoint,\n color: this._legendColorMap[seriesPoint.legend][0],\n ...(this.props.enableGradient ? { gradient: this._legendColorMap[seriesPoint.legend] } : {}),\n };\n }) ?? [],\n };\n }) ?? []\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport {\n classNamesFunction,\n getId,\n getRTL,\n initializeComponentRef,\n memoizeFunction,\n warnDeprecations,\n} from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatValueLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextGradient,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n YAxisType,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n Legends,\n} from '../../index';\nimport { IChart, IImageExportOptions } from '../../types/index';\nimport { toImage } from '../../utilities/image-export-utils';\nimport { ILegendContainer } from '../Legends/index';\nimport { rgb } from 'd3-color';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface IGVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n selectedLegends: string[];\n}\n\nexport class GroupedVerticalBarChartBase\n extends React.Component<IGroupedVerticalBarChartProps, IGroupedVerticalBarChartState>\n implements IChart\n{\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n };\n\n private _createSet: (\n data: IGroupedVerticalBarChartData[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { legends: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _legends: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n private _groupedVerticalBarGraph: JSX.Element[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _yMax: number;\n private _calloutId: string;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n private _cartesianChartRef: React.RefObject<IChart>;\n private _legendsRef: React.RefObject<ILegendContainer>;\n private _legendColorMap: Record<string, [string, string]> = {};\n private readonly Y_ORIGIN: number = 0;\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._createSet = memoizeFunction((data: IGroupedVerticalBarChartData[]) => this._createDataSetOfGVBC(data));\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegends: props.legendProps?.selectedLegends || [],\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._calloutId = getId('callout');\n this._tooltipId = getId('GVBCTooltipId_');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n this._cartesianChartRef = React.createRef();\n this._legendsRef = React.createRef();\n }\n\n public componentDidUpdate(prevProps: IGroupedVerticalBarChartProps): void {\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, this.props.legendProps?.selectedLegends)) {\n this.setState({\n selectedLegends: this.props.legendProps?.selectedLegends || [],\n });\n }\n }\n\n public render(): React.ReactNode {\n const points = this._addDefaultColors(this.props.data);\n const { legends, xAxisLabels, datasetForBars } = this._createSet(points);\n this._legends = legends;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n this._xAxisType = getTypeOfAxis(points[0].name, true) as XAxisTypes;\n const legendBars: JSX.Element = this._getLegendData();\n this._adjustProps();\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = this._getMinMaxOfYAxis(this._datasetForBars).endValue;\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\n color: this.state.color,\n Legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty() ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n ref={this._cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{this._groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n public get chartContainer(): HTMLElement | null {\n return this._cartesianChartRef.current?.chartContainer || null;\n }\n\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return toImage(this._cartesianChartRef.current?.chartContainer, this._legendsRef.current?.toSVG, this._isRtl, opts);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _getMinMaxOfYAxis = (datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) => {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: IGVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n };\n\n private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) => {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n };\n\n private _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = this._createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n xScale0.bandwidth() / (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE),\n );\n this._groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * this._barWidth;\n\n const xScale1 = this._createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(\n this._buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (points: IGroupedVerticalBarChartData[]) => {\n const legends = new Set<string>();\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points.forEach((point: IGroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n legends.add(seriesPoint.legend);\n });\n });\n const datasetForBars = this._createDataset(points);\n return {\n legends: Array.from(legends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n focusEvent: React.FocusEvent<SVGElement>,\n ): void => {\n this.setState({\n refSelected: focusEvent.currentTarget,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n href ? (window.location.href = href) : '';\n };\n\n private _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n this._legends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(legendTitle) + (xScale1.bandwidth() - this._barWidth) / 2;\n const isLegendActive = this._legendHighlighted(legendTitle) || this._noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(this.Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = this.Y_ORIGIN;\n\n barPoints.forEach((pointData: IGVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${legendIndex}_${pointIndex}`;\n if (this.props.enableGradient) {\n const startColor = pointData.gradient?.[0] || pointData.color;\n const endColor = pointData.gradient?.[1] || pointData.color;\n\n singleGroup.push(\n <defs key={`defs_${gradientId}`}>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>,\n );\n }\n\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(this.Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n const pointColor = pointData.color; // Use the color of the current point\n\n if (pointData.data >= this.Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={this._classNames.opacityChangeOnHover}\n height={height}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!this.props.hideTooltip && isLegendActive}\n opacity={barOpacity}\n fill={this.props.enableGradient ? `url(#${gradientId})` : pointColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\n role=\"img\"\n />,\n );\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !this.props.hideLabels && this._barWidth >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + this._barWidth / 2}\n y={barTotalValue >= this.Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {formatValueLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - this._groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n private _createDataset = (points: IGroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n points.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, IGVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = Object.values(legendToBarPoint);\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n });\n return datasetForBars;\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._legends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (): JSX.Element => {\n const actions: ILegend[] = [];\n\n this._legends.forEach((legendTitle: string) => {\n const legend: ILegend = {\n title: legendTitle,\n color: this._legendColorMap[legendTitle][0],\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n onChange={this._onLegendSelectionChange.bind(this)}\n ref={this._legendsRef}\n />\n );\n };\n\n private _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: ILegend,\n ): void {\n if (this.props.legendProps?.canSelectMultipleLegends) {\n this.setState({ selectedLegends });\n } else {\n this.setState({ selectedLegends: selectedLegends.slice(-1) });\n }\n if (this.props.legendProps?.onChange) {\n this.props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return this._getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this._getHighlightedLegend().length === 0;\n };\n\n private _getHighlightedLegend() {\n return this.state.selectedLegends.length > 0\n ? this.state.selectedLegends\n : this.state.activeLegend\n ? [this.state.activeLegend]\n : [];\n }\n\n private _getAriaLabel = (point: IGVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth =\n containerWidth - (this.margins.left! + MIN_DOMAIN_MARGIN) - (this.margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = this._xAxisInnerPadding / (1 - this._xAxisInnerPadding);\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n this._domainMargin = 0;\n } else if (this.props.barwidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * this._barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (this.props.mode === 'plotly' && this._xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = totalWidth / (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth, barBandwidth);\n const groupWidth = (this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!this.props.hideTickOverlap) {\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(this._xAxisLabels) + 20;\n reqWidth = (this._xAxisLabels.length - this._xAxisInnerPadding) * step;\n margin2 = (totalWidth - reqWidth) / 2;\n }\n\n this._domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n\n private _isChartEmpty(): boolean {\n return !(\n this.props.data &&\n this.props.data.length > 0 &&\n this.props.data.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._legends.length * bar_width + (this._legends.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + this._legends.length + (this._legends.length - 1) * BAR_GAP_RATE),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._xAxisLabels.length} groups of ${this._legends.length} bars each. `\n );\n };\n\n // Lighten/Darken a color by a given percentage using d3-scale\n private _adjustColor = (color: string, percentage: number, lightenColor: boolean, isDarkTheme: boolean): string => {\n const targetColor = lightenColor ? (isDarkTheme ? '#000000' : '#ffffff') : isDarkTheme ? '#ffffff' : '#000000';\n const colorInterpolator = d3ScaleLinear<string>().domain([0, 1]).range([color, targetColor]);\n return rgb(colorInterpolator(percentage)).formatRgb();\n };\n\n private _addDefaultColors = (data?: IGroupedVerticalBarChartData[]): IGroupedVerticalBarChartData[] => {\n this._legendColorMap = {};\n let colorIndex = 0;\n\n return (\n data?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n let startColor = seriesPoint.color\n ? seriesPoint.color\n : getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n if (seriesPoint.color) {\n // Generate gradient colors based on seriesPoint.color\n startColor = this._adjustColor(\n seriesPoint.color || endColor,\n 0.2,\n false,\n this.props.theme?.isInverted!,\n );\n endColor = this._adjustColor(\n seriesPoint.color || startColor,\n 0.2,\n true,\n this.props.theme?.isInverted!,\n );\n } else {\n const nextGradient = getNextGradient(colorIndex, 0, this.props.theme?.isInverted);\n startColor = seriesPoint.gradient?.[0] || nextGradient[0];\n endColor = seriesPoint.gradient?.[1] || nextGradient[1];\n }\n }\n const pointGradient: [string, string] = [startColor, endColor];\n if (!this._legendColorMap[seriesPoint.legend]) {\n this._legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? this._legendColorMap[seriesPoint.legend][0],\n ...(this.props.enableGradient ? { gradient: pointGradient } : {}),\n };\n }) ?? [],\n };\n }) ?? []\n );\n };\n}\n"]}
|
|
@@ -38,8 +38,8 @@ var ChartTableBase = /** @class */ (function (_super) {
|
|
|
38
38
|
width: width ? "".concat(width, "px") : '100%',
|
|
39
39
|
} },
|
|
40
40
|
React.createElement("thead", null,
|
|
41
|
-
React.createElement("tr", null, headers.map(function (header, idx) { return (React.createElement("th", { key: idx, className: classNames.headerCell }, header)); }))),
|
|
42
|
-
rows && rows.length > 0 && (React.createElement("tbody", null, rows.map(function (row, rowIdx) { return (React.createElement("tr", { key: rowIdx }, row.map(function (cell, colIdx) { return (React.createElement("td", { key: colIdx, className: classNames.bodyCell }, cell)); }))); })))))))));
|
|
41
|
+
React.createElement("tr", null, headers.map(function (header, idx) { return (React.createElement("th", { key: idx, className: classNames.headerCell, style: header === null || header === void 0 ? void 0 : header.style }, header.value)); }))),
|
|
42
|
+
rows && rows.length > 0 && (React.createElement("tbody", null, rows.map(function (row, rowIdx) { return (React.createElement("tr", { key: rowIdx }, row.map(function (cell, colIdx) { return (React.createElement("td", { key: colIdx, className: classNames.bodyCell, style: cell === null || cell === void 0 ? void 0 : cell.style }, cell.value)); }))); })))))))));
|
|
43
43
|
};
|
|
44
44
|
return ChartTableBase;
|
|
45
45
|
}(React.Component));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTable.base.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.base.tsx"],"names":[],"mappings":";;;;AAAA,6BAA+B;AAG/B,2DAAmG;AAEnG,yEAA6D;AAE7D,IAAM,aAAa,GAAG,IAAA,8BAAkB,GAA4C,CAAC;AAErF;IAAoC,0CAAiC;IAInE,wBAAY,KAAuB;QACjC,YAAA,MAAK,YAAC,KAAK,CAAC,SAAC;QAIR,aAAO,GAAG,UAAC,IAA0B;YAC1C,OAAO,IAAA,4BAAO,EAAC,KAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC;QALA,IAAA,kCAAsB,EAAC,KAAI,CAAC,CAAC;QAC7B,KAAI,CAAC,MAAM,GAAG,IAAA,kBAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;IACpC,CAAC;IAKM,+BAAM,GAAb;QAAA,iBA4DC;QA3DO,IAAA,KAAkD,IAAI,CAAC,KAAK,EAA1D,OAAO,aAAA,EAAE,IAAI,UAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,MAAM,YAAA,EAAE,KAAK,WAAe,CAAC;QAEnE,IAAM,UAAU,GAAG,aAAa,CAAC,MAAO,EAAE;YACxC,KAAK,EAAE,KAAM;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,qDAA4B,CAAC;QACtC,CAAC;QAED,OAAO,CACL,6BACE,GAAG,EAAE,UAAA,EAAE,IAAI,OAAA,CAAC,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAArB,CAAqB,EAChC,SAAS,EAAE,UAAU,CAAC,IAAI,EAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAG,MAAM,OAAI,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAEvE,6BAAK,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,MAAM,EAAE,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,OAAO;gBACpD,uCAAe,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;oBACnD,6BACE,KAAK,EAAE;4BACL,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAG,MAAM,OAAI,CAAC,CAAC,CAAC,OAAO;4BAC3C,SAAS,EAAE,MAAM;4BACjB,SAAS,EAAE,MAAM;yBAClB;wBAED,+BACE,SAAS,EAAE,UAAU,CAAC,KAAK,EAC3B,KAAK,EAAE;gCACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,UAAG,KAAK,OAAI,CAAC,CAAC,CAAC,MAAM;6BACrC;4BAED;gCACE,gCACG,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,IAAK,OAAA,CAC5B,4BAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"ChartTable.base.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IChartTableProps } from './ChartTable.types';\nimport { IChartTableStyleProps, IChartTableStyles } from '../../index';\nimport { classNamesFunction, getRTL, initializeComponentRef } from '@fluentui/react/lib/Utilities';\nimport { IImageExportOptions } from '../../types/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\nconst getClassNames = classNamesFunction<IChartTableStyleProps, IChartTableStyles>();\n\nexport class ChartTableBase extends React.Component<IChartTableProps> {\n private _isRTL: boolean;\n private _rootElem: HTMLDivElement | null;\n\n constructor(props: IChartTableProps) {\n super(props);\n initializeComponentRef(this);\n this._isRTL = getRTL(props.theme);\n }\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return toImage(this._rootElem, undefined, this._isRTL, opts);\n };\n\n public render(): JSX.Element {\n const { headers, rows, width, height, styles, theme } = this.props;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n });\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n\n return (\n <div\n ref={el => (this._rootElem = el)}\n className={classNames.root}\n style={{ height: height ? `${height}px` : '650px', overflow: 'hidden' }}\n >\n <svg width={width ?? '100%'} height={height ?? '650px'}>\n <foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classNames.table}\n style={{\n width: width ? `${width}px` : '100%',\n }}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => (\n <th key={idx} className={classNames.headerCell} style={header?.style}>\n {header.value}\n </th>\n ))}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => (\n <td key={colIdx} className={classNames.bodyCell} style={cell?.style}>\n {cell.value}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { ITheme, IStyle } from '@fluentui/react/lib/Styling';
|
|
2
3
|
import { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';
|
|
3
4
|
import { IChart } from '../../types/index';
|
|
@@ -13,11 +14,17 @@ export interface IChartTableProps {
|
|
|
13
14
|
/**
|
|
14
15
|
* 1d or 2d Array of header values.
|
|
15
16
|
*/
|
|
16
|
-
headers:
|
|
17
|
+
headers: {
|
|
18
|
+
value: string | number | boolean | null;
|
|
19
|
+
style?: React.CSSProperties;
|
|
20
|
+
}[];
|
|
17
21
|
/**
|
|
18
22
|
* Array of rows. Each row corresponds to one data entry under each column.
|
|
19
23
|
*/
|
|
20
|
-
rows:
|
|
24
|
+
rows: {
|
|
25
|
+
value: string | number | boolean | null;
|
|
26
|
+
style?: React.CSSProperties;
|
|
27
|
+
}[][];
|
|
21
28
|
/**
|
|
22
29
|
* Optional width for the table
|
|
23
30
|
* @default '100%'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTable.types.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IChart } from '../../types/index';\n\nexport interface IChartTableStyleProps {\n theme: ITheme;\n className?: string;\n}\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface IChartTableProps {\n /**\n * 1d or 2d Array of header values.\n */\n headers:
|
|
1
|
+
{"version":3,"file":"ChartTable.types.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IChart } from '../../types/index';\n\nexport interface IChartTableStyleProps {\n theme: ITheme;\n className?: string;\n}\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface IChartTableProps {\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IChartTableStyleProps, IChartTableStyles>;\n\n /**\n * Optional callback to access the IChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IChart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface IChartTableStyles {\n root?: IStyle;\n table?: IStyle;\n headerCell?: IStyle;\n bodyCell?: IStyle;\n}\n"]}
|
|
@@ -32,6 +32,5 @@ export declare const projectPolarToCartesian: (input: PlotlySchema) => PlotlySch
|
|
|
32
32
|
* @param trace
|
|
33
33
|
*/
|
|
34
34
|
export declare function findArrayAttributes(trace: any): void;
|
|
35
|
-
export declare const isInvalidValue: (value: any) => boolean;
|
|
36
35
|
export declare const getNumberAtIndexOrDefault: (data: PlotData['z'] | undefined, index: number) => number | undefined;
|
|
37
36
|
export declare const getValidXYRanges: (series: Partial<PlotData>) => [number, number][];
|