@fluentui/react-charts 9.1.2 → 9.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -2
- package/dist/index.d.ts +23 -1
- package/lib/components/AreaChart/AreaChart.js +18 -8
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +17 -13
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +40 -36
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +1 -1
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +4 -4
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/utilities.js +25 -34
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +17 -13
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +50 -35
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +43 -17
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +40 -36
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +4 -4
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +60 -22
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +25 -34
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n });\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n });\n }\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = input.data.reduce((total: number, item: PlotData) => {\n return total + (item.y?.length || 0);\n }, 0);\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["correctYearMonth","findArrayAttributes","getColor","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","range","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","y","Math","min","max","undefined","Object","keys","input","firstData","data","mapLegendToDataPoint","labels","forEach","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","index1","isXYearCategory","isYearArray","x","_series_x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","barWidth","mode","hideTickOverlap","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","yValue","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfBars","reduce","item","scalingFactor","gapFactor","barHeight","showYAxisLables","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","isArrayOfType","bins","findIndex","binStart","binEnd","binSize","categories","from","Set","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = input.data.reduce((total: number, item: PlotData) => {\n return total + (item.y?.length || 0);\n }, 0);\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["correctYearMonth","findArrayAttributes","getColor","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","min","max","yaxis2","range","secondaryYAxistitle","undefined","secondaryYScaleOptions","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","isYearArray","x","_series_x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","yValue","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfBars","reduce","item","scalingFactor","gapFactor","barHeight","showYAxisLables","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","keys","isArrayOfType","bins","findIndex","binStart","binEnd","binSize","categories","from","Set","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -11,8 +11,8 @@ Object.defineProperty(exports, "GroupedVerticalBarChart", {
|
|
|
11
11
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
12
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
13
13
|
const _useGroupedVerticalBarChartStylesstyles = require("./useGroupedVerticalBarChartStyles.styles");
|
|
14
|
-
const _d3array = require("d3-array");
|
|
15
14
|
const _d3selection = require("d3-selection");
|
|
15
|
+
const _d3array = require("d3-array");
|
|
16
16
|
const _d3scale = require("d3-scale");
|
|
17
17
|
const _reactutilities = require("@fluentui/react-utilities");
|
|
18
18
|
const _index = require("../../utilities/index");
|
|
@@ -22,6 +22,8 @@ const X1_INNER_PADDING = 0.1;
|
|
|
22
22
|
// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)
|
|
23
23
|
// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width
|
|
24
24
|
/** Rate at which the space between the bars in a group changes wrt the bar width */ const BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);
|
|
25
|
+
const VERTICAL_BAR_GAP = 1;
|
|
26
|
+
const MIN_BAR_HEIGHT = 1;
|
|
25
27
|
const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
26
28
|
maxBarWidth: 24
|
|
27
29
|
}, forwardedRef)=>{
|
|
@@ -30,7 +32,6 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
30
32
|
const _emptyChartId = (0, _reactutilities.useId)('_GVBC_empty');
|
|
31
33
|
const _useRtl = (0, _index.useRtl)();
|
|
32
34
|
let _domainMargin = MIN_DOMAIN_MARGIN;
|
|
33
|
-
let _dataset = [];
|
|
34
35
|
let _keys = [];
|
|
35
36
|
let _xAxisLabels = [];
|
|
36
37
|
let _datasetForBars = [];
|
|
@@ -49,6 +50,7 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
49
50
|
let _xAxisInnerPadding = 0;
|
|
50
51
|
let _xAxisOuterPadding = 0;
|
|
51
52
|
const cartesianChartRef = _react.useRef(null);
|
|
53
|
+
const Y_ORIGIN = 0;
|
|
52
54
|
const [color, setColor] = _react.useState('');
|
|
53
55
|
const [dataForHoverCard, setDataForHoverCard] = _react.useState(0);
|
|
54
56
|
const [selectedLegends, setSelectedLegends] = _react.useState(((_props_legendProps = props.legendProps) === null || _props_legendProps === void 0 ? void 0 : _props_legendProps.selectedLegends) || []);
|
|
@@ -112,7 +114,6 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
112
114
|
datasetForBars.push(singleDatasetPointForBars);
|
|
113
115
|
dataset.push(singleDatasetPoint);
|
|
114
116
|
});
|
|
115
|
-
_dataset = dataset;
|
|
116
117
|
return datasetForBars;
|
|
117
118
|
};
|
|
118
119
|
const _createDataSetOfGVBC = (points)=>{
|
|
@@ -186,8 +187,26 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
186
187
|
const _xAxisType = (0, _index.getTypeOfAxis)(points[0].name, true);
|
|
187
188
|
const legends = _getLegendData(points);
|
|
188
189
|
_adjustProps();
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-anyAdd commentMore actions
|
|
191
|
+
function _getMinMaxOfYAxis(datasetForBars, yAxisType, useSecondaryYScale) {
|
|
192
|
+
const values = [];
|
|
193
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
194
|
+
datasetForBars.forEach((data)=>{
|
|
195
|
+
data.groupSeries.forEach((point)=>{
|
|
196
|
+
if (!useSecondaryYScale === !point.useSecondaryYScale) {
|
|
197
|
+
values.push(point.data);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
startValue: (0, _d3array.min)(values),
|
|
203
|
+
endValue: (0, _d3array.max)(values)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated
|
|
207
|
+
// using only the data points associated with the primary y-axis.
|
|
189
208
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
190
|
-
const yMax = (
|
|
209
|
+
const yMax = _getMinMaxOfYAxis(_datasetForBars).endValue;
|
|
191
210
|
_yMax = Math.max(yMax, props.yMaxValue || 0);
|
|
192
211
|
var _props_culture;
|
|
193
212
|
const calloutProps = {
|
|
@@ -208,7 +227,7 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
208
227
|
tickValues: props.tickValues,
|
|
209
228
|
tickFormat: props.tickFormat
|
|
210
229
|
};
|
|
211
|
-
const _getGraphData = (xScale,
|
|
230
|
+
const _getGraphData = (xScale, yScalePrimary, containerHeight, containerWidth, xElement, yAxisElement, yScaleSecondary)=>{
|
|
212
231
|
const xScale0 = _createX0Scale(containerWidth);
|
|
213
232
|
// Setting the bar width here is safe because there are no dependencies earlier in the code
|
|
214
233
|
// that rely on the width of bars in vertical bar charts with string x-axis.
|
|
@@ -217,7 +236,7 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
217
236
|
const xScale1 = _createX1Scale();
|
|
218
237
|
const allGroupsBars = [];
|
|
219
238
|
_datasetForBars.forEach((singleSet)=>{
|
|
220
|
-
allGroupsBars.push(_buildGraph(singleSet, xScale0, xScale1, containerHeight, xElement));
|
|
239
|
+
allGroupsBars.push(_buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement));
|
|
221
240
|
});
|
|
222
241
|
_groupedVerticalBarGraph = allGroupsBars;
|
|
223
242
|
};
|
|
@@ -285,31 +304,37 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
285
304
|
refElement: element
|
|
286
305
|
};
|
|
287
306
|
};
|
|
288
|
-
const _buildGraph = (singleSet, xScale0, xScale1, containerHeight, xElement)=>{
|
|
307
|
+
const _buildGraph = (singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement)=>{
|
|
289
308
|
const singleGroup = [];
|
|
290
309
|
const barLabelsForGroup = [];
|
|
291
|
-
const yBarScale = (0, _d3scale.scaleLinear)().domain([
|
|
292
|
-
0,
|
|
293
|
-
yMax
|
|
294
|
-
]).range([
|
|
295
|
-
0,
|
|
296
|
-
containerHeight - _margins.bottom - _margins.top
|
|
297
|
-
]);
|
|
298
310
|
const tempDataSet = Object.keys(datasetForBars[0]).splice(0, keys.length);
|
|
299
311
|
tempDataSet.forEach((datasetKey, index)=>{
|
|
300
312
|
const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;
|
|
301
313
|
const pointData = singleSet[datasetKey];
|
|
314
|
+
const yBarScale = pointData.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;
|
|
302
315
|
// To align the centers of the generated bandwidth and the calculated one when they differ,
|
|
303
316
|
// use the following addend.
|
|
304
317
|
const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - _barWidth) / 2;
|
|
305
|
-
const yPoint = Math.max(containerHeight - _margins.bottom - yBarScale(pointData.data), 0);
|
|
306
318
|
const startColor = pointData.color ? pointData.color : (0, _index.getNextColor)(index, 0);
|
|
319
|
+
const yBaseline = yBarScale(Y_ORIGIN);
|
|
320
|
+
let yPositiveStart = yBaseline;
|
|
321
|
+
let yNegativeStart = yBaseline;
|
|
322
|
+
let yPoint = Y_ORIGIN;
|
|
323
|
+
const barGap = VERTICAL_BAR_GAP / 2 * (index > 0 ? 2 : 0);
|
|
324
|
+
const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);
|
|
325
|
+
if (pointData.data >= Y_ORIGIN) {
|
|
326
|
+
yPositiveStart -= height + barGap;
|
|
327
|
+
yPoint = yPositiveStart;
|
|
328
|
+
} else {
|
|
329
|
+
yPoint = yNegativeStart + barGap;
|
|
330
|
+
yNegativeStart = yPoint + height;
|
|
331
|
+
}
|
|
307
332
|
// Not rendering data with 0.
|
|
308
333
|
pointData.data && singleGroup.push(/*#__PURE__*/ _react.createElement(_react.Fragment, {
|
|
309
334
|
key: `${singleSet.indexNum}-${index}`
|
|
310
335
|
}, /*#__PURE__*/ _react.createElement("rect", {
|
|
311
336
|
className: classes.opacityChangeOnHover,
|
|
312
|
-
height:
|
|
337
|
+
height: height,
|
|
313
338
|
width: _barWidth,
|
|
314
339
|
x: xPoint,
|
|
315
340
|
y: yPoint,
|
|
@@ -334,7 +359,7 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
334
359
|
barLabelsForGroup.push(/*#__PURE__*/ _react.createElement("text", {
|
|
335
360
|
key: `${singleSet.indexNum}-${index}`,
|
|
336
361
|
x: xPoint + _barWidth / 2,
|
|
337
|
-
y:
|
|
362
|
+
y: pointData.data >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12,
|
|
338
363
|
textAnchor: "middle",
|
|
339
364
|
className: classes.barLabel,
|
|
340
365
|
"aria-hidden": true
|
|
@@ -474,6 +499,7 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
474
499
|
chartTitle: _getChartTitle(),
|
|
475
500
|
points: _datasetForBars,
|
|
476
501
|
chartType: _index.ChartTypes.GroupedVerticalBarChart,
|
|
502
|
+
getMinMaxOfYAxis: _getMinMaxOfYAxis,
|
|
477
503
|
calloutProps: calloutProps,
|
|
478
504
|
legendBars: legends,
|
|
479
505
|
xAxisType: _xAxisType,
|