@alicloud/cloud-charts
Version:

190 lines (180 loc) • 6.39 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.Line = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _Base2 = _interopRequireDefault(require("../common/Base"));
var _errorWrap = _interopRequireDefault(require("../common/errorWrap"));
var _themes = _interopRequireDefault(require("../themes"));
var _common = require("../common/common");
var _guide = _interopRequireDefault(require("../common/guide"));
var _rectXAxis = _interopRequireDefault(require("../common/rectXAxis"));
var _rectYAxis = _interopRequireDefault(require("../common/rectYAxis"));
var _autoTimeScale = _interopRequireDefault(require("../common/autoTimeScale"));
var _rectTooltip = _interopRequireDefault(require("../common/rectTooltip"));
var _rectLegend = _interopRequireDefault(require("../common/rectLegend"));
var _legendFilter = _interopRequireDefault(require("../common/legendFilter"));
var _rectZoom = _interopRequireDefault(require("../common/rectZoom"));
var _rectSlider = _interopRequireDefault(require("../common/rectSlider"));
var _drawLine = _interopRequireDefault(require("../common/drawLine"));
var _ChartProvider = require("../ChartProvider");
require("./index.css");
var Line = exports.Line = /*#__PURE__*/function (_Base) {
(0, _inheritsLoose2["default"])(Line, _Base);
function Line() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _Base.call.apply(_Base, [this].concat(args)) || this;
_this.chartName = 'G2Line';
return _this;
}
var _proto = Line.prototype;
_proto.getDefaultConfig = function getDefaultConfig() {
return {
colors: _themes["default"].category_12,
areaColors: [],
xAxis: {
type: 'time',
// 默认为时间连续
mask: 'auto' // 上述type为time时,此字段生效
},
yAxis: {
labelFormatter: null,
// 可以强制覆盖,手动设置label
max: null,
min: null
},
legend: {
visible: true,
align: 'left',
nameFormatter: null // 可以强制覆盖,手动设置label
},
tooltip: {
titleFormatter: null,
nameFormatter: null,
valueFormatter: null,
lockable: false
},
area: false,
stack: false,
// 仅Area有效
spline: false,
grid: false,
symbol: false,
zoom: false,
label: false,
step: null
// TODO
// mini: false,
// dataConfig: {
// nameKey: 'name',
// valueKey: 'value',
// // valueKey: ['value1', 'value2'],
// typeKey: 'type'
// }
};
};
_proto.init = function init(chart, config, data) {
var _this2 = this;
var defs = {
x: (0, _common.propertyAssign)(_common.propertyMap.axis, {
type: 'time',
// 折线图X轴的范围默认覆盖全部区域,保证没有空余
range: [0, 1]
}, config.xAxis),
type: {
type: 'cat'
}
};
if (Array.isArray(config.yAxis)) {
config.yAxis.forEach(function (axis, yIndex) {
defs["y" + yIndex] = (0, _common.propertyAssign)(_common.propertyMap.axis, {
type: 'linear',
tickCount: 5,
nice: true
}, axis);
});
} else {
defs.y = (0, _common.propertyAssign)(_common.propertyMap.axis, {
type: 'linear',
tickCount: 5,
nice: true
}, config.yAxis);
}
(0, _autoTimeScale["default"])(defs, this.rawData, this.language || this.context.language);
// rectAutoTickCount(chart, config, defs, false);
chart.scale(defs);
chart.data(data);
// 如果开启标签或者标记点则需要留出右边的空余,尺寸需要通过计算获得
// 配置的scale和生成的会有不符合的地方
// 设置X轴
(0, _rectXAxis["default"])(this, chart, config);
if (Array.isArray(config.yAxis)) {
config.yAxis.forEach(function (axis, yIndex) {
var yAxisConfig = {
line: {
style: {
stroke: _themes["default"]['widgets-axis-line']
}
}
};
if (yIndex !== 0) {
yAxisConfig.grid = null;
}
(0, _rectYAxis["default"])(_this2, chart, (0, _extends2["default"])({}, config, {
yAxis: axis
}), "y" + yIndex, yAxisConfig);
});
} else {
// 设置单个Y轴
(0, _rectYAxis["default"])(this, chart, config);
}
// 设置图例
(0, _rectLegend["default"])(this, chart, config, null, 'multiple', 'type');
(0, _legendFilter["default"])(this, chart);
// tooltip的标记点配置
var markerOptions = {
marker: {
symbol: 'circle'
}
};
if (config.symbol && typeof config.symbol === 'object') {
// 样式合并
markerOptions.marker = Object.assign(markerOptions.marker, config.symbol.geomStyle);
// 图形
if (config.symbol.shape) {
markerOptions.marker.symbol = config.symbol.shape;
}
// 大小
if (typeof config.symbol.size === 'number') {
markerOptions.marker = Object.assign(markerOptions.marker, {
r: config.symbol.size + 4,
width: config.symbol.size + 4,
height: config.symbol.size + 4
});
}
}
// tooltip
(0, _rectTooltip["default"])(this, chart, config, markerOptions);
// 绘制辅助线,辅助背景区域
(0, _guide["default"])(chart, config);
if (Array.isArray(config.yAxis)) {
config.yAxis.forEach(function (axis, yIndex) {
(0, _drawLine["default"])(chart, config, "y" + yIndex);
});
} else {
(0, _drawLine["default"])(chart, config);
}
// 拖拽缩放
(0, _rectZoom["default"])(chart, config, (0, _ChartProvider.getText)('reset', this.language || this.context.language, this.context.locale));
// 缩略轴
(0, _rectSlider["default"])(chart, config);
};
return Line;
}(_Base2["default"]);
/** Wline 折线图 */
var Wline = (0, _errorWrap["default"])(Line);
var _default = exports["default"] = Wline;