Completed overall testing and cases dashboard.
This commit is contained in:
parent
bbaef02acb
commit
e37988dd2f
31
components.d.ts
vendored
31
components.d.ts
vendored
@ -6,8 +6,10 @@ declare module 'vue' {
|
|||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
Cache: typeof import('./src/components/charts/state/testing/cache.js')['default']
|
Cache: typeof import('./src/components/charts/state/testing/cache.js')['default']
|
||||||
Card: typeof import('./src/components/Card.vue')['default']
|
Card: typeof import('./src/components/Card.vue')['default']
|
||||||
ChipsCases: typeof import('./src/components/charts/state/cases/ChipsCases.vue')['default']
|
ChipsCases: typeof import('./src/components/charts/overall/cases/ChipsCases.vue')['default']
|
||||||
ChipsTesting: typeof import('./src/components/charts/state/testing/ChipsTesting.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']
|
IconHealthiconsClinicalFOutline: typeof import('~icons/healthicons/clinical-f-outline')['default']
|
||||||
IconMdiGenderMaleFemale: typeof import('~icons/mdi/gender-male-female')['default']
|
IconMdiGenderMaleFemale: typeof import('~icons/mdi/gender-male-female')['default']
|
||||||
IconMdiGraveStone: typeof import('~icons/mdi/grave-stone')['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']
|
JSCharting: typeof import('./src/components/jscharting/JSCharting.vue')['default']
|
||||||
JSGrid: typeof import('./src/components/jscharting/JSGrid.vue')['default']
|
JSGrid: typeof import('./src/components/jscharting/JSGrid.vue')['default']
|
||||||
JSLabel: typeof import('./src/components/jscharting/JSLabel.vue')['default']
|
JSLabel: typeof import('./src/components/jscharting/JSLabel.vue')['default']
|
||||||
MapCases: typeof import('./src/components/charts/state/cases/MapCases.vue')['default']
|
MapCases: typeof import('./src/components/charts/overall/cases/MapCases.vue')['default']
|
||||||
ParametersCases: typeof import('./src/components/charts/state/cases/ParametersCases.vue')['default']
|
ParametersCases: typeof import('./src/components/charts/overall/cases/ParametersCases.vue')['default']
|
||||||
ParametersTesting: typeof import('./src/components/charts/state/testing/ParametersTesting.vue')['default']
|
ParametersTesting: typeof import('./src/components/charts/overall/testing/ParametersTesting.vue')['default']
|
||||||
SliceSelector: typeof import('./src/components/SliceSelector.vue')['default']
|
SliceSelector: typeof import('./src/components/SliceSelector.vue')['default']
|
||||||
StatCard: typeof import('./src/components/cards/StatCard.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']
|
TestingDataSetup: typeof import('./src/components/pages/state/TestingDataSetup.vue')['default']
|
||||||
TestingParameters: typeof import('./src/components/charts/state/testing/TestingParameters.vue')['default']
|
TestingParameters: typeof import('./src/components/charts/state/testing/TestingParameters.vue')['default']
|
||||||
TrendAntigenPositive: typeof import('./src/components/charts/state/testing/TrendAntigenPositive.vue')['default']
|
Total_store: typeof import('./src/components/charts/state/cases/total_store.js')['default']
|
||||||
TrendAntigenTests: typeof import('./src/components/charts/state/testing/TrendAntigenTests.vue')['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']
|
TrendCases: typeof import('./src/components/charts/state/cases/TrendCases.vue')['default']
|
||||||
TrendPCRPositive: typeof import('./src/components/charts/state/testing/TrendPCRPositive.vue')['default']
|
'TrendCases copy': typeof import('./src/components/charts/state/cases/TrendCases copy.vue')['default']
|
||||||
TrendPCRTests: typeof import('./src/components/charts/state/testing/TrendPCRTests.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']
|
Util: typeof import('./src/components/charts/util.js')['default']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,9 @@ async function processSingleZip ({ date, zip }) {
|
|||||||
if (!county) return counties
|
if (!county) return counties
|
||||||
totalPopulation += +row.population
|
totalPopulation += +row.population
|
||||||
counties[county] = {
|
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
|
return counties
|
||||||
}, {})
|
}, {})
|
||||||
|
@ -4,16 +4,12 @@ import fsp from 'fs/promises'
|
|||||||
import Papa from 'papaparse'
|
import Papa from 'papaparse'
|
||||||
import { getCounty } from '../../util.js'
|
import { getCounty } from '../../util.js'
|
||||||
|
|
||||||
async function processSingleZip ({ date, zip }, countyInfo) {
|
async function processByCounty({ date, zip }, countyInfo, output) {
|
||||||
const output = {
|
output = {
|
||||||
directory: `./public/data/state/cases`,
|
directory: path.join(output.directory, 'by-county'),
|
||||||
file: county => `${county}.json`
|
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 csv = await zip.entryData('epicurve_rpt_date.csv').then(res => res.toString())
|
||||||
|
|
||||||
const rows = Papa.parse(csv, {
|
const rows = Papa.parse(csv, {
|
||||||
@ -30,8 +26,8 @@ async function processSingleZip ({ date, zip }, countyInfo) {
|
|||||||
population: info.population,
|
population: info.population,
|
||||||
cases: parseInt(row.cases),
|
cases: parseInt(row.cases),
|
||||||
cases_per_capita: parseInt(row.cases) / info.population,
|
cases_per_capita: parseInt(row.cases) / info.population,
|
||||||
moving_avg_cases: parseInt(row.moving_avg_cases),
|
cases_14_days: info.cases_14_days,
|
||||||
moving_avg_cases_per_capita: parseInt(row.moving_avg_cases) / info.population,
|
case_rate_14_days: info.case_rate_14_days,
|
||||||
total_cases: parseInt(row.total_cases_cum),
|
total_cases: parseInt(row.total_cases_cum),
|
||||||
total_cases_per_capita: parseInt(row.total_cases_cum) / info.population
|
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 mkdirp(output.directory)
|
||||||
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
|
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) {
|
function process (zips, countyInfo) {
|
||||||
|
@ -6,7 +6,7 @@ import { getCounty } from '../../util.js'
|
|||||||
|
|
||||||
async function processSingleZip ({ date, zip }) {
|
async function processSingleZip ({ date, zip }) {
|
||||||
const output = {
|
const output = {
|
||||||
directory: `./public/data/state/testing`,
|
directory: `./public/data/state/testing/by-county/`,
|
||||||
file: county => `${county}.json`
|
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
Loading…
x
Reference in New Issue
Block a user