From 36725b3e8c2d0b85bc67faff06949025c380dd12 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Wed, 14 May 2025 15:40:49 +0900
Subject: [PATCH] Update MkUploaderDialog.vue
---
.../src/components/MkUploaderDialog.vue | 115 +++++++++++-------
1 file changed, 74 insertions(+), 41 deletions(-)
diff --git a/packages/frontend/src/components/MkUploaderDialog.vue b/packages/frontend/src/components/MkUploaderDialog.vue
index a76bc52721..723b129822 100644
--- a/packages/frontend/src/components/MkUploaderDialog.vue
+++ b/packages/frontend/src/components/MkUploaderDialog.vue
@@ -15,53 +15,57 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.tsx.uploadNFiles({ n: files.length }) }}
-
-
-
-
-
-
-
-
-
-
{{ ctx.name }}
-
-
{{ ctx.file.type }}
-
{{ bytes(ctx.file.size) }}
-
({{ i18n.tsx._uploader.compressedToX({ x: bytes(ctx.compressedSize) }) }} = {{ i18n.tsx._uploader.savedXPercent({ x: Math.round((1 - ctx.compressedSize / ctx.file.size) * 100) }) }})
+
+
+
+
+
+
+
+
+
-
+
+
+
{{ ctx.name }}
+
+ {{ ctx.file.type }}
+ {{ bytes(ctx.file.size) }}
+ ({{ i18n.tsx._uploader.compressedToX({ x: bytes(ctx.compressedSize) }) }} = {{ i18n.tsx._uploader.savedXPercent({ x: Math.round((1 - ctx.compressedSize / ctx.file.size) * 100) }) }})
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+ {{ i18n.ts.compress }}
+
+
+
{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}
-
-
- {{ i18n.ts.compress }}
-
-
-
{{ i18n.tsx._uploader.maxFileSizeIsX({ x: $i.policies.maxFileSizeMb + 'MB' }) }}
@@ -149,6 +153,16 @@ const firstUploadAttempted = ref(false);
const isUploading = computed(() => items.value.some(item => item.uploading));
const canRetry = computed(() => firstUploadAttempted.value && !items.value.some(item => item.uploading || item.waiting) && items.value.some(item => item.uploaded == null));
const canDone = computed(() => items.value.some(item => item.uploaded != null));
+const overallProgress = computed(() => {
+ const max = items.value.length;
+ if (max === 0) return 0;
+ const v = items.value.reduce((acc, item) => {
+ if (item.uploaded) return acc + 1;
+ if (item.progress) return acc + (item.progress.value / item.progress.max);
+ return acc;
+ }, 0);
+ return Math.round((v / max) * 100);
+});
const compressionLevel = ref<0 | 1 | 2 | 3>(2);
const compressionSettings = computed(() => {
@@ -324,6 +338,25 @@ onMounted(() => {