add retired toggle to member/phantom edit dialog
This commit is contained in:
parent
7fdb07cacf
commit
7f9398efbd
2 changed files with 35 additions and 18 deletions
|
|
@ -114,9 +114,11 @@ export interface UpdatePhantomPlayerInput {
|
||||||
granblueId?: string
|
granblueId?: string
|
||||||
notes?: string
|
notes?: string
|
||||||
joinedAt?: string
|
joinedAt?: string
|
||||||
|
retired?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface UpdateMembershipInput {
|
export interface UpdateMembershipInput {
|
||||||
role?: CrewRole
|
role?: CrewRole
|
||||||
joinedAt?: string
|
joinedAt?: string
|
||||||
|
retired?: boolean
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@
|
||||||
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'
|
||||||
|
import SettingsRow from '$lib/components/ui/SettingsRow.svelte'
|
||||||
|
import Switch from '$lib/components/ui/switch/Switch.svelte'
|
||||||
import CrewHeader from '$lib/components/crew/CrewHeader.svelte'
|
import CrewHeader from '$lib/components/crew/CrewHeader.svelte'
|
||||||
import ScoutUserModal from '$lib/components/crew/ScoutUserModal.svelte'
|
import ScoutUserModal from '$lib/components/crew/ScoutUserModal.svelte'
|
||||||
import BulkPhantomModal from '$lib/components/crew/BulkPhantomModal.svelte'
|
import BulkPhantomModal from '$lib/components/crew/BulkPhantomModal.svelte'
|
||||||
|
|
@ -101,11 +103,12 @@
|
||||||
let confirmAction = $state<'remove' | 'promote' | 'demote' | null>(null)
|
let confirmAction = $state<'remove' | 'promote' | 'demote' | null>(null)
|
||||||
let selectedMember = $state<CrewMembership | null>(null)
|
let selectedMember = $state<CrewMembership | null>(null)
|
||||||
|
|
||||||
// Dialog state for editing join date
|
// Dialog state for editing member/phantom
|
||||||
let editJoinDateDialogOpen = $state(false)
|
let editDialogOpen = $state(false)
|
||||||
let editingMember = $state<CrewMembership | null>(null)
|
let editingMember = $state<CrewMembership | null>(null)
|
||||||
let editingPhantom = $state<PhantomPlayer | null>(null)
|
let editingPhantom = $state<PhantomPlayer | null>(null)
|
||||||
let editJoinDate = $state('')
|
let editJoinDate = $state('')
|
||||||
|
let editRetired = $state(false)
|
||||||
|
|
||||||
// Dialog state for scout modal
|
// Dialog state for scout modal
|
||||||
let scoutModalOpen = $state(false)
|
let scoutModalOpen = $state(false)
|
||||||
|
|
@ -193,23 +196,25 @@
|
||||||
confirmAction = null
|
confirmAction = null
|
||||||
}
|
}
|
||||||
|
|
||||||
// Join date editing
|
// Member/phantom editing
|
||||||
function openEditJoinDateDialog(member: CrewMembership) {
|
function openEditMemberDialog(member: CrewMembership) {
|
||||||
editingMember = member
|
editingMember = member
|
||||||
editingPhantom = null
|
editingPhantom = null
|
||||||
// Format date for input
|
// Format date for input
|
||||||
editJoinDate = member.joinedAt ? member.joinedAt.split('T')[0] ?? '' : ''
|
editJoinDate = member.joinedAt ? member.joinedAt.split('T')[0] ?? '' : ''
|
||||||
editJoinDateDialogOpen = true
|
editRetired = member.retired
|
||||||
|
editDialogOpen = true
|
||||||
}
|
}
|
||||||
|
|
||||||
function openEditPhantomJoinDateDialog(phantom: PhantomPlayer) {
|
function openEditPhantomDialog(phantom: PhantomPlayer) {
|
||||||
editingPhantom = phantom
|
editingPhantom = phantom
|
||||||
editingMember = null
|
editingMember = null
|
||||||
editJoinDate = phantom.joinedAt ? phantom.joinedAt.split('T')[0] ?? '' : ''
|
editJoinDate = phantom.joinedAt ? phantom.joinedAt.split('T')[0] ?? '' : ''
|
||||||
editJoinDateDialogOpen = true
|
editRetired = phantom.retired
|
||||||
|
editDialogOpen = true
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleSaveJoinDate() {
|
async function handleSaveEdit() {
|
||||||
if (!crewStore.crew) return
|
if (!crewStore.crew) return
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -217,12 +222,13 @@
|
||||||
await updateMembershipMutation.mutateAsync({
|
await updateMembershipMutation.mutateAsync({
|
||||||
crewId: crewStore.crew.id,
|
crewId: crewStore.crew.id,
|
||||||
membershipId: editingMember.id,
|
membershipId: editingMember.id,
|
||||||
input: { joinedAt: editJoinDate }
|
input: { joinedAt: editJoinDate, retired: editRetired }
|
||||||
})
|
})
|
||||||
} else if (editingPhantom) {
|
} else if (editingPhantom) {
|
||||||
// Call the phantom update directly through the adapter
|
// Call the phantom update directly through the adapter
|
||||||
await crewAdapter.updatePhantom(crewStore.crew.id, editingPhantom.id, {
|
await crewAdapter.updatePhantom(crewStore.crew.id, editingPhantom.id, {
|
||||||
joinedAt: editJoinDate
|
joinedAt: editJoinDate,
|
||||||
|
retired: editRetired
|
||||||
})
|
})
|
||||||
// Invalidate members query
|
// Invalidate members query
|
||||||
membersQuery.refetch()
|
membersQuery.refetch()
|
||||||
|
|
@ -230,13 +236,14 @@
|
||||||
// Invalidate GW event queries since membersDuringEvent depends on join dates
|
// Invalidate GW event queries since membersDuringEvent depends on join dates
|
||||||
queryClient.invalidateQueries({ queryKey: ['crew', 'gw'] })
|
queryClient.invalidateQueries({ queryKey: ['crew', 'gw'] })
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to update join date:', error)
|
console.error('Failed to update:', error)
|
||||||
}
|
}
|
||||||
|
|
||||||
editJoinDateDialogOpen = false
|
editDialogOpen = false
|
||||||
editingMember = null
|
editingMember = null
|
||||||
editingPhantom = null
|
editingPhantom = null
|
||||||
editJoinDate = ''
|
editJoinDate = ''
|
||||||
|
editRetired = false
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDeletePhantomDialog(phantom: PhantomPlayer) {
|
function openDeletePhantomDialog(phantom: PhantomPlayer) {
|
||||||
|
|
@ -401,7 +408,7 @@
|
||||||
{#snippet menu()}
|
{#snippet menu()}
|
||||||
<DropdownMenuBase.Item
|
<DropdownMenuBase.Item
|
||||||
class="dropdown-menu-item"
|
class="dropdown-menu-item"
|
||||||
onclick={() => openEditJoinDateDialog(member)}
|
onclick={() => openEditMemberDialog(member)}
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
</DropdownMenuBase.Item>
|
</DropdownMenuBase.Item>
|
||||||
|
|
@ -479,7 +486,7 @@
|
||||||
{#snippet menu()}
|
{#snippet menu()}
|
||||||
<DropdownMenuBase.Item
|
<DropdownMenuBase.Item
|
||||||
class="dropdown-menu-item"
|
class="dropdown-menu-item"
|
||||||
onclick={() => openEditPhantomJoinDateDialog(phantom)}
|
onclick={() => openEditPhantomDialog(phantom)}
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
</DropdownMenuBase.Item>
|
</DropdownMenuBase.Item>
|
||||||
|
|
@ -544,8 +551,8 @@
|
||||||
{/snippet}
|
{/snippet}
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
<!-- Edit Join Date Dialog -->
|
<!-- Edit Member/Phantom Dialog -->
|
||||||
<Dialog bind:open={editJoinDateDialogOpen}>
|
<Dialog bind:open={editDialogOpen}>
|
||||||
{#snippet children()}
|
{#snippet children()}
|
||||||
<ModalHeader title="Edit player" />
|
<ModalHeader title="Edit player" />
|
||||||
|
|
||||||
|
|
@ -560,15 +567,23 @@
|
||||||
This date is used to determine which events a member was active for when adding
|
This date is used to determine which events a member was active for when adding
|
||||||
historical GW scores.
|
historical GW scores.
|
||||||
</p>
|
</p>
|
||||||
|
<SettingsRow
|
||||||
|
title="Retired"
|
||||||
|
subtitle="This player is no longer a part of the crew"
|
||||||
|
>
|
||||||
|
{#snippet control()}
|
||||||
|
<Switch bind:checked={editRetired} name="retired" />
|
||||||
|
{/snippet}
|
||||||
|
</SettingsRow>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
|
|
||||||
<ModalFooter
|
<ModalFooter
|
||||||
onCancel={() => (editJoinDateDialogOpen = false)}
|
onCancel={() => (editDialogOpen = false)}
|
||||||
primaryAction={{
|
primaryAction={{
|
||||||
label: 'Save',
|
label: 'Save',
|
||||||
onclick: handleSaveJoinDate,
|
onclick: handleSaveEdit,
|
||||||
disabled: !editJoinDate
|
disabled: !editJoinDate
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue