Samme "bla i eksisterende spillere"-fiks i lag-turneringers roster (ADR-070-tillegg)
AddPlayerControl i tournament-detail.tsx hadde samme begrensning som AddParticipantControl hadde før dagens fiks: matches var kun avledet ved ikke-tomt søk. Samme "available"-fallback-mønster lagt til her -- spillere på det andre laget forblir synlige (nedgradert), kun de på DETTE laget ekskluderes. Ren frontend-endring, ingen migrasjon. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
a8a2c602ce
commit
467cbd1ec2
3 changed files with 57 additions and 23 deletions
|
|
@ -6989,11 +6989,23 @@ lagret korrekt. Ingen kodeendring nødvendig; kun automatiserings-
|
||||||
verktøyets begrensning med native dato-inputs, ikke en reell
|
verktøyets begrensning med native dato-inputs, ikke en reell
|
||||||
applikasjonsbug.
|
applikasjonsbug.
|
||||||
|
|
||||||
**Bevisst UTENFOR omfang:** den strukturelt identiske "bla i eksisterende
|
**Tillegg samme dag:** bruker ba om samme fiks i lag-turneringers
|
||||||
spillere"-begrensningen finnes trolig også i lag-turneringers roster-
|
roster-tillegg (`tournament-detail.tsx`, `AddPlayerControl`) etter å ha
|
||||||
tillegg (`tournament-detail.tsx`, samme `pool`/`matches`/`exactMatch`-
|
fått påpekt den strukturelt identiske begrensningen der. Samme
|
||||||
mønster) -- IKKE rørt i denne runden, brukerens skjermbilder gjaldt
|
"available"-fallback-mønster (utledet av `matches`, ikke en egen
|
||||||
spesifikt den org-individuelle skjermen. Kjent, ikke glemt.
|
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`
|
**Rullet ut 2026-08-14** -- migrasjon 074 kjørt mot ekte `teecup_db`
|
||||||
som `teeoff_admin` (4 eksisterende spillere backfillet), etter
|
som `teeoff_admin` (4 eksisterende spillere backfillet), etter
|
||||||
|
|
|
||||||
19
CHANGELOG.md
19
CHANGELOG.md
|
|
@ -11336,12 +11336,21 @@ Neste steg:
|
||||||
korrekt. Kun et automatiseringsverktøy-kvirk med native dato-inputs,
|
korrekt. Kun et automatiseringsverktøy-kvirk med native dato-inputs,
|
||||||
ingen kodeendring nødvendig.
|
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`
|
**Rullet ut 2026-08-14** -- migrasjon 074 kjørt mot ekte `teecup_db`
|
||||||
som `teeoff_admin` (4 eksisterende spillere backfillet), etter
|
som `teeoff_admin` (4 eksisterende spillere backfillet), etter
|
||||||
eksplisitt bekreftelse fra bruker. `docker compose build teecup_api
|
eksplisitt bekreftelse fra bruker. `docker compose build teecup_api
|
||||||
teecup_frontend && up -d` -- begge containere startet rent.
|
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.
|
||||||
|
|
|
||||||
|
|
@ -948,11 +948,13 @@ function AddPlayerControl({
|
||||||
|
|
||||||
const trimmed = query.trim()
|
const trimmed = query.trim()
|
||||||
|
|
||||||
const matches = useMemo(() => {
|
// Alle poolspillere som ikke allerede er rostret på DETTE laget (spillere
|
||||||
if (!trimmed) return []
|
// på det andre laget blir værende med, vist nedgraderte -- se onOtherTeam
|
||||||
const q = trimmed.toLowerCase()
|
// 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
|
return pool
|
||||||
.filter((p) => p.display_name.toLowerCase().includes(q))
|
|
||||||
.map((p) => {
|
.map((p) => {
|
||||||
const onTeam = findPlayerTeam(p.id)
|
const onTeam = findPlayerTeam(p.id)
|
||||||
return {
|
return {
|
||||||
|
|
@ -962,7 +964,13 @@ function AddPlayerControl({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.filter((m) => !m.onThisTeam)
|
.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(
|
const exactMatch = useMemo(
|
||||||
() => pool.some((p) => p.display_name.toLowerCase() === trimmed.toLowerCase()),
|
() => pool.some((p) => p.display_name.toLowerCase() === trimmed.toLowerCase()),
|
||||||
|
|
@ -1038,9 +1046,8 @@ function AddPlayerControl({
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{trimmed.length > 0 && (
|
<div className="overflow-hidden rounded-2xl border border-border bg-background">
|
||||||
<div className="overflow-hidden rounded-2xl border border-border bg-background">
|
<ul className="flex max-h-64 flex-col overflow-auto">
|
||||||
<ul className="flex max-h-64 flex-col overflow-auto">
|
|
||||||
{matches.map(({ player, onOtherTeam }) => {
|
{matches.map(({ player, onOtherTeam }) => {
|
||||||
if (onOtherTeam) {
|
if (onOtherTeam) {
|
||||||
return (
|
return (
|
||||||
|
|
@ -1080,9 +1087,16 @@ function AddPlayerControl({
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
|
|
||||||
{matches.length === 0 && !showCreate && (
|
{matches.length === 0 && availableForThisTeam.length === 0 && (
|
||||||
<li className="px-4 py-3 text-center text-sm text-muted-foreground">
|
<li className="px-4 py-3 text-center text-sm text-muted-foreground">
|
||||||
Ingen treff.
|
{pool.length === 0
|
||||||
|
? "Ingen spillere i organisasjonen ennå -- opprett den første under."
|
||||||
|
: "Alle spillere i organisasjonen er allerede lagt til dette laget."}
|
||||||
|
</li>
|
||||||
|
)}
|
||||||
|
{matches.length === 0 && availableForThisTeam.length > 0 && trimmed.length > 0 && (
|
||||||
|
<li className="px-4 py-3 text-center text-sm text-muted-foreground">
|
||||||
|
Ingen treff blant eksisterende spillere.
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
@ -1135,9 +1149,8 @@ function AddPlayerControl({
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue