Working on case cards.

This commit is contained in:
Joshua Bemenderfer 2021-12-30 21:56:56 -05:00
parent 4e83fd3dbd
commit bbaef02acb
512 changed files with 847 additions and 1240952 deletions

8
components.d.ts vendored
View File

@ -4,7 +4,9 @@
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']
IconHealthiconsClinicalFOutline: typeof import('~icons/healthicons/clinical-f-outline')['default']
IconMdiGenderMaleFemale: typeof import('~icons/mdi/gender-male-female')['default']
@ -19,11 +21,17 @@ 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']
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']
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']
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']
Util: typeof import('./src/components/charts/util.js')['default']

View File

@ -1,8 +1,10 @@
import fs from 'fs/promises'
import fg from 'fast-glob'
import StreamZip from 'node-stream-zip'
import TestingTrend from './parser/testing-trend.js'
import path from 'path'
import StreamZip from 'node-stream-zip'
import Counties from './parser/counties.js'
import StateTesting from './parser/state/testing.js'
import StateCases from './parser/state/cases.js'
async function main() {
const sources = await fg(['./data/raw/*.zip'])
@ -13,7 +15,10 @@ async function main() {
zip: new StreamZip.async({ file: source })
}))
await TestingTrend(zips)
const counties = await Counties(zips)
await StateTesting(zips)
await StateCases(zips, counties)
}
main()

38
data/parser/counties.js Normal file
View File

@ -0,0 +1,38 @@
import mkdirp from 'mkdirp'
import path from 'path'
import fsp from 'fs/promises'
import Papa from 'papaparse'
import { getCounty } from '../util.js'
async function processSingleZip ({ date, zip }) {
const csv = await zip.entryData('county_cases.csv').then(res => res.toString())
const rows = Papa.parse(csv, {
header: true
}).data
let totalPopulation = 0
const counties = rows.reduce((counties, row) => {
const county = getCounty(row.county_name)
if (!county) return counties
totalPopulation += +row.population
counties[county] = {
population: +row.population
}
return counties
}, {})
return {
...counties,
'-- All --': { population: totalPopulation },
'-- Unknown --': { population: 0 }
}
}
function process (zips) {
return processSingleZip(zips.at(-1))
}
export default process

View File

@ -0,0 +1,58 @@
import mkdirp from 'mkdirp'
import path from 'path'
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`,
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, {
header: true
}).data
const counties = rows.reduce((counties, row) => {
const county = getCounty(row.county)
const info = countyInfo[county]
if (!county) return counties
if (!counties[county]) counties[county] = []
counties[county].push({
report_date: row['report_date'],
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,
total_cases: parseInt(row.total_cases_cum),
total_cases_per_capita: parseInt(row.total_cases_cum) / info.population
})
return counties
}, {})
for (const county in counties) {
const data = {
segment: { county },
headers: Object.keys(counties[county][0]),
rows: counties[county].map(row => Object.values(row))
}
await mkdirp(output.directory)
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
}
}
function process (zips, countyInfo) {
return processSingleZip(zips.at(-1), countyInfo)
}
export default process

View File

@ -1,12 +1,12 @@
import mkdirp from 'mkdirp'
import path from 'path'
import fs from 'fs'
import fsp from 'fs/promises'
import Papa from 'papaparse'
import { getCounty } from '../../util.js'
async function processSingleZip({ date, zip }) {
async function processSingleZip ({ date, zip }) {
const output = {
directory: `./public/data/testing-trend`,
directory: `./public/data/state/testing`,
file: county => `${county}.json`
}
@ -21,7 +21,7 @@ async function processSingleZip({ date, zip }) {
}).data
const counties = rows.reduce((counties, row) => {
const county = row.county === 'Georgia' ? 'All' : row.county
const county = getCounty(row.county)
if (!county) return counties
if (!counties[county]) counties[county] = []
counties[county].push({
@ -46,8 +46,7 @@ async function processSingleZip({ date, zip }) {
}
await mkdirp(output.directory)
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data, null, '\t'))
await fsp.writeFile(path.join(output.directory, output.file(county)), JSON.stringify(data))
}
}

5
data/util.js Normal file
View File

@ -0,0 +1,5 @@
export function getCounty (county) {
if (county === 'Georgia') return '-- All --'
if (county === 'Non-GA Resident/Unknown State') return '-- Unknown --'
return county
}

View File

@ -7,6 +7,7 @@
"process:data": "node ./data/parser.js",
"build": "iles build",
"preview": "iles preview --port 5050",
"deploy": "npm run build && rsync -avhz ./dist/ thederf@thederf.com:ga-covid/",
"typecheck": "vue-tsc --noEmit"
},
"engines": {

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