Created
March 8, 2021 00:44
-
-
Save BoxOfSnoo/dd878fbe5ec5e5fae9e2abcebf581450 to your computer and use it in GitHub Desktop.
Anniversaries
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
// Anniversaries v1.1 Jan 2019 | |
let currentMonth = new Date().getMonth(); | |
let startDate = new Date(new Date().setMonth(currentMonth-6)); | |
// Add two months from today to show some upcoming anniversaries | |
let endDate = new Date(new Date().setMonth(currentMonth+7)); | |
// Add a convenience function for brief month names | |
Date.prototype.getMonthName = function() { | |
return ["Jan", "Feb", "Mar", | |
"Apr", "May", "Jun", | |
"Jul", "Aug", "Sep", | |
"Oct", "Nov", "Dec" | |
][this.getMonth()]; | |
}; | |
let events = await CalendarEvent.between(startDate, endDate); | |
let table = new UITable(); | |
table.showSeparators = true; | |
for (var i=0; events.length>i; i++) { | |
let title = events[i].title; | |
let eventDate = events[i].endDate; | |
let formattedEventDate = eventDate.getMonthName() + " " + eventDate.getDate() + " " + eventDate.getFullYear(); | |
// Calculate from a year in the title if available | |
let eventYear = title.match(/\d{4}/g); | |
if (title.includes("nniversary") | title.includes("edding")) { | |
// initialize all values | |
let rowYears; | |
let row = new UITableRow(); | |
let rowText = formattedEventDate + ": " + title; | |
if (eventYear !== null) { | |
// Figure out date of first event, even if the first *calendar event* is later | |
// e.g. you meet someone and enter their anniversary and year | |
firstEvent = new Date( | |
eventYear, | |
eventDate.getMonth(), | |
eventDate.getDate() | |
); | |
// this year's anniversary date - not necessarily current year, but year according to loop | |
anniversaryDate = new Date( | |
eventDate.getFullYear(), | |
eventDate.getMonth(), | |
eventDate.getDate() | |
); | |
rowYears = parseInt( | |
(anniversaryDate - firstEvent) / | |
(1000*60*60*24*365) | |
); // convert ms to years | |
// Upcoming events | |
// ignore upcoming weddings even if they have a year in the title | |
if (firstEvent > anniversaryDate && !title.includes("edding")) { | |
rowYears += 1; | |
} | |
rowYears += " years"; | |
} else { | |
if (title.includes("edding")) { | |
rowYears = "0 years so far!"; | |
} | |
} | |
if (eventDate < new Date()) { // Past events | |
row.backgroundColor = new Color("#ccc", 1); | |
} | |
row.addText(rowText, rowYears); | |
table.addRow(row); | |
} | |
} | |
table.present() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment