Functies geintegreerd in personeelsformulier (kiezen of nieuwe typen), aparte Functies-tab verwijderd
This commit is contained in:
parent
95a04f3ca1
commit
e1ada6d702
1 changed files with 23 additions and 20 deletions
|
|
@ -271,7 +271,18 @@ export function PersonenPage() {
|
||||||
const [form, setForm] = useState(leegLeerling);
|
const [form, setForm] = useState(leegLeerling);
|
||||||
const [editId, setEditId] = useState(null);
|
const [editId, setEditId] = useState(null);
|
||||||
const [filter, setFilter] = useState("");
|
const [filter, setFilter] = useState("");
|
||||||
const [hoofdtab, setHoofdtab] = useState("personen");
|
const [nieuweFunctie, setNieuweFunctie] = useState("");
|
||||||
|
|
||||||
|
async function maakFunctie() {
|
||||||
|
const naam = nieuweFunctie.trim();
|
||||||
|
if (!naam) return;
|
||||||
|
try {
|
||||||
|
const f = await createResource("functies", { naam });
|
||||||
|
setFuncties((lijst) => [...lijst, f]);
|
||||||
|
setForm((prev) => ({ ...prev, functies: [...prev.functies, f.id] }));
|
||||||
|
setNieuweFunctie("");
|
||||||
|
} catch (e) { setError(e.message); }
|
||||||
|
}
|
||||||
|
|
||||||
function laadHulplijsten() {
|
function laadHulplijsten() {
|
||||||
listResource("groepen").then(setGroepen).catch(() => {});
|
listResource("groepen").then(setGroepen).catch(() => {});
|
||||||
|
|
@ -355,26 +366,9 @@ export function PersonenPage() {
|
||||||
: filter === "medewerker" ? items.filter((p) => p.rol !== "leerling")
|
: filter === "medewerker" ? items.filter((p) => p.rol !== "leerling")
|
||||||
: items;
|
: items;
|
||||||
|
|
||||||
if (hoofdtab === "functies") {
|
|
||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<h1>Personen & functies</h1>
|
<h1>Personen</h1>
|
||||||
<div className="tabbar">
|
|
||||||
<button className="tab" onClick={() => setHoofdtab("personen")}>Personen</button>
|
|
||||||
<button className="tab on" onClick={() => setHoofdtab("functies")}>Functies</button>
|
|
||||||
</div>
|
|
||||||
<FunctiesPage />
|
|
||||||
</section>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<section>
|
|
||||||
<h1>Personen & functies</h1>
|
|
||||||
<div className="tabbar">
|
|
||||||
<button className="tab on" onClick={() => setHoofdtab("personen")}>Personen</button>
|
|
||||||
<button className="tab" onClick={() => setHoofdtab("functies")}>Functies</button>
|
|
||||||
</div>
|
|
||||||
<p className="muted">Personeel en leerlingen staan los van elkaar. Kies wat je wilt toevoegen.</p>
|
<p className="muted">Personeel en leerlingen staan los van elkaar. Kies wat je wilt toevoegen.</p>
|
||||||
<Foutmelding msg={error} />
|
<Foutmelding msg={error} />
|
||||||
|
|
||||||
|
|
@ -411,11 +405,20 @@ export function PersonenPage() {
|
||||||
{modus === "medewerker" && (
|
{modus === "medewerker" && (
|
||||||
<>
|
<>
|
||||||
<div className="leden-keuze">
|
<div className="leden-keuze">
|
||||||
<div className="muted small">Functies:</div>
|
<div className="muted small">Functies (klik om te kiezen, of typ een nieuwe):</div>
|
||||||
<div className="chips">
|
<div className="chips">
|
||||||
{functies.map((f) => <button type="button" key={f.id} className={form.functies.includes(f.id) ? "chip on" : "chip"} onClick={() => toggle("functies", f.id)}>{f.naam}</button>)}
|
{functies.map((f) => <button type="button" key={f.id} className={form.functies.includes(f.id) ? "chip on" : "chip"} onClick={() => toggle("functies", f.id)}>{f.naam}</button>)}
|
||||||
{functies.length === 0 && <span className="muted small">Nog geen functies.</span>}
|
{functies.length === 0 && <span className="muted small">Nog geen functies.</span>}
|
||||||
</div>
|
</div>
|
||||||
|
<div className="form-row" style={{ marginTop: 6 }}>
|
||||||
|
<input
|
||||||
|
placeholder="Nieuwe functie"
|
||||||
|
value={nieuweFunctie}
|
||||||
|
onChange={(e) => setNieuweFunctie(e.target.value)}
|
||||||
|
onKeyDown={(e) => { if (e.key === "Enter") { e.preventDefault(); maakFunctie(); } }}
|
||||||
|
/>
|
||||||
|
<button type="button" className="btn" onClick={maakFunctie}>+ Functie</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="leden-keuze">
|
<div className="leden-keuze">
|
||||||
<div className="muted small">Vakken die gegeven kunnen worden{form.rol === "leerkracht" ? " (theorievakken worden automatisch gekoppeld)" : ""}:</div>
|
<div className="muted small">Vakken die gegeven kunnen worden{form.rol === "leerkracht" ? " (theorievakken worden automatisch gekoppeld)" : ""}:</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue