Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import { scaleLinear, min, max } from "d3";
import { useMemo } from "react";
import { LineChartDataItem, DataPoint } from "src/types/data";
const useLineChartYscale = (
filteredDataSet: LineChartDataItem[],
yAxisDomain: [number, number] | undefined,
height: number,
margin: { top: number; bottom: number }
) => {
return useMemo(
() =>
scaleLinear()
.domain(
yAxisDomain
? yAxisDomain
: [
min(
filteredDataSet.flatMap(({ series }) =>
series.filter((dd: DataPoint) => dd.value !== null)
),
(d: DataPoint) => d.value
) || 0,
max(
filteredDataSet.flatMap(({ series }) =>
series.filter((dd: DataPoint) => dd.value !== null)
),
(d: DataPoint) => d.value
) || 1,
]
)
.range([height - margin.bottom, margin.top])
.clamp(true)
.nice(),
[filteredDataSet, height, margin, yAxisDomain]
);
};
export default useLineChartYscale;
|