Skip to content

feat(leaderboard): 排行榜改为分页滚动加载,并补齐人数与本人排名 - #8

Merged
YasinChan merged 1 commit into
mainfrom
cyy/0914
Sep 14, 2026
Merged

YasinChan merged 1 commit into
mainfrom
cyy/0914

Conversation

@YasinChan

Copy link
Copy Markdown
Owner

公开榜不再一次拉全量。限时 / 计时两列各自请求
GET /api/leaderboard?type=&page=&pageSize=100,用 IntersectionObserver 在列内滚动追加;名次按当前累加列表下标计算,避免翻页后错位。

人数与本人

  • 标题旁展示「共 n 人(同一个人只算最快一次)」,悬停用项目 Tooltip 说明规则
  • 第一页响应带 mine:可点「我的排名 第 N 名」筛选只看自己,高亮当前用户行
  • 名次查询失败显示「排名暂不可用」,不再把 SQL/身份错误误报成「暂未上榜」
  • 登录优先按 userId 对上自己;历史只有 userName 的旧记录也能回落到本人

交互

  • 抽出 LeaderBoardPanel,两列共用滚动容器、哨兵和标题区
  • 空榜 / 加载中 / 加载失败可点重试;追加失败不会让 observer 卡死
  • 规则说明走 Tooltip 文本和 content slot,排行榜不再 v-html
  • 「我的排名」改用 Tooltip,去掉原生 title
  • Tooltip 增加 wrap 与具名 content 插槽,长文案可以换行

接口

  • getLeaderBoard 改为带 type/page/pageSize
  • 保存成绩仍提交字段,注释标明身份以服务端 cookie / IP 为准

i18n 补 empty_leaderboard、player_count、my_rank、my_rank_n、 not_on_leaderboard、rank_unavailable、load_more_failed。

公开榜不再一次拉全量。限时 / 计时两列各自请求
GET /api/leaderboard?type=&page=&pageSize=100,用 IntersectionObserver
在列内滚动追加;名次按当前累加列表下标计算,避免翻页后错位。

人数与本人
- 标题旁展示「共 n 人(同一个人只算最快一次)」,悬停用项目 Tooltip 说明规则
- 第一页响应带 mine:可点「我的排名 第 N 名」筛选只看自己,高亮当前用户行
- 名次查询失败显示「排名暂不可用」,不再把 SQL/身份错误误报成「暂未上榜」
- 登录优先按 userId 对上自己;历史只有 userName 的旧记录也能回落到本人

交互
- 抽出 LeaderBoardPanel,两列共用滚动容器、哨兵和标题区
- 空榜 / 加载中 / 加载失败可点重试;追加失败不会让 observer 卡死
- 规则说明走 Tooltip 文本和 content slot,排行榜不再 v-html
- 「我的排名」改用 Tooltip,去掉原生 title
- Tooltip 增加 wrap 与具名 content 插槽,长文案可以换行

接口
- getLeaderBoard 改为带 type/page/pageSize
- 保存成绩仍提交字段,注释标明身份以服务端 cookie / IP 为准

i18n 补 empty_leaderboard、player_count、my_rank、my_rank_n、
not_on_leaderboard、rank_unavailable、load_more_failed。
@YasinChan

Copy link
Copy Markdown
Owner Author

#4

@YasinChan
YasinChan merged commit 221195f into main Sep 14, 2026
1 check passed
@YasinChan YasinChan mentioned this pull request Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant