Skip to content

Adding dynamic tabs

Mikron edited this page May 19, 2024 · 1 revision

The dynamic tabs are an extension (and replacement, once it has similar level of functionality) for the existing external reputation system (which is somewhat specialized and not well-documented).

Assumptions:

  • Each Epic operator will be able to configure any (there may be soft warnings, though, if someone goes overboard) number of customizable tabs to be filled with any data
  • The tab would, in the MVP version, have a title (spread across existing language versions) and a big text field for content (entered manually, JSON-based, akin to current take on CharacterSheet)
  • The content would be then interpreted according to the rules and rendered into a simple HTML structure to be displayed - headers, text, tables, lists
  • The content would have to be filtered for <script>, <iframe>,and other suspicious tags for safety; consider whether filtering links out is also reasonable
  • The tabs would be displayed between the default tabs (Descriptions and Organizations) and GM Data (which is supposed to always be on the end); until Reputation tabs are decommissioned, they will precede the custom tabs as well
  • Display order would be decided via configuration
  • Since this is configured on the Epic level, there should be a choice how to display a tab when there is no data - an empty tab with a message, or no tab at all
  • Initially, this will be done for Character

Possible extensions:

  • Adding an option to replace the manual input with an API call configuration, with URI and time between calls (manual "call now" button included, disabling automatic calls also possible); the possibility to edit the API-provided payload locally would be retained
  • Copying the solution for Group
  • Copying the solution for Story
  • Adapting the current CharacterSheet to use this solution instead
  • A possibility to create multiple tabs with a single configuration (adding another level in the payload structure)
Clone this wiki locally