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 };
};
