OI Lume Viz

Open Innovations charting in Lume

At Open Innovations, we’ve started using the Lume Static Site Generator to build data microsites for people. This gives us the benefits of a static HTML site, with associated manageability, efficiency, and maintainability benefits, whilst giving us a framework for extending.

To support some of the more complex visualisations we undertake, we’ve encapsulated a number of our charting libraries in this. With each one we aim to keep bandwidth use down and only use limited front-end Javascript to add some interactivity.

Using the library

To use this in your Lume project, include the following in your Lume _config.js or _config.ts file. WARNING! This is strictly a pre-release version, and interfaces are very likely to change.

import oiCharts from 'oi-lume-charts/mod.ts';

site.use(oiCharts({
  assetPath: 'assets/oi',
  componentNamespace: 'oi',
}));

You can provide the following options:

  • assetPath path to locate the Javascript assets that are loaded (default: /assets)
  • componentNamespace namespace where the charts are accessible e.g. comp.oi.dashboard() (default: oi)

Visualisation types

TODO add some documentation!

dashboard

Creates a simple panelled dashboard. See dashboard samples.

chart.bar

Creates a simple horizontal bar chart. See bar chart samples.

chart.calendar

Creates a calendar chart to quickly see weekly or seasonal changes in data. See calendar chart samples.

chart.line

Creates a line chart. See line chart samples.

chart.line

Creates a ridgeline chart. See ridgeline chart samples.

chart.ranking

A chart which shows how the rank of something varies. See ranking chart samples.

chart.scatter

Similar to line charts but with lines turned off. See scatter chart samples.

chart.waffle

A heat map style grid. See waffle chart samples.

hierarchy.treemap

Creates a hierarchical treemap. See treemap samples.

map.zoomable

Creates a Leaflet-based, zoomable, slippy map. See zoomable map samples.

map.svg

Creates a simple SVG-based map using a Web Mercator projection. See SVG map samples.

map.hex_cartogram

Creates a hexagonal cartogram using HexJSON layouts. See hex cartogram samples.

table

Create heat-map tables and easily merge across rows. See table samples.

Testing

Run a test with the following command. Replace the file path with the tests you want to run. If you provide a directory path and Deno will find any test files in the directory and it’s sub-directories.

deno test --unstable --allow-read --no-check components/chart/bar.test.ts

To make Deno continually run these tests, add the --watch flag. This will then run each time the input files change.

deno test --unstable --allow-read --no-check --watch components/chart/bar.test.ts