Skip to content

Commit

Permalink
v0.6.0
Browse files Browse the repository at this point in the history
Anzeige der Grenzwerte und der URLs der Landkreisregierungen mit weiteren Coronainformationen aus der KHA-API
Möglichkeit den Hotspottext auszublenden, wenn Landkreisampel schon Rot (durch Fälle intensivmedizinischer Behandlungen) steht (=default in v0.6.0).
Diverse Textanpassungen zu den Regeln (mit URL).
  • Loading branch information
mario-fliegner authored and mario-fliegner committed Nov 18, 2021
1 parent 0b7faeb commit 33a4026
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 27 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Die Ampel kann beliebig verändert und den eigenen Bedürfnissen angepasst werde

entfernt werden. Einfach mit `STRG+F` nach _`farbnameSichtbar`_ suchen und alle Vorkommnisse entfernen.

* **Farbname in Ampel:** Um den Farbnamen in der Ampel nicht in voller Deckkraft sondern etwas transparenter (_stylischer_) anzuzeigen kann bei dem `<div>`-Element mit der `id="ampeltext"` die CSS-Klasse _`farbnameVolleDeckkraft`_ entfernt werden.
* **Farbname in Ampel:** Um den Farbnamen in der Ampel nicht in voller Deckkraft sondern etwas transparenter (_stylischer_) anzuzeigen kann bei dem `<div>`-Element mit der `id="ampeltext"` ([Zeile 32](ampel.html#L32)) die CSS-Klasse _`farbnameVolleDeckkraft`_ entfernt werden.

* **Anpassung der Text für die angezeigten Regeln:** Die Texte zu den aktuell geltenden Regeln (2G, 3G, 3Gplus) können beliebig angepasst werden:
* Text für die 3G-Regel in [Zeile 45](ampel.html#L45)
Expand Down
8 changes: 4 additions & 4 deletions ampel.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ <h2>COVID-19 Krankenhaus-Ampel f&uuml;r <span class="anzeigeBundeslandName">Baye
Die 7-Tages-Inzidenz im <span class="anzeigeLandkreisname"></span> betr&auml;gt <span id="anzeige7TageInzidenzWert" class="anzeige7TageInzidenzWert"></span><sup>1</sup>.
<span id="hinweis3GRegel">
<!-- Text fuer die 3G-Regel, sobald 7-Tages-Inzidenz ueber Grenzwert (siehe Zeile 15 in js/ampel.js) steigt: -->
Ab einem Inzidenzwert von <span id="anzeigeGrenzeInzidenzWert3G"></span> gilt in geschlossenen R&auml;umen der 3G-Grundsatz: Genesen, Geimpft oder Getestet (<a href="https://coronavirus.bayern.de" target="_blank" title="www.coronavirus.bayern.de">weitere Informationen</a>).
Ab einem Inzidenzwert von <span id="anzeigeGrenzeInzidenzWert3G"></span> gilt in geschlossenen R&auml;umen der 3G-Grundsatz: Genesen, Geimpft oder Getestet (<a href="#" target="_blank" title="" class="anzeigeBundeslandInfoUrl"></a>).
</span>
<span id="hinweis3GplusRegel">
<!-- Text fuer die 3Gplus-Regel: -->
Die Krankenhausampel steht auf Gelb! Es gilt die 3Gplus-Regel in geschlossenen Räumen (Genesen, Geimpft oder PCR-getestet), sowie eine FFP2-Maskenpflicht (<a href="https://coronavirus.bayern.de" target="_blank" title="www.coronavirus.bayern.de">weitere Informationen</a>).
Die Krankenhausampel steht auf Gelb! Es gilt die 3Gplus-Regel in geschlossenen Räumen (Genesen, Geimpft oder PCR-getestet), sowie eine FFP2-Maskenpflicht (<a href="#" target="_blank" title="" class="anzeigeBundeslandInfoUrl"></a>).
</span>
<span id="hinweis2GRegel">
<!-- Text fuer die 2G-Regel: -->
Die Krankenhausampel steht auf Rot! In der Gastronomie und f&uuml;r k&ouml;rpernahe Dienstleistungen gilt die 3Gplus-Regel: Genesen, Geimpft oder PCR-getestet. F&uuml;r alle Veranstaltungen sowie Kultur & Sport gilt die 2G-Regel: Genesen oder Geimpft (<a href="https://coronavirus.bayern.de" target="_blank" title="www.coronavirus.bayern.de">weitere Informationen</a>).
Die Krankenhausampel steht auf Rot! Die aktuell g&uuml;ltigen Regeln sowie alle weiteren Informationen zum Coronavirus finden Sie unter <a href="#" target="_blank" title="" class="anzeigeBundeslandInfoUrl"></a>.
</span>
<span id="hinweisHotspot">
<!-- Text fuer Hotspot Landkreis: -->
<br/><strong>Hotspot!</strong> Die Ampel steht auf Rot, da im <span class="anzeigeLandkreisname"></span> die 7-Tages-Inzidenz &uuml;ber 300 liegt und die Auslastung der Intensivbetten mehr als 80% betr&auml;gt.
<br/><strong>Hotspot!</strong> Die Ampel steht auf Rot, da im <span class="anzeigeLandkreisname"></span> die 7-Tages-Inzidenz &uuml;ber 300 liegt und die Auslastung und die Intensivbetten der Krankenh&auml;user mehr als 80% ausgelastet sind.
</span>
<br/>Die 7-Tages-Hospitalisierungs-Inzidenz (pro 100.000 Einwohner) betr&auml;gt <span class="anzeigeBundeslandAdverb">bayernweit</span> <span class="anzeige7TageInzidenzHospitalisierung"></span><sup>1</sup>.
</div>
Expand Down
75 changes: 53 additions & 22 deletions js/ampel.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,22 @@
var gemeindeSchluessel = '09184'; //die ersten 5 Zahlen des Gemeindeschlüssels! Beispiel: Gemeinde Grünwald, Landkreis München: 09184

/** Eingabe des Grenzwertes für die Fälle der 7-Tages-Hospitalisierungs-Inzidenz. Ab diesem Wert wird die Ampel GELB */
var grenzwertHospitalisierung = 1200; //Bayern = 1200
var grenzwertHospitalisierung = 0; //Bayern = 1200

/** Eingabe des Grenzwertes für die COVID-19 Fälle auf Intensivstationen. Ab diesem Wert wird die Ampel GELB */
var grenzwertIntensivBehandlungGelb = 450; //Bayern = 450
var grenzwertIntensivBehandlungGelb = 0; //Bayern = 450

/** Eingabe des Grenzwertes für die COVID-19 Fälle auf Intensivstationen. Ab diesem Wert wird die Ampel ROT */
var grenzwertIntensivBehandlungRot = 600; //Bayern = 600
var grenzwertIntensivBehandlungRot = 0; //Bayern = 600

/** Eingabe des Grenzwertes für 7-Tage Inzidenz im Landkreis (siehe gemeindeSchluessel). Ab diesem Wert gilt die 3G-Regel */
var grenzwertInzidenz3GRegel = 35;

/** Hotspot-Definition: 7-Tage Inzidenzwert Landkreis und Angabe Intensivbettenauslastung ab dem die Hotspot-Regel greift (Ampel ROT) */
var grenzwertHotspotInzidenz7Tage = 300;
var grenzwertHotspotIntensivbettenAuslastung = 80; //in Prozent
/* Falls zutreffend, Hinweis, dass LK ein Hotspot ist immer anzeigen - auch wenn Ampel "regulaer" schon auf Rot steht */
var hotspotHinweisImmerAnzeigen = false;

////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -66,10 +68,7 @@
grenzwertIntensivBehandlungRot = gwIntensivRot;
}
}
//Grenzwerte zu "echten" Zahlen parsen
grenzwertHospitalisierung = parseInt(grenzwertHospitalisierung);
grenzwertIntensivBehandlungGelb = parseInt(grenzwertIntensivBehandlungGelb);
grenzwertIntensivBehandlungRot = parseInt(grenzwertIntensivBehandlungRot);

var client = new HttpClient();
var restServiceUrl = 'https://api.corona-zahlen.org/districts/' + gemeindeSchluessel;
client.get(restServiceUrl, function(response) {
Expand All @@ -93,6 +92,22 @@
diviFaelleCovidAktuell = parseInt(result["divi_intensiv"]);
diviLandkreisIntensivbettenAuslastung = parseFloat(result["divi_lk_prozent_anteil_belegte_betten_an_gesamtbetten"]);

//Grenzwerte ermitteln und ggfl. manuell überschreiben
if(isNaN(grenzwertHospitalisierung) || grenzwertHospitalisierung == 0 ) {
grenzwertHospitalisierung = result['bundesland_ampel_grenzwert1'];
}
if(isNaN(grenzwertIntensivBehandlungGelb) || grenzwertIntensivBehandlungGelb == 0 ) {
grenzwertIntensivBehandlungGelb = result['bundesland_ampel_grenzwert2'];
}
if(isNaN(grenzwertIntensivBehandlungRot) || grenzwertIntensivBehandlungRot == 0 ) {
grenzwertIntensivBehandlungRot = result['bundesland_ampel_grenzwert3'];
}
defaultGrenzwerteSetzen(grenzwertHospitalisierung, grenzwertIntensivBehandlungGelb, grenzwertIntensivBehandlungRot);
//Grenzwerte zu "echten" Zahlen parsen
grenzwertHospitalisierung = parseInt(grenzwertHospitalisierung);
grenzwertIntensivBehandlungGelb = parseInt(grenzwertIntensivBehandlungGelb);
grenzwertIntensivBehandlungRot = parseInt(grenzwertIntensivBehandlungRot);

//Ermitteln ob Landkreis ein Hotspot ist
var istHotspot = false;
if(rkiLandkreis7TagesInzidenz >= grenzwertHotspotInzidenz7Tage && diviLandkreisIntensivbettenAuslastung >= grenzwertHotspotIntensivbettenAuslastung){
Expand Down Expand Up @@ -121,19 +136,18 @@
ampelzusatztext = "3G<font style='text-transform:lowercase;'>Plus</font>-Regel";
hinweiseAnzeigen("hinweis3GplusRegel");
}
if (diviFaelleCovidAktuell >= grenzwertIntensivBehandlungRot) {
if (diviFaelleCovidAktuell >= grenzwertIntensivBehandlungRot || istHotspot) {
cssClassAmpelfarbe ="ampelrot";
ampelfarbeText = "Rot";
ampelzusatztext = "2G-Regel";
hinweiseAnzeigen("hinweis2GRegel");
}
//Hotspot schlaegt alle Farben:
if(istHotspot) {
cssClassAmpelfarbe ="ampelrot";
ampelfarbeText = "Rot";
ampelzusatztext = "2G-Regel";
if(document.getElementById("hinweisHotspot") != null)
document.getElementById("hinweisHotspot").style.display = "contents";
//Falls LK als Hotspot identifiziert wurde, aber im BL die Faelle auf Intensivstationen noch nicht kritisch sind,
//(Ampel Gruen oder Gelb) dann Hotspot-Hinweis immer anzeigen, auch wenn hotspotHinweisImmerAnzeigen auf FALSE steht.
if(diviFaelleCovidAktuell < grenzwertIntensivBehandlungRot) hotspotHinweisImmerAnzeigen = true;
if (istHotspot && hotspotHinweisImmerAnzeigen){
if(document.getElementById("hinweisHotspot") != null)
document.getElementById("hinweisHotspot").style.display = "contents";
}
}

/** Zusatztext unter der Ampel je nach Ampelfarbe (2G, 3G, 3GPlus,...) */
Expand Down Expand Up @@ -187,12 +201,13 @@
/**
* Anzeige des <span> Tags mit der id in Parmeter "hinweisAn".
* Alle anderen Elemente werden auf 'display:none' gesetzt.
* @param {*} hinweisAn - CSS id des Elementes, was angezeigt werden soll (hinweis2GRegel, hinweis3GRegel oder hinweis2GplusRegel)
* @param {*} hinweisAn - CSS id des Elementes, was angezeigt werden soll (hinweis2GRegel, hinweis2GplusRegel, hinweis3GRegel oder hinweis2GplusRegel)
*/
function hinweiseAnzeigen(hinweisAn) {
if (document.getElementById("hinweis3GplusRegel") != null) { document.getElementById("hinweis3GplusRegel").style.display = "none"; }
if (document.getElementById("hinweis3GRegel") != null) { document.getElementById("hinweis3GRegel").style.display = "none"; }
if (document.getElementById("hinweis2GRegel") != null) { document.getElementById("hinweis2GRegel").style.display = "none"; }
if (document.getElementById("hinweis2GplusRegel") != null) { document.getElementById("hinweis2GplusRegel").style.display = "none"; }
if (document.getElementById(hinweisAn) != null) { document.getElementById(hinweisAn).style.display = "contents"; }
}

Expand All @@ -213,16 +228,26 @@
return gemeindeSchluessel;
}

/**
* Default Werte der Ampel setzen.
*/
function defaultWerteSetzen() {
function defaultGrenzwerteSetzen(gw1, gw2, gw3){
if(gw1 != null && gw2 != null && gw3 != null) {
grenzwertHospitalisierung = gw1;
grenzwertIntensivBehandlungGelb = gw2;
grenzwertIntensivBehandlungRot = gw3;
}
//Grenzwerte setzen
if(document.getElementById("anzeigeAmpelGrenzwertHospitalisierung") != null) { document.getElementById("anzeigeAmpelGrenzwertHospitalisierung").innerHTML ="Grenzwert: " + grenzwertHospitalisierung + "&nbsp;"; }
if(document.getElementById("anzeigeAmpelGrenzwertIntensivGelb") != null) { document.getElementById("anzeigeAmpelGrenzwertIntensivGelb").innerHTML ="Grenzwerte: " + grenzwertIntensivBehandlungGelb + "&nbsp;"; }
if(document.getElementById("anzeigeAmpelGrenzwertIntensivRot") != null) { document.getElementById("anzeigeAmpelGrenzwertIntensivRot").innerHTML = grenzwertIntensivBehandlungRot + "&nbsp;"; }
}

/**
* Default Werte der Ampel setzen.
*/
function defaultWerteSetzen() {
defaultGrenzwerteSetzen(null, null, null);
//Hinweise mit Regeltexten (2G/3G/3Gplus/Hotspot) alle nicht sichtbar
if(document.getElementById("hinweisHotspot") != null) { document.getElementById("hinweisHotspot").style.display = "none"; }
if(document.getElementById("hinweis2GplusRegel") != null) { document.getElementById("hinweis2GplusRegel").style.display = "none"; }
if(document.getElementById("hinweis2GRegel") != null) { document.getElementById("hinweis2GRegel").style.display = "none"; }
if(document.getElementById("hinweis3GRegel") != null) { document.getElementById("hinweis3GRegel").style.display = "none"; }
if(document.getElementById("hinweis3GplusRegel") != null) { document.getElementById("hinweis3GplusRegel").style.display = "none"; }
Expand Down Expand Up @@ -258,6 +283,7 @@
"anzeigeCOVID19FaelleAktuell": parseInt(datenKHAAPI["divi_intensiv"]),
"anzeigeLetztesUpdateDIVI": datenKHAAPI["divi_datenstand"],
"anzeigeBundeslandAdverb": datenKHAAPI['bundesland_name_adverb'],
"anzeigeBundeslandInfoUrl": datenKHAAPI['bundesland_info_url'],
"anzeigeAnzahlStandorte": parseInt(datenKHAAPI["divi_lk_anzahl_standorte"]),
"anzeigeAnzahlMeldebereiche": parseInt(datenKHAAPI["divi_lk_anzahl_meldebereiche"]),
"anzeigeAnzahlBettenFrei": parseInt(datenKHAAPI["divi_lk_betten_frei"]),
Expand Down Expand Up @@ -285,7 +311,12 @@
for (var key in mapping) {
var output= document.querySelectorAll('[class="'+key+'"]');
for(var i = 0; i < output.length; i++) {
output[i].innerHTML = mapping[key];
//Sonderbehandlung: URLs
if("A" === output[i].tagName && key.indexOf("Url") != -1){
output[i].setAttribute("href", 'https://' + mapping[key]);
output[i].setAttribute("title", 'Webseite aufrufen: ' + mapping[key]);
}
output[i].innerHTML = mapping[key];
}
}
return mapping;
Expand Down
1 change: 1 addition & 0 deletions text.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ <h3>Verf&uuml;gbare Anzeige-Elemente</h3>
{"name":"anzeigeLetztesUpdateDIVI", "source":"DIVI","description":"Datenstand aller Werte mit Quelle Divi (Intensivregister)."},
{"name":"anzeigeGemeindeschluessel", "source":"KHA","description":"Verwendeter Gemeindesch&uuml;ssel als Grundlage f&uuml;r alle angezeigten Daten."},
{"name":"anzeigeBundeslandAdverb", "source":"KHA","description":"Adverb des Bundeslandes."},
{"name":"anzeigeBundeslandInfoUrl", "source":"KHA","description":"Webseite der jeweiligen Landesregierung mit allen Corona-Daten. Die Klasse <i>anzeigeBundeslandInfoUrl</i> kann auch f&uuml;r einen &lt;a&gt;-Tag angegeben werden, dann wird der <i>href</i> mit der URL ersetzt."},
{"name":"anzeigeHotspotIntensivbettenAuslastungProzent", "source":"KHA","description":"Auslastung der Intensivbetten in Prozent."},
{"name":"anzeigeGrenzeInzidenzWert3G", "source":"KHA","description":"Grenzwert ab dem 3G-Regel gilt."},
{"name":"anzeigeGrenzwertHospitalisierung", "source":"KHA","description":"Grenzwert Hospitalisierte F&auml;lle, ab dem Ampel Gelb wird."},
Expand Down

0 comments on commit 33a4026

Please sign in to comment.