(
seriesModel: SeriesModel<SeriesOption & SeriesStackOptionMixin>,
dimensionsInput: EnableDataStackDimensionsInput | EnableDataStackDimensionsInputLegacy,
opt?: {
// Backward compat
stackedCoordDimension?: string
byIndex?: boolean
}
)
| 57 | * } |
| 58 | */ |
| 59 | export function enableDataStack( |
| 60 | seriesModel: SeriesModel<SeriesOption & SeriesStackOptionMixin>, |
| 61 | dimensionsInput: EnableDataStackDimensionsInput | EnableDataStackDimensionsInputLegacy, |
| 62 | opt?: { |
| 63 | // Backward compat |
| 64 | stackedCoordDimension?: string |
| 65 | byIndex?: boolean |
| 66 | } |
| 67 | ): Pick< |
| 68 | DataCalculationInfo<unknown>, |
| 69 | 'stackedDimension' |
| 70 | | 'stackedByDimension' |
| 71 | | 'isStackedByIndex' |
| 72 | | 'stackedOverDimension' |
| 73 | | 'stackResultDimension' |
| 74 | > { |
| 75 | opt = opt || {}; |
| 76 | let byIndex = opt.byIndex; |
| 77 | const stackedCoordDimension = opt.stackedCoordDimension; |
| 78 | |
| 79 | let dimensionDefineList: EnableDataStackDimensionsInputLegacy; |
| 80 | let schema: SeriesDataSchema; |
| 81 | let store: DataStore; |
| 82 | |
| 83 | if (isLegacyDimensionsInput(dimensionsInput)) { |
| 84 | dimensionDefineList = dimensionsInput; |
| 85 | } |
| 86 | else { |
| 87 | schema = dimensionsInput.schema; |
| 88 | dimensionDefineList = schema.dimensions; |
| 89 | store = dimensionsInput.store; |
| 90 | } |
| 91 | |
| 92 | // compatible: when `stack` is set as '', do not stack. |
| 93 | const mayStack = !!(seriesModel && seriesModel.get('stack')); |
| 94 | let stackedByDimInfo: SeriesDimensionDefine; |
| 95 | let stackedDimInfo: SeriesDimensionDefine; |
| 96 | let stackResultDimension: string; |
| 97 | let stackedOverDimension: string; |
| 98 | let allDimTypesAreNotOrdinalAndTime = true; |
| 99 | |
| 100 | function dimTypeIsNotOrdinalAndTime(dimensionInfo: SeriesDimensionDefine): boolean { |
| 101 | return dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time'; |
| 102 | } |
| 103 | |
| 104 | each(dimensionDefineList, function (dimensionInfo, index) { |
| 105 | if (isString(dimensionInfo)) { |
| 106 | dimensionDefineList[index] = dimensionInfo = { |
| 107 | name: dimensionInfo as string |
| 108 | } as SeriesDimensionDefine; |
| 109 | } |
| 110 | if (!dimTypeIsNotOrdinalAndTime(dimensionInfo)) { |
| 111 | allDimTypesAreNotOrdinalAndTime = false; |
| 112 | } |
| 113 | }); |
| 114 | |
| 115 | each(dimensionDefineList, function (dimensionInfo: SeriesDimensionDefine, index) { |
| 116 | if (mayStack && !dimensionInfo.isExtraCoord) { |
no test coverage detected
searching dependent graphs…