Skip to content

Instantly share code, notes, and snippets.

@pichfl
Forked from kevinkub/incidence.js
Last active December 7, 2020 12:31
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pichfl/fabd10f8ce9791d0613410ac460bc404 to your computer and use it in GitHub Desktop.
Save pichfl/fabd10f8ce9791d0613410ac460bc404 to your computer and use it in GitHub Desktop.
COVID-19 Inzidenz-Widget für iOS innerhalb Deutschlands 🇩🇪 - Ich empfehle die Nutzung des Originals! https://gist.github.com/kevinkub/46caebfebc7e26be63403a7f0587f664
// Forked from Keven Kub.
// See https://gist.github.com/kevinkub/46caebfebc7e26be63403a7f0587f664
// Licence: Robert Koch-Institut (RKI), dl-de/by-2-0
const apiUrl = ({ longitude, latitude }) =>
`https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=GEN,cases7_per_100k&geometry=${longitude.toFixed(
3
)}%2C${latitude.toFixed(
3
)}&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelWithin&returnGeometry=false&outSR=4326&f=json`;
const widget = await createWidget();
if (!config.runsInWidget) {
await widget.presentSmall();
}
Script.setWidget(widget);
Script.complete();
async function createWidget() {
let location;
if(args.widgetParameter) {
const fixedCoordinates = args.widgetParameter.split(",").map(parseFloat)
location = {
latitude: fixedCoordinates[0],
longitude: fixedCoordinates[1]
}
} else {
Location.setAccuracyToThreeKilometers()
location = await Location.current()
}
const data = await new Request(apiUrl(location)).loadJSON();
if (!data || !data.features || !data.features.length) {
const errorList = new ListWidget();
errorList.addText('Keine Ergebnisse für den aktuellen Ort gefunden.');
return errorList;
}
const attr = data.features[0].attributes;
const incidence = attr.cases7_per_100k.toFixed(1);
const cityName = attr.GEN;
const list = new ListWidget();
const bgGradient = new LinearGradient();
bgGradient.locations = [0, 1];
bgGradient.colors = Device.isUsingDarkAppearance()
? [new Color('111'), new Color('222')]
: [new Color('fff'), new Color('fafafa')];
list.backgroundGradient = bgGradient;
const header = list.addText('🦠 Inzidenz'.toUpperCase());
header.font = Font.mediumSystemFont(13);
header.textColor = Device.isUsingDarkAppearance() ? Color.white() : Color.black();
list.addSpacer();
const label = list.addText(incidence + '');
label.font = Font.boldSystemFont(24);
label.textColor = Color.green();
if (incidence >= 50) {
label.textColor = Color.red()
} else if(incidence >= 35) {
label.textColor = Color.orange()
}
let text = list.addText(cityName);
text.textOpacity = 0.5;
text.textColor = Device.isUsingDarkAppearance() ? Color.white() : Color.black();
return list;
}
@justin10567
Copy link

Hi,
wie kann das Widget direkt den Wert anzeigen?
Ich habe die App Scriptable als Widget aber man sieht den Wert nicht.

@pichfl
Copy link
Author

pichfl commented Oct 19, 2020

@justin10567 unter https://gist.github.com/kevinkub/46caebfebc7e26be63403a7f0587f664 findest du mehr hinweise.

Grundsätzlich musst du das Widget bearbeiten und dort das passende Script auswählen.

@gfried77
Copy link

gfried77 commented Oct 21, 2020

Hallo,

  1. App Scriptable auf dem iOS 14 Device installieren
  2. auf dem Device im Browser diese Seite aufrufen (URL)
  3. den Javascript-Code von incidence.js markieren und anschliessend in die Zwischenablage kopieren
  4. in der App oben rechts auf + druecken
  5. den Text aus der Zwischenablage einfuegen
  6. auf "Done" druecken
  7. Jetzt ist ein weiteres Scripts ganz unten neu hinzugekommen. Dieses lange druecken und im Kontextmenu auf "Rename" druecken. Man kann es nun nennen wie man moechte

Hoffe das hilft. :-)

Edit: Oder schaut hier kevinkub dort gibt es unter Installation eine Liste von Anleitungen.

@schmiddi2908
Copy link

Gibt es eine Möglichkeit, den Ort fest zu hinterlegen?

@pichfl
Copy link
Author

pichfl commented Nov 4, 2020

@schmiddi2908 ja ist möglich. Für eine Anleitung schau am besten in das Original dieses Widgets. Im Endeffekt musst du die Koordinaten in den Widget-Einstellungen auf deinem Homescreen ergänzen.

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