Älä käytä prompt():ia tai alert():ia

This commit is contained in:
Juhani Krekelä 2023-08-03 18:03:52 +03:00
parent d676ff37b0
commit 643c68dc2c
2 changed files with 51 additions and 19 deletions

View File

@ -7,6 +7,19 @@
.testit-epäonnistunut { .testit-epäonnistunut {
background-color: #e77; background-color: #e77;
} }
.virhe {
background-color: #fbb;
margin-right: 0.5em;
}
.luokka-aste-lomake {
display: inline;
}
.piilotettu {
display: none;
}
.luokka-aste-kenttä {
width: 3em;
}
#luokka-asteet { #luokka-asteet {
list-style-type: none; list-style-type: none;
} }

View File

@ -59,26 +59,45 @@ function luoLuokkaAsteListassa(aste) {
luokkaAsteListassa.appendChild(luoLuokkaLista(aste)); luokkaAsteListassa.appendChild(luoLuokkaLista(aste));
luokkaAsteListassa.appendChild(luoPainike('✎', () => { let muokkausVirhe = document.createElement('span');
// TODO: Älä käytä prompt():ia ja alert():ia muokkausVirhe.classList.add('virhe');
let vastaus = prompt('Uusi luokka-aste'); muokkausVirhe.classList.add('piilotettu');
if (vastaus === null) { muokkausVirhe.appendChild(document.createTextNode(''));
// Käytääjä painoi 'Peruuta' luokkaAsteListassa.appendChild(muokkausVirhe);
return;
// Luo muokkauspainike ja -lomake, joista vain yksi on näkyvillä kerralla
let muokkausLomake = document.createElement('form');
muokkausLomake.classList.add('piilotettu');
muokkausLomake.classList.add('luokka-aste-lomake');
let asteValitsin = document.createElement('input');
asteValitsin.classList.add('luokka-aste-kenttä');
asteValitsin.type = 'number';
asteValitsin.min = 1;
asteValitsin.value = aste;
muokkausLomake.append(asteValitsin);
let muokkausLomakePainike = document.createElement('input');
muokkausLomakePainike.type = 'submit';
muokkausLomakePainike.value = '✓';
muokkausLomake.appendChild(muokkausLomakePainike);
muokkausLomake.addEventListener('submit', (tapahtuma) => {
tapahtuma.preventDefault();
let uusiAste = parseInt(asteValitsin.value);
if (luokkaAsteet.asteet[uusiAste] === undefined || aste === uusiAste) {
suorita(tapahtumaTyypit.muutaAste, aste, uusiAste);
piirräLuokat();
} else {
muokkausVirhe.firstChild.textContent =
`Luokka-aste ${uusiAste} on jo olemassa.`;
muokkausVirhe.classList.remove('piilotettu');
} }
vastaus = parseInt(vastaus, 10); });
if (Number.isNaN(vastaus)) { luokkaAsteListassa.appendChild(muokkausLomake);
// Ei numero
alert('Luokka-asteen pitää olla numero'); let muokkausPainike = luoPainike('✎', () => {
return; muokkausLomake.classList.remove('piilotettu');
} else if (vastaus < 1) { muokkausPainike.classList.add('piilotettu');
// Luokka-aste alkaa 1:stä });
alert('Luokka-asteeen pitää olla vähintään 1'); luokkaAsteListassa.appendChild(muokkausPainike);
return;
}
suorita(tapahtumaTyypit.muutaAste, aste, vastaus);
piirräLuokat();
}));
return luokkaAsteListassa; return luokkaAsteListassa;
} }