Muuta yksi tuntiobjekti vastaamaan aina yhtä tuntia

This commit is contained in:
Juhani Krekelä 2023-08-11 19:28:04 +03:00
parent 02f456dce0
commit 350aed910d
4 changed files with 16 additions and 40 deletions

View File

@ -46,9 +46,6 @@
#tilat > li > span {
margin-left: 0.5em;
}
#tunti-kertaa-viikossa {
width: 3em;
}
.piilotettu {
display: none;
}
@ -105,8 +102,6 @@
<select id="tunti-opettaja" required></select>
<label for="tunti-tila">Tila</label>
<select id="tunti-tila" required></select>
<input id="tunti-kertaa-viikossa" type="number" min="1" value="1">
<label for="tunti-kertaa-viikossa">kertaa viikossa</label>
<input type="submit" value="+">
</form>
<ul id="tunnit"></ul>

View File

@ -75,27 +75,23 @@ document.getElementById('lisää-tunti').addEventListener('submit', (tapahtuma)
let luokkaElementti = document.getElementById('tunti-luokka');
let opettajaElementti = document.getElementById('tunti-opettaja');
let tilaElementti = document.getElementById('tunti-tila');
let kertaaViikossaElementti = document.getElementById('tunti-kertaa-viikossa');
let nimi = nimiElementti.value;
let luokka = luokkaElementti.value;
let opettajaLyhenne = opettajaElementti.value;
let tila = parseInt(tilaElementti.value);
let kertaaViikossa = parseInt(kertaaViikossaElementti.value);
suorita(
tapahtumaTyypit.lisääTunti,
nimi,
luokka,
opettajaLyhenne,
tila,
kertaaViikossa
);
nimiElementti.value = '';
luokkaElementti.value = '';
opettajaElementti.value = '';
tilaElementti.value = '';
kertaaViikossaElementti.value = 1;
piirräKaikki();
});
@ -336,13 +332,7 @@ function luoTuntiLista() {
let luokat = tunti.luokat.alkiot().join(', ');
let opettajat = tunti.opettajaLyhenteet.alkiot().join(', ');
let tunninTilat = tilojenNimet(tilat, tunti.tilat.alkiot());
let kertaaViikossa = tunti.kertaaViikossa;
let teksti;
if (kertaaViikossa === 1) {
teksti = `${nimi} ${luokat} ${opettajat} ${tunninTilat}`;
} else {
teksti = `${nimi} ${luokat} ${opettajat} ${tunninTilat} ×${kertaaViikossa}`;
}
let teksti = `${nimi} ${luokat} ${opettajat} ${tunninTilat}`;
tuntiListassa.appendChild(document.createTextNode(teksti));
tuntiLista.appendChild(tuntiListassa);
}

View File

@ -121,7 +121,7 @@ function suorita(tyyppi, ...argumentit) {
break;
case tapahtumaTyypit.lisääTunti:
assertEq('lisääTunti argumentit määrä', argumentit.length, 5);
assertEq('lisääTunti argumentit määrä', argumentit.length, 4);
paluuarvo = tunnit.lisää(...argumentit);
break;
case tapahtumaTyypit.poistaTunti:
@ -305,15 +305,15 @@ testi('tuntien käsittely', () => {
assertEq('aluksi', tunnit.järjestyksessä(), []);
assertEq('historia',
suorita(tapahtumaTyypit.lisääTunti, 'Historia', '5B', 'KV', 1, 1),
suorita(tapahtumaTyypit.lisääTunti, 'Historia', '5B', 'KV', 1),
0
);
assertEq('äidinkieli',
suorita(tapahtumaTyypit.lisääTunti, 'Äidinkieli', '1A', 'AS', 0, 3),
suorita(tapahtumaTyypit.lisääTunti, 'Äidinkieli', '1A', 'AS', 0),
1
);
assertEq('kuvataide',
suorita(tapahtumaTyypit.lisääTunti, 'Kuvataide', '5A', 'MM', 2, 1),
suorita(tapahtumaTyypit.lisääTunti, 'Kuvataide', '5A', 'MM', 2),
2
);
assertEq('lisättyä pituus', tunnit.järjestyksessä().length, 3);

View File

@ -153,12 +153,11 @@ function tilojenNimet(tilat, tilaIDt) {
}
class Tunti {
constructor(nimi, luokat, opettajaLyhenteet, tilat, kertaaViikossa) {
constructor(nimi, luokat, opettajaLyhenteet, tilat) {
this.nimi = nimi;
this.luokat = new Joukko(luokat);
this.opettajaLyhenteet = new Joukko(opettajaLyhenteet);
this.tilat = new Joukko(tilat);
this.kertaaViikossa = kertaaViikossa;
}
}
@ -166,11 +165,11 @@ class Tunnit {
tunnit = new Map();
#seuraavaId = 0;
lisää(nimi, luokka, opettajaLyhenne, tila, kertaaViikossa) {
lisää(nimi, luokka, opettajaLyhenne, tila) {
let id = this.#seuraavaId++;
this.tunnit.set(
id,
new Tunti(nimi, [luokka], [opettajaLyhenne], [tila], kertaaViikossa)
new Tunti(nimi, [luokka], [opettajaLyhenne], [tila])
);
return id;
}
@ -197,10 +196,6 @@ class Tunnit {
tulos = vertaa(a[1].opettajaLyhenteet.alkiot(), b[1].opettajaLyhenteet.alkiot());
}
// TODO: Vertaa tilojen nimiä
// TODO: Korjaa niin, että osaa verrata okein listoja
if (tulos === 0) {
tulos = vertaa(a[1].kertaaViikossa, b[1].kertaaViikossa);
}
if (tulos === 0) {
tulos = vertaa(a[0], b[0]);
}
@ -399,43 +394,39 @@ testi('tilojen nimet', () => {
testi('tuntien lisääminen', () => {
let tunnit = new Tunnit();
assertEq('historia', tunnit.lisää('Historia', '5B', 'KV', 0, 1), 0);
assertEq('äidinkieli', tunnit.lisää('Äidinkieli', '1A', 'AS', 1, 3), 1);
assertEq('historia', tunnit.lisää('Historia', '5B', 'KV', 0), 0);
assertEq('äidinkieli', tunnit.lisää('Äidinkieli', '1A', 'AS', 1), 1);
assertEq('historia nimi', tunnit.tunnit.get(0).nimi, 'Historia');
assertEq('historia luokat', tunnit.tunnit.get(0).luokat.alkiot(), ['5B']);
assertEq('historia opettajat', tunnit.tunnit.get(0).opettajaLyhenteet.alkiot(), ['KV']);
assertEq('historia tilat', tunnit.tunnit.get(0).tilat.alkiot(), [0]);
assertEq('historia viikossa', tunnit.tunnit.get(0).kertaaViikossa, 1);
assertEq('äidinkieli nimi', tunnit.tunnit.get(1).nimi, 'Äidinkieli');
assertEq('äidinkieli luokat', tunnit.tunnit.get(1).luokat.alkiot(), ['1A']);
assertEq('äidinkieli tilat', tunnit.tunnit.get(1).tilat.alkiot(), [1]);
assertEq('äidinkieli opettajat', tunnit.tunnit.get(1).opettajaLyhenteet.alkiot(), ['AS']);
assertEq('äidinkieli viikossa', tunnit.tunnit.get(1).kertaaViikossa, 3);
});
testi('tuntien poistaminen', () => {
let tunnit = new Tunnit();
tunnit.lisää('Historia', '5B', 'KV', 0, 1);
tunnit.lisää('Äidinkieli', '1B', 'AS', 1, 3);
tunnit.lisää('Historia', '5B', 'KV', 0);
tunnit.lisää('Äidinkieli', '1B', 'AS', 1);
tunnit.poista(0);
tunnit.poista(1);
assertThrow('jo poistettu', 'ei tuntia ID:llä 1', () => {
tunnit.poista(1);
});
assertEq('kuvataide', tunnit.lisää('Kuvataide', '6A', 'MM', 2, 1), 2);
assertEq('kuvataide', tunnit.lisää('Kuvataide', '6A', 'MM', 2), 2);
});
testi('tuntien järjestys', () => {
let tunnit = new Tunnit();
tunnit.lisää('Historia', '5B', 'KV', 0, 1);
tunnit.lisää('Äidinkieli', '1B', 'AS', 1, 3);
tunnit.lisää('Historia', '5B', 'KV', 0);
tunnit.lisää('Äidinkieli', '1B', 'AS', 1);
assertEq('aluksi', tunnit.järjestyksessä()[0][1].nimi, 'Historia');
tunnit.tunnit.get(1).nimi = 'Historia';
assertEq('sama nimi', tunnit.järjestyksessä()[0][1].luokat.alkiot(), ['1B']);
tunnit.tunnit.get(0).luokat = new Joukko(['1B']);
assertEq('sama luokka', tunnit.järjestyksessä()[0][1].opettajaLyhenteet.alkiot(), ['AS']);
tunnit.tunnit.get(0).opettajaLyhenteet = new Joukko(['AS']);
assertEq('sama opettaja', tunnit.järjestyksessä()[0][1].kertaaViikossa, 1);
tunnit.tunnit.get(1).kertaaViikossa = 1;
assertEq('yhtä monta kertaa viikossa', tunnit.järjestyksessä()[0][0], 0);
assertEq('sama opettaja', tunnit.järjestyksessä()[0][1].tilat.alkiot(), [0]);
});