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

Method createTree

src/data/Tree.ts:416–470  ·  view source on GitHub ↗

* data node format: * { * name: ... * value: ... * children: [ * { * name: ... * value: ... * children: ... * }, * ... * ] * }

(
        dataRoot: T,
        hostModel: HostModel,
        beforeLink?: (data: SeriesData) => void
    )

Source from the content-addressed store, hash-verified

414 * }
415 */
416 static createTree<T extends TreeNodeOption, HostModel extends Model>(
417 dataRoot: T,
418 hostModel: HostModel,
419 beforeLink?: (data: SeriesData) => void
420 ) {
421
422 const tree = new Tree(hostModel);
423 const listData: TreeNodeOption[] = [];
424 let dimMax = 1;
425
426 buildHierarchy(dataRoot);
427
428 function buildHierarchy(dataNode: TreeNodeOption, parentNode?: TreeNode) {
429 const value = dataNode.value;
430 dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);
431
432 listData.push(dataNode);
433
434 const node = new TreeNode(convertOptionIdName(dataNode.name, ''), tree);
435 parentNode
436 ? addChild(node, parentNode)
437 : (tree.root = node);
438
439 tree._nodes.push(node);
440
441 const children = dataNode.children;
442 if (children) {
443 for (let i = 0; i < children.length; i++) {
444 buildHierarchy(children[i], node);
445 }
446 }
447 }
448
449 tree.root.updateDepthAndHeight(0);
450
451 const { dimensions } = prepareSeriesDataSchema(listData, {
452 coordDimensions: ['value'],
453 dimensionsCount: dimMax
454 });
455
456 const list = new SeriesData(dimensions, hostModel);
457 list.initData(listData);
458
459 beforeLink && beforeLink(list);
460
461 linkSeriesData({
462 mainData: list,
463 struct: tree,
464 structAttr: 'tree'
465 });
466
467 tree.update();
468
469 return tree;
470 }
471
472}
473

Callers 3

getInitialDataMethod · 0.80
getInitialDataMethod · 0.80
getInitialDataMethod · 0.80

Calls 5

initDataMethod · 0.95
updateMethod · 0.95
prepareSeriesDataSchemaFunction · 0.85
linkSeriesDataFunction · 0.85
updateDepthAndHeightMethod · 0.80

Tested by

no test coverage detected