UNPKG

@zhsz/cool-design-dv

Version:

83 lines (82 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const lodashEs = require("lodash-es"); const util = require("./util.js"); function getLabelConfig(label, dimension) { const formatter = util.getLabelFormatter(dimension, "{@value}"); return lodashEs.isObject(label) ? { ...formatter, ...label, show: true } : { ...formatter, position: label, show: true }; } function injectLabel(series = [], label, dimensions) { if (!label) return; if (Array.isArray(label)) { series.forEach((item, index) => { const dimension = dimensions.slice(1)[index]; const labelItem = label[index]; if (labelItem) { item.label = getLabelConfig(labelItem, dimension); } }); } else { series.forEach((item, index) => { const dimension = dimensions.slice(1)[index]; item.label = getLabelConfig(label, dimension); }); } } function getStackName(stack, dimension) { if (!stack) return null; if (Array.isArray(stack)) { const match = !!stack.find((name) => { return [dimension.name, dimension.displayName, dimension].includes(name); }); return match ? "stack" : null; } else if (lodashEs.isObject(stack)) { const match = Object.values(stack).find((names) => { return !!names.find((name) => { return [dimension.name, dimension.displayName, dimension].includes( name ); }); }); return match ? match[0] : null; } } function baseSeries(type, layout, dimensions, settings) { const shouldChangeTypes = type === "line" ? settings.bars ? [].concat(settings.bars) : [] : settings.lines ? [].concat(settings.lines) : []; const valueAxis = settings.valueAxis ? [].concat(settings.valueAxis) : []; const direction = settings.direction; const axisIndexName = direction === "x" ? "yAxisIndex" : "xAxisIndex"; return dimensions.slice(1).map((dimension) => { let index = 0; if (valueAxis.length) { index = valueAxis.findIndex((item) => { const axis = lodashEs.isObject(item) ? item : { name: item }; return [dimension.name, dimension.displayName].includes(axis.name); }); } index = Math.max(0, index); const chartType = type === "line" ? shouldChangeTypes.includes(dimension.name) ? "bar" : type : shouldChangeTypes.includes(dimension.name) ? "line" : type; const stack = getStackName(settings.stack, dimension); return { type: chartType, stack, areaStyle: stack ? {} : null, seriesLayoutBy: layout, [axisIndexName]: index }; }); } function createSeries({ type, layout = "column", dimensions, settings }) { const series = baseSeries(type, layout, dimensions, settings); injectLabel(series, settings.label, dimensions); return series; } exports.baseSeries = baseSeries; exports.createSeries = createSeries;