UNPKG

@antv/g2plot

Version:

G2 Plot, a market of plots built with the Grammar of Graphics'

85 lines 4.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var g2_1 = require("@antv/g2"); var _ = tslib_1.__importStar(require("@antv/util")); var utils_1 = require("./utils"); var base_label_1 = tslib_1.__importDefault(require("./base-label")); var outer_label_1 = require("./outer-label"); var OuterCenterPieLabel = /** @class */ (function (_super) { tslib_1.__extends(OuterCenterPieLabel, _super); function OuterCenterPieLabel() { return _super !== null && _super.apply(this, arguments) || this; } OuterCenterPieLabel.prototype.adjustPosition = function (labels, items, coord, panel) { this._adjustLabelPosition(labels, items, coord, panel); }; /** @override */ OuterCenterPieLabel.prototype.adjustLines = function (labels, labelItems, labelLines, coord, panel) { var _this = this; _.each(labels, function (label, idx) { var labelLine = labelLines[idx]; var path = _this._getLinePath(label, coord, panel); labelLine.attr('path', path); labelLine.set('visible', label.get('visible')); }); }; /** @override */ OuterCenterPieLabel.prototype.getOffsetOfLabel = function () { var labelOptions = this.get('labelOptions'); var offset = labelOptions.offset; return offset === undefined ? outer_label_1.DEFAULT_OFFSET : offset <= outer_label_1.CROOK_DISTANCE ? 1 : offset - outer_label_1.CROOK_DISTANCE; }; // label shape position OuterCenterPieLabel.prototype._adjustLabelPosition = function (labels, items, coord, panel) { var _this = this; var center = coord.getCenter(); var r = coord.getRadius(); var distance = this.getCrookDistance(); labels.forEach(function (l, idx) { var item = items[idx]; var offset = _this.getOffsetOfLabel(); var pos = utils_1.getEndPoint(center, item.angle, r + offset); var isRight = item.textAlign === 'left'; l.attr('x', pos.x + (isRight ? distance * 2 : -distance * 2)); l.attr('y', pos.y); }); }; // 获取label leader-line OuterCenterPieLabel.prototype._getLinePath = function (label, coord, panel) { var labelOptions = this.getLabelOptions(); var smooth = labelOptions.line ? labelOptions.line.smooth : false; var anchor = this.anchors.find(function (a) { return a.id === label.id; }); var angle = anchor.angle; var center = coord.getCenter(); var r = coord.getRadius(); var start = utils_1.getEndPoint(center, angle, r); // because shape is adjusted, so we should getAttrbutes by shape var offset = this.getOffsetOfLabel(); var isRight = anchor.textAlign === 'left'; var breakAt = utils_1.getEndPoint(center, angle, r + offset); var distance = this.getCrookDistance() * (isRight ? 1 : -1); var end = { x: label.attr('x') - distance, y: label.attr('y') }; var path = ''; path = ["M " + start.x, start.y + " Q" + breakAt.x, breakAt.y + " " + end.x, end.y].join(','); if (smooth === false) { // normal path rule, draw path is "M -> L -> H" path = ["M " + start.x, start.y + " L" + (breakAt.x - distance), end.y + " H" + end.x].join(','); } return path; }; /** @override */ // tslint:disable OuterCenterPieLabel.prototype.getDefaultOffset = function (point) { var offset = _super.prototype.getDefaultOffset.call(this, point); return offset === undefined ? outer_label_1.DEFAULT_OFFSET : offset <= outer_label_1.CROOK_DISTANCE ? 1 : offset - outer_label_1.CROOK_DISTANCE; }; OuterCenterPieLabel.prototype.getCrookDistance = function () { var labelOptions = this.get('labelOptions'); var offset = labelOptions.offset; return offset < outer_label_1.CROOK_DISTANCE * 2 ? offset / 2 : outer_label_1.CROOK_DISTANCE; }; return OuterCenterPieLabel; }(base_label_1.default)); g2_1.registerElementLabels('outer-center', OuterCenterPieLabel); //# sourceMappingURL=outer-center-label.js.map