| 
/* 
 | 
* Licensed to the Apache Software Foundation (ASF) under one 
 | 
* or more contributor license agreements.  See the NOTICE file 
 | 
* distributed with this work for additional information 
 | 
* regarding copyright ownership.  The ASF licenses this file 
 | 
* to you under the Apache License, Version 2.0 (the 
 | 
* "License"); you may not use this file except in compliance 
 | 
* with the License.  You may obtain a copy of the License at 
 | 
* 
 | 
*   http://www.apache.org/licenses/LICENSE-2.0 
 | 
* 
 | 
* Unless required by applicable law or agreed to in writing, 
 | 
* software distributed under the License is distributed on an 
 | 
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 | 
* KIND, either express or implied.  See the License for the 
 | 
* specific language governing permissions and limitations 
 | 
* under the License. 
 | 
*/ 
 | 
  
 | 
  
 | 
/** 
 | 
 * AUTO-GENERATED FILE. DO NOT MODIFY. 
 | 
 */ 
 | 
  
 | 
/* 
 | 
* Licensed to the Apache Software Foundation (ASF) under one 
 | 
* or more contributor license agreements.  See the NOTICE file 
 | 
* distributed with this work for additional information 
 | 
* regarding copyright ownership.  The ASF licenses this file 
 | 
* to you under the Apache License, Version 2.0 (the 
 | 
* "License"); you may not use this file except in compliance 
 | 
* with the License.  You may obtain a copy of the License at 
 | 
* 
 | 
*   http://www.apache.org/licenses/LICENSE-2.0 
 | 
* 
 | 
* Unless required by applicable law or agreed to in writing, 
 | 
* software distributed under the License is distributed on an 
 | 
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 | 
* KIND, either express or implied.  See the License for the 
 | 
* specific language governing permissions and limitations 
 | 
* under the License. 
 | 
*/ 
 | 
import { __extends } from "tslib"; 
 | 
import SeriesModel from '../../model/Series.js'; 
 | 
import Tree from '../../data/Tree.js'; 
 | 
import Model from '../../model/Model.js'; 
 | 
import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js'; 
 | 
import { wrapTreePathInfo } from '../helper/treeHelper.js'; 
 | 
var TreeSeriesModel = /** @class */function (_super) { 
 | 
  __extends(TreeSeriesModel, _super); 
 | 
  function TreeSeriesModel() { 
 | 
    var _this = _super !== null && _super.apply(this, arguments) || this; 
 | 
    _this.hasSymbolVisual = true; 
 | 
    // Do it self. 
 | 
    _this.ignoreStyleOnData = true; 
 | 
    return _this; 
 | 
  } 
 | 
  /** 
 | 
   * Init a tree data structure from data in option series 
 | 
   */ 
 | 
  TreeSeriesModel.prototype.getInitialData = function (option) { 
 | 
    // create a virtual root 
 | 
    var root = { 
 | 
      name: option.name, 
 | 
      children: option.data 
 | 
    }; 
 | 
    var leaves = option.leaves || {}; 
 | 
    var leavesModel = new Model(leaves, this, this.ecModel); 
 | 
    var tree = Tree.createTree(root, this, beforeLink); 
 | 
    function beforeLink(nodeData) { 
 | 
      nodeData.wrapMethod('getItemModel', function (model, idx) { 
 | 
        var node = tree.getNodeByDataIndex(idx); 
 | 
        if (!(node && node.children.length && node.isExpand)) { 
 | 
          model.parentModel = leavesModel; 
 | 
        } 
 | 
        return model; 
 | 
      }); 
 | 
    } 
 | 
    var treeDepth = 0; 
 | 
    tree.eachNode('preorder', function (node) { 
 | 
      if (node.depth > treeDepth) { 
 | 
        treeDepth = node.depth; 
 | 
      } 
 | 
    }); 
 | 
    var expandAndCollapse = option.expandAndCollapse; 
 | 
    var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth; 
 | 
    tree.root.eachNode('preorder', function (node) { 
 | 
      var item = node.hostTree.data.getRawDataItem(node.dataIndex); 
 | 
      // Add item.collapsed != null, because users can collapse node original in the series.data. 
 | 
      node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth; 
 | 
    }); 
 | 
    return tree.data; 
 | 
  }; 
 | 
  /** 
 | 
   * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'. 
 | 
   * @returns {string} orient 
 | 
   */ 
 | 
  TreeSeriesModel.prototype.getOrient = function () { 
 | 
    var orient = this.get('orient'); 
 | 
    if (orient === 'horizontal') { 
 | 
      orient = 'LR'; 
 | 
    } else if (orient === 'vertical') { 
 | 
      orient = 'TB'; 
 | 
    } 
 | 
    return orient; 
 | 
  }; 
 | 
  TreeSeriesModel.prototype.setZoom = function (zoom) { 
 | 
    this.option.zoom = zoom; 
 | 
  }; 
 | 
  TreeSeriesModel.prototype.setCenter = function (center) { 
 | 
    this.option.center = center; 
 | 
  }; 
 | 
  TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) { 
 | 
    var tree = this.getData().tree; 
 | 
    var realRoot = tree.root.children[0]; 
 | 
    var node = tree.getNodeByDataIndex(dataIndex); 
 | 
    var value = node.getValue(); 
 | 
    var name = node.name; 
 | 
    while (node && node !== realRoot) { 
 | 
      name = node.parentNode.name + '.' + name; 
 | 
      node = node.parentNode; 
 | 
    } 
 | 
    return createTooltipMarkup('nameValue', { 
 | 
      name: name, 
 | 
      value: value, 
 | 
      noValue: isNaN(value) || value == null 
 | 
    }); 
 | 
  }; 
 | 
  // Add tree path to tooltip param 
 | 
  TreeSeriesModel.prototype.getDataParams = function (dataIndex) { 
 | 
    var params = _super.prototype.getDataParams.apply(this, arguments); 
 | 
    var node = this.getData().tree.getNodeByDataIndex(dataIndex); 
 | 
    params.treeAncestors = wrapTreePathInfo(node, this); 
 | 
    params.collapsed = !node.isExpand; 
 | 
    return params; 
 | 
  }; 
 | 
  TreeSeriesModel.type = 'series.tree'; 
 | 
  // can support the position parameters 'left', 'top','right','bottom', 'width', 
 | 
  // 'height' in the setOption() with 'merge' mode normal. 
 | 
  TreeSeriesModel.layoutMode = 'box'; 
 | 
  TreeSeriesModel.defaultOption = { 
 | 
    // zlevel: 0, 
 | 
    z: 2, 
 | 
    coordinateSystem: 'view', 
 | 
    // the position of the whole view 
 | 
    left: '12%', 
 | 
    top: '12%', 
 | 
    right: '12%', 
 | 
    bottom: '12%', 
 | 
    // the layout of the tree, two value can be selected, 'orthogonal' or 'radial' 
 | 
    layout: 'orthogonal', 
 | 
    // value can be 'polyline' 
 | 
    edgeShape: 'curve', 
 | 
    edgeForkPosition: '50%', 
 | 
    // true | false | 'move' | 'scale', see module:component/helper/RoamController. 
 | 
    roam: false, 
 | 
    // Symbol size scale ratio in roam 
 | 
    nodeScaleRatio: 0.4, 
 | 
    // Default on center of graph 
 | 
    center: null, 
 | 
    zoom: 1, 
 | 
    orient: 'LR', 
 | 
    symbol: 'emptyCircle', 
 | 
    symbolSize: 7, 
 | 
    expandAndCollapse: true, 
 | 
    initialTreeDepth: 2, 
 | 
    lineStyle: { 
 | 
      color: '#ccc', 
 | 
      width: 1.5, 
 | 
      curveness: 0.5 
 | 
    }, 
 | 
    itemStyle: { 
 | 
      color: 'lightsteelblue', 
 | 
      // borderColor: '#c23531', 
 | 
      borderWidth: 1.5 
 | 
    }, 
 | 
    label: { 
 | 
      show: true 
 | 
    }, 
 | 
    animationEasing: 'linear', 
 | 
    animationDuration: 700, 
 | 
    animationDurationUpdate: 500 
 | 
  }; 
 | 
  return TreeSeriesModel; 
 | 
}(SeriesModel); 
 | 
export default TreeSeriesModel; 
 |