From d8c08c8451dc5bc5baafd95d0b3560ac6ab0f8ec Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 11 Aug 2025 14:01:25 -0600 Subject: [PATCH] shift updated fixes --- map/app/public/js/admin.js | 14 +- map/app/public/js/shifts.js | 32 +- map/app/public/js/shifts.js.backup | 1147 ++++++++++++++++++++++++++++ 3 files changed, 1181 insertions(+), 12 deletions(-) create mode 100644 map/app/public/js/shifts.js.backup diff --git a/map/app/public/js/admin.js b/map/app/public/js/admin.js index fda256a..6b38cfc 100644 --- a/map/app/public/js/admin.js +++ b/map/app/public/js/admin.js @@ -3,6 +3,16 @@ let adminMap = null; let startMarker = null; let storedQRCodes = {}; +// Utility function to create a local date from YYYY-MM-DD string +// This prevents timezone issues when displaying dates +function createLocalDate(dateString) { + if (!dateString) return null; + const parts = dateString.split('-'); + if (parts.length !== 3) return new Date(dateString); // fallback to original behavior + // Create date using local timezone (year, month-1, day) + return new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])); +} + // A function to set viewport dimensions for admin page function setAdminViewportDimensions() { const doc = document.documentElement; @@ -1162,7 +1172,7 @@ function displayAdminShifts(shifts) { } list.innerHTML = shifts.map(shift => { - const shiftDate = new Date(shift.Date); + const shiftDate = createLocalDate(shift.Date); const signupCount = shift.signups ? shift.signups.length : 0; console.log(`Shift "${shift.Title}" (ID: ${shift.ID}) has ${signupCount} volunteers:`, shift.signups?.map(s => s['User Email']) || []); @@ -2031,7 +2041,7 @@ async function showShiftUserModal(shiftId, shiftData) { // Update modal title and info document.getElementById('modal-shift-title').textContent = shiftData.Title; - const shiftDate = new Date(shiftData.Date); + const shiftDate = createLocalDate(shiftData.Date); document.getElementById('modal-shift-details').textContent = `${shiftDate.toLocaleDateString()} | ${shiftData['Start Time']} - ${shiftData['End Time']} | ${shiftData.Location || 'TBD'}`; diff --git a/map/app/public/js/shifts.js b/map/app/public/js/shifts.js index 93cd0e0..0928b5f 100644 --- a/map/app/public/js/shifts.js +++ b/map/app/public/js/shifts.js @@ -4,6 +4,16 @@ let mySignups = []; let currentView = 'grid'; // 'grid' or 'calendar' let currentCalendarDate = new Date(); // For calendar navigation +// Utility function to create a local date from YYYY-MM-DD string +// This prevents timezone issues when displaying dates +function createLocalDate(dateString) { + if (!dateString) return null; + const parts = dateString.split('-'); + if (parts.length !== 3) return new Date(dateString); // fallback to original behavior + // Create date using local timezone (year, month-1, day) + return new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2])); +} + // Function to set viewport dimensions for shifts page function setShiftsViewportDimensions() { const doc = document.documentElement; @@ -108,7 +118,7 @@ function displayShifts(shifts) { grid.innerHTML = shifts.map(shift => { const isSignedUp = mySignups.some(signup => signup.shift_id === shift.ID); const isFull = shift['Current Volunteers'] >= shift['Max Volunteers']; - const shiftDate = new Date(shift.Date); + const shiftDate = createLocalDate(shift.Date); return `
@@ -157,7 +167,7 @@ function displayMySignups() { }).filter(s => s.shift); // Only show signups where we can find the shift details list.innerHTML = signupsWithDetails.map(signup => { - const shiftDate = new Date(signup.shift.Date); + const shiftDate = createLocalDate(signup.shift.Date); return `