Fantasy-Calendar
Fantasy-Calendar copied to clipboard
"West Marches" copy mode
Basically, it would be neat to have a layered copy function with event inheritance.
Copy Calendar A, and call it Calendar B, selecting the west marches mode.
Then Calendar B loads all the events from Calendar A on startup alongside its usual events, as well as any sibling calendars.
Seems honestly like a pretty straightforward thing to add - Just a "Has Many Through" relationship really.
So it's been a year and a half since I created this issue, and not much has changed except my understanding of the things that make this harder. Trying to have linked calendars support this would be a huge no-go due to the fact that we would need to simulate both calendars every time.
I think this would, instead, have to be a full-on separate "type" of calendar linking - a "linked clone", that uses the static_data
of the parent, with no ability to actually edit the underlying structure. I'm thinking the clone would be only available via "View", since you can add/edit events there and nothing else. Any locations/cycles/etc. would all be up to, and created by, the parent.
With that in mind, this probably won't be that difficult to implement. I can think of a few things that would need to happen:
- [ ] Server-side needs to support this at all, via a flag on the calendar and a way to shadow-load
static_data
. Basically, the calendar itself will just be a name and dynamic data, relying on the parent for everything else, bur served up to the frontend in the exact same format as usual - Just with parent events flagged or placed somewhere else. - [ ] The bits where we load calendar data into the browser would need to support two separate event payloads - One for the current calendar and one for the parent. That, or we include a "readonly" or "parent" flag. Or even just compare calendar IDs? Lotta ways to differentiate between parent/child events in the same payload.
- [ ] The event-placement/rendering bits need to be able to merge or handle both payloads ... Unless we choose to use a single payload.
- [ ] The "View event" UI needs to disable the edit button and commenting on parent-calendar events
- [ ] The right-click menu need updating to remove any options that update parent-calendar events
... But I think that would do it. This could likely be knocked out really quickly after the discord and moon stuff for 2.1.0.