UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

75 lines (67 loc) 4.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.getDimensionInfoByValue = exports.getDimensionInfoByPosition = exports.getCartesianDimensionInfo = void 0; const vscale_1 = require("@visactor/vscale"), common_1 = require("./common"), vutils_1 = require("@visactor/vutils"), common_2 = require("../../../../component/axis/cartesian/util/common"), discreteXAxisGetDimensionField = series => series.fieldX[0], discreteYAxisGetDimensionField = series => series.fieldY[0], continuousXAxisGetDimensionField = series => { var _a; return [ series.fieldX[0], null !== (_a = series.fieldX2) && void 0 !== _a ? _a : series.fieldX[1] ]; }, continuousYAxisGetDimensionField = series => { var _a; return [ series.fieldY[0], null !== (_a = series.fieldY2) && void 0 !== _a ? _a : series.fieldY[1] ]; }, getDimensionFieldFunc = (isXAxis, isDiscreteAxis) => isXAxis ? isDiscreteAxis ? discreteXAxisGetDimensionField : continuousXAxisGetDimensionField : isDiscreteAxis ? discreteYAxisGetDimensionField : continuousYAxisGetDimensionField, getCartesianDimensionInfo = (chart, pos, isTooltip) => { var _a, _b; if (!chart) return null; const {x: x, y: y} = pos, xAxisList = null !== (_a = (0, common_1.getAxis)(chart, (cmp => (0, common_2.isXAxis)(cmp.getOrient())), pos)) && void 0 !== _a ? _a : [], yAxisList = null !== (_b = (0, common_1.getAxis)(chart, (cmp => (0, common_2.isYAxis)(cmp.getOrient())), pos)) && void 0 !== _b ? _b : []; if (!xAxisList.length && !yAxisList.length) return null; const bandAxisSet = new Set, linearAxisSet = new Set, forceAxisSet = new Set; [ xAxisList, yAxisList ].forEach((axisList => axisList.forEach((axis => { (0, vscale_1.isDiscrete)(axis.getScale().type) ? bandAxisSet.add(axis) : linearAxisSet.add(axis), isTooltip && axis.getSpec().hasDimensionTooltip && forceAxisSet.add(axis); })))); const targetAxisInfo = [], addAxisDimensionInfo = orient => { const isXAxis = "x" === orient, posValue = isXAxis ? x : y; (isXAxis ? xAxisList : yAxisList).forEach((axis => { if (forceAxisSet.size > 0) { if (forceAxisSet.has(axis)) { const info = (0, exports.getDimensionInfoByPosition)(axis, posValue, getDimensionFieldFunc(isXAxis, (0, vscale_1.isDiscrete)(axis.getScale().type))); info && targetAxisInfo.push(info); } } else { const hasDiscreteAxis = bandAxisSet.size > 0; if ((hasDiscreteAxis ? bandAxisSet : linearAxisSet).has(axis)) { const info = (0, exports.getDimensionInfoByPosition)(axis, posValue, getDimensionFieldFunc(isXAxis, hasDiscreteAxis)); info && targetAxisInfo.push(info); } } })); }; return "horizontal" === chart.getSpec().direction ? (addAxisDimensionInfo("y"), 0 === targetAxisInfo.length && addAxisDimensionInfo("x")) : (addAxisDimensionInfo("x"), 0 === targetAxisInfo.length && addAxisDimensionInfo("y")), targetAxisInfo.length ? targetAxisInfo : null; }; exports.getCartesianDimensionInfo = getCartesianDimensionInfo; const getDimensionInfoByPosition = (axis, posValue, getDimensionField) => { const value = axis.positionToData(posValue, !0); return (0, vutils_1.isNil)(value) ? null : (0, exports.getDimensionInfoByValue)(axis, value, getDimensionField); }; exports.getDimensionInfoByPosition = getDimensionInfoByPosition; const getDimensionInfoByValue = (axis, value, getDimensionField) => { const scale = axis.getScale(); if ((0, vutils_1.isNil)(value)) return null; let index = scale.domain().findIndex((v => (null == v ? void 0 : v.toString()) === value.toString())); index < 0 && (index = void 0); const data = (0, common_1.getDimensionData)(value, axis, "cartesian", null != getDimensionField ? getDimensionField : (0, common_2.isXAxis)(axis.getOrient()) ? discreteXAxisGetDimensionField : discreteYAxisGetDimensionField); return { index: index, value: value, position: scale.scale(value), axis: axis, data: data }; }; exports.getDimensionInfoByValue = getDimensionInfoByValue; //# sourceMappingURL=cartesian.js.map