MCPcopy
hub / github.com/apache/echarts / prepareSeriesDataSchema

Function prepareSeriesDataSchema

src/data/helper/createDimensions.ts:100–362  ·  view source on GitHub ↗
(
    // TODO: TYPE completeDimensions type
    source: Source | OptionSourceData,
    opt?: PrepareSeriesDataSchemaParams
)

Source from the content-addressed store, hash-verified

98 * @return The results are always sorted by `storeDimIndex` asc.
99 */
100export default function prepareSeriesDataSchema(
101 // TODO: TYPE completeDimensions type
102 source: Source | OptionSourceData,
103 opt?: PrepareSeriesDataSchemaParams
104): SeriesDataSchema {
105 if (!isSourceInstance(source)) {
106 source = createSourceFromSeriesDataOption(source as OptionSourceData);
107 }
108
109 opt = opt || {};
110
111 const sysDims = opt.coordDimensions || [];
112 const dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];
113 const coordDimNameMap = createHashMap<true, DimensionName>();
114 const resultList: SeriesDimensionDefine[] = [];
115 const dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount);
116
117 // Try to ignore unused dimensions if sharing a high dimension datastore
118 // 30 is an experience value.
119 const omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);
120
121 const isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;
122 const dataDimNameMap = isUsingSourceDimensionsDef
123 ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);
124
125 let encodeDef = opt.encodeDefine;
126 if (!encodeDef && opt.encodeDefaulter) {
127 encodeDef = opt.encodeDefaulter(source, dimCount);
128 }
129 const encodeDefMap = createHashMap<DimensionIndex[] | false, DimensionName>(encodeDef as any);
130
131 const indicesMap = new CtorInt32Array(dimCount);
132 for (let i = 0; i < indicesMap.length; i++) {
133 indicesMap[i] = -1;
134 }
135
136 function getResultItem(dimIdx: number) {
137 const idx = indicesMap[dimIdx];
138 if (idx < 0) {
139 const dimDefItemRaw = dimsDef[dimIdx];
140 const dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw };
141 const resultItem = new SeriesDimensionDefine();
142 const userDimName = dimDefItem.name;
143 if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
144 // Only if `series.dimensions` is defined in option
145 // displayName, will be set, and dimension will be displayed vertically in
146 // tooltip by default.
147 resultItem.name = resultItem.displayName = userDimName;
148 }
149 dimDefItem.type != null && (resultItem.type = dimDefItem.type);
150 dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);
151 const newIdx = resultList.length;
152 indicesMap[dimIdx] = newIdx;
153 resultItem.storeDimIndex = dimIdx;
154 resultList.push(resultItem);
155 return resultItem;
156 }
157 return resultList[idx];

Callers 6

createGraphFromNodeEdgeFunction · 0.85
createSeriesDataSimplyFunction · 0.85
createSeriesDataFunction · 0.85
getInitialDataMethod · 0.85
createTreeMethod · 0.85
createDimensionsFunction · 0.85

Calls 15

isSourceInstanceFunction · 0.90
ensureSourceDimNameMapFunction · 0.90
createDimNameMapFunction · 0.90
normalizeToArrayFunction · 0.90
guessOrdinalFunction · 0.90
removeDuplicatesFunction · 0.90
getDimCountFunction · 0.85
getResultItemFunction · 0.85
applyDimFunction · 0.85
extendFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…