fix: speed up usage activity heatmap render

This commit is contained in:
ndllz
2026-06-09 16:52:58 +08:00
parent ebd59246a8
commit 84b99a641a
2 changed files with 9 additions and 12 deletions
@@ -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 {
+6 -2
View File
@@ -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 {