data = {
let finished = false
let output = []
let fetchUrl = CORS_PROXY + INITIAL_URL
const domparser = new DOMParser()
const dateParser = d3.timeParse('%-m/%-d/%Y')
while (!finished){
const rawHtml = await (await fetch(fetchUrl)).text()
const htmlDoc = domparser.parseFromString(rawHtml, 'text/html')
const rows = Array.from(htmlDoc.querySelectorAll('.views-table tbody tr')).map(row => ({
date: dateParser(row.querySelector('.views-field-field-today-date').innerHTML.trim()),
thisYear: parseInt(
row.querySelector('.views-field-field-this-year').innerHTML.trim().replace(/,/g,''),
10
),
lastYear: parseInt(
row.querySelector('.views-field-field-last-year').innerHTML.trim().replace(/,/g,''),
10
)
}))
output = output.concat(rows)
const nextLink = htmlDoc.querySelector('.pager__link--next')
if (nextLink !== null) {
fetchUrl = CORS_PROXY + INITIAL_URL + '?' + nextLink.href.split('?')[1]
} else {
finished = true
}
}
if (output.length === 200) throw('Data failed to completely load. Try refreshing.')
return output
}