From 2ffaf0ef0911ac7a9def1da711febf8cff4a0728 Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Thu, 21 May 2026 17:50:40 +0100 Subject: [PATCH] refactor(events): expand eventType taxonomy with central config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the four-value enum (community/workshop/social/showcase) with seven values: talk, workshop, community-meetup, coworking, peer-session, skills-share, info-session. Default is now community-meetup. Adds app/config/eventTypes.js as the single source of truth for value→label mapping. Updates the model enum, seed scripts, and admin event list/filter + admin dashboard to read from it via EVENT_TYPES and eventTypeLabel(). --- app/config/eventTypes.js | 21 +++++++++++++++++++++ app/pages/admin/events/index.vue | 29 ++++++++++++++--------------- app/pages/admin/index.vue | 4 +++- scripts/seed-events.js | 8 ++++---- scripts/seed-series-events.js | 4 ++-- server/models/event.js | 12 ++++++++++-- 6 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 app/config/eventTypes.js diff --git a/app/config/eventTypes.js b/app/config/eventTypes.js new file mode 100644 index 0000000..e256338 --- /dev/null +++ b/app/config/eventTypes.js @@ -0,0 +1,21 @@ +// Central configuration for Ghost Guild event types. +// Keep values in sync with the `eventType` enum in server/models/event.js. +export const EVENT_TYPES = [ + { value: "talk", label: "Talk / Presentation" }, + { value: "workshop", label: "Workshop" }, + { value: "community-meetup", label: "Community Meetup" }, + { value: "coworking", label: "Co-working Session" }, + { value: "peer-session", label: "Peer Session" }, + { value: "skills-share", label: "Skills Share" }, + { value: "info-session", label: "Info Session" }, +]; + +export const EVENT_TYPE_VALUES = EVENT_TYPES.map((t) => t.value); + +const labelLookup = Object.fromEntries( + EVENT_TYPES.map((t) => [t.value, t.label]), +); + +export function eventTypeLabel(value) { + return labelLookup[value] || value || ""; +} diff --git a/app/pages/admin/events/index.vue b/app/pages/admin/events/index.vue index 9cf458d..de6f521 100644 --- a/app/pages/admin/events/index.vue +++ b/app/pages/admin/events/index.vue @@ -16,15 +16,12 @@
- +
@@ -71,7 +68,7 @@
- +
{{ event.title }} @@ -89,7 +86,7 @@
- {{ event.eventType }} + {{ eventTypeLabel(event.eventType) }} {{ formatDate(event) }} @@ -128,9 +125,9 @@ View - - - + + + @@ -169,7 +166,7 @@
- +
{{ event.title }} @@ -187,7 +184,7 @@
- {{ event.eventType }} + {{ eventTypeLabel(event.eventType) }} {{ formatDate(event) }} @@ -226,9 +223,9 @@ View - - - + + + @@ -267,6 +264,8 @@