Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Leibinger015/3778c5dc219df0d5a5ed96b6f6ee8786 to your computer and use it in GitHub Desktop.
Save Leibinger015/3778c5dc219df0d5a5ed96b6f6ee8786 to your computer and use it in GitHub Desktop.
This is a Scriptable Widget Script for iOS. A „Corona-🚦-Berlin“ Icon for your Homescreen.
// "Corona-Ampel-Berlin" iOS Scriptable Widget
//
// Original Quelle: https://gist.github.com/m4p/20cc77b6d9f1f422b75bc3ab6eed0ff3
//
// Editing: https://gist.github.com/Leibinger015
//
// Skript: Angepasst am 19.11.2021 von www.anb030.de/
//
// What's new: Hospitalisierungsrate, Inzidenz, ITS-Betten, Geimpft!
let widget = new ListWidget();
let padding = 22;
widget.setPadding(padding, padding, padding, padding);
widget.url = "https://www.berlin.de/corona/lagebericht/desktop/corona.html";
let apiResponse = await loadItems();
let header = widget.addText("Corona🚦Berlin".toUpperCase());
header.font = Font.mediumSystemFont(10);
widget.addSpacer(16);
let vStack = widget.addStack();
vStack.layoutHorizontally();
addDataView(vStack, apiResponse.indicators.incidence_hospitalisation);
vStack.addSpacer();
addDataView(vStack, apiResponse.indicators.incidence_new_infections);
widget.addSpacer();
let vStack2 = widget.addStack();
vStack2.layoutHorizontally();
addDataView(vStack2, apiResponse.indicators.icu_occupancy_rate);
vStack2.addSpacer();
addDataView(vStack2, apiResponse.vaccination.percentage_two_doses_display);
Script.setWidget(widget);
Script.complete();
widget.presentSmall();
function addDataView(widget, data) {
let viewStack = widget.addStack();
viewStack.layoutVertically();
let label = viewStack.addText(data.shortDescription);
label.font = Font.mediumSystemFont(12);
if (data.footnote != "") {
let footnote = viewStack.addText(data.footnote);
footnote.font = Font.mediumSystemFont(6);
}
let value = viewStack.addText(data.stringValue);
value.font = Font.mediumSystemFont(20);
value.textColor = colorForString(data.color);
}
async function loadItems() {
let url =
"https://raw.githubusercontent.com/knudmoeller/berlin_corona_cases/master/data/target/berlin_corona_traffic_light.latest.json";
let req = new Request(url);
let json = await req.loadJSON();
json.indicators.incidence_hospitalisation.shortDescription = "Hospital.";
json.indicators.incidence_new_infections.shortDescription = "Inzidenz";
json.indicators.icu_occupancy_rate.shortDescription = "ITS";
json.indicators.incidence_hospitalisation.footnote = "(7 Tage)";
json.indicators.incidence_new_infections.footnote = "(7 Tage)";
json.indicators.icu_occupancy_rate.footnote = "(in %)";
json.indicators.incidence_hospitalisation.stringValue = json.indicators.incidence_hospitalisation.value.toString();
json.indicators.incidence_new_infections.stringValue = json.indicators.incidence_new_infections.value.toString();
json.indicators.icu_occupancy_rate.stringValue =
json.indicators.icu_occupancy_rate.value.toString();
json.vaccination["percentage_two_doses_display"] = {}
json.vaccination.percentage_two_doses_display.shortDescription = "Geimpft";
json.vaccination.percentage_two_doses_display.footnote = "(in %)";
json.vaccination.percentage_two_doses_display.stringValue = json.vaccination.percentage_two_doses.toString();
json.vaccination.percentage_two_doses_display.color = "blue";
return json;
}
function colorForString(colorString) {
if (colorString == "red") {
return Color.red();
}
if (colorString == "yellow") {
return Color.yellow();
}
if (colorString == "blue") {
return Color.blue();
}
return Color.green();
}
@Leibinger015
Copy link
Author

Hat da jemand sowas auch für Baden Württemberg?

Ich leider nicht!

@compoundbow83
Copy link

schade. du greifst die Daten ja auch nicht vom RKI ab wenn ich das richtig sehe oder?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment