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

View File

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

View File

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

View File

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