Skip to content

Commit

Permalink
Added toggle for hospitalization
Browse files Browse the repository at this point in the history
  • Loading branch information
marcusraitner committed Nov 8, 2021
1 parent 6cd9cd8 commit 0e2fee0
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 33 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ Für Ideen und Fehlermeldungen bitte ein [Issue erstellen](https://github.com/ma

## Changelog

### v1.10.1
* Hospitalisierungswerte können mittels Parameter `hosp=(y|n)` ein- bzw. ausgeblendet werden (nur zusammen mit `vacc=y` möglich)

### v1.10.0
* Hospitalisierungswerte: Zusätzlich zur Impfquote werden im rechten unteren Eck des Widgets nun die 7-Tages-Hospitalisierungsinzidenz und der Absolutwert der hospitalisierten Fälle der letzten sieben Tage des aktuellen Bundeslandes angezeigt.

Expand Down Expand Up @@ -73,7 +76,7 @@ Das Widget erlaubt folgende Parameter in beliebiger Reihenfolge mit Semikolon ("

* `loc=<latitude,longitude>`: z.B. `loc=48.34,10.78` (aus Gründen der Kompatibilität kann "loc=" auch entfallen. Default: aktueller Ort.
* `de=(y|n)`: bestimmt, ob die Inzidenz für Deutschland angezeigt werden soll (y) oder nicht (n). Default: `de=n`
* `bl=(y|n)`: bestimmt, ob die Inzidenz für das Bundesland angezeigt wird. Default `bl=y`
* `bl=(y|n)`: bestimmt, ob die Inzidenz für das Bundesland angezeigt wird. Default `bl=y`
* `rval=(y|n)`: bestimmt, ob bei der Inzidenz für Deutschland auch der R-Wert angezeigt werden soll (y) oder nicht (n). Default: `rval=y`
* `vac=(y|n)`: bestimmt, ob der aktuelle Impfstatus für den ausgewählten Landkreis angezeigt werden soll (y) oder nicht (n). Default: `vac=y`
* `beds=(y|n)`: bestimmt, ob die aktuelle Auslastung der Intensivbetten angezeigt werden soll (y) oder nicht (n). Default: `beds=y`
Expand Down
74 changes: 42 additions & 32 deletions covid-19-7-day-incidence-county.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
// Licence: GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
// Author: Marcus Raitner (https://fuehrung-erfahren.de)
// Source: https://github.com/marcusraitner/COVID-19-Dashboard
// Version: 1.8.0b
// ## Changelog
// * 1.0.1: Correction of layout of label for covid-beds
// * 1.0.2: Bug-Fix for Saar-Pfalz-Kreis (using GEN instead of county for join)
Expand Down Expand Up @@ -60,9 +59,12 @@ var detail = 5;
// show values for the state
var showBl = true;

// the color theme
// The color theme
var theme = "original";

// Show Hospitalization
var showHospitalization = false;

// palette found here: https://coolors.co/03071e-370617-6a040f-9d0208-d00000-dc2f02-e85d04-f48c06-faa307-ffba08
const incidenceColors = {
original: [{
Expand Down Expand Up @@ -346,6 +348,12 @@ async function createWidget(items) {
if (!Number.isNaN(parsed)) {
detail = parsed;
}
} else if (p[0].trim().toLowerCase() == "hosp") {
if (p[1].trim().toLowerCase() == "y") {
showHospitalization = true;
} else {
showHospitalization = false;
}
} else if (p.length == 1) {
// for compatability with old syntax
const fixedCoordinates = p[0].split(',').map(parseFloat);
Expand Down Expand Up @@ -628,42 +636,45 @@ async function createWidget(items) {
drawLine(drawContext, new Point(1, 0), new Point(1, vaccinationHeight), 2, Color.lightGray());

// Get hospitalization Datenstand
if (showHospitalization) {
if (debug) {
console.log("Getting hospitalization data: " + apiUrlHospitalization);
}

if (debug) {
console.log("Getting hospitalization data: " + apiUrlHospitalization);
}

const hospitalizationData = await new Request(apiUrlHospitalization).loadJSON();
const hospitalizationData = await new Request(apiUrlHospitalization).loadJSON();

if (debug) {
console.log(hospitalizationData);
}
if (debug) {
console.log(hospitalizationData);
}

if (!hospitalizationData) {
list.addText('Keine Daten für Bundesland.');
return list;
}
if (!hospitalizationData) {
list.addText('Keine Hospitalisierungsdaten.');
return list;
}

let hospitalizationCases7Days = hospitalizationData.data[bundesLand].hospitalization.cases7Days;
let hospitalizationIncidence7Days = hospitalizationData.data[bundesLand].hospitalization.incidence7Days;
let hospitalizationCases7Days = hospitalizationData.data[bundesLand].hospitalization.cases7Days;
let hospitalizationIncidence7Days = hospitalizationData.data[bundesLand].hospitalization.incidence7Days;

let hospitalizationHeight = 100;
let hospitalizationTop = vaccinationBottom - hospitalizationHeight;
let hospitalizationHeight = 100;
let hospitalizationTop = vaccinationBottom - hospitalizationHeight;

let hospitalizationRect = new Rect(0, hospitalizationTop, vaccinationWidth, hospitalizationHeight);
drawRoundedRect(drawContext, hospitalizationRect, new Color('#CBAE11'), 4);
let hospitalizationRect = new Rect(0, hospitalizationTop, vaccinationWidth, hospitalizationHeight);
drawRoundedRect(drawContext, hospitalizationRect, new Color('#CBAE11'), 4);

let hospitalizationTextRect = new Rect(5, hospitalizationTop + 5, vaccinationWidth - 10, 22);
drawContext.setTextAlignedCenter();
drawTextR(drawContext, Intl.NumberFormat('de-DE', { minimumFractionDigits: 2 }).format(hospitalizationIncidence7Days), hospitalizationTextRect, Color.white(), Font.mediumSystemFont(22));
let hospitalizationTextRect = new Rect(5, hospitalizationTop + 5, vaccinationWidth - 10, 22);
drawContext.setTextAlignedCenter();
drawTextR(drawContext, Intl.NumberFormat('de-DE', {
minimumFractionDigits: 2
}).format(hospitalizationIncidence7Days), hospitalizationTextRect, Color.white(), Font.mediumSystemFont(22));

hospitalizationTextRect = new Rect(5, hospitalizationTop + 30, vaccinationWidth - 10, 22);
drawContext.setTextAlignedCenter();
drawTextR(drawContext, hospitalizationCases7Days, hospitalizationTextRect, Color.white(), Font.mediumSystemFont(22));
hospitalizationTextRect = new Rect(5, hospitalizationTop + 30, vaccinationWidth - 10, 22);
drawContext.setTextAlignedCenter();
drawTextR(drawContext, hospitalizationCases7Days, hospitalizationTextRect, Color.white(), Font.mediumSystemFont(22));

hospitalizationTextRect = new Rect(10, hospitalizationTop + 52, vaccinationWidth - 10, 40);
drawContext.setTextAlignedLeft();
drawTextR(drawContext, '🚑', hospitalizationTextRect, Color.white(), Font.mediumSystemFont(36));
hospitalizationTextRect = new Rect(10, hospitalizationTop + 52, vaccinationWidth - 10, 40);
drawContext.setTextAlignedLeft();
drawTextR(drawContext, '🚑', hospitalizationTextRect, Color.white(), Font.mediumSystemFont(36));
}

rightStack.addImage(drawContext.getImage());

Expand Down Expand Up @@ -1025,10 +1036,9 @@ function getColor(value) {
let colors = incidenceColors[theme];
let i;

for (i = 1; i < colors.length && colors[i].lower <= value; i++) {
}
for (i = 1; i < colors.length && colors[i].lower <= value; i++) {}

return colors[i-1];
return colors[i - 1];
}

function roundIncidence(incidence) {
Expand Down

0 comments on commit 0e2fee0

Please sign in to comment.