Posted on 5/9/2020
Tags: Programming
As a followup to graphing in Scriptable, I took some time to convert the script into a live web dashboard.

You can find the live dashboard here.

The main ways the code needed to change:

- Instead of loading data synchronously, it is now loaded asynchronously via XMLHttpRequest

- The document body is constructed dynamically once data loads (instead of being generated and then loaded into a web view in its complete form)

- canvasJS requires divs to be set up before charts are created. I needed to move div setup to happen inline instead of at the end of the script.

- Instead of generating JavaScript in string form to setup the charts, I set them up directly

  Code like this:
var result = ""
result += "{ x: new Date("+year+","+(month-1)+","+day+"), y: " + value + " },\n"
return result
  Became this:
var result = []
result.push({ x: new Date(year, month-1, day), y: value })
return result
- I limit the number of total charts because the full page was consuming too much memory which caused canvasJS to render completely blank charts, charts where some lines were missing, etc.

- I also fixed a bug so lines can be hidden by clicking them in the legend