v1.3.2 - Bugfix; SonarQube Upgrades.

This commit is contained in:
LINING-PC\lining
2025-09-24 16:10:39 +08:00
parent d3f42c6b48
commit c66e2209b8
6 changed files with 76 additions and 76 deletions
+3 -3
View File
@@ -168,7 +168,7 @@ watch(
selectedTime.value = parsed.timeStr
}
},
{ immediate: true }
{ immediate: true },
)
// 处理单日期输入变化(预留,当前版本不使用)
@@ -297,7 +297,7 @@ const scrollToSelectedTime = () => {
const containerHeight = 160 // el-time-column-list 的高度
const scrollTop = Math.max(
0,
selectedHourIndex * itemHeight - containerHeight / 2 + itemHeight / 2
selectedHourIndex * itemHeight - containerHeight / 2 + itemHeight / 2,
)
hourListRef.value.scrollTop = scrollTop
}
@@ -312,7 +312,7 @@ const scrollToSelectedTime = () => {
const containerHeight = 160
const scrollTop = Math.max(
0,
selectedMinuteIndex * itemHeight - containerHeight / 2 + itemHeight / 2
selectedMinuteIndex * itemHeight - containerHeight / 2 + itemHeight / 2,
)
minuteListRef.value.scrollTop = scrollTop
}
+16 -16
View File
@@ -152,7 +152,7 @@ const handleMouseMove = (e: MouseEvent) => {
mouseX: e.clientX,
isDragging: isDragging.value,
},
})
}),
)
const deltaX = e.clientX - dragStartX.value
@@ -179,7 +179,7 @@ const handleMouseUp = () => {
mouseX: 0,
isDragging: false,
},
})
}),
)
// 只有在真正拖拽了(有临时数据)且状态为拖拽中时才触发更新
@@ -241,7 +241,7 @@ const handleMilestoneClick = (e: MouseEvent) => {
scrollLeft: targetScrollLeft,
smooth: true,
},
})
}),
)
}
}
@@ -304,14 +304,14 @@ const milestoneStyle = computed(() => {
const centerPosition = calculateMilestonePositionFromTimelineData(
milestoneDate,
props.timelineData,
props.currentTimeScale
props.currentTimeScale,
)
left = centerPosition - size / 2 // 从中心位置偏移到图标左上角
} else {
// 日视图:保持原有逻辑
const startDiff = Math.floor(
(milestoneDate.getTime() - props.startDate.getTime()) / (1000 * 60 * 60 * 24)
(milestoneDate.getTime() - props.startDate.getTime()) / (1000 * 60 * 60 * 24),
)
left = startDiff * props.dayWidth + props.dayWidth / 2 - size / 2
}
@@ -377,7 +377,7 @@ const milestoneVisibility = computed(() => {
if (iconRight <= leftBoundary + iconSize / 2) {
// 检查左侧是否有其他停靠的里程碑,需要判断推挤优先级
const leftStickyMilestones = otherMilestones.filter(
m => m.id !== currentId && m.stickyPosition === 'left' && m.isSticky
m => m.id !== currentId && m.stickyPosition === 'left' && m.isSticky,
)
// 如果有其他里程碑已经停靠在左侧,比较优先级决定推挤顺序
@@ -423,7 +423,7 @@ const milestoneVisibility = computed(() => {
if (iconLeft >= rightBoundary - iconSize / 2) {
// 检查右侧是否有其他停靠的里程碑,需要判断推挤优先级
const rightStickyMilestones = otherMilestones.filter(
m => m.id !== currentId && m.stickyPosition === 'right' && m.isSticky
m => m.id !== currentId && m.stickyPosition === 'right' && m.isSticky,
)
// 如果有其他里程碑已经停靠在右侧,比较优先级决定推挤顺序
@@ -581,13 +581,13 @@ const calculateYearViewMilestonePosition = (targetDate: Date, baseStartDate: Dat
const daysInHalfYear =
month <= 6
? Math.floor(
(new Date(targetYear, 6, 1).getTime() - new Date(targetYear, 0, 1).getTime()) /
(1000 * 60 * 60 * 24)
)
(new Date(targetYear, 6, 1).getTime() - new Date(targetYear, 0, 1).getTime()) /
(1000 * 60 * 60 * 24),
)
: Math.floor(
(new Date(targetYear + 1, 0, 1).getTime() - new Date(targetYear, 6, 1).getTime()) /
(1000 * 60 * 60 * 24)
)
(new Date(targetYear + 1, 0, 1).getTime() - new Date(targetYear, 6, 1).getTime()) /
(1000 * 60 * 60 * 24),
)
const dayPositionInHalfYear = (dayOffset / daysInHalfYear) * halfYearWidth
position += dayPositionInHalfYear
@@ -601,12 +601,12 @@ const calculateHourViewMilestonePosition = (targetDate: Date, baseStartDate: Dat
const targetNormalized = new Date(
targetDate.getFullYear(),
targetDate.getMonth(),
targetDate.getDate()
targetDate.getDate(),
)
const baseNormalized = new Date(
baseStartDate.getFullYear(),
baseStartDate.getMonth(),
baseStartDate.getDate()
baseStartDate.getDate(),
)
const timeDiff = targetNormalized.getTime() - baseNormalized.getTime()
const daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24))
@@ -694,7 +694,7 @@ const calculateQuarterViewMilestonePosition = (targetDate: Date, baseStartDate:
const calculateMilestonePositionFromTimelineData = (
targetDate: Date,
timelineData: any,
timeScale: TimelineScale
timeScale: TimelineScale,
) => {
// 回退到原来的逻辑用于其他时间刻度
let cumulativePosition = 0
+22 -22
View File
@@ -198,13 +198,13 @@ const taskBarStyle = computed(() => {
const startDateOnly = new Date(
startDate.getFullYear(),
startDate.getMonth(),
startDate.getDate()
startDate.getDate(),
)
const endDateOnly = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate())
const baseStartOnly = new Date(
baseStart.getFullYear(),
baseStart.getMonth(),
baseStart.getDate()
baseStart.getDate(),
)
if (props.currentTimeScale === TimelineScale.YEAR) {
@@ -226,7 +226,7 @@ const taskBarStyle = computed(() => {
const startPosition = calculatePositionFromTimelineData(
startDateOnly,
props.timelineData,
props.currentTimeScale
props.currentTimeScale,
)
// 计算结束位置:为结束日期添加一天来获取正确的结束位置
const nextDay = new Date(endDateOnly)
@@ -234,7 +234,7 @@ const taskBarStyle = computed(() => {
let endPosition = calculatePositionFromTimelineData(
nextDay,
props.timelineData,
props.currentTimeScale
props.currentTimeScale,
)
// 如果结束日期+1天超出范围,使用结束日期的位置+一天的宽度
@@ -249,7 +249,7 @@ const taskBarStyle = computed(() => {
calculatePositionFromTimelineData(
endDateOnly,
props.timelineData,
props.currentTimeScale
props.currentTimeScale,
) + dayWidth
}
@@ -258,7 +258,7 @@ const taskBarStyle = computed(() => {
} else {
// 日视图:基于日期的简单计算
const startDiff = Math.floor(
(startDateOnly.getTime() - baseStartOnly.getTime()) / (1000 * 60 * 60 * 24)
(startDateOnly.getTime() - baseStartOnly.getTime()) / (1000 * 60 * 60 * 24),
)
// 计算持续天数(基于日期,忽略时间)
@@ -437,7 +437,7 @@ const handleMouseMove = (e: MouseEvent) => {
mouseX: e.clientX,
isDragging: isDragging.value || isResizingLeft.value || isResizingRight.value,
},
})
}),
)
if (isDragging.value) {
@@ -560,7 +560,7 @@ const handleMouseMove = (e: MouseEvent) => {
const newDurationDays = newWidth / props.dayWidth
const newEndDate = addDaysToLocalDate(
props.startDate,
resizeStartLeft.value / props.dayWidth + newDurationDays - 1
resizeStartLeft.value / props.dayWidth + newDurationDays - 1,
)
// 只更新临时数据,不触发事件
@@ -580,7 +580,7 @@ const handleMouseUp = () => {
mouseX: 0,
isDragging: false,
},
})
}),
)
// 如果有临时数据,说明发生了拖拽或拉伸,提交数据更新
@@ -661,7 +661,7 @@ watch(
reportBarPosition()
})
},
{ deep: true }
{ deep: true },
)
// 处理TaskBar双击事件
@@ -951,7 +951,7 @@ watch(
}
}, 200)
}
}
},
)
// 监听外部hideBubbles属性变化,确保Timeline的容器变化能及时反应
@@ -964,7 +964,7 @@ watch(
// 强制重新计算bubbleIndicator,确保容器宽度变化后正确显示半圆
})
}
}
},
)
// 监听TaskBar可见性变化,只在滚动时实现重新出现动画
@@ -973,7 +973,7 @@ watch(
() => {
// TaskBar重新出现时,不需要动画效果
// 半圆会自然消失,TaskBar会立即显示
}
},
)
// 监听页面缩放和大小变化,重新计算气泡位置
@@ -1133,13 +1133,13 @@ const calculateYearViewPosition = (targetDate: Date, baseStartDate: Date): numbe
const daysInHalfYear =
month <= 6
? Math.floor(
(new Date(targetYear, 6, 1).getTime() - new Date(targetYear, 0, 1).getTime()) /
(1000 * 60 * 60 * 24)
)
(new Date(targetYear, 6, 1).getTime() - new Date(targetYear, 0, 1).getTime()) /
(1000 * 60 * 60 * 24),
)
: Math.floor(
(new Date(targetYear + 1, 0, 1).getTime() - new Date(targetYear, 6, 1).getTime()) /
(1000 * 60 * 60 * 24)
)
(new Date(targetYear + 1, 0, 1).getTime() - new Date(targetYear, 6, 1).getTime()) /
(1000 * 60 * 60 * 24),
)
const dayPositionInHalfYear = (dayOffset / daysInHalfYear) * halfYearWidth
position += dayPositionInHalfYear
@@ -1163,7 +1163,7 @@ const calculatePositionFromTimelineData = (
subDays: Array<{ date: Date; dayOfWeek?: number }>
}>
}>,
timeScale: TimelineScale
timeScale: TimelineScale,
) => {
let cumulativePosition = 0
@@ -1181,11 +1181,11 @@ const calculatePositionFromTimelineData = (
// 找到目标日期所在的季度
const quarterWidth = 60
const daysInQuarter = Math.ceil(
(quarterEnd.getTime() - quarterStart.getTime()) / (1000 * 60 * 60 * 24)
(quarterEnd.getTime() - quarterStart.getTime()) / (1000 * 60 * 60 * 24),
)
const dayWidth = quarterWidth / daysInQuarter
const dayInQuarter = Math.ceil(
(targetDate.getTime() - quarterStart.getTime()) / (1000 * 60 * 60 * 24)
(targetDate.getTime() - quarterStart.getTime()) / (1000 * 60 * 60 * 24),
)
return cumulativePosition + dayInQuarter * dayWidth
}
+8 -8
View File
@@ -61,7 +61,7 @@ const handleTaskRowHover = (taskId: number | null) => {
window.dispatchEvent(
new CustomEvent('task-list-hover', {
detail: taskId,
})
}),
)
}
@@ -85,14 +85,14 @@ const handleTaskRowDoubleClick = (task: Task) => {
window.dispatchEvent(
new CustomEvent('task-row-double-click', {
detail: task,
})
}),
)
}
}
// 计算父级任务的进度和日期范围
const calculateParentTaskData = (
task: Task
task: Task,
): { progress: number; startDate: string; endDate: string } => {
if (!task.children || task.children.length === 0) {
return {
@@ -198,7 +198,7 @@ watch(
// 更新父级任务数据
updateParentTasksData()
},
{ immediate: true, deep: true }
{ immediate: true, deep: true },
)
function toggleCollapse(task: Task) {
@@ -258,7 +258,7 @@ const handleRequestTaskList = () => {
window.dispatchEvent(
new CustomEvent('task-list-updated', {
detail: allTasks,
})
}),
)
}
@@ -297,7 +297,7 @@ const handleTaskListScroll = (event: Event) => {
window.dispatchEvent(
new CustomEvent('task-list-vertical-scroll', {
detail: { scrollTop },
})
}),
)
}
@@ -319,7 +319,7 @@ const handleTaskRowContextMenu = (event: { task: Task; position: { x: number; y:
window.dispatchEvent(
new CustomEvent('context-menu', {
detail: event,
})
}),
)
} catch (error) {
console.error('TaskList - Failed to dispatch context-menu event', error)
@@ -371,7 +371,7 @@ onUnmounted(() => {
window.removeEventListener('timeline-task-hover', handleTimelineHover as EventListener)
window.removeEventListener(
'timeline-vertical-scroll',
handleTimelineVerticalScroll as EventListener
handleTimelineVerticalScroll as EventListener,
)
window.removeEventListener('milestone-icon-changed', handleMilestoneIconChange as EventListener)
window.removeEventListener('splitter-drag-start', handleSplitterDragStart as EventListener)
+1 -1
View File
@@ -186,7 +186,7 @@ watch(
updateTimer()
}
},
{ immediate: true }
{ immediate: true },
)
//
+26 -26
View File
@@ -354,7 +354,7 @@ const optimizedTimelineData = computed(() => {
const currentDay = new Date(day.year, day.month - 1, day.day)
currentDay.setHours(0, 0, 0, 0)
const daysDiff = Math.floor(
(currentDay.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24)
(currentDay.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24),
)
const totalHourOffset = daysDiff * 24
@@ -455,7 +455,7 @@ const computeAllMilestonesPositions = () => {
if (!isNaN(milestoneDate.getTime())) {
const startDiff = Math.floor(
(milestoneDate.getTime() - timelineConfig.value.startDate.getTime()) /
(1000 * 60 * 60 * 24)
(1000 * 60 * 60 * 24),
)
const left = startDiff * 30 + 30 / 2 - 12 // 30dayWidth12
@@ -489,7 +489,7 @@ const computeAllMilestonesPositions = () => {
if (!isNaN(milestoneDate.getTime())) {
const startDiff = Math.floor(
(milestoneDate.getTime() - timelineConfig.value.startDate.getTime()) /
(1000 * 60 * 60 * 24)
(1000 * 60 * 60 * 24),
)
const left = startDiff * 30 + 30 / 2 - 12
@@ -592,7 +592,7 @@ const handleTaskRowHover = (taskId: number | null) => {
window.dispatchEvent(
new CustomEvent('timeline-task-hover', {
detail: taskId,
})
}),
)
}
@@ -644,7 +644,7 @@ const handleMilestoneIconChange = (milestoneId: number, icon: string) => {
window.dispatchEvent(
new CustomEvent('milestone-icon-changed', {
detail: { milestoneId, icon },
})
}),
)
}
@@ -662,7 +662,7 @@ const handleMilestoneSave = (updatedMilestone: Milestone) => {
window.dispatchEvent(
new CustomEvent('milestone-data-updated', {
detail: { milestone: updatedMilestone },
})
}),
)
}
@@ -675,14 +675,14 @@ const handleMilestoneDelete = (milestoneId: number) => {
window.dispatchEvent(
new CustomEvent('milestone-deleted', {
detail: { milestoneId },
})
}),
)
// 广Timeline
window.dispatchEvent(
new CustomEvent('milestone-data-changed', {
detail: { milestoneId },
})
}),
)
}
@@ -697,7 +697,7 @@ const handleMilestoneUpdate = (updatedMilestone: Milestone) => {
window.dispatchEvent(
new CustomEvent('milestone-data-updated', {
detail: { milestone: updatedMilestone },
})
}),
)
}
@@ -997,7 +997,7 @@ watch(
clearTimelineCache()
timelineData.value = generateTimelineData()
}
}
},
)
// props/
@@ -1012,7 +1012,7 @@ watch(
})
}
},
{ deep: true }
{ deep: true },
)
// 线
@@ -1037,13 +1037,13 @@ const scrollToTodayCenter = (retry = 0) => {
startNormalized = new Date(
yearRange.startDate.getFullYear(),
yearRange.startDate.getMonth(),
yearRange.startDate.getDate()
yearRange.startDate.getDate(),
)
} else {
startNormalized = new Date(
timelineStart.getFullYear(),
timelineStart.getMonth(),
timelineStart.getDate()
timelineStart.getDate(),
)
}
@@ -1116,7 +1116,7 @@ const scrollToTodayCenter = (retry = 0) => {
}
const dayOffset = Math.floor(
(todayNormalized.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24)
(todayNormalized.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24),
)
const daysInQuarter =
Math.floor((endOfQuarter.getTime() - startOfQuarter.getTime()) / (1000 * 60 * 60 * 24)) + 1
@@ -1173,7 +1173,7 @@ const getTodayLinePositionInYearView = computed(() => {
const startNormalized = new Date(
yearRange.startDate.getFullYear(),
yearRange.startDate.getMonth(),
yearRange.startDate.getDate()
yearRange.startDate.getDate(),
)
const startYear = startNormalized.getFullYear()
@@ -1267,7 +1267,7 @@ const scrollToToday = () => {
const startNormalized = new Date(
timelineStart.getFullYear(),
timelineStart.getMonth(),
timelineStart.getDate()
timelineStart.getDate(),
)
// 线
@@ -1318,7 +1318,7 @@ const updateTask = (updatedTask: Task) => {
window.dispatchEvent(
new CustomEvent('task-updated', {
detail: updatedTask,
})
}),
)
}
@@ -1378,7 +1378,7 @@ const handleTaskBarContextMenu = (event: { task: Task; position: { x: number; y:
window.dispatchEvent(
new CustomEvent('context-menu', {
detail: event,
})
}),
)
}
@@ -1461,7 +1461,7 @@ onMounted(() => {
// TaskList
window.addEventListener(
'task-list-vertical-scroll',
handleTaskListVerticalScroll as EventListener
handleTaskListVerticalScroll as EventListener,
)
//
window.addEventListener('locale-changed', handleLocaleChange as EventListener)
@@ -1471,7 +1471,7 @@ onMounted(() => {
// TimelineresizeTaskList
window.addEventListener(
'timeline-container-resized',
handleTimelineContainerResized as EventListener
handleTimelineContainerResized as EventListener,
)
//
@@ -1561,7 +1561,7 @@ const handleTimelineBodyScroll = (event: Event) => {
window.dispatchEvent(
new CustomEvent('timeline-vertical-scroll', {
detail: { scrollTop },
})
}),
)
}
}
@@ -1574,7 +1574,7 @@ watch(
updateSvgSize()
})
},
{ immediate: true }
{ immediate: true },
)
//
@@ -1758,7 +1758,7 @@ const startAutoScroll = (direction: 'left' | 'right') => {
window.dispatchEvent(
new CustomEvent('timeline-auto-scroll', {
detail: { scrollDelta: newScrollLeft - currentScrollLeft },
})
}),
)
autoScrollTimer = window.setTimeout(scroll, 16) // 60fps
@@ -1812,14 +1812,14 @@ onUnmounted(() => {
window.removeEventListener('task-list-hover', handleTaskListHover as EventListener)
window.removeEventListener(
'task-list-vertical-scroll',
handleTaskListVerticalScroll as EventListener
handleTaskListVerticalScroll as EventListener,
)
window.removeEventListener('locale-changed', handleLocaleChange as EventListener)
window.removeEventListener('splitter-drag-start', handleSplitterDragStart as EventListener)
window.removeEventListener('splitter-drag-end', handleSplitterDragEnd as EventListener)
window.removeEventListener(
'timeline-container-resized',
handleTimelineContainerResized as EventListener
handleTimelineContainerResized as EventListener,
)
window.removeEventListener('milestone-click-locate', handleMilestoneClickLocate as EventListener)
window.removeEventListener('drag-boundary-check', handleDragBoundaryCheck as EventListener)
@@ -1930,7 +1930,7 @@ watch(
}
})
},
{ deep: true }
{ deep: true },
)
//