Reload Button, Versionsschrift heller, Datum unter Dashboard
This commit is contained in:
@@ -822,13 +822,24 @@ function PushoverSettings({ toast }) {
|
||||
}
|
||||
|
||||
function Dashboard({ toast, mobile, setActive, unreadMsgs=0 }) {
|
||||
const [now, setNow] = useState(new Date());
|
||||
useEffect(() => { const t = setInterval(() => setNow(new Date()), 30000); return () => clearInterval(t); }, []);
|
||||
return (
|
||||
<div style={{ padding: mobile ? '14px 12px 90px' : '36px 44px', maxWidth:1100 }}>
|
||||
<div style={{ marginBottom:16 }}>
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile ? 17 : 22, margin:0 }}>Dashboard</h1>
|
||||
<p style={{ color:'rgba(255,255,255,0.55)', fontFamily:'monospace', fontSize:10, marginTop:3 }}>
|
||||
{new Date().toLocaleDateString('de-DE', { weekday:'long', day:'numeric', month:'long' })}
|
||||
</p>
|
||||
<div style={{ marginBottom:16, display:'flex', alignItems:'flex-start', justifyContent:'space-between' }}>
|
||||
<div>
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile ? 17 : 22, margin:0 }}>Dashboard</h1>
|
||||
<p style={{ color:'rgba(255,255,255,0.55)', fontFamily:'monospace', fontSize:10, marginTop:3 }}>
|
||||
{now.toLocaleDateString('de-DE', { weekday:'long', day:'numeric', month:'long' })}
|
||||
{' · '}
|
||||
{now.toLocaleTimeString('de-DE', { hour:'2-digit', minute:'2-digit' })}
|
||||
</p>
|
||||
</div>
|
||||
<button onClick={() => window.location.reload()}
|
||||
title="Seite neu laden"
|
||||
style={{ background:'transparent', border:'1px solid rgba(255,255,255,0.1)', borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)', cursor:'pointer', padding:'6px 10px', fontSize:14,
|
||||
fontFamily:'monospace', marginTop:2, flexShrink:0 }}>↺</button>
|
||||
</div>
|
||||
<QuickLinks toast={toast} mobile={mobile} />
|
||||
<CalendarWidget/>
|
||||
@@ -837,9 +848,9 @@ function Dashboard({ toast, mobile, setActive, unreadMsgs=0 }) {
|
||||
<TodoList toast={toast} />
|
||||
<Notepad toast={toast} />
|
||||
<div style={{ marginTop:24, textAlign:'center',
|
||||
color:'rgba(255,255,255,0.12)', fontSize:9, fontFamily:'monospace', letterSpacing:1 }}>
|
||||
color:'rgba(255,255,255,0.35)', fontSize:9, fontFamily:'monospace', letterSpacing:1 }}>
|
||||
{typeof __BUILD_TIME__ !== 'undefined' && __BUILD_TIME__
|
||||
? `GEBAUT ${__BUILD_TIME__}` : null}
|
||||
? `Letzte Versionierung: ${__BUILD_TIME__}` : null}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
@@ -1360,7 +1371,12 @@ function AdminPanel({ toast, mobile, user }) {
|
||||
|
||||
return (
|
||||
<div style={{ padding: mobile ? '14px 12px 90px' : '36px 44px', maxWidth:560 }}>
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile?17:22, marginBottom:16 }}>Einstellungen</h1>
|
||||
<div style={{ display:'flex', alignItems:'center', justifyContent:'space-between', marginBottom:16 }}>
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile?17:22, margin:0 }}>Einstellungen</h1>
|
||||
<button onClick={() => window.location.reload()} title="Seite neu laden"
|
||||
style={{ background:'transparent', border:'1px solid rgba(255,255,255,0.1)', borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)', cursor:'pointer', padding:'6px 10px', fontSize:14, fontFamily:'monospace' }}>↺</button>
|
||||
</div>
|
||||
|
||||
<div style={{ display:'flex', gap:6, marginBottom:18, flexWrap:'wrap' }}>
|
||||
{[['profil','Profil'],['sicherheit','Sicherheit'],['dashboard','Dashboard'], ...(user?.role==='admin'?[['benutzer','Benutzer'],['backup','Backup']]:[])]
|
||||
|
||||
1607
frontend/src/tools/App.jsx
Normal file
1607
frontend/src/tools/App.jsx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -608,9 +608,14 @@ export default function Bestellungen({ toast, mobile }) {
|
||||
{archivItem && <ArchivModal calcId={archivItem} onClose={()=>setArchivItem(null)}/>}
|
||||
<div style={{display:'flex',justifyContent:'space-between',alignItems:'center',marginBottom:14}}>
|
||||
<h1 style={{color:'#fff',fontFamily:"'Space Mono',monospace",fontSize:mobile?18:22,margin:0}}>Bestellungen</h1>
|
||||
<button onClick={()=>{setNewMode(true);setOpenId(null);}} style={{...S.btn('#4ecdc4'),display:'flex',alignItems:'center',gap:6}}>
|
||||
<PlusIcon size={14} color="#4ecdc4"/> Neu
|
||||
</button>
|
||||
<div style={{display:'flex',gap:8}}>
|
||||
<button onClick={() => window.location.reload()} title="Neu laden"
|
||||
style={{background:'transparent',border:'1px solid rgba(255,255,255,0.1)',borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)',cursor:'pointer',padding:'6px 10px',fontSize:14,fontFamily:'monospace'}}>↺</button>
|
||||
<button onClick={()=>{setNewMode(true);setOpenId(null);}} style={{...S.btn('#4ecdc4'),display:'flex',alignItems:'center',gap:6}}>
|
||||
<PlusIcon size={14} color="#4ecdc4"/> Neu
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Suche */}
|
||||
|
||||
@@ -285,13 +285,17 @@ export default function Dateien({ toast, mobile }) {
|
||||
<input ref={fileRef} type="file" onChange={onFileInput} style={{display:'none'}}/>
|
||||
|
||||
{/* ── Seitentitel ──────────────────────────────────────────────────── */}
|
||||
<div style={{marginBottom:16}}>
|
||||
<h1 style={{color:'#fff',fontFamily:"'Space Mono',monospace",fontSize:mobile?18:22,margin:0}}>Dateien</h1>
|
||||
<div style={{color:'rgba(255,255,255,0.45)',fontFamily:'monospace',fontSize:10,marginTop:3}}>
|
||||
{data.own.length} Dateien · {fmtSize(totalSize)}
|
||||
<div style={{marginBottom:16,display:'flex',alignItems:'flex-start',justifyContent:'space-between'}}>
|
||||
<div>
|
||||
<h1 style={{color:'#fff',fontFamily:"'Space Mono',monospace",fontSize:mobile?18:22,margin:0}}>Dateien</h1>
|
||||
<div style={{color:'rgba(255,255,255,0.45)',fontFamily:'monospace',fontSize:10,marginTop:3}}>
|
||||
{data.own.length} Dateien · {fmtSize(totalSize)}
|
||||
</div>
|
||||
</div>
|
||||
<button onClick={load} title="Neu laden"
|
||||
style={{background:'transparent',border:'1px solid rgba(255,255,255,0.1)',borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)',cursor:'pointer',padding:'6px 10px',fontSize:14,fontFamily:'monospace',marginTop:2}}>↺</button>
|
||||
</div>
|
||||
|
||||
{/* ── Tabs + Neu-Ordner (überall gleich) ───────────────────────────── */}
|
||||
<div style={{display:'flex',gap:6,marginBottom:12,alignItems:'center',flexWrap:'wrap'}}>
|
||||
{[
|
||||
|
||||
@@ -197,7 +197,12 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
|
||||
{editData && <div style={{ color:'#ffe66d', fontSize:10, fontFamily:'monospace', marginBottom:4 }}>✎ {editData.name}</div>}
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile?18:22, margin:0 }}>Kostenrechner</h1>
|
||||
</div>
|
||||
{editData && <button onClick={onEditDone} style={S.btn('#ff6b9d', true)}>✕ Abbrechen</button>}
|
||||
<div style={{ display:'flex', gap:8 }}>
|
||||
{editData && <button onClick={onEditDone} style={S.btn('#ff6b9d', true)}>✕ Abbrechen</button>}
|
||||
{!editData && <button onClick={() => window.location.reload()} title="Neu laden"
|
||||
style={{ background:'transparent', border:'1px solid rgba(255,255,255,0.1)', borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)', cursor:'pointer', padding:'6px 10px', fontSize:14, fontFamily:'monospace' }}>↺</button>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Eingaben */}
|
||||
@@ -383,8 +388,12 @@ export function SavedList({ toast, mobile }) {
|
||||
<div style={{ padding: mobile ? '14px 14px 90px' : '36px 44px', maxWidth:900 }}>
|
||||
{lightbox && <ImageModal src={lightbox} onClose={() => setLightbox(null)} />}
|
||||
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile?18:22, marginBottom:14 }}>Archiv</h1>
|
||||
|
||||
<div style={{ display:'flex', alignItems:'center', justifyContent:'space-between', marginBottom:14 }}>
|
||||
<h1 style={{ color:'#fff', fontFamily:"'Space Mono',monospace", fontSize:mobile?18:22, margin:0 }}>Archiv</h1>
|
||||
<button onClick={() => api('/tools/kalkulator3d').then(setItems).catch(()=>{})} title="Neu laden"
|
||||
style={{ background:'transparent', border:'1px solid rgba(255,255,255,0.1)', borderRadius:8,
|
||||
color:'rgba(255,255,255,0.4)', cursor:'pointer', padding:'6px 10px', fontSize:14, fontFamily:'monospace' }}>↺</button>
|
||||
</div>
|
||||
{/* Suche */}
|
||||
<div style={{ position:'relative', marginBottom:12 }}>
|
||||
<span style={{ position:'absolute', left:12, top:'50%', transform:'translateY(-50%)',
|
||||
|
||||
Reference in New Issue
Block a user