BSIT Course Planner - Daytona State
${course.title}
Prerequisites: ${formatPrerequisites(course)}
`;
grid.appendChild(courseDiv);
});
semDiv.appendChild(grid);
section.appendChild(semDiv);
});
const electiveDiv = document.createElement('div');
electiveDiv.className = 'semester';
electiveDiv.innerHTML = `
Program Electives
Choose 2 Courses (6 credits total)
Select any two elective courses to complete your program requirements.
`;
const electiveGrid = electiveDiv.querySelector('#electiveGrid');
electives.forEach(courseCode => {
const course = courses[courseCode];
const canTake = checkPrerequisites(courseCode);
const completed = completedCourses[courseCode];
const courseDiv = document.createElement('div');
courseDiv.className = `course elective-option ${completed ? 'completed' : ''} ${!canTake && !completed ? 'disabled' : ''}`;
courseDiv.onclick = () => toggleCourse(courseCode);
courseDiv.innerHTML = `
${course.title}
Prerequisites: ${formatPrerequisites(course)}
`;
electiveGrid.appendChild(courseDiv);
});
section.appendChild(electiveDiv);
}
function updateProgress() {
const completed = Object.keys(completedCourses).filter(c => completedCourses[c]).length;
const completedCredits = Object.keys(completedCourses)
.filter(c => completedCourses[c])
.reduce((sum, c) => sum + courses[c].credits, 0);
const totalCourses = Object.keys(courses).length - 4; // Subtract non-required electives
const totalCredits = 58;
const percentage = Math.round((completedCredits / totalCredits) * 100);
document.getElementById('progressFill').style.width = percentage + '%';
document.getElementById('progressFill').textContent = percentage + '%';
document.getElementById('completedCredits').textContent = completedCredits;
}
function saveProgress() {
alert('Progress saved! 💾\n\nNote: This is a demo. In a full implementation, your progress would be saved to a database.');
}
function resetProgress() {
if (confirm('Are you sure you want to reset all progress?')) {
completedCourses = {};
renderCourses();
updateProgress();
}
}
renderCourses();
updateProgress();