diff --git a/frontend/src/pages.jsx b/frontend/src/pages.jsx index d3904f2..80e26e6 100644 --- a/frontend/src/pages.jsx +++ b/frontend/src/pages.jsx @@ -2870,8 +2870,15 @@ export function PeriodeRoosterPage() { try { const live = await listResource("roosterblokken", `?schooljaar=${schooljaar}`); // sjabloon=False const keys = new Set(blokken.map(doelKey)); - const verwijderen = live.filter((b) => keys.has(doelKey(b)) && overlaptPeriode(b, van, tot)); - setPreview({ toevoegen: blokken, verwijderen, van, tot }); + const overlappend = live.filter((b) => overlaptPeriode(b, van, tot)); + const verwijderen = overlappend.filter((b) => keys.has(doelKey(b))); + const behouden = overlappend.filter((b) => !keys.has(doelKey(b))); + // Resultaat na toepassen = behouden bestaande blokken + nieuwe periodeblokken + // (met de periodedatums). Zelfde conflictcheck als het Rooster. + const nieuwe = blokken.map((b) => ({ ...b, geldig_van: van, geldig_tot: tot })); + const resultaat = [...behouden, ...nieuwe]; + const resConflict = berekenRoosterConflicten(resultaat, ctx, tijdsloten); + setPreview({ toevoegen: blokken, verwijderen, conflicten: resConflict.meldingen, van, tot }); setError(null); } catch (e) { setError(e.message); } } @@ -3020,6 +3027,14 @@ export function PeriodeRoosterPage() { ) :

Geen overlappende bestaande blokken.

} + {preview.conflicten.length > 0 ? ( + <> +

{preview.conflicten.length} conflict(en) in het rooster ná toepassen (nieuwe + behouden blokken):

+ + + ) :

✓ geen conflicten ná toepassen

}