react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
26 lines (25 loc) • 1.06 kB
JavaScript
import { createLinearScale, createPointScale, createTimeScale } from "../../../core/index";
import { getXKey, getXScaleType, unique } from "./utils";
export const buildLineChartXScale = ({ boxes, xValues }) => {
const range = [
boxes.plot.x,
boxes.plot.x + boxes.plot.width
];
const xScaleType = getXScaleType(xValues);
if (xScaleType === "time") {
const dates = xValues.filter((value) => value instanceof Date);
const scale = createTimeScale({ values: dates, range });
return (value) => (value instanceof Date ? scale.scale(value) : undefined);
}
if (xScaleType === "linear") {
const numbers = xValues.filter((value) => typeof value === "number");
const scale = createLinearScale({ values: numbers, range });
return (value) => typeof value === "number" ? scale.scale(value) : undefined;
}
const domain = unique(xValues.map(getXKey));
const scale = createPointScale({
domain,
range
});
return (value) => scale.scale(getXKey(value));
};