@alicloud/cloud-charts
Version:

129 lines (103 loc) • 4.33 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = _default;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _themes = _interopRequireDefault(require("../themes"));
var _common = require("./common");
var _log = require("./log");
/**
* 图形元素label设置。
*
* @param {object} geom 图形元素对象
* @param {object} config 图表配置项
* @param {string} [field] 映射数据的字段,默认为y
* @param {object} [defaultConfig] 图表额外配置项
* @param {string} [extraConfigKey] 额外配置项的key,会在 config.label 的基础上额外扩展,且配置优先级高于默认的 label
* @param {boolean} [useCustomOffset] 是否适用用户自定义偏移量
* */
var defaultConfigKey = 'label';
function _default(_ref) {
var geom = _ref.geom,
config = _ref.config,
_ref$field = _ref.field,
field = _ref$field === void 0 ? 'y' : _ref$field,
_ref$defaultConfig = _ref.defaultConfig,
defaultConfig = _ref$defaultConfig === void 0 ? {} : _ref$defaultConfig,
_ref$extraConfigKey = _ref.extraConfigKey,
extraConfigKey = _ref$extraConfigKey === void 0 ? null : _ref$extraConfigKey,
_ref$useCustomOffset = _ref.useCustomOffset,
useCustomOffset = _ref$useCustomOffset === void 0 ? undefined : _ref$useCustomOffset,
_ref$componentConfig = _ref.componentConfig,
componentConfig = _ref$componentConfig === void 0 ? undefined : _ref$componentConfig,
extraCallbackParams = _ref.extraCallbackParams;
var configLabel = config[defaultConfigKey];
if (extraConfigKey && config[extraConfigKey] !== undefined) {
configLabel = config[extraConfigKey];
} // const configKey = extraConfigKey || defaultConfigKey;
if (!configLabel || typeof configLabel === 'object' && configLabel.visible === false) {
return;
}
if (configLabel === true) {
configLabel = {};
}
var _configLabel = configLabel,
_configLabel$position = _configLabel.position,
position = _configLabel$position === void 0 ? 'top' : _configLabel$position,
offset = _configLabel.offset,
_configLabel$labelFor = _configLabel.labelFormatter,
labelFormatter = _configLabel$labelFor === void 0 ? null : _configLabel$labelFor,
customConfig = _configLabel.customConfig,
userField = _configLabel.field,
key = _configLabel.key,
callback = _configLabel.callback,
otherConfigs = (0, _objectWithoutPropertiesLoose2["default"])(_configLabel, ["position", "offset", "labelFormatter", "customConfig", "field", "key", "callback"]);
var labelConfig = (0, _extends2["default"])({}, defaultConfig, {
// type,
position: position,
// 默认距离 4,加上文字一半的大小以居中,转换为字号 12/3 + 12/2 = 12 * 5/6
offset: (0, _common.pxToNumber)(_themes["default"]['widgets-font-size-1']) * 5 / 6 // autoRotate,
// style,
// textStyle,
});
if (key) {
(0, _log.warn)('config.label', 'key 属性已废弃,请使用 field 属性');
}
var newField = key || userField || field;
if (labelFormatter) {
labelConfig.content = function (v, item, index) {
return labelFormatter(v[newField], item, index);
};
}
Object.assign(labelConfig, otherConfigs);
if (position === 'middle') {
labelConfig.offset = 0;
}
if (componentConfig) {
Object.assign(labelConfig, componentConfig);
}
if (offset !== undefined) {
labelConfig.offset = offset;
}
if (customConfig) {
(0, _common.merge)(labelConfig, customConfig);
}
if (useCustomOffset) {
labelConfig.offset = Number(offset);
}
if (callback) {
if (extraCallbackParams) {
geom.label(newField, function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return callback.apply(void 0, args.concat(extraCallbackParams));
}, labelConfig);
} else {
geom.label(newField, callback, labelConfig);
}
} else {
geom.label(newField, labelConfig);
}
}