diff --git a/.changeset/shy-kings-crash.md b/.changeset/shy-kings-crash.md new file mode 100644 index 0000000000..d21d7fc8c3 --- /dev/null +++ b/.changeset/shy-kings-crash.md @@ -0,0 +1,4 @@ +--- +--- + +Add Schedule button to admin working groups page diff --git a/.changeset/silly-paws-lick.md b/.changeset/silly-paws-lick.md new file mode 100644 index 0000000000..7572fa4a1a --- /dev/null +++ b/.changeset/silly-paws-lick.md @@ -0,0 +1,4 @@ +--- +--- + +Fix admin meetings page crash when loading meetings and series diff --git a/server/public/admin-meetings.html b/server/public/admin-meetings.html index 88c10ad2f3..3460bbd0f7 100644 --- a/server/public/admin-meetings.html +++ b/server/public/admin-meetings.html @@ -463,7 +463,8 @@

Meeting Details

const response = await fetch(url); if (!response.ok) throw new Error('Failed to load meetings'); - meetings = await response.json(); + const data = await response.json(); + meetings = data.meetings || []; renderMeetings(); document.getElementById('loading').style.display = 'none'; @@ -479,15 +480,20 @@

Meeting Details

async function loadSeries() { try { const groupId = document.getElementById('groupFilter').value; - let url = '/api/admin/meetings/series'; - if (groupId) { - url += `?working_group_id=${groupId}`; + + // Series endpoint requires a working group filter + if (!groupId) { + series = []; + renderSeries(); + return; } + const url = `/api/admin/meetings/series?working_group_id=${groupId}`; const response = await fetch(url); if (!response.ok) throw new Error('Failed to load series'); - series = await response.json(); + const data = await response.json(); + series = data.series || []; renderSeries(); } catch (error) { console.error('Error loading series:', error); @@ -748,7 +754,8 @@

${escapeHtml(s.title)}

const response = await fetch(`/api/admin/meetings/${id}`); if (!response.ok) throw new Error('Failed to load meeting'); - viewingMeeting = await response.json(); + const data = await response.json(); + viewingMeeting = { ...data.meeting, attendees: data.attendees }; const m = viewingMeeting; const group = workingGroups.find(g => g.id === m.working_group_id); const date = new Date(m.start_time); @@ -845,6 +852,18 @@

${escapeHtml(s.title)}

async function init() { await loadWorkingGroups(); await loadMeetings(); + + // Auto-open schedule modal if requested via URL + const params = new URLSearchParams(window.location.search); + if (params.get('action') === 'schedule') { + showCreateModal(); + // Clear the action param to prevent re-triggering on refresh + params.delete('action'); + const newUrl = params.toString() + ? `${window.location.pathname}?${params.toString()}` + : window.location.pathname; + window.history.replaceState({}, '', newUrl); + } } init(); diff --git a/server/public/admin-working-groups.html b/server/public/admin-working-groups.html index 31e81ad277..cbc53404da 100644 --- a/server/public/admin-working-groups.html +++ b/server/public/admin-working-groups.html @@ -788,6 +788,7 @@

${escapeHtml(group.name)}

+