docs: function statistic(nodeModel, children, orderBy) {
      // Calculate sum.
      var sum = 0;
      for (var i = 0, len = children.length; i < len; i++) {
          sum += children[i].getValue();
      }
  
      // Statistic data extent for latter visual coding.
      // Notice: data extent should be calculate based on raw children
      // but not filtered view children, otherwise visual mapping will not
      // be stable when zoom (where children is filtered by visibleMin).
  
      var dimension = nodeModel.get('visualDimension');
      var dataExtent;
  
      // The same as area dimension.
      if (!children || !children.length) {
          dataExtent = [NaN, NaN];
      }
      else if (dimension === 'value' && orderBy) {
          dataExtent = [
              children[children.length - 1].getValue(),
              children[0].getValue()
          ];
          orderBy === 'asc' && dataExtent.reverse();
      }
      // Other dimension.
      else {
          var dataExtent = [Infinity, -Infinity];
          each(children, function (child) {
              var value = child.getValue(dimension);
              value < dataExtent[0] && (dataExtent[0] = value);
              value > dataExtent[1] && (dataExtent[1] = value);
          });
      }
  
      return {sum: sum, dataExtent: dataExtent};
  }