UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

34 lines (30 loc) 2.02 kB
import { convertDomainToTickData } from "@visactor/vrender-components"; import { last, precisionSub, getDecimalPlaces } from "@visactor/vutils"; function saveTick(value, minInput, inputRange, minOutput, outputRange) { const sub = precisionSub(value, minInput), decimalPlaces = Math.max(getDecimalPlaces(inputRange), getDecimalPlaces(sub)); return outputRange * (Math.round(sub * 10 ** decimalPlaces) / Math.round(inputRange * 10 ** decimalPlaces)) + minOutput; } export const tickAlign = (data, op) => { var _a, _b, _c, _d, _e; if (!data) return data; const targetAxis = null === (_a = null == op ? void 0 : op.targetAxis) || void 0 === _a ? void 0 : _a.call(op); if (!targetAxis) return data; const currentAxis = null === (_b = null == op ? void 0 : op.currentAxis) || void 0 === _b ? void 0 : _b.call(op); if (!currentAxis) return data; const currentData = null === (_c = currentAxis.getTickData()) || void 0 === _c ? void 0 : _c.getDataView(); if (!currentData) return data; if (!currentData.transformsArr.find((t => t.type.includes("ticks")))) return data; const currentScale = currentAxis.getScale(); if (!currentScale) return data; const targetData = null === (_e = null === (_d = targetAxis.getTickData()) || void 0 === _d ? void 0 : _d.getDataView()) || void 0 === _e ? void 0 : _e.latestData; if (!(null == targetData ? void 0 : targetData.length)) return data; const targetScale = targetAxis.getScale(); if (!targetScale) return data; const targetDomain = targetScale.domain(), targetRange = last(targetDomain) - targetDomain[0]; if (0 === targetRange) return data; const currentDomain = currentScale.domain(), currentRange = last(currentDomain) - currentDomain[0]; if (0 === targetRange) return data; const newTicks = targetData.map((d => saveTick(d.value, targetDomain[0], targetRange, currentDomain[0], currentRange))); return convertDomainToTickData(newTicks); }; //# sourceMappingURL=tick-align-transform.js.map