MCPcopy Index your code
hub / github.com/apache/echarts / parseRawOption

Function parseRawOption

src/model/OptionManager.ts:294–378  ·  view source on GitHub ↗

* [RAW_OPTION_PATTERNS] * (Note: "series: []" represents all other props in `ECUnitOption`) * * (1) No prop "baseOption" declared: * Root option is used as "baseOption" (except prop "options" and "media"). * ```js * option = { * series: [], * timeline: {}, * options: [], * };

(
    // `rawOption` May be modified
    rawOption: ECBasicOption,
    optionPreprocessorFuncs: OptionPreprocessor[],
    isNew: boolean
)

Source from the content-addressed store, hash-verified

292 * ```
293 */
294function parseRawOption(
295 // `rawOption` May be modified
296 rawOption: ECBasicOption,
297 optionPreprocessorFuncs: OptionPreprocessor[],
298 isNew: boolean
299): ParsedRawOption {
300 const mediaList: MediaUnit[] = [];
301 let mediaDefault: MediaUnit;
302 let baseOption: ECUnitOption;
303
304 const declaredBaseOption = rawOption.baseOption;
305 // Compatible with ec2, [RAW_OPTION_PATTERNS] above.
306 const timelineOnRoot = rawOption.timeline;
307 const timelineOptionsOnRoot = rawOption.options;
308 const mediaOnRoot = rawOption.media;
309 const hasMedia = !!rawOption.media;
310 const hasTimeline = !!(
311 timelineOptionsOnRoot || timelineOnRoot || (declaredBaseOption && declaredBaseOption.timeline)
312 );
313
314 if (declaredBaseOption) {
315 baseOption = declaredBaseOption;
316 // For merge option.
317 if (!baseOption.timeline) {
318 baseOption.timeline = timelineOnRoot;
319 }
320 }
321 // For convenience, enable to use the root option as the `baseOption`:
322 // `{ ...normalOptionProps, media: [{ ... }, { ... }] }`
323 else {
324 if (hasTimeline || hasMedia) {
325 rawOption.options = rawOption.media = null;
326 }
327 baseOption = rawOption;
328 }
329
330 if (hasMedia) {
331 if (isArray(mediaOnRoot)) {
332 each(mediaOnRoot, function (singleMedia) {
333 if (__DEV__) {
334 // Real case of wrong config.
335 if (singleMedia
336 && !singleMedia.option
337 && isObject(singleMedia.query)
338 && isObject((singleMedia.query as any).option)
339 ) {
340 error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');
341 }
342 }
343 if (singleMedia && singleMedia.option) {
344 if (singleMedia.query) {
345 mediaList.push(singleMedia);
346 }
347 else if (!mediaDefault) {
348 // Use the first media default.
349 mediaDefault = singleMedia;
350 }
351 }

Callers 1

setOptionMethod · 0.85

Calls 5

errorFunction · 0.90
isArrayFunction · 0.85
doPreprocessFunction · 0.85
eachFunction · 0.50
isObjectFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…