Commit Graph

7 Commits

Author SHA1 Message Date
timeTable2 dev
02cfdda900 refactor: extract date.js, event-factory.js, split.js; use shared date helpers in recur/organize
- date.js: single source of truth for ISO date formatting/arithmetic
  (toISODate, parseISODate, addDays, daysBetween, todayISO, nowCompactTimestamp)
- event-factory.js: createEvent/cloneEvent (structuredClone with JSON fallback)
- split.js: splitRecurringEvent pure function using intervalDays from recur.js
- recur.js: replaced local toISO() and inline Date math with date.js helpers
- organize.js: replaced inline date formatting and gap math with date.js helpers,
  extracted buildGrid() helper and byDate comparator
2026-07-13 20:01:10 +08:00
timeTable2 dev
3af6b856e3 fix: store VTIMEZONEs as raw jCal arrays for Vue reactivity safety
ICAL.Component instances break when wrapped by Vue's reactive proxy
(the .jCal getter returns undefined through the proxy, causing
serializeICS to crash with 'Cannot read properties of undefined').
Storing vtz.jCal (plain arrays) instead makes meta fully serializable
for both reactivity and JSON snapshot cloning.
2026-07-13 18:53:01 +08:00
timeTable2 dev
dc70a04b54 feat: port GCD dedup algorithm from ical_organizer.py 2026-07-13 18:36:29 +08:00
timeTable2 dev
e187337127 feat: add recurrence grid expansion 2026-07-13 18:32:46 +08:00
timeTable2 dev
7e708932b1 feat: implement serializeICS with round-trip support 2026-07-13 18:30:52 +08:00
timeTable2 dev
138b89e3bf feat: implement parseICS with ical.js 2026-07-13 18:26:14 +08:00
timeTable2 dev
76e08d67d8 feat: add weekday constants and helpers 2026-07-13 18:22:57 +08:00