mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-04 00:17:45 +08:00
fix: speed up usage activity heatmap render
This commit is contained in:
@@ -410,17 +410,10 @@ function buildTooltip(day: ActivityHeatmapDay): string {
|
|||||||
return parts.join(' · ')
|
return parts.join(' · ')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成完全随机的动画延迟,每个格子独立随机弹出
|
|
||||||
const cellDelayMap = new Map<string, number>()
|
|
||||||
|
|
||||||
function getCellAnimationDelay(weekIndex: number, dayIndex: number) {
|
function getCellAnimationDelay(weekIndex: number, dayIndex: number) {
|
||||||
const key = `${weekIndex}-${dayIndex}`
|
const delay = Math.min(120, weekIndex * 2 + dayIndex * 4)
|
||||||
if (!cellDelayMap.has(key)) {
|
|
||||||
// 完全随机延迟,范围 0-800ms
|
|
||||||
cellDelayMap.set(key, Math.random() * 800)
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
animationDelay: `${cellDelayMap.get(key)}ms`
|
animationDelay: `${delay}ms`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -428,7 +421,7 @@ function getCellAnimationDelay(weekIndex: number, dayIndex: number) {
|
|||||||
<style scoped>
|
<style scoped>
|
||||||
.cell-emerge {
|
.cell-emerge {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
animation: cellEmerge 0.35s ease-out forwards;
|
animation: cellEmerge 0.18s ease-out forwards;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes cellEmerge {
|
@keyframes cellEmerge {
|
||||||
|
|||||||
@@ -799,7 +799,11 @@ onMounted(async () => {
|
|||||||
document.addEventListener('visibilitychange', handleVisibilityChange)
|
document.addEventListener('visibilitychange', handleVisibilityChange)
|
||||||
|
|
||||||
if (isAdminPage.value) {
|
if (isAdminPage.value) {
|
||||||
// 管理员页面优先加载记录,统计面板在后台顺序刷新,避免瞬时并发打满后端。
|
// 管理员页面优先启动热力图加载,避免被统计聚合链路阻塞。
|
||||||
|
const heatmapPromise = loadHeatmapData().catch(err => {
|
||||||
|
log.error('加载热力图数据失败:', err)
|
||||||
|
})
|
||||||
|
|
||||||
await loadRecords(
|
await loadRecords(
|
||||||
{ page: currentPage.value, pageSize: pageSize.value },
|
{ page: currentPage.value, pageSize: pageSize.value },
|
||||||
getCurrentFilters(),
|
getCurrentFilters(),
|
||||||
@@ -807,7 +811,7 @@ onMounted(async () => {
|
|||||||
)
|
)
|
||||||
void (async () => {
|
void (async () => {
|
||||||
await refreshAdminAnalytics({ force: true, preserveOnFailure: false })
|
await refreshAdminAnalytics({ force: true, preserveOnFailure: false })
|
||||||
await loadHeatmapData()
|
await heatmapPromise
|
||||||
await loadAdminUsers()
|
await loadAdminUsers()
|
||||||
})()
|
})()
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user