@visactor/vchart
Version:
charts lib based @visactor/VGrammar
61 lines (56 loc) • 2.78 kB
JavaScript
;
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