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)
}
|
|
|
`;
}
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)
}
|
|
|
`;
}
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 = `
`;
}
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 = `
`;
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}`;
}