tsackton / taelgar

0 stars 0 forks source link

Create a standard events table #13

Open msackton opened 9 months ago

msackton commented 9 months ago

It would be very nice if it was possible to embed chronologies in arbitrary notes and have the output appear in the web export. I believe that given (a) the degree to which the generation of the chronology depends on specific Javascript code that (b) is already available in Python this should be doable.

The idea would be to define a new dv.view just like get_PageDated which would be get_PageChronology. This would output a dv.table to the page (in Javascript) or an equivalent markdown table (in Python)

Open questions:


Potential approach:

  1. Define as the source for the page all #person, #organization, #item, #place, #event, or #timeline pages
  2. Define as the events to select any event that has a backlink to the current page or has a timelineFor frontmatter element that includes this page name
  3. Add synthesized whereabouts, lastSeenByParty, leaderOf, born/created, died/destroyed events

In Python, we would ideally exclude all events that happened AFTER the current date (but in Javascript we want to see them all, so as to see future dated events for game planning, etc). In Python we also exclude any page that has a campaign: tag that doesn't match the target campaign.

This creates a very powerful mechanism to defining the chronology of a page that is very flexible as to the output. The major downside is that it requires that you do not actually edit the chronology of a page on that page.

For example, if you wanted to define a handful of events for some NPC, you would need to (a) create a NPC.events page (b) add timelineFor: [NPC] to the NPC.events page (c) do the write the actual timeline on the NPC.events page

The same type of logic would apply to events for a city or place or organization.

The upside however is dramatic power. It becomes fairly straightforward to easily generate correct pages for NPCs where the chronology is automatically correct, excluding both campaign specific events (via the campaign: tag) and future events

msackton commented 9 months ago

For the question of "what events to include" it might be nice to allow for "all events between two dates" as well, i.e. for an "Events of the 1100s" page.

tsackton commented 9 months ago

I'm not convinced, I need to think about it a bit. A few initial gut reactions:

My kind of vague "end state" for NPC pages, which is a bit hand-wavy at the moment, is to have the bio summary, a short overview (often 1 sentence for minor NPCs), a description or a picture, a short biography/history (which might include some combination of free text, a chronology with in-page dates, and an auto-generated events table), a campaign info that has some autogenerated summary of when they've come up in session notes, party treasure, etc (wrapped in campaign blocks; this might also include a campaign-specific events table, actually), and then DM secrets of various kinds. Sometimes I've added things like relationships to others, but pretty haphazardly, although this can be very useful. Sometimes I have "rumors", again pretty haphazardly.

Anyway, will think some more over the long weekend.

msackton commented 9 months ago

The problem I'm thinking about is future events. The problem with your embedded timetables is that there is no good way to exclude events that haven't happened yet from an export.

Conceptually it is fairly easy to exclude campaign specific events, i.e. because those are "naturally" in a separate file.

I guess one approach would be to have 2 events tables.

You could do something like: image

That conceptually allows the best of both worlds. You have exported events table contain everything (because it duplicates the events from ""life events"") but you don't have to have a separate file.