UNPKG

@antv/g2plot

Version:

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

126 lines 5.36 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"); function propertyMapping(source, target, field) { if (source[field]) { target[field] = source[field]; } } var AxisParser = /** @class */ (function () { function AxisParser(cfg) { this.config = false; this.plot = cfg.plot; this.dim = cfg.dim; this.init(); } AxisParser.prototype.init = function () { this.config = false; var theme = this.plot.getPlotTheme(); this.themeConfig = theme && theme.axis && theme.axis[this.dim]; if (this._needDraw()) { this._styleParser(); } }; AxisParser.prototype._styleParser = function () { this.config = tslib_1.__assign({}, this.localProps); this._isVisible('line') ? this._lineParser() : (this.config.line = null); this._isVisible('grid') ? this._gridParser() : (this.config.grid = null); this._isVisible('tickLine') ? this._tickLineParser() : (this.config.tickLine = null); this._isVisible('label') ? this._labelParser() : (this.config.label = null); this._isVisible('title') ? this._titleParser() : (this.config.title = null); propertyMapping(this.localProps, this.config, 'autoHideLabel'); propertyMapping(this.localProps, this.config, 'autoRotateLabel'); propertyMapping(this.localProps, this.config, 'autoRotateTitle'); }; AxisParser.prototype._needDraw = function () { /** 如果在图表配置项里没有设置坐标轴整体的visibility则去对应的theme取 */ var propos = this.plot.options; var propsConfig = propos[this.dim + "Axis"] ? propos[this.dim + "Axis"] : {}; var config = _.deepMix({}, this.themeConfig, propsConfig); this.localProps = config; if (config.visible) { return true; } return false; }; AxisParser.prototype._lineParser = function () { this.config.line = this.localProps.line; if (this.localProps.line.style) { this.config.line = this.localProps.line.style; } this.applyThemeConfig('line'); }; AxisParser.prototype._gridParser = function () { var _this = this; var gridCfg = this.localProps.grid; var style = gridCfg.style; if (_.isFunction(style)) { // @see g2/component/src/axis/base:_renderGrid this.config.grid = function (text, index, count) { var cfg = style(text, index, count); return _.deepMix({}, _.get(_this.themeConfig, "grid.style"), cfg); }; } else if (style) { this.config.grid = style; this.applyThemeConfig('grid'); } }; AxisParser.prototype._tickLineParser = function () { this.config.tickLine = this.localProps.tickLine; if (this.localProps.tickLine.style) { this.config.tickLine = this.localProps.tickLine.style; } this.applyThemeConfig('tickLine'); }; AxisParser.prototype._labelParser = function () { var _a = this.localProps.label, style = _a.style, restLabelProps = tslib_1.__rest(_a, ["style"]); var labelConfig = tslib_1.__assign({}, restLabelProps); if (style) { labelConfig.textStyle = this.localProps.label.style; } labelConfig.textStyle = _.deepMix({}, _.get(this.themeConfig, 'label.style'), labelConfig.textStyle); var formatter = this.parseFormatter(labelConfig); labelConfig.formatter = formatter; this.config.label = labelConfig; }; AxisParser.prototype._titleParser = function () { var titleConfig = tslib_1.__assign({}, this.localProps.title); var _a = this.localProps.title, visible = _a.visible, style = _a.style, text = _a.text; if (!visible) { this.config.showTitle = false; } else { this.config.showTitle = true; if (style) { titleConfig.textStyle = style; } titleConfig.textStyle = _.deepMix({}, _.get(this.config, 'title.style'), titleConfig.textStyle); if (text) { titleConfig.text = text; } } this.config.title = titleConfig; }; AxisParser.prototype._isVisible = function (name) { if (this.localProps[name] && this.localProps[name].visible) { return true; } return false; }; AxisParser.prototype.applyThemeConfig = function (type) { this.config[type] = _.deepMix({}, _.get(this.themeConfig, type + ".style"), this.config[type]); }; AxisParser.prototype.parseFormatter = function (labelConfig) { var formatter = formatter_1.combineFormatter(formatter_1.getNoopFormatter(), formatter_1.getPrecisionFormatter(labelConfig.precision), formatter_1.getSuffixFormatter(labelConfig.suffix)); if (labelConfig.formatter) { formatter = formatter_1.combineFormatter(labelConfig.formatter, labelConfig.formatter); } return formatter; }; return AxisParser; }()); exports.default = AxisParser; //# sourceMappingURL=parser.js.map