135 lines
3.6 KiB
JavaScript
135 lines
3.6 KiB
JavaScript
'use strict';
|
|
|
|
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
|
|
var utilsLite = require('utils-lite');
|
|
var utils = require('./utils');
|
|
require('echarts-liquidfill');
|
|
var Core = _interopDefault(require('./core'));
|
|
|
|
var _extends = Object.assign || function (target) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
var source = arguments[i];
|
|
|
|
for (var key in source) {
|
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
target[key] = source[key];
|
|
}
|
|
}
|
|
}
|
|
|
|
return target;
|
|
};
|
|
|
|
function getTooltip(args) {
|
|
var tooltipFormatter = args.tooltipFormatter,
|
|
dataType = args.dataType,
|
|
digit = args.digit;
|
|
|
|
|
|
return {
|
|
show: true,
|
|
formatter: function formatter(options) {
|
|
var seriesName = options.seriesName,
|
|
value = options.value;
|
|
|
|
if (tooltipFormatter) {
|
|
return tooltipFormatter.apply(null, arguments);
|
|
}
|
|
|
|
return [seriesName + ': ', utils.getFormated(value, dataType, digit)].join('');
|
|
}
|
|
};
|
|
}
|
|
|
|
function getSeries(args) {
|
|
var dimension = args.dimension,
|
|
metrics = args.metrics,
|
|
seriesMap = args.seriesMap,
|
|
rows = args.rows,
|
|
wave = args.wave;
|
|
|
|
|
|
var itemWave = wave;
|
|
var len = utilsLite.isArray(seriesMap) ? seriesMap.length : 0;
|
|
|
|
return rows.slice().map(function (item, index) {
|
|
var data = [];
|
|
var result = {
|
|
type: 'liquidFill'
|
|
};
|
|
|
|
var name = item[dimension];
|
|
var val = Number(item[metrics]);
|
|
var itemMap = {};
|
|
|
|
if (utilsLite.isArray(seriesMap)) {
|
|
itemMap = !seriesMap[index] ? seriesMap[len - 1] : seriesMap[index];
|
|
} else if (utilsLite.isObject(seriesMap[name])) {
|
|
itemMap = seriesMap[name];
|
|
}
|
|
|
|
if (utilsLite.isArray(wave) && utilsLite.isArray(wave[0])) {
|
|
itemWave = utilsLite.isArray(wave[index]) ? wave[index] : wave[wave.length - 1];
|
|
}
|
|
|
|
// 根据传入的数据(rows)和额外配置(seriesMap)的数据组合data
|
|
data.push({ value: val });
|
|
if (itemWave && itemWave.length) {
|
|
data = data.concat(itemWave.map(function (val) {
|
|
return { value: val };
|
|
}));
|
|
}
|
|
|
|
result = _extends(result, { data: data, name: name }, itemMap);
|
|
return result;
|
|
});
|
|
}
|
|
|
|
var liquidfill = function liquidfill(columns, rows, settings, extra) {
|
|
var _settings$dimension = settings.dimension,
|
|
dimension = _settings$dimension === undefined ? columns[0] : _settings$dimension,
|
|
_settings$metrics = settings.metrics,
|
|
metrics = _settings$metrics === undefined ? columns[1] : _settings$metrics,
|
|
_settings$seriesMap = settings.seriesMap,
|
|
seriesMap = _settings$seriesMap === undefined ? {} : _settings$seriesMap,
|
|
_settings$dataType = settings.dataType,
|
|
dataType = _settings$dataType === undefined ? 'percent' : _settings$dataType,
|
|
_settings$digit = settings.digit,
|
|
digit = _settings$digit === undefined ? 2 : _settings$digit,
|
|
_settings$wave = settings.wave,
|
|
wave = _settings$wave === undefined ? [] : _settings$wave;
|
|
var tooltipVisible = extra.tooltipVisible,
|
|
tooltipFormatter = extra.tooltipFormatter;
|
|
|
|
|
|
var tooltip = tooltipVisible && getTooltip({
|
|
tooltipFormatter: tooltipFormatter,
|
|
dataType: dataType,
|
|
digit: digit
|
|
});
|
|
var series = getSeries({
|
|
rows: rows,
|
|
columns: columns,
|
|
dimension: dimension,
|
|
metrics: metrics,
|
|
seriesMap: seriesMap,
|
|
wave: wave
|
|
});
|
|
|
|
return {
|
|
tooltip: tooltip,
|
|
series: series
|
|
};
|
|
};
|
|
|
|
var index = _extends({}, Core, {
|
|
name: 'VeLiquidfill',
|
|
data: function data() {
|
|
this.chartHandler = liquidfill;
|
|
return {};
|
|
}
|
|
});
|
|
|
|
module.exports = index;
|