Admin Dashboard weiter reduziert: Statistik-Karten entfernt, nur noch Header und Benutzerverwaltung
This commit is contained in:
@@ -1,37 +1,7 @@
|
|||||||
import { useEffect, useState } from "react";
|
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { apiGet } from "../lib/api";
|
|
||||||
import type { DashboardOverview } from "../lib/types";
|
|
||||||
|
|
||||||
interface AdminStats {
|
|
||||||
totalSamples: number;
|
|
||||||
openSamples: number;
|
|
||||||
completedToday: number;
|
|
||||||
nextSampleNumber: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function AdminDashboardPage() {
|
export default function AdminDashboardPage() {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [stats, setStats] = useState<AdminStats | null>(null);
|
|
||||||
const [loading, setLoading] = useState(true);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
async function loadStats() {
|
|
||||||
try {
|
|
||||||
const dashboard = await apiGet<DashboardOverview>("/dashboard");
|
|
||||||
setStats({
|
|
||||||
totalSamples: dashboard.nextSampleNumber - 1,
|
|
||||||
openSamples: dashboard.openSamples,
|
|
||||||
completedToday: dashboard.completedToday,
|
|
||||||
nextSampleNumber: dashboard.nextSampleNumber,
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
setLoading(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void loadStats();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const adminModules = [
|
const adminModules = [
|
||||||
{
|
{
|
||||||
@@ -56,28 +26,6 @@ export default function AdminDashboardPage() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Statistik-Karten */}
|
|
||||||
<section className="metrics-grid admin-metrics">
|
|
||||||
<article className="metric-card metric-card--primary">
|
|
||||||
<span className="metric-card__label">Nächste Probennummer</span>
|
|
||||||
<strong className="metric-card__value--large">
|
|
||||||
{loading ? "..." : stats?.nextSampleNumber}
|
|
||||||
</strong>
|
|
||||||
</article>
|
|
||||||
<article className="metric-card">
|
|
||||||
<span className="metric-card__label">Offene Proben</span>
|
|
||||||
<strong>{loading ? "..." : stats?.openSamples}</strong>
|
|
||||||
</article>
|
|
||||||
<article className="metric-card">
|
|
||||||
<span className="metric-card__label">Heute abgeschlossen</span>
|
|
||||||
<strong>{loading ? "..." : stats?.completedToday}</strong>
|
|
||||||
</article>
|
|
||||||
<article className="metric-card">
|
|
||||||
<span className="metric-card__label">Gesamtproben</span>
|
|
||||||
<strong>{loading ? "..." : stats?.totalSamples}</strong>
|
|
||||||
</article>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* Admin Module Grid */}
|
{/* Admin Module Grid */}
|
||||||
<section className="admin-modules-section">
|
<section className="admin-modules-section">
|
||||||
<div className="section-card__header">
|
<div className="section-card__header">
|
||||||
|
|||||||
Reference in New Issue
Block a user