Skip to content

Instantly share code, notes, and snippets.

@allesmatze
Created October 21, 2020 10:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save allesmatze/ff9daf8be764dd95ff17f5554e806ffd to your computer and use it in GitHub Desktop.
Save allesmatze/ff9daf8be764dd95ff17f5554e806ffd to your computer and use it in GitHub Desktop.
Outletcity Parkplätze Widget für Scriptable App
const apiUrl = `https://appbackend.outletcity.com/v1_1/public/parkingUtilisation`
let widget = await createWidget()
if (!config.runsInWidget) {
await widget.presentMedium()
}
Script.setWidget(widget)
Script.complete()
async function createWidget(items) {
const data = await new Request(apiUrl).loadJSON()
if(!data || !data.items || !data.items.length) {
const errorList = new ListWidget()
errorList.addText("Daten für Outletcity Parkplätze nicht verfügbar")
return errorList
}
const parkItems = data.items
parkItems.sort(function(a, b){
return (b.parkingLotsFree / b.parkingLotsTotal) - (a.parkingLotsFree / a.parkingLotsTotal)
});
const list = new ListWidget()
const header = list.addText("🅿️ Outletcity".toUpperCase())
header.font = Font.mediumSystemFont(13)
list.addSpacer()
for(var i = 0; i < parkItems.length; i++) {
const label = list.addText(getParkingDetails(parkItems[i]))
label.font = Font.systemFont(13)
list.addSpacer()
}
function getParkingDetails(parkItem) {
let freePrecentage = parkItem.parkingLotsFree / parkItem.parkingLotsTotal
let indicator = parkItem.parkingLotsFree === 0 ? "⛔️" : "✅"
if (config.widgetFamily == "small") {
return indicator + " " + parkItem.id + ": " + parkItem.parkingLotsFree + " frei"
} else {
return indicator + " " + parkItem.id + ": " + parkItem.parkingLotsFree + " von " + parkItem.parkingLotsTotal + " Parkplätzen frei (" + (freePrecentage * 100).toFixed(0) + "%)"
}
}
return list
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment