react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
40 lines (39 loc) • 1.59 kB
JavaScript
import { generateLinearTicks, normalizeCartesianData, resolveNumericDomain } from "../../../core/index";
import { resolveLineChartYAxisLabelSizes } from "./axisLabels";
const getNumericYValues = (normalized) => normalized.series.flatMap((item) => item.points.flatMap((point) => typeof point.value === "number" ? [point.value] : []));
export const resolveLineChartYAxisModel = ({ data, stableData, xKey, series, yDomain, yAxisLabelWidth, formatYLabel, measureText, textOptions }) => {
const normalized = normalizeCartesianData({
data,
xKey,
series
});
const yValues = getNumericYValues(normalized);
const yDomainResolved = resolveNumericDomain(yValues, yDomain);
const yTicks = generateLinearTicks({
domain: yDomainResolved,
count: 4
});
const stableYLabelSizes = yAxisLabelWidth === "stable"
? generateLinearTicks({
domain: resolveNumericDomain(stableData
? getNumericYValues(normalizeCartesianData({
data: stableData,
xKey,
series
}))
: yValues, yDomain),
count: 4
}).map((tick) => measureText(formatYLabel(tick), textOptions))
: undefined;
const yLabelSizes = resolveLineChartYAxisLabelSizes({
sizes: yTicks.map((tick) => measureText(formatYLabel(tick), textOptions)),
stableSizes: stableYLabelSizes,
width: yAxisLabelWidth
});
return {
normalized,
yDomainResolved,
yLabelSizes,
yTicks
};
};