Ä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
vastaus = parseInt(vastaus, 10); let muokkausLomake = document.createElement('form');
if (Number.isNaN(vastaus)) { muokkausLomake.classList.add('piilotettu');
// Ei numero muokkausLomake.classList.add('luokka-aste-lomake');
alert('Luokka-asteen pitää olla numero'); let asteValitsin = document.createElement('input');
return; asteValitsin.classList.add('luokka-aste-kenttä');
} else if (vastaus < 1) { asteValitsin.type = 'number';
// Luokka-aste alkaa 1:stä asteValitsin.min = 1;
alert('Luokka-asteeen pitää olla vähintään 1'); asteValitsin.value = aste;
return; muokkausLomake.append(asteValitsin);
} let muokkausLomakePainike = document.createElement('input');
suorita(tapahtumaTyypit.muutaAste, aste, vastaus); 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(); piirräLuokat();
})); } else {
muokkausVirhe.firstChild.textContent =
`Luokka-aste ${uusiAste} on jo olemassa.`;
muokkausVirhe.classList.remove('piilotettu');
}
});
luokkaAsteListassa.appendChild(muokkausLomake);
let muokkausPainike = luoPainike('✎', () => {
muokkausLomake.classList.remove('piilotettu');
muokkausPainike.classList.add('piilotettu');
});
luokkaAsteListassa.appendChild(muokkausPainike);
return luokkaAsteListassa; return luokkaAsteListassa;
} }