@fluentui/react-charting 5.19.22 → 5.19.24

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.
Files changed (44) hide show
  1. package/CHANGELOG.json +57 -1
  2. package/CHANGELOG.md +23 -2
  3. package/bundle-size/AreaChart.fixture.js +9 -0
  4. package/bundle-size/VerticalBarChart.fixture.js +9 -0
  5. package/dist/react-charting.d.ts +14 -1
  6. package/dist/react-charting.js +1 -1
  7. package/dist/react-charting.min.js +1 -1
  8. package/etc/react-charting.api.md +10 -1
  9. package/lib/components/GaugeChart/GaugeChart.base.d.ts +10 -3
  10. package/lib/components/GaugeChart/GaugeChart.base.js +74 -37
  11. package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
  12. package/lib/components/GaugeChart/GaugeChart.types.d.ts +13 -1
  13. package/lib/components/GaugeChart/GaugeChart.types.js +8 -0
  14. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  15. package/lib/components/SankeyChart/SankeyChart.base.d.ts +25 -11
  16. package/lib/components/SankeyChart/SankeyChart.base.js +151 -86
  17. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  18. package/lib/version.js +1 -1
  19. package/lib/version.js.map +1 -1
  20. package/lib-amd/components/GaugeChart/GaugeChart.base.d.ts +10 -3
  21. package/lib-amd/components/GaugeChart/GaugeChart.base.js +77 -37
  22. package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
  23. package/lib-amd/components/GaugeChart/GaugeChart.types.d.ts +13 -1
  24. package/lib-amd/components/GaugeChart/GaugeChart.types.js +9 -1
  25. package/lib-amd/components/GaugeChart/GaugeChart.types.js.map +1 -1
  26. package/lib-amd/components/SankeyChart/SankeyChart.base.d.ts +25 -11
  27. package/lib-amd/components/SankeyChart/SankeyChart.base.js +156 -88
  28. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  29. package/lib-amd/version.js +1 -1
  30. package/lib-amd/version.js.map +1 -1
  31. package/lib-commonjs/components/GaugeChart/GaugeChart.base.d.ts +10 -3
  32. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +77 -37
  33. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
  34. package/lib-commonjs/components/GaugeChart/GaugeChart.types.d.ts +13 -1
  35. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js +9 -1
  36. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  37. package/lib-commonjs/components/SankeyChart/SankeyChart.base.d.ts +25 -11
  38. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +156 -88
  39. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  40. package/lib-commonjs/version.js +1 -1
  41. package/lib-commonjs/version.js.map +1 -1
  42. package/monosize.config.mjs +11 -0
  43. package/package.json +5 -4
  44. package/src/components/GaugeChart/GaugeChart.types.ts +15 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GaugeChart.base.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { classNamesFunction, getRTL } from '@fluentui/react/lib/Utilities';\nimport {\n IGaugeChartProps,\n IGaugeChartSegment,\n IGaugeChartStyleProps,\n IGaugeChartStyles,\n GaugeValueFormat,\n} from './GaugeChart.types';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport {\n Points,\n convertToLocaleString,\n formatValueWithSIPrefix,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n} from '../../utilities/index';\nimport { ILegend, LegendShape, Legends, Shape } from '../Legends/index';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react-focus';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { IYValueHover } from '../../index';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { select as d3Select } from 'd3-selection';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nconst getClassNames = classNamesFunction<IGaugeChartStyleProps, IGaugeChartStyles>();\n\ninterface IYValue extends Omit<IYValueHover, 'y'> {\n y?: string | number;\n}\nexport interface IGaugeChartState {\n hoveredLegend: string;\n selectedLegend: string;\n focusedElement?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutTarget: any;\n isCalloutVisible: boolean;\n hoverXValue: string | number;\n hoverYValues: IYValue[];\n width: number;\n height: number;\n}\n\nexport class GaugeChartBase extends React.Component<IGaugeChartProps, IGaugeChartState> {\n private _classNames: IProcessedStyleSet<IGaugeChartStyles>;\n private _isRTL: boolean;\n private _innerRadius: number;\n private _outerRadius: number;\n private _minValue: number;\n private _segments: IGaugeChartSegment[];\n private _sweepFraction: number[];\n private _calloutAnchor: string;\n private _rootElem: HTMLDivElement | null;\n private _margins: { left: number; right: number; top: number; bottom: number };\n private _legendsHeight: number;\n\n constructor(props: IGaugeChartProps) {\n super(props);\n\n this._margins = this._getMargins();\n this._legendsHeight = !this.props.hideLegend ? 24 : 0;\n\n this.state = {\n hoveredLegend: '',\n selectedLegend: '',\n focusedElement: '',\n calloutTarget: null,\n isCalloutVisible: false,\n hoverXValue: '',\n hoverYValues: [],\n width: 140 + this._margins.left + this._margins.right,\n height: 70 + this._margins.top + this._margins.bottom + this._legendsHeight,\n };\n\n this._isRTL = getRTL();\n this._calloutAnchor = '';\n }\n\n public componentDidMount(): void {\n if (this._rootElem) {\n this.setState({\n width: this._rootElem.clientWidth,\n height: this._rootElem.clientHeight,\n });\n }\n }\n\n public render(): React.ReactNode {\n this._margins = this._getMargins();\n this._legendsHeight = !this.props.hideLegend ? 24 : 0;\n\n const width = this.props.width || this.state.width;\n const height = this.props.height || this.state.height;\n\n this._outerRadius = Math.min(\n (width - (this._margins.left + this._margins.right)) / 2,\n height - (this._margins.top + this._margins.bottom + this._legendsHeight),\n );\n\n const { arcWidth, chartValueSize } = this._getStylesBasedOnBreakpoint();\n this._innerRadius = this._outerRadius - arcWidth;\n\n const { minValue, maxValue, segments, arcs } = this._initProps();\n this._minValue = minValue;\n this._segments = segments;\n this._sweepFraction = [this.props.chartValue - this._minValue, maxValue - this._minValue];\n\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n className: this.props.className,\n chartWidth: width,\n chartHeight: height - this._legendsHeight,\n chartValueSize,\n });\n\n return (\n <div className={this._classNames.root} ref={el => (this._rootElem = el)}>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <svg\n className={this._classNames.chart}\n aria-label={`This is a gauge chart with ${this._segments.length} section represented.`}\n onMouseLeave={this._handleMouseOut}\n >\n <g transform={`translate(${width / 2}, ${height - (this._margins.bottom + this._legendsHeight)})`}>\n {this.props.chartTitle && (\n <text\n x={0}\n y={-(this._outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={this._classNames.chartTitle}\n >\n {this.props.chartTitle}\n </text>\n )}\n {!this.props.hideMinMax && (\n <>\n <text\n x={(this._isRTL ? 1 : -1) * (this._outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={this._classNames.limits}\n role=\"img\"\n aria-label={`Min value: ${this._minValue}`}\n >\n {formatValueWithSIPrefix(this._minValue)}\n </text>\n <text\n x={(this._isRTL ? -1 : 1) * (this._outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={this._classNames.limits}\n role=\"img\"\n aria-label={`Max value: ${maxValue}`}\n >\n {formatValueWithSIPrefix(maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => (\n <path\n key={index}\n d={arc.d}\n fill={this._segments[arc.segmentIndex].color}\n fillOpacity={\n this._legendHighlighted(this._segments[arc.segmentIndex].legend) || this._noLegendHighlighted()\n ? 1\n : 0.1\n }\n strokeWidth={this.state.focusedElement === this._segments[arc.segmentIndex].legend ? ARC_PADDING : 0}\n className={this._classNames.segment}\n {...getAccessibleDataObject(\n {\n ariaLabel: `${this._segments[arc.segmentIndex].legend}, ${\n this._segments[arc.segmentIndex].size\n } out of ${maxValue - this._minValue} or ${(\n (this._segments[arc.segmentIndex].size / (maxValue - this._minValue)) *\n 100\n ).toFixed()}%`,\n ...this._segments[arc.segmentIndex].accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => this._handleFocus(e, this._segments[arc.segmentIndex].legend)}\n onBlur={this._handleBlur}\n onMouseEnter={e => this._handleMouseOver(e, this._segments[arc.segmentIndex].legend)}\n onMouseMove={e => this._handleMouseOver(e, this._segments[arc.segmentIndex].legend)}\n />\n ))}\n {this._renderNeedle()}\n <g\n onMouseEnter={e => this._handleMouseOver(e, 'Chart value')}\n onMouseMove={e => this._handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={\n typeof this.props.chartValueFormat === 'function'\n ? this.props.chartValueFormat(this._sweepFraction)\n : this.props.chartValueFormat === GaugeValueFormat.Fraction\n ? `${this._sweepFraction[0]}/${this._sweepFraction[1]}`\n : `${((this._sweepFraction[0] / this._sweepFraction[1]) * 100).toFixed()}%`\n }\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: this._classNames.chartValue,\n role: 'img',\n 'aria-label': `Current value: ${this._sweepFraction[0]} out of ${this._sweepFraction[1]}, or ${(\n (this._sweepFraction[0] / this._sweepFraction[1]) *\n 100\n ).toFixed()}%`,\n }}\n maxWidth={this._innerRadius * 2 - 24}\n wrapContent={this._wrapContent}\n />\n </g>\n {this.props.sublabel && (\n <SVGTooltipText\n content={this.props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: this._classNames.sublabel,\n role: 'img',\n 'aria-label': this.props.sublabel,\n }}\n maxWidth={this._innerRadius * 2}\n wrapContent={this._wrapContent}\n />\n )}\n </g>\n </svg>\n </FocusZone>\n {this._renderLegends()}\n {!this.props.hideTooltip && this.state.isCalloutVisible && (\n <Callout\n target={this.state.calloutTarget}\n directionalHint={DirectionalHint.topAutoEdge}\n gapSpace={15}\n isBeakVisible={false}\n onDismiss={this._handleCalloutDismiss}\n {...this.props.calloutProps}\n >\n {this._multiValueCallout({\n hoverXValue: this.state.hoverXValue,\n YValueHover: this.state.hoverYValues,\n })}\n </Callout>\n )}\n </div>\n );\n }\n\n private _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = this.props;\n\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n\n private _getStylesBasedOnBreakpoint = () => {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (this._outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n };\n\n private _initProps = () => {\n const { minValue = 0, maxValue, theme } = this.props;\n const segments = Array.from(this.props.segments);\n\n let total = minValue;\n segments.forEach((segment, index) => {\n total += segment.size;\n segment.color =\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, theme!.isInverted)\n : getNextColor(index, 0, theme!.isInverted);\n });\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n segments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: theme!.palette.neutralLight,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .padAngle(ARC_PADDING / this._outerRadius)\n .padRadius(this._outerRadius);\n const rtlSafeSegments = this._isRTL ? Array.from(segments).reverse() : segments;\n let prevAngle = -Math.PI / 2;\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: this._innerRadius,\n outerRadius: this._outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: this._isRTL ? segments.length - 1 - index : index,\n };\n });\n\n return {\n minValue,\n maxValue: total,\n segments,\n arcs,\n };\n };\n\n private _renderNeedle = () => {\n const needleRotation = (this._sweepFraction[0] / this._sweepFraction[1]) * 180;\n const rtlSafeNeedleRotation = this._isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = this._outerRadius - this._innerRadius + EXTRA_NEEDLE_LENGTH;\n\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n strokeWidth={strokeWidth}\n className={this._classNames.needle}\n transform={`translate(${-this._innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => this._handleFocus(e, 'Needle')}\n onBlur={this._handleBlur}\n onMouseEnter={e => this._handleMouseOver(e, 'Needle')}\n onMouseMove={e => this._handleMouseOver(e, 'Needle')}\n />\n </g>\n );\n };\n\n private _renderLegends = () => {\n if (this.props.hideLegend) {\n return null;\n }\n\n const legends: ILegend[] = this._segments.map(segment => {\n return {\n title: segment.legend,\n color: segment.color!,\n action: () => {\n if (this.state.selectedLegend === segment.legend) {\n this.setState({ selectedLegend: '' });\n } else {\n this.setState({ selectedLegend: segment.legend });\n }\n },\n hoverAction: () => {\n this.setState({ hoveredLegend: segment.legend });\n },\n onMouseOutAction: () => {\n this.setState({ hoveredLegend: '' });\n },\n };\n });\n\n return (\n <div className={this._classNames.legendsContainer}>\n <Legends legends={legends} centerLegends {...this.props.legendProps} />\n </div>\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 = (legend: string) => {\n return (\n this.state.selectedLegend === legend || (this.state.selectedLegend === '' && this.state.hoveredLegend === legend)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.hoveredLegend === '';\n };\n\n private _handleFocus = (focusEvent: React.FocusEvent<SVGElement>, focusedElement: string) => {\n this._showCallout(focusEvent.target, focusedElement, true);\n };\n\n private _handleBlur = () => {\n this._hideCallout(true);\n };\n\n private _handleMouseOver = (mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) => {\n this._showCallout(mouseEvent.target, hoveredElement, false);\n };\n\n private _handleMouseOut = () => {\n this._hideCallout(false);\n };\n\n private _handleCalloutDismiss = () => {\n this._hideCallout(false);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _showCallout = (target: any, legend: string, isFocusEvent: boolean) => {\n if (this._calloutAnchor === legend) {\n return;\n }\n\n this._calloutAnchor = legend;\n const hoverXValue: string =\n 'Current value is ' +\n (this.props.chartValueFormat === GaugeValueFormat.Fraction\n ? `${((this._sweepFraction[0] / this._sweepFraction[1]) * 100).toFixed()}%`\n : `${this._sweepFraction[0]}/${this._sweepFraction[1]}`);\n let total = this._minValue;\n const hoverYValues: IYValue[] = this._segments.map((segment, index) => {\n const yValue: IYValue = {\n legend: segment.legend,\n y: `${total + (index > 0 ? 1 : 0)} - ${total + segment.size}`,\n color: segment.color,\n };\n total += segment.size;\n return yValue;\n });\n this.setState({\n calloutTarget: target,\n /** Show the callout if highlighted arc is hovered/focused and Hide it if unhighlighted arc is hovered/focused */\n isCalloutVisible:\n ['Needle', 'Chart value'].includes(legend) ||\n this.state.selectedLegend === '' ||\n this.state.selectedLegend === legend,\n hoverXValue,\n hoverYValues,\n ...(isFocusEvent ? { focusedElement: legend } : {}),\n });\n };\n\n private _hideCallout = (isBlurEvent?: boolean) => {\n this._calloutAnchor = '';\n this.setState({\n calloutTarget: null,\n isCalloutVisible: false,\n hoverXValue: '',\n hoverYValues: [],\n ...(isBlurEvent ? { focusedElement: '' } : {}),\n });\n };\n\n private _wrapContent = (content: string, id: string, maxWidth: number) => {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n };\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _multiValueCallout = (calloutProps: any) => {\n const yValueHoverSubCountsExists: boolean = this._yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={this._classNames.calloutContentRoot}>\n <div\n className={this._classNames.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={this._classNames.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {convertToLocaleString(calloutProps!.hoverXValue, this.props.culture)}\n </div>\n </div>\n <div\n className={this._classNames.calloutInfoContainer}\n style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}\n >\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: IYValueHover, index: number, yValues: IYValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n borderBottom: `1px solid ${this.props.theme!.semanticColors.menuDivider}`,\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n borderBottom: `1px solid ${this.props.theme!.semanticColors.menuDivider}`,\n paddingBottom: '10px',\n }),\n }\n }\n >\n {this._getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={this._classNames.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n };\n\n private _yValueHoverSubCountsExists(yValueHover?: IYValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n private _getCalloutContent(\n xValue: IYValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const _classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n lineColor: xValue.color,\n toDrawShape,\n });\n\n const { culture } = this.props;\n const yValue = convertToLocaleString(xValue.y, culture);\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div id={`${index}_${xValue.y}`} className={_classNames.calloutBlockContainer}>\n {toDrawShape && (\n <Shape\n svgProps={{\n className: _classNames.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n />\n )}\n <div>\n <div className={_classNames.calloutlegendText}> {xValue.legend}</div>\n <div className={_classNames.calloutContentY}>\n {convertToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n )}\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={_classNames.calloutBlockContainer}>\n <div className={_classNames.calloutlegendText}> {convertToLocaleString(subcountName, culture)}</div>\n <div className={_classNames.calloutContentY}>\n {convertToLocaleString(subcounts[subcountName], culture)}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n }\n}\n"]}
1
+ {"version":3,"file":"GaugeChart.base.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { classNamesFunction, getRTL } from '@fluentui/react/lib/Utilities';\nimport {\n IGaugeChartProps,\n IGaugeChartSegment,\n IGaugeChartStyleProps,\n IGaugeChartStyles,\n GaugeValueFormat,\n GaugeChartVariant,\n} from './GaugeChart.types';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport {\n Points,\n convertToLocaleString,\n formatValueWithSIPrefix,\n getAccessibleDataObject,\n getColorFromToken,\n getNextColor,\n pointTypes,\n} from '../../utilities/index';\nimport { ILegend, LegendShape, Legends, Shape } from '../Legends/index';\nimport { FocusZone, FocusZoneDirection } from '@fluentui/react-focus';\nimport { Callout, DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { IYValueHover } from '../../index';\nimport { SVGTooltipText } from '../../utilities/SVGTooltipText';\nimport { select as d3Select } from 'd3-selection';\n\nconst GAUGE_MARGIN = 16;\nconst LABEL_WIDTH = 36;\nconst LABEL_HEIGHT = 16;\nconst LABEL_OFFSET = 4;\nconst TITLE_OFFSET = 11;\nconst EXTRA_NEEDLE_LENGTH = 4;\nexport const ARC_PADDING = 2;\nexport const BREAKPOINTS = [\n { minRadius: 52, arcWidth: 12, fontSize: 20 },\n { minRadius: 70, arcWidth: 16, fontSize: 24 },\n { minRadius: 88, arcWidth: 20, fontSize: 32 },\n { minRadius: 106, arcWidth: 24, fontSize: 32 },\n { minRadius: 124, arcWidth: 28, fontSize: 40 },\n { minRadius: 142, arcWidth: 32, fontSize: 40 },\n];\n\nconst getClassNames = classNamesFunction<IGaugeChartStyleProps, IGaugeChartStyles>();\n\nexport const calcNeedleRotation = (chartValue: number, minValue: number, maxValue: number) => {\n let needleRotation = ((chartValue - minValue) / (maxValue - minValue)) * 180;\n if (needleRotation < 0) {\n needleRotation = 0;\n } else if (needleRotation > 180) {\n needleRotation = 180;\n }\n\n return needleRotation;\n};\n\nexport const getSegmentLabel = (\n segment: IExtendedSegment,\n minValue: number,\n maxValue: number,\n variant?: GaugeChartVariant,\n isAriaLabel: boolean = false,\n) => {\n if (isAriaLabel) {\n return minValue === 0 && variant === GaugeChartVariant.SingleSegment\n ? `${segment.legend}, ${segment.size} out of ${maxValue} or ${((segment.size / maxValue) * 100).toFixed()}%`\n : `${segment.legend}, ${segment.start} to ${segment.end}`;\n }\n\n return minValue === 0 && variant === GaugeChartVariant.SingleSegment\n ? `${segment.size} (${((segment.size / maxValue) * 100).toFixed()}%)`\n : `${segment.start} - ${segment.end}`;\n};\n\nexport const getChartValueLabel = (\n chartValue: number,\n minValue: number,\n maxValue: number,\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string),\n forCallout: boolean = false,\n): string => {\n if (forCallout) {\n // When displaying the chart value as a percentage, use fractions in the callout, and vice versa.\n // This helps clarify the actual value and avoid repetition.\n return minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === GaugeValueFormat.Fraction\n ? `${((chartValue / maxValue) * 100).toFixed()}%`\n : `${chartValue}/${maxValue}`;\n }\n\n return typeof chartValueFormat === 'function'\n ? chartValueFormat([chartValue - minValue, maxValue - minValue])\n : minValue !== 0\n ? chartValue.toString()\n : chartValueFormat === GaugeValueFormat.Fraction\n ? `${chartValue}/${maxValue}`\n : `${((chartValue / maxValue) * 100).toFixed()}%`;\n};\n\ninterface IYValue extends Omit<IYValueHover, 'y'> {\n y?: string | number;\n}\nexport interface IGaugeChartState {\n hoveredLegend: string;\n selectedLegend: string;\n focusedElement?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutTarget: any;\n isCalloutVisible: boolean;\n hoverXValue: string | number;\n hoverYValues: IYValue[];\n width: number;\n height: number;\n}\nexport interface IExtendedSegment extends IGaugeChartSegment {\n start: number;\n end: number;\n}\n\nexport class GaugeChartBase extends React.Component<IGaugeChartProps, IGaugeChartState> {\n private _classNames: IProcessedStyleSet<IGaugeChartStyles>;\n private _isRTL: boolean;\n private _innerRadius: number;\n private _outerRadius: number;\n private _minValue: number;\n private _maxValue: number;\n private _segments: IExtendedSegment[];\n private _calloutAnchor: string;\n private _rootElem: HTMLDivElement | null;\n private _margins: { left: number; right: number; top: number; bottom: number };\n private _legendsHeight: number;\n\n constructor(props: IGaugeChartProps) {\n super(props);\n\n this._margins = this._getMargins();\n this._legendsHeight = !props.hideLegend ? 24 : 0;\n\n this.state = {\n hoveredLegend: '',\n selectedLegend: '',\n focusedElement: '',\n calloutTarget: null,\n isCalloutVisible: false,\n hoverXValue: '',\n hoverYValues: [],\n width: 140 + this._margins.left + this._margins.right,\n height: 70 + this._margins.top + this._margins.bottom + this._legendsHeight,\n };\n\n this._isRTL = getRTL(props.theme);\n this._calloutAnchor = '';\n }\n\n public componentDidMount(): void {\n if (this._rootElem) {\n this.setState({\n width: this._rootElem.clientWidth,\n height: this._rootElem.clientHeight,\n });\n }\n }\n\n public render(): React.ReactNode {\n this._margins = this._getMargins();\n this._legendsHeight = !this.props.hideLegend ? 24 : 0;\n\n const width = this.props.width || this.state.width;\n const height = this.props.height || this.state.height;\n\n this._outerRadius = Math.min(\n (width - (this._margins.left + this._margins.right)) / 2,\n height - (this._margins.top + this._margins.bottom + this._legendsHeight),\n );\n\n const { arcWidth, chartValueSize } = this._getStylesBasedOnBreakpoint();\n this._innerRadius = this._outerRadius - arcWidth;\n\n const { arcs } = this._processProps();\n\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n className: this.props.className,\n chartWidth: width,\n chartHeight: height - this._legendsHeight,\n chartValueSize,\n });\n\n return (\n <div className={this._classNames.root} ref={el => (this._rootElem = el)}>\n <FocusZone direction={FocusZoneDirection.horizontal}>\n <svg\n className={this._classNames.chart}\n aria-label={`This is a gauge chart with ${this._segments.length} section represented.`}\n onMouseLeave={this._handleMouseOut}\n >\n <g transform={`translate(${width / 2}, ${height - (this._margins.bottom + this._legendsHeight)})`}>\n {this.props.chartTitle && (\n <text\n x={0}\n y={-(this._outerRadius + TITLE_OFFSET)}\n textAnchor=\"middle\"\n className={this._classNames.chartTitle}\n >\n {this.props.chartTitle}\n </text>\n )}\n {!this.props.hideMinMax && (\n <>\n <text\n x={(this._isRTL ? 1 : -1) * (this._outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"end\"\n className={this._classNames.limits}\n role=\"img\"\n aria-label={`Min value: ${this._minValue}`}\n >\n {formatValueWithSIPrefix(this._minValue)}\n </text>\n <text\n x={(this._isRTL ? -1 : 1) * (this._outerRadius + LABEL_OFFSET)}\n y={0}\n textAnchor=\"start\"\n className={this._classNames.limits}\n role=\"img\"\n aria-label={`Max value: ${this._maxValue}`}\n >\n {formatValueWithSIPrefix(this._maxValue)}\n </text>\n </>\n )}\n {arcs.map((arc, index) => {\n const segment = this._segments[arc.segmentIndex];\n\n return (\n <path\n key={index}\n d={arc.d}\n fill={segment.color}\n fillOpacity={this._legendHighlighted(segment.legend) || this._noLegendHighlighted() ? 1 : 0.1}\n strokeWidth={this.state.focusedElement === segment.legend ? ARC_PADDING : 0}\n className={this._classNames.segment}\n {...getAccessibleDataObject(\n {\n ariaLabel: getSegmentLabel(segment, this._minValue, this._maxValue, this.props.variant, true),\n ...segment.accessibilityData,\n },\n 'img',\n true,\n )}\n onFocus={e => this._handleFocus(e, segment.legend)}\n onBlur={this._handleBlur}\n onMouseEnter={e => this._handleMouseOver(e, segment.legend)}\n onMouseMove={e => this._handleMouseOver(e, segment.legend)}\n />\n );\n })}\n {this._renderNeedle()}\n <g\n onMouseEnter={e => this._handleMouseOver(e, 'Chart value')}\n onMouseMove={e => this._handleMouseOver(e, 'Chart value')}\n >\n <SVGTooltipText\n content={getChartValueLabel(\n this.props.chartValue,\n this._minValue,\n this._maxValue,\n this.props.chartValueFormat,\n )}\n textProps={{\n x: 0,\n y: 0,\n textAnchor: 'middle',\n className: this._classNames.chartValue,\n role: 'img',\n 'aria-label':\n 'Current value: ' +\n getChartValueLabel(\n this.props.chartValue,\n this._minValue,\n this._maxValue,\n this.props.chartValueFormat,\n ),\n }}\n maxWidth={this._innerRadius * 2 - 24}\n wrapContent={this._wrapContent}\n />\n </g>\n {this.props.sublabel && (\n <SVGTooltipText\n content={this.props.sublabel}\n textProps={{\n x: 0,\n y: 4,\n textAnchor: 'middle',\n dominantBaseline: 'hanging',\n className: this._classNames.sublabel,\n role: 'img',\n 'aria-label': this.props.sublabel,\n }}\n maxWidth={this._innerRadius * 2}\n wrapContent={this._wrapContent}\n />\n )}\n </g>\n </svg>\n </FocusZone>\n {this._renderLegends()}\n {!this.props.hideTooltip && this.state.isCalloutVisible && (\n <Callout\n target={this.state.calloutTarget}\n directionalHint={DirectionalHint.topAutoEdge}\n gapSpace={15}\n isBeakVisible={false}\n onDismiss={this._handleCalloutDismiss}\n {...this.props.calloutProps}\n >\n {this._multiValueCallout({\n hoverXValue: this.state.hoverXValue,\n YValueHover: this.state.hoverYValues,\n })}\n </Callout>\n )}\n </div>\n );\n }\n\n private _getMargins = () => {\n const { hideMinMax, chartTitle, sublabel } = this.props;\n\n return {\n left: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n right: (!hideMinMax ? LABEL_OFFSET + LABEL_WIDTH : 0) + GAUGE_MARGIN,\n top: (chartTitle ? TITLE_OFFSET + LABEL_HEIGHT : EXTRA_NEEDLE_LENGTH / 2) + GAUGE_MARGIN,\n bottom: (sublabel ? LABEL_OFFSET + LABEL_HEIGHT : 0) + GAUGE_MARGIN,\n };\n };\n\n private _getStylesBasedOnBreakpoint = () => {\n for (let index = BREAKPOINTS.length - 1; index >= 0; index -= 1) {\n if (this._outerRadius >= BREAKPOINTS[index].minRadius) {\n return {\n arcWidth: BREAKPOINTS[index].arcWidth,\n chartValueSize: BREAKPOINTS[index].fontSize,\n };\n }\n }\n return {\n arcWidth: BREAKPOINTS[0].arcWidth,\n chartValueSize: BREAKPOINTS[0].fontSize,\n };\n };\n\n private _processProps = () => {\n const { minValue = 0, maxValue, theme } = this.props;\n\n let total = minValue;\n const segments: IExtendedSegment[] = this.props.segments.map((segment, index) => {\n const size = Math.max(segment.size, 0);\n total += size;\n return {\n legend: segment.legend,\n size,\n color:\n typeof segment.color !== 'undefined'\n ? getColorFromToken(segment.color, theme!.isInverted)\n : getNextColor(index, 0, theme!.isInverted),\n accessibilityData: segment.accessibilityData,\n start: total - size,\n end: total,\n };\n });\n if (typeof maxValue !== 'undefined' && total < maxValue) {\n segments.push({\n legend: 'Unknown',\n size: maxValue - total,\n color: theme!.palette.neutralLight,\n start: total,\n end: maxValue,\n });\n total = maxValue;\n }\n\n const arcGenerator = d3Arc()\n .padAngle(ARC_PADDING / this._outerRadius)\n .padRadius(this._outerRadius);\n const rtlSafeSegments = this._isRTL ? Array.from(segments).reverse() : segments;\n let prevAngle = -Math.PI / 2;\n const arcs = rtlSafeSegments.map((segment, index) => {\n const endAngle = prevAngle + (segment.size / (total - minValue)) * Math.PI;\n const d = arcGenerator({\n innerRadius: this._innerRadius,\n outerRadius: this._outerRadius,\n startAngle: prevAngle,\n endAngle,\n })!;\n prevAngle = endAngle;\n return {\n d,\n segmentIndex: this._isRTL ? segments.length - 1 - index : index,\n };\n });\n\n this._minValue = minValue;\n this._maxValue = total;\n this._segments = segments;\n\n return {\n arcs,\n };\n };\n\n private _renderNeedle = () => {\n const needleRotation = calcNeedleRotation(this.props.chartValue, this._minValue, this._maxValue);\n const rtlSafeNeedleRotation = this._isRTL ? 180 - needleRotation : needleRotation;\n const strokeWidth = 2;\n const halfStrokeWidth = strokeWidth / 2;\n const needleLength = this._outerRadius - this._innerRadius + EXTRA_NEEDLE_LENGTH;\n\n return (\n <g transform={`rotate(${rtlSafeNeedleRotation}, 0, 0)`}>\n <path\n d={`\n M 0,${-halfStrokeWidth - 3}\n L ${-needleLength},${-halfStrokeWidth - 1}\n A ${halfStrokeWidth + 1},${halfStrokeWidth + 1},0,0,0,${-needleLength},${halfStrokeWidth + 1}\n L 0,${halfStrokeWidth + 3}\n A ${halfStrokeWidth + 3},${halfStrokeWidth + 3},0,0,0,0,${-halfStrokeWidth - 3}\n `}\n strokeWidth={strokeWidth}\n className={this._classNames.needle}\n transform={`translate(${-this._innerRadius + EXTRA_NEEDLE_LENGTH / 2})`}\n data-is-focusable={true}\n onFocus={e => this._handleFocus(e, 'Needle')}\n onBlur={this._handleBlur}\n onMouseEnter={e => this._handleMouseOver(e, 'Needle')}\n onMouseMove={e => this._handleMouseOver(e, 'Needle')}\n />\n </g>\n );\n };\n\n private _renderLegends = () => {\n if (this.props.hideLegend) {\n return null;\n }\n\n const legends: ILegend[] = this._segments.map(segment => {\n return {\n title: segment.legend,\n color: segment.color!,\n action: () => {\n if (this.state.selectedLegend === segment.legend) {\n this.setState({ selectedLegend: '' });\n } else {\n this.setState({ selectedLegend: segment.legend });\n }\n },\n hoverAction: () => {\n this.setState({ hoveredLegend: segment.legend });\n },\n onMouseOutAction: () => {\n this.setState({ hoveredLegend: '' });\n },\n };\n });\n\n return (\n <div className={this._classNames.legendsContainer}>\n <Legends legends={legends} centerLegends {...this.props.legendProps} />\n </div>\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 = (legend: string) => {\n return (\n this.state.selectedLegend === legend || (this.state.selectedLegend === '' && this.state.hoveredLegend === legend)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.hoveredLegend === '';\n };\n\n private _handleFocus = (focusEvent: React.FocusEvent<SVGElement>, focusedElement: string) => {\n this._showCallout(focusEvent.target, focusedElement, true);\n };\n\n private _handleBlur = () => {\n this._hideCallout(true);\n };\n\n private _handleMouseOver = (mouseEvent: React.MouseEvent<SVGElement>, hoveredElement: string) => {\n this._showCallout(mouseEvent.target, hoveredElement, false);\n };\n\n private _handleMouseOut = () => {\n this._hideCallout(false);\n };\n\n private _handleCalloutDismiss = () => {\n this._hideCallout(false);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _showCallout = (target: any, legend: string, isFocusEvent: boolean) => {\n if (this._calloutAnchor === legend) {\n return;\n }\n\n this._calloutAnchor = legend;\n const hoverXValue: string =\n 'Current value is ' +\n getChartValueLabel(this.props.chartValue, this._minValue, this._maxValue, this.props.chartValueFormat, true);\n const hoverYValues: IYValue[] = this._segments.map(segment => {\n const yValue: IYValue = {\n legend: segment.legend,\n y: getSegmentLabel(segment, this._minValue, this._maxValue, this.props.variant),\n color: segment.color,\n };\n return yValue;\n });\n this.setState({\n calloutTarget: target,\n /** Show the callout if highlighted arc is hovered/focused and Hide it if unhighlighted arc is hovered/focused */\n isCalloutVisible:\n ['Needle', 'Chart value'].includes(legend) ||\n this.state.selectedLegend === '' ||\n this.state.selectedLegend === legend,\n hoverXValue,\n hoverYValues,\n ...(isFocusEvent ? { focusedElement: legend } : {}),\n });\n };\n\n private _hideCallout = (isBlurEvent?: boolean) => {\n this._calloutAnchor = '';\n this.setState({\n calloutTarget: null,\n isCalloutVisible: false,\n hoverXValue: '',\n hoverYValues: [],\n ...(isBlurEvent ? { focusedElement: '' } : {}),\n });\n };\n\n private _wrapContent = (content: string, id: string, maxWidth: number) => {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n };\n\n // TO DO: Write a common functional component for Multi value callout and divide sub count method\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _multiValueCallout = (calloutProps: any) => {\n const yValueHoverSubCountsExists: boolean = this._yValueHoverSubCountsExists(calloutProps.YValueHover);\n return (\n <div className={this._classNames.calloutContentRoot}>\n <div\n className={this._classNames.calloutDateTimeContainer}\n style={yValueHoverSubCountsExists ? { marginBottom: '11px' } : {}}\n >\n <div\n className={this._classNames.calloutContentX}\n {...getAccessibleDataObject(calloutProps!.xAxisCalloutAccessibilityData, 'text', false)}\n >\n {convertToLocaleString(calloutProps!.hoverXValue, this.props.culture)}\n </div>\n </div>\n <div\n className={this._classNames.calloutInfoContainer}\n style={yValueHoverSubCountsExists ? { display: 'flex' } : {}}\n >\n {calloutProps!.YValueHover &&\n calloutProps!.YValueHover.map((yValue: IYValueHover, index: number, yValues: IYValueHover[]) => {\n const isLast: boolean = index + 1 === yValues.length;\n const { shouldDrawBorderBottom = false } = yValue;\n return (\n <div\n {...getAccessibleDataObject(yValue.callOutAccessibilityData, 'text', false)}\n key={`callout-content-${index}`}\n style={\n yValueHoverSubCountsExists\n ? {\n display: 'inline-block',\n ...(shouldDrawBorderBottom && {\n borderBottom: `1px solid ${this.props.theme!.semanticColors.menuDivider}`,\n paddingBottom: '10px',\n }),\n }\n : {\n ...(shouldDrawBorderBottom && {\n borderBottom: `1px solid ${this.props.theme!.semanticColors.menuDivider}`,\n paddingBottom: '10px',\n }),\n }\n }\n >\n {this._getCalloutContent(yValue, index, yValueHoverSubCountsExists, isLast)}\n </div>\n );\n })}\n {!!calloutProps.descriptionMessage && (\n <div className={this._classNames.descriptionMessage}>{calloutProps.descriptionMessage}</div>\n )}\n </div>\n </div>\n );\n };\n\n private _yValueHoverSubCountsExists(yValueHover?: IYValueHover[]) {\n if (yValueHover) {\n return yValueHover.some(\n (yValue: {\n legend?: string;\n y?: number;\n color?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n }) => yValue.yAxisCalloutData && typeof yValue.yAxisCalloutData !== 'string',\n );\n }\n return false;\n }\n\n private _getCalloutContent(\n xValue: IYValueHover,\n index: number,\n yValueHoverSubCountsExists: boolean,\n isLast: boolean,\n ): React.ReactNode {\n const marginStyle: React.CSSProperties = isLast ? {} : { marginRight: '16px' };\n const toDrawShape = xValue.index !== undefined && xValue.index !== -1;\n const _classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n lineColor: xValue.color,\n toDrawShape,\n });\n\n const { culture } = this.props;\n const yValue = convertToLocaleString(xValue.y, culture);\n if (!xValue.yAxisCalloutData || typeof xValue.yAxisCalloutData === 'string') {\n return (\n <div style={yValueHoverSubCountsExists ? marginStyle : {}}>\n {yValueHoverSubCountsExists && (\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n )}\n <div id={`${index}_${xValue.y}`} className={_classNames.calloutBlockContainer}>\n {toDrawShape && (\n <Shape\n svgProps={{\n className: _classNames.shapeStyles,\n }}\n pathProps={{ fill: xValue.color }}\n shape={Points[xValue.index! % Object.keys(pointTypes).length] as LegendShape}\n />\n )}\n <div>\n <div className={_classNames.calloutlegendText}> {xValue.legend}</div>\n <div className={_classNames.calloutContentY}>\n {convertToLocaleString(\n xValue.yAxisCalloutData ? xValue.yAxisCalloutData : xValue.y || xValue.data,\n culture,\n )}\n </div>\n </div>\n </div>\n </div>\n );\n } else {\n const subcounts: { [id: string]: number } = xValue.yAxisCalloutData as { [id: string]: number };\n return (\n <div style={marginStyle}>\n <div className=\"ms-fontWeight-semibold\" style={{ fontSize: '12pt' }}>\n {xValue.legend!} ({yValue})\n </div>\n {Object.keys(subcounts).map((subcountName: string) => {\n return (\n <div key={subcountName} className={_classNames.calloutBlockContainer}>\n <div className={_classNames.calloutlegendText}> {convertToLocaleString(subcountName, culture)}</div>\n <div className={_classNames.calloutContentY}>\n {convertToLocaleString(subcounts[subcountName], culture)}\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n }\n}\n"]}
@@ -32,6 +32,13 @@ export declare enum GaugeValueFormat {
32
32
  Percentage = "percentage",
33
33
  Fraction = "fraction"
34
34
  }
35
+ /**
36
+ * {@docCategory GaugeChart}
37
+ */
38
+ export declare enum GaugeChartVariant {
39
+ SingleSegment = "single-segment",
40
+ MultipleSegments = "multiple-segments"
41
+ }
35
42
  /**
36
43
  * Gauge Chart properties
37
44
  * {@docCategory GaugeChart}
@@ -79,7 +86,7 @@ export interface IGaugeChartProps {
79
86
  * Format of the chart value
80
87
  * @defaultvalue GaugeValueFormat.Percentage
81
88
  */
82
- chartValueFormat?: GaugeValueFormat | ((sweepFraction: number[]) => string);
89
+ chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);
83
90
  /**
84
91
  * Decides whether to show/hide legends
85
92
  * @defaultvalue false
@@ -111,6 +118,11 @@ export interface IGaugeChartProps {
111
118
  * Props for the callout in the chart
112
119
  */
113
120
  calloutProps?: Partial<ICalloutProps>;
121
+ /**
122
+ * Specifies the variant of GaugeChart to be rendered
123
+ * @defaultvalue GaugeChartVariant.MultipleSegments
124
+ */
125
+ variant?: GaugeChartVariant;
114
126
  }
115
127
  /**
116
128
  * Gauge Chart style properties
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GaugeValueFormat = void 0;
3
+ exports.GaugeChartVariant = exports.GaugeValueFormat = void 0;
4
4
  /**
5
5
  * {@docCategory GaugeChart}
6
6
  */
@@ -9,4 +9,12 @@ var GaugeValueFormat;
9
9
  GaugeValueFormat["Percentage"] = "percentage";
10
10
  GaugeValueFormat["Fraction"] = "fraction";
11
11
  })(GaugeValueFormat = exports.GaugeValueFormat || (exports.GaugeValueFormat = {}));
12
+ /**
13
+ * {@docCategory GaugeChart}
14
+ */
15
+ var GaugeChartVariant;
16
+ (function (GaugeChartVariant) {
17
+ GaugeChartVariant["SingleSegment"] = "single-segment";
18
+ GaugeChartVariant["MultipleSegments"] = "multiple-segments";
19
+ })(GaugeChartVariant = exports.GaugeChartVariant || (exports.GaugeChartVariant = {}));
12
20
  //# sourceMappingURL=GaugeChart.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GaugeChart.types.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.types.ts"],"names":[],"mappings":";;;AAgCA;;GAEG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B","sourcesContent":["import { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps } from '../../types/index';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: IAccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeValueFormat {\n Percentage = 'percentage',\n Fraction = 'fraction',\n}\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: IGaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: number[]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IGaugeChartStyleProps, IGaugeChartStyles>;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n}\n\n/**\n * Gauge Chart style properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyleProps {\n /**\n * Theme (provided through customization)\n */\n theme: ITheme;\n\n /**\n * Font size of the chart value\n */\n chartValueSize?: number;\n\n /**\n * Width of the chart\n */\n chartWidth?: number;\n\n /**\n * Height of the chart\n */\n chartHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Color of the line\n */\n lineColor?: string;\n\n /**\n * Boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: IStyle;\n\n /**\n * Styles for the chart\n */\n chart?: IStyle;\n\n /**\n * Styles for the min and max values\n */\n limits?: IStyle;\n\n /**\n * Styles for the chart value\n */\n chartValue?: IStyle;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: IStyle;\n\n /**\n * Styles for the needle\n */\n needle?: IStyle;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: IStyle;\n\n /**\n * Styles for the segments\n */\n segment?: IStyle;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: IStyle;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n}\n"]}
1
+ {"version":3,"file":"GaugeChart.types.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.types.ts"],"names":[],"mappings":";;;AAgCA;;GAEG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,6CAAyB,CAAA;IACzB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;AAED;;GAEG;AACH,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,qDAAgC,CAAA;IAChC,2DAAsC,CAAA;AACxC,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B","sourcesContent":["import { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps } from '../../types/index';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: IAccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeValueFormat {\n Percentage = 'percentage',\n Fraction = 'fraction',\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeChartVariant {\n SingleSegment = 'single-segment',\n MultipleSegments = 'multiple-segments',\n}\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: IGaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IGaugeChartStyleProps, IGaugeChartStyles>;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n}\n\n/**\n * Gauge Chart style properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyleProps {\n /**\n * Theme (provided through customization)\n */\n theme: ITheme;\n\n /**\n * Font size of the chart value\n */\n chartValueSize?: number;\n\n /**\n * Width of the chart\n */\n chartWidth?: number;\n\n /**\n * Height of the chart\n */\n chartHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Color of the line\n */\n lineColor?: string;\n\n /**\n * Boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: IStyle;\n\n /**\n * Styles for the chart\n */\n chart?: IStyle;\n\n /**\n * Styles for the min and max values\n */\n limits?: IStyle;\n\n /**\n * Styles for the chart value\n */\n chartValue?: IStyle;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: IStyle;\n\n /**\n * Styles for the needle\n */\n needle?: IStyle;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: IStyle;\n\n /**\n * Styles for the segments\n */\n segment?: IStyle;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: IStyle;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n}\n"]}
@@ -1,6 +1,13 @@
1
+ import { SankeyGraph, SankeyLayout } from 'd3-sankey';
1
2
  import * as React from 'react';
2
- import { IBasestate, IChartHoverCardProps, SLink, SNode } from '../../index';
3
- import { ISankeyChartProps } from './SankeyChart.types';
3
+ import { IBasestate, SLink, SNode } from '../../types/IDataPoint';
4
+ import { IChartHoverCardProps } from '../../utilities/ChartHoverCard/ChartHoverCard.types';
5
+ import { IMargins } from '../../utilities/utilities';
6
+ import { ISankeyChartData, ISankeyChartProps } from './SankeyChart.types';
7
+ declare type NodesInColumns = {
8
+ [key: number]: SNode[];
9
+ };
10
+ declare type SankeyLayoutGenerator = SankeyLayout<SankeyGraph<{}, {}>, {}, {}>;
4
11
  export interface ISankeyChartState extends IBasestate, IChartHoverCardProps {
5
12
  containerWidth: number;
6
13
  containerHeight: number;
@@ -12,13 +19,26 @@ export interface ISankeyChartState extends IBasestate, IChartHoverCardProps {
12
19
  selectedLink?: SLink;
13
20
  shouldOverflow: boolean;
14
21
  }
22
+ /**
23
+ * This is used to group nodes by column index.
24
+ */
25
+ export declare function groupNodesByColumn(graph: ISankeyChartData): NodesInColumns;
26
+ /**
27
+ * This is used to introduce dynamic padding for cases where the number of nodes in a column is huge
28
+ * so that we maintain a node to space ratio for such columns as if we fail to do so the
29
+ * chart is devoid of nodes and only shows links.
30
+ */
31
+ export declare function adjustPadding(sankey: SankeyLayoutGenerator, height: number, nodesInColumn: NodesInColumns): void;
32
+ export declare function preRenderLayout(margins: IMargins, containerWidth: number, containerHeight: number, isRtl: boolean): {
33
+ sankey: SankeyLayoutGenerator;
34
+ height: number;
35
+ width: number;
36
+ };
15
37
  export declare class SankeyChartBase extends React.Component<ISankeyChartProps, ISankeyChartState> {
16
38
  private chartContainer;
17
39
  private _reqID;
18
40
  private _calloutId;
19
41
  private _linkId;
20
- private _nodesInColumn;
21
- private _sankey;
22
42
  private _margins;
23
43
  private _isRtl;
24
44
  private _normalizeData;
@@ -28,14 +48,7 @@ export declare class SankeyChartBase extends React.Component<ISankeyChartProps,
28
48
  componentDidUpdate(prevProps: ISankeyChartProps): void;
29
49
  componentWillUnmount(): void;
30
50
  render(): React.ReactNode;
31
- private _preRenderLayout;
32
51
  private _normalizeSankeyData;
33
- /**
34
- * This is used to introduce dynamic padding for cases where the number of nodes in a column is huge
35
- * so that we maintain a node to space ratio for such columns as if we fail to do so the
36
- * chart is devoid of nodes and only shows links.
37
- */
38
- private _adjustPadding;
39
52
  private _createLinks;
40
53
  private _createNodes;
41
54
  private _onLeave;
@@ -69,3 +82,4 @@ export declare class SankeyChartBase extends React.Component<ISankeyChartProps,
69
82
  private _hideTooltip;
70
83
  private _isChartEmpty;
71
84
  }
85
+ export {};