46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { ScaleBand, ScaleLinear } from 'd3-scale'
|
|
|
|
export type ScaleLinearType = ScaleLinear<number, number>;
|
|
export type ScaleBandType = ScaleBand<number | string>;
|
|
|
|
export interface YAxisData {
|
|
key: string; // string value for ChartLabel and useGraphData
|
|
values: Array<number>;
|
|
// including this code only for review --
|
|
// do we prefer the idea of passing label formatting from the data or in the component?
|
|
// generic function type, specific usage of value varies
|
|
// eslint-disable-next-line no-unused-vars
|
|
formatLabel?: (value: number) => string;
|
|
}
|
|
|
|
export type XValue = string | number
|
|
|
|
export interface GraphData {
|
|
xValues: Array<XValue>;
|
|
yValues: Array<YAxisData>;
|
|
}
|
|
|
|
export interface YAxisProps {
|
|
maxLeftYAxisValue?: number;
|
|
maxRightYAxisValue?: number;
|
|
selectedLeftYAxisLabel?: string;
|
|
selectedRightYAxisLabel?: string;
|
|
// generic function type, specific usage of value varies
|
|
// eslint-disable-next-line no-unused-vars
|
|
formatRightYAxisLabel?: (value: string) => string;
|
|
// generic function type, specific usage of value varies
|
|
// eslint-disable-next-line no-unused-vars
|
|
formatLeftYAxisLabel?: (value: string) => string;
|
|
}
|
|
export interface GraphProps {
|
|
data: GraphData;
|
|
height?: number;
|
|
spacingInner?: number;
|
|
spacingOuter?: number;
|
|
contentInset?: { top: number; bottom: number };
|
|
min?: number;
|
|
numberOfTicks?: number;
|
|
barColors?: Array<string>;
|
|
useCommonScale?: boolean;
|
|
yAxisProps?: YAxisProps;
|
|
} |