Last active
March 6, 2024 13:47
-
-
Save eggsy/176bab135677d1b2110eef8ce2cdb3c9 to your computer and use it in GitHub Desktop.
Easily watch every country that participated in Ship for World Youth 2024 program time from your home screen!
This file contains 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
const widget = await createWidget(); | |
if (config.runsInWidget) { | |
Script.setWidget(widget); | |
} else { | |
widget.presentMedium(); | |
} | |
Script.complete(); | |
async function createWidget() { | |
const wg = new ListWidget(); | |
const currentDate = new Date(); | |
const titleText = wg.addText("๐ SWY35 Clock"); | |
titleText.centerAlignText(); | |
titleText.font = new Font("Menlo-Bold", 14) | |
wg.addSpacer(10) | |
const countries = [ | |
{ | |
name: "Argentina", | |
timeZone: "America/Argentina/Buenos_Aires", | |
flag: "๐ฆ๐ท", | |
}, | |
{ name: "Ethiopia", timeZone: "Africa/Addis_Ababa", flag: "๐ช๐น" }, | |
{ name: "France", timeZone: "Europe/Paris", flag: "๐ซ๐ท" }, | |
{ name: "India", timeZone: "Asia/Kolkata", flag: "๐ฎ๐ณ" }, | |
{ name: "Ireland", timeZone: "Europe/Dublin", flag: "๐ฎ๐ช" }, | |
{ name: "Japan", timeZone: "Asia/Tokyo", flag: "๐ฏ๐ต" }, | |
{ name: "Jordan", timeZone: "Asia/Amman", flag: "๐ฏ๐ด" }, | |
{ name: "Kenya", timeZone: "Africa/Nairobi", flag: "๐ฐ๐ช" }, | |
{ name: "Mexico", timeZone: "America/Mexico_City", flag: "๐ฒ๐ฝ" }, | |
{ name: "New Zealand", timeZone: "Pacific/Auckland", flag: "๐ณ๐ฟ" }, | |
{ name: "Solomon", timeZone: "Pacific/Guadalcanal", flag: "๐ธ๐ง" }, | |
{ name: "Tรผrkiye", timeZone: "Europe/Istanbul", flag: "๐น๐ท" }, | |
{ name: "UAE", timeZone: "Asia/Dubai", flag: "๐ฆ๐ช" }, | |
{ name: "Zambia", timeZone: "Africa/Lusaka", flag: "๐ฟ๐ฒ" }, | |
]; | |
const halfwayIndex = Math.ceil(countries.length / 2); | |
const parentStack = wg.addStack(); | |
const leftStack = parentStack.addStack(); | |
parentStack.addSpacer(12); | |
const rightStack = parentStack.addStack(); | |
leftStack.layoutVertically(); | |
rightStack.layoutVertically(); | |
leftStack.spacing = 2; | |
rightStack.spacing = 2; | |
for (const countryIndex in countries) { | |
const country = countries[countryIndex]; | |
const countryDate = new Date( | |
new Date().toLocaleString("en-US", { timeZone: country.timeZone }) | |
); | |
const time = new Date().toLocaleTimeString("en-US", { | |
hour: "2-digit", | |
minute: "2-digit", | |
timeZone: country.timeZone, | |
}); | |
const timeText = `${country.flag} ${country.name}: ${time}`; | |
if (currentDate.getDate() !== countryDate.getDate()) { | |
const dayDifference = currentDate.getDate() - countryDate.getDate(); | |
const dayNotice = | |
dayDifference > 0 | |
? `(+${dayDifference})` | |
: `(-${Math.abs(dayDifference)})`; | |
timeText.text += ` ${dayNotice}`; | |
} | |
if (countryIndex < halfwayIndex) { | |
const t = leftStack.addText(timeText); | |
t.font = new Font("Menlo", 11); | |
} else { | |
const t = rightStack.addText(timeText); | |
t.font = new Font("Menlo", 11); | |
} | |
} | |
return wg; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment