本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com
倒计时与倒数日
AstraSchedule 提供两种倒计时显示方式:嵌入在主窗口右侧边栏的基础倒计时,以及可独立显示在屏幕上的倒数日窗口。两者共用管理端配置的倒数日数据。
右侧边栏倒计时
主窗口右侧边栏默认显示距离倒计时目标日期的天数。目标日期在管理端的"通用设置"页面中指定(配置键 countdown_target)。当目标日期未配置或设为隐藏时,侧边栏显示当前日期(月、日)而不显示天数。侧边栏位于主窗口课表的右侧,通过 CSS 平移定位。
右侧边栏的倒计时目标为全局唯一。如需显示多个日程,请使用独立倒数日窗口。
独立倒数日窗口
独立倒数日窗口是一个独立的浏览器窗口,与主窗口分离显示。窗口具有无边框、透明背景、不显示在任务栏、不抢焦点的特性。窗口提供两种显示模式:
展开模式
展开模式为居中显示的大窗口,采用左右分栏布局(左侧 60%、右侧 40%)。当仅有一个有效日程时,左侧显示单个全尺寸卡片。当存在两个及以上日程时,左侧显示优先级最高且最近的一条作为主卡片,右侧显示最多四条副卡片。
每张卡片包含日程名称、剩余天数和描述性文字(如"距离中考还有 45 天")。主卡片使用更大的字号(天数 84px、名称 34px),视觉上更为突出。
最小化模式
最小化模式将窗口缩小为屏幕右侧的窄竖条(宽 96px),仅显示最优先的一条日程。文字使用 CSS writing-mode: vertical-rl 垂直排列,格式为"距离 {名称} 还有 {天数} 天"。当天到期的日程显示为"{名称} 就是今天"。
在最小化模式和展开模式之间切换:点击窗口右上角的切换按钮(⇔ 或 ⇖ 符号)。
窗口操作
倒数日窗口默认开启鼠标穿透,不会阻挡其他窗口的操作。仅在鼠标悬停于切换按钮时临时关闭穿透,以便执行点击操作。窗口不置顶,不会遮盖任务栏或其他置顶窗口。
紧急性颜色
倒数日天数通过颜色直观反映紧迫程度,共分为五个区间:
颜色渐变通过 RGB 三通道的线性插值(interpolation)计算,确保从舒适到紧张的视觉过渡自然平滑。展开模式下主副卡片的天数和名称均使用紧急性颜色渲染。
多日程优先级排序
管理端配置的倒数日日程均包含生效域(scope)和优先级(priority)两个属性。客户端首先筛选生效域匹配当前班级的日程,排除已过期(天数小于 0)的项目,然后按以下规则排序:
- 优先级降序:优先级数值越大的日程排在越前面。
- 天数升序:相同优先级的日程中,剩余天数越少的排在越前面。
排序后的第一个日程在展开模式作为主卡片,在最小化模式作为唯一显示内容。
托盘菜单模式关系
托盘菜单中的"课上计时""上课隐藏""始终缩小"三个开关会影响主窗口的迷你倒计时显示,但不影响独立倒数日窗口。独立倒数日窗口始终根据服务端数据独立运行,每 30 秒轮询一次更新数据。当所有配置的倒数日均已过期时,倒数日窗口自动隐藏。