collinenlucy.nl/client/rsvps_list.js

44 lines
1.4 KiB
JavaScript
Raw Normal View History

function createRsvpEntry(rsvp) {
const table = document.getElementById('rsvpsTable');
const tbody = table.children.item(0)
const { attending, partyMembers } = rsvp;
for (const member of partyMembers) {
const newRow = document.createElement('tr');
const attendingColumn = document.createElement('td');
attendingColumn.innerText = attending ? '\u2705' : '\u274C';
const nameColumn = document.createElement('td');
nameColumn.innerText = member.name;
const childColumn = document.createElement('td');
childColumn.innerText = member.child ? '\u{1F476}' : '\u{1F474}';
const dietaryPreferencesColumn = document.createElement('td');
dietaryPreferencesColumn.innerText = member.dietaryPreferences.length > 0 ? member.dietaryPreferences : 'n/a';
newRow.appendChild(attendingColumn);
newRow.appendChild(nameColumn);
newRow.appendChild(childColumn);
newRow.appendChild(dietaryPreferencesColumn);
tbody.appendChild(newRow);
}
}
async function getRsvps() {
const credentials = Object.fromEntries(
document.cookie.split(";").map((x) => x.trim().split("="))
)['credentials']
const resp = await fetch('/api/rsvps', { headers: { 'Authorization': `Basic ${String(btoa(credentials))}`} });
const rsvps = await resp.json()
for (const rsvp of rsvps) {
createRsvpEntry(rsvp);
}
}
window.onload = async function () {
await getRsvps();
};