UNPKG

@antv/g2plot

Version:

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

88 lines 3.41 kB
"use strict"; 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