Compare commits

...

3 Commits

Author SHA1 Message Date
Juhani Krekelä 4522536155 Älä anna poistaa luokkaa, jos se on tunnin käytössä 2024-05-23 15:07:51 +03:00
Juhani Krekelä f769805c72 Muuta tuntien tekstillistämistä niin, että informaatio on selvempi 2024-05-23 14:56:35 +03:00
Juhani Krekelä 046135b016 Tuntien poisto 2024-05-23 14:53:01 +03:00
2 changed files with 16 additions and 6 deletions

View File

@ -91,7 +91,7 @@ function suoritaMuutos(tietokanta, muutos) {
// "luokka-undefined". seuraava on siis null silloin kuin tämä luokka // "luokka-undefined". seuraava on siis null silloin kuin tämä luokka
// tulee lisätä listan loppuun, joka vastaa insertBefore:n toimintaa // tulee lisätä listan loppuun, joka vastaa insertBefore:n toimintaa
let seuraava = document.getElementById(`luokka-${seuraavaId}`); let seuraava = document.getElementById(`luokka-${seuraavaId}`);
luokatLista.insertBefore(luoLuokka(id, uusi), seuraava); luokatLista.insertBefore(luoLuokka(tietokanta, id, uusi), seuraava);
const tunnitUusiLuokat = document.getElementById('tunnit-uusi-luokat'); const tunnitUusiLuokat = document.getElementById('tunnit-uusi-luokat');
seuraava = document.getElementById(`tunnit-uusi-luokka-${seuraavaId}`); seuraava = document.getElementById(`tunnit-uusi-luokka-${seuraavaId}`);
tunnitUusiLuokat.insertBefore(luoLuokkaValinta(id, uusi), seuraava); tunnitUusiLuokat.insertBefore(luoLuokkaValinta(id, uusi), seuraava);
@ -136,7 +136,9 @@ function suoritaMuutos(tietokanta, muutos) {
// TODO: Järjestys // TODO: Järjestys
const tunnitLista = document.getElementById('tunnit-lista'); const tunnitLista = document.getElementById('tunnit-lista');
tunnitLista.appendChild(luoTunti(tietokanta, id, uusi)); tunnitLista.appendChild(luoTunti(tietokanta, id, uusi));
// TODO: tunti poistettu, muutos } else if (taulu === taulut.tunnit && uusi === undefined) {
poistaElementti(document.getElementById(`tunti-${id}`));
// TODO: tunti muutos
} else { } else {
throw new Error(`Ei toteutettu ${taulu} ${id} ${vanha} ${uusi}`); throw new Error(`Ei toteutettu ${taulu} ${id} ${vanha} ${uusi}`);
} }
@ -156,7 +158,7 @@ function poistaElementti(elementti) {
elementti.parentElement.removeChild(elementti); elementti.parentElement.removeChild(elementti);
} }
function luoLuokka(id, nimi) { function luoLuokka(tietokanta, id, nimi) {
const li = document.createElement('li'); const li = document.createElement('li');
li.id = `luokka-${id}`; li.id = `luokka-${id}`;
const poistoPainike = document.createElement('input'); const poistoPainike = document.createElement('input');
@ -164,7 +166,15 @@ function luoLuokka(id, nimi) {
poistoPainike.value = '-'; poistoPainike.value = '-';
poistoPainike.addEventListener('click', () => { poistoPainike.addEventListener('click', () => {
suorita(_tietokanta.transaktio((t) => { suorita(_tietokanta.transaktio((t) => {
t.poista(taulut.luokat, id); const käyttävät =
t.suodata(taulut.tunnit, (tunti) => tunti.luokat.includes(id))
.map((x) => tuntiTeksti(tietokanta, t.hae(taulut.tunnit, x)));
if (käyttävät.length === 0) {
t.poista(taulut.luokat, id);
} else {
const lista = käyttävät.join('\n- ');
alert(`Ei voida poistaa ennen tunteja:\n- ${lista}`);
}
})); }));
}); });
li.appendChild(poistoPainike); li.appendChild(poistoPainike);
@ -227,7 +237,7 @@ function tuntiTeksti(tietokanta, tunti) {
const opettajat = tunti.opettajat const opettajat = tunti.opettajat
.map((x) => tietokanta.hae(taulut.opettajat, x).lyhenne); .map((x) => tietokanta.hae(taulut.opettajat, x).lyhenne);
const tilat = tunti.tilat.map((x) => tietokanta.hae(taulut.tilat, x)); const tilat = tunti.tilat.map((x) => tietokanta.hae(taulut.tilat, x));
return `${kertaa}× ${nimi} ${luokat} ${opettajat} ${tilat}`; return `${luokat} ${opettajat} ${kertaa}×${nimi} tilassa ${tilat}`;
} }
function luoLuokkaValinta(id, nimi) { function luoLuokkaValinta(id, nimi) {

View File

@ -150,7 +150,7 @@ class Tietokanta {
if (roikkuvat.length !== 0) { if (roikkuvat.length !== 0) {
throw new Error(`Yritetty poistaa ${taulu}:${id}, joka on ${roikkuvat} käytössä`); throw new Error(`Yritetty poistaa ${taulu}:${id}, joka on ${roikkuvat} käytössä`);
} }
} else if (taulu === taulut.tunnit) { } else if (taulu === taulut.tunnit && uusi !== undefined) {
// Uusi tunti käyttää vain olemassaolevia luokkia, opettajia ja // Uusi tunti käyttää vain olemassaolevia luokkia, opettajia ja
// tiloja // tiloja
for (const luokka of uusi.luokat) { for (const luokka of uusi.luokat) {