railbird-gql/component/charts/graph-types.ts

44 lines
1.3 KiB
TypeScript
Raw Normal View History

import { ScaleLinear } from 'd3-scale'
2024-01-12 14:04:45 -07:00
export type ScaleFunction = ScaleLinear<number, number>;
export interface YAxisData {
key: string; // string value for ChartLabel and useGraphData
values: Array<number>;
2024-01-12 14:04:45 -07:00
// 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
2024-01-12 14:04:45 -07:00
export interface GraphData {
xValues: Array<XValue>;
yValues: Array<YAxisData>;
2024-01-12 14:04:45 -07:00
}
export interface YAxisProps {
2024-01-12 14:04:45 -07:00
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 {
2024-01-12 14:04:45 -07:00
data: GraphData;
height?: number;
spacingInner?: number;
spacingOuter?: number;
contentInset?: { top: number; bottom: number };
min?: number;
numberOfTicks?: number;
barColors?: Array<string>;
yAxisProps?: YAxisProps;
}