Garden was welded onto the notification list in CenterWidgetGroup — always on, unrelated, stealing space from notifications that said "Nothing". Moved it into the BottomWidgetGroup drawer as a fifth tab alongside Calendar, To Do, Pomodoro, and Stopwatch. CenterWidgetGroup is now just the notification list. Lens events (note_created, synced) emit through notify-send so they land in the notification system properly. Forked calendar, todo, pomodoro, notifications out of ii-base into our tree — the right sidebar no longer borrows any widget files from ii. Toggle dialogs (bluetooth, wifi, nightLight) still symlinked as infrastructure.
113 lines
3.5 KiB
JavaScript
113 lines
3.5 KiB
JavaScript
const weekDays = [ // MONDAY IS THE FIRST DAY OF THE WEEK :HESRIGHTYOUKNOW:
|
|
{ day: 'Mo', today: 0 },
|
|
{ day: 'Tu', today: 0 },
|
|
{ day: 'We', today: 0 },
|
|
{ day: 'Th', today: 0 },
|
|
{ day: 'Fr', today: 0 },
|
|
{ day: 'Sa', today: 0 },
|
|
{ day: 'Su', today: 0 },
|
|
]
|
|
|
|
function checkLeapYear(year) {
|
|
return (
|
|
year % 400 == 0 ||
|
|
(year % 4 == 0 && year % 100 != 0));
|
|
}
|
|
|
|
function getMonthDays(month, year) {
|
|
const leapYear = checkLeapYear(year);
|
|
if ((month <= 7 && month % 2 == 1) || (month >= 8 && month % 2 == 0)) return 31;
|
|
if (month == 2 && leapYear) return 29;
|
|
if (month == 2 && !leapYear) return 28;
|
|
return 30;
|
|
}
|
|
|
|
function getNextMonthDays(month, year) {
|
|
const leapYear = checkLeapYear(year);
|
|
if (month == 1 && leapYear) return 29;
|
|
if (month == 1 && !leapYear) return 28;
|
|
if (month == 12) return 31;
|
|
if ((month <= 7 && month % 2 == 1) || (month >= 8 && month % 2 == 0)) return 30;
|
|
return 31;
|
|
}
|
|
|
|
function getPrevMonthDays(month, year) {
|
|
const leapYear = checkLeapYear(year);
|
|
if (month == 3 && leapYear) return 29;
|
|
if (month == 3 && !leapYear) return 28;
|
|
if (month == 1) return 31;
|
|
if ((month <= 7 && month % 2 == 1) || (month >= 8 && month % 2 == 0)) return 30;
|
|
return 31;
|
|
}
|
|
|
|
function getDateInXMonthsTime(x) {
|
|
var currentDate = new Date(); // Get the current date
|
|
if (x == 0) return currentDate; // If x is 0, return the current date
|
|
|
|
var targetMonth = currentDate.getMonth() + x; // Calculate the target month
|
|
var targetYear = currentDate.getFullYear(); // Get the current year
|
|
|
|
// Adjust the year and month if necessary
|
|
targetYear += Math.floor(targetMonth / 12);
|
|
targetMonth = (targetMonth % 12 + 12) % 12;
|
|
|
|
// Create a new date object with the target year and month
|
|
var targetDate = new Date(targetYear, targetMonth, 1);
|
|
|
|
// Set the day to the last day of the month to get the desired date
|
|
// targetDate.setDate(0);
|
|
|
|
return targetDate;
|
|
}
|
|
|
|
function getCalendarLayout(dateObject, highlight) {
|
|
if (!dateObject) dateObject = new Date();
|
|
const weekday = (dateObject.getDay() + 6) % 7; // MONDAY IS THE FIRST DAY OF THE WEEK
|
|
const day = dateObject.getDate();
|
|
const month = dateObject.getMonth() + 1;
|
|
const year = dateObject.getFullYear();
|
|
const weekdayOfMonthFirst = (weekday + 35 - (day - 1)) % 7;
|
|
const daysInMonth = getMonthDays(month, year);
|
|
const daysInNextMonth = getNextMonthDays(month, year);
|
|
const daysInPrevMonth = getPrevMonthDays(month, year);
|
|
|
|
// Fill
|
|
var monthDiff = (weekdayOfMonthFirst == 0 ? 0 : -1);
|
|
var toFill, dim;
|
|
if (weekdayOfMonthFirst == 0) {
|
|
toFill = 1;
|
|
dim = daysInMonth;
|
|
}
|
|
else {
|
|
toFill = (daysInPrevMonth - (weekdayOfMonthFirst - 1));
|
|
dim = daysInPrevMonth;
|
|
}
|
|
var calendar = [...Array(6)].map(() => Array(7));
|
|
var i = 0, j = 0;
|
|
while (i < 6 && j < 7) {
|
|
calendar[i][j] = {
|
|
"day": toFill,
|
|
"today": ((toFill == day && monthDiff == 0 && highlight) ? 1 : (
|
|
monthDiff == 0 ? 0 : -1
|
|
))
|
|
};
|
|
// Increment
|
|
toFill++;
|
|
if (toFill > dim) { // Next month?
|
|
monthDiff++;
|
|
if (monthDiff == 0)
|
|
dim = daysInMonth;
|
|
else if (monthDiff == 1)
|
|
dim = daysInNextMonth;
|
|
toFill = 1;
|
|
}
|
|
// Next tile
|
|
j++;
|
|
if (j == 7) {
|
|
j = 0;
|
|
i++;
|
|
}
|
|
|
|
}
|
|
return calendar;
|
|
}
|