adjust footer

This commit is contained in:
2026-03-29 20:02:46 +02:00
parent eaa0c9b0e0
commit 1cf472c8ea
2 changed files with 65 additions and 25 deletions
+37
View File
@@ -182,3 +182,40 @@
border-right-color: var(--border); border-right-color: var(--border);
} }
} }
/* in app.css or Footer.module.css */
.footer {
position: fixed;
bottom: 0;
right: 0;
padding: 0.5rem 1rem;
background: var(--card-bg, #1e1e1e); /* fallback if var not set */
color: var(--text-h, #f0f0f0);
border-top-left-radius: 8px;
border: 1px solid var(--border, #333);
font-size: 0.9rem;
display: flex;
align-items: center;
gap: 0.5rem;
z-index: 1000;
}
.footer button {
background: var(--accent-bg, #444);
color: var(--accent, #fff);
border: 1px solid var(--accent-border, #666);
border-radius: 4px;
padding: 4px 8px;
cursor: pointer;
transition: background 0.2s, border-color 0.2s;
}
.footer button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.footer button:hover:not(:disabled) {
background: var(--accent, #fff);
color: var(--accent-bg, #444);
}
+28 -25
View File
@@ -1,4 +1,3 @@
// src/components/Footer/Footer.jsx
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { fetchDatabaseVersion, triggerFullImport } from '../../services/api'; import { fetchDatabaseVersion, triggerFullImport } from '../../services/api';
@@ -6,6 +5,7 @@ function Footer() {
const [dbVersion, setDbVersion] = useState(null); const [dbVersion, setDbVersion] = useState(null);
const [importing, setImporting] = useState(false); const [importing, setImporting] = useState(false);
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [importResult, setImportResult] = useState(null); // store import result for modal
// Fetch DB version on mount // Fetch DB version on mount
useEffect(() => { useEffect(() => {
@@ -18,9 +18,12 @@ function Footer() {
setImporting(true); setImporting(true);
setError(null); setError(null);
try { try {
await triggerFullImport(); const result = await triggerFullImport(); // result contains message, version, sets, cards, duration
const data = await fetchDatabaseVersion(); setImportResult(result);
setDbVersion(data.database_version);
// Update displayed DB version
const versionData = await fetchDatabaseVersion();
setDbVersion(versionData.database_version);
} catch (err) { } catch (err) {
setError(err.message); setError(err.message);
} finally { } finally {
@@ -29,27 +32,27 @@ function Footer() {
}; };
return ( return (
<div <>
style={{ <div className="footer">
position: 'fixed', <span>DB Version: {dbVersion || 'Loading...'}</span>
bottom: '0', <button onClick={handleImport} disabled={importing}>
right: '0', {importing ? 'Importing...' : 'Full Import'}
padding: '0.5rem 1rem', </button>
background: '#f0f0f0', {error && <span style={{ color: 'red' }}>{error}</span>}
borderTopLeftRadius: '8px', </div>
border: '1px solid #ccc',
fontSize: '0.9rem', {importResult && (
display: 'flex', <div className="import-modal">
alignItems: 'center', <h3>Import Result</h3>
gap: '0.5rem' <p>{importResult.message}</p>
}} <p>Version: {importResult.version}</p>
> <p>Sets imported: {importResult.sets?.total || 'N/A'}</p>
<span>DB Version: {dbVersion || 'Loading...'}</span> <p>Cards imported: {importResult.cards?.total || 'N/A'}</p>
<button onClick={handleImport} disabled={importing}> <p>Duration: {importResult.duration_seconds}s</p>
{importing ? 'Importing...' : 'Full Import'} <button onClick={() => setImportResult(null)}>Close</button>
</button> </div>
{error && <span style={{ color: 'red' }}>{error}</span>} )}
</div> </>
); );
} }