Client Customisation API

Warning

The functionality detailed in this page needs more attention, both in terms of testing and code development. We expect there to be some bugs and possible API changes. If you rely on this functionality, we recommend you pin your installation of Auspice to a specific version. Please get in touch with us if you are using these customisations so that we can work with you!

This page details the available options and format of the customisations available at (client) build time. They are contained in a JSON file supplied to Auspice via

auspice build --extend <JSON>

Note

The hot-reloading development functionality does not work for code which is included via this client customisation mechanism. Thus, while you can run auspice develop --extend <JSON> it will not update as you may expect!

Available Customisations

The following are definable as top-level keys of the JSON file. A useful reference may be the customisation JSON file used by nextstrain.org.

  • sidebarTheme allows modifications to the aesthetics of the sidebar. See below.

  • navbarComponent a (relative) path to a JS file exporting a React component to be rendered as the nav bar. See below.

  • splashComponent a (relative) path to a JS file exporting a React component to be rendered as the splash page. See below.

  • browserTitle The browser title for the page. Defaults to “auspice” if not defined.

  • finePrint String of Markdown to add to the “fine print” at the bottom of pages.

  • plausibleDataDomain plausible.io analytics (see below)

  • googleAnalyticsKey You can specify a Google Analytics key to enable (some) analytics functionality. This is deprecated and will be removed from an upcoming release.

  • serverAddress Specify the address / prefix which the auspice client uses for API requests.

  • mapTiles Specify the address (and other information) for the tiles used to render the map.

Note

Please remember to make any modifications, including customisations described here, publicly available. See the previous page for more details.


Components

One way to extend Auspice is by replacing React components with your own custom components. These custom components will receive props defined here, which can be used to update the rendering of the component using the normal react lifecycle methods. Right now this is only available for the splash page and nav-bar components, whose interfaces are defined here.

Each component must be the default export of a javascript file which is specified in the (client) config JSON passed to Auspice at build time (auspice build or auspice develop).

Splash component

Define a custom splash page for Auspice. Please note that this is extremely expirimental and the interface is expected to change.

Build config:

{
  "splashComponent": "<relative path to javascript file>"
}

Where the javascript file contains a default export of a React component.

React Props available:

Prop

Type

Description

isMobile

Bool

available

Object

available datasets and narratives

browserDimensions

Object

Browser width & height

dispatch

function

access to redux’s dispatch mechanism

errorMessage

function

to do

changePage

function

to do


Specifying the API server address

By default, the client makes API requests (as detailed here) to “/charon/getAvailable”, “/charon/getDataset” etc. This is using the default server address of “/charon”. This can be changed by specifying serverAddress in the customisation JSON.

Note

If you specify a serverAddress on a different origin (protocol + domain + port) than Auspice, the server will need to send CORS headers to permit the requests from Auspice.


Custom Map tiles

Auspice uses Leaflet to render the map, which requires access to a tile set in order to render the geography. By default, auspice uses Mapbox for these tiles, and we make these available for local use of auspice. If you are distributing your own version of auspice (i.e. not running it locally) you must set an appropriate API address here so that the map can fetch suitable tiles.

{
  "mapTiles": {
    "api": "API address for Leaflet to fetch map tiles",
    "attribution": "HTML-formatted attribution string to be displayed in bottom-right-hand corner of map",
    "mapboxWordmark": "(optional) should the Mapbox logo be displayed in the bottom-left of the map? (boolean)"
  }
}

Please see this discussion post for a hands-on guide to setting custom map tile info. For some examples of other tile sets you may use, see the OpenStreetMap wiki, and please remember to adhere to the licenses and terms of use for each tile server. The API address contains parameters as specified by the Leaflet API.


Tracking Analytics

Auspice has in-built support for Plausible Analytics. To enable this you will need to provide the plausibleDataDomain in your extensions. The analytics are not included when running Auspice in development mode.

Auspice has support for Google Analytics but this is deprecated and will be removed in a future release. Google Analytics run when the googleAnalyticsKey extension is set and only run in production mode.