From 275b5125c1f4dd34d8d46610862adb34c71990cf Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Thu, 28 May 2026 09:12:24 +0200
Subject: [PATCH] ui progress db import
---
src/pages/admin/AdminDatabaseHealthPage.tsx | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/pages/admin/AdminDatabaseHealthPage.tsx b/src/pages/admin/AdminDatabaseHealthPage.tsx
index 8cb4279..2df9fb1 100644
--- a/src/pages/admin/AdminDatabaseHealthPage.tsx
+++ b/src/pages/admin/AdminDatabaseHealthPage.tsx
@@ -950,17 +950,34 @@ const MigrationTab: React.FC = () => {
// --- Restore: Validate (uploads file to server, streams to disk) ---
const importTokenRef = useRef('');
+ const [uploadProgress, setUploadProgress] = useState('');
+
const _validateFile = async (file: File) => {
setValidating(true);
setValidation(null);
+ setUploadProgress('');
importTokenRef.current = '';
+
+ const fileMb = (file.size / (1024 * 1024)).toFixed(1);
+
try {
const formData = new FormData();
formData.append('file', file);
const res = await api.post('/api/admin/database-health/migration/upload-import', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
timeout: 0,
+ onUploadProgress: (e) => {
+ if (e.total) {
+ const pct = Math.round((e.loaded / e.total) * 100);
+ const loadedMb = (e.loaded / (1024 * 1024)).toFixed(1);
+ setUploadProgress(pct < 100
+ ? t('Upload: {loaded} / {total} MB ({pct}%)', { loaded: loadedMb, total: fileMb, pct })
+ : t('Validierung laeuft ({total} MB)...', { total: fileMb }),
+ );
+ }
+ },
});
+ setUploadProgress('');
importTokenRef.current = res.data.token || '';
setValidation({
valid: res.data.valid,
@@ -974,6 +991,7 @@ const MigrationTab: React.FC = () => {
systemObjectsFound: res.data.systemObjectsFound || [],
});
} catch (err: any) {
+ setUploadProgress('');
const detail = err?.response?.data?.detail;
setValidation({
valid: false, summary: [], systemObjectsFound: [],
@@ -1221,7 +1239,7 @@ const MigrationTab: React.FC = () => {
{validating && (
-
{t('Validierung laeuft...')}
+
{uploadProgress || t('Validierung laeuft...')}
)}