diff --git a/ARCHITECTURE_DECISIONS.md b/ARCHITECTURE_DECISIONS.md index f4e1b16..453eeb0 100644 --- a/ARCHITECTURE_DECISIONS.md +++ b/ARCHITECTURE_DECISIONS.md @@ -6989,11 +6989,23 @@ lagret korrekt. Ingen kodeendring nødvendig; kun automatiserings- verktøyets begrensning med native dato-inputs, ikke en reell applikasjonsbug. -**Bevisst UTENFOR omfang:** den strukturelt identiske "bla i eksisterende -spillere"-begrensningen finnes trolig også i lag-turneringers roster- -tillegg (`tournament-detail.tsx`, samme `pool`/`matches`/`exactMatch`- -mønster) -- IKKE rørt i denne runden, brukerens skjermbilder gjaldt -spesifikt den org-individuelle skjermen. Kjent, ikke glemt. +**Tillegg samme dag:** bruker ba om samme fiks i lag-turneringers +roster-tillegg (`tournament-detail.tsx`, `AddPlayerControl`) etter å ha +fått påpekt den strukturelt identiske begrensningen der. Samme +"available"-fallback-mønster (utledet av `matches`, ikke en egen +tilstand) lagt til -- spillere allerede rostret på det ANDRE laget +forblir i listen, nedgradert/deaktivert med "allerede på {lag}", kun +spillere på DETTE laget ekskluderes fra `matches`. Tom-tilstand-teksten +splittet på samme måte (pool tomt / alle allerede lagt til / søk uten +treff). Ingen migrasjon -- ren frontend-endring. `tsc --noEmit` rent + +45/45 vitest. Egen scratch-database + scratch `teecup_api`-container +(port 18004, live-mountet kode) + lokal `next dev` (port 13004): to +lag, tre poolspillere (én allerede rostret på det andre laget) -- +bekreftet at kontrollen viser alle tre direkte ved tomt søk (riktig +nedgradert for den som er opptatt), søk smalner riktig inn, og +"Legg til"-flyten for en eksisterende spiller fungerer uendret. Lys+mørk +bekreftet. Scratch-stacken revet ned -- ekte `teecup_db`/`teecup_api`/ +`teecup_frontend` urørt (ingen migrasjon å rulle ut for dette tillegget). **Rullet ut 2026-08-14** -- migrasjon 074 kjørt mot ekte `teecup_db` som `teeoff_admin` (4 eksisterende spillere backfillet), etter diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f225d3..6fc4a98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11336,12 +11336,21 @@ Neste steg: korrekt. Kun et automatiseringsverktøy-kvirk med native dato-inputs, ingen kodeendring nødvendig. - **Bevisst UTENFOR omfang:** samme "bla i eksisterende"-begrensning - finnes trolig også i lag-turneringers roster-tillegg - (`tournament-detail.tsx`, strukturelt identisk mønster) -- ikke rørt, - brukerens skjermbilder gjaldt spesifikt den org-individuelle skjermen. - **Rullet ut 2026-08-14** -- migrasjon 074 kjørt mot ekte `teecup_db` som `teeoff_admin` (4 eksisterende spillere backfillet), etter eksplisitt bekreftelse fra bruker. `docker compose build teecup_api teecup_frontend && up -d` -- begge containere startet rent. + + **Tillegg samme dag:** flagget den strukturelt identiske "bla i + eksisterende"-begrensningen i lag-turneringers roster-tillegg + (`tournament-detail.tsx`) som bevisst utenfor omfang -- bruker ba om + samme fiks der. Samme "available"-fallback-mønster lagt til + `AddPlayerControl` (spillere på DET ANDRE laget forblir synlige, + nedgradert/deaktivert -- kun de på DETTE laget ekskluderes). Ren + frontend-endring, ingen migrasjon. `tsc --noEmit` rent + 45/45 + vitest. Scratch-database + scratch `teecup_api` (port 18004) + + lokal `next dev` (port 13004): to lag, tre poolspillere (én allerede + rostret på det andre laget) -- bekreftet browsing, søk-innsnevring + og eksisterende-spiller-tillegg alle fungerer, lys+mørk. Ingen + migrasjon å rulle ut -- fikset direkte i `teecup_frontend` sammen + med neste ordinære build/deploy. diff --git a/frontend/components/tournament-detail.tsx b/frontend/components/tournament-detail.tsx index e351ea7..8af92d2 100644 --- a/frontend/components/tournament-detail.tsx +++ b/frontend/components/tournament-detail.tsx @@ -948,11 +948,13 @@ function AddPlayerControl({ const trimmed = query.trim() - const matches = useMemo(() => { - if (!trimmed) return [] - const q = trimmed.toLowerCase() + // Alle poolspillere som ikke allerede er rostret på DETTE laget (spillere + // på det andre laget blir værende med, vist nedgraderte -- se onOtherTeam + // under). Skilt ut fra `matches` slik at "bla i eksisterende"-listen kan + // vises uavhengig av om søkefeltet er tomt (samme fiks som + // AddParticipantControl i individual-tournament-detail.tsx, ADR-070). + const availableForThisTeam = useMemo(() => { return pool - .filter((p) => p.display_name.toLowerCase().includes(q)) .map((p) => { const onTeam = findPlayerTeam(p.id) return { @@ -962,7 +964,13 @@ function AddPlayerControl({ } }) .filter((m) => !m.onThisTeam) - }, [pool, trimmed, findPlayerTeam, team.id]) + }, [pool, findPlayerTeam, team.id]) + + const matches = useMemo(() => { + if (!trimmed) return availableForThisTeam + const q = trimmed.toLowerCase() + return availableForThisTeam.filter((m) => m.player.display_name.toLowerCase().includes(q)) + }, [availableForThisTeam, trimmed]) const exactMatch = useMemo( () => pool.some((p) => p.display_name.toLowerCase() === trimmed.toLowerCase()), @@ -1038,9 +1046,8 @@ function AddPlayerControl({ - {trimmed.length > 0 && ( -
- -
- )} + + ) }