iOS widget powered by the Scriptable app that shows the current capacity of your XtraFIT gym
/** | |
* Script for scriptable to get the current capacity of XTRAFIT Gyms | |
*/ | |
let gymId = 210 | |
let param = args.widgetParameter | |
if (param != null && param.length > 0) { | |
gymId = param | |
} | |
const gymDetails = await fetchGymDetails(gymId) | |
const currentGymCapacity = await fetchGymCapacity(gymDetails) | |
const gymName = gymDetails.webName | |
const widget = new ListWidget() | |
await createWidget() | |
if (!config.runsInWidget) { | |
await widget.presentSmall() | |
} | |
Script.setWidget(widget) | |
Script.complete() | |
//Create the widget | |
async function createWidget() { | |
const headlineText = widget.addText("🏋️ Capacity") | |
headlineText.font = Font.mediumRoundedSystemFont(19) | |
widget.addSpacer() | |
const widgetStack = widget.addStack() | |
widgetStack.layoutVertically() | |
widgetStack.bottomAlignContent() | |
const capacityText = widgetStack.addText(currentGymCapacity.toString() + "%") | |
capacityText.font = Font.mediumRoundedSystemFont(50) | |
if (currentGymCapacity < 20) { | |
capacityText.textColor = new Color("#33cc33") | |
} else if (currentGymCapacity < 30){ | |
capacityText.textColor = new Color("#ff9900") | |
}else{ | |
capacityText.textColor = new Color("#ff3300") | |
} | |
widgetStack.addSpacer(1) | |
const gymNameText = widgetStack.addText(gymName) | |
gymNameText.font = Font.regularSystemFont(12) | |
} | |
//Fetches the current capacity of the XTRAFit gym | |
async function fetchGymDetails(id) { | |
const url = 'https://xtrafitclubsdynamic.hirschenvalley.de/application' | |
const req = new Request(url) | |
req.headers = {"Content-Type": "application/json"} | |
const apiResult = await req.loadJSON() | |
for (var i in apiResult){ | |
if(apiResult[i].centerId == id) | |
{ | |
return apiResult[i] | |
} | |
} | |
return {webName: 'Studio nicht gefunden', currentlyCheckedInCount: 0, maximumAllowedCheckedIn: 0} | |
} | |
//Fetches the Capacity of the gym | |
async function fetchGymCapacity(gymDetails) { | |
return gymDetails.currentlyCheckedInCount * 100 / gymDetails.maximumAllowedCheckedIn || 0 | |
} |
This comment has been minimized.
This comment has been minimized.
Ist da eine Störung?????? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Fork of https://gist.github.com/masselmello/6d4f4c533b98b2550ee23a7a5e6c6cff
How to use: