No description
  • JavaScript 70.4%
  • CSS 19.2%
  • HTML 10.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-15 15:25:01 +02:00
app.js Initial commit 2026-09-15 15:25:01 +02:00
index.html Initial commit 2026-09-15 15:25:01 +02:00
OVERLEVERING.md Initial commit 2026-09-15 15:25:01 +02:00
README.md Initial commit 2026-09-15 15:25:01 +02:00
style.css Initial commit 2026-09-15 15:25:01 +02:00
timer-ui.js Initial commit 2026-09-15 15:25:01 +02:00
timer.js Initial commit 2026-09-15 15:25:01 +02:00
timer.test.js Initial commit 2026-09-15 15:25:01 +02:00
tournament.js Initial commit 2026-09-15 15:25:01 +02:00
tournament.test.js Initial commit 2026-09-15 15:25:01 +02:00

Kampklar

Et lokalt turneringsverktøy på norsk. Åpne index.html i en moderne nettleser. Ingen installasjon, server eller internett er nødvendig. Alle ressurser ligger i prosjektet.

Bruk

  1. Velg antall lag, skriv inn lagnavn og angi antall samtidige kamper.
  2. Velg utslagsturnering eller gruppespill + sluttspill. Ved gruppespill velger du antall grupper og hvor mange lag som går videre fra hver gruppe. Slå eventuelt på ekstrakamper, og trykk «Trekk lag og start turnering».
  3. Start en klar kamp og klikk på laget som vinner. Gruppepoeng og sluttspill oppdateres automatisk.
  4. «Rett vinner» endrer en registrert vinner etter bekreftelse. Avhengige kamper nullstilles. Ved retting av en gruppekamp settes begge sluttspill opp på nytt; øvrige gruppekamper bevares.
  5. Eksporter JSON som sikkerhetskopi, eller importer filen på en annen maskin for å fortsette.

Ved utslagsturnering uten gruppespill fordeles frirunder tilfeldig og teller ikke som spilte kamper. Med ekstrakamper deltar lag som taper sin første spilte kamp i et eget utslagsspill etter hovedfinalen. Dette gir alle minst to spilte kamper når ekstraspillet fullføres. Ved bare ett kvalifisert lag (kan skje med to eller tre lag) deltar hovedvinneren som motstander i ekstrakampen. Retting i hovedturneringen nullstiller også tapersluttspillet i denne modusen. Tapersluttspillet påvirker ikke turneringsvinneren.

Én turnering er aktiv om gangen. Bruk separate JSON-filer for forskjellige spill. «Nytt oppsett» lar deg beholde navn og innstillinger, men fjerner trekning og resultater etter bekreftelse. Verktøyet støtter 264 lag, og er først og fremst utformet for 510.

Lagring

Oppsett og resultater lagres automatisk i nettleserens localStorage. Tilgjengeligheten for lokale filer varierer mellom nettlesere, og data følger ikke automatisk med hvis du flytter filene, bytter nettleser eller maskin. Ta JSON-sikkerhetskopi før du lukker en viktig turnering. Nettsiden varsler dersom lagring feiler. JSON-import valideres før gjeldende turnering erstattes.

Gruppespill + sluttspill

  • Lag trekkes tilfeldig til jevnest mulig grupper, med minst to lag i hver. Alle møter alle i egen gruppe én gang.
  • Velg hvor mange som går videre fra hver gruppe. Antallet kan ikke overstige størrelsen på den minste gruppen, og det må være minst to lag totalt i hovedsluttspillet. Oppsettet viser antall kamper før start.
  • Én seier gir ett poeng. Ved poenglikhet telles seire i innbyrdes kamper mellom alle lagene med samme poengsum. Ved fortsatt likhet avgjør en tilfeldig loddrekkefølge som trekkes ved opprettelse og lagres i JSON. Den endres ikke ved omlasting eller retting. Lavere loddnummer vinner; numrene vises når lodd avgjør en ferdig gruppetabell.
  • Hovedsluttspillet settes opp når alle gruppekamper er ferdige. Gruppevinnere seedes først, deretter andreplasser osv.; innenfor samme plassering brukes grupperekkefølgen. Frirunder går til høyere seedede lag. To grupper med to videre gir 1. plass i gruppe 1 mot 2. plass i gruppe 2, og omvendt. Andre gruppeantall bruker et vanlig seedet kamptre; det garanterer ikke at lag fra samme gruppe unngår hverandre.
  • Valgfrie ekstrakamper er et separat utslagsspill for lag som ikke går videre. Det opprettes bare dersom minst to lag er aktuelle, og kan spilles samtidig med hovedsluttspillet. Retting i hovedsluttspillet påvirker ikke dette ekstraspillet.
  • Retting av en gruppekamp nullstiller begge sluttspill etter bekreftelse. De opprettes på nytt fra oppdaterte gruppeplasseringer; øvrige gruppekamper og loddrekkefølgen bevares.

Gruppetabellene avgjør kvalifisering. Den samlede poengtabellen nederst teller seire fra gruppespill, hovedsluttspill og ekstraspill, mens hovedfinalen avgjør turneringsvinneren.

Poengtabell

Nederst vises alle lag med plassering, spilte kamper og poeng. Hver vunnet kamp gir ett poeng, inkludert ekstrakamper. Frirunder og uferdige kamper teller ikke. Lag med lik poengsum deler plassering og vises alfabetisk innenfor denne plasseringen (for eksempel 1, 1, 3).

Tabellen oppdateres automatisk ved registrering, retting og import. Den beregnes fra kampene, slik at også tidligere JSON-filer fungerer. Hovedfinalen avgjør fortsatt turneringsvinneren.

Separat timer

Åpne fanen «Timer» øverst. Timeren kan brukes uten turnering, og fortsetter mens du registrerer kamper i turneringsfanen. Gjenværende tid vises også ved faneknappen.

  • Velg 099 minutter og 059 sekunder (minst ett sekund). Standard er fem minutter.
  • Trykk «Start», «Pause», «Fortsett» eller «Tilbakestill». Tilbakestilling stopper nedtellingen og går tilbake til valgt tid. Tilbakestill før du endrer tid eller alarmer.
  • «Varsel før slutt» gir ett kort pip ved valgt antall sekunder igjen, standard åtte. Grensen må være kortere enn total varighet.
  • «Sluttalarm» gir tre korte pip ved null. Begge lydvalg er uavhengige og avslått som standard. Bruk «Test lyd» til å kontrollere lydavspilling.
  • Timeren stopper på 00:00 og viser «Tiden er ute», også uten lyd.

Timerinnstillingene lagres separat i nettleseren og følger ikke med i turneringens JSON-fil. Omlasting eller lukking avslutter aktiv nedtelling; neste åpning starter med valgt varighet, klar til start. Turneringens omstart, import og kampregistrering påvirker ikke timeren.

Lyd genereres lokalt uten lydfiler eller nettverk. Nettleser, dempet lyd eller hvilemodus kan hindre alarmen. Etter suspensjon oppdateres tiden fra sluttidspunktet uten å spille varsler som er blitt forsinket med ett sekund eller mer. Siden viser beskjed hvis lyd eller lagring ikke er tilgjengelig.

Utvikling og tester

Vanlig HTML, CSS og JavaScript, uten eksterne avhengigheter eller byggetrinn. tournament.js inneholder turneringsreglene; app.js håndterer visning og lagring. Utslagsturneringer bruker fortsatt JSON version: 1, og tidligere filer kan importeres. Gruppeturneringer bruker version: 2 med gruppeinnstillinger, gruppelag, lagret loddrekkefølge og gruppekamper i tillegg til sluttspill. Eldre utgaver av nettsiden kan ikke åpne versjon 2. Ukjente versjoner avvises.

Kjør logikktestene med Node.js 18 eller nyere:

node --test tournament.test.js timer.test.js