Luke Prior
Luke Prior
I think it's a good idea to modify the code such that generating such data is easily possible. I'm not sure if it's worth storing all this data as it...
Hmmm actually possibly we could generate and publish this file using the release function of GitHub solves the repo size issue.
You can see what I mean about releases here: https://github.com/LukePrior/open-energy-tracker/releases (note some logic unrelated to the daily release is failing that's why actions aren't fully running) We could do a...
Yeah I think the file size should be fine either way however.
This has been merged in and will be generated going forwards, but it might be a while until I have time to get the website updated to show it.
Can find most of them here: https://shields.io/badges
I like the idea of generating graphs, but I'm not sure if any service exists where a link to a JSON file can be provided in the URL and a...
I tried making a graph. Had to import data into google sheets for use with quickchart. https://quickchart.io/chart/render/sf-fce67a4f-2c64-41d8-aa96-9f584e67a4ef [Online editor](https://quickchart.io/sandbox/#%7B%22chart%22%3A%22%7B%5Cn%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%5C%22data%5C%22%3A%20%7B%5Cn%20%20%20%20%5C%22datasets%5C%22%3A%20%5B%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22FTTN%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%2337a3eb%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%239bd0f4%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22HFC%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%23ff6384%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23ffb1c1%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22FTTP%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%23fe9f41%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23fecf9e%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22FTTC%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%23fecc56%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23ffe6aa%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22WIRELESS%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%234bc0c0%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23a4dedf%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22SATELLITE%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%239966ff%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23ccb2ff%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22fill%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%202%2C%5Cn%20%20%20%20%20%20%20%20%5C%22type%5C%22%3A%20%5C%22line%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22label%5C%22%3A%20%5C%22FTTB%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%23c9cace%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23e5e5e6%5C%22%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%5D%2C%5Cn%20%20%20%20%5C%22labels%5C%22%3A%20%5B%5D%5Cn%20%20%7D%2C%5Cn%20%20%5C%22options%5C%22%3A%20%7B%5Cn%20%20%20%20%5C%22layout%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22padding%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22right%5C%22%3A%20100%2C%5Cn%20%20%20%20%20%20%20%20%5C%22top%5C%22%3A%2050%2C%5Cn%20%20%20%20%20%20%20%20%5C%22bottom%5C%22%3A%2050%2C%5Cn%20%20%20%20%20%20%20%20%5C%22left%5C%22%3A%20100%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%2C%5Cn%20%20%20%20%5C%22scales%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22y%5C%22%3A%20%5Cn%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22display%5C%22%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22stacked%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22beginAtZero%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%2C%5Cn%20%20%20%20%5C%22plugins%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22datalabels%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22display%5C%22%3A%20function(context)%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20const%20chartWidth%20%3D%20context.chart.width%20-%20200%3B%5Cn%20%20%20%20%20%20%20%20%20%20const%20labels%20%3D%20context.chart.data.labels.length%3B%5Cn%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20You%20can%20adjust%20this%20threshold%20based%20on%20your%20specific%20needs%5Cn%20%20%20%20%20%20%20%20%20%20const%20minWidthToShowLabels%20%3D%20300%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Calculate%20the%20width%20of%20each%20label%5Cn%20%20%20%20%20%20%20%20%20%20const%20labelWidth%20%3D%20chartWidth%20%2F%20labels%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Calculate%20the%20width%20required%20to%20display%20one%20label%20comfortably%5Cn%20%20%20%20%20%20%20%20%20%20const%20minLabelWidth%20%3D%20150%3B%20%2F%2F%20Adjust%20this%20value%20based%20on%20the%20minimum%20width%20you%20want%20for%20a%20label%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Calculate%20the%20maximum%20number%20of%20labels%20that%20can%20fit%20in%20the%20chart%5Cn%20%20%20%20%20%20%20%20%20%20const%20maxLabelsToFit%20%3D%20Math.floor(chartWidth%20%2F%20minLabelWidth)%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Calculate%20the%20number%20of%20labels%20to%20display%20evenly%20across%20the%20chart%5Cn%20%20%20%20%20%20%20%20%20%20const%20visibleLabels%20%3D%20Math.min(labels%2C%20maxLabelsToFit)%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Calculate%20the%20step%20size%20to%20evenly%20distribute%20the%20labels%5Cn%20%20%20%20%20%20%20%20%20%20const%20stepSize%20%3D%20Math.floor(labels%20%2F%20visibleLabels)%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Determine%20if%20the%20current%20label%20should%20be%20displayed%20based%20on%20the%20step%20size%5Cn%20%20%20%20%20%20%20%20%20%20const%20displayLabel%20%3D%20(index)%20%3D%3E%20((labels%20-%201%20-%20index)%20%25%20stepSize%20%3D%3D%3D%200)%3B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%2F%2F%20Hide%20labels%20that%20shouldn't%20be%20displayed%20based%20on%20the%20step%20size%5Cn%20%20%20%20%20%20%20%20%20%20return%20chartWidth%20%3E%20minWidthToShowLabels%20%26%26%20displayLabel(context.dataIndex)%3B%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22align%5C%22%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22anchor%5C%22%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22backgroundColor%5C%22%3A%20%5C%22%23eee%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderColor%5C%22%3A%20%5C%22%23ddd%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderRadius%5C%22%3A%206%2C%5Cn%20%20%20%20%20%20%20%20%5C%22borderWidth%5C%22%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%5C%22padding%5C%22%3A%204%2C%5Cn%20%20%20%20%20%20%20%20%5C%22color%5C%22%3A%20%5C%22%23666666%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22font%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22family%5C%22%3A%20%5C%22sans-serif%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22size%5C%22%3A%2010%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22style%5C%22%3A%20%5C%22normal%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22formatter%5C%22%3A%20function(value%2C%20context)%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20const%20current%20%3D%20parseInt(value)%3B%5Cn%20%20%20%20%20%20%20%20%20%20const%20total%20%3D%20context.chart.data.datasets.reduce((acc%2C%20data)%20%3D%3E%20acc%20%2B%20parseInt(data.data%5Bcontext.dataIndex%5D)%2C%200)%3B%5Cn%20%20%20%20%20%20%20%20%20%20const%20percent%20%3D%20((current%20%2F%20total)%20*%20100).toFixed(2)%3B%5Cn%20%20%20%20%20%20%20%20%20%20return%20current.toLocaleString()%20%2B%20'%20('%20%2B%20percent%20%2B%20'%25)'%3B%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%5C%22title%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22display%5C%22%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22text%5C%22%3A%20%5C%22NBN%20Technology%20Type%20History%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22font%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22size%5C%22%3A%2048%2C%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%5C%22datalabelsZAxis%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%5C%22googleSheets%5C%22%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22sheetUrl%5C%22%3A%20%5C%22https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F17j8Xzpiq9-iIDu7cvH05PKmvqx1J6hkLOtouw3ZElYc%2Fedit%23gid%3D0%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22labelColumn%5C%22%3A%20%5C%22dates%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22dataColumns%5C%22%3A%20%5B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22FTTN%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22HFC%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22FTTP%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22FTTC%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22WIRELESS%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22SATELLITE%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22FTTB%5C%22%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%5C%22airtable%5C%22%3A%20%7B%7D%2C%5Cn%20%20%20%20%20%20%5C%22tickFormat%5C%22%3A%20%5C%22%5C%22%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%22%2C%22width%22%3A2000%2C%22height%22%3A1000%2C%22version%22%3A%224%22%2C%22backgroundColor%22%3A%22%23fff%22%7D) Config ```json { "type": "line", "data": { "datasets": [ { "fill":...
Once sufficiently confident in tests can automate dependbot https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#enable-auto-merge-on-a-pull-request