UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

61 lines (56 loc) 2.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.AxisSyncPlugin = void 0; const event_1 = require("../../../constant/event"), zero_align_transform_1 = require("./zero-align-transform"), vscale_1 = require("@visactor/vscale"), register_1 = require("../../../data/register"), tick_align_transform_1 = require("./tick-align-transform"), base_plugin_1 = require("../../base/base-plugin"); class AxisSyncPlugin extends base_plugin_1.BasePlugin { constructor() { super(AxisSyncPlugin.type), this.type = "AxisSyncPlugin"; } _checkEnableSync(axis) { if (!(0, vscale_1.isContinuous)(axis.getScale().type)) return !1; const sync = axis.getSpec().sync; return !!(null == sync ? void 0 : sync.axisId) && sync; } _getTargetAxis(axis, sync) { const targetAxis = axis.getOption().getChart().getComponentByUserId(sync.axisId); return (null == targetAxis ? void 0 : targetAxis.type.startsWith("cartesianAxis")) ? targetAxis : null; } onInit(service, axis) { const sync = this._checkEnableSync(axis); if (!sync) return; if (!sync.zeroAlign) return; const targetAxis = this._getTargetAxis(axis, sync); targetAxis && axis.event.on(event_1.ChartEvent.scaleDomainUpdate, { filter: ({model: model}) => model.id === axis.id || model.id === targetAxis.id }, (() => { (0, zero_align_transform_1.zeroAlign)(targetAxis, axis); })); } onDidCompile(service, axis) { var _a; const sync = this._checkEnableSync(axis); if (!sync) return; const targetAxis = this._getTargetAxis(axis, sync); if (targetAxis && sync.tickAlign) { (0, register_1.registerDataSetInstanceTransform)(axis.getOption().dataSet, "tickAlign", tick_align_transform_1.tickAlign); const opt = { targetAxis: () => targetAxis, currentAxis: () => axis }, targetDataView = null === (_a = targetAxis.getTickData()) || void 0 === _a ? void 0 : _a.getDataView(); targetDataView && targetDataView.target.addListener("change", (() => { var _a, _b; null === (_b = null === (_a = axis.getTickData()) || void 0 === _a ? void 0 : _a.getDataView()) || void 0 === _b || _b.reRunAllTransform({ skipEqual: !0 }); })), axis.addTransformToTickData({ type: "tickAlign", options: opt, level: Number.MAX_SAFE_INTEGER }, !1); } } } exports.AxisSyncPlugin = AxisSyncPlugin, AxisSyncPlugin.pluginType = "component", AxisSyncPlugin.type = "AxisSyncPlugin"; //# sourceMappingURL=axis-sync.js.map