import { GraphData } from "./graph-types"; export const convertToGraphData = ( graphData: GraphData, options: { selectedLeftYAxisLabel?: string; selectedRightYAxisLabel?: string; maxRightYAxisValue: number; maxLeftYAxisValue: number; } ) => { const xValues = graphData.xValues; const leftAxisIndex = graphData.yValues.findIndex( (y) => y.key === options.selectedLeftYAxisLabel ); const rightAxisIndex = graphData.yValues.findIndex( (y) => y.key === options.selectedRightYAxisLabel ); // scale data points according to max value const yData = graphData.yValues.map((yAxis, index) => { const maxValue = index === rightAxisIndex ? options.maxRightYAxisValue : options.maxLeftYAxisValue; // scale values as a percentage of the max value const scaledValues = yAxis.values.map((value) => (value / maxValue) * 100); const mappedData = scaledValues.map((scaledValue) => ({ value: scaledValue })); return { data: mappedData, svg: { fill: 'transparent' } // fill handled in CustomBars }; }); const yAxisLeftLabels = leftAxisIndex !== -1 ? graphData.yValues[leftAxisIndex] : null; const yAxisRightLabels = rightAxisIndex !== -1 ? graphData.yValues[rightAxisIndex] : undefined; return { yData, yAxisLeftLabels, yAxisRightLabels, xValues }; };