console.log("entered script"); document.addEventListener('DOMContentLoaded', function () { const questionTypeElement = document.getElementById('question_type'); console.log("dom content loaded!"); if (questionTypeElement) { questionTypeElement.addEventListener('change', function () { const optionsSection = document.getElementById('options-section'); const selectedType = this.value; if (selectedType === 'multiple_choice' || selectedType === 'single_choice' || selectedType === 'dropdown') { optionsSection.style.display = 'block'; } else { optionsSection.style.display = 'none'; } }); } document.querySelectorAll('input[id^="other_"]').forEach(el => { const id = el.id.split('_')[1]; const otherTextElement = document.getElementById(`other_text_${id}`); if (otherTextElement) { el.addEventListener('change', function () { otherTextElement.style.display = this.checked ? 'block' : 'none'; }); } }); document.querySelectorAll('input[id^="radio_other_"]').forEach(el => { const id = el.id.split('_')[2]; const radioOtherTextElement = document.getElementById(`radio_other_text_${id}`); if (radioOtherTextElement) { el.addEventListener('change', function () { radioOtherTextElement.style.display = this.checked ? 'block' : 'none'; }); } }); }); document.addEventListener('DOMContentLoaded', function () { const tagsInput = document.getElementById('classes-input'); let classes = []; // Define the addClass function before it's used function addClass(classname) { const container = document.getElementById('classes-container'); const classElement = document.createElement('span'); classElement.classList.add('tag'); classElement.textContent = classname; const closeIcon = document.createElement('span'); closeIcon.classList.add('close'); closeIcon.textContent = 'x'; closeIcon.addEventListener('click', function () { container.removeChild(classElement); classes = classes.filter(c => c !== classname); fetchMatchingPeople(classes); // Call fetchMatchingPeople when a class is removed }); classElement.appendChild(closeIcon); container.appendChild(classElement); } // Define the fetchMatchingPeople function before it's used function fetchMatchingPeople(classes) { const xhr = new XMLHttpRequest(); xhr.open("POST", "/fetch-matches", true); xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.onload = function () { if (xhr.status === 200) { const matchesContainer = document.getElementById('matches-container'); const people = JSON.parse(xhr.responseText); matchesContainer.innerHTML = ''; // Log the response to see if "people" is populated console.log("Fetched people: ", people); if (people && people.length > 0) { people.forEach(person => { const personDiv = document.createElement('div'); personDiv.classList.add('person'); personDiv.innerHTML = `${person.name}
Classes: ${person.classes.join(', ')}
Email: ${person.email || 'N/A'}`; matchesContainer.appendChild(personDiv); }); } else { matchesContainer.innerHTML = '

No matches found for these classes.

'; } } else { console.error("Error fetching matches:", xhr.status, xhr.responseText); } }; xhr.onerror = function () { console.error("Network error while fetching matches."); }; xhr.send(JSON.stringify({ classes: classes })); } tagsInput.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === ',') { event.preventDefault(); let value = tagsInput.value.trim().replace(/,$/, ''); if (value) { addClass(value); // Add class tag classes.push(value); // Add to classes array fetchMatchingPeople(classes); // Fetch matching people tagsInput.value = ''; } } }); document.querySelector('form').addEventListener('submit', function (event) { console.log('Classes on submit:', classes); const hiddenClassesInput = document.createElement('input'); hiddenClassesInput.type = 'hidden'; hiddenClassesInput.name = 'classes'; // Filter out empty class names and trim spaces const cleanedClasses = classes.filter(classname => classname.trim() !== "").map(classname => classname.trim()); hiddenClassesInput.value = cleanedClasses.join(','); this.appendChild(hiddenClassesInput); }); });