Skip to content
Lukas Obermann edited this page May 20, 2019 · 21 revisions

Welcome to Optolith Wiki!

This wiki consists of two parts: The roadmap and a documentation for helpers working on the data tables for the app.

Roadmap

You can view the roadmap by clicking on this link or by clicking on the link in the sidebar.

Documentation

A guide and help is listed below; you can access the different subpages for the different tables by clicking on the links on the right.

Usage

The property list items have parameters below their respective column header.

Property template with parameter types:

Column Header Occurrence

  • Type:
  • Description:
  • Column Header — Well ... the column header?!
  • Occurrence"univ" or "l10n" or empty — Whether the entry occurs in only the universal table or only the localization tables. Empty if entry occurs in all tables. Property definition might be splitted for "univ" and "l10n" tables when sharing the same column header.
  • Type — The type to use for the respective field. See what is meant by different types in the table below.
  • Description — What the column entries are used for and how they should be used. Referenced JSON interfaces can be found in TypeScript syntax below the respective table.

Side note: l10n is an abbreviation for localization.

For translators

TODO: Add more important and/or helpful notes for translators here

  • Only the properties without special occurence or those with occurence l10n are needed. Ignore univ-only properties (although they sometimes might help understanding the l10n part).
  • Based on the respective descriptions of the properties/table fields you can translate everything that is a (text) string. If a fixed list contains id: string, please do not transform it.
  • In the rare case you face a JSON string (those with surrounding {} and heaps of "), only translate the name property. Example: ... ,"name":"Test", ... you only need to translate Test – the text between the quotation marks. The remaining JSON must remain the same (you won't break the app if you delete syntax parts by mistake, though – it will warn me so I can fix it).
  • If there is an entry that is not available in the language you translate to, delete the table row so it won't show up in the app.
  • If you need Markdown formatting but the property's type is only string, please contact me.

Term definitions

term description
String ID The respective ID from the id column with a prefix. The specific prefix is mentioned in the id description in the table definition file.
Numeric ID The plain ID integer from the id column.
Selection-ID or SID Selections (like Trade Secrets, Languages or Hair Colors) do not have an ID prefix. To clarify that this ID is referenced to, the SID term is used. Mostly this ID is numeric-only, in case of skill lists the string ID of the respective entries is used as the SID.
ID If the term ID is used without a numeric or string and refers to a list item that has a string ID, the string ID is meant. If the term is used to refer to an item in an array, the index of the item (imagine a 1-based index) is used as the ID.

Type definitions

type description
string A plain text. Cannot be TRUE or FALSE.
"text" A specific string.
markdown A string that can be enhanced by Markdown. See Notes on Markdown below for further information.
number A plain number.
1 A specific number. Examples: 1, 2, 3.
boolean TRUE or FALSE. If field is empty (and type is not optional) this defaults to FALSE.
Array<T, S> A list of values of type T. The values are separated by S. The list can be of any length but it must contain at least one value. A list declaration can also include a description for the given type.

Example: Array<id: number, S>
Array<T, S, L> A list of values of type T. The values are separated by S. The list is of length L. A list declaration can also include a description for the given type.

Example: Array<id: number, S, L>
[ ... ]<S> This represents a list with a fixed length. The values are separated by S. The types in the type declaration are separated by ,. A fixed list declaration can also include descriptions for the given types.

A fixed list must contain at least two values. A value can also be declared as optional by either saying description?: type or type?, depending on if a description is provided or not. In case of an optional you do not need to provide the value but you can. Optional values can only appear at the end of a fixed list.

A fixed list can also have an open end, even though it hasn't got a fixed length anymore, although it's not as loose as the standard Array. An open end is marked by three leading dots before the type. An open end can also have a description.

Examples:
  • A list with a string as first element and a number as second element has the corresponding type [string, number]<S>.
  • [value: number, id: string]<S>
  • [number, ...string]<S>
  • [value: number, ...ids: string]<S>
T | U Used when T or U are possible types. Written in parenthesis when optional.

Examples:
  • string | number
  • string | Array<number, ,>
  • Array<string | number, ,>
  • (string | boolean)?

More examples:

  • If a string list's separator is a ,, the corresponding type would be Array<string, ,>.
  • The types [string, string]<&> and Array<string, &, 2> are equal.

If a ? follows a property's (full) type declaration, the property field can be empty. Example: boolean?.