void _display()

in lib/src/hierarchy_view.dart [63:98]


  void _display() {
    _treeTable.columnInfo(_columnNames, _columnHelp, _columnSizes);

    int programSize = _model.size;

    // A helper function for lazily constructing the tree
    LogicalRow buildTree(String id, bool isTop, HtmlElement tbody, int level) {
      Map<String, dynamic> node = _model.elementById(id);
      if (node['size'] == null) {
        node['size'] = _computeSize(node, _model.elementById);
      }
      node['size_percent'] =
          (100 * node['size'] / programSize).toStringAsFixed(2) + '%';

      var row = new LogicalRow(node, _renderRow, tbody, level);
      _addMetadata(node, row, tbody, level + 1, _model.elementById);

      if (isTop) {
        _treeTable.addTopLevel(row);
      }

      if (node['children'] != null) {
        for (var childId in node['children']) {
          // Thunk!  Lazy tree creation happens in this closure.
          row.addChild(() => buildTree(childId, false, tbody, level + 1));
        }
      }
      return row;
    }

    // Start building the tree from the libraries because
    // libraries are always the top level.
    for (String libraryId in _model.allOfType('library').map((a) => a['id'])) {
      buildTree('$libraryId', true, _treeTable.tbody, 0).show();
    }
  }