@antv/g2plot
Version:
An interactive and responsive charting library
79 lines • 3.15 kB
JavaScript
import { __extends } from "tslib";
import { Action, Util } from '@antv/g2';
import { each, get } from '@antv/util';
import { renderStatistic } from '../../../../utils/statistic';
import { getCurrentElement } from '../util';
/**
* Pie 中心文本事件的 Action
*/
var StatisticAction = /** @class */ (function (_super) {
__extends(StatisticAction, _super);
function StatisticAction() {
return _super !== null && _super.apply(this, arguments) || this;
}
StatisticAction.prototype.getAnnotations = function (_view) {
var view = _view || this.context.view;
// @ts-ignore
return view.getController('annotation').option;
};
StatisticAction.prototype.getInitialAnnotation = function () {
return this.initialAnnotation;
};
StatisticAction.prototype.init = function () {
var _this = this;
var view = this.context.view;
view.removeInteraction('tooltip');
view.on('afterchangesize', function () {
var annotations = _this.getAnnotations(view);
_this.initialAnnotation = annotations;
});
};
StatisticAction.prototype.change = function (arg) {
var _a = this.context, view = _a.view, event = _a.event;
if (!this.initialAnnotation) {
this.initialAnnotation = this.getAnnotations();
}
var data = get(event, ['data', 'data']);
if (event.type.match('legend-item')) {
var delegateObject = Util.getDelegationObject(this.context);
// @ts-ignore
var colorField_1 = view.getGroupedFields()[0];
if (delegateObject && colorField_1) {
var item_1 = delegateObject.item;
data = view.getData().find(function (d) { return d[colorField_1] === item_1.value; });
}
}
if (data) {
var annotations = get(arg, 'annotations', []);
var statistic = get(arg, 'statistic', {});
// 先清空标注,再重新渲染
view.getController('annotation').clear(true);
// 先进行其他 annotations,再去渲染统计文本
each(annotations, function (annotation) {
if (typeof annotation === 'object') {
view.annotation()[annotation.type](annotation);
}
});
renderStatistic(view, { statistic: statistic, plotType: 'pie' }, data);
view.render(true);
}
// 交互的时候,把 shape 提前
var ele = getCurrentElement(this.context);
if (ele) {
ele.shape.toFront();
}
};
StatisticAction.prototype.reset = function () {
var view = this.context.view;
var annotationController = view.getController('annotation');
annotationController.clear(true);
var initialStatistic = this.getInitialAnnotation();
each(initialStatistic, function (a) {
view.annotation()[a.type](a);
});
view.render(true);
};
return StatisticAction;
}(Action));
export { StatisticAction };
//# sourceMappingURL=statistic-active.js.map