Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -422,9 +422,9 @@ const DATA_VALIDATORS_MAP: Record<string, ((data: Data, layout: Partial<Layout>
if (!isNumberArray((data as Partial<PlotData>).theta) && !isStringArray((data as Partial<PlotData>).theta)) {
throw new Error(`${UNSUPPORTED_MSG_PREFIX} ${data.type}, theta values must be array of numbers or strings`);
}
if (!isNumberArray((data as Partial<PlotData>).r)) {
throw new Error(`${UNSUPPORTED_MSG_PREFIX} ${data.type}, Non numeric r values`);
}
// if (!isNumberArray((data as Partial<PlotData>).r)) {
// throw new Error(`${UNSUPPORTED_MSG_PREFIX} ${data.type}, Non numeric r values`);
// }
},
],
funnel: [data => validateSeriesData(data as Partial<PlotData>, false)],
Expand Down
1 change: 1 addition & 0 deletions packages/charts/react-charts/library/src/PolarChart.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './components/PolarChart/index';
Copy link

@github-actions github-actions bot Dec 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/Avatar Converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Avatar Converged.badgeMask.normal.chromium.png 1 Changed
vr-tests-react-components/CalendarCompat 4 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/CalendarCompat.multiDayView - High Contrast.default.chromium.png 1222 Changed
vr-tests-react-components/CalendarCompat.multiDayView - Dark Mode.default.chromium.png 1101 Changed
vr-tests-react-components/CalendarCompat.multiDayView - RTL.default.chromium.png 494 Changed
vr-tests-react-components/CalendarCompat.multiDayView.default.chromium_1.png 498 Changed
vr-tests-react-components/Charts-DonutChart 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic - RTL.default.chromium.png 30791 Changed
vr-tests-react-components/Positioning 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.chromium.png 273 Changed
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 37 Changed
vr-tests-react-components/TagPicker 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/TagPicker.disabled - Dark Mode.disabled input hover.chromium.png 658 Changed
vr-tests/Callout 10 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Callout.Bottom center.default.chromium.png 2128 Changed
vr-tests/Callout.Bottom auto edge.default.chromium.png 2195 Changed
vr-tests/Callout.Gap space 25.default.chromium.png 2195 Changed
vr-tests/Callout.Left top edge.default.chromium.png 2183 Changed
vr-tests/Callout.Rendering callout attached to a rectangle.default.chromium.png 1835 Changed
vr-tests/Callout.No beak.default.chromium.png 2192 Changed
vr-tests/Callout.Right center.default.chromium.png 2117 Changed
vr-tests/Callout.Right top edge.default.chromium.png 1126 Changed
vr-tests/Callout.Top right edge.default.chromium.png 1146 Changed
vr-tests/Callout.Top center.default.chromium.png 2127 Changed
vr-tests/Coachmark 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Coachmark.Collapsed.default.chromium.png 159 Changed
vr-tests/Keytip 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/Keytip.Offset.default.chromium.png 86 Changed
vr-tests/react-charting-LineChart 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/react-charting-LineChart.Events.default.chromium.png 15 Changed
vr-tests/react-charting-MultiStackBarChart 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests/react-charting-MultiStackBarChart.Basic_Absolute.default.chromium.png 359 Changed
vr-tests/react-charting-MultiStackBarChart.Basic_PartToWhole - RTL.default.chromium.png 343 Changed
vr-tests/react-charting-MultiStackBarChart.Basic_PartToWhole - Dark Mode.default.chromium.png 363 Changed

There were 4 duplicate changes discarded. Check the build logs for more information.

Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ import {
transformPlotlyJsonToVBCProps,
transformPlotlyJsonToChartTableProps,
transformPlotlyJsonToScatterChartProps,
projectPolarToCartesian,
getAllupLegendsProps,
NON_PLOT_KEY_PREFIX,
SINGLE_REPEAT,
transformPlotlyJsonToFunnelChartProps,
transformPlotlyJsonToGanttChartProps,
transformPlotlyJsonToAnnotationChartProps,
transformPlotlyJsonToPolarChartProps,
} from './PlotlySchemaAdapter';
import type { ColorwayType } from './PlotlyColorAdapter';
import { AnnotationOnlyChart } from '../AnnotationOnlyChart/AnnotationOnlyChart';
Expand All @@ -56,6 +56,7 @@ import { Chart, ImageExportOptions } from '../../types/index';
import { ScatterChart } from '../ScatterChart/index';
import { FunnelChart } from '../FunnelChart/FunnelChart';
import { GanttChart } from '../GanttChart/index';
import { PolarChart } from '../PolarChart/index';

import { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';
import { ChartTable } from '../ChartTable/index';
Expand All @@ -79,6 +80,7 @@ const ResponsiveChartTable = withResponsiveContainer(ChartTable);
const ResponsiveGanttChart = withResponsiveContainer(GanttChart);
// Removing responsive wrapper for FunnelChart as responsive container is not working with FunnelChart
//const ResponsiveFunnelChart = withResponsiveContainer(FunnelChart);
const ResponsivePolarChart = withResponsiveContainer(PolarChart);

// Default x-axis key for grouping traces. Also applicable for PieData and SankeyData where x-axis is not defined.
const DEFAULT_XAXIS = 'x';
Expand Down Expand Up @@ -243,6 +245,10 @@ type ChartTypeMap = {
transformer: typeof transformPlotlyJsonToFunnelChartProps;
renderer: typeof FunnelChart;
} & PreTransformHooks;
scatterpolar: {
transformer: typeof transformPlotlyJsonToPolarChartProps;
renderer: typeof ResponsivePolarChart;
} & PreTransformHooks;
fallback: {
transformer: typeof transformPlotlyJsonToVSBCProps;
renderer: typeof ResponsiveVerticalStackedBarChart;
Expand Down Expand Up @@ -317,6 +323,10 @@ const chartMap: ChartTypeMap = {
transformer: transformPlotlyJsonToFunnelChartProps,
renderer: FunnelChart,
},
scatterpolar: {
transformer: transformPlotlyJsonToPolarChartProps,
renderer: ResponsivePolarChart,
},
fallback: {
transformer: transformPlotlyJsonToVSBCProps,
renderer: ResponsiveVerticalStackedBarChart,
Expand Down Expand Up @@ -458,23 +468,6 @@ export const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> =
[exportAsImage],
);

if (chart.type === 'scatterpolar') {
const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);
plotlyInputWithValidData.data = cartesianProjection.data;
plotlyInputWithValidData.layout = cartesianProjection.layout;
validTracesFilteredIndex.forEach((trace, index) => {
if (trace.type === 'scatterpolar') {
const mode = (plotlyInputWithValidData.data[index] as PlotData)?.mode ?? '';
if (mode.includes('line')) {
validTracesFilteredIndex[index].type = 'line';
} else if (mode.includes('markers') || mode === 'text') {
validTracesFilteredIndex[index].type = 'scatter';
} else {
validTracesFilteredIndex[index].type = 'line';
}
}
});
}
const groupedTraces: Record<string, number[]> = {};
let nonCartesianTraceCount = 0;

Expand All @@ -488,7 +481,9 @@ export const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> =
traceKey = `${NON_PLOT_KEY_PREFIX}${nonCartesianTraceCount + 1}`;
nonCartesianTraceCount++;
} else {
traceKey = (trace as PlotData).xaxis ?? DEFAULT_XAXIS;
traceKey = ['scatterpolar'].includes(trace.type!)
? (trace as { subplot?: string }).subplot ?? 'polar'
: (trace as PlotData).xaxis ?? DEFAULT_XAXIS;
}
if (!groupedTraces[traceKey]) {
groupedTraces[traceKey] = [];
Expand Down
Loading
Loading