From 6021047519321618b450b858bebd62b7c79d0a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Fri, 18 Feb 2022 19:06:41 +0000 Subject: [PATCH 01/13] gitignore .env --- .env => .env.example | 0 .gitignore | 2 ++ 2 files changed, 2 insertions(+) rename .env => .env.example (100%) diff --git a/.env b/.env.example similarity index 100% rename from .env rename to .env.example diff --git a/.gitignore b/.gitignore index 1437c53..e5c66cf 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ yarn-error.log* # vercel .vercel + +.env From a754f984239b2105869255d1050f70d9709e464e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Fri, 18 Feb 2022 19:13:55 +0000 Subject: [PATCH 02/13] feat: simplify cities incidence parsers --- utils/parse.js | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index 7e28287..bf3cecf 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -44,41 +44,26 @@ export function parseAgeCategory(result) { } export function parseSmallCitiesIncidentsTable(result) { - const { small_cities_incidence } = result.currentDayStats const { detailedIncidenceStats: { lastUpdatedOn, stale }, } = result.charts - const data = small_cities_incidence.map((city) => ({ - judet: city['Județ'], - localitate: city['Localitate'], - populatie: parseInt(city['Populație']), - cazuri: parseInt(city['Cazuri']), - incidenta: parseFloat(city['Incidența']), - })) return { error: null, - data, + data: result.currentDayStats.small_cities_incidence, lastUpdatedOn, stale, } } export function parseLargeCitiesIncidentsTable(result) { - const { large_cities_incidence } = result.currentDayStats const { detailedIncidenceStats: { lastUpdatedOn, stale }, } = result.charts - const data = large_cities_incidence.map((city) => ({ - judet: city['Județ'], - localitate: city['Localitate'], - populatie: parseInt(city['Populație']), - cazuri: parseInt(city['Cazuri']), - incidenta: parseFloat(city['Incidență']), - })) + return { error: null, - data, + data: result.currentDayStats.large_cities_incidence, lastUpdatedOn, stale, } From a72bdc5facab133e7e936728d1e93f7b35d6c57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Fri, 18 Feb 2022 19:39:11 +0000 Subject: [PATCH 03/13] feat: remove complete property --- utils/parse.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index bf3cecf..56dd5b5 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -193,9 +193,7 @@ export function parseDailyStats(result, options) { [currentDayStats.parsedOnString]: currentDayStats, ...historicalData, } - const dataEntries = Object.entries(newData) - .filter(([, value]) => value.complete) - .reverse() + const dataEntries = Object.entries(newData).reverse() for (let i = 0; i <= dataEntries.length - 1; i++) { const numberInfected = dataEntries[i][1].numberInfected From 9f309ca5dddeeba8042a48bd3483eeb444677e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Fri, 18 Feb 2022 20:03:18 +0000 Subject: [PATCH 04/13] feat: update parseAgeCategory --- utils/parse.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index 56dd5b5..03668b5 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -8,32 +8,31 @@ export function parseAgeCategory(result) { } = result.charts const ageCategories = {} const dateStrings = [] - const newData = { - [currentDayStats.parsedOnString]: currentDayStats, - ...historicalData, - } - const dataEntries = Object.entries(newData) - .filter(([key]) => key <= lastUpdatedOn) + const dataEntries = [currentDayStats, ...historicalData] + .filter((entry) => entry.parsedOnString <= lastUpdatedOn) .reverse() - for (let i = 0; i < dataEntries.length - 1; i++) { - const key = dataEntries[i + 1][0] - const currentValue = dataEntries[i][1] - const nextValue = dataEntries[i + 1][1] - dateStrings.push(formatDate(key)) + dataEntries.forEach((entry, index) => { + if (index + 1 >= dataEntries.length) { + return + } + + const nextEntry = dataEntries[index + 1] - Object.entries(currentValue.distributionByAge) - .filter(([ageGroup]) => ageGroup !== 'în procesare') + dateStrings.push(formatDate(entry.parsedOnString)) + + Object.entries(entry.distributionByAge) + .filter(([ageGroup]) => ageGroup !== 'processing') .forEach(([ageGroup, currentCases]) => { - const cases = nextValue.distributionByAge[ageGroup] - currentCases + const cases = nextEntry.distributionByAge[ageGroup] - currentCases if (Array.isArray(ageCategories[ageGroup])) { ageCategories[ageGroup].push(cases) } else { ageCategories[ageGroup] = [cases] } }) - } + }) return { lastUpdatedOn, From 872f2ab9ef5e4a7d2f159e280524063477ec59ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Mon, 21 Feb 2022 15:40:40 +0000 Subject: [PATCH 05/13] fix vaccines per day --- .../vaccines-per-day-card.jsx | 2 +- utils/parse.js | 195 +++++++++--------- 2 files changed, 99 insertions(+), 98 deletions(-) diff --git a/components/cards/vaccines-per-day-card/vaccines-per-day-card.jsx b/components/cards/vaccines-per-day-card/vaccines-per-day-card.jsx index 92bfbb6..fd0a515 100644 --- a/components/cards/vaccines-per-day-card/vaccines-per-day-card.jsx +++ b/components/cards/vaccines-per-day-card/vaccines-per-day-card.jsx @@ -193,7 +193,7 @@ export class VaccinesPerDayCard extends React.PureComponent {

Datele despre vaccin din 9 iulie se regăsesc în - setul de date din 10 iulie. + setul de date din 10 iulie.

) diff --git a/utils/parse.js b/utils/parse.js index 03668b5..3435c7d 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -93,13 +93,8 @@ export function parseCountiesTable(result) { export function parseSummary(result) { try { - const { - numberInfected, - numberCured, - numberDeceased, - numberTotalDosesAdministered, - vaccines, - } = result.currentDayStats + const { infected, cured, deceased, totalDosesAdministered, vaccines } = + result.currentDayStats const { dailyStats: { stale: dailyStale, lastUpdatedOn: dailyLastUpdate }, vaccineQuickStats: { @@ -121,10 +116,10 @@ export function parseSummary(result) { Object.entries(historicalData) .reverse() .forEach(([, entry]) => { - totalCasesHistory.push(entry.numberInfected || 0) - curedCasesHistory.push(entry.numberCured || 0) - deathCasesHistory.push(entry.numberDeceased || 0) - dosesAdministeredHistory.push(entry.numberTotalDosesAdministered || 0) + totalCasesHistory.push(entry.infected || 0) + curedCasesHistory.push(entry.cured || 0) + deathCasesHistory.push(entry.deceased || 0) + dosesAdministeredHistory.push(entry.totalDosesAdministered || 0) immunityHistory.push( entry.vaccines?.pfizer.immunized + entry.vaccines?.pfizer_pediatric.immunized + @@ -134,14 +129,14 @@ export function parseSummary(result) { ) }) - totalCasesHistory.push(numberInfected) - curedCasesHistory.push(numberCured) - deathCasesHistory.push(numberDeceased) + totalCasesHistory.push(infected) + curedCasesHistory.push(cured) + deathCasesHistory.push(deceased) if (!imunizationStale) { - dosesAdministeredHistory.push(numberTotalDosesAdministered) + dosesAdministeredHistory.push(totalDosesAdministered) immunityHistory.push( vaccines?.pfizer.immunized + - vaccines?.pfizer_pediatric.immunized + + vaccines?.pfizer_pediatric.immunized + vaccines?.moderna.immunized + vaccines?.astra_zeneca.immunized + vaccines?.johnson_and_johnson.immunized || 0 @@ -151,13 +146,13 @@ export function parseSummary(result) { const totalImmunity = immunityHistory.reduce((a, b) => a + b, 0) return { - totalCases: numberInfected, + totalCases: infected, totalCasesHistory, - curedCases: numberCured, + curedCases: cured, curedCasesHistory, - deathCases: numberDeceased, + deathCases: deceased, deathCasesHistory, - totalDosesAdministered: numberTotalDosesAdministered, + totalDosesAdministered, dosesAdministeredHistory, totalImmunity, immunityHistory, @@ -195,34 +190,32 @@ export function parseDailyStats(result, options) { const dataEntries = Object.entries(newData).reverse() for (let i = 0; i <= dataEntries.length - 1; i++) { - const numberInfected = dataEntries[i][1].numberInfected - const nextNumberInfected = dataEntries[i + 1]?.[1].numberInfected - const prevNumberInfected = dataEntries[i - 1]?.[1].numberInfected - const numberInfectedByDay = !isNaN(nextNumberInfected) - ? nextNumberInfected - numberInfected - : numberInfected - prevNumberInfected - - confirmedCasesHistory.push( - cumulative ? numberInfected : numberInfectedByDay - ) + const infected = dataEntries[i][1].infected + const nextNumberInfected = dataEntries[i + 1]?.[1].infected + const prevNumberInfected = dataEntries[i - 1]?.[1].infected + const infectedByDay = !isNaN(nextNumberInfected) + ? nextNumberInfected - infected + : infected - prevNumberInfected - const numberCured = dataEntries[i][1].numberCured - const nextNumberCured = dataEntries[i + 1]?.[1]?.numberCured - const prevNumberCured = dataEntries[i - 1]?.[1]?.numberCured - const numberCuredByDay = !isNaN(nextNumberCured) - ? nextNumberCured - numberCured - : numberCured - prevNumberCured + confirmedCasesHistory.push(cumulative ? infected : infectedByDay) - curedCasesHistory.push(cumulative ? numberCured : numberCuredByDay) + const cured = dataEntries[i][1].cured + const nextNumberCured = dataEntries[i + 1]?.[1]?.cured + const prevNumberCured = dataEntries[i - 1]?.[1]?.cured + const curedByDay = !isNaN(nextNumberCured) + ? nextNumberCured - cured + : cured - prevNumberCured - const numberDeceased = dataEntries[i][1].numberDeceased - const nextNumberDeceased = dataEntries[i + 1]?.[1]?.numberDeceased - const prevNumberDeceased = dataEntries[i - 1]?.[1]?.numberDeceased - const numberDeceasedByDay = !isNaN(nextNumberDeceased) - ? nextNumberDeceased - numberDeceased - : numberDeceased - prevNumberDeceased + curedCasesHistory.push(cumulative ? cured : curedByDay) - deathCasesHistory.push(cumulative ? numberDeceased : numberDeceasedByDay) + const deceased = dataEntries[i][1].deceased + const nextNumberDeceased = dataEntries[i + 1]?.[1]?.deceased + const prevNumberDeceased = dataEntries[i - 1]?.[1]?.deceased + const deceasedByDay = !isNaN(nextNumberDeceased) + ? nextNumberDeceased - deceased + : deceased - prevNumberDeceased + + deathCasesHistory.push(cumulative ? deceased : deceasedByDay) dateStrings.push(formatDate(dataEntries[i][0])) } @@ -258,68 +251,76 @@ export function parseVaccinesHistory(result, options) { }, } = result.charts const dateStrings = [] - const pfizerRecords = [] - const pfizerPediatricRecords = [] - const modernaRecords = [] - const astraZenecaRecords = [] - const johnsonAndJohnsonRecords = [] - - const newData = vaccineDetailedStale - ? historicalData - : { - [currentDayStats.parsedOnString]: currentDayStats, - ...historicalData, + const pfizer = [] + const pfizerPediatric = [] + const moderna = [] + const astraZeneca = [] + const johnsonAndJohnson = [] + + const newData = ( + vaccineDetailedStale + ? historicalData + : [currentDayStats, ...historicalData] + ).reverse() + + if (cumulative) { + newData.forEach((entry) => { + if (!entry.vaccines) { + return } - Object.entries(newData) - .reverse() - .forEach(([date, entry]) => { - if (entry.vaccines) { - const { pfizer, pfizer_pediatric, moderna, astra_zeneca, johnson_and_johnson } = - entry.vaccines - pfizerRecords.push( - cumulative - ? (pfizerRecords[dateStrings.length - 1] || 0) + - pfizer.total_administered - : pfizer.total_administered || 0 - ) - pfizerPediatricRecords.push( - cumulative - ? (pfizerPediatricRecords[dateStrings.length - 1] || 0) + - pfizer_pediatric.total_administered - : pfizer_pediatric.total_administered || 0 - ) - modernaRecords.push( - cumulative - ? (modernaRecords[dateStrings.length - 1] || 0) + - moderna.total_administered - : moderna.total_administered || 0 - ) - astraZenecaRecords.push( - cumulative - ? (astraZenecaRecords[dateStrings.length - 1] || 0) + - astra_zeneca.total_administered - : astra_zeneca.total_administered || 0 - ) - johnsonAndJohnsonRecords.push( - cumulative - ? (johnsonAndJohnsonRecords[dateStrings.length - 1] || 0) + - johnson_and_johnson.total_administered - : johnson_and_johnson.total_administered || 0 - ) - dateStrings.push(formatDate(date)) + pfizer.push( + (pfizer[dateStrings.length - 1] || 0) + + entry.vaccines.pfizer.total_administered + ) + pfizerPediatric.push( + (pfizerPediatric[dateStrings.length - 1] || 0) + + entry.vaccines.pfizer_pediatric.total_administered + ) + moderna.push( + (moderna[dateStrings.length - 1] || 0) + + entry.vaccines.moderna.total_administered + ) + astraZeneca.push( + (astraZeneca[dateStrings.length - 1] || 0) + + entry.vaccines.astra_zeneca.total_administered + ) + johnsonAndJohnson.push( + (johnsonAndJohnson[dateStrings.length - 1] || 0) + + entry.vaccines.johnson_and_johnson.total_administered + ) + + dateStrings.push(formatDate(entry.parsedOnString)) + }) + } else { + newData.forEach((entry) => { + if (!entry.vaccines) { + return } + + pfizer.push(entry.vaccines.pfizer.total_administered || 0) + pfizerPediatric.push( + entry.vaccines.pfizer_pediatric.total_administered || 0 + ) + moderna.push(entry.vaccines.moderna.total_administered || 0) + astraZeneca.push(entry.vaccines.astra_zeneca.total_administered || 0) + johnsonAndJohnson.push( + entry.vaccines.johnson_and_johnson.total_administered || 0 + ) + + dateStrings.push(formatDate(entry.parsedOnString)) }) + } return { isStale: vaccineDetailedStale, lastUpdatedOn: vaccineDetailedLastUpdate, dates: dateStrings, - pfizer: pfizerRecords, - pfizerPediatric: pfizerPediatricRecords, - moderna: modernaRecords, - astraZeneca: astraZenecaRecords, - johnsonAndJohnson: johnsonAndJohnsonRecords, + pfizer, + pfizerPediatric, + moderna, + astraZeneca, + johnsonAndJohnson, } } catch (error) { console.error(error) From efffef82ff923bc3a40ad98150688cc0c6c727ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Mon, 21 Feb 2022 15:47:33 +0000 Subject: [PATCH 06/13] fix cases per day --- utils/parse.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index 3435c7d..4530b9e 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -183,42 +183,42 @@ export function parseDailyStats(result, options) { const curedCasesHistory = [] const deathCasesHistory = [] const dateStrings = [] - const newData = { - [currentDayStats.parsedOnString]: currentDayStats, - ...historicalData, - } - const dataEntries = Object.entries(newData).reverse() + const dataEntries = [currentDayStats, ...historicalData].reverse() + + dataEntries.forEach((entry, index) => { + if (index + 1 >= dataEntries.length) { + return + } - for (let i = 0; i <= dataEntries.length - 1; i++) { - const infected = dataEntries[i][1].infected - const nextNumberInfected = dataEntries[i + 1]?.[1].infected - const prevNumberInfected = dataEntries[i - 1]?.[1].infected + const infected = entry.infected + const nextNumberInfected = dataEntries[index + 1]?.infected + const prevNumberInfected = dataEntries[index - 1]?.infected const infectedByDay = !isNaN(nextNumberInfected) ? nextNumberInfected - infected : infected - prevNumberInfected confirmedCasesHistory.push(cumulative ? infected : infectedByDay) - const cured = dataEntries[i][1].cured - const nextNumberCured = dataEntries[i + 1]?.[1]?.cured - const prevNumberCured = dataEntries[i - 1]?.[1]?.cured + const cured = entry.cured + const nextNumberCured = dataEntries[index + 1]?.cured + const prevNumberCured = dataEntries[index - 1]?.cured const curedByDay = !isNaN(nextNumberCured) ? nextNumberCured - cured : cured - prevNumberCured curedCasesHistory.push(cumulative ? cured : curedByDay) - const deceased = dataEntries[i][1].deceased - const nextNumberDeceased = dataEntries[i + 1]?.[1]?.deceased - const prevNumberDeceased = dataEntries[i - 1]?.[1]?.deceased + const deceased = entry.deceased + const nextNumberDeceased = dataEntries[index + 1]?.deceased + const prevNumberDeceased = dataEntries[index - 1]?.deceased const deceasedByDay = !isNaN(nextNumberDeceased) ? nextNumberDeceased - deceased : deceased - prevNumberDeceased deathCasesHistory.push(cumulative ? deceased : deceasedByDay) - dateStrings.push(formatDate(dataEntries[i][0])) - } + dateStrings.push(formatDate(entry.parsedOnString)) + }) if (!cumulative) { dateStrings.shift() From 914f7a4e7fc6f352a1e15ee716dee466a93f7a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Mon, 21 Feb 2022 16:20:31 +0000 Subject: [PATCH 07/13] fix --- utils/parse.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index 4530b9e..9cdab0f 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -10,7 +10,7 @@ export function parseAgeCategory(result) { const dateStrings = [] const dataEntries = [currentDayStats, ...historicalData] - .filter((entry) => entry.parsedOnString <= lastUpdatedOn) + .filter((entry) => entry.date <= lastUpdatedOn) .reverse() dataEntries.forEach((entry, index) => { @@ -20,7 +20,7 @@ export function parseAgeCategory(result) { const nextEntry = dataEntries[index + 1] - dateStrings.push(formatDate(entry.parsedOnString)) + dateStrings.push(formatDate(entry.date)) Object.entries(entry.distributionByAge) .filter(([ageGroup]) => ageGroup !== 'processing') @@ -49,7 +49,7 @@ export function parseSmallCitiesIncidentsTable(result) { return { error: null, - data: result.currentDayStats.small_cities_incidence, + data: result.currentDayStats.smallCitiesIncidence, lastUpdatedOn, stale, } @@ -62,7 +62,7 @@ export function parseLargeCitiesIncidentsTable(result) { return { error: null, - data: result.currentDayStats.large_cities_incidence, + data: result.currentDayStats.largeCitiesIncidence, lastUpdatedOn, stale, } @@ -217,7 +217,7 @@ export function parseDailyStats(result, options) { deathCasesHistory.push(cumulative ? deceased : deceasedByDay) - dateStrings.push(formatDate(entry.parsedOnString)) + dateStrings.push(formatDate(entry.date)) }) if (!cumulative) { @@ -290,7 +290,7 @@ export function parseVaccinesHistory(result, options) { entry.vaccines.johnson_and_johnson.total_administered ) - dateStrings.push(formatDate(entry.parsedOnString)) + dateStrings.push(formatDate(entry.date)) }) } else { newData.forEach((entry) => { @@ -308,7 +308,7 @@ export function parseVaccinesHistory(result, options) { entry.vaccines.johnson_and_johnson.total_administered || 0 ) - dateStrings.push(formatDate(entry.parsedOnString)) + dateStrings.push(formatDate(entry.date)) }) } From 3ab955155634117db7179fed0342ee080be1f82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Tue, 22 Feb 2022 10:58:52 +0000 Subject: [PATCH 08/13] wip --- utils/parse.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/parse.js b/utils/parse.js index 9cdab0f..9db2a96 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -49,7 +49,7 @@ export function parseSmallCitiesIncidentsTable(result) { return { error: null, - data: result.currentDayStats.smallCitiesIncidence, + data: result.currentDayStats.smallCities, lastUpdatedOn, stale, } @@ -62,7 +62,7 @@ export function parseLargeCitiesIncidentsTable(result) { return { error: null, - data: result.currentDayStats.largeCitiesIncidence, + data: result.currentDayStats.largeCities, lastUpdatedOn, stale, } From ca8cb6a52cc45c94156f000c68fef2ae5b37a129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Tue, 22 Feb 2022 12:19:43 +0000 Subject: [PATCH 09/13] wip --- .../cards/counties-map/counties-map.jsx | 2 +- .../cards/counties-table/counties-table.jsx | 2 +- .../large-cities-incidents-table.jsx | 15 ++++---- .../small-cities-incidents-table.jsx | 17 +++++----- utils/parse.js | 34 +++++++------------ 5 files changed, 29 insertions(+), 41 deletions(-) diff --git a/components/cards/counties-map/counties-map.jsx b/components/cards/counties-map/counties-map.jsx index b66afa7..768c716 100644 --- a/components/cards/counties-map/counties-map.jsx +++ b/components/cards/counties-map/counties-map.jsx @@ -17,7 +17,7 @@ export class CountiesMap extends React.PureComponent { trigger: 'item', formatter: (item) => ` ${item.name}
- Cazuri totale: ${item.data.countyInfectionsNumbers}
+ Cazuri totale: ${item.data.cases}
Incidență cumulată: ${item.value}`, }, visualMap: { diff --git a/components/cards/counties-table/counties-table.jsx b/components/cards/counties-table/counties-table.jsx index c5fb369..191ed1e 100644 --- a/components/cards/counties-table/counties-table.jsx +++ b/components/cards/counties-table/counties-table.jsx @@ -16,7 +16,7 @@ export class CountiesTable extends React.PureComponent { { className: 'has-text-right', displayName: 'Cazuri totale', - name: 'countyInfectionsNumbers', + name: 'cases', }, { className: 'has-text-right', diff --git a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx index c2017cc..a8f81b4 100644 --- a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx +++ b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx @@ -1,33 +1,32 @@ import React from 'react' import { Card } from '../../layout/card/card' import { formatDate } from '../../../utils/date' -import { parseLargeCitiesIncidentsTable } from '../../../utils/parse' +import { parseCitiesTable } from '../../../utils/parse' import { Table } from '../../layout/table/Table' export const EMBED_LARGE_CITIES_INCIDENTS_TABLE = 'large-cities-incidents-table' export class LargeCitiesIncidentsTable extends React.PureComponent { render() { - const { error, lastUpdatedOn, stale, data } = - parseLargeCitiesIncidentsTable(this.props.state) + const { error, lastUpdatedOn, stale, data } = parseCitiesTable(this.props.state, 'largeCities') const headers = [ - { className: '', displayName: 'Județ', name: 'judet' }, + { className: '', displayName: 'Județ', name: 'county' }, { className: '', displayName: 'Localitate', - name: 'localitate', + name: 'city', }, { className: 'has-text-right', displayName: 'Populație', - name: 'populatie', + name: 'population', }, { className: 'has-text-right', displayName: 'Cazuri', name: 'cazuri' }, { className: 'has-text-right', displayName: 'Incidență', - name: 'incidenta', + name: 'incidence', }, ] return ( @@ -38,7 +37,7 @@ export class LargeCitiesIncidentsTable extends React.PureComponent { embedPath={EMBED_LARGE_CITIES_INCIDENTS_TABLE} isStale={stale} > - +
) } diff --git a/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx b/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx index f40fa73..b7b335b 100644 --- a/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx +++ b/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx @@ -2,32 +2,31 @@ import React from 'react' import { Card } from '../../layout/card/card' import { Table } from '../../layout/table/Table' import { formatDate } from '../../../utils/date' -import { parseSmallCitiesIncidentsTable } from '../../../utils/parse' +import { parseCitiesTable } from '../../../utils/parse' export const EMBED_SMALL_CITIES_INCIDENTS_TABLE = 'small-cities-incidents-table' export class SmallCitiesIncidentsTable extends React.PureComponent { render() { - const { error, lastUpdatedOn, stale, data } = - parseSmallCitiesIncidentsTable(this.props.state) + const { error, lastUpdatedOn, stale, data } = parseCitiesTable(this.props.state, 'smallCities') const headers = [ - { className: '', displayName: 'Județ', name: 'judet' }, + { className: '', displayName: 'Județ', name: 'county' }, { className: '', displayName: 'Localitate', - name: 'localitate', + name: 'city', }, { className: 'has-text-right', displayName: 'Populație', - name: 'populatie', + name: 'population', }, - { className: 'has-text-right', displayName: 'Cazuri', name: 'cazuri' }, + { className: 'has-text-right', displayName: 'Cazuri', name: 'cases' }, { className: 'has-text-right', displayName: 'Incidență', - name: 'incidenta', + name: 'incidence', }, ] @@ -39,7 +38,7 @@ export class SmallCitiesIncidentsTable extends React.PureComponent { embedPath={EMBED_SMALL_CITIES_INCIDENTS_TABLE} isStale={stale} > -
+
) } diff --git a/utils/parse.js b/utils/parse.js index 9db2a96..dab1b04 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -42,46 +42,36 @@ export function parseAgeCategory(result) { } } -export function parseSmallCitiesIncidentsTable(result) { +export function parseCitiesTable(result, column) { const { detailedIncidenceStats: { lastUpdatedOn, stale }, } = result.charts - return { - error: null, - data: result.currentDayStats.smallCities, - lastUpdatedOn, - stale, - } -} + const data = result.currentDayStats[column].map((entry) => { + entry.county = mnemonics[entry.county]?.[0] || entry.county -export function parseLargeCitiesIncidentsTable(result) { - const { - detailedIncidenceStats: { lastUpdatedOn, stale }, - } = result.charts + return entry + }) return { error: null, - data: result.currentDayStats.largeCities, + data, lastUpdatedOn, stale, } } export function parseCountiesTable(result) { - const { countyInfectionsNumbers, incidence } = result.currentDayStats const { incidenceStats: { lastUpdatedOn, stale }, } = result.charts - const counties = Object.entries(incidence) - .map(([key, entry]) => ({ - name: mnemonics[key][0], - value: parseFloat(entry), - countyInfectionsNumbers: parseInt(countyInfectionsNumbers[key]), - county: key, - })) - .sort((a, b) => (a.value > b.value ? -1 : 1)) + const counties = result.currentDayStats.counties.map((entry) => ({ + name: mnemonics[entry.county][0], + county: entry.county, + value: entry.incidence, + cases: entry.cases, + })) return { error: null, From 2543d31e720ded218bce2d8c3b37ff4ee0dcab46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Tue, 22 Feb 2022 12:30:47 +0000 Subject: [PATCH 10/13] wip --- config/globals.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/globals.js b/config/globals.js index fc9bfde..ec3f9d9 100644 --- a/config/globals.js +++ b/config/globals.js @@ -39,6 +39,6 @@ export const Constants = { } export const ApiURL = { - allData: Constants.api + '/latestData.json', - smallData: Constants.api + '/smallData.json', + allData: Constants.api + '/full', + smallData: Constants.api + '/partial', } From e7650630b9b4cb6bf57df675f5aecdbdb91cb897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Tue, 22 Feb 2022 14:19:50 +0000 Subject: [PATCH 11/13] wip --- .../large-cities-incidents-table.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx index a8f81b4..e05338c 100644 --- a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx +++ b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx @@ -22,7 +22,7 @@ export class LargeCitiesIncidentsTable extends React.PureComponent { displayName: 'Populație', name: 'population', }, - { className: 'has-text-right', displayName: 'Cazuri', name: 'cazuri' }, + { className: 'has-text-right', displayName: 'Cazuri', name: 'cases' }, { className: 'has-text-right', displayName: 'Incidență', From 44eec6df37c7eb1c239667795a65b78d3023e0fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Tue, 22 Feb 2022 19:51:54 +0000 Subject: [PATCH 12/13] fix --- .../large-cities-incidents-table.jsx | 12 +++++-- .../small-cities-incidents-table.jsx | 12 +++++-- utils/parse.js | 33 ++++++++----------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx index e05338c..00754fb 100644 --- a/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx +++ b/components/cards/large-cities-incidents-table/large-cities-incidents-table.jsx @@ -11,7 +11,11 @@ export class LargeCitiesIncidentsTable extends React.PureComponent { const { error, lastUpdatedOn, stale, data } = parseCitiesTable(this.props.state, 'largeCities') const headers = [ - { className: '', displayName: 'Județ', name: 'county' }, + { + className: '', + displayName: 'Județ', + name: 'county', + }, { className: '', displayName: 'Localitate', @@ -22,7 +26,11 @@ export class LargeCitiesIncidentsTable extends React.PureComponent { displayName: 'Populație', name: 'population', }, - { className: 'has-text-right', displayName: 'Cazuri', name: 'cases' }, + { + className: 'has-text-right', + displayName: 'Cazuri', + name: 'cases', + }, { className: 'has-text-right', displayName: 'Incidență', diff --git a/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx b/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx index b7b335b..48f9d99 100644 --- a/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx +++ b/components/cards/small-cities-incidents-table/small-cities-incidents-table.jsx @@ -11,7 +11,11 @@ export class SmallCitiesIncidentsTable extends React.PureComponent { const { error, lastUpdatedOn, stale, data } = parseCitiesTable(this.props.state, 'smallCities') const headers = [ - { className: '', displayName: 'Județ', name: 'county' }, + { + className: '', + displayName: 'Județ', + name: 'county', + }, { className: '', displayName: 'Localitate', @@ -22,7 +26,11 @@ export class SmallCitiesIncidentsTable extends React.PureComponent { displayName: 'Populație', name: 'population', }, - { className: 'has-text-right', displayName: 'Cazuri', name: 'cases' }, + { + className: 'has-text-right', + displayName: 'Cazuri', + name: 'cases', + }, { className: 'has-text-right', displayName: 'Incidență', diff --git a/utils/parse.js b/utils/parse.js index dab1b04..9344db3 100644 --- a/utils/parse.js +++ b/utils/parse.js @@ -13,26 +13,21 @@ export function parseAgeCategory(result) { .filter((entry) => entry.date <= lastUpdatedOn) .reverse() - dataEntries.forEach((entry, index) => { - if (index + 1 >= dataEntries.length) { - return - } - - const nextEntry = dataEntries[index + 1] - - dateStrings.push(formatDate(entry.date)) + for (let i = 0; i < dataEntries.length - 1; i++) { + const nextValue = dataEntries[i + 1] + dateStrings.push(formatDate(nextValue.date)) - Object.entries(entry.distributionByAge) - .filter(([ageGroup]) => ageGroup !== 'processing') + Object.entries(dataEntries[i].distributionByAge) + .filter(([ageGroup]) => ageGroup !== 'în procesare') .forEach(([ageGroup, currentCases]) => { - const cases = nextEntry.distributionByAge[ageGroup] - currentCases + const cases = nextValue.distributionByAge[ageGroup] - currentCases if (Array.isArray(ageCategories[ageGroup])) { ageCategories[ageGroup].push(cases) } else { ageCategories[ageGroup] = [cases] } }) - }) + } return { lastUpdatedOn, @@ -47,11 +42,13 @@ export function parseCitiesTable(result, column) { detailedIncidenceStats: { lastUpdatedOn, stale }, } = result.charts - const data = result.currentDayStats[column].map((entry) => { - entry.county = mnemonics[entry.county]?.[0] || entry.county + const data = JSON.parse(JSON.stringify(result.currentDayStats[column])).map( + (entry) => { + entry.county = mnemonics[entry.county][0] - return entry - }) + return entry + } + ) return { error: null, @@ -176,10 +173,6 @@ export function parseDailyStats(result, options) { const dataEntries = [currentDayStats, ...historicalData].reverse() dataEntries.forEach((entry, index) => { - if (index + 1 >= dataEntries.length) { - return - } - const infected = entry.infected const nextNumberInfected = dataEntries[index + 1]?.infected const prevNumberInfected = dataEntries[index - 1]?.infected From 678e6a015f5fd4e8e55ee137b7484b40538f6589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ionit=CC=A6a=CC=86?= Date: Fri, 18 Mar 2022 14:32:38 +0000 Subject: [PATCH 13/13] revert: gitignore .env --- .env.example => .env | 0 .gitignore | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .env.example => .env (100%) diff --git a/.env.example b/.env similarity index 100% rename from .env.example rename to .env diff --git a/.gitignore b/.gitignore index e5c66cf..3529a4c 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,4 @@ yarn-error.log* # vercel .vercel -.env +.env.local