@alicloud/cloud-charts
Version:

116 lines (114 loc) • 4.4 kB
JavaScript
;
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["position", "offset", "labelFormatter", "customConfig", "field", "key", "callback"];
import themes from '../themes';
import { merge, pxToNumber, getFormatConfig, customFormatter } from './common';
import { warn } from './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';
export default function (_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 = _objectWithoutPropertiesLoose(_configLabel, _excluded);
var labelConfig = _extends({}, defaultConfig, {
// type,
position: position,
// 默认距离 4,加上文字一半的大小以居中,转换为字号 12/3 + 12/2 = 12 * 5/6
offset: pxToNumber(themes['widgets-font-size-1']) * 5 / 6
// autoRotate,
// style,
// textStyle,
});
if (key) {
warn('config.label', 'key 属性已废弃,请使用 field 属性');
}
var newField = key || userField || field;
if (labelFormatter) {
labelConfig.content = function (v, item, index) {
return labelFormatter(v[newField], item, index);
};
if (componentConfig) {
Object.assign(labelConfig, componentConfig);
}
} else {
if (componentConfig) {
Object.assign(labelConfig, componentConfig);
}
var formatConfig = getFormatConfig(config);
var customValueFormatter = customFormatter(formatConfig);
if (customValueFormatter) {
labelConfig.content = function (v, item, index) {
return customValueFormatter(v[newField]);
};
}
}
Object.assign(labelConfig, otherConfigs);
if (position === 'middle') {
labelConfig.offset = 0;
}
if (offset !== undefined) {
labelConfig.offset = offset;
}
if (customConfig) {
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);
}
}