Skip to content

fix: コンテスト表にページネーションを追加し、ADTタブのフリーズを防ぐ - #1567

Open
Takagi-Masao wants to merge 2 commits into
kenkoooo:mainfrom
Takagi-Masao:codex/fix-adt-pagination
Open

Takagi-Masao wants to merge 2 commits into
kenkoooo:mainfrom
Takagi-Masao:codex/fix-adt-pagination

Conversation

@Takagi-Masao

@Takagi-Masao Takagi-Masao commented Oct 14, 2026 •

Copy link
Copy Markdown

ADTタブを開くとブラウザが長時間応答しなくなり、RESULT_CODE_HUNG が発生する問題を修正します。コンテスト表の9カテゴリにページネーションを適用し、Listページと同じ操作・見た目に統一します。

Fixes #1558

原因

ADTでは数千件のコンテストと大量の問題セルを一度に描画していました。難易度表示に使う大量のTooltipが、マウント時に文字列セレクターでDOMを検索するため、メインスレッドが長時間ブロックされます。adt_top の非表示だけでは解消できません。

変更内容

  • ABC、ARC、AGC、AWC、ADT、ABC-Like、ARC-Like、AGC-Like、PASTのコンテスト表にページネーションを適用します。
  • 既存の ListPaginationPanel を再利用し、ページ番号ボタンと表示件数セレクターをListページと同じスタイルに統一します。新しいCSSや依存パッケージは追加しません。
  • 初期表示を1ページ20件とし、20・50・100・200件から選択できるようにします。大量の行を一度に描画する問題の再発を避けるため、コンテスト表には「All」を追加しません。
  • 全コンテストの状態集計と「完了済みコンテストを非表示」の絞り込み後にページ分割します。
  • カテゴリを切り替えると先頭ページに戻り、最新のコンテストから表示します。
  • 各カテゴリの表示行数、ページ移動、表示件数の変更、カテゴリ切り替え、絞り込みで最終ページが消える場合の回帰テストを追加します。

確認

  • ユニットテスト:16スイート・93件成功。
  • ESLint、Prettier、プロダクションビルド:成功。
  • 公開データを使ったローカルのChromium検証で9カテゴリを確認しました。ADTの表示と2ページ目への移動は合計約0.22秒で完了し、ブラウザのフリーズやJavaScriptの実行時エラーは発生しませんでした。
  • ライト・ダークの両テーマで、コンテスト表とListページのページネーションの算出済みスタイルが一致することを確認しました。
  • ADTの最終ページ、200件表示、再読み込み、難易度Tooltip、幅390pxのモバイル表示とページ移動を確認しました。公開データではABC-Likeが17件のため、同カテゴリの複数ページ動作はテスト用データで確認しました。

なお、単独の tsc --noEmit には既存のTypeScriptと依存パッケージの型定義の不整合があります。上記の検証結果には単独の型チェックの成功は含めていません。

@Takagi-Masao Takagi-Masao changed the title fix: ADTタブのページネーションでブラウザのフリーズを防ぐ fix: コンテスト表にページネーションを追加し、ADTタブのフリーズを防ぐ Oct 14, 2026

This branch has not been deployed

No deployments
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.

The page crashes when clicking ADT

1 participant