Compare commits
2 commits
9f73f0b92a
...
d190c62037
Author | SHA1 | Date | |
---|---|---|---|
|
d190c62037 | ||
|
3b4171b726 |
3 changed files with 43 additions and 0 deletions
|
@ -23,10 +23,16 @@
|
||||||
<input id="opettajat-uusi-nimi" type="text" placeholder="nimi" required>
|
<input id="opettajat-uusi-nimi" type="text" placeholder="nimi" required>
|
||||||
<input id="opettajat-uusi-lyhenne" type="text" placeholder="lyhenne">
|
<input id="opettajat-uusi-lyhenne" type="text" placeholder="lyhenne">
|
||||||
<input type="submit" value="+">
|
<input type="submit" value="+">
|
||||||
|
</form>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details class="ruutu" open>
|
<details class="ruutu" open>
|
||||||
<summary>Tilat</summary>
|
<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>
|
||||||
|
|
||||||
<details class="ruutu" open>
|
<details class="ruutu" open>
|
||||||
|
|
|
@ -33,6 +33,15 @@ document.getElementById('opettajat-uusi-nimi').addEventListener('change', () =>
|
||||||
document.getElementById('opettajat-uusi-lyhenne').value = lyhenne;
|
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]) {
|
function suorita([tietokanta, muutokset]) {
|
||||||
for (const muutos of muutokset) {
|
for (const muutos of muutokset) {
|
||||||
suoritaMuutos(tietokanta, muutos);
|
suoritaMuutos(tietokanta, muutos);
|
||||||
|
@ -71,6 +80,17 @@ function suoritaMuutos(tietokanta, muutos) {
|
||||||
const opettaja = document.getElementById(`opettaja-${id}`);
|
const opettaja = document.getElementById(`opettaja-${id}`);
|
||||||
opettaja.parentElement.removeChild(opettaja);
|
opettaja.parentElement.removeChild(opettaja);
|
||||||
// TODO: opettaja muutos
|
// 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 {
|
} else {
|
||||||
throw new Error(`Ei toteutettu ${taulu} ${id} ${vanha} ${uusi}`);
|
throw new Error(`Ei toteutettu ${taulu} ${id} ${vanha} ${uusi}`);
|
||||||
}
|
}
|
||||||
|
@ -117,3 +137,19 @@ function luoOpettaja(id, {nimi, lyhenne}) {
|
||||||
li.appendChild(document.createTextNode(`${nimi} (${lyhenne})`));
|
li.appendChild(document.createTextNode(`${nimi} (${lyhenne})`));
|
||||||
return li;
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
const taulut = {
|
const taulut = {
|
||||||
luokat: 'luokat',
|
luokat: 'luokat',
|
||||||
opettajat: 'opettajat',
|
opettajat: 'opettajat',
|
||||||
|
tilat: 'tilat',
|
||||||
};
|
};
|
||||||
|
|
||||||
class Transaktio {
|
class Transaktio {
|
||||||
|
|
Loading…
Reference in a new issue