import React from 'react'; import * as scale from 'd3-scale'; import { View } from 'react-native'; import { BarChart, XAxis, YAxis } from 'react-native-svg-charts'; import { useGraphData } from '../use-graph-data'; import { GraphData, YAxisProps } from '../graph-types'; import { CustomBars } from '../custom-bars'; import { CustomGrid } from '../custom-grid'; import { graphStyles } from '../chart-styles'; import ChartView from '../chart-view'; interface Props { data: GraphData; height?: number; spacingInner?: number; spacingOuter?: number; contentInset?: { top: number; bottom: number }; min?: number; numberOfTicks?: number; barColors?: Array; useCommonScale?: boolean; yAxisProps?: YAxisProps; testID?: string; } // TODO: separate PR will update useGraphData to take into account useCommonScale // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars export const BarGraph: React.FC = ({ data, useCommonScale = false, testID, ...props }) => { if (!data) { return null } const { xValues, yData, yAxisRightLabels, yAxisLeftLabels, defaultProps: { height, spacingInner, spacingOuter, contentInset, min, numberOfTicks, barColors, yAxisProps: { maxLeftYAxisValue, maxRightYAxisValue, formatRightYAxisLabel, formatLeftYAxisLabel } } // Proper error/loading handling from useQueryHandler can work with this rule // eslint-disable-next-line react-hooks/rules-of-hooks } = useGraphData(data, props); return ( (item as unknown as { value: number }).value} contentInset={contentInset} spacingInner={spacingInner} spacingOuter={spacingOuter} > index)} formatLabel={(_, index) => xValues[index]} style={graphStyles.xAxisMarginTop} svg={graphStyles.xAxisFontStyle} scale={scale.scaleBand} /> ); }; export default BarGraph;