diff --git a/project/frontend/src/components/KPIForm.tsx b/project/frontend/src/components/KPIForm.tsx index 4827a91..134c53e 100644 --- a/project/frontend/src/components/KPIForm.tsx +++ b/project/frontend/src/components/KPIForm.tsx @@ -73,75 +73,85 @@ export function KPIForm({ setSnackbarMessage("Name ist erforderlich"); setSnackbarSeverity("error"); setSnackbarOpen(true); - return; } - if (!formData.examples || formData.examples.length === 0) { - setSnackbarMessage("Mindestens ein Beispielsatz ist erforderlich"); - setSnackbarSeverity("error"); - setSnackbarOpen(true); - return; - } + if (mode === "add") { + if (!formData.examples || formData.examples.length === 0) { + setSnackbarMessage("Mindestens ein Beispielsatz ist erforderlich"); + setSnackbarSeverity("error"); + setSnackbarOpen(true); + return; + } - const newExamples = formData.examples.filter( - (ex) => ex.sentence?.trim() && ex.value?.trim(), - ); - - if (newExamples.length === 0) { - setSnackbarMessage( - "Mindestens ein vollständiger Beispielsatz ist erforderlich.", + const newExamples = formData.examples.filter( + (ex) => ex.sentence?.trim() && ex.value?.trim(), ); - 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."); + if (newExamples.length === 0) { + setSnackbarMessage( + "Mindestens ein vollständiger Beispielsatz ist erforderlich.", + ); setSnackbarSeverity("error"); setSnackbarOpen(true); return; } } + const newExamples = (formData.examples || []).filter( + (ex) => ex.sentence?.trim() && ex.value?.trim(), + ); + + if (formData.examples && formData.examples.length > 0) { + for (const ex of formData.examples) { + if (!ex.sentence?.trim() && !ex.value?.trim()) continue; + if (!ex.sentence?.trim() || !ex.value?.trim()) { + setSnackbarMessage("Alle Beispielsätze müssen vollständig sein oder leer gelassen werden."); + setSnackbarSeverity("error"); + setSnackbarOpen(true); + return; + } + } + } + setIsSaving(true); try { - const spacyEntries = generateSpacyEntries({ - ...formData, - examples: newExamples, - }); + if (newExamples.length > 0) { + const spacyEntries = generateSpacyEntries({ + ...formData, + examples: newExamples, + }); - // Für jeden einzelnen Beispielsatz: - for (const entry of spacyEntries) { - // im localStorage speichern (zum Debuggen oder Vorschau) - const stored = localStorage.getItem("spacyData"); - const existingData = stored ? JSON.parse(stored) : []; - const updated = [...existingData, entry]; - localStorage.setItem("spacyData", JSON.stringify(updated)); + // Für jeden einzelnen Beispielsatz: + for (const entry of spacyEntries) { + // im localStorage speichern (zum Debuggen oder Vorschau) + const stored = localStorage.getItem("spacyData"); + const existingData = stored ? JSON.parse(stored) : []; + const updated = [...existingData, entry]; + localStorage.setItem("spacyData", JSON.stringify(updated)); - // POST Request an das Flask-Backend - const response = await fetch( - `${API_HOST}/api/spacy/append-training-entry`, - { - method: "POST", - headers: { - "Content-Type": "application/json", + // POST Request an das Flask-Backend + const response = await fetch( + `${API_HOST}/api/spacy/append-training-entry`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(entry), }, - body: JSON.stringify(entry), - }, - ); - - const data = await response.json(); - - if (!response.ok) { - throw new Error( - data.error || "Fehler beim Aufruf von append-training-entry", ); - } - console.log("SpaCy-Eintrag gespeichert:", data); + const data = await response.json(); + + if (!response.ok) { + throw new Error( + data.error || "Fehler beim Aufruf von append-training-entry", + ); + } + + console.log("SpaCy-Eintrag gespeichert:", data); + } } const allExamples = @@ -167,9 +177,13 @@ export function KPIForm({ })); } - setSnackbarMessage( - "Beispielsätze gespeichert. Jetzt auf -Neu trainieren- klicken oder weitere Kennzahlen hinzufügen.", - ); + const successMessage = newExamples.length > 0 + ? "Beispielsätze gespeichert. Jetzt auf -Neu trainieren- klicken oder weitere Kennzahlen hinzufügen." + : mode === "edit" + ? "Kennzahl erfolgreich aktualisiert." + : "Kennzahl erfolgreich erstellt."; + + setSnackbarMessage(successMessage); setSnackbarSeverity("success"); setSnackbarOpen(true); } catch (e: any) {