diff options
Diffstat (limited to '.rules/plan/calendar-phase-4.md')
| -rw-r--r-- | .rules/plan/calendar-phase-4.md | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/.rules/plan/calendar-phase-4.md b/.rules/plan/calendar-phase-4.md deleted file mode 100644 index c7b2c86..0000000 --- a/.rules/plan/calendar-phase-4.md +++ /dev/null @@ -1,84 +0,0 @@ -# Phase 4: Calendar View (`src/calendar/calendar-view.ts`) - -**Status:** Not started -**Depends on:** Phase 1 (daily-notes.ts), Phase 2 (calendar-state.ts), Phase 3 (calendar-renderer.ts) -**Output file:** `src/calendar/calendar-view.ts` - ---- - -## Overview - -The `ItemView` subclass — wires everything together. Creates the state and renderer, registers vault/workspace events, and implements all callback handlers for user interactions. - ---- - -## Design - -``` -VIEW_TYPE_CALENDAR = "ai-pulse-calendar" - -class CalendarView extends ItemView: - - state: CalendarState - - renderer: CalendarRenderer - - getViewType(): "ai-pulse-calendar" - getDisplayText(): "Calendar" - getIcon(): "calendar" - - onOpen(): - - Initialize state (today, reindex notes) - - Create renderer with callbacks - - Register vault events (create, delete, modify, rename) → reindex + re-render - - Register workspace events (file-open) → update active file highlight - - Start 60s heartbeat for day rollover - - Initial render - - onClose(): - - renderer.destroy() - - Clear intervals - - Callbacks: - onClickDay(date, event): - - If note exists → open it (respecting Ctrl+Click behavior setting — from fork) - - If not → create (with optional confirmation modal) then open - - onClickWeek(date, event): - - If weekly note exists → open it (future expansion) - - Same Ctrl+Click behavior setting (from fork) - - onClickMonth(date, event): // from fork - - If monthly note exists → open it - - If not → create then open (future expansion) - - onClickYear(date, event): // from fork - - If yearly note exists → open it - - If not → create then open (future expansion) - - onClickQuarter(date, event): // from fork - - If quarterly note exists → open it - - If not → create then open (future expansion) - - onContextMenuDay(date, event): - - Show file menu (delete, open in new tab, etc.) if note exists - - onContextMenuWeek/Month/Year/Quarter(date, event): // from fork - - Show file menu if note exists for that period - - onHoverDay/Week/Month/Year/Quarter(date, targetEl, isMetaPressed): // from fork - - Trigger link-hover for page preview when Ctrl/Cmd held - - revealActiveNote(): - - If active file is a daily note, set displayedMonth to that date - - Also check weekly, monthly, quarterly, and yearly note formats (from fork) -``` - ---- - -## Notes - -- Vault events to listen for: `create`, `delete`, `modify`, `rename` — all trigger `state.reindex()` + `renderer.render()`. -- The `file-open` workspace event updates `state.setActiveFile()`. -- Ctrl+Click behavior is controlled by the `calendarCtrlClickOpensInNewTab` setting (Phase 5). -- The confirmation modal before creating a note is controlled by `calendarConfirmBeforeCreate` (Phase 5). -- Week/month/year/quarter click handlers are initially no-ops (future expansion) except for daily notes. -- Hover preview uses Obsidian's `link-hover` workspace trigger. |
