Last active
September 3, 2020 13:49
-
-
Save NickChristensen/815240429a001866df4dba40bec11769 to your computer and use it in GitHub Desktop.
Smashed this together from Scriptable’s example plus my bitbar version
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let getCandidateByShortname = (candidates, shortName) => | |
candidates.find((candidate) => candidate.shortName === shortName); | |
let floatsToInts = (candidate) => ({ | |
...candidate, | |
lastTradePrice: round(candidate.lastTradePrice), | |
lastClosePrice: round(candidate.lastClosePrice), | |
}); | |
let round = (float) => Math.round(float * 100); | |
let changeToday = (now, close) => { | |
if (now === close) { | |
return ""; | |
} else if (now - close > 0) { | |
return ` (↑${Math.abs(now - close)})`; | |
} else { | |
return ` (↓${Math.abs(now - close)})`; | |
} | |
}; | |
let createWidget = results => { | |
const [biden, trump] = ["Biden", "Trump"] | |
.map((shortName) => getCandidateByShortname(results.contracts, shortName)) | |
.map(floatsToInts); | |
const leadNow = biden.lastTradePrice - trump.lastTradePrice; | |
const leadAtLastClose = biden.lastClosePrice - trump.lastClosePrice; | |
let w = new ListWidget() | |
let emoji = w.addText("🗳") | |
emoji.applyHeadlineTextStyling(); | |
w.addSpacer(16) | |
let titleTxt = w.addText(`${leadNow}${changeToday(leadNow, leadAtLastClose)}`) | |
titleTxt.applyHeadlineTextStyling(); | |
w.addSpacer(8); | |
[biden, trump].forEach((candidate) => { | |
let text = w.addText(`${candidate.lastTradePrice} ${candidate.shortName}${changeToday( | |
candidate.lastTradePrice, | |
candidate.lastClosePrice | |
)}`) | |
text.applySubheadlineTextStyling() | |
text.textOpacity = 0.8; | |
}); | |
w.addSpacer() | |
w.url = "https://www.predictit.org/markets/detail/3698" | |
return w | |
} | |
const loadResults = async () => { | |
let url = "https://www.predictit.org/api/marketdata/markets/3698" | |
let req = new Request(url) | |
let json = await req.loadJSON() | |
return json | |
} | |
let results = await loadResults() | |
let widget = createWidget(results) | |
if (config.runsInWidget) { | |
Script.setWidget(widget) | |
Script.complete() | |
} else { | |
widget.presentSmall() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment