import { listenCreateButtons, listenParticipateButtons, listenEditButtons, listenToSchedulePage, listenToItemPage, listenToDeleteParticipants } from './listenButtons.js'; export let currentParticipantsList = []; let deletedParticipantsList = []; export async function loadCreateEvents(page) { const res = await fetch(`/events/created?page=${page}`); if (res.status !== 200) { const data = await res.json(); alert(data.msg); return; } const result = await res.json(); const events = result.object; const currentPage = result.currentPage; const totalPage = result.page; const eventsCreateContainer = document.querySelector('.create .events-container'); const pageCreateContainer = document.querySelector('.create .turn-page-button-container'); let eventsCreateHTML = ''; for (let event of events) { let status = ''; let statusClass = ''; const today = new Date().getTime(); const eventStartDate = new Date(event.start_datetime).getTime(); if (event.deleted) { status = 'Deleted'; statusClass = 'deletedStatus'; } else { if (today > eventStartDate && eventStartDate) { status = 'Completed'; statusClass = 'completedStatus'; } else { status = 'Processing'; statusClass = 'progressStatus'; } } eventsCreateHTML += `
${event.id}
${event.name}
${!event.venue ? 'TBD' : event.venue}
${ !event.start_datetime ? 'TBD' : new Date(event.start_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3) }
${ !event.end_datetime ? 'TBD' : new Date(event.end_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3) }
${status}
`; } const pageHTML = !totalPage ? '' : `Showing ${currentPage} of ${totalPage}`; eventsCreateContainer.innerHTML = eventsCreateHTML; pageCreateContainer.innerHTML = `
${pageHTML}
`; listenCreateButtons(); listenEditButtons(); return currentPage; } export async function loadParticipateEvents(page) { const res = await fetch(`/events/participated?page=${page}`); if (res.status !== 200) { const data = await res.json(); alert(data.msg); return; } const result = await res.json(); const events = result.object; const currentPage = result.currentPage; const totalPage = result.page; const eventsParticipateContainer = document.querySelector('.participate .events-container'); const pageParticipateContainer = document.querySelector('.participate .turn-page-button-container'); let eventsParticipateHTML = ''; for (let event of events) { let status = ''; let statusClass = ''; const today = new Date().getTime(); const eventStartDate = new Date(event.start_datetime).getTime(); if (event.deleted) { status = 'Deleted'; statusClass = 'deletedStatus'; } else { if (today > eventStartDate && eventStartDate) { status = 'Completed'; statusClass = 'completedStatus'; } else { status = 'Processing'; statusClass = 'progressStatus'; } } eventsParticipateHTML += `
${event.id}
${event.name}
${!event.venue ? 'TBD' : event.venue}
${ !event.start_datetime ? 'TBD' : new Date(event.start_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3) }
${ !event.end_datetime ? 'TBD' : new Date(event.end_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3) }
${status}
`; } const pageHTML = !totalPage ? '' : `Showing ${currentPage} of ${totalPage}`; eventsParticipateContainer.innerHTML = eventsParticipateHTML; pageParticipateContainer.innerHTML = `
${pageHTML}
`; listenParticipateButtons(); listenEditButtons(); return currentPage; } export async function loadEventDetails() { const params = new URLSearchParams(window.location.search); const isCreator = parseInt(params.get('is-creator')); const eventId = params.get('event-id'); const res = await fetch(`/events/detail/${isCreator ? 'created' : 'participated'}/${eventId}`); if (res.status !== 200) { const data = await res.json(); alert(data.msg); return; } const result = await res.json(); if (result.status) { // Check if the event is processing const today = new Date().getTime(); const eventStartDate = new Date(result.detail.start_datetime).getTime(); const processing = today <= eventStartDate || !eventStartDate; const deleted = result.detail.deleted; // Load Event Name into Page let deleteEventButton = ''; if (isCreator && processing && !deleted) { deleteEventButton = `
`; } const eventName = document.querySelector('.eventname .background-frame'); eventName.innerHTML = `
🎉
${result.detail.name}
${deleteEventButton} `; // Load Date Time into Page let dateTimeLabel = ''; let startDateTimeString = ''; let endDateTimeString = ''; if (result.detail.start_datetime && result.detail.end_datetime) { startDateTimeString = new Date(result.detail.start_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3); endDateTimeString = new Date(result.detail.end_datetime) .toLocaleString('en-US', { hour12: false }) .replace(', ', ' ') .slice(0, -3); dateTimeLabel = `
Start:
End:
`; } else { startDateTimeString = 'To Be Determined'; } let editTimeButton = ''; if (isCreator && processing && !deleted) { editTimeButton = ` `; } let datetimePollButton = ''; if (result.detail.date_poll_created) { datetimePollButton = ` `; } const dateTime = document.querySelector('.date-time .background-frame'); dateTime.innerHTML = `
Date & Time
${dateTimeLabel}
${startDateTimeString}
${endDateTimeString}
${datetimePollButton} ${editTimeButton}
`; // Load Participants into Page let participantListHTML = ''; participantListHTML += '
'; participantListHTML += `
    ${result.creator.first_name} ${result.creator.last_name}
`; if (result.participants.length) { const userList = result.participants; for (let user of userList) { participantListHTML += `
    ${user.first_name} ${user.last_name}
`; } } participantListHTML += '
'; let editParticipantsButton = ''; if (isCreator && processing && !deleted) { editParticipantsButton = ` `; } let inviteButton = ''; if (isCreator && processing && !deleted) { inviteButton = `
+
Invite more friends
`; } const participant = document.querySelector('.participant .background-frame'); participant.innerHTML = `
Participants
${result.participants.length + 1}
${editParticipantsButton}
${participantListHTML}
${inviteButton} `; // Load Participants Modal currentParticipantsList = structuredClone(result.participants); loadParticipantsModal(currentParticipantsList, deletedParticipantsList); // Load Invitation Link pasteInvitationLink(result.detail.id, result.detail.invitation_token); // Load Venue into Page let venueString = ''; if (result.detail.venue) { venueString = ` ${result.detail.venue || ''} `; } else { venueString = 'To Be Determined'; } let editVenueButton = ''; if (isCreator && processing && !deleted) { editVenueButton = ` `; } let venuePollButton = ''; if (result.detail.venue_poll_created) { venuePollButton = ` `; } const venue = document.querySelector('.venue .background-frame'); venue.innerHTML = `
Venue
${venuePollButton} ${editVenueButton}
    ${venueString}
`; // Load schedule into Page let infoButtonHTML = ''; if (result.detail.start_datetime && result.detail.end_datetime) { infoButtonHTML = ` `; } const schedule = document.querySelector('.schedule .background-frame'); schedule.innerHTML = `
Schedule
${infoButtonHTML}
`; // Load item into Page const item = document.querySelector('.item .background-frame'); item.innerHTML = `
Item
Pending Items:
`; listenToSchedulePage(result.detail.start_datetime); listenToItemPage(); listenToDeleteParticipants(); } else { const roleName = isCreator ? 'creator' : 'participant'; alert(`You are not ${roleName} of the event!`); } } export function loadParticipantsModal(currentList, deletedList) { let currentParticipantListModalHTML = ''; if (currentList.length) { currentParticipantListModalHTML += '
'; for (let user of currentList) { currentParticipantListModalHTML += `
    ${user.first_name} ${user.last_name}
`; } currentParticipantListModalHTML += '
'; } const currentParticipantModal = document.querySelector('#participants-modal #current-participants-list'); currentParticipantModal.innerHTML = `
Current
${currentParticipantListModalHTML}
`; let deletedParticipantListModalHTML = ''; if (deletedList.length) { deletedParticipantListModalHTML += '
'; for (let user of deletedList) { deletedParticipantListModalHTML += `
    ${user.first_name} ${user.last_name}
`; } deletedParticipantListModalHTML += '
'; } const deletedParticipantModal = document.querySelector('#participants-modal #deleted-participants-list'); deletedParticipantModal.innerHTML = `
Deleted
${deletedParticipantListModalHTML}
`; } export function pasteInvitationLink(eventId, invitation_token) { document.querySelector( '#invitation-modal .form-control' ).value = `http://${window.location.host}/invitationPage/invitation.html?event-id=${eventId}&token=${invitation_token}`; }