fix: show dashboard overview only on branch selection screen

This commit is contained in:
2026-04-04 15:40:19 +02:00
parent 5facc4b7a5
commit 2de579ea59

View File

@@ -574,7 +574,7 @@ export default function Dashboard() {
.then(([d, allSubs]) => { .then(([d, allSubs]) => {
setDocs(d); setDocs(d);
setAllSubmissions(allSubs); setAllSubmissions(allSubs);
if (d.length) { setSelectedDocId(d[0].id); setSelectedVersionId(d[0].root_version_id ?? null); } if (d.length) { setSelectedDocId(d[0].id); setSelectedVersionId(null); }
}) })
.catch(() => setError('Failed to load documents. Make sure the backend is running.')) .catch(() => setError('Failed to load documents. Make sure the backend is running.'))
.finally(() => setLoading(false)); .finally(() => setLoading(false));
@@ -644,7 +644,7 @@ export default function Dashboard() {
const onUploadDone = (doc: Document) => { const onUploadDone = (doc: Document) => {
setDocs(prev => [doc, ...prev.filter(d => d.id !== doc.id)]); setDocs(prev => [doc, ...prev.filter(d => d.id !== doc.id)]);
setSelectedDocId(doc.id); setSelectedDocId(doc.id);
setSelectedVersionId(doc.root_version_id ?? null); setSelectedVersionId(null);
setModal(null); setModal(null);
setSidebarOpen(false); setSidebarOpen(false);
}; };
@@ -698,7 +698,7 @@ export default function Dashboard() {
setDocs(updated); setDocs(updated);
if (selectedDocId === docId) { if (selectedDocId === docId) {
setSelectedDocId(updated[0]?.id ?? null); setSelectedDocId(updated[0]?.id ?? null);
setSelectedVersionId(updated[0]?.root_version_id ?? null); setSelectedVersionId(null);
} }
} catch (e: unknown) { } catch (e: unknown) {
alert(e instanceof Error ? e.message : 'Delete failed'); alert(e instanceof Error ? e.message : 'Delete failed');
@@ -715,8 +715,9 @@ export default function Dashboard() {
await deleteVersion(versionId); await deleteVersion(versionId);
const fresh = await refreshDocs(); const fresh = await refreshDocs();
if (selectedVersionId === versionId) { if (selectedVersionId === versionId) {
const doc = fresh.find(d => d.id === selectedDocId); const doc = fresh.find(d => d.id === selectedDocId) ?? null;
setSelectedVersionId(doc?.root_version_id ?? null); if (!doc) setSelectedDocId(null);
setSelectedVersionId(null);
} }
} catch (e: unknown) { } catch (e: unknown) {
alert(e instanceof Error ? e.message : 'Delete failed'); alert(e instanceof Error ? e.message : 'Delete failed');
@@ -800,7 +801,7 @@ export default function Dashboard() {
onMouseLeave={() => setDocHovered(null)} onMouseLeave={() => setDocHovered(null)}
onClick={() => { onClick={() => {
setSelectedDocId(d.id); setSelectedDocId(d.id);
setSelectedVersionId(d.root_version_id ?? null); setSelectedVersionId(null);
setActiveTab('content'); setActiveTab('content');
setSidebarOpen(false); setSidebarOpen(false);
}} }}
@@ -855,17 +856,10 @@ export default function Dashboard() {
{/* main panel */} {/* main panel */}
<div className="main-panel"> <div className="main-panel">
{!selectedVersion && !loading && ( {!selectedVersion && !loading && (
<div style={{ paddingTop: 60, textAlign: 'center', color: 'var(--text-faint)', fontSize: 13 }}> <div style={{ padding: '16px 20px', overflow: 'auto' }}>
Select a branch to view details. {selectedDoc ? (
</div>
)}
{selectedVersion && (
<>
{selectedDoc && (
<div style={{ padding: '16px 20px 0', flexShrink: 0 }}>
<div style={{ border: '1px solid var(--border)', borderRadius: 8, background: '#fff', padding: 12 }}> <div style={{ border: '1px solid var(--border)', borderRadius: 8, background: '#fff', padding: 12 }}>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 8, marginBottom: 10 }}> <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', gap: 8, marginBottom: 8 }}>
<div style={{ minWidth: 0 }}> <div style={{ minWidth: 0 }}>
<div className="label" style={{ marginBottom: 3 }}>Dashboard overview</div> <div className="label" style={{ marginBottom: 3 }}>Dashboard overview</div>
<div style={{ fontSize: 14, fontWeight: 600, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}> <div style={{ fontSize: 14, fontWeight: 600, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
@@ -875,6 +869,10 @@ export default function Dashboard() {
<span style={{ fontSize: 11, color: 'var(--text-faint)' }}>{selectedDoc.versions.length} version{selectedDoc.versions.length !== 1 ? 's' : ''}</span> <span style={{ fontSize: 11, color: 'var(--text-faint)' }}>{selectedDoc.versions.length} version{selectedDoc.versions.length !== 1 ? 's' : ''}</span>
</div> </div>
<div style={{ color: 'var(--text-faint)', fontSize: 13, marginBottom: 10 }}>
Select a branch to view details.
</div>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))', gap: 8, marginBottom: 10 }}> <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))', gap: 8, marginBottom: 10 }}>
<div style={{ border: '1px solid var(--border)', borderRadius: 6, padding: '8px 10px', background: 'var(--surface)' }}> <div style={{ border: '1px solid var(--border)', borderRadius: 6, padding: '8px 10px', background: 'var(--surface)' }}>
<div className="label" style={{ marginBottom: 3 }}>Submissions</div> <div className="label" style={{ marginBottom: 3 }}>Submissions</div>
@@ -894,7 +892,7 @@ export default function Dashboard() {
</div> </div>
</div> </div>
<div style={{ border: '1px solid var(--border)', borderRadius: 6, background: 'var(--surface)', maxHeight: 220, overflow: 'auto' }}> <div style={{ border: '1px solid var(--border)', borderRadius: 6, background: 'var(--surface)', maxHeight: 320, overflow: 'auto' }}>
<div className="label" style={{ padding: '8px 10px 4px' }}>Full branch tree</div> <div className="label" style={{ padding: '8px 10px 4px' }}>Full branch tree</div>
<CVTree <CVTree
versions={selectedDoc.versions} versions={selectedDoc.versions}
@@ -903,9 +901,16 @@ export default function Dashboard() {
/> />
</div> </div>
</div> </div>
) : (
<div style={{ paddingTop: 60, textAlign: 'center', color: 'var(--text-faint)', fontSize: 13 }}>
Select a resume to view details.
</div>
)}
</div> </div>
)} )}
{selectedVersion && (
<>
{/* version header */} {/* version header */}
<div style={{ padding: '16px 20px 0', flexShrink: 0 }}> <div style={{ padding: '16px 20px 0', flexShrink: 0 }}>
<div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', marginBottom: 12, gap: 12 }}> <div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', marginBottom: 12, gap: 12 }}>