mirror of
https://codeberg.org/PLG-Development/PLG-MuDiCS
synced 2026-07-05 16:37:09 +00:00
chore(control): show folder_size as sum of all folder_elements
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user