@alicloud/cloud-charts
Version:

148 lines (141 loc) • 4.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.Box = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _Base2 = _interopRequireDefault(require("../common/Base"));
var _errorWrap = _interopRequireDefault(require("../common/errorWrap"));
var _index = _interopRequireDefault(require("../themes/index"));
var _common = require("../common/common");
var _legendFilter = _interopRequireDefault(require("../common/legendFilter"));
var _rectXAxis = _interopRequireDefault(require("../common/rectXAxis"));
var _rectYAxis = _interopRequireDefault(require("../common/rectYAxis"));
var _rectTooltip = _interopRequireDefault(require("../common/rectTooltip"));
var _rectLegend = _interopRequireDefault(require("../common/rectLegend"));
var _guide = _interopRequireDefault(require("../common/guide"));
var _geomSize = _interopRequireDefault(require("../common/geomSize"));
var _geomStyle = _interopRequireDefault(require("../common/geomStyle"));
var _index2 = require("../common/interaction/index");
require("./index.css");
// import { LabelConfig } from "../common/label";
var Box = exports.Box = /*#__PURE__*/function (_Base) {
(0, _inheritsLoose2["default"])(Box, _Base);
function Box() {
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 = 'G2Box';
return _this;
}
var _proto = Box.prototype;
_proto.getDefaultConfig = function getDefaultConfig() {
return {
colors: _index["default"].category_12,
// padding: ['auto', 'auto', 'auto', 'auto'],
xAxis: {
type: 'cat',
labelFormatter: null,
// 可以强制覆盖,手动设置label
categories: null,
autoRotate: false
},
yAxis: {
labelFormatter: null,
// 可以强制覆盖,手动设置label
max: null,
min: null
},
legend: {
align: 'left',
nameFormatter: null // 可以强制覆盖,手动设置label
},
tooltip: {
titleFormatter: null,
nameFormatter: null,
valueFormatter: null
},
dodge: true,
marginRatio: 0,
grid: false,
// zoom: false,
size: null
// label: false,
};
};
_proto.init = function init(chart, config, data) {
// 设置数据度量
var defs = {
x: (0, _common.propertyAssign)(_common.propertyMap.axis, {
type: 'cat'
}, config.xAxis),
y: (0, _common.propertyAssign)(_common.propertyMap.axis, {
type: 'linear',
tickCount: 5,
nice: true
}, config.yAxis),
type: {
type: 'cat'
}
};
chart.scale(defs);
chart.data(data);
// 设置单个Y轴
(0, _rectYAxis["default"])(this, chart, config);
// 设置X轴
(0, _rectXAxis["default"])(this, chart, config);
// 设置图例
(0, _rectLegend["default"])(this, chart, config, null, 'multiple', 'type');
(0, _legendFilter["default"])(this, chart);
// tooltip
(0, _rectTooltip["default"])(this, chart, config, {}, null, {
showCrosshairs: false,
showMarkers: false
});
(0, _index2.activeRegionWithTheme)(chart);
// 绘制辅助线,辅助背景区域
(0, _guide["default"])(chart, config);
drawBox(chart, config, config.colors);
};
return Box;
}(_Base2["default"]);
var Wbox = (0, _errorWrap["default"])(Box);
var _default = exports["default"] = Wbox;
function drawBox(chart, config, colors, field) {
if (field === void 0) {
field = 'type';
}
var dodge = config.dodge,
marginRatio = config.marginRatio,
size = config.size;
var geom = chart.schema().position(['x', 'y']).shape('box').color(field, colors).state({
active: {
style: function style(ele) {
var _ele$model;
return {
stroke: ele === null || ele === void 0 ? void 0 : (_ele$model = ele.model) === null || _ele$model === void 0 ? void 0 : _ele$model.color
};
}
},
selected: {
style: function style(ele) {
var _ele$model2;
return {
stroke: ele === null || ele === void 0 ? void 0 : (_ele$model2 = ele.model) === null || _ele$model2 === void 0 ? void 0 : _ele$model2.color
};
}
}
});
if (dodge !== false) {
geom.adjust([{
type: 'dodge',
marginRatio: marginRatio || 0.5 // 数值范围为 0 至 1,用于调整分组中各个柱子的间距
}]);
}
(0, _geomSize["default"])(geom, size, null, 'y', 'x*y*type*extra');
(0, _geomStyle["default"])(geom, config.geomStyle, {
lineWidth: 2
}, 'x*y*type*extra');
// label(geom, config);
}