Completed overall testing and cases dashboard.

This commit is contained in:
Joshua Bemenderfer 2021-12-31 12:57:47 -05:00
parent bbaef02acb
commit e37988dd2f
518 changed files with 17463 additions and 285 deletions

31
components.d.ts vendored
View File

@ -6,8 +6,10 @@ declare module 'vue' {
export interface GlobalComponents {
Cache: typeof import('./src/components/charts/state/testing/cache.js')['default']
Card: typeof import('./src/components/Card.vue')['default']
ChipsCases: typeof import('./src/components/charts/state/cases/ChipsCases.vue')['default']
ChipsTesting: typeof import('./src/components/charts/state/testing/ChipsTesting.vue')['default']
ChipsCases: typeof import('./src/components/charts/overall/cases/ChipsCases.vue')['default']
ChipsTesting: typeof import('./src/components/charts/overall/testing/ChipsTesting.vue')['default']
County_time_series: typeof import('./src/components/charts/state/cases/county_time_series.js')['default']
County_time_series_store: typeof import('./src/components/charts/state/cases/county_time_series_store.js')['default']
IconHealthiconsClinicalFOutline: typeof import('~icons/healthicons/clinical-f-outline')['default']
IconMdiGenderMaleFemale: typeof import('~icons/mdi/gender-male-female')['default']
IconMdiGraveStone: typeof import('~icons/mdi/grave-stone')['default']
@ -21,19 +23,28 @@ declare module 'vue' {
JSCharting: typeof import('./src/components/jscharting/JSCharting.vue')['default']
JSGrid: typeof import('./src/components/jscharting/JSGrid.vue')['default']
JSLabel: typeof import('./src/components/jscharting/JSLabel.vue')['default']
MapCases: typeof import('./src/components/charts/state/cases/MapCases.vue')['default']
ParametersCases: typeof import('./src/components/charts/state/cases/ParametersCases.vue')['default']
ParametersTesting: typeof import('./src/components/charts/state/testing/ParametersTesting.vue')['default']
MapCases: typeof import('./src/components/charts/overall/cases/MapCases.vue')['default']
ParametersCases: typeof import('./src/components/charts/overall/cases/ParametersCases.vue')['default']
ParametersTesting: typeof import('./src/components/charts/overall/testing/ParametersTesting.vue')['default']
SliceSelector: typeof import('./src/components/SliceSelector.vue')['default']
StatCard: typeof import('./src/components/cards/StatCard.vue')['default']
Store: typeof import('./src/components/charts/state/cases/store.js')['default']
Store: typeof import('./src/components/charts/overall/cases/store.js')['default']
Store_combined: typeof import('./src/components/charts/overall/cases/store_combined.js')['default']
TestingDataSetup: typeof import('./src/components/pages/state/TestingDataSetup.vue')['default']
TestingParameters: typeof import('./src/components/charts/state/testing/TestingParameters.vue')['default']
TrendAntigenPositive: typeof import('./src/components/charts/state/testing/TrendAntigenPositive.vue')['default']
TrendAntigenTests: typeof import('./src/components/charts/state/testing/TrendAntigenTests.vue')['default']
Total_store: typeof import('./src/components/charts/state/cases/total_store.js')['default']
TrendAntigenPositive: typeof import('./src/components/charts/overall/testing/TrendAntigenPositive.vue')['default']
TrendAntigenTests: typeof import('./src/components/charts/overall/testing/TrendAntigenTests.vue')['default']
TrendCases: typeof import('./src/components/charts/state/cases/TrendCases.vue')['default']
TrendPCRPositive: typeof import('./src/components/charts/state/testing/TrendPCRPositive.vue')['default']
TrendPCRTests: typeof import('./src/components/charts/state/testing/TrendPCRTests.vue')['default']
'TrendCases copy': typeof import('./src/components/charts/state/cases/TrendCases copy.vue')['default']
TrendCasesPerCapita: typeof import('./src/components/charts/state/cases/TrendCasesPerCapita.vue')['default']
TrendDailyCases: typeof import('./src/components/charts/overall/cases/TrendDailyCases.vue')['default']
'TrendDailyCases copy': typeof import('./src/components/charts/state/cases/TrendDailyCases copy.vue')['default']
TrendDailyCasesPerCapita: typeof import('./src/components/charts/overall/cases/TrendDailyCasesPerCapita.vue')['default']
TrendPCRPositive: typeof import('./src/components/charts/overall/testing/TrendPCRPositive.vue')['default']
TrendPCRTests: typeof import('./src/components/charts/overall/testing/TrendPCRTests.vue')['default']
TrendTotalCases: typeof import('./src/components/charts/overall/cases/TrendTotalCases.vue')['default']
TrendTotalCasesPerCapita: typeof import('./src/components/charts/overall/cases/TrendTotalCasesPerCapita.vue')['default']
Util: typeof import('./src/components/charts/util.js')['default']
}
}

View File

@ -19,7 +19,9 @@ async function processSingleZip ({ date, zip }) {
if (!county) return counties
totalPopulation += +row.population
counties[county] = {
population: +row.population
population: +row.population,
cases_14_days: +row['14 day case rate'],
case_rate_14_days: +row['14 day case rate']
}
return counties
}, {})

View File

@ -4,16 +4,12 @@ import fsp from 'fs/promises'
import Papa from 'papaparse'
import { getCounty } from '../../util.js'
async function processSingleZip ({ date, zip }, countyInfo) {
const output = {
directory: `./public/data/state/cases`,
async function processByCounty({ date, zip }, countyInfo, output) {
output = {
directory: path.join(output.directory, 'by-county'),
file: county => `${county}.json`
}
try {
await fsp.rm(output.directory, { recursive: true })
} catch (e) {}
const csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
const rows = Papa.parse(csv, {
@ -30,8 +26,8 @@ async function processSingleZip ({ date, zip }, countyInfo) {
population: info.population,
cases: parseInt(row.cases),
cases_per_capita: parseInt(row.cases) / info.population,
moving_avg_cases: parseInt(row.moving_avg_cases),
moving_avg_cases_per_capita: parseInt(row.moving_avg_cases) / info.population,
cases_14_days: info.cases_14_days,
case_rate_14_days: info.case_rate_14_days,
total_cases: parseInt(row.total_cases_cum),
total_cases_per_capita: parseInt(row.total_cases_cum) / info.population
})
@ -48,7 +44,64 @@ async function processSingleZip ({ date, zip }, countyInfo) {
await mkdirp(output.directory)
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
}
}
async function processCombined({ date, zip }, countyInfo, output) {
output = {
directory: output.directory,
file: `combined.json`
}
const csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
const rows = Papa.parse(csv, {
header: true
}).data
const report_dates = new Set()
const results = rows.map(row => {
const county = getCounty(row.county)
if (!county) return null
if (['-- All --', '-- Unknown --'].includes(county)) return null
const info = countyInfo[county]
report_dates.add(row['report_date'])
return {
county,
report_date: row['report_date'],
population: info.population,
cases: parseInt(row.cases),
cases_per_capita: parseInt(row.cases) / info.population,
cases_14_days: info.cases_14_days,
case_rate_14_days: info.case_rate_14_days,
total_cases: parseInt(row.total_cases_cum),
total_cases_per_capita: parseInt(row.total_cases_cum) / info.population
}
}).filter(row => !!row)
const data = {
segment: { report_date: Array.from(report_dates) },
headers: Object.keys(results[0]),
rows: results.map(row => Object.values(row))
}
await mkdirp(output.directory)
await fsp.writeFile(path.join(output.directory, output.file), JSON.stringify(data))
}
async function processSingleZip (zip, countyInfo) {
const output = {
directory: `./public/data/state/cases/`,
}
try {
await fsp.rm(output.directory, { recursive: true })
} catch (e) {}
await processByCounty(zip, countyInfo, output)
await processCombined(zip, countyInfo, output)
}
function process (zips, countyInfo) {

View File

@ -6,7 +6,7 @@ import { getCounty } from '../../util.js'
async function processSingleZip ({ date, zip }) {
const output = {
directory: `./public/data/state/testing`,
directory: `./public/data/state/testing/by-county/`,
file: county => `${county}.json`
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More