Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Script for ScriptableApp displaying the 7-Day-Incidence in your county in Germany
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: deep-gray; icon-glyph: magic;
// Licence: Robert Koch-Institut (RKI), dl-de/by-2-0
// Author: Marcus Raitner (https://fuehrung-erfahren.de)
// Source: https://gist.github.com/marcusraitner/a1b633625d1016498eaaab712461dfc4
// Version: 1.0.1
// 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)
// * 1.0.3: Bug-Fix for Landsberg a. Lech (now using both GEN and county)
// * 1.0.4: Bug-Fix. Now using AGS for join (county and GEN only as backup)
// * 1.1.0: New API for vaccinations
// * 1.2.0: New colors and a new step for incidence 165
// * 1.3.0: New feature: Show also incidence for Germany with "showGermanyValue = true"
// * 1.4.0: New feature: R-Value for Germany. Bugfix for date of incidence
//------------------------------------------------------------------------------
// General Options Section
//------------------------------------------------------------------------------
// Set to true for debugging information in the console
const debug = false;
// Set to true for an image background, false for no image.
const imageBackground = false;
// Set to true to reset the widget's background image.
const forceImageUpdate = false;
// Show also the incidence for Germany in total
const showGermanyValue = false;
// palette found here: https://coolors.co/03071e-370617-6a040f-9d0208-d00000-dc2f02-e85d04-f48c06-faa307-ffba08
const incidenceColors = [{
lower: 0,
color: new Color('#cccccf', 1)
},
{
lower: 35,
color: new Color('#FFBA08', 1)
},
{
lower: 50,
color: new Color('#F48C06', 1)
},
{
lower: 100,
color: new Color('#E85D04', 1)
},
{
lower: 165,
color: new Color('#DC2F02', 1)
},
{
lower: 200,
color: new Color('#9D0208', 1)
}
];
// colors for covid beds highlighting
const colorCovidBed = new Color('#DC2F02', 1);
const colorCovidBedVentilation = new Color('#9D0208', 1);
// other colors
const accentColor2 = Color.lightGray(); // used for weekends
const bedsLineColor = new Color('#939598', 1);
const bedsLineFreeColor = new Color('#4D8802', 1);
const vaccinationColor = new Color('#00848C', 1);
const vaccinationBoosterColor = new Color('#004156', 1);
// Gradients
let vaccinationGradient = new LinearGradient();
vaccinationGradient.locations = [0, 0.2, 0.8, 1];
vaccinationGradient.colors = [
new Color('#8C8C8C', 1),
new Color('#535353', 1),
new Color('#535353', 1),
new Color('#8C8C8C', 1)
];
let backgroundGradient = new LinearGradient();
backgroundGradient.locations = [0, 0.2, 0.8, 1];
backgroundGradient.colors = [
new Color("#28416F"),
new Color("#141E30"),
new Color("#141E30"),
new Color("#28416F")
];
//------------------------------------------------------------------------------
const DAY_IN_MICROSECONDS = 86400000;
const widgetHeight = 338;
const widgetWidth = 720;
const graphLow = 0;
const graphHeight = 170;
const spaceBetweenDays = 47;
const bedsLineWidth = 12;
const vertLineWeight = 42;
const tickWidth = 4;
// APIs
const apiUrl = (location) => `https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=GEN,AGS,EWZ,EWZ_BL,cases,death_rate,deaths,cases7_per_100k,cases7_bl_per_100k,BL,county&geometry=${ location.longitude.toFixed( 3 ) }%2C${ location.latitude.toFixed( 3 ) }&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelWithin&returnGeometry=false&outSR=4326&f=json`;
const apiUrlData = (county, minDate) => `https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Covid19_RKI_Sums/FeatureServer/0/query?where=Landkreis+LIKE+%27%25${ encodeURIComponent( county ) }%25%27+AND+Meldedatum+%3E+%27${ encodeURIComponent( minDate ) }%27&objectIds=&time=&resultType=none&outFields=*&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnDistinctValues=false&cacheHint=false&orderByFields=Meldedatum&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&sqlFormat=none&f=json&token=`;
const apiUrlData2 = (ags, minDate) => `https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Covid19_RKI_Sums/FeatureServer/0/query?where=idLandkreis%3D+${ encodeURIComponent( ags ) }+AND+Meldedatum+%3E+%27${ encodeURIComponent( minDate ) }%27&objectIds=&time=&resultType=none&outFields=*&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnDistinctValues=false&cacheHint=false&orderByFields=Meldedatum&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&sqlFormat=none&f=json&token=`;
const diviApiUrl = (location) => `https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/DIVI_Intensivregister_Landkreise/FeatureServer/0/query?where=1%3D1&outFields=*&geometry=${ location.longitude.toFixed( 3 ) }%2C${ location.latitude.toFixed( 3 ) }&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelWithin&returnGeometry=false&outSR=4326&f=json`;
const vaccUrl = `https://api.corona-zahlen.org/vaccinations`;
const germanyUrl = `https://api.corona-zahlen.org/germany`;
const stateToAbbr = {
'Baden-Württemberg': 'BW',
'Bayern': 'BY',
'Berlin': 'BE',
'Brandenburg': 'BB',
'Bremen': 'HB',
'Hamburg': 'HH',
'Hessen': 'HE',
'Mecklenburg-Vorpommern': 'MV',
'Niedersachsen': 'NI',
'Nordrhein-Westfalen': 'NW',
'Rheinland-Pfalz': 'RP',
'Saarland': 'SL',
'Sachsen': 'SN',
'Sachsen-Anhalt': 'ST',
'Schleswig-Holstein': 'SH',
'Thüringen': 'TH'
};
let widget = await createWidget();
await widget.presentMedium();
Script.setWidget(widget);
Script.complete();
async function createWidget(items) {
let location;
const list = new ListWidget();
// If it's an image background, display it.
if (imageBackground) {
// Determine if our image exists and when it was saved.
const files = FileManager.local()
const path = files.joinPath(files.documentsDirectory(), "covid19-background-image")
const exists = files.fileExists(path)
// If it exists and an update isn't forced, use the cache.
if (exists && (config.runsInWidget || !forceImageUpdate)) {
list.backgroundImage = files.readImage(path)
// If it's missing when running in the widget, use a gray background.
} else if (!exists && config.runsInWidget) {
list.backgroundGradient = backgroundGradient;
// But if we're running in app, prompt the user for the image.
} else {
const img = await Photos.fromLibrary()
list.backgroundImage = img
files.writeImage(path, img)
}
// If it's not an image background, show the gradient.
} else {
list.backgroundGradient = backgroundGradient;
}
list.setPadding(0, 0, 0, 0);
// get current location or use given args
if (args.widgetParameter) {
if (debug) {
console.log('get fixed lat/lon');
}
const fixedCoordinates = args.widgetParameter.split(',').map(parseFloat);
location = {
latitude: fixedCoordinates[0],
longitude: fixedCoordinates[1]
};
} else {
Location.setAccuracyToThreeKilometers();
try {
location = await Location.current();
if (debug) {
console.log('get current lat/lon');
}
} catch (e) {
errorText = list.addText('Keine Ortsdaten gefunden');
errorText.textColor = Color.white();
return list;
}
}
if (debug) {
console.log("Getting data for Germany: " + germanyUrl);
}
const germanyData = await new Request(germanyUrl).loadJSON();
if (debug) {
console.log(germanyData);
}
if (debug) {
console.log("Getting info for location: " + apiUrl(location));
}
// get data for current location
const locationData = await new Request(apiUrl(location)).loadJSON();
if (debug) {
console.log(locationData);
}
if (!locationData || !locationData.features || !locationData.features.length) {
errorText = list.addText('Keine Ergebnisse für den aktuellen Ort gefunden.');
errorText.textColor = Color.white();
console.log(locationData)
return list;
}
const attr = locationData.features[0].attributes;
if (debug) {
console.log("Getting DIVI info for location: " + diviApiUrl(location));
}
// get data for ICU beds of current location
const diviLocationData = await new Request(diviApiUrl(location)).loadJSON();
if (debug) {
console.log(diviLocationData);
}
if (!diviLocationData || !diviLocationData.features || !diviLocationData.features.length) {
errorText = list.addText('Keine DIVI-Ergebnisse für den aktuellen Ort gefunden.');
errorText.textColor = Color.white();
console.log(diviLocationData);
return list;
}
const diviAttr = diviLocationData.features[0].attributes;
// extract information needed
const cityName = attr.GEN; // name of 'Landkreis'
const ewz = attr.EWZ / 100000; // number of inhabitants
const ewzBL = attr.EWZ_BL
const county = attr.county; // Landkreis
const gen = attr.GEN;
const ags = attr.AGS;
const bundesLand = stateToAbbr[attr.BL];
const bl = attr.BL;
const incidenceBl = Math.round(attr.cases7_bl_per_100k);
const freeBeds = (!diviAttr.betten_frei ? 0 : diviAttr.betten_frei);
const beds = (!diviAttr.betten_gesamt ? 0 : diviAttr.betten_gesamt);
const usedBeds = (!diviAttr.betten_belegt ? 0 : diviAttr.betten_belegt);
const cases = (!diviAttr.faelle_covid_aktuell ? 0 : diviAttr.faelle_covid_aktuell);
const casesBeatmet = (!diviAttr.faelle_covid_aktuell_beatmet ? 0 : diviAttr.faelle_covid_aktuell_beatmet);
// get data for the last 21 days
const date = new Date();
if (showGermanyValue) {
date.setTime(date.getTime() - 19 * DAY_IN_MICROSECONDS);
} else {
date.setTime(date.getTime() - 20 * DAY_IN_MICROSECONDS);
}
const minDate = ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2) + '-' + date.getFullYear();
let countyData;
if (ags) {
if (debug) {
console.log("Getting data for ags: " + apiUrlData2(ags, minDate));
}
countyData = await new Request(apiUrlData2(ags, minDate)).loadJSON();
if (debug) {
console.log(countyData);
}
} else {
if (debug) {
console.log("Getting data for county: " + apiUrlData(gen, minDate));
}
countyData = await new Request(apiUrlData(gen, minDate)).loadJSON();
if (debug) {
console.log(countyData);
}
if (!countyData || !countyData.features || !countyData.features.length) {
if (debug) {
console.log("Getting data for county: " + apiUrlData(county, minDate));
}
countyData = await new Request(apiUrlData(county, minDate)).loadJSON();
if (debug) {
console.log(countyData);
}
}
}
if (!countyData || !countyData.features || !countyData.features.length) {
list.addText('Keine Statistik gefunden.');
return list;
}
if (debug) {
console.log("Getting vaccination data: " + vaccUrl);
}
const vaccData = await new Request(vaccUrl).loadJSON();
if (debug) {
console.log(vaccData);
}
if (!vaccData) {
list.addText('Kein Impfstatus gefunden.');
return list;
}
let quoteInitial = Math.round(vaccData.data.states[bundesLand].quote * 1000) / 10;
let quoteBooster = Math.round(vaccData.data.states[bundesLand].secondVaccination.quote * 1000) / 10;
let stack = list.addStack();
stack.layoutHorizontally();
stack.setPadding(0, 0, 0, 0);
let leftStack = stack.addStack();
leftStack.layoutVertically();
leftStack.setPadding(7, 7, 7, 0);
stack.addSpacer(10);
let rightStack = stack.addStack();
rightStack.setPadding(0, 0, 0, 0);
rightStack.backgroundGradient = vaccinationGradient;
rightStack.cornerRadius = 4;
let incidenceText = leftStack.addText('🦠 7-Tage-Inzidenz'.toUpperCase() + ' – ' + county);
incidenceText.font = Font.semiboldRoundedSystemFont(11);
incidenceText.textColor = Color.white();
leftStack.addSpacer();
// Add vaccination status
const vaccinationHeight = widgetHeight - 10;
const vaccinationBottom = vaccinationHeight;
const vaccinationWidth = 90;
const vaccinationBarWidth = 20;
let drawContext = new DrawContext();
drawContext.size = new Size(vaccinationWidth, vaccinationHeight);
drawContext.opaque = false;
let vaccinationTextRect = new Rect(15, 10, vaccinationWidth - 10, 55);
drawTextR(drawContext, '💉', vaccinationTextRect, Color.white(), Font.mediumSystemFont(50));
vaccinationTextRect = new Rect(6, 5, vaccinationWidth - 10, 25);
drawTextR(drawContext, bundesLand, vaccinationTextRect, Color.white(), Font.mediumSystemFont(22));
let vaccinationRect = new Rect(0, (1 - quoteInitial / 100) * vaccinationBottom, vaccinationWidth, vaccinationBottom * quoteInitial / 100);
drawRoundedRect(drawContext, vaccinationRect, vaccinationColor, 4);
vaccinationTextRect = new Rect(10, (1 - quoteInitial / 100) * vaccinationBottom - 26, vaccinationWidth, 22);
drawTextR(drawContext, quoteInitial + ' %', vaccinationTextRect, Color.white(), Font.regularSystemFont(22));
let vaccinationBoosterRect = new Rect(0, (1 - quoteBooster / 100) * vaccinationBottom, vaccinationWidth, vaccinationBottom * quoteBooster / 100);
drawRoundedRect(drawContext, vaccinationBoosterRect, vaccinationBoosterColor, 4);
vaccinationTextRect = new Rect(10, (1 - quoteBooster / 100) * vaccinationBottom - 21, vaccinationWidth, 22);
drawTextR(drawContext, quoteBooster + ' %', vaccinationTextRect, Color.white(), Font.regularSystemFont(22));
drawLine(drawContext, new Point(1, 0), new Point(1, vaccinationHeight), 2, Color.lightGray());
rightStack.addImage(drawContext.getImage());
let min, max, diff;
let dailyValues = new Array();
for (let i = countyData.features.length - 1; i >= 6; i--) {
dailyValues[i] = countyData.features[i].attributes.AnzahlFall / ewz;
let sum = 0;
for (let j = 0; j < 7; j++) {
sum += countyData.features[i - j].attributes.AnzahlFall;
}
sum /= ewz;
countyData.features[i].attributes.AnzahlFall = Math.round(sum);
}
countyData.features.splice(0, 6);
dailyValues.splice(0, 6);
for (let i = 0; i < countyData.features.length; i++) {
let aux = countyData.features[i].attributes.AnzahlFall;
max = (aux > max || max == undefined ? aux : max);
}
if (incidenceBl > max) {
max = incidenceBl;
}
if (showGermanyValue && germanyData.weekIncidence > max) {
max = germanyData.weekIncidence;
}
min = 0;
diff = max - min;
let graphDrawContext = new DrawContext();
graphDrawContext.size = new Size(widgetWidth - vertLineWeight, graphHeight);
graphDrawContext.opaque = false;
graphDrawContext.setFont(Font.mediumSystemFont(22));
graphDrawContext.setTextAlignedCenter();
const graphTop = 23;
const graphBottom = graphHeight - 23;
const barHeight = graphBottom - graphTop;
for (let i = 0; i < countyData.features.length; i++) {
let date = new Date(countyData.features[i].attributes.Meldedatum);
date.setDate(date.getDate() + 1);
const day = date.getDate();
const dayOfWeek = date.getDay();
const cases = countyData.features[i].attributes.AnzahlFall;
const delta = (cases - min) / diff;
let drawColor;
const casesRect = new Rect(spaceBetweenDays * i, graphBottom - (barHeight * delta) - 28, vertLineWeight, 23);
const dayRect = new Rect(spaceBetweenDays * i, graphBottom + 3, vertLineWeight, 23);
let dayColor;
if (dayOfWeek == 0 || dayOfWeek == 6) {
dayColor = accentColor2;
} else {
dayColor = Color.white();
}
if (i == countyData.features.length - 1) {
if (showGermanyValue) {
const delta = (germanyData.weekIncidence - min) / diff;
const y = graphBottom - (barHeight * delta);
const width = vertLineWeight + 7;
const x = widgetWidth - vertLineWeight - width - 4;
drawColor = getColor(germanyData.weekIncidence);
let rect = new Rect(x, graphBottom - (barHeight * delta), width, barHeight * delta - 2);
drawRoundedRect(graphDrawContext, rect, new Color("#6c757d", 1), 4);
let path = new Path();
path.addRoundedRect(rect, 4, 4);
graphDrawContext.addPath(path);
graphDrawContext.setLineWidth(4);
graphDrawContext.setStrokeColor(drawColor);
graphDrawContext.strokePath();
const bundesLandRect = new Rect(x, y + 3, width, 23);
drawTextR(graphDrawContext, "DE", bundesLandRect, dayColor, Font.mediumSystemFont(21));
const bundesLandIncidenceRect = new Rect(x, y - 28, width, 23);
drawTextR(graphDrawContext, Math.round(germanyData.weekIncidence), bundesLandIncidenceRect, dayColor, Font.mediumSystemFont(21));
let rRect = new Rect(x, graphBottom - 28, width, 23);
drawTextR(graphDrawContext, germanyData.r.value.toFixed(2), rRect, dayColor, Font.mediumSystemFont(21));
rRect = new Rect(x, graphBottom - 50, width, 23);
drawTextR(graphDrawContext, "R", rRect, dayColor, Font.mediumSystemFont(21));
}
const delta = (incidenceBl - min) / diff;
const y = graphBottom - (barHeight * delta);
const x1 = spaceBetweenDays * (i + 1) + spaceBetweenDays / 3;
drawColor = getColor(incidenceBl);
let rect = new Rect(spaceBetweenDays * i + 2, graphBottom - (barHeight * delta), vertLineWeight * 2.5, barHeight * delta - 2);
drawRoundedRect(graphDrawContext, rect, new Color("#343a40", 1), 4);
let path = new Path();
path.addRoundedRect(rect, 4, 4);
graphDrawContext.addPath(path);
graphDrawContext.setLineWidth(4);
graphDrawContext.setStrokeColor(drawColor);
graphDrawContext.strokePath();
const bundesLandRect = new Rect(x1, y + 3, vertLineWeight, 23);
drawTextR(graphDrawContext, bundesLand, bundesLandRect, dayColor, Font.mediumSystemFont(21));
const bundesLandIncidenceRect = new Rect(x1, y - 28, vertLineWeight, 23);
drawTextR(graphDrawContext, incidenceBl, bundesLandIncidenceRect, dayColor, Font.mediumSystemFont(21));
}
drawColor = getColor(cases);
let rect = new Rect(spaceBetweenDays * i, graphBottom - (barHeight * delta), vertLineWeight, barHeight * delta);
drawRoundedRect(graphDrawContext, rect, drawColor, 4);
const dailyDelta = (dailyValues[i] - min) / diff;
rect = new Rect(spaceBetweenDays * i, graphBottom - (barHeight * dailyDelta), vertLineWeight, barHeight * dailyDelta);
drawRoundedRect(graphDrawContext, rect, new Color("#FFFFFF", .4), 4);
drawTextR(graphDrawContext, cases, casesRect, dayColor, Font.mediumSystemFont(21));
drawTextR(graphDrawContext, day, dayRect, dayColor, Font.mediumSystemFont(21));
}
let graphImage = graphDrawContext.getImage();
leftStack.addImage(graphImage);
leftStack.addSpacer();
drawContext = new DrawContext();
const bedsHeight = 80;
const bedsWidth = graphImage.size.width - 30;
drawContext.size = new Size(bedsWidth, bedsHeight);
drawContext.opaque = false;
let freeBedsWidth = freeBeds / beds * bedsWidth;
let covidBedsWidth = cases / beds * bedsWidth;
let beatmetBedsWidth = casesBeatmet / beds * bedsWidth;
freeBedsWidth = (!freeBedsWidth ? tickWidth / 2 : freeBedsWidth);
covidBedsWidth = (!covidBedsWidth ? tickWidth / 2 : covidBedsWidth);
beatmetBedsWidth = (!beatmetBedsWidth ? tickWidth / 2 : beatmetBedsWidth);
// Line representing all beds
let bedsLineRect = new Rect(0, bedsHeight / 2 - bedsLineWidth / 2, bedsWidth, bedsLineWidth);
drawRoundedRect(drawContext, bedsLineRect, bedsLineColor, 2)
let bedsRect = new Rect(0, bedsHeight / 2 - 40, bedsWidth - freeBedsWidth - 10, 26);
drawContext.setFont(Font.mediumSystemFont(22));
drawContext.setTextColor(Color.white());
drawContext.drawTextInRect('🛏' + 'Intensivbetten'.toUpperCase() + ': ' + beds, bedsRect)
// Portion representing free beds
bedsLineRect = new Rect(bedsWidth - freeBedsWidth, bedsHeight / 2 - bedsLineWidth / 2, freeBedsWidth, bedsLineWidth);
drawRoundedRect(drawContext, bedsLineRect, bedsLineFreeColor, 2);
drawLine(drawContext, new Point(bedsWidth - freeBedsWidth, bedsHeight / 2 + bedsLineWidth / 2 + 5), new Point(bedsWidth - freeBedsWidth, bedsHeight / 2 - 40), tickWidth, new Color('#4D8802', 1));
drawContext.setFont(Font.mediumSystemFont(22));
let freeRect = new Rect(0, bedsHeight / 2 - 35, bedsWidth - freeBedsWidth - 10, 22);
drawContext.setTextAlignedRight();
drawContext.drawTextInRect('frei'.toUpperCase() + ': ' + freeBeds, freeRect)
// Portion representing covid patients
bedsLineRect = new Rect(0, bedsHeight / 2 - bedsLineWidth / 2, covidBedsWidth, bedsLineWidth);
drawRoundedRect(drawContext, bedsLineRect, colorCovidBed, 2);
drawLine(drawContext, new Point(covidBedsWidth, bedsHeight / 2 - bedsLineWidth / 2 - 5), new Point(covidBedsWidth, bedsHeight / 2 + 38), tickWidth, colorCovidBed);
// Portion representing cases beatmet
bedsLineRect = new Rect(0, bedsHeight / 2 - bedsLineWidth / 2, beatmetBedsWidth, bedsLineWidth);
drawRoundedRect(drawContext, bedsLineRect, colorCovidBedVentilation, 2);
drawLine(drawContext, new Point(beatmetBedsWidth, bedsHeight / 2 - bedsLineWidth / 2 - 5), new Point(beatmetBedsWidth, bedsHeight / 2 + 20), tickWidth, colorCovidBedVentilation);
let covidRect = new Rect(covidBedsWidth + 10, bedsHeight / 2 + 10, bedsWidth - covidBedsWidth, 22);
drawContext.setTextAlignedLeft();
if (covidBedsWidth > bedsWidth / 2) {
covidRect = new Rect(0, bedsHeight / 2 + 10, covidBedsWidth - 10, 22);
drawContext.setTextAlignedRight();
}
drawContext.drawTextInRect('🦠COVID-19: ' + cases + ' (davon ' + casesBeatmet + ' beatmet)', covidRect);
leftStack.addImage(drawContext.getImage());
return list;
}
function drawTextR(drawContext, text, rect, color, font) {
drawContext.setFont(font);
drawContext.setTextColor(color);
drawContext.drawTextInRect(new String(text).toString(), rect);
}
function drawLine(drawContext, point1, point2, width, color) {
const path = new Path();
path.move(point1);
path.addLine(point2);
drawContext.addPath(path);
drawContext.setStrokeColor(color);
drawContext.setLineWidth(width);
drawContext.strokePath();
}
function drawRoundedRect(drawContext, rect, color, radius) {
const path = new Path();
path.addRoundedRect(rect, radius, radius);
drawContext.addPath(path);
drawContext.setFillColor(color);
drawContext.fillPath();
}
function getColor(value) {
let col = incidenceColors[0].color;
for (i = 1; i < incidenceColors.length; i++) {
if (value >= incidenceColors[i].lower) {
col = incidenceColors[i].color;
} else {
break
}
}
return col;
}
@ken-sa

This comment has been minimized.

Copy link

@ken-sa ken-sa commented Jan 26, 2021

Hi, finde deinen Sript richtig gut. Wäre es gut bei den Intensivbetten einen Trend mit anzuzeigen?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Jan 26, 2021

@ken-sa Danke dir. Das mit den Trend ist eine gute Idee, aber die Daten geben das (anders als bei den Fallzahlen) nicht her. Da müsste ich mir die Werte zwischenspeichern und das klappt auch nur wenn du den Ort nicht wechselst … 

@ken-sa

This comment has been minimized.

Copy link

@ken-sa ken-sa commented Jan 26, 2021

Danke für deine schnelle Rückmeldung. Sprich eine Datei in der Cloud zum Beispiel oder meinst du wirklich irgendwo Zentral für ganz Deutschland (was ja fast unmöglich wäre)? Die Daten wie auf dem
Bild sind meine ich auch auf der Cloud.
49703DC9-F937-457B-A545-B241A25419C3

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Jan 26, 2021

Ja, ich meinte eine Datei in deiner iCloud, wo ich mir den letzten Wert speichern müsste, um ihn mit dem aktuellen zu vergleichen.

@UnityProductDevelopment

This comment has been minimized.

Copy link

@UnityProductDevelopment UnityProductDevelopment commented Jan 27, 2021

Super Sache, vielen Dank Marcus!

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Jan 27, 2021

Super Sache, vielen Dank Marcus!

Danke, Daniel!

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Jan 27, 2021

Nach update Fehler

IMG_1222

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Jan 27, 2021

Nach update Fehler

IMG_1222

Danke! Mein Fehler. Ist korrigiert.

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Jan 27, 2021

Danke, funktioniert wieder. Neue Farbe gefällt mir.

@Lutti45

This comment has been minimized.

Copy link

@Lutti45 Lutti45 commented Feb 1, 2021

Hallo Marcus,
ist es auch möglich einen individuellen Namen für den Landkreis einzurichten. Z.B. Zuhause, Büro usw.
Ansonsten gefällt mir dein Script sehr gut.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Feb 1, 2021

Hallo Marcus,
ist es auch möglich einen individuellen Namen für den Landkreis einzurichten. Z.B. Zuhause, Büro usw.
Ansonsten gefällt mir dein Script sehr gut.

Du kannst dem Widget auf dem Homescreen Länge und Breite als Parameter mitgeben (kriegst du über Google Maps oder Karten App), z.B. als 48.15,9.05 für Tübingen

@Tvius

This comment has been minimized.

Copy link

@Tvius Tvius commented Feb 20, 2021

Hallo und vielen Dank für dein Script. Hat jemand eine Idee, was damit gemeint ist:
AA469BFC-D54A-4A09-A592-B3A33F7B2A6A
3C7D2641-0E52-461E-9AD0-81EE2D99B97E
1C7BDA64-4005-4572-8B54-580406EC0BE8
Ich konnte das Problem mittlerweile eingrenzen, d.h. es liegt Zuhause am W-Lan.

Lg Tvius

@Seruschl

This comment has been minimized.

Copy link

@Seruschl Seruschl commented Mar 18, 2021

Finde dieses script echt super, jedoch habe ich seit heute genau den Fehler, den Tvius vorher geschildert hat auch. Gibt es dazu eine Lösung? Kann nicht am WLAN liegen, da es gar nicht mehr, also auch nur bei LTE Nutzung nicht funktioniert.

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Mar 18, 2021

Vermutlich sind fehlerhafte Daten in der Datenbank oder die Quelle hat die Datenverändert.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Mar 18, 2021

Finde dieses script echt super, jedoch habe ich seit heute genau den Fehler, den Tvius vorher geschildert hat auch. Gibt es dazu eine Lösung? Kann nicht am WLAN liegen, da es gar nicht mehr, also auch nur bei LTE Nutzung nicht funktioniert.

Das Problem liegt in den technischen Problemen der Schnittstellen des RKI: https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/ liefert derzeit einen Error 500 zurück. Auch das darauf basierende Dashboard hier funktioniert derzeit nicht: https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4/page/page_1/

Von Zeit zu Zeit schrauben die da rum … morgen geht es vermutlich wieder.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Mar 19, 2021

Finde dieses script echt super, jedoch habe ich seit heute genau den Fehler, den Tvius vorher geschildert hat auch. Gibt es dazu eine Lösung? Kann nicht am WLAN liegen, da es gar nicht mehr, also auch nur bei LTE Nutzung nicht funktioniert.

Das Problem liegt in den technischen Problemen der Schnittstellen des RKI: https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/ liefert derzeit einen Error 500 zurück. Auch das darauf basierende Dashboard hier funktioniert derzeit nicht: https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4/page/page_1/

Von Zeit zu Zeit schrauben die da rum … morgen geht es vermutlich wieder.

Bei mir geht es jetzt wieder. Aber ich könnte mal das Fehlerhandling verbessern …

@Pupsie

This comment has been minimized.

Copy link

@Pupsie Pupsie commented Mar 23, 2021

EB9C0D3F-9FBA-4738-8560-6E1820C90F1C

An was liegts wohl?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Mar 23, 2021

EB9C0D3F-9FBA-4738-8560-6E1820C90F1C

An was liegts wohl?

Offensichtlich hat der Wert für den Längengrad nicht das richtige Format. Wo kommt der her? Hast du den dem Widget als Parameter mitgegeben? Wenn ja, wie sieht der aus?

@Pupsie

This comment has been minimized.

Copy link

@Pupsie Pupsie commented Mar 23, 2021

Habe nichts verändert, nur copy & paste von dem Skript gemacht.
Was muss ich denn machen das es klappt?
Danke!

@Pupsie

This comment has been minimized.

Copy link

@Pupsie Pupsie commented Mar 23, 2021

Habs geschafft. Hatte nen sinnlosen Buchstaben bei Parameter drinstehen.
Danke dir!

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Mar 23, 2021

Habs geschafft. Hatte nen sinnlosen Buchstaben bei Parameter drinstehen.
Danke dir!

Nicht dafür! Du kannst über die Parameter bei Bedarf einen anderen Landkreis als den derzeitigen anzeigen. Einfach Breitengrad,Längengrad (mit Dezimalpunkt jeweils) dort eintragen.

Und ich muss mal am Fehlerhandling arbeiten …

@Seruschl

This comment has been minimized.

Copy link

@Seruschl Seruschl commented Apr 3, 2021

Super script, welches ich als Widget auf dem Homescreen meines iPhone habe, um die Inzidenzwerte im Blick zu behalten! Besteht die Möglichkeit den Hintergrund des Scriptes durch ein Bild zu ersetzen, damit es sich optisch besser dem Homescreen anpasst?? Habe in nem anderen scriptable script
`// Set to true for an image background, false for no image.
const imageBackground = true

// Set to true to reset the widget's background image.
const forceImageUpdate = false `
diese definierten Konstanten, die dafür zuständig zu seien scheinen

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 3, 2021

Super script, welches ich als Widget auf dem Homescreen meines iPhone habe, um die Inzidenzwerte im Blick zu behalten! Besteht die Möglichkeit den Hintergrund des Scriptes durch ein Bild zu ersetzen, damit es sich optisch besser dem Homescreen anpasst?? Habe in nem anderen scriptable script
`// Set to true for an image background, false for no image.
const imageBackground = true

// Set to true to reset the widget's background image.
const forceImageUpdate = false `
diese definierten Konstanten, die dafür zuständig zu seien scheinen

Danke! Freut mich. Ich kann mir gerade nicht vorstellen, was du meinst, aber programmieren lässt sich viel … ist im Moment aber nicht implementiert. Schick mir doch mal den Link auf das Script das du meinst, dann kann ich mir das dort ansehen.

@Seruschl

This comment has been minimized.

Copy link

@Seruschl Seruschl commented Apr 3, 2021

Hi und danke für die schnelle Rückmeldung :)

Ich nutze das full-weatherline-widget, wobei ich dort die Möglichkeit habe, statt des einfarbigen Hintergrundes ein Bild auszuwählen (mit den Befehlen, die ich oben genannt habe). Daher sieht es so aus, als ob der Hintergrund durchsichtig ist. Hier zu sehen von meinem Homescreen Bild

Ich hoffe, dass es nun verständlicher ist.

Ein angenehmes Wochenende und ein schönes Osterfest wünsche ich ^^

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 3, 2021

Hi und danke für die schnelle Rückmeldung :)

Ich nutze das full-weatherline-widget, wobei ich dort die Möglichkeit habe, statt des einfarbigen Hintergrundes ein Bild auszuwählen (mit den Befehlen, die ich oben genannt habe). Daher sieht es so aus, als ob der Hintergrund durchsichtig ist. Hier zu sehen von meinem Homescreen Bild

Ich hoffe, dass es nun verständlicher ist.

Ein angenehmes Wochenende und ein schönes Osterfest wünsche ich ^^

Habe es mir angeschaut, aber so ganz klar ist es mir noch nicht, was du genau haben willst (der Code hat das verschiedene Abzweigungen, die du genommen haben könntest). Stimmt meine Annahme, dass du ein Bild deiner Wahl (aus deinen Fotos auf dem iPhone) als Hintergrund gewählt hast und das hier auch gerne hättest?

@Seruschl

This comment has been minimized.

Copy link

@Seruschl Seruschl commented Apr 3, 2021

Habe es mir angeschaut, aber so ganz klar ist es mir noch nicht, was du genau haben willst (der Code hat das verschiedene Abzweigungen, die du genommen haben könntest). Stimmt meine Annahme, dass du ein Bild deiner Wahl (aus deinen Fotos auf dem iPhone) als Hintergrund gewählt hast und das hier auch gerne hättest?

Ja genau, so hatte ich es mir vorgestellt. Ich denke, dass ab Zeile 374 der Code damit zusammenhängt.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 3, 2021

Ja, da hast du recht. Sollte jetzt eigentlich funktionieren. Have fun!

IMG_0796

@Seruschl

This comment has been minimized.

Copy link

@Seruschl Seruschl commented Apr 4, 2021

Oh wow, danke fürs implementieren! Schöne Ostertage wünsche ich dir noch :)

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 7, 2021

Leider zeigt es mir bei dem Widget keine Statistik an 🤔 muss ich bei dem Parameter noch etwas beachten?

65C854DB-FA1D-49D3-B08A-7A33ABCBE6A6

@asocos

This comment has been minimized.

Copy link

@asocos asocos commented Apr 7, 2021

Leider zeigt es mir bei dem Widget keine Statistik an 🤔 muss ich bei dem Parameter noch etwas beachten?

65C854DB-FA1D-49D3-B08A-7A33ABCBE6A6

Das liegt nicht am Script: der Webservice ist down.

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 7, 2021

Leider zeigt es mir bei dem Widget keine Statistik an 🤔 muss ich bei dem Parameter noch etwas beachten?
65C854DB-FA1D-49D3-B08A-7A33ABCBE6A6

Das liegt nicht am Script: der Webservice ist down.

Danke dir 👍🏻😊

@fhoo

This comment has been minimized.

Copy link

@fhoo fhoo commented Apr 8, 2021

Leider zeigt es mir bei dem Widget keine Statistik an 🤔 muss ich bei dem Parameter noch etwas beachten?
65C854DB-FA1D-49D3-B08A-7A33ABCBE6A6

Das liegt nicht am Script: der Webservice ist down.

Ich bekomme den gleichen Fehler und vermute in der URL fehlt das Token:
0DAB1236-4F9B-4B59-AC90-C73584BC850F

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 8, 2021

Leider zeigt es mir bei dem Widget keine Statistik an 🤔 muss ich bei dem Parameter noch etwas beachten?
65C854DB-FA1D-49D3-B08A-7A33ABCBE6A6

Das liegt nicht am Script: der Webservice ist down.

Ich bekomme den gleichen Fehler und vermute in der URL fehlt das Token:
0DAB1236-4F9B-4B59-AC90-C73584BC850F

Den Fehler hatte ich so noch nicht gesehen, aber ich glaube ich bau das einfach um auf diese API: https://api.corona-zahlen.org/docs/

@huhie

This comment has been minimized.

Copy link

@huhie huhie commented Apr 8, 2021

Hier leider der selbe Fehler...

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 8, 2021

Hab's umgestellt. Sollte jetzt wieder funktionieren.

@fhoo

This comment has been minimized.

Copy link

@fhoo fhoo commented Apr 8, 2021

Funktioniert wieder, danke!
Die andere URL (apiUrlData) endet ja mit &token= und dahinter wird nie ein Token-Wert geschrieben. In Kombination mit der Fehlermeldung, die ich bekomme, wenn ich die URL einfach mal in Browser öffne, scheint also etwas zu fehlen. Aber mit der anderen URL funktioniert es 👍

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 8, 2021

Stimmt. Aber das war schon immer so. Die andere API ist ohnehin sauberer und besser.

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 8, 2021

Hab's umgestellt. Sollte jetzt wieder funktionieren.

Leider funktioniert es bei mir weiterhin nicht. Hab den ganzen Tag immer wieder geschaut und Überarbeitungen mit überführt 🤷🏻‍♂️

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 9, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 10, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

Hatte es nochmal neu alles installiert, leider bekomme ich nach wie vor keine Statistik. Hätte es gern für Berlin-Spandau.

VG

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 10, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

Hatte es nochmal neu alles installiert, leider bekomme ich nach wie vor keine Statistik. Hätte es gern für Berlin-Spandau.

VG

Ok, kann es nachstellen. Komischerweise fehlt bei Berlin der AGS (Allgemeine Gemeindeschlüssel) und mit dem hole ich die Daten. Muss mir überlegen, was ich damit mache. Evtl. gehe ich doch wieder zurück auf die Schnittstelle des RKI; hattest du vor meiner Umstellung diese Woche (bevor die Schnittstelle des RKI ausfiel) auch das Problem oder ging es da?

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 10, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

Hatte es nochmal neu alles installiert, leider bekomme ich nach wie vor keine Statistik. Hätte es gern für Berlin-Spandau.
VG

Ok, kann es nachstellen. Komischerweise fehlt bei Berlin der AGS (Allgemeine Gemeindeschlüssel) und mit dem hole ich die Daten. Muss mir überlegen, was ich damit mache. Evtl. gehe ich doch wieder zurück auf die Schnittstelle des RKI; hattest du vor meiner Umstellung diese Woche (bevor die Schnittstelle des RKI ausfiel) auch das Problem oder ging es da?

Da hatte ich leider auch keine Daten 🤷🏻‍♂️

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 10, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

Hatte es nochmal neu alles installiert, leider bekomme ich nach wie vor keine Statistik. Hätte es gern für Berlin-Spandau.
VG

Ok, kann es nachstellen. Komischerweise fehlt bei Berlin der AGS (Allgemeine Gemeindeschlüssel) und mit dem hole ich die Daten. Muss mir überlegen, was ich damit mache. Evtl. gehe ich doch wieder zurück auf die Schnittstelle des RKI; hattest du vor meiner Umstellung diese Woche (bevor die Schnittstelle des RKI ausfiel) auch das Problem oder ging es da?

Da hatte ich leider auch keine Daten 🤷🏻‍♂️

Ok, probier es bitte mit der neuesten Version nochmal.

@Ka17en

This comment has been minimized.

Copy link

@Ka17en Ka17en commented Apr 10, 2021

Sehr komisch. Derselbe Fehler ("Keine Statistik"). Magst du es vielleicht nochmal komplett neu installieren. Und mir sagen in welchem Landkreis du bist, dann kann ich das nachstellen?

Hatte es nochmal neu alles installiert, leider bekomme ich nach wie vor keine Statistik. Hätte es gern für Berlin-Spandau.
VG

Ok, kann es nachstellen. Komischerweise fehlt bei Berlin der AGS (Allgemeine Gemeindeschlüssel) und mit dem hole ich die Daten. Muss mir überlegen, was ich damit mache. Evtl. gehe ich doch wieder zurück auf die Schnittstelle des RKI; hattest du vor meiner Umstellung diese Woche (bevor die Schnittstelle des RKI ausfiel) auch das Problem oder ging es da?

Da hatte ich leider auch keine Daten 🤷🏻‍♂️

Ok, probier es bitte mit der neuesten Version nochmal.

Perfekt 👌 danke dir für die Mühe.

@jvbremen81

This comment has been minimized.

Copy link

@jvbremen81 jvbremen81 commented Apr 11, 2021

Bei mir dauert es eine Zeit , bis die Daten geladen werden. Da steht „ Keine Ortsdaten gefunden“. Nach ein paar Minuten aktualisiert er sich und dann ist die Anzeige da. Kann man die Abfrage öfter anstoßen?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 11, 2021

Bei mir dauert es eine Zeit , bis die Daten geladen werden. Da steht „ Keine Ortsdaten gefunden“. Nach ein paar Minuten aktualisiert er sich und dann ist die Anzeige da. Kann man die Abfrage öfter anstoßen?

Das geht mir oft ähnlich. Ich stoße es dann einfach innerhalb von Scriptable einmal an. Ich weiß ehrlich gesagt nicht ganz, warum und wieso diese Meldung kommt.

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Apr 11, 2021

Für München sind die Daten immer da, für Pinneberg muss ich teilweise auch in Scriptable nachladen. Wo gibts den Link zu deiner Kaffeekasse?

@jvbremen81

This comment has been minimized.

Copy link

@jvbremen81 jvbremen81 commented Apr 11, 2021

Wie stoßt ihr das genau an?

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Apr 11, 2021

Du kannst einmal auf das Widget klicken (dann läd scriptable) oder in Scriptable das Script anklicken.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 12, 2021

Für München sind die Daten immer da, für Pinneberg muss ich teilweise auch in Scriptable nachladen. Wo gibts den Link zu deiner Kaffeekasse?

Meine Kaffeekasse gibt es so nicht, aber du kannst gerne mein kleines Buchprojekt unterstützen (gerne auch indem du es verbreitest): https://www.startnext.com/humane-leadership

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Apr 15, 2021

562E7F94-2B31-4580-9BD5-C92AB4B5F881

Hi Marcus

Ist zwar alles selbsterklärend, aber die neue Balkencolerierung kapiere ich nicht so genau. Je roter, desto Inzidenz, aber was ist der unterschiedlich hohe helle Sockel?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 15, 2021

562E7F94-2B31-4580-9BD5-C92AB4B5F881

Hi Marcus

Ist zwar alles selbsterklärend, aber die neue Balkencolerierung kapiere ich nicht so genau. Je roter, desto Inzidenz, aber was ist der unterschiedlich hohe helle Sockel?

Deine Frage ist absolut berechtigt; ich muss dringend mal eine kleine Erklärung hier schreiben. Das sind alles so Sachen, die mir nach und nach eingefallen sind. Die Balkenfarbe hat mal den Farben der SZ entsprochen (du siehst die Farben und Schwellwerte am Anfang des Codes), aber seit ja auch die Tagesschau damit Schindluder treibt, weiß ich nicht, ob das immer noch zusammen passt. Grundsätzlich: Je roter, dunkler desto höher.

Der helle Balken unten ist recht neu. Das ist der Zuwachs zur Inzidenz an diesem Tag, sprich die Fallzahl des Tages geteilt durch die Einwohnerzahl.

Und ich sehe gerade, dass du noch nicht den aktuellen Stand des Codes hast, denn dann müsste die Beschriftung der COVID-19 Betten links stehen. Schau mal ob das nach dem Update so ist.

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Apr 15, 2021

Kannst du bitte in den Quelltext oben noch eine Versionierung reinschreiben, dass Scriptable keine Unterstützung für Auto Updates hat, verstehe ich immer noch nicht.
Kreis Pinneberg hat mittlerweile gar keine Daten mehr :(

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 15, 2021

Kannst du bitte in den Quelltext oben noch eine Versionierung reinschreiben, dass Scriptable keine Unterstützung für Auto Updates hat, verstehe ich immer noch nicht.
Kreis Pinneberg hat mittlerweile gar keine Daten mehr :(

Ein automatisches Update kannst du via ScriptDude bekommen, aber du hast natürlich recht: eine Versionsnummer und ein Changelog wäre auch gut.

Was funktioniert beim Kreis Pinnneberg nicht; ich versuche das mal nachzustellen.

Done: Bei mir geht der LK Pinneberg mit der letzten Version

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Apr 15, 2021

Okay, schau ich mir den Script Dude mal an! Danke. Er zeigt: „Keine Statistik an“ - okay jetzt geht es nach 2 Tagen wieder... sorry

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 15, 2021

Okay, schau ich mir den Script Dude mal an! Danke. Er zeigt: „Keine Statistik an“ - okay jetzt geht es nach 2 Tagen wieder... sorry

Das kommt immer wieder mal vor, dass was ausfällt an diesen Schnittstellen des RKI ... ich hoffe, dass es jetzt wieder stabiler läuft; habe zwischenzeitlich auch mal eine andere Quelle genutzt aber wieder zurückgebaut.

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Apr 15, 2021

Und ich sehe gerade, dass du noch nicht den aktuellen Stand des Codes hast, denn dann müsste die Beschriftung der COVID-19 Betten links stehen. Schau mal ob das nach dem Update so ist.

Danke Dir, jetzt ist wieder alles klar. Ich habe die neueste Version. Nutze Scriptdude. Habe aber auch mal den RAW Code kopiert und als normales Script neu hinzugefügt, daraus entwickelt sich das gleiche Ergebnis.

sieht auf iPhone SE 1 und iPad Pro identisch aus.

6321EF06-56FC-4616-8045-31BB077257A3

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 15, 2021

Und ich sehe gerade, dass du noch nicht den aktuellen Stand des Codes hast, denn dann müsste die Beschriftung der COVID-19 Betten links stehen. Schau mal ob das nach dem Update so ist.

Danke Dir, jetzt ist wieder alles klar. Ich habe die neueste Version. Nutze Scriptdude. Habe aber auch mal den RAW Code kopiert und als normales Script neu hinzugefügt, daraus entwickelt sich das gleiche Ergebnis.

sieht auf iPhone SE 1 und iPad Pro identisch aus.

6321EF06-56FC-4616-8045-31BB077257A3

Ups. Mein Fehler. Ich hätte es auch einchecken sollen … Ist jetzt drin.

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Apr 15, 2021

Danke, jetzt hatte Script dude das Update verfügbar und nach dem Update ist der Bettenstatus schön linksbündig!

@hxperman

This comment has been minimized.

Copy link

@hxperman hxperman commented Apr 22, 2021

erstmal vielen Dank für dieses tolle Widget. Gibt es das auch schon für Deutschland und für ein Bundesland?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 22, 2021

erstmal vielen Dank für dieses tolle Widget. Gibt es das auch schon für Deutschland und für ein Bundesland?

Danke! Nein, im Moment ist alles auf Ebene des Landkreis. Könnte man natürlich programmieren …

@erknbyhn

This comment has been minimized.

Copy link

@erknbyhn erknbyhn commented Apr 25, 2021

Hi Marcus
ich habe im LK Saarpfalz Kreis auch die Meldung „keine Statistik gefunden“.

Kannst du mal bitte kurz schauen? Danke

@lr1980

This comment has been minimized.

Copy link

@lr1980 lr1980 commented Apr 26, 2021

gerade durch https://www.youtube.com/watch?v=GY078i2T_NE dein Script entdeckt... wirklich schöne Umsetzung! Danke dafür!

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 26, 2021

gerade durch https://www.youtube.com/watch?v=GY078i2T_NE dein Script entdeckt... wirklich schöne Umsetzung! Danke dafür!

Wow. Danke. War mir gar nicht bewusst, dass mein Skript dort gefeatured wurde.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 26, 2021

Hi Marcus
ich habe im LK Saarpfalz Kreis auch die Meldung „keine Statistik gefunden“.

Kannst du mal bitte kurz schauen? Danke

Das war trickreich. In der Tabelle mit den Daten heißt es "Saarpfalz-Kreis" und in der übergreifenden im Attribut "county" heißt es "Saar-Pfalz-Kreis". Ich habe es jetzt behoben indem für die Abfrage nicht dieses Attribut verwendet wird, sondern das Attribut GEN. Muss dich alles nicht interessieren, ist mehr für mich zur Dokumentation. Es geht jedenfalls auch bei dir

@jo2h2

This comment has been minimized.

Copy link

@jo2h2 jo2h2 commented Apr 27, 2021

Hi Marcus,

habe gerade Dein Script via ScriptDude auf 1.0.2 aktualisiert und bekomme jetzt nur noch ein schwarzes Fenster - mache ich etwas falsch ? Bin im LK Landsberg (LL)

Danke und beste Grüße,
Jo …

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 27, 2021

Hi Marcus,

habe gerade Dein Script via ScriptDude auf 1.0.2 aktualisiert und bekomme jetzt nur noch ein schwarzes Fenster - mache ich etwas falsch ? Bin im LK Landsberg (LL)

Danke und beste Grüße,
Jo …

Hi Jo, war klar, dass auch das Feld GEN irgendwo zu einen Fehler führt (hier heißt es einmal Landsberg a. Lech und einmal Landsberg am Lech). Ich frage jetzt nacheinander einfach beide an. Sollte jetzt funktionieren.

@onkel645

This comment has been minimized.

Copy link

@onkel645 onkel645 commented Apr 27, 2021

Hallo.
danke für dein sehr gutes Widget.
Ich möchte mir einen festen Landkreis anzeigen lassen. Wo genau und wie trage ich die Koordinaten ein? (Sorry wenn es eine „dumme“ Frage ist)

Gruß

@JDTm

This comment has been minimized.

Copy link

@JDTm JDTm commented Apr 27, 2021

München ist jetzt auch kaputt - die haben wohl mehr geändert.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 27, 2021

München ist jetzt auch kaputt - die haben wohl mehr geändert.

Jetzt habe ich das Join-Kriterium nochmal angepasst (auf den AGS=Allgemeiner Gemeindeschlüssel und nur wenn der nicht da ist – auch das gibt es in Berlin – nehme ich erst GEN und dann den Namen des Landkreis) jetzt sollte es wieder gehen.

Irgendwann müssen wir mit den Kollegen beim RKI mal über Datenmodelle reden …

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 27, 2021

Hallo.
danke für dein sehr gutes Widget.
Ich möchte mir einen festen Landkreis anzeigen lassen. Wo genau und wie trage ich die Koordinaten ein? (Sorry wenn es eine „dumme“ Frage ist)

Gruß

Danke! Keine dumme Frage, nur meine Nachlässigkeit bei der Dokumentation. Einfach bei dem Widget auf dem Homescreen (also nicht innerhalb von Scriptable) lange drücken und dann "Widget bearbeiten"; dort gibt es unten Parameter. Dort bitte einfach Breitengrad,Längengrad (z.B. aus Google Maps) eingeben (bitte mit . als Dezimaltrenner, weil das Komma die Parameter trennt)

@onkel645

This comment has been minimized.

Copy link

@onkel645 onkel645 commented Apr 27, 2021

Hallo.
danke für dein sehr gutes Widget.
Ich möchte mir einen festen Landkreis anzeigen lassen. Wo genau und wie trage ich die Koordinaten ein? (Sorry wenn es eine „dumme“ Frage ist)
Gruß

Danke! Keine dumme Frage, nur meine Nachlässigkeit bei der Dokumentation. Einfach bei dem Widget auf dem Homescreen (also nicht innerhalb von Scriptable) lange drücken und dann "Widget bearbeiten"; dort gibt es unten Parameter. Dort bitte einfach Breitengrad,Längengrad (z.B. aus Google Maps) eingeben (bitte mit . als Dezimaltrenner, weil das Komma die Parameter trennt)

Perfekt. Danke

@theGitMichel

This comment has been minimized.

Copy link

@theGitMichel theGitMichel commented Apr 29, 2021

irgendwie bringt der Code bei mir Scriptable zum Absturz. ich hab den Code 1:1 aus dem RAW kopiert und nichts dran verändert.
Mach ich irgendwas falsch? Oder liegt es ggf. an meinem Standort? (Ortenaukreis / Baden-Württemberg)

Ein anderes Inzidenzwidget bzw. auch das dm-Toilettenpapier-Widget funktionieren. Daher würd ich den "Defekt" jetzt mal im Code suchen...

@Crady123

This comment has been minimized.

Copy link

@Crady123 Crady123 commented Apr 29, 2021

Habe genau das gleiche Problem… Scripable crasht bei diesem Script.
Es ging aber mal… hatte aber oft das Problem, dass im Widget keine Infos geladen werden konnten.
Nach dem Neustart vom iPhone habe ich das Absturz - Problem.

@dennerforen

This comment has been minimized.

Copy link

@dennerforen dennerforen commented Apr 29, 2021

Bei mir löuft es auch nach einem Neustart 1a

scribt per Link in scriptdude eingebunden, iOS 14.6 Beta 1

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 29, 2021

irgendwie bringt der Code bei mir Scriptable zum Absturz. ich hab den Code 1:1 aus dem RAW kopiert und nichts dran verändert.
Mach ich irgendwas falsch? Oder liegt es ggf. an meinem Standort? (Ortenaukreis / Baden-Württemberg)

Ein anderes Inzidenzwidget bzw. auch das dm-Toilettenpapier-Widget funktionieren. Daher würd ich den "Defekt" jetzt mal im Code suchen...

Ist ein Problem mit den Impfdaten in BW (und meines unzureichenden Fehlerhandlings) Ich baue das nachher auf eine bessere Schnittstelle um.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented Apr 29, 2021

So, probiert es bitte jetzt nochmal. Sollte jetzt stabiler sein.

@theGitMichel

This comment has been minimized.

Copy link

@theGitMichel theGitMichel commented Apr 29, 2021

Perfekt! Bei mir in BW funktioniert es jetzt.
👌🏻👌🏻👌🏻👌🏻👌🏻

@RednUhT-0815

This comment has been minimized.

Copy link

@RednUhT-0815 RednUhT-0815 commented May 5, 2021

Hi, ich finde das Script wirklich toll. Vielen Dank für die Arbeit die du dir damit machst.
Wenn ich mir was wünschen dürfte hätte ich gerne eine eigene Farbe für die Inzinenz unter 165 (wgn. Schulöffnung/Schließung ab diesem Wert). So kann man schneller sehen ob es gerade gut läuft oder langsam eng wird.
LG

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 5, 2021

Hi, ich finde das Script wirklich toll. Vielen Dank für die Arbeit die du dir damit machst.
Wenn ich mir was wünschen dürfte hätte ich gerne eine eigene Farbe für die Inzinenz unter 165 (wgn. Schulöffnung/Schließung ab diesem Wert). So kann man schneller sehen ob es gerade gut läuft oder langsam eng wird.
LG

Danke für dein Feedback. Das ist eine sehr gute Idee, an die ich noch nicht gedacht hatte. Vielleicht würde es sich auch anbieten die 165 als Schwelle explizit einzuzeichnen anstatt das farbig zu machen. Muss ich mal ausprobieren.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 6, 2021

@RednUhT-0815 Sollte jetzt funktionieren; ist nun auch konfigurierbar am Anfang des Skripts.

@kschelle

This comment has been minimized.

Copy link

@kschelle kschelle commented May 9, 2021

Hi!
Gibt es eine Chance, das super Script dahingehend anzupassen, dass es egal ist wo man ist und die Situation an einem wählbar anderem Ort angezeigt bekommt?
Würde gern Vergleichsorte von Freunden genauso im Blick haben.
DANKE!

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 9, 2021

Hi!
Gibt es eine Chance, das super Script dahingehend anzupassen, dass es egal ist wo man ist und die Situation an einem wählbar anderem Ort angezeigt bekommt?
Würde gern Vergleichsorte von Freunden genauso im Blick haben.
DANKE!

Hi! Das geht schon. Du kannst das Skript auch mehrfach auf dem Homescreen haben und dann dort in den Parametern (lang draufdrücken und dann „Widget bearbeiten“) einfach die Koordination des Orts eingeben als Breitengrad,Längengrad (beide jeweils mit Punkt als Dezimaltrenner), z.B. 48.13,11.57 für München.

@kschelle

This comment has been minimized.

Copy link

@kschelle kschelle commented May 9, 2021

Klingt gut! Danke schon mal dafür.
Du meinst Zeile 176ff?
Könntest Du das bitte genauer noch beschreiben, wo die Koordinaten einzutragen sind?
Vielen Dank!!! 🙂

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 9, 2021

Klingt gut! Danke schon mal dafür.
Du meinst Zeile 176ff?
Könntest Du das bitte genauer noch beschreiben, wo die Koordinaten einzutragen sind?
Vielen Dank!!! 🙂

Das ginge natürlich auch, aber es gibt eine viel einfachere Möglichkeit. Du hast das Widget ja irgendwo auf deinem Homescreen. Dort musst du dann lange draufdrücken bis das folgende Menü kommt:

IMG_0983

Da klickst du dann "Widget bearbeiten" und dann bekommst du das Menü:

IMG_0984

Und dort bei Parameter trägst du dann die Koordinaten ein.

@kschelle

This comment has been minimized.

Copy link

@kschelle kschelle commented May 9, 2021

Danke, das fehlte mir! Klasse!

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 9, 2021

Gerne. Und wie gesagt: Du kannst auch das Widget mehrfach auf den Homescreen packen mit unterschiedlichen Parametern.

@kschelle

This comment has been minimized.

Copy link

@kschelle kschelle commented May 10, 2021

Ja Danke, das war mir klar 😎

@toddy1986

This comment has been minimized.

Copy link

@toddy1986 toddy1986 commented May 10, 2021

Gibt es die Möglichkeit den R-Wert noch irgendwie einzubauen?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Gibt es die Möglichkeit den R-Wert noch irgendwie einzubauen?

Auf die Schnelle habe ich diesen Wert nicht in den APIs des RKI gefunden. Insofern könnte das eher schwierig werden und wenn dann nur auf Bundesebene.

@MeteoMartini

This comment has been minimized.

Copy link

@MeteoMartini MeteoMartini commented May 10, 2021

Zuvorderst: großartiges Widget, das mir schon seit einigen Wochen zum Plotten der Inzidenzen mehrerer Kreise dient!

Meine Frage: wieso hast du dich dafür entschieden, als Tag (heute -1) zu verwenden? Zwar stammen die Zahlen natürlich von gestern, aber es ist schnell verwirrend, da es im Vergleich zu anderen Darstellungen im Netz nicht mehr einheitlich ist. (insbesondere auch, wenn es um die Anzeige der (Werk-)Tage mit Inzidenzen > < 100 geht für Notbremse ja / nein.)

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Zuvorderst: großartiges Widget, das mir schon seit einigen Wochen zum Plotten der Inzidenzen mehrerer Kreise dient!

Meine Frage: wieso hast du dich dafür entschieden, als Tag (heute -1) zu verwenden? Zwar stammen die Zahlen natürlich von gestern, aber es ist schnell verwirrend, da es im Vergleich zu anderen Darstellungen im Netz nicht mehr einheitlich ist. (insbesondere auch, wenn es um die Anzeige der (Werk-)Tage mit Inzidenzen > < 100 geht für Notbremse ja / nein.)

Danke für Dein Feedback! Freut mich sehr.

Zu Deiner Frage: Das hat historische Gründe. Das ursprüngliche Skript auf dem ich vor langer Zeit mal aufgesetzt hatte, hat die Fallzahlen pro Tag angezeigt. Aus der Schnittstelle bekomme ich immer die Zahlen von maximal gestern. Ich habe nun einfach statt den Fallzahlen pro Tag die 7-Tage-Inzidenz berechnet und sozusagen implizit definiert, dass das dann die Inzidenz an dem Tag ist für den es den letzten Wert an Fällen gibt, also gestern. Ich habe gerade nachgeschaut und festgestellt, dass das RKI das tatsächlich in ihrem Excel anders definiert hat (vgl. https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html). Demnach ist die 7-Tage-Inzidenz von heute die Summe der letzten 7 Tage beginnend mit gestern.

So weit mein Denkprozess. Lange Rede kurzer Sinn: Es gibt keinen tieferen Sinn außer dass ich nicht länger drüber nachgedacht hatte. Ich werde das heute Abend ändern.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Ist umgesetzt. Probier's einfach mal aus.

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Gibt es die Möglichkeit den R-Wert noch irgendwie einzubauen?

Auf die Schnelle habe ich diesen Wert nicht in den APIs des RKI gefunden. Insofern könnte das eher schwierig werden und wenn dann nur auf Bundesebene.

Ist auch umgesetzt.

IMG_0986

@matze1708

This comment has been minimized.

Copy link

@matze1708 matze1708 commented May 10, 2021

Hallo,
Besteht die Möglichkeit das du den Bezug der Inszidenzen von der api.corona-zahlen.de holst?
Wenn möglich bitte von den Frozen! Das ist ziemlich neu.

durch die Nachmeldungen, hat man das Problem, dass man zwar die richtigen aber für den LK falschen Werte bekommt.

danke dir

@MeteoMartini

This comment has been minimized.

Copy link

@MeteoMartini MeteoMartini commented May 10, 2021

Ist umgesetzt. Probier's einfach mal aus.

Top und so fix, vielen Dank! 👍🏼

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Hallo,
Besteht die Möglichkeit das du den Bezug der Inszidenzen von der api.corona-zahlen.de holst?
Wenn möglich bitte von den Frozen! Das ist ziemlich neu.

durch die Nachmeldungen, hat man das Problem, dass man zwar die richtigen aber für den LK falschen Werte bekommt.

danke dir

Theoretisch könnte ich das machen, verstehe aber noch nicht ganz welches Problem ich damit lösen würde. Derzeit hole ich direkt beim RKI die Fallzahlen der letzten X Tage und bilde darüber dann die Inzidenzen, d.h. für den Tag heute (10.5.) wird aufsummiert die (heute abgeholten) Fallzahlen vom 9.5., 8.5., 7.5., 6.5., 5.5., 4.5., 3.5. und dann durch 7 geteilt und auf die Einwohnerzahl normiert. Was ist daran nicht korrekt bzw. was wäre mit den Frozen-Werten der anderen Schnittstelle besser?

@theGitMichel

This comment has been minimized.

Copy link

@theGitMichel theGitMichel commented May 10, 2021

Muss ich was tun, damit mir der R-Wert angezeigt wird?
Hab es jetzt for den Ortenaukreis (automatische Ortung) und den Main-Kinzig-Kreis (über Angabe von Parametern) ausprobiert, und in beiden Widgets wird dieser nicht angezeigt.

Wobei der Standort ja eigentlich egal ist. Der ist ja eh Bundesweit, oder?

@marcusraitner

This comment has been minimized.

Copy link
Owner Author

@marcusraitner marcusraitner commented May 10, 2021

Muss ich was tun, damit mir der R-Wert angezeigt wird?
Hab es jetzt for den Ortenaukreis (automatische Ortung) und den Main-Kinzig-Kreis (über Angabe von Parametern) ausprobiert, und in beiden Widgets wird dieser nicht angezeigt.

Wobei der Standort ja eigentlich egal ist. Der ist ja eh Bundesweit, oder?

Du musst zusätzlich noch das Feature aktivieren, indem du in Zeile 32 "const showGermanyValue = true" setzt. Ich habe das Feature erst mal deaktiviert.

@theGitMichel

This comment has been minimized.

Copy link

@theGitMichel theGitMichel commented May 10, 2021

Muss ich was tun, damit mir der R-Wert angezeigt wird?
Hab es jetzt for den Ortenaukreis (automatische Ortung) und den Main-Kinzig-Kreis (über Angabe von Parametern) ausprobiert, und in beiden Widgets wird dieser nicht angezeigt.
Wobei der Standort ja eigentlich egal ist. Der ist ja eh Bundesweit, oder?

Du musst zusätzlich noch das Feature aktivieren, indem du in Zeile 32 "const showGermanyValue = true" setzt. Ich habe das Feature erst mal deaktiviert.

Hab es grade schon selbst gefunden. War etwas vorschnell mit meiner Frage. 😇

Vielen Dank für die klasse Arbeit! 👍👍👍👍👍

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