From 6abf89e8dbf491f1184cf2ccf92d5a1184099fbc Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Wed, 16 Apr 2025 10:49:11 +0200 Subject: [PATCH] Moved categories to the same scope as calendar events --- components/calendar/search/CalendarSearch.vue | 5 ++--- models/CalendarConfig.ts | 5 +++-- pages/my/calendars/[id].vue | 17 +++++------------ server/api/calendars/categories/query.get.ts | 5 +++++ server/api/calendars/query.get.ts | 5 +++++ stores/CalendarStore.ts | 4 ++-- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/components/calendar/search/CalendarSearch.vue b/components/calendar/search/CalendarSearch.vue index 92e4b80..531413b 100644 --- a/components/calendar/search/CalendarSearch.vue +++ b/components/calendar/search/CalendarSearch.vue @@ -26,7 +26,7 @@ import { import SearchList from "./lists/SearchList.vue" import type { Category } from "~/models/Category" -const { isAdvancedSearchOpen, allEvents } = storeToRefs(useCalendar()) +const { isAdvancedSearchOpen, allEvents, categories } = storeToRefs(useCalendar()) const { characters } = storeToRefs(useCharacters()) const searchInput = shallowRef() @@ -207,8 +207,7 @@ watch([currentPage, selectedEntity], () => { }) // Compute categories based on current selectedEntity -const { data: resCategories } = await useFetch("/api/calendars/categories/query") -const currentCategories = ref(resCategories.value?.data as Category[]) +const currentCategories = computed(() => categories.value) const selectedCategories = ref<(Category)[]>([]) const categoryFilterOpened = ref(false) diff --git a/models/CalendarConfig.ts b/models/CalendarConfig.ts index 159a4f2..8c8d7e8 100644 --- a/models/CalendarConfig.ts +++ b/models/CalendarConfig.ts @@ -5,7 +5,7 @@ import { dateSchema, type RPGDate } from "./Date" import type { World } from "./World" import type { ContentState } from "./Entity" import type { RPGColor } from "./Color" - +import type { Category } from "./Category" export interface CalendarConfig { months: CalendarMonth[] @@ -16,7 +16,8 @@ export interface Calendar extends CalendarConfig { id?: number shortId?: string name: string - events: CalendarEvent[] + events: CalendarEvent[], + categories: Category[] eventNb?: Array<{ count: number }> state: ContentState color?: RPGColor diff --git a/pages/my/calendars/[id].vue b/pages/my/calendars/[id].vue index a515e64..7d1ba95 100644 --- a/pages/my/calendars/[id].vue +++ b/pages/my/calendars/[id].vue @@ -1,7 +1,6 @@ @@ -62,7 +55,7 @@ watch([calendar, categories], () => { -
+
{{ calendar.data.name }} diff --git a/server/api/calendars/categories/query.get.ts b/server/api/calendars/categories/query.get.ts index 92da7ee..4627884 100644 --- a/server/api/calendars/categories/query.get.ts +++ b/server/api/calendars/categories/query.get.ts @@ -4,6 +4,7 @@ import type { Category } from "~/models/Category"; const querySchema = z.object({ id: z.number({ coerce: true }).positive().int().optional(), + calendarId: z.number({ coerce: true }).positive().int() }) export default defineEventHandler(async (event) => { @@ -24,5 +25,9 @@ export default defineEventHandler(async (event) => { return output.eq("id", query.id).limit(1).single() } + if (query.calendarId) { + output.eq("calendar_id", query.calendarId) + } + return output.overrideTypes() }) diff --git a/server/api/calendars/query.get.ts b/server/api/calendars/query.get.ts index d3adcb5..d5b67c1 100644 --- a/server/api/calendars/query.get.ts +++ b/server/api/calendars/query.get.ts @@ -52,6 +52,11 @@ export default defineEventHandler(async (event) => { category:calendar_event_categories!calendar_events_category_fkey (*), secondaryCategories:calendar_event_categories!calendar_event_categories_links (*) ), + categories:calendar_event_categories ( + id, + name, + color + ), eventNb:calendar_events(count), world:worlds ( id, diff --git a/stores/CalendarStore.ts b/stores/CalendarStore.ts index c5f775b..5e6545f 100644 --- a/stores/CalendarStore.ts +++ b/stores/CalendarStore.ts @@ -60,7 +60,7 @@ export const useCalendar = defineStore("calendar", () => { */ const months = ref([]) - function setActiveCalendar(calendarData: Calendar, categoryData: Category[]) { + function setActiveCalendar(calendarData: Calendar) { try { if (!calendarData.id) return @@ -88,7 +88,7 @@ export const useCalendar = defineStore("calendar", () => { months.value = calendarData.months baseEvents.value = calendarData.events - categories.value = categoryData + categories.value = calendarData.categories } catch (err) { console.log(err) }