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

46 lines
1.4 KiB
TypeScript
Raw Normal View History

import { ScaleBand, ScaleLinear } from 'd3-scale'
export type ScaleLinearType = ScaleLinear<number, number>;
export type ScaleBandType = ScaleBand<number | string>;
2024-01-12 14:04:45 -07:00
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>;
useCommonScale?: boolean;
2024-01-12 14:04:45 -07:00
yAxisProps?: YAxisProps;
}