Fix JSX attribute syntax in constraint editor descriptions
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-school (push) Successful in 28s
CI / test-go-edu-search (push) Successful in 33s
CI / test-python-klausur (push) Failing after 2m32s
CI / test-python-agent-core (push) Successful in 19s
CI / test-nodejs-website (push) Successful in 24s

German curly quotes („…") combined with a closing straight " inside
JSX attribute values were terminating the attribute prematurely, e.g.
`description="Beispiel: „X" (jugendgerecht)."` lost everything after
the inner straight quote. Switch all such descriptions to the JSX
expression form `description={"…"}` so the inner quotes are part of
a JavaScript string literal and parsed correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-21 23:41:24 +02:00
parent 7c96d89927
commit a315db0388
9 changed files with 15 additions and 15 deletions
@@ -32,7 +32,7 @@ export function ClassMaxHoursDayEditor() {
<ConstraintShell <ConstraintShell
testId="class-max-hours-day-editor" testId="class-max-hours-day-editor"
title="Klasse: Max. Stunden / Tag" title="Klasse: Max. Stunden / Tag"
description="Beispiel: „5a hoechstens 6 Stunden pro Tag" (jugendgerecht)." description={"Beispiel: „5a hoechstens 6 Stunden pro Tag" (jugendgerecht)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={classes.length === 0} newDisabled={classes.length === 0}
prereqWarning={classes.length === 0 ? 'Zuerst Klassen anlegen.' : null} prereqWarning={classes.length === 0 ? 'Zuerst Klassen anlegen.' : null}
@@ -95,7 +95,7 @@ export function ClassNoGapsEditor() {
<ConstraintShell <ConstraintShell
testId="class-no-gaps-editor" testId="class-no-gaps-editor"
title="Klasse: Keine Freistunden" title="Klasse: Keine Freistunden"
description="Soft-Regel: Klasse soll keine Loecher zwischen Lessons haben." description={"Soft-Regel: Klasse soll keine Loecher zwischen Lessons haben."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={classes.length === 0} newDisabled={classes.length === 0}
prereqWarning={classes.length === 0 ? 'Zuerst Klassen anlegen.' : null} prereqWarning={classes.length === 0 ? 'Zuerst Klassen anlegen.' : null}
@@ -28,7 +28,7 @@ export function RoomRequiresTypeEditor() {
<ConstraintShell <ConstraintShell
testId="room-requires-type-editor" testId="room-requires-type-editor"
title="Fach: benoetigter Raumtyp" title="Fach: benoetigter Raumtyp"
description="Beispiel: „Sport braucht immer Sporthalle"." description={"Beispiel: „Sport braucht immer Sporthalle"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -97,7 +97,7 @@ export function RoomUnavailableEditor() {
<ConstraintShell <ConstraintShell
testId="room-unavailable-editor" testId="room-unavailable-editor"
title="Raum: nicht verfuegbar" title="Raum: nicht verfuegbar"
description="Beispiel: Sporthalle Di 5. Stunde Wartung"." description={"Beispiel: Sporthalle Di 5. Stunde Wartung"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={rooms.length === 0} newDisabled={rooms.length === 0}
prereqWarning={rooms.length === 0 ? 'Zuerst Raeume anlegen.' : null} prereqWarning={rooms.length === 0 ? 'Zuerst Raeume anlegen.' : null}
@@ -27,7 +27,7 @@ export function SubjectMaxConsecutiveEditor() {
<ConstraintShell <ConstraintShell
testId="subject-max-consecutive-editor" testId="subject-max-consecutive-editor"
title="Fach: Max. Stunden am Stueck" title="Fach: Max. Stunden am Stueck"
description="Beispiel: „Mathe nicht mehr als 2 Stunden am Stueck" (keine Dreifach-Stunde)." description={"Beispiel: „Mathe nicht mehr als 2 Stunden am Stueck" (keine Dreifach-Stunde)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -29,7 +29,7 @@ export function SubjectPreferredPeriodEditor() {
<ConstraintShell <ConstraintShell
testId="subject-preferred-period-editor" testId="subject-preferred-period-editor"
title="Fach: Bevorzugter Stunden-Bereich" title="Fach: Bevorzugter Stunden-Bereich"
description="Beispiel: „Hauptfaecher lieber in den ersten 4 Stunden" (Soft-Regel)." description={"Beispiel: „Hauptfaecher lieber in den ersten 4 Stunden" (Soft-Regel)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -34,7 +34,7 @@ export function SubjectMinDayGapEditor() {
<ConstraintShell <ConstraintShell
testId="subject-min-day-gap-editor" testId="subject-min-day-gap-editor"
title="Fach: Min. Tagesabstand" title="Fach: Min. Tagesabstand"
description="Beispiel: „Mathe nicht an 2 Tagen direkt hintereinander"." description={"Beispiel: „Mathe nicht an 2 Tagen direkt hintereinander"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -97,7 +97,7 @@ export function SubjectContiguousWhenRepeatedEditor() {
<ConstraintShell <ConstraintShell
testId="subject-contiguous-when-repeated-editor" testId="subject-contiguous-when-repeated-editor"
title="Fach: Wenn mehrfach pro Tag, dann zusammenhaengend" title="Fach: Wenn mehrfach pro Tag, dann zusammenhaengend"
description="Beispiel: Mathe Stunde 1+2 ja, aber 1+3 mit Sachkunde dazwischen verboten." description={"Beispiel: Mathe Stunde 1+2 ja, aber 1+3 mit Sachkunde dazwischen verboten."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -155,7 +155,7 @@ export function SubjectDoubleLessonEditor() {
<ConstraintShell <ConstraintShell
testId="subject-double-lesson-editor" testId="subject-double-lesson-editor"
title="Fach: Doppelstunde bevorzugt" title="Fach: Doppelstunde bevorzugt"
description="Soft-Regel: Sport oder Chemie laufen oft besser als 90-Min-Block statt zwei Einzelstunden." description={"Soft-Regel: Sport oder Chemie laufen oft besser als 90-Min-Block statt zwei Einzelstunden."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={subjects.length === 0} newDisabled={subjects.length === 0}
prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null} prereqWarning={subjects.length === 0 ? 'Zuerst Faecher anlegen.' : null}
@@ -39,7 +39,7 @@ export function TeacherExcludedSubjectEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-excluded-subject-editor" testId="teacher-excluded-subject-editor"
title="Lehrer: Fach ausgeschlossen" title="Lehrer: Fach ausgeschlossen"
description="Beispiel: „Anna darf kein Sport unterrichten" (oft Pflicht, z.B. Qualifikation/Behinderung)." description={"Beispiel: „Anna darf kein Sport unterrichten" (oft Pflicht, z.B. Qualifikation/Behinderung)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={missing} newDisabled={missing}
prereqWarning={missing ? 'Zuerst Lehrer und Faecher anlegen.' : null} prereqWarning={missing ? 'Zuerst Lehrer und Faecher anlegen.' : null}
@@ -115,7 +115,7 @@ export function TeacherExcludedRoomEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-excluded-room-editor" testId="teacher-excluded-room-editor"
title="Lehrer: Raum ausgeschlossen" title="Lehrer: Raum ausgeschlossen"
description="Beispiel: Anna im Rollstuhl, Raum F kein Fahrstuhl"." description={"Beispiel: Anna im Rollstuhl, Raum F kein Fahrstuhl"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={missing} newDisabled={missing}
prereqWarning={missing ? 'Zuerst Lehrer und Raeume anlegen.' : null} prereqWarning={missing ? 'Zuerst Lehrer und Raeume anlegen.' : null}
@@ -34,7 +34,7 @@ export function TeacherMaxHoursDayEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-max-hours-day-editor" testId="teacher-max-hours-day-editor"
title="Lehrer: Max. Stunden / Tag" title="Lehrer: Max. Stunden / Tag"
description="Beispiel: „Anna unterrichtet hoechstens 6 Stunden pro Tag" (oft Soft-Regel)." description={"Beispiel: „Anna unterrichtet hoechstens 6 Stunden pro Tag" (oft Soft-Regel)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={teachers.length === 0} newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null} prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null}
@@ -97,7 +97,7 @@ export function TeacherMaxHoursWeekEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-max-hours-week-editor" testId="teacher-max-hours-week-editor"
title="Lehrer: Max. Stunden / Woche" title="Lehrer: Max. Stunden / Woche"
description="Beispiel: Teilzeit 50% max. 14 h/Woche (harte Regel aus Vertrag)." description={"Beispiel: Teilzeit 50% max. 14 h/Woche (harte Regel aus Vertrag)."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={teachers.length === 0} newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null} prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null}
@@ -32,7 +32,7 @@ export function TeacherUnavailableDayEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-unavailable-day-editor" testId="teacher-unavailable-day-editor"
title="Lehrer: Tag nicht verfuegbar" title="Lehrer: Tag nicht verfuegbar"
description="Beispiel: „Lehrer X kann Montags nie"." description={"Beispiel: „Lehrer X kann Montags nie"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={teachers.length === 0} newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen, dann koennen Regeln vergeben werden.' : null} prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen, dann koennen Regeln vergeben werden.' : null}
@@ -28,7 +28,7 @@ export function TeacherUnavailableWindowEditor() {
<ConstraintShell <ConstraintShell
testId="teacher-unavailable-window-editor" testId="teacher-unavailable-window-editor"
title="Lehrer: Zeitfenster nicht verfuegbar" title="Lehrer: Zeitfenster nicht verfuegbar"
description="Beispiel: „Lehrer Z Dienstags 13:0017:00 nicht"." description={"Beispiel: „Lehrer Z Dienstags 13:0017:00 nicht"."}
newLabel="+ Neue Regel" newLabel="+ Neue Regel"
newDisabled={teachers.length === 0} newDisabled={teachers.length === 0}
prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null} prereqWarning={teachers.length === 0 ? 'Zuerst Lehrer anlegen.' : null}