NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/lib/chart/controller/guide.js

202 lines
4.4 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
var Util = require('../../util');
var Guide = require('../../component/guide');
var GuideController = /*#__PURE__*/function () {
function GuideController(cfg) {
this.guides = [];
this.options = [];
this.xScales = null;
this.yScales = null;
this.view = null;
this.viewTheme = null;
this.frontGroup = null;
this.backGroup = null;
Util.mix(this, cfg);
}
var _proto = GuideController.prototype;
_proto._creatGuides = function _creatGuides() {
var self = this;
var options = this.options;
var xScales = this.xScales;
var yScales = this.yScales;
var view = this.view;
var viewTheme = this.viewTheme; // @2019-01-18 by blue.lb 这里如果给 backContainer 添加 group 的话,会直接导致 BBoxOfBackPlot 函数中计算 element.getBBox() 出错
if (this.backContainer && view) {
this.backGroup = this.backContainer.addGroup({
viewId: view.get('_id')
});
}
if (this.frontContainer && view) {
this.frontGroup = this.frontContainer.addGroup({
viewId: view.get('_id')
});
}
options.forEach(function (option) {
var type = option.type;
var config = Util.deepMix({
xScales: xScales,
yScales: yScales,
viewTheme: viewTheme
}, viewTheme ? viewTheme.guide[type] : {}, option);
type = Util.upperFirst(type);
var guide = new Guide[type](config);
self.guides.push(guide);
});
return self.guides;
};
_proto.line = function line(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'line'
}, cfg));
return this;
};
_proto.arc = function arc(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'arc'
}, cfg));
return this;
};
_proto.text = function text(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'text'
}, cfg));
return this;
};
_proto.image = function image(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'image'
}, cfg));
return this;
};
_proto.region = function region(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'region'
}, cfg));
return this;
};
_proto.regionFilter = function regionFilter(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'regionFilter'
}, cfg));
return this;
};
_proto.dataMarker = function dataMarker(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'dataMarker'
}, cfg));
return this;
};
_proto.dataRegion = function dataRegion(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'dataRegion'
}, cfg));
return this;
};
_proto.html = function html(cfg) {
if (cfg === void 0) {
cfg = {};
}
this.options.push(Util.mix({
type: 'html'
}, cfg));
return this;
};
_proto.render = function render(coord) {
var self = this;
var view = self.view;
var viewData = view && view.get('data');
var guides = self._creatGuides();
Util.each(guides, function (guide) {
var container;
if (guide.get('top')) {
// 默认 guide 绘制到 backPlot用户也可以声明 top: true显示在最上层
// @2019-01-18 by blue.lb 直接用传入的就行
container = self.frontGroup || self.frontContainer; // container = self.frontContainer;
} else {
// @2019-01-18 by blue.lb 直接用传入的就行
container = self.backGroup || self.backContainer; // container = self.backContainer;
}
guide.render(coord, container, viewData, view);
});
};
_proto.clear = function clear() {
this.options = [];
this.reset();
};
_proto.changeVisible = function changeVisible(visible) {
var guides = this.guides;
Util.each(guides, function (guide) {
guide.changeVisible(visible);
});
};
_proto.reset = function reset() {
var guides = this.guides;
Util.each(guides, function (guide) {
guide.clear();
});
this.guides = []; // @2019-01-18 by blue.lb 删除这部分
this.backGroup && this.backGroup.remove();
this.frontGroup && this.frontGroup.remove();
};
return GuideController;
}();
module.exports = GuideController;