import { useEffect, useMemo, useState } from 'react' import { Link, useNavigate, useParams } from 'react-router-dom' import { ArrowLeft, FileSpreadsheet, Loader2, Save, Trash2 } from 'lucide-react' import { api } from '../utils/api' import { csvPreviewTdStyle } from '../utils/csvPreviewCells' const MODULE_LABEL = { nutrition: 'Ernährung', weight: 'Gewicht', blood_pressure: 'Blutdruck', activity: 'Aktivität', sleep: 'Schlaf', vitals_baseline: 'Vitalwerte (Baseline)', } function SampleTable({ sampleRows, columns }) { if (!sampleRows?.length || !columns?.length) return null const showCols = columns.slice(0, 8) return (
| {c} | ))}
|---|
| {row[c] ?? '—'} | ))}
Modul bestehender Vorlagen kann nicht geändert werden. System-Vorlagen können hier bearbeitet und gespeichert werden (Signatur, Trennzeichen, Zuordnungen).
)} {aggregateSleepImport && (Schlaf (Apple-Aggregat): Die Zeilen werden nicht über Spalten-Ziele importiert, sondern vom Apple-Schlaf-Parser ausgewertet (Schlafanalyse oder Segment-Export). Alle CSV-Spalten bleiben auf „ignorieren“. Wichtig sind die{' '} gespeicherte Spalten-Signatur und das passende Datei-Format — damit die Datei in der Nutzer-Auswahl erkannt wird.
)}Seed: {seedHint.mapping_name} · Vorlage abgedeckt{' '} {Math.round((seedHint.confidence || 0) * 100)} % {seedHint.columns_matched != null && seedHint.columns_in_template != null ? ` (${seedHint.columns_matched}/${seedHint.columns_in_template} Spalten)` : ''} {seedHint.jaccard != null && ( <> {' '} · Jaccard {Math.round(seedHint.jaccard * 100)} % > )}
)} {sampleRows.length > 0 &&Nach CSV-Analyse erscheinen die Zeilen hier. Bei Schlaf-Vorlagen ohne Analyse: Signatur oben pflegen, speichern, oder Beispiel-CSV analysieren.
) : (
{col}
Noch zuzuweisen: {missingRequired.join(', ')}
)}Vom Vorschlag übernommen; bei Bedarf manuell anpassen (z. B. kJ-Faktor, Datumsformat).