From 3d6458ffb028e934ab813d384088023f514972de Mon Sep 17 00:00:00 2001 From: s8613 Date: Tue, 1 Jul 2025 11:06:20 +0200 Subject: [PATCH] Removed example for edit mode. --- project/frontend/src/components/KPIForm.tsx | 54 +++++++++++++++++---- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/project/frontend/src/components/KPIForm.tsx b/project/frontend/src/components/KPIForm.tsx index 13152cc..ff9ef86 100644 --- a/project/frontend/src/components/KPIForm.tsx +++ b/project/frontend/src/components/KPIForm.tsx @@ -30,6 +30,7 @@ const emptyKPI: Partial = { export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, resetTrigger }: KPIFormProps) { const [formData, setFormData] = useState>(emptyKPI); + const [originalExamples, setOriginalExamples] = useState>([]); const [isSaving, setIsSaving] = useState(false); const [snackbarOpen, setSnackbarOpen] = useState(false); const [snackbarMessage, setSnackbarMessage] = useState(""); @@ -38,14 +39,20 @@ export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, useEffect(() => { if (mode === 'edit' && initialData) { - setFormData(initialData); + setOriginalExamples(initialData.examples || []); + setFormData({ + ...initialData, + examples: [{ sentence: '', value: '' }] + }); } else if (mode === 'add') { + setOriginalExamples([]); setFormData(emptyKPI); } }, [mode, initialData]); useEffect(() => { if (mode === 'add') { + setOriginalExamples([]); setFormData(emptyKPI); } }, [resetTrigger]); @@ -65,24 +72,30 @@ export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, setSnackbarMessage("Mindestens ein Beispielsatz ist erforderlich"); setSnackbarSeverity("error"); setSnackbarOpen(true); - return; } - for (const ex of formData.examples) { + const newExamples = formData.examples.filter(ex => ex.sentence?.trim() && ex.value?.trim()); + + if (newExamples.length === 0) { + setSnackbarMessage('Mindestens ein vollständiger Beispielsatz ist erforderlich.'); + setSnackbarSeverity("error"); + setSnackbarOpen(true); + return; + } + + for (const ex of newExamples) { if (!ex.sentence?.trim() || !ex.value?.trim()) { setSnackbarMessage('Alle Beispielsätze müssen vollständig sein.'); setSnackbarSeverity("error"); setSnackbarOpen(true); - return; } } - setIsSaving(true); try { - const spacyEntries = generateSpacyEntries(formData); + const spacyEntries = generateSpacyEntries({ ...formData, examples: newExamples }); // Für jeden einzelnen Beispielsatz: for (const entry of spacyEntries) { @@ -110,6 +123,10 @@ export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, console.log("SpaCy-Eintrag gespeichert:", data); } + const allExamples = mode === 'edit' + ? [...originalExamples, ...newExamples] + : newExamples; + // Dann in die DB speichern await onSave({ name: formData.name!, @@ -117,11 +134,18 @@ export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, type: formData.type || 'string', position: formData.position ?? 0, active: formData.active ?? true, - examples: formData.examples ?? [], - is_trained: false, + examples: allExamples, + is_trained: false, }); // Formular zurücksetzen: - setFormData(emptyKPI); + if (mode === 'add') { + setFormData(emptyKPI); + } else { + setFormData(prev => ({ + ...prev, + examples: [{ sentence: '', value: '' }] + })); + } setSnackbarMessage("Beispielsätze gespeichert. Jetzt auf -Neu trainieren- klicken oder weitere Kennzahlen hinzufügen."); @@ -292,6 +316,18 @@ export function KPIForm({ mode, initialData, onSave, onCancel, loading = false, + {/* Hinweistext wie viele Beispielsätzen vorhanden sind*/} + {mode === 'edit' && originalExamples.length > 0 && ( + + + Vorhandene Beispielsätze: {originalExamples.length} + + + Diese Kennzahl hat bereits {originalExamples.length} Beispielsätze. Neue Beispielsätze werden zu den vorhandenen hinzugefügt. + + + )} + {/* Hinweistext vor Beispielsätzen */}