From c4712cea77a94a06efb963fd9e1b7a31eeca4cdf Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Tue, 14 Apr 2026 21:48:07 +0200 Subject: [PATCH] feat: edit event type label in dialog, drop non-functional status field Made-with: Cursor --- api/tests/Feature/Event/EventTest.php | 22 +++++++ .../src/components/events/EditEventDialog.vue | 57 +++++++++---------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/api/tests/Feature/Event/EventTest.php b/api/tests/Feature/Event/EventTest.php index 530c6e49..45635bd3 100644 --- a/api/tests/Feature/Event/EventTest.php +++ b/api/tests/Feature/Event/EventTest.php @@ -201,6 +201,28 @@ class EventTest extends TestCase ->assertJson(['data' => ['name' => 'Updated Festival']]); } + public function test_org_admin_can_update_event_type_label(): void + { + $event = Event::factory()->series()->create([ + 'organisation_id' => $this->organisation->id, + 'event_type_label' => 'Oud label', + ]); + + Sanctum::actingAs($this->orgAdmin); + + $response = $this->putJson("/api/v1/organisations/{$this->organisation->id}/events/{$event->id}", [ + 'event_type_label' => 'Schaatsseizoen', + ]); + + $response->assertOk() + ->assertJsonPath('data.event_type_label', 'Schaatsseizoen'); + + $this->assertDatabaseHas('events', [ + 'id' => $event->id, + 'event_type_label' => 'Schaatsseizoen', + ]); + } + public function test_event_manager_can_update_event(): void { $event = Event::factory()->create(['organisation_id' => $this->organisation->id]); diff --git a/apps/app/src/components/events/EditEventDialog.vue b/apps/app/src/components/events/EditEventDialog.vue index 5a6d1bd0..9e9e93ac 100644 --- a/apps/app/src/components/events/EditEventDialog.vue +++ b/apps/app/src/components/events/EditEventDialog.vue @@ -2,7 +2,7 @@ import { VForm } from 'vuetify/components/VForm' import { useUpdateEvent } from '@/composables/api/useEvents' import { requiredValidator } from '@core/utils/validators' -import type { EventStatus, EventItem } from '@/types/event' +import type { EventItem } from '@/types/event' const props = defineProps<{ event: EventItem @@ -20,8 +20,8 @@ const form = ref({ start_date: '', end_date: '', timezone: '', - status: '' as EventStatus, sub_event_label: '' as string | null, + event_type_label: '', }) const errors = ref>({}) @@ -50,16 +50,6 @@ const timezoneOptions = [ { title: 'UTC', value: 'UTC' }, ] -const statusOptions: { title: string; value: EventStatus }[] = [ - { title: 'Draft', value: 'draft' }, - { title: 'Published', value: 'published' }, - { title: 'Registration Open', value: 'registration_open' }, - { title: 'Build-up', value: 'buildup' }, - { title: 'Show Day', value: 'showday' }, - { title: 'Tear-down', value: 'teardown' }, - { title: 'Closed', value: 'closed' }, -] - const endDateRule = (v: string) => { if (!v) return 'Einddatum is verplicht' if (form.value.start_date && v < form.value.start_date) { @@ -75,8 +65,8 @@ watch(() => props.event, (ev) => { start_date: ev.start_date, end_date: ev.end_date, timezone: ev.timezone, - status: ev.status, sub_event_label: ev.sub_event_label ?? '', + event_type_label: ev.event_type_label ?? '', } }, { immediate: true }) @@ -86,11 +76,20 @@ function onSubmit() { errors.value = {} + const trimmedTypeLabel = form.value.event_type_label.trim() + const payload = { - ...form.value, + name: form.value.name, + slug: form.value.slug, + start_date: form.value.start_date, + end_date: form.value.end_date, + timezone: form.value.timezone, sub_event_label: isFestivalOrSeries.value && form.value.sub_event_label ? form.value.sub_event_label : null, + ...(isFestivalOrSeries.value + ? { event_type_label: trimmedTypeLabel === '' ? null : trimmedTypeLabel } + : {}), } updateEvent(payload, { @@ -159,6 +158,20 @@ function onSubmit() { autocomplete="one-time-code" /> + + + - + - - -