本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com
课表功能
课表是 AstraSchedule 客户端的核心功能,负责显示当天的课程安排,并通过颜色、动画和倒计时帮助师生快速了解当前上课状态。
课程显示
每节课程支持简称和全称两种显示方式。简称通常为单字科目名,全称则为完整名称(如简称"语"对应全称"语文")。在科目配置中,简称支持特殊的 @ 下标语法:@ 之前的部分为简称,@ 之后的部分显示为下角标。例如配置为 自@物,课表上将渲染为"自物",表示"自然-物理"。这一语法仅影响简称的显示,全称字段不受影响。
课表按照作息表中配置的每日课程顺序排列。每节课显示科目简称,当前时间所在的课程或课间会被高亮标记。
三种高亮状态
课程根据当前时间与作息表的匹配关系,呈现三种不同的高亮状态:
- 已结束(灰色):当前时间已超过该课程结束时间,课程名称显示为灰色(
rgba(166, 166, 166)),表示该课程已上完。 - 当前课程(绿色/橙色):当前时间正处于该课程的范围内。当客户端与服务端的 WebSocket 连接正常时,高亮颜色为绿色(
rgba(0, 255, 10, 1));当 WebSocket 断开或处于 Serverless 模式时,高亮颜色变为橙色(rgba(255, 165, 0, 1)),以此直观反映连接状态。 - 即将到来(闪烁):当前时间处于上一节课和本节课之间(即课间休息),下一节即将开始的课程会以闪烁动画提示。闪烁的颜色同样随 WebSocket 连接状态变化:连接时为白色与绿色交替闪烁,断开时为白色与橙色交替闪烁。
高亮状态的切换由客户端的实时时钟和作息表数据共同计算得出,每秒更新一次。
四种显示模式
通过托盘菜单中的三个开关——"课上计时""上课隐藏""始终缩小"——可以组合出四种不同的显示模式,适应不同课堂场景的需求:
推荐的默认配置为课上计时开启、上课隐藏开启、始终缩小关闭。这样在上课时段课表主体和普通倒计时框会隐藏,仅保留精简的迷你倒计时窗口;下课时段则恢复完整显示。
倒计时框
倒计时框显示在当前高亮课程的下方,包含课程的全称和以 MM:SS 格式显示的剩余时间。倒计时框的位置会跟随高亮课程平滑移动:使用 CSS transition(时长 2 秒,缓动函数 cubic-bezier(0.4, 0, 0.2, 1))实现位置的平滑过渡。首次定位时禁用过渡动画以避免不必要的视觉跳跃。
倒计时框顶部有一个指向当前高亮课程的三角形箭头,指示倒计时所属的课程。倒计时每秒更新一次,显示距离课程结束剩余的时间(精确到分钟级别,如"离下课还有 05:32")。
分隔线
作息表中可以配置分隔线(divider),在特定课程序号之前插入一条水平分隔线。分隔线的宽度、颜色和间距可通过 CSS 变量控制,默认为灰色圆角线条。分隔线的存在会影响倒计时框的位置计算,确保框体正确居中对齐。
每周轮换课程
部分学校存在单双周交替上课的情况(如单周上物理、双周上化学)。系统支持最多四周轮换课程。在课表配置中,对于需要轮换的课程位置,配置为数组而非单一科目名,数组的第 0 至 3 个元素分别对应第 1 至 4 周。当前周数由客户端的 weekIndex 值决定,可通过托盘菜单调整。
托盘菜单"切换日程"
"切换日程"菜单项允许强制将当天的课表显示为本周内的任意一天。选择后客户端会替换 daily_class 数据源,显示目标日期的课程安排。切换的日程会在日期自然变化时自动重置回当天,无需手动恢复。菜单中提供"重置至当前日期"选项以立即恢复。
托盘菜单"配置课表"
"配置课表"菜单项提供临时的单节课修改功能。点击后弹出两步对话框:第一步选择要修改的课程时段,第二步从所有可用科目中选择替换科目。此修改仅在当前运行实例的内存中生效,不会持久化或同步到服务端,重启客户端后即恢复为服务端配置。适用于临时调课的快速响应。