v1.1.0 - Trigger timeline scroll when TaskBar dragging; Add 'Day|Week|Month' timeline scale; Issues fixed.

This commit is contained in:
LINING-PC\lining
2025-07-08 20:03:04 +08:00
parent 11ee864d36
commit 9cc769c622
15 changed files with 1680 additions and 92 deletions
+1
View File
@@ -8,4 +8,5 @@ export interface ToolbarConfig {
showLanguage?: boolean
showTheme?: boolean
showFullscreen?: boolean
showTimeScale?: boolean // 显示时间刻度按钮组
}
+75
View File
@@ -0,0 +1,75 @@
// 时间轴比例类型定义
// 使用字符串字面量类型代替enum,兼容erasableSyntaxOnly
export type TimelineScale = 'day' | 'week' | 'month'
// 导出常量值以便于使用
export const TimelineScale = {
DAY: 'day' as TimelineScale, // 日视图 - 每列显示一天
WEEK: 'week' as TimelineScale, // 周视图 - 每列显示一周
MONTH: 'month' as TimelineScale, // 月视图 - 每列显示一个月
}
export interface TimelineScaleConfig {
scale: TimelineScale
cellWidth: number // 每个时间单元的宽度(px)
headerLevels: number // 表头层级数
formatters: {
primary: string // 主要时间标签格式
secondary?: string // 次要时间标签格式
}
}
// 预设配置
export const SCALE_CONFIGS = {
day: {
scale: TimelineScale.DAY,
cellWidth: 30,
headerLevels: 2,
formatters: { primary: 'yyyy年MM月', secondary: 'dd' },
},
week: {
scale: TimelineScale.WEEK,
cellWidth: 120,
headerLevels: 2,
formatters: { primary: 'yyyy年MM月', secondary: 'W周' },
},
month: {
scale: TimelineScale.MONTH,
cellWidth: 180,
headerLevels: 2,
formatters: { primary: 'yyyy年', secondary: 'MM月' },
},
} as Record<TimelineScale, TimelineScaleConfig>
// 时间单元数据接口
export interface TimelineUnit {
id: string
startDate: Date
endDate: Date
label: string
isToday?: boolean
isWeekend?: boolean
width: number
}
// 时间轴数据结构
export interface TimelineData {
scale: TimelineScale
units: TimelineUnit[]
months?: Array<{
year: number
month: number
yearMonthLabel: string
startDate: Date
endDate: Date
units: TimelineUnit[]
}>
weeks?: Array<{
weekNumber: number
year: number
startDate: Date
endDate: Date
units: TimelineUnit[]
}>
}