Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
const studyGroupData = {
"studyGroups": [
{
"id": 1,
"major": "Computer Science",
"courses": ["Introduction to Programming", "Data Structures"],
"studyTimes": ["Wednesday 3pm-5pm", "Friday 2pm-4pm"],
"groupSize": 4
},
{
"id": 2,
"major": "Electrical Engineering",
"courses": ["Circuit Analysis", "Electromagnetics"],
"studyTimes": ["Tuesday 10am-12pm", "Thursday 1pm-3pm"],
"groupSize": 3
},
{
"id": 3,
"major": "Mathematics",
"courses": ["Linear Algebra", "Calculus III"],
"studyTimes": ["Monday 4pm-6pm", "Wednesday 2pm-4pm"],
"groupSize": 5
},
{
"id": 4,
"major": "Chemical Engineering",
"courses": ["Organic Chemistry", "Process Dynamics"],
"studyTimes": ["Friday 9am-11am", "Saturday 10am-12pm"],
"groupSize": 4
},
{
"id": 5,
"major": "Mechanical Engineering",
"courses": ["Thermodynamics", "Fluid Mechanics"],
"studyTimes": ["Wednesday 5pm-7pm", "Friday 3pm-5pm"],
"groupSize": 6
},
{
"id": 6,
"major": "Biology",
"courses": ["Cell Biology", "Genetics"],
"studyTimes": ["Tuesday 3pm-5pm", "Thursday 4pm-6pm"],
"groupSize": 4
},
{
"id": 7,
"major": "Psychology",
"courses": ["Behavioral Psychology", "Cognitive Psychology"],
"studyTimes": ["Monday 9am-11am", "Wednesday 11am-1pm"],
"groupSize": 3
},
{
"id": 8,
"major": "Environmental Science",
"courses": ["Ecology", "Environmental Policy"],
"studyTimes": ["Tuesday 2pm-4pm", "Thursday 10am-12pm"],
"groupSize": 5
},
{
"id": 9,
"major": "Physics",
"courses": ["Quantum Mechanics", "Classical Mechanics"],
"studyTimes": ["Friday 1pm-3pm", "Saturday 11am-1pm"],
"groupSize": 4
},
{
"id": 10,
"major": "History",
"courses": ["World History", "American History"],
"studyTimes": ["Monday 2pm-4pm", "Wednesday 4pm-6pm"],
"groupSize": 4
}
]
};
document.addEventListener('DOMContentLoaded', function() {
populateMajors();
document.getElementById('preferencesForm').addEventListener('submit', handleFormSubmit);
});
function populateMajors() {
const majorSelect = document.getElementById('major');
const uniqueMajors = Array.from(new Set(studyGroupData.studyGroups.map(group => group.major)));
uniqueMajors.forEach(major => {
const option = new Option(major, major);
majorSelect.add(option);
});
majorSelect.addEventListener('change', () => updateCoursesDropdown(majorSelect.value));
updateCoursesDropdown(majorSelect.value);
}
function updateCoursesDropdown(selectedMajor) {
const coursesSelect = document.getElementById('courses');
coursesSelect.innerHTML = '';
const courses = studyGroupData.studyGroups
.filter(group => group.major === selectedMajor)
.flatMap(group => group.courses)
.filter((value, index, self) => self.indexOf(value) === index);
courses.forEach(course => {
const option = new Option(course, course);
coursesSelect.add(option);
});
}
function handleFormSubmit(event) {
event.preventDefault();
const major = document.getElementById('major').value;
const course = document.getElementById('courses').value;
const studyDay = document.getElementById('studyDay').value;
const studyStartTime = document.getElementById('studyStartTime').value;
const studyEndTime = document.getElementById('studyEndTime').value;
const groupSize = document.getElementById('groupSize').value;
// Simple validation
if (!major || !course || !studyDay || !studyStartTime || !studyEndTime || !groupSize) {
alert('Please fill all fields.');
return;
}
const matchingGroups = findMatchingGroups({ major, course, studyDay, studyStartTime, studyEndTime, groupSize });
displayResults(matchingGroups);
}
function findMatchingGroups(preferences) {
return studyGroupData.studyGroups.filter(group =>
group.major === preferences.major &&
group.courses.includes(preferences.course) &&
group.groupSize >= preferences.groupSize &&
group.studyTimes.some(time => time.includes(preferences.studyDay))
);
}
function displayResults(groups) {
const resultsSection = document.getElementById('resultsSection');
resultsSection.innerHTML = '';
if (groups.length === 0) {
resultsSection.textContent = 'No matching study groups found.';
return;
}
groups.forEach(group => {
addResultItem(group, resultsSection);
});
}
function addResultItem(group, resultsSection) {
const item = document.createElement('div');
item.classList.add('resultItem');
item.innerHTML = `
<h3>${group.major} Study Group</h3>
<p>Courses: ${group.courses.join(', ')}</p>
<p>Study Times: ${group.studyTimes.join(', ')}</p>
<p>Group Size: ${group.groupSize}</p>
`;
const joinButton = document.createElement('button');
joinButton.textContent = 'Join Group';
joinButton.addEventListener('click', () => {
alert(`Joined the ${group.major} study group!`);
});
item.appendChild(joinButton);
resultsSection.appendChild(item);
}