Skip to content

Commit c550871

Browse files
committed
Improve checks for incomplete data
1 parent 8ea2e4b commit c550871

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

app.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ function calculateDayStatistics(fromDate, toDate) {
317317

318318
// Count population on holiday
319319
const population = regions(populationData.countries[country]);
320-
let holidayRegions = new Set();
320+
let regionsOnHoliday = new Set();
321321
let nationwideHoliday = false;
322322
let nationwideSchoolHoliday = false;
323323
const infos = {};
@@ -340,7 +340,7 @@ function calculateDayStatistics(fromDate, toDate) {
340340
regions(r).map(s => s.code.split("-").slice(0, 2).join("-")).forEach(region => {
341341
if (population[region]) {
342342
infos[label].Regions.add(region);
343-
holidayRegions.add(region)
343+
regionsOnHoliday.add(region)
344344
} else {
345345
missingRegions.add(region)
346346
}
@@ -351,24 +351,28 @@ function calculateDayStatistics(fromDate, toDate) {
351351
}
352352

353353
const countryPopTotal = Object.values(population).reduce((a, b) => a + b, 0);
354-
const holidayPopulation = (nationwideHoliday || nationwideSchoolHoliday) ? countryPopTotal : [...holidayRegions].map(c => population[c]).reduce((a, b) => a + b, 0);
354+
const holidayPopulation = (nationwideHoliday || nationwideSchoolHoliday) ? countryPopTotal : [...regionsOnHoliday].map(c => population[c]).reduce((a, b) => a + b, 0);
355355
holidayPopulationTotal += holidayPopulation;
356356
nationwideHolidayAnyCountry |= nationwideHoliday;
357357

358358

359359
// Check for incomplete data
360-
if (holidays.length === 0 || schoolHolidays.length === 0 || maxDate(schoolHolidays.map(f => f.endDate)) < d) {
361-
incompleteData.add(countryName);
362-
incompleteDataPopulation += countryPopTotal;
363-
} else {
364-
// Also check if school holidays are missing completely for any region
365-
let missing = Object.keys(regions(populationData.countries[country])).filter(region => {
366-
const regionHolidays = schoolHolidays.filter(h => h.nationwide || regions(h)?.map(s => s.code.split("-").slice(0, 2).join("-")).includes(region));
367-
return regionHolidays.length === 0 || maxDate(regionHolidays.map(f => f.endDate)) < d;
368-
});
369-
if (missing.length > 0) {
370-
incompleteData.add(countryName + " (" + missing.map(r => regionNames[r]).join(", ") + ")")
371-
incompleteDataPopulation += missing.map(r => population[r]).reduce((a, b) => a + b, 0);
360+
if (!nationwideHoliday && !nationwideSchoolHoliday) {
361+
if (holidays.length === 0 || schoolHolidays.length === 0 || maxDate(schoolHolidays.map(f => f.endDate)) < d) {
362+
incompleteData.add(countryName);
363+
incompleteDataPopulation += countryPopTotal;
364+
} else {
365+
// Also check if school holidays are missing completely for any region
366+
let missing = Object.keys(regions(populationData.countries[country])).filter(region => {
367+
if (regionsOnHoliday.has(region)) return false;
368+
const regionalSchoolHolidays = schoolHolidays.filter(h => h.nationwide || regions(h)?.map(
369+
s => s.code.split("-").slice(0, 2).join("-")).includes(region));
370+
return regionalSchoolHolidays.length === 0 || maxDate(regionalSchoolHolidays.map(f => f.endDate)) < d;
371+
});
372+
if (missing.length > 0) {
373+
incompleteData.add(countryName + " (" + missing.map(r => regionNames[r]).join(", ") + ")")
374+
incompleteDataPopulation += missing.map(r => population[r]).reduce((a, b) => a + b, 0);
375+
}
372376
}
373377
}
374378

0 commit comments

Comments
 (0)