feat(ui): 补齐课程提醒进度并内嵌编辑器与重构后台导航
This commit is contained in:
1 parent
3379eb975c
commit
536379036a
34 files changed
+1559
-455
No files matched your search
@@ -71,10 +71,11 @@ export interface IslandComponentNode {
|
||||
template: boolean;
|
||||
hour12: boolean;
|
||||
seconds: boolean;
|
||||
target: 'next' | 'school';
|
||||
target: 'auto' | 'next' | 'end' | 'school';
|
||||
display: 'current' | 'next' | 'today';
|
||||
count: number;
|
||||
showPeriod: boolean;
|
||||
showProgress: boolean;
|
||||
direction: 'horizontal' | 'vertical';
|
||||
gap: number;
|
||||
interval: number;
|
||||
@@ -116,9 +117,29 @@ export interface IslandLayoutSettings {
|
||||
residentEnabled: boolean;
|
||||
pointerFadeEnabled: boolean;
|
||||
pointerFadeReversed: boolean;
|
||||
lessonReminders: LessonReminderSettings;
|
||||
activeSchemeId: string;
|
||||
schemes: IslandLayoutScheme[];
|
||||
}
|
||||
/** 上下课通道独立开关;倒数阈值以秒计,配置随本机方案保存。 */
|
||||
export interface LessonReminderSettings {
|
||||
prepareEnabled: boolean;
|
||||
onClassEnabled: boolean;
|
||||
breakEnabled: boolean;
|
||||
endingEnabled: boolean;
|
||||
classProgressEnabled: boolean;
|
||||
prepareSeconds: number;
|
||||
endingSeconds: number;
|
||||
}
|
||||
export const DEFAULT_LESSON_REMINDERS: LessonReminderSettings = {
|
||||
prepareEnabled: true,
|
||||
onClassEnabled: true,
|
||||
breakEnabled: true,
|
||||
endingEnabled: true,
|
||||
classProgressEnabled: true,
|
||||
prepareSeconds: 60,
|
||||
endingSeconds: 60,
|
||||
};
|
||||
function defaultExpandedRows(): IslandLayoutRow[] {
|
||||
const course = islandNode('schedule', 'expanded-schedule');
|
||||
course.settings.display = 'today';
|
||||
@@ -143,10 +164,11 @@ export function islandNode(kind: IslandComponentKind, id: string): IslandCompone
|
||||
template: false,
|
||||
hour12: false,
|
||||
seconds: true,
|
||||
target: 'next',
|
||||
target: 'auto',
|
||||
display: 'current',
|
||||
count: 5,
|
||||
showPeriod: true,
|
||||
showProgress: true,
|
||||
direction: 'horizontal',
|
||||
gap: 8,
|
||||
interval: 5,
|
||||
@@ -177,6 +199,7 @@ export function defaultIslandLayouts(): IslandLayoutSettings {
|
||||
residentEnabled: false,
|
||||
pointerFadeEnabled: true,
|
||||
pointerFadeReversed: false,
|
||||
lessonReminders: { ...DEFAULT_LESSON_REMINDERS },
|
||||
activeSchemeId: 'default',
|
||||
schemes: [
|
||||
{
|
||||
@@ -237,10 +260,11 @@ export function normalizeIslandLayouts(input: unknown): IslandLayoutSettings {
|
||||
template: s.template === true,
|
||||
hour12: s.hour12 === true,
|
||||
seconds: s.seconds !== false,
|
||||
target: s.target === 'school' ? 'school' : 'next',
|
||||
target: ['auto', 'next', 'end', 'school'].includes(s.target) ? s.target : 'auto',
|
||||
display: ['current', 'next', 'today'].includes(s.display) ? s.display : 'current',
|
||||
count: clamp(s.count, 1, 40, 5),
|
||||
showPeriod: s.showPeriod !== false,
|
||||
showProgress: s.showProgress !== false,
|
||||
direction: s.direction === 'vertical' ? 'vertical' : 'horizontal',
|
||||
gap: clamp(s.gap, 0, 64, 8),
|
||||
interval: clamp(s.interval, 1, 300, 5),
|
||||
@@ -331,6 +355,15 @@ export function normalizeIslandLayouts(input: unknown): IslandLayoutSettings {
|
||||
residentEnabled: raw.layout === 'custom',
|
||||
pointerFadeEnabled: raw.pointerFadeEnabled !== false,
|
||||
pointerFadeReversed: raw.pointerFadeReversed === true,
|
||||
lessonReminders: {
|
||||
prepareEnabled: raw.lessonReminders?.prepareEnabled !== false,
|
||||
onClassEnabled: raw.lessonReminders?.onClassEnabled !== false,
|
||||
breakEnabled: raw.lessonReminders?.breakEnabled !== false,
|
||||
endingEnabled: raw.lessonReminders?.endingEnabled !== false,
|
||||
classProgressEnabled: raw.lessonReminders?.classProgressEnabled !== false,
|
||||
prepareSeconds: clamp(raw.lessonReminders?.prepareSeconds, 5, 1800, 60),
|
||||
endingSeconds: clamp(raw.lessonReminders?.endingSeconds, 5, 600, 60),
|
||||
},
|
||||
schemes: schemes.length ? schemes : fallback.schemes,
|
||||
activeSchemeId: schemes.some((s) => s.id === raw.activeSchemeId)
|
||||
? raw.activeSchemeId
|
||||
|
||||
@@ -1073,7 +1073,7 @@ export type IslandNotificationKind = 'notification' | 'homework' | 'call';
|
||||
/** 本机课表产生的临时提醒,不进入教师通知队列或已读记录。 */
|
||||
export interface IslandLessonReminder {
|
||||
id: string;
|
||||
kind: 'prepare' | 'on-class' | 'break';
|
||||
kind: 'prepare' | 'on-class' | 'break' | 'ending' | 'in-class';
|
||||
courseName: string;
|
||||
startTime: string;
|
||||
endTime: string;
|
||||
@@ -1081,6 +1081,7 @@ export interface IslandLessonReminder {
|
||||
maskUntil: number;
|
||||
endsAt: number;
|
||||
lessonStartsAt: number;
|
||||
lessonEndsAt?: number;
|
||||
nextCourseName?: string;
|
||||
nextStartTime?: string;
|
||||
nextEndTime?: string;
|
||||
|
||||
Reference in new issue
Block a user