diff --git a/src/js/utils/draw.js b/src/js/utils/draw.js index 9320a8b..79f73e9 100644 --- a/src/js/utils/draw.js +++ b/src/js/utils/draw.js @@ -1,5 +1,5 @@ import { getBarHeightAndYAttr, truncateString, shortenLargeNumber, getSplineCurvePointsStr } from './draw-utils'; -import { getStringWidth, isValidNumber } from './helpers'; +import { getStringWidth, isValidNumber, round } from './helpers'; import { DOT_OVERLAY_SIZE_INCR } from './constants'; export const AXIS_TICK_LENGTH = 6; @@ -389,6 +389,8 @@ export function yLine(y, label, width, options={}) { x1 += options.offset; x2 += options.offset; + if (typeof label === "number") label = round(label); + return makeHoriLine(y, label, x1, x2, { className: options.className, lineType: options.lineType, diff --git a/src/js/utils/helpers.js b/src/js/utils/helpers.js index 592760d..74805c9 100644 --- a/src/js/utils/helpers.js +++ b/src/js/utils/helpers.js @@ -98,7 +98,7 @@ export function getPositionByAngle(angle, radius) { * @param {object} candidate Candidate to test * @param {Boolean} nonNegative flag to treat negative number as invalid */ -export function isValidNumber(candidate, nonNegative=false) { +export function isValidNumber(candidate, nonNegative = false) { if (Number.isNaN(candidate)) return false; else if (candidate === undefined) return false; else if (!Number.isFinite(candidate)) return false; @@ -115,3 +115,12 @@ export function round(d) { // https://www.jacklmoore.com/notes/rounding-in-javascript/ return Number(Math.round(d + 'e4') + 'e-4'); } +/** + * Round a number to the closes precision, max max precision 4 + * @param {Number} d Any Number + */ +export function round(d) { + // https://floating-point-gui.de/ + // https://www.jacklmoore.com/notes/rounding-in-javascript/ + return Number(Math.round(d + 'e4') + 'e-4'); +}