@@ -1212,10 +1298,10 @@ export function StagePage() {
{s.leerling_naam}
{s.type_label}
{s.begeleider_naam}
-
{s.type === "intern" ? (s.stagelocatie_naam || "—") : (s.organisatie || "—")}
+
{s.type === "intern" ? (s.lokaal_naam || "—") : (s.organisatie || "—")}
{wanneerTekst(s)}
- { setEditId(s.id); setForm({ leerling: s.leerling, type: s.type, begeleider: s.begeleider, stagelocatie: s.stagelocatie || "", organisatie: s.organisatie || "", omvang: s.omvang || "hele_dag", dag: s.dag ?? "", dagdeel: s.dagdeel || "", tijdslot: s.tijdslot || "", omschrijving: s.omschrijving || "" }); }}>bewerken
+ { setEditId(s.id); setForm({ leerling: s.leerling, type: s.type, begeleider: s.begeleider, lokaal: s.lokaal || "", organisatie: s.organisatie || "", omvang: s.omvang || "hele_dag", dag: s.dag ?? "", dagdeel: s.dagdeel || "", tijdslot: s.tijdslot || "", omschrijving: s.omschrijving || "" }); }}>bewerken
verwijder(s.id)}>verwijderen
@@ -1224,63 +1310,10 @@ export function StagePage() {
)}
-
);
}
-function StagelocatieBeheer({ locaties, onChange }) {
- const leeg = { naam: "", omschrijving: "" };
- const [form, setForm] = useState(leeg);
- const [editId, setEditId] = useState(null);
- const [error, setError] = useState(null);
-
- async function opslaan(e) {
- e.preventDefault();
- try {
- if (editId) await updateResource("stagelocaties", editId, form);
- else await createResource("stagelocaties", form);
- setForm(leeg); setEditId(null); await onChange();
- } catch (err) { setError(err.message); }
- }
- async function verwijder(id) {
- if (!confirm("Deze stagelocatie verwijderen?")) return;
- try { await deleteResource("stagelocaties", id); await onChange(); } catch (err) { setError(err.message); }
- }
-
- return (
-
-
Stagelocaties
-
Aparte stageruimtes, los van de gewone lokalen.
-
-
-
- Naam Omschrijving
-
- {locaties.map((l) => (
-
- {l.naam}
- {l.omschrijving || "—"}
-
- { setEditId(l.id); setForm({ naam: l.naam, omschrijving: l.omschrijving || "" }); }}>bewerken
- verwijder(l.id)}>verwijderen
-
-
- ))}
- {locaties.length === 0 && Nog geen stagelocaties. }
-
-
-
- );
-}
-
/* -------------------------------- Gebruikers ------------------------------ */
const GEBRUIKERSROLLEN = [
{ value: "beheerder", label: "Beheerder" },
@@ -1459,11 +1492,12 @@ function bovenliggendeGroep(blok, subgroepen) {
/* ----------------------------- Blok bewerken/kopiëren --------------------- */
function BlokBewerker({ blok, ctx, onSluit, onKlaar }) {
- const { activiteiten, locaties, groepen, subgroepen, leerlingen, medewerkers, tijdsloten } = ctx;
+ const { activiteiten, locaties, lokalen, groepen, subgroepen, leerlingen, medewerkers, tijdsloten } = ctx;
const [f, setF] = useState({
tijdslot: blok.tijdslot,
activiteit: blok.activiteit,
locatie: blok.locatie || "",
+ lokaal: blok.lokaal || "",
doel_type: blok.doel_type,
doel: blok.groep || blok.subgroep || blok.leerling || "",
begeleiders: [...(blok.begeleiders || [])],
@@ -1514,7 +1548,7 @@ function BlokBewerker({ blok, ctx, onSluit, onKlaar }) {
if (splitSubs.length === 0) return;
try {
for (const sid of splitSubs) {
- await createResource("roosterblokken", { schooljaar: blok.schooljaar, tijdslot: f.tijdslot, activiteit: f.activiteit, locatie: f.locatie || null, subgroep: sid, begeleiders: f.begeleiders, opmerkingen: f.opmerkingen });
+ await createResource("roosterblokken", { schooljaar: blok.schooljaar, tijdslot: f.tijdslot, activiteit: f.activiteit, locatie: f.locatie || null, lokaal: f.lokaal || null, subgroep: sid, begeleiders: f.begeleiders, opmerkingen: f.opmerkingen });
}
if (verwijderOrig) await deleteResource("roosterblokken", blok.id);
await onKlaar();
@@ -1528,13 +1562,13 @@ function BlokBewerker({ blok, ctx, onSluit, onKlaar }) {
leerling: f.doel_type === "leerling" ? f.doel : null,
});
async function opslaan() {
- try { await updateResource("roosterblokken", blok.id, { tijdslot: f.tijdslot, activiteit: f.activiteit, locatie: f.locatie || null, ...doelPayload(), begeleiders: f.begeleiders, opmerkingen: f.opmerkingen }); await onKlaar(); }
+ try { await updateResource("roosterblokken", blok.id, { tijdslot: f.tijdslot, activiteit: f.activiteit, locatie: f.locatie || null, lokaal: f.lokaal || null, ...doelPayload(), begeleiders: f.begeleiders, opmerkingen: f.opmerkingen }); await onKlaar(); }
catch (e) { setError(e.message); }
}
async function kopieer() {
try {
for (const ts of kopieDoelen) {
- await createResource("roosterblokken", { schooljaar: blok.schooljaar, tijdslot: ts, activiteit: f.activiteit, locatie: f.locatie || null, ...doelPayload(), begeleiders: f.begeleiders, opmerkingen: f.opmerkingen });
+ await createResource("roosterblokken", { schooljaar: blok.schooljaar, tijdslot: ts, activiteit: f.activiteit, locatie: f.locatie || null, lokaal: f.lokaal || null, ...doelPayload(), begeleiders: f.begeleiders, opmerkingen: f.opmerkingen });
}
await onKlaar();
} catch (e) { setError(e.message); }
@@ -1570,6 +1604,10 @@ function BlokBewerker({ blok, ctx, onSluit, onKlaar }) {
— locatie —
{locaties.map((l) =>
{l.naam} )}
+
setF({ ...f, lokaal: e.target.value })}>
+ — lokaal —
+ {lokalen.map((l) => {l.naam} )}
+
setF({ ...f, opmerkingen: e.target.value })} />
@@ -1779,6 +1817,7 @@ export function RoosterScherm({ mode }) {
const [tijdsloten, setTijdsloten] = useState([]);
const [activiteiten, setActiviteiten] = useState([]);
const [locaties, setLocaties] = useState([]);
+ const [lokalen, setLokalen] = useState([]);
const [groepen, setGroepen] = useState([]);
const [subgroepen, setSubgroepen] = useState([]);
const [leerlingen, setLeerlingen] = useState([]);
@@ -1799,7 +1838,7 @@ export function RoosterScherm({ mode }) {
// Blok bewerken/kopiëren (alleen in de Roostermaker).
const [bewerkBlok, setBewerkBlok] = useState(null);
- const leeg = { tijdslot: "", activiteit: "", locatie: "", doel_type: "groep", doel: "", begeleiders: [], opmerkingen: "" };
+ const leeg = { tijdslot: "", activiteit: "", locatie: "", lokaal: "", doel_type: "groep", doel: "", begeleiders: [], opmerkingen: "" };
const [form, setForm] = useState(leeg);
const [splitNieuwBlok, setSplitNieuwBlok] = useState(false);
const [splitNieuwDoelen, setSplitNieuwDoelen] = useState([]);
@@ -1815,6 +1854,7 @@ export function RoosterScherm({ mode }) {
listResource("tijdsloten").then(setTijdsloten).catch(() => {});
listResource("activiteiten").then(setActiviteiten).catch(() => {});
listResource("locaties").then(setLocaties).catch(() => {});
+ listResource("lokalen").then(setLokalen).catch(() => {});
listResource("groepen").then(setGroepen).catch(() => {});
listResource("subgroepen").then(setSubgroepen).catch(() => {});
listResource("personen", "?rol=leerling").then(setLeerlingen).catch(() => {});
@@ -1940,7 +1980,7 @@ export function RoosterScherm({ mode }) {
}
async function opslaan(e) {
e.preventDefault();
- const basis = { schooljaar, tijdslot: form.tijdslot, activiteit: form.activiteit, locatie: form.locatie || null, begeleiders: form.begeleiders, opmerkingen: form.opmerkingen };
+ const basis = { schooljaar, tijdslot: form.tijdslot, activiteit: form.activiteit, locatie: form.locatie || null, lokaal: form.lokaal || null, begeleiders: form.begeleiders, opmerkingen: form.opmerkingen };
try {
if (form.doel_type === "groep" && splitNieuwBlok && splitNieuwDoelen.length > 0) {
for (const subgroep of splitNieuwDoelen) {
@@ -2012,7 +2052,7 @@ export function RoosterScherm({ mode }) {
if (namen.length === 0) return null;
return