import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { ArrowLeft, FileSpreadsheet, Plus, Pencil } from 'lucide-react' import { api } from '../utils/api' const MODULE_LABEL = { nutrition: 'Ernährung', weight: 'Gewicht', blood_pressure: 'Blutdruck', activity: 'Aktivität', sleep: 'Schlaf', vitals_baseline: 'Vitalwerte (Baseline)', } export default function AdminCsvTemplatesPage() { const [templates, setTemplates] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [filterModule, setFilterModule] = useState('') useEffect(() => { let ok = true setLoading(true) setError(null) api .adminListCsvTemplates(filterModule || null) .then((d) => { if (ok) setTemplates(d.templates || []) }) .catch((e) => { if (ok) setError(e.message) }) .finally(() => { if (ok) setLoading(false) }) return () => { ok = false } }, [filterModule]) return (
Admin

CSV-Import-Vorlagen (System)

Systemweite Vorlagen für den Universal-CSV-Import. Neue Vorlagen entstehen aus einer Beispiel-CSV inkl. Spaltenzuordnung — analog zur Import-Seite.

Neue Vorlage
{error && (
{error}
)} {loading ? (
) : (
{templates.length === 0 ? (
Keine Vorlagen. „Neue Vorlage“ legt eine System-Vorlage aus einer CSV an.
) : ( templates.map((t) => (
{MODULE_LABEL[t.module] || t.module}: {t.mapping_name}
{t.description || '—'} · Trenner: {t.delimiter} · Spalten-Signatur:{' '} {(t.column_signature || []).length} Felder
Bearbeiten
)) )}
)}
) }