Viikkotehtävä 6
Kaikille tasoille yhteiset vaatimukset:
- Käytetään vain Javascript-ohjelmointikieltä.
- Python-kieltä ei saa käyttää.
- Ohjelman pitää toimia myös ilman verkkoyhteyttä, ts. Javascriptillä ei saa kutsua mitään www-palvelimelta löytyviä palveluja.
- Ohjelma pitää pystyä suorittamaan useaan kertaan lataamatta sivua uudelleen.
- Ohjelma pitää toteuttaa pohjaksi annettuun XHTML-dokumenttiin. Pohjaksi annettuja XHTML-sivuja ei saa muokata muuten kuin ohjelmallisesti Javascript-ohjelmointikielellä.
- XHTML-sivuun saa tehdä muutoksia vain standardien DOM-operaatioiden avulla, eli esim. innerHTML-funktiota ei saa käyttää.
- Ulkoisten kirjastojen, kuten esim. prototype, jquery, käyttäminen on kielletty.
- Ulkoasun muokkaukseen voi käyttää erillistä CSS-tiedostoa ja DOM-operaatioita. On suositeltavaa käyttää CSS-tyylimäärityksiin liittyviä
DOM-operaatioita, kuten esim.
class-attribuutin muokkausta. - Valmiin ohjelman pitää toimia Firefox 3.x -selaimilla, muista selaimista ei tarvitse toistaiseksi välittää (Firefoxissa on standardinmukaisin DOM-tuki).
- Dynaamisen XHTML:n luomisen apuna voi käyttää tarvittaessa DOMTool-työkalua.
- Koodin oleelliset osat on oltava kommentoitu.
- Sivun ulkoasumuotoilut on tehtävä CSS:ää käyttäen. CSS:n on oltava myös validia CSS2:sta.
- Sivun ulkoasu tulee olla layoutin osalta suunnilleen mallikuvien mukainen. Värit sen sijaan saa päättää itse.
- Tämä tehtävän palautustakaraja on tiistai 2.3.2010 klo 08:00
Taso 1
- Kirjoita mallikuvien mukainen lotto-ohjelma:
- Arvotaan seitsemän numeroa väliltä 1-39.
- Samassa rivissä ei saa olla kahta samaa numeroa.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
- Ohjelmalla voi arpoa uuden lottorivin niin monta kertaa kuin haluaa.
Taso 3
- Kirjoita mallikuvien mukainen lotto-ohjelma:
- Arvotaan seitsemän numeroa väliltä 1-39.
- Arvotussa rivissä ei saa olla kahta samaa numeroa.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
- Lottonumeroksi kelpaa vain kokonaisluku 1-39 väliltä.
- Tekstiä ei saa hyväksyä lottonumeroksi.
- Tyhjää kenttää ei hyväksytä.
- Samaa numeroa ei saa hyväksyä lottoriviin useampaan kertaan.
- Virheellisesti täytetyn lottonumerokentän ulkoasu pitää muuttaa poikkeavaksi mallikuvan tapaan heti kentästä poistuttaessa.
- Ohjelmalla voi arpoa uuden lottorivin niin monta kertaa kuin haluaa.
- Lomakkeen luominen on tehtävä seuraavien JavaScript-määritysten pohjalta:
var henkilot = ["Tommi", "Antti", "Vesa", "Ville"];
Taso 5
- Kirjoita mallikuvien mukainen lotto-ohjelma:
- Ohjelman alussa saa määrätä kuinka monta lottonumeroa ja miltä väliltä lottonumerot arvotaan ja montako lottoarvausta haluaa tehdä (maksimi 10 kpl). Ohjelma luo tarvittavan määrän lottoruudukoita, joista voi ruksailla haluamansa lottorivit.
- Lottonumeroita voidaan arpoa 1-50 kappaletta ja lottoruudukon maksimikoko on 100 eli luvut väliltä 1-100. Minimikoko on 10.
- Muuta kuin kokonaislukuja ei pidä kelpuuttaa aloitusarvoiksi.
- Numeroita ei tietenkään voida arpoa enempää mitä ruudukkoon mahtuu.
- Ohjelman pitää tarkistaa syötteen oikeellisuus heti kentästä poistuttaessa ja virheellisen arvon tapauksessa muuttaa kentän ulkoasua.
- Aloita-painike saa olla aktiivinen vasta, kun kaikki syötteet ovat kunnossa.
- Ohjelman pitää varmistaa, että jokaiseen arvaukseen merkitään oikea määrä numeroita.
- Lottoruudukko, josta ei ole vielä valittu vaadittua määrää lukuja, pitää ulkoasultaan erottaa valmiista ruudukosta.
- Valintojen vaadittu lukumäärä tulee tarkistaa heti jokaisen valitun tai poistetun numeron jälkeen.
- Lottoarvonta-painike saa olla aktiivinen vasta, kun jokaisesta rivistä on valittu oikea määrä numeroita.
- Tulostettaessa numerot tulee olla järjestettynä pienimmästä suurimpaan.
- Parhaan arvauksen sisältävä ruudukko tai ruudukot pitää ulkomuotoilla muista poikkeavasti.
- Ohjelmalla voi arpoa uuden lottorivin niin monta kertaa kuin haluaa. Jos lähtöarvoja muutetaan, niin uusia numeroita ei arvota ennen kuin käyttäjä on täyttänyt oman uuden arvauksen.

Käyttäjien kommentit
Onko etenkin vitossivulla tarkoitus olla mahdollista lisätä treeni- ja lajityyppejä lisäämättä uutta treeniä? Nythän nuo kaikki näyttävät kuuluvan yhteen lomakkeeseen, jossa on vaadittuina kenttinä treenin tietoja.