UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

102 lines (101 loc) 3.85 kB
import { each, isString } from "../../../../zrender/lib/core/util.mjs"; import { isSeriesDataSchema } from "./SeriesDataSchema.mjs"; function enableDataStack(seriesModel, dimensionsInput, opt) { opt = opt || {}; var byIndex = opt.byIndex; var stackedCoordDimension = opt.stackedCoordDimension; var dimensionDefineList; var schema; var store; if (isLegacyDimensionsInput(dimensionsInput)) { dimensionDefineList = dimensionsInput; } else { schema = dimensionsInput.schema; dimensionDefineList = schema.dimensions; store = dimensionsInput.store; } var mayStack = !!(seriesModel && seriesModel.get("stack")); var stackedByDimInfo; var stackedDimInfo; var stackResultDimension; var stackedOverDimension; each(dimensionDefineList, function(dimensionInfo, index) { if (isString(dimensionInfo)) { dimensionDefineList[index] = dimensionInfo = { name: dimensionInfo }; } if (mayStack && !dimensionInfo.isExtraCoord) { if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) { stackedByDimInfo = dimensionInfo; } if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) { stackedDimInfo = dimensionInfo; } } }); if (stackedDimInfo && !byIndex && !stackedByDimInfo) { byIndex = true; } if (stackedDimInfo) { stackResultDimension = "__\0ecstackresult_" + seriesModel.id; stackedOverDimension = "__\0ecstackedover_" + seriesModel.id; if (stackedByDimInfo) { stackedByDimInfo.createInvertedIndices = true; } var stackedDimCoordDim_1 = stackedDimInfo.coordDim; var stackedDimType = stackedDimInfo.type; var stackedDimCoordIndex_1 = 0; each(dimensionDefineList, function(dimensionInfo) { if (dimensionInfo.coordDim === stackedDimCoordDim_1) { stackedDimCoordIndex_1++; } }); var stackedOverDimensionDefine = { name: stackResultDimension, coordDim: stackedDimCoordDim_1, coordDimIndex: stackedDimCoordIndex_1, type: stackedDimType, isExtraCoord: true, isCalculationCoord: true, storeDimIndex: dimensionDefineList.length }; var stackResultDimensionDefine = { name: stackedOverDimension, coordDim: stackedOverDimension, coordDimIndex: stackedDimCoordIndex_1 + 1, type: stackedDimType, isExtraCoord: true, isCalculationCoord: true, storeDimIndex: dimensionDefineList.length + 1 }; if (schema) { if (store) { stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType); stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType); } schema.appendCalculationDimension(stackedOverDimensionDefine); schema.appendCalculationDimension(stackResultDimensionDefine); } else { dimensionDefineList.push(stackedOverDimensionDefine); dimensionDefineList.push(stackResultDimensionDefine); } } return { stackedDimension: stackedDimInfo && stackedDimInfo.name, stackedByDimension: stackedByDimInfo && stackedByDimInfo.name, isStackedByIndex: byIndex, stackedOverDimension, stackResultDimension }; } function isLegacyDimensionsInput(dimensionsInput) { return !isSeriesDataSchema(dimensionsInput.schema); } function isDimensionStacked(data, stackedDim) { return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension"); } function getStackedDimension(data, targetDim) { return isDimensionStacked(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim; } export { enableDataStack, getStackedDimension, isDimensionStacked };