mirror of
https://github.com/ExamAware/ExamSchedule.git
synced 2025-04-29 19:16:33 +00:00

* refactor: 史诗级重构拆分多年狮山代码 * style: 添加设置模态框淡出动画,优化关闭和保存设置的用户体验 * style: 添加错误提示系统,优化用户体验,处理设置和全屏操作中的异常 * feat: 添加主题切换功能,支持亮/暗色模式,优化用户界面 * chore: 测试配置 * feat: 更新亮色主题背景和透明度 * style: 滑块居右 * feat: 初步实现 全是Bug * feat: 添加提醒队列功能,支持音频预加载和配置导出 * feat: 优化文件输入和按钮样式,提升用户交互体验 * feat: 添加时间广播功能,优化错误提示系统,移除不必要的设置选项 * feat: 移除不再使用的音频文件,更新课程结束时间,优化音频文件加载和选择功能
96 lines
3.1 KiB
JavaScript
96 lines
3.1 KiB
JavaScript
var courseSchedule = [];
|
|
|
|
fetch('course_schedule.json')
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
courseSchedule = data;
|
|
updateScheduleTable();
|
|
})
|
|
.catch(error => errorSystem.show('加载课程表失败: ' + error.message, 'error'));
|
|
|
|
function parseTime(timeStr) {
|
|
try {
|
|
return new Date(timeStr);
|
|
} catch (e) {
|
|
errorSystem.show('时间解析错误: ' + e.message, 'info', 'error');
|
|
return new Date();
|
|
}
|
|
}
|
|
|
|
function updateCourseStatus() {
|
|
try {
|
|
var now = new Date();
|
|
currentCourse = null;
|
|
for (var i = 0; i < courseSchedule.length; i++) {
|
|
var course = courseSchedule[i],
|
|
start = parseTime(course.start),
|
|
end = parseTime(course.end);
|
|
if (end < start) end.setDate(end.getDate() + 1);
|
|
if (now >= start && now <= end) {
|
|
currentCourse = course;
|
|
break;
|
|
}
|
|
}
|
|
if (currentCourse !== lastCourse) {
|
|
handleStatusChange();
|
|
lastCourse = currentCourse;
|
|
}
|
|
} catch (e) {
|
|
errorSystem.show('课程状态更新失败: ' + e.message, 'error');
|
|
}
|
|
}
|
|
|
|
function handleStatusChange() {
|
|
// 处理状态变化的逻辑
|
|
console.log('课程状态已更改:', currentCourse);
|
|
}
|
|
|
|
function getNextCourse() {
|
|
try {
|
|
var now = new Date();
|
|
for (var i = 0; i < courseSchedule.length; i++) {
|
|
var start = parseTime(courseSchedule[i].start);
|
|
if (start > now) return courseSchedule[i];
|
|
}
|
|
return null;
|
|
} catch (e) {
|
|
errorSystem.show('获取下一节课失败: ' + e.message, 'error');
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function updateScheduleTable() {
|
|
try {
|
|
var now = new Date(),
|
|
table = document.getElementById('scheduleTable'),
|
|
rows = table.querySelectorAll('tr:not(:first-child)');
|
|
rows.forEach(row => row.remove()); // 清空现有行
|
|
courseSchedule.forEach(function(course) {
|
|
var row = table.insertRow(-1);
|
|
row.innerHTML = '<td>' + course.name + '</td>' +
|
|
'<td>' + formatDateTime(course.start) + ' - ' + formatDateTime(course.end) + '</td>' +
|
|
'<td></td>';
|
|
});
|
|
for (var i = 0; i < courseSchedule.length; i++) {
|
|
var course = courseSchedule[i];
|
|
if (!course) continue; // 确保不会超出数组边界
|
|
var start = parseTime(course.start),
|
|
end = parseTime(course.end),
|
|
row = table.rows[i + 1]; // 跳过表头行
|
|
row.className = '';
|
|
if (now >= start && now <= end) {
|
|
row.className = 'current-class';
|
|
row.cells[2].textContent = '进行中';
|
|
} else if (now < start) {
|
|
row.className = 'future-class';
|
|
row.cells[2].textContent = '即将开始';
|
|
} else {
|
|
row.className = 'past-class';
|
|
row.cells[2].textContent = '已结束';
|
|
}
|
|
}
|
|
} catch (e) {
|
|
errorSystem.show('课程表更新失败: ' + e.message, 'error');
|
|
}
|
|
}
|