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...')}
)}