Dynamic Spec Sheet¶
SciViz is used to build visualization dashboards, this is done through a single spec sheet. An example spec sheet named test_spec.yaml
is included in the test
directory.
Format¶
The SciViz spec sheet consists of some top level keys that are used to configure various options, as well as a pages
key, which consists of a dictionary of grids
, which contains a dictionary of components
. Here is a break down of the spec sheet, where optional keys are followed by a ?
:
SciViz
- The top level SciViz keyauth
- Config values for authenticationmode
- The authentication mode: database | oidc | noneendpoint?
- The endpoint to connect to for oidc authenticationdatabase?
- The database for oidc authenticationclient_id?
- The client ID for oidc authentication
pages
- A dictionary of SciViz page objects. View the Pages section for more informationroute?
- The route for SciViz to be hosted atwebsite_title?
- The title of the SciViz webpagefavicon_name?
- The path to a valid favicon file relative to thepublic
folderhostname?
- The name of the database host to preset the login pageheader?
- Config values for the header bannerimage_route
- The path to a valid image file relative to thepublic
foldertext
- The text to display at the header
login?
- Config values for the login pageimage_route
- The path to a valid image file relative to thepublic
folder
datadog?
- Config values to enable datadog RUMapplicationId
- The ID of the datadog application to connect toclientToken
- The datadog client token associated with the applicationservice
- The name of the datadog application
version?
- The SciViz spec version
Important Notes¶
- Page names under pages must have a unique name without spaces
- Page routes must be unique
- Grid names under grids must be unique without spaces
- Component names under components must be unique but can have spaces
- The routes of individual components must be unique
- Routes must start with a
/
- Every query needs a restriction, below is the default one.
python def restriction(**kwargs): return dict(**kwargs)
- Overlapping components at the same (x, y) does not work, the grid system will not allow overlapping components it will wrap them horizontally if there is enough space or bump them down to the next row.