NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/component/lib/legend/base.js

234 lines
6.6 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Util = require('../util');
var Component = require('../component');
var _require = require('../const'),
FONT_FAMILY = _require.FONT_FAMILY;
var Legend = /*#__PURE__*/function (_Component) {
_inheritsLoose(Legend, _Component);
var _super = _createSuper(Legend);
var _proto = Legend.prototype;
_proto.getDefaultCfg = function getDefaultCfg() {
return {
/**
* Group 容器
* @type {Object}
*/
container: null,
/**
* 图例标题配置
* @type {Object}
*/
title: null,
/**
* 图例项文本格式化
* @type {Function}
*/
formatter: null,
/**
* 鼠标 hover 到图例上的默认交互是否开启
* @type {Boolean}
*/
hoverable: true,
/**
* TODOrename
* 图例标题距离图例项的距离
* @type {Number}
*/
titleGap: 15,
/**
* legend 相对于 container 的位置
* @type {Array}
*/
position: [0, 0],
/**
* legend position 位置上的偏移量
* @type {Array}
*/
offset: [0, 0],
/**
* legend position 位置上沿 x 轴的偏移量若同时设置了 offset offsetX offsetX 为准
* @type {Number}
*/
offsetX: null,
/**
* legend position 位置上沿 y 轴的偏移量若同时设置了 offset offsetY offsetY 为准
* @type {Number}
*/
offsetY: null
};
};
function Legend(cfg) {
var _this;
_this = _Component.call(this, cfg) || this;
_this._init();
_this.beforeRender();
_this.render();
_this._adjustPositionOffset();
_this._bindEvents();
return _this;
}
_proto._init = function _init() {
var group = this.get('group');
var container = this.get('container');
this.set('canvas', container.get('canvas'));
var position = this.get('position');
if (!group) group = container.addGroup({
x: 0 - position[0],
y: 0 - position[1]
});
this.set('group', group);
};
_proto._adjustPositionOffset = function _adjustPositionOffset() {
var position = this.get('position');
var offset = this.get('offset');
var offsetX = this.get('offsetX');
var offsetY = this.get('offsetY');
if (!Util.isArray(offset)) {
var layout = this.get('layout');
offset = layout === 'vertical' ? [offset, 0] : [0, offset];
}
if (offsetX) offset[0] = offsetX;
if (offsetY) offset[1] = offsetY;
var bbox = this.get('group').getBBox();
this.move(-bbox.minX + position[0] + offset[0], -bbox.minY + position[1] + offset[1]);
};
_proto.beforeRender = function beforeRender() {
var group = this.get('group');
var itemsGroup = group.addGroup();
this.set('itemsGroup', itemsGroup);
};
_proto.render = function render() {
this._renderTitle();
} // render the title of the legend
;
_proto._renderTitle = function _renderTitle() {
var title = this.get('title');
var titleGap = this.get('titleGap');
titleGap = titleGap || 0;
if (title && title.text) {
var group = this.get('group');
var titleShape = group.addShape('text', {
attrs: Util.mix({
x: 0,
y: 0 - titleGap,
fill: '#333',
textBaseline: 'middle',
fontFamily: FONT_FAMILY
}, title)
});
titleShape.name = 'legend-title';
this.get('appendInfo') && titleShape.setSilent('appendInfo', this.get('appendInfo'));
this.set('titleShape', titleShape);
}
} // return the count of checked items
;
_proto.getCheckedCount = function getCheckedCount() {
var itemsGroup = this.get('itemsGroup');
var items = itemsGroup.get('children');
var checkedArr = Util.filter(items, function (item) {
return item.get('checked');
});
return checkedArr.length;
} // set items for the legend
;
_proto.setItems = function setItems(items) {
this.set('items', items);
this.clear();
this.render();
} // add an item into the legend
;
_proto.addItem = function addItem(item) {
var items = this.get('items');
items.push(item);
this.clear();
this.render();
} // clear all the items of the legend
;
_proto.clear = function clear() {
var itemsGroup = this.get('itemsGroup');
itemsGroup.clear();
var group = this.get('group');
group.clear();
this.beforeRender();
} // destroy the legend
;
_proto.destroy = function destroy() {
var group = this.get('group');
group && group.destroy();
this._attrs = {};
this.removeAllListeners();
_Component.prototype.destroy.call(this); // 要最后调用 super.destroy 否则 get 属性会无效
} // return the width of the legend
;
_proto.getWidth = function getWidth() {
var bbox = this.get('group').getBBox();
return bbox.width;
} // return the height of the legend
;
_proto.getHeight = function getHeight() {
var bbox = this.get('group').getBBox();
return bbox.height;
};
_proto.move = function move(x, y) {
this.get('group').move(x, y);
};
_proto.draw = function draw() {
this.get('canvas').draw();
};
return Legend;
}(Component);
module.exports = Legend;