Use this template to create a dashboard repository for your hub and then do the following:
- Add markdown content to
pages/ - Update
site-config.ymli.hubis the github repository (owner/repo) for your active hub. This example defaults to the CDC FluSight hub (cdcepi/FluSight-forecast-hub) ii.titleis the title of your dashboard iii.pagesis a list of additional optional pages you want included in the top bar after the home page (index.html) and forecasts (forecast.html). - Update
predtimechart-config.ymlaccording to the instructions at hub_predtimechart. - (Optional) Add
predevals-config.ymlif you have oracle output that you can use to generate predevals data. (See below for a link to the documentation and reichlab/flusight-dashboard for an example). - (Optional) If your hub has an S3 bucket associated with it (you can find
this in the
cloud.host.nameproperty of thehub-config/admin.jsonfile of your hub), and you are including adata.qmdpage, you can add this information to thehub-bucket-namekey in the YAML header of pages/data.qmd. This will automatically populate the data template with the s3 bucket name in the appropriate locations in the page.
Once these steps are performed, the workflows will automatically generate the
website on the gh-pages branch on your behalf. Once this branch is created,
you can activate your website to deploy from this branch.
Note
At the moment, the first time you create your repository, you will need to
manually switch on your github pages by going to <repo>/settings/pages and
selecting gh-pages as the branch to deploy from:
Edit the predtimechart-config.yml file to match your hub schema.
You can find instructions to do so in the PredTimeChart visualization guide.
If you do not want a forecasts visualization on your site, you can remove the
predtimechart-config.yml file.
Edit the predevals-config.yml file to match your hub schema.
You can find instructions to do so in the PredEvals visualization guide.
If you do not want an evaluations visualization on your site, you can remove the
predevals-config.yml file.
The site-config.yml Is a simplified form of A Quarto Website. This simplified form is intended to allow you to set up a dashboard website in a manner of minutes while allowing for flexibility of theme.
A simple configuration is presented in the template site-config.yml file
with three keys:
- hub: the GitHub slug to your active hub that contains quantile forecast data
- title: the title of your hub dashboard website
- pages: a YAML array that lists files relative to the
pagesdirectory that should be included in the dashboard site. The name of each page is encoded in thetitle:element of the file header (but this can be overridden with site customization).
Other than the hub field all remaining fields have the following mapping equivalents in the Quarto configuration file:
site-config.yml |
_quarto.yml |
|---|---|
.title |
.website.title |
.pages |
.website.navbar.left |
.html (optional) |
.format.html |
In the pages/ directory, you will see three pages:
index.qmdthis is the home page for the dashboard website. It is required.data.qmdthis is an optional template that provides instructions for how to access data for a hub locally or via S3. If you do not have an S3-enabled hub, you can remove this page (and remove it from thesite.ymlfile). If you have an S3-enabled hub, add your hub's bucket name to thehub-bucket-namekey. For example, if your are building a dashboard for the CDC flusight hub, then you would usehub-bucket-name: "cdcepi-flusight-forecast-hub"about.mdthis optional page demonstrates that you can add any extra pages to the dashboard site. You can either replace the page with useful information or you can remove it altogether (and remove it from thesite.ymlfile).
When the page is built with the hub dashboard site builder, this configuration file is merged with the default quarto config file. This allows for customization of the page. Below are examples of customization.
You can add icons to the page title bars with a YAML map. If you wanted to add an icon of people for the "about" page, you would use .pages.icon: "people-fill"
pages:
- icon: "people-fill"
href: "about.md"
- icon: "mortarboard-fill"
href: "citation.md"The default site is built on top of the Bootstrip yeti theme with custom CSS.
If you wanted to use a different theme, you can change it by setting .html.theme. You can reset the css by setting .html.css: null
html:
theme: "litera"
css: nullIf you wanted to add custom HTML to appear at the bottom or top of every page,
you can use .html.include-after-body or .html.include-before-body. Remeber
that all resources are relative to the pages/ directory, so if you wanted
to include an HTML snippet at the end of every page you would:
- add a file called
resources/after-body.htmlintopages/ - add this to your yaml:
html: include-after-body: "resources/after-body.html"
