Files
brk/website_next/chart/path.js
T
2026-07-04 13:27:57 +02:00

38 lines
928 B
JavaScript

/** @param {number} value */
export function formatCoordinate(value) {
return value.toFixed(2);
}
/**
* @param {string} command
* @param {number} x
* @param {number} y
*/
function createPathCommand(command, x, y) {
return `${command}${formatCoordinate(x)} ${formatCoordinate(y)}`;
}
/** @param {ChartPoint[]} points */
export function createLinePathData(points) {
return points
.map(({ plotX, plotY }, index) =>
createPathCommand(index ? "L" : "M", plotX, plotY),
)
.join(" ");
}
/** @param {StackedPoint[]} points */
export function createAreaPathData(points) {
const commands = points.map(({ plotX, plotY1 }, index) =>
createPathCommand(index ? "L" : "M", plotX, plotY1),
);
for (let index = points.length - 1; index >= 0; index -= 1) {
const { plotX, plotY0 } = points[index];
commands.push(createPathCommand("L", plotX, plotY0));
}
return `${commands.join(" ")} Z`;
}