chore(control): show folder_size as sum of all folder_elements

This commit is contained in:
E44
2026-01-19 18:33:59 +01:00
parent c09e4b2d8d
commit 2711d89f22
2 changed files with 26 additions and 5 deletions
@@ -12,9 +12,7 @@
get_file_primary_key, get_file_primary_key,
type FileOnDisplay, type FileOnDisplay,
type FileTransferTask, type FileTransferTask,
is_folder is_folder
} from '$lib/ts/types'; } from '$lib/ts/types';
import { import {
@@ -27,6 +25,7 @@
change_file_path, change_file_path,
current_file_path, current_file_path,
get_date_mapping, get_date_mapping,
get_folder_elements,
get_missing_colliding_display_ids get_missing_colliding_display_ids
} from '$lib/ts/stores/files'; } from '$lib/ts/stores/files';
import RefreshPlay from '../svgs/RefreshPlay.svelte'; import RefreshPlay from '../svgs/RefreshPlay.svelte';
@@ -50,6 +49,12 @@
missing_colliding_displays_ids = liveQuery(() => get_missing_colliding_display_ids(file, s)); missing_colliding_displays_ids = liveQuery(() => get_missing_colliding_display_ids(file, s));
}); });
let file_size: Observable<number> | undefined = $state();
$effect(() => {
const f = file;
file_size = liveQuery(() => get_size_recursively(f));
});
let file_transfer_task: FileTransferTask | null = $derived( let file_transfer_task: FileTransferTask | null = $derived(
$file_transfer_tasks.hasOwnProperty(file_primary_key) $file_transfer_tasks.hasOwnProperty(file_primary_key)
? $file_transfer_tasks[file_primary_key] ? $file_transfer_tasks[file_primary_key]
@@ -205,6 +210,22 @@
return Math.min(total_percentage, 100); return Math.min(total_percentage, 100);
} }
async function get_size_recursively(file: Inode): Promise<number> {
if (is_folder(file)) {
const folder_elements = await get_folder_elements(
file.path + file.name + '/',
$selected_display_ids
);
let out: number = 0;
for (const el of folder_elements) {
out += await get_size_recursively(el);
}
return out;
} else {
return file.size;
}
}
</script> </script>
<div <div
@@ -355,9 +376,9 @@
></div> ></div>
<div <div
class="w-12 content-center text-center select-none text-xs whitespace-nowrap" class="w-12 content-center text-center select-none text-xs whitespace-nowrap"
title={get_file_size_display_string(file.size, 3)} title={get_file_size_display_string($file_size ?? -1, 3)}
> >
{get_file_size_display_string(file.size)} {get_file_size_display_string($file_size ?? -1)}
</div> </div>
</div> </div>
</div> </div>
+1 -1
View File
@@ -55,7 +55,7 @@ export function get_uuid(): string {
export function get_file_size_display_string(size: number, toFixed: number | null = null): string { export function get_file_size_display_string(size: number, toFixed: number | null = null): string {
if (size < 0) if (size < 0)
return toFixed === null ? 'versch.' : 'Verschiedene Größen auf verschiedenen Bildschirmen'; return toFixed === null ? '...' : 'Größe wird aktuell berechnet';
if (size === 0) return '0 B'; if (size === 0) return '0 B';
const k = 1024; const k = 1024;