From 02546c12f1f8dffc55cb20bd9360c5fbb45095e8 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Tue, 21 Jul 2026 13:06:27 +0800 Subject: [PATCH] refactor: migrate frontend calendar page --- .../src/components/calendar/CalendarGrid.vue | 82 +++++ .../src/components/calendar/CalendarItem.vue | 67 ++++ .../src/components/calendar/OwnedItem.vue | 38 ++ .../src/components/calendar/ScheduleItem.vue | 81 ++++ .../src/components/calendar/ScheduleList.vue | 57 +++ .../src/components/calendar/SharedItem.vue | 46 +++ frontend/src/components/calendar/types.ts | 25 ++ frontend/src/views/Calendar.vue | 346 +++++++++++++++++- 8 files changed, 731 insertions(+), 11 deletions(-) create mode 100644 frontend/src/components/calendar/CalendarGrid.vue create mode 100644 frontend/src/components/calendar/CalendarItem.vue create mode 100644 frontend/src/components/calendar/OwnedItem.vue create mode 100644 frontend/src/components/calendar/ScheduleItem.vue create mode 100644 frontend/src/components/calendar/ScheduleList.vue create mode 100644 frontend/src/components/calendar/SharedItem.vue create mode 100644 frontend/src/components/calendar/types.ts diff --git a/frontend/src/components/calendar/CalendarGrid.vue b/frontend/src/components/calendar/CalendarGrid.vue new file mode 100644 index 0000000..0aa93b1 --- /dev/null +++ b/frontend/src/components/calendar/CalendarGrid.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/frontend/src/components/calendar/CalendarItem.vue b/frontend/src/components/calendar/CalendarItem.vue new file mode 100644 index 0000000..2d0efe2 --- /dev/null +++ b/frontend/src/components/calendar/CalendarItem.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/frontend/src/components/calendar/OwnedItem.vue b/frontend/src/components/calendar/OwnedItem.vue new file mode 100644 index 0000000..cc79d3b --- /dev/null +++ b/frontend/src/components/calendar/OwnedItem.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/frontend/src/components/calendar/ScheduleItem.vue b/frontend/src/components/calendar/ScheduleItem.vue new file mode 100644 index 0000000..6563ebd --- /dev/null +++ b/frontend/src/components/calendar/ScheduleItem.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/frontend/src/components/calendar/ScheduleList.vue b/frontend/src/components/calendar/ScheduleList.vue new file mode 100644 index 0000000..e276fa3 --- /dev/null +++ b/frontend/src/components/calendar/ScheduleList.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/frontend/src/components/calendar/SharedItem.vue b/frontend/src/components/calendar/SharedItem.vue new file mode 100644 index 0000000..7724543 --- /dev/null +++ b/frontend/src/components/calendar/SharedItem.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/frontend/src/components/calendar/types.ts b/frontend/src/components/calendar/types.ts new file mode 100644 index 0000000..43af935 --- /dev/null +++ b/frontend/src/components/calendar/types.ts @@ -0,0 +1,25 @@ +/** A single expanded event occurrence placed into a calendar cell / schedule row. */ +export interface ScheduleEventItem { + uuid: string + belongTo: string + title: string + description: string + color: string + isVisible: boolean + isLocked: boolean + loopText: string + timezoneWarning: boolean + start: string + end: string +} + +/** One cell of the 6x7 month grid (also one day group in the schedule list). */ +export interface CalendarCell { + /** 1-based month. */ + month: number + day: number + /** 1-based day of week, Monday = 1 ... Sunday = 7. */ + dayOfWeek: number + isCurrentMonth: boolean + events: ScheduleEventItem[] +} diff --git a/frontend/src/views/Calendar.vue b/frontend/src/views/Calendar.vue index 9925716..04eed4a 100644 --- a/frontend/src/views/Calendar.vue +++ b/frontend/src/views/Calendar.vue @@ -1,26 +1,350 @@