123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- var _util = require("zrender/lib/core/util");
- var createHashMap = _util.createHashMap;
- var each = _util.each;
- var isString = _util.isString;
- var defaults = _util.defaults;
- var extend = _util.extend;
- var isObject = _util.isObject;
- var clone = _util.clone;
- var _model = require("../../util/model");
- var normalizeToArray = _model.normalizeToArray;
- var _sourceHelper = require("./sourceHelper");
- var guessOrdinal = _sourceHelper.guessOrdinal;
- var BE_ORDINAL = _sourceHelper.BE_ORDINAL;
- var Source = require("../Source");
- var _dimensionHelper = require("./dimensionHelper");
- var OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;
- var DataDimensionInfo = require("../DataDimensionInfo");
- function completeDimensions(sysDims, source, opt) {
- if (!Source.isInstance(source)) {
- source = Source.seriesDataToSource(source);
- }
- opt = opt || {};
- sysDims = (sysDims || []).slice();
- var dimsDef = (opt.dimsDef || []).slice();
- var dataDimNameMap = createHashMap();
- var coordDimNameMap = createHashMap();
- var result = [];
- var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);
- for (var i = 0; i < dimCount; i++) {
- var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {
- name: dimsDef[i]
- });
- var userDimName = dimDefItem.name;
- var resultItem = result[i] = new DataDimensionInfo();
- if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
-
-
-
- resultItem.name = resultItem.displayName = userDimName;
- dataDimNameMap.set(userDimName, i);
- }
- dimDefItem.type != null && (resultItem.type = dimDefItem.type);
- dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);
- }
- var encodeDef = opt.encodeDef;
- if (!encodeDef && opt.encodeDefaulter) {
- encodeDef = opt.encodeDefaulter(source, dimCount);
- }
- encodeDef = createHashMap(encodeDef);
- encodeDef.each(function (dataDims, coordDim) {
- dataDims = normalizeToArray(dataDims).slice();
-
-
- if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {
- encodeDef.set(coordDim, false);
- return;
- }
- var validDataDims = encodeDef.set(coordDim, []);
- each(dataDims, function (resultDimIdx, idx) {
-
- isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));
- if (resultDimIdx != null && resultDimIdx < dimCount) {
- validDataDims[idx] = resultDimIdx;
- applyDim(result[resultDimIdx], coordDim, idx);
- }
- });
- });
- var availDimIdx = 0;
- each(sysDims, function (sysDimItem, sysDimIndex) {
- var coordDim;
- var sysDimItem;
- var sysDimItemDimsDef;
- var sysDimItemOtherDims;
- if (isString(sysDimItem)) {
- coordDim = sysDimItem;
- sysDimItem = {};
- } else {
- coordDim = sysDimItem.name;
- var ordinalMeta = sysDimItem.ordinalMeta;
- sysDimItem.ordinalMeta = null;
- sysDimItem = clone(sysDimItem);
- sysDimItem.ordinalMeta = ordinalMeta;
- sysDimItemDimsDef = sysDimItem.dimsDef;
- sysDimItemOtherDims = sysDimItem.otherDims;
- sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;
- }
- var dataDims = encodeDef.get(coordDim);
- if (dataDims === false) {
- return;
- }
- var dataDims = normalizeToArray(dataDims);
- if (!dataDims.length) {
- for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {
- while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {
- availDimIdx++;
- }
- availDimIdx < result.length && dataDims.push(availDimIdx++);
- }
- }
- each(dataDims, function (resultDimIdx, coordDimIndex) {
- var resultItem = result[resultDimIdx];
- applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);
- if (resultItem.name == null && sysDimItemDimsDef) {
- var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];
- !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {
- name: sysDimItemDimsDefItem
- });
- resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;
- resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;
- }
- sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);
- });
- });
- function applyDim(resultItem, coordDim, coordDimIndex) {
- if (OTHER_DIMENSIONS.get(coordDim) != null) {
- resultItem.otherDims[coordDim] = coordDimIndex;
- } else {
- resultItem.coordDim = coordDim;
- resultItem.coordDimIndex = coordDimIndex;
- coordDimNameMap.set(coordDim, true);
- }
- }
- var generateCoord = opt.generateCoord;
- var generateCoordCount = opt.generateCoordCount;
- var fromZero = generateCoordCount != null;
- generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;
- var extra = generateCoord || 'value';
- for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
- var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();
- var coordDim = resultItem.coordDim;
- if (coordDim == null) {
- resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);
- resultItem.coordDimIndex = 0;
- if (!generateCoord || generateCoordCount <= 0) {
- resultItem.isExtraCoord = true;
- }
- generateCoordCount--;
- }
- resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));
- if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must
-
-
-
-
-
-
-
-
-
-
-
- || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {
- resultItem.type = 'ordinal';
- }
- }
- return result;
- }
- function getDimCount(source, sysDims, dimsDef, optDimCount) {
-
-
- var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);
- each(sysDims, function (sysDimItem) {
- var sysDimItemDimsDef = sysDimItem.dimsDef;
- sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));
- });
- return dimCount;
- }
- function genName(name, map, fromZero) {
- if (fromZero || map.get(name) != null) {
- var i = 0;
- while (map.get(name + i) != null) {
- i++;
- }
- name += i;
- }
- map.set(name, true);
- return name;
- }
- var _default = completeDimensions;
- module.exports = _default;
|