UNPKG

@antv/g2plot

Version:

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

184 lines 5.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var _ = tslib_1.__importStar(require("@antv/util")); var global_1 = require("../../base/global"); var view_layer_1 = tslib_1.__importDefault(require("../../base/view-layer")); var factory_1 = require("../../components/factory"); var factory_2 = require("../../geoms/factory"); var scale_1 = require("../../util/scale"); var apply_responsive_1 = tslib_1.__importDefault(require("./apply-responsive")); var EventParser = tslib_1.__importStar(require("./event")); require("./theme"); var GEOM_MAP = { area: 'area', line: 'line', point: 'point', }; var AreaLayer = /** @class */ (function (_super) { tslib_1.__extends(AreaLayer, _super); function AreaLayer() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = 'area'; return _this; } AreaLayer.getDefaultOptions = function () { return _.deepMix({}, _super.getDefaultOptions.call(this), { smooth: false, areaStyle: { opacity: 0.25, fillOpacity: 1, }, line: { visible: true, size: 2, style: { opacity: 1, lineJoin: 'round', lineCap: 'round', }, }, point: { visible: false, size: 4, shape: 'point', }, label: { visible: false, type: 'point', }, legend: { visible: true, position: 'top-left', wordSpacing: 4, }, }); }; AreaLayer.prototype.beforeInit = function () { _super.prototype.beforeInit.call(this); /** 响应式图形 */ if (this.options.responsive && this.options.padding !== 'auto') { this.applyResponsive('preRender'); } }; AreaLayer.prototype.afterRender = function () { /** 响应式 */ if (this.options.responsive && this.options.padding !== 'auto') { this.applyResponsive('afterRender'); } _super.prototype.afterRender.call(this); }; AreaLayer.prototype.geometryParser = function (dim, type) { return GEOM_MAP[type]; }; AreaLayer.prototype.scale = function () { var props = this.options; var scales = {}; /** 配置x-scale */ scales[props.xField] = { type: 'cat', }; if (_.has(props, 'xAxis')) { scale_1.extractScale(scales[props.xField], props.xAxis); } /** 配置y-scale */ scales[props.yField] = {}; if (_.has(props, 'yAxis')) { scale_1.extractScale(scales[props.yField], props.yAxis); } this.setConfig('scales', scales); _super.prototype.scale.call(this); }; AreaLayer.prototype.coord = function () { }; AreaLayer.prototype.addGeometry = function () { var props = this.options; var area = factory_2.getGeom('area', 'main', { plot: this, }); this.area = area; if (props.label) { this.label(); } this.adjustArea(area); this.setConfig('element', area); this.addLine(); this.addPoint(); }; AreaLayer.prototype.adjustArea = function (area) { return; }; AreaLayer.prototype.adjustLine = function (line) { return; }; AreaLayer.prototype.adjustPoint = function (point) { return; }; AreaLayer.prototype.addLine = function () { var props = this.options; var lineConfig = _.deepMix({}, props.line); if (lineConfig.visible) { var line = factory_2.getGeom('line', 'guide', { type: 'line', plot: this, line: lineConfig, }); this.adjustLine(line); this.setConfig('element', line); this.line = line; } }; AreaLayer.prototype.addPoint = function () { var props = this.options; var pointConfig = _.deepMix({}, props.point); if (pointConfig.visible) { var point = factory_2.getGeom('point', 'guide', { plot: this, }); this.adjustPoint(point); this.setConfig('element', point); this.point = point; } }; AreaLayer.prototype.animation = function () { _super.prototype.animation.call(this); var props = this.options; if (props.animation === false) { // 关闭动画 this.area.animate = false; if (this.line) this.line.animate = false; if (this.point) this.point.animate = false; } }; AreaLayer.prototype.label = function () { var props = this.options; var label = props.label; if (label.visible === false) { if (this.line) { this.line.label = false; } this.area.label = false; return; } this.area.label = factory_1.getComponent('label', { fields: [props.yField], plot: this, }); }; AreaLayer.prototype.parseEvents = function (eventParser) { _super.prototype.parseEvents.call(this, EventParser); }; AreaLayer.prototype.applyResponsive = function (stage) { var _this = this; var methods = apply_responsive_1.default[stage]; _.each(methods, function (r) { var responsive = r; responsive.method(_this); }); }; return AreaLayer; }(view_layer_1.default)); exports.default = AreaLayer; global_1.registerPlotType('area', AreaLayer); //# sourceMappingURL=layer.js.map