From e978acfc717d18722ca93aa6a0e9f3d609137343 Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Tue, 20 Aug 2024 09:15:05 +0200 Subject: [PATCH] Refactored the store system --- components/calendar/Calendar.vue | 118 +----- components/calendar/CalendarEvent.vue | 5 +- components/calendar/CalendarEventDetails.vue | 5 +- components/calendar/CalendarMenuSubnav.vue | 5 +- components/calendar/CalendarMenuToday.vue | 4 +- components/calendar/form/CreateEvent.vue | 4 +- components/calendar/form/DeleteEvent.vue | 6 +- components/calendar/form/UpdateEvent.vue | 6 +- components/calendar/input/EventCategories.vue | 2 +- components/calendar/input/EventCategory.vue | 2 +- components/calendar/search/CalendarSearch.vue | 5 +- .../calendar/search/lists/EventCallout.vue | 5 +- components/calendar/state/monthly/DayTile.vue | 5 +- components/calendar/state/monthly/Layout.vue | 5 +- components/calendar/state/yearly/DayTile.vue | 9 +- components/global/sidebar/Sidebar.vue | 20 +- components/global/sidebar/SidebarProps.ts | 2 +- models/Date.ts | 2 +- .../[id]/calendar.vue => calendar/[id].vue} | 8 +- pages/i/index.vue | 3 - pages/i/world/{[id]/index.vue => [id].vue} | 5 +- pages/index.vue | 3 - server/api/calendars/events/query.get.ts | 12 +- server/api/calendars/query.get.ts | 65 ++-- stores/CalendarStore.ts | 336 +++++++++++++++++- stores/EventStore.ts | 44 ++- 26 files changed, 446 insertions(+), 240 deletions(-) rename pages/i/{world/[id]/calendar.vue => calendar/[id].vue} (53%) rename pages/i/world/{[id]/index.vue => [id].vue} (96%) diff --git a/components/calendar/Calendar.vue b/components/calendar/Calendar.vue index 09f93b1..10034a9 100644 --- a/components/calendar/Calendar.vue +++ b/components/calendar/Calendar.vue @@ -2,93 +2,15 @@ import { useCalendar } from '@/stores/CalendarStore' import { computed, type Component, type ComputedRef } from 'vue' -import { PhMagnifyingGlass } from '@phosphor-icons/vue' +// import { PhMagnifyingGlass } from '@phosphor-icons/vue' import MonthlyLayout from './state/monthly/Layout.vue' import CenturyLayout from './state/centennially/Layout.vue' import DecadeLayout from './state/decennially/Layout.vue' import YearLayout from './state/yearly/Layout.vue' -const route = useRoute() -const worldId = route.params.id +const { currentConfig, selectedDate, jumpToDate } = useCalendar() -const { setCalendarId, setMonths, setDefaultDate, currentConfig, selectedDate, jumpToDate } = useCalendar() -const { setEvents, setCategories } = useCalendarEvents() -const { setCharacters } = useCharacters() - -const { months } = storeToRefs(useCalendar()) - -const { data: calendar, pending: calPending, refresh: calRefresh } = await useLazyFetch(`/api/calendars/query?world_id=${worldId}`) -const { data: characters, pending: charPending, refresh: charRefresh } = await useLazyFetch(`/api/characters/query?world_id=${worldId}`) -const { data: categories, pending: categoryPending, refresh: categoryRefresh } = await useLazyFetch(`/api/calendars/categories/query`) - -if (!calendar.value) { - await calRefresh() -} else { - if (calendar.value?.data?.id) { - setCalendarId(calendar.value?.data?.id) - } - if (calendar.value?.data?.months) { - setMonths(calendar.value?.data?.months) - } - if (calendar.value?.data?.months) { - setMonths(calendar.value?.data?.months) - } - if (calendar.value?.data?.today) { - setDefaultDate(calendar.value?.data?.today) - } - if (calendar.value?.data?.events) { - setEvents(calendar.value?.data?.events) - } -} - -if (!categories.value) { - await categoryRefresh() -} else { - if (categories.value?.data) { - setCategories(categories.value?.data) - } -} - -if (!characters.value) { - await charRefresh() -} else { - if (characters.value?.data) { - setCharacters(characters.value?.data) - } -} - -watch(calPending, (newStatus) => { - if (!newStatus) { - if (calendar.value?.data?.id) { - setCalendarId(calendar.value?.data?.id) - } - if (calendar.value?.data?.months) { - setMonths(calendar.value?.data?.months) - } - if (calendar.value?.data?.today) { - setDefaultDate(calendar.value?.data?.today) - } - if (calendar.value?.data?.events) { - setEvents(calendar.value?.data?.events) - } - } -}) -watch(categoryPending, (newStatus) => { - if (!newStatus) { - if (categories.value?.data) { - setCategories(categories.value?.data) - } - } -}) -watch(charPending, (newStatus) => { - if (!newStatus) { - if (characters.value?.data) { - setCharacters(characters.value?.data) - } - } -}) - -const progressPercent = computed(() => 100 / [charPending.value, calPending.value, categoryPending.value].filter(Boolean).length) +// const { setCharacters } = useCharacters() const currentViewComponent: ComputedRef = computed(() => { switch (currentConfig.viewType) { @@ -107,42 +29,22 @@ const currentViewComponent: ComputedRef = computed(() => { } }) -const { setCurrentMenu } = useUiStore() - onMounted(() => { jumpToDate(selectedDate) - - setCurrentMenu([ - { - phIcon: shallowRef(PhMagnifyingGlass), - tooltip: 'Recherche avancée', - action: 'event-search' - } - ]) }) diff --git a/components/calendar/CalendarEvent.vue b/components/calendar/CalendarEvent.vue index 43a59f2..75b7513 100644 --- a/components/calendar/CalendarEvent.vue +++ b/components/calendar/CalendarEvent.vue @@ -8,9 +8,8 @@ const props = defineProps<{ tileDate: RPGDate }>() -const { areDatesIdentical } = useCalendar() -const { revealEditEventModal, revealDeleteEventModal } = useCalendarEvents() -const { lastActiveEvent } = storeToRefs(useCalendarEvents()) +const { areDatesIdentical, revealEditEventModal, revealDeleteEventModal } = useCalendar() +const { lastActiveEvent } = storeToRefs(useCalendar()) const spansMultipleDays = computed(() => Boolean(props.event.startDate && props.event.endDate)) const isStartEvent = computed(() => spansMultipleDays.value && areDatesIdentical(props.tileDate, props.event.startDate)) diff --git a/components/calendar/CalendarEventDetails.vue b/components/calendar/CalendarEventDetails.vue index b01ee2b..26eb60f 100644 --- a/components/calendar/CalendarEventDetails.vue +++ b/components/calendar/CalendarEventDetails.vue @@ -14,9 +14,8 @@ import { PhEye } from '@phosphor-icons/vue' -const { defaultDate, getFormattedDateTitle, jumpToDate, getRelativeString } = useCalendar() -const { revealEditEventModal, revealDeleteEventModal } = useCalendarEvents() -const { lastActiveEvent } = storeToRefs(useCalendarEvents()) +const { defaultDate, getFormattedDateTitle, jumpToDate, getRelativeString, revealEditEventModal, revealDeleteEventModal } = useCalendar() +const { lastActiveEvent } = storeToRefs(useCalendar()) const props = defineProps<{ event: CalendarEvent diff --git a/components/calendar/CalendarMenuSubnav.vue b/components/calendar/CalendarMenuSubnav.vue index aa87fd7..c467792 100644 --- a/components/calendar/CalendarMenuSubnav.vue +++ b/components/calendar/CalendarMenuSubnav.vue @@ -1,12 +1,9 @@ diff --git a/pages/i/index.vue b/pages/i/index.vue index a383967..12a6ab1 100644 --- a/pages/i/index.vue +++ b/pages/i/index.vue @@ -20,9 +20,6 @@ watch(user, (n, _o) => { navigateTo('/') } }) - -const { setCurrentMenu } = useUiStore() -setCurrentMenu([])