update page titles to granblue.team

This commit is contained in:
Justin Edmund 2025-12-17 20:07:37 -08:00
parent d90d4e76bf
commit 54c1bd4e41
7 changed files with 47 additions and 10 deletions

View file

@ -41,7 +41,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>{data.user.username}'s Favorites | Hensei</title> <title>{data.user.username}'s Favorites / granblue.team</title>
</svelte:head> </svelte:head>
<section class="profile"> <section class="profile">

View file

@ -183,7 +183,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>Crew | Hensei</title> <title>Crew / granblue.team</title>
</svelte:head> </svelte:head>
<div class="page"> <div class="page">

View file

@ -90,7 +90,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>Create Crew | Hensei</title> <title>Create Crew / granblue.team</title>
</svelte:head> </svelte:head>
<div class="create-crew-page"> <div class="create-crew-page">

View file

@ -8,6 +8,8 @@
import { crewStore } from '$lib/stores/crew.store.svelte' import { crewStore } from '$lib/stores/crew.store.svelte'
import Button from '$lib/components/ui/Button.svelte' import Button from '$lib/components/ui/Button.svelte'
import Dialog from '$lib/components/ui/Dialog.svelte' import Dialog from '$lib/components/ui/Dialog.svelte'
import DropdownMenu from '$lib/components/ui/DropdownMenu.svelte'
import { DropdownMenu as DropdownMenuBase } from 'bits-ui'
import ModalHeader from '$lib/components/ui/ModalHeader.svelte' import ModalHeader from '$lib/components/ui/ModalHeader.svelte'
import ModalBody from '$lib/components/ui/ModalBody.svelte' import ModalBody from '$lib/components/ui/ModalBody.svelte'
import ModalFooter from '$lib/components/ui/ModalFooter.svelte' import ModalFooter from '$lib/components/ui/ModalFooter.svelte'
@ -15,7 +17,8 @@
import Select from '$lib/components/ui/Select.svelte' import Select from '$lib/components/ui/Select.svelte'
import Checkbox from '$lib/components/ui/checkbox/Checkbox.svelte' import Checkbox from '$lib/components/ui/checkbox/Checkbox.svelte'
import CrewHeader from '$lib/components/crew/CrewHeader.svelte' import CrewHeader from '$lib/components/crew/CrewHeader.svelte'
import { GW_ROUND_LABELS, type GwRound } from '$lib/types/api/gw' import EditScoreModal from '$lib/components/crew/EditScoreModal.svelte'
import { GW_ROUND_LABELS, type GwRound, type GwIndividualScore } from '$lib/types/api/gw'
import type { PageData } from './$types' import type { PageData } from './$types'
interface Props { interface Props {
@ -69,6 +72,7 @@
type: 'member' | 'phantom' type: 'member' | 'phantom'
totalScore: number totalScore: number
isRetired?: boolean isRetired?: boolean
scores: GwIndividualScore[] // Individual score records for this player
} }
const playerScores = $derived.by(() => { const playerScores = $derived.by(() => {
@ -82,7 +86,8 @@
name: member.user.username, name: member.user.username,
type: 'member', type: 'member',
totalScore: 0, totalScore: 0,
isRetired: member.retired isRetired: member.retired,
scores: []
}) })
} }
} }
@ -95,6 +100,7 @@
if (existing) { if (existing) {
existing.totalScore += score.score existing.totalScore += score.score
existing.scores.push(score)
} else { } else {
// Phantom player or member not in membersDuringEvent // Phantom player or member not in membersDuringEvent
scoreMap.set(playerId, { scoreMap.set(playerId, {
@ -102,7 +108,8 @@
name: score.playerName, name: score.playerName,
type: score.playerType, type: score.playerType,
totalScore: score.score, totalScore: score.score,
isRetired: score.member?.retired isRetired: score.member?.retired,
scores: [score]
}) })
} }
} }
@ -309,10 +316,19 @@
isSubmitting = false isSubmitting = false
} }
} }
// ==================== Edit Score Modal ====================
let showEditScoreModal = $state(false)
let editingPlayer = $state<PlayerScore | null>(null)
function openEditScoreModal(player: PlayerScore) {
editingPlayer = player
showEditScoreModal = true
}
</script> </script>
<svelte:head> <svelte:head>
<title>GW #{eventNumber} | Crew | Hensei</title> <title>GW #{eventNumber} / granblue.team</title>
</svelte:head> </svelte:head>
<div class="page"> <div class="page">
@ -391,6 +407,27 @@
<span class="player-type">Phantom</span> <span class="player-type">Phantom</span>
{/if} {/if}
<span class="player-score">{formatScore(player.totalScore)}</span> <span class="player-score">{formatScore(player.totalScore)}</span>
{#if crewStore.isOfficer && player.scores.length > 0}
<DropdownMenu>
{#snippet trigger({ props })}
<Button
variant="secondary"
size="small"
iconOnly
icon="ellipsis"
{...props}
/>
{/snippet}
{#snippet menu()}
<DropdownMenuBase.Item
class="dropdown-menu-item"
onclick={() => openEditScoreModal(player)}
>
Edit score...
</DropdownMenuBase.Item>
{/snippet}
</DropdownMenu>
{/if}
</li> </li>
{/each} {/each}
</ul> </ul>

View file

@ -77,7 +77,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>Join Crew | Hensei</title> <title>Join Crew / granblue.team</title>
</svelte:head> </svelte:head>
<div class="join-page"> <div class="join-page">

View file

@ -314,7 +314,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>Crew Members | Hensei</title> <title>Crew Members / granblue.team</title>
</svelte:head> </svelte:head>
<div class="page"> <div class="page">

View file

@ -142,7 +142,7 @@
</script> </script>
<svelte:head> <svelte:head>
<title>Crew Settings | Hensei</title> <title>Crew Settings / granblue.team</title>
</svelte:head> </svelte:head>
<div class="settings-page"> <div class="settings-page">