DANGER

本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com

倒计时与倒数日

AstraSchedule 提供两种倒计时显示方式:嵌入在主窗口右侧边栏的基础倒计时,以及可独立显示在屏幕上的倒数日窗口。两者共用管理端配置的倒数日数据。

右侧边栏倒计时

主窗口右侧边栏默认显示距离倒计时目标日期的天数。目标日期在管理端的"通用设置"页面中指定(配置键 countdown_target)。当目标日期未配置或设为隐藏时,侧边栏显示当前日期(月、日)而不显示天数。侧边栏位于主窗口课表的右侧,通过 CSS 平移定位。

右侧边栏的倒计时目标为全局唯一。如需显示多个日程,请使用独立倒数日窗口。

独立倒数日窗口

独立倒数日窗口是一个独立的浏览器窗口,与主窗口分离显示。窗口具有无边框、透明背景、不显示在任务栏、不抢焦点的特性。窗口提供两种显示模式:

展开模式

展开模式为居中显示的大窗口,采用左右分栏布局(左侧 60%、右侧 40%)。当仅有一个有效日程时,左侧显示单个全尺寸卡片。当存在两个及以上日程时,左侧显示优先级最高且最近的一条作为主卡片,右侧显示最多四条副卡片。

每张卡片包含日程名称、剩余天数和描述性文字(如"距离中考还有 45 天")。主卡片使用更大的字号(天数 84px、名称 34px),视觉上更为突出。

最小化模式

最小化模式将窗口缩小为屏幕右侧的窄竖条(宽 96px),仅显示最优先的一条日程。文字使用 CSS writing-mode: vertical-rl 垂直排列,格式为"距离 {名称} 还有 {天数} 天"。当天到期的日程显示为"{名称} 就是今天"。

在最小化模式和展开模式之间切换:点击窗口右上角的切换按钮( 符号)。

窗口操作

倒数日窗口默认开启鼠标穿透,不会阻挡其他窗口的操作。仅在鼠标悬停于切换按钮时临时关闭穿透,以便执行点击操作。窗口不置顶,不会遮盖任务栏或其他置顶窗口。

紧急性颜色

倒数日天数通过颜色直观反映紧迫程度,共分为五个区间:

天数范围颜色效果RGB 值
≥ 100 天纯绿色rgb(156, 255, 172)
50 至 99 天绿色到黄色的线性渐变逐日过渡
1 至 49 天黄色到红色的线性渐变逐日过渡
0 天(当天)纯红色rgb(255, 104, 104)

颜色渐变通过 RGB 三通道的线性插值(interpolation)计算,确保从舒适到紧张的视觉过渡自然平滑。展开模式下主副卡片的天数和名称均使用紧急性颜色渲染。

多日程优先级排序

管理端配置的倒数日日程均包含生效域(scope)和优先级(priority)两个属性。客户端首先筛选生效域匹配当前班级的日程,排除已过期(天数小于 0)的项目,然后按以下规则排序:

  1. 优先级降序:优先级数值越大的日程排在越前面。
  2. 天数升序:相同优先级的日程中,剩余天数越少的排在越前面。

排序后的第一个日程在展开模式作为主卡片,在最小化模式作为唯一显示内容。

托盘菜单模式关系

托盘菜单中的"课上计时""上课隐藏""始终缩小"三个开关会影响主窗口的迷你倒计时显示,但不影响独立倒数日窗口。独立倒数日窗口始终根据服务端数据独立运行,每 30 秒轮询一次更新数据。当所有配置的倒数日均已过期时,倒数日窗口自动隐藏。