Skip to content

Instantly share code, notes, and snippets.

@BoxOfSnoo
Created March 8, 2021 00:44
Show Gist options
  • Save BoxOfSnoo/dd878fbe5ec5e5fae9e2abcebf581450 to your computer and use it in GitHub Desktop.
Save BoxOfSnoo/dd878fbe5ec5e5fae9e2abcebf581450 to your computer and use it in GitHub Desktop.
Anniversaries
// 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