import { addNavbar } from '/functions/addNavbar.js'; import { loadName } from '/functions/loadName.js'; window.addEventListener('load', async () => { addNavbar(); await loadName(); await loadOptions(); document.body.style.display = 'block'; }); async function loadOptions() { const params = new URLSearchParams(window.location.search); const eventId = params.get('event-id'); const res = await fetch(`/events/poll/datetime/${eventId}`); const result = await res.json(); if (result.status) { let pollTitle = ''; let pollFrameHTML = ''; let buttonContainerHTML = ''; // Poll title HTML if (result.pollTerminated) { pollTitle = 'Poll Terminated'; } else if (result.eventDeleted) { pollTitle = 'Deleted Event'; } else if (!result.creator) { if (result.choice) { pollTitle = `Your choice was:
start: ${new Date(result.choice.start) .toLocaleString('en-US', { hour12: false }) .replace(',', '') .slice(0, -3)}
end: ${new Date(result.choice.end) .toLocaleString('en-US', { hour12: false }) .replace(',', '') .slice(0, -3)} `; } else { pollTitle = 'Please click on the venue option to vote:'; } } else { pollTitle = 'You may click button below to terminate poll.'; } // Poll Options HTML const optionsList = result.pollOptions; optionsList.forEach((each, index) => { const voteCount = result.voteCounts[each.id].count; pollFrameHTML += `
Datetime ${index + 1}
Start: ${new Date(each.start_datetime) .toLocaleString('en-US', { hour12: false }) .replace(',', '') .slice(0, -3)}
End: ${new Date(each.end_datetime) .toLocaleString('en-US', { hour12: false }) .replace(',', '') .slice(0, -3)}
${voteCount === '1' ? `${voteCount} Vote` : `${voteCount} Votes`}
`; }); // Button HTML if (!result.pollTerminated && !result.eventDeleted) { if (result.creator) { buttonContainerHTML = ``; } else { if (!result.choice) { buttonContainerHTML = ``; } } } // Add HTML to the page document.querySelector('.poll-title').innerHTML = pollTitle; document.querySelector('.poll-frame').innerHTML = pollFrameHTML; document.querySelector('.button-container').innerHTML = buttonContainerHTML; // Check if participant that has not yet voted if (!result.pollTerminated && !result.eventDeleted) { if (!result.creator && !result.choice) { // Listen option choice let optionId; const optionsDiv = document.querySelectorAll('.option-container'); optionsDiv.forEach((each) => { each.addEventListener('click', (e) => { if (e.target.classList.contains('option-container')) { e.target.classList.add('selected'); optionId = e.target.id; const otherDiv = document.querySelectorAll(`.option-container:not([id*="${optionId}"])`); otherDiv.forEach((each) => { each.classList.remove('selected'); }); } }); }); // Listen submit button for voting document.querySelector('#poll-submit-button').addEventListener('click', async () => { const optionId = document.querySelector('.selected').id.replace('option_', ''); const res = await fetch(`/events/poll/datetime/vote/${eventId}/${optionId}`, { method: 'POST' }); const result = await res.json(); if (result.status) { alert('Successfully voted!'); await loadOptions(); } else { alert('Unable to submit vote!'); } }); } else if (result.creator) { // Listen to terminate button document.querySelector('#poll-terminate-button').addEventListener('click', () => { const dateTimeTerminatePoll = new bootstrap.Modal(document.getElementById('delete-poll-modal')); dateTimeTerminatePoll.show(); document.querySelector('#poll-terminate-confirm-button').addEventListener('click', async () => { const params = new URLSearchParams(window.location.search); const eventId = params.get('event-id'); const res = await fetch(`/events/poll/datetime/${eventId}`, { method: 'DELETE' }); const result = await res.json(); if (result.status) { alert('Successfully terminated poll!'); dateTimeTerminatePoll.hide(); loadOptions(); } else { alert('Unable to terminate poll!'); } }); }); } } // Add backward button document.querySelector('#back-page').href = `/eventSummary/event.html?${params}`; } else { alert('Unable to load datetime poll page!'); window.location.href = '/index.html'; } }