@antv/g2plot
Version:
G2 Plot, a market of plots built with the Grammar of Graphics'
88 lines • 3.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var _ = tslib_1.__importStar(require("@antv/util"));
var formatter_1 = require("../../util/formatter");
var LabelParser = /** @class */ (function () {
function LabelParser(cfg) {
this.config = {};
var plot = cfg.plot, rest = tslib_1.__rest(cfg, ["plot"]);
this.plot = plot;
this.originConfig = rest;
this.init(cfg);
}
LabelParser.prototype.getConfig = function () {
return this.config;
};
LabelParser.prototype.init = function (cfg) {
var _this = this;
_.assign(this.config, cfg);
this.config.callback = function (val) {
var restArgs = [];
for (var _i = 1; _i < arguments.length; _i++) {
restArgs[_i - 1] = arguments[_i];
}
return _this.parseCallBack.apply(_this, tslib_1.__spreadArrays([val], restArgs));
};
};
LabelParser.prototype.parseCallBack = function (val) {
var restArgs = [];
for (var _i = 1; _i < arguments.length; _i++) {
restArgs[_i - 1] = arguments[_i];
}
var labelProps = this.originConfig;
var theme = this.plot.getPlotTheme();
var config = tslib_1.__assign({}, labelProps);
this.parseOffset(labelProps, config);
if (labelProps.position) {
if (_.isFunction(labelProps.position)) {
config.position = labelProps.position(val);
}
else {
config.position = labelProps.position;
}
}
this.parseFormatter.apply(this, tslib_1.__spreadArrays([config, val], restArgs));
if (labelProps.style) {
if (_.isFunction(labelProps.style)) {
config.textStyle = labelProps.style(val);
}
else {
config.textStyle = labelProps.style;
}
}
config.textStyle = _.deepMix({}, _.get(theme, 'label.style'), config.textStyle);
if (labelProps.autoRotate) {
config.autoRotate = labelProps.autoRotate;
}
return config;
};
LabelParser.prototype.parseOffset = function (props, config) {
var mapper = ['offset', 'offsetX', 'offsetY'];
var count = 0;
_.each(mapper, function (m) {
if (_.has(props, m)) {
config[m] = props[m];
count++;
}
});
// 如用户没有设置offset,而label position又为middle时,则默认设置offset为0
if (count === 0 && _.get(props, 'position') === 'middle') {
config.offset = 0;
}
};
LabelParser.prototype.parseFormatter = function (config) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
var labelProps = this.originConfig;
config.formatter = formatter_1.combineFormatter(formatter_1.getNoopFormatter(), formatter_1.getPrecisionFormatter(labelProps.precision), formatter_1.getSuffixFormatter(labelProps.suffix));
if (labelProps.formatter) {
config.formatter = formatter_1.combineFormatter(config.formatter, labelProps.formatter);
}
};
return LabelParser;
}());
exports.default = LabelParser;
//# sourceMappingURL=parser.js.map