Compare commits

...

2 commits

Author SHA1 Message Date
Juhani Krekelä
d190c62037 Tilojen luominen ja poisto 2024-05-21 14:07:38 +03:00
Juhani Krekelä
3b4171b726 Sulje opettajien lisäämisen <form> 2024-05-21 14:01:07 +03:00
3 changed files with 43 additions and 0 deletions

View file

@ -23,10 +23,16 @@
<input id="opettajat-uusi-nimi" type="text" placeholder="nimi" required>
<input id="opettajat-uusi-lyhenne" type="text" placeholder="lyhenne">
<input type="submit" value="+">
</form>
</details>
<details class="ruutu" open>
<summary>Tilat</summary>
<ul id="tilat-lista"></ul>
<form id="tilat-uusi">
<input id="tilat-uusi-nimi" type="text" placeholder="tila" required>
<input type="submit" value="+">
</form>
</details>
<details class="ruutu" open>

View file

@ -33,6 +33,15 @@ document.getElementById('opettajat-uusi-nimi').addEventListener('change', () =>
document.getElementById('opettajat-uusi-lyhenne').value = lyhenne;
});
document.getElementById('tilat-uusi').addEventListener('submit', (e) => {
e.preventDefault();
suorita(_tietokanta.transaktio((t) => {
const tilanNimi = document.getElementById('tilat-uusi-nimi').value;
t.lisää(taulut.tilat, tilanNimi)
document.getElementById('tilat-uusi-nimi').value = '';
}));
});
function suorita([tietokanta, muutokset]) {
for (const muutos of muutokset) {
suoritaMuutos(tietokanta, muutos);
@ -71,6 +80,17 @@ function suoritaMuutos(tietokanta, muutos) {
const opettaja = document.getElementById(`opettaja-${id}`);
opettaja.parentElement.removeChild(opettaja);
// TODO: opettaja muutos
} else if (taulu === taulut.tilat && vanha === undefined) {
// Uusi tila
const seuraavaId = idJälkeen(tietokanta, taulu, id, vertaa);
const tilatLista = document.getElementById('tilat-lista');
const seuraava = document.getElementById(`tila-${seuraavaId}`);
tilatLista.insertBefore(luoTila(id, uusi), seuraava);
} else if (taulu === taulut.tilat && uusi === undefined) {
// Tila poistettu
const tila = document.getElementById(`tila-${id}`);
tila.parentElement.removeChild(tila);
// TODO: tila muutos
} else {
throw new Error(`Ei toteutettu ${taulu} ${id} ${vanha} ${uusi}`);
}
@ -117,3 +137,19 @@ function luoOpettaja(id, {nimi, lyhenne}) {
li.appendChild(document.createTextNode(`${nimi} (${lyhenne})`));
return li;
}
function luoTila(id, nimi) {
const li = document.createElement('li');
li.id = `tila-${id}`;
const poistoPainike = document.createElement('input');
poistoPainike.type = 'button';
poistoPainike.value = '-';
poistoPainike.addEventListener('click', () => {
suorita(_tietokanta.transaktio((t) => {
t.poista(taulut.tilat, id);
}));
});
li.appendChild(poistoPainike);
li.appendChild(document.createTextNode(nimi));
return li;
}

View file

@ -3,6 +3,7 @@
const taulut = {
luokat: 'luokat',
opettajat: 'opettajat',
tilat: 'tilat',
};
class Transaktio {