diff --git a/src/web_interface/file_tree/file_tree_node.py b/src/web_interface/file_tree/file_tree_node.py index 50d7ac978..19f73b897 100644 --- a/src/web_interface/file_tree/file_tree_node.py +++ b/src/web_interface/file_tree/file_tree_node.py @@ -33,7 +33,7 @@ def __init__( # noqa: PLR0913 self.root_uid = root_uid self.virtual = virtual self.name = name - self.size = size + self._size = size self.mode = mode self.type = mime_type self.has_children = has_children @@ -109,3 +109,9 @@ def get_id(self) -> tuple[str, bool]: :return: The id, consisting of the name and ``virtual`` (whether the node is a directory) """ return self.name, self.virtual + + @property + def size(self) -> int | None: + if self._size is None and self.virtual: # virtual = directory + self._size = sum(child.size for child in self.get_list_of_child_nodes() if child.size is not None) + return self._size diff --git a/src/web_interface/file_tree/jstree_conversion.py b/src/web_interface/file_tree/jstree_conversion.py index c34d931de..a1645e98d 100644 --- a/src/web_interface/file_tree/jstree_conversion.py +++ b/src/web_interface/file_tree/jstree_conversion.py @@ -25,7 +25,8 @@ def convert_to_jstree_node(node: FileTreeNode): def _get_directory_jstree_node(node: FileTreeNode): - return _get_jstree_node_contents(f'{node.name}', '#', '/static/file_icons/folder.svg') + label = f'{node.name} ({human_readable_file_size(node.size)})' + return _get_jstree_node_contents(label, '#', '/static/file_icons/folder.svg') def _get_not_analyzed_jstree_node(node: FileTreeNode):