From 7a9fef4cb7cfef6df01ffe9c3652a1c197abb66c Mon Sep 17 00:00:00 2001 From: iilj Date: Mon, 11 Jan 2021 15:26:17 +0900 Subject: [PATCH 1/2] Add .eslintcache tot .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a7a215b..d227ab6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.eslintcache *.bak From 9defd83b56554a718703486a2a4915d754d8d850 Mon Sep 17 00:00:00 2001 From: iilj Date: Mon, 11 Jan 2021 16:13:54 +0900 Subject: [PATCH 2/2] Add problem title header to ListTable --- src/interfaces/MergedProblem.ts | 2 ++ src/pages/ListPage/ListTable.tsx | 5 ++++- src/pages/ProblemDetailPage/index.tsx | 8 +++++++- src/utils/MergeProcs.ts | 10 ++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/interfaces/MergedProblem.ts b/src/interfaces/MergedProblem.ts index 296545f..3f83e5e 100644 --- a/src/interfaces/MergedProblem.ts +++ b/src/interfaces/MergedProblem.ts @@ -43,6 +43,8 @@ export interface MergedProblem extends Problem { readonly Difficulty?: Difficulty; /** experimental difficulty かどうか */ readonly Augmented?: boolean; + /** コンテスト中の問題インデックス */ + readonly Index?: number; } /** コンテスト情報,解答状況,およびショートコード情報をマージした問題 */ diff --git a/src/pages/ListPage/ListTable.tsx b/src/pages/ListPage/ListTable.tsx index 03e7014..9c6aa5e 100644 --- a/src/pages/ListPage/ListTable.tsx +++ b/src/pages/ListPage/ListTable.tsx @@ -28,6 +28,7 @@ import { import { ProblemDetailModal } from '../../components/ProblemDetailModal'; import { useNavigate } from 'react-router'; import { useSearchParams } from 'react-router-dom'; +import { getHeader } from '../../utils'; export type FilterState = 'All' | 'Only Trying' | 'Only AC'; @@ -115,9 +116,11 @@ export const ListTable: React.FC = (props) => { title: string, row: RankingMergedProblem ) { + const header = + row.Index !== undefined ? `${getHeader(row.Index)}. ` : ''; return ( { const contestId = problemContestMap.get(problemId); const contest = contestId ? contestMap.get(contestId) : undefined; + const header = contest + ? `${getHeader( + contest.ProblemIdList.findIndex((pid) => pid === problem.ProblemId) + )}. ` + : ''; const shortestRankingProblem = golferProblemMap.get(problemId); const pureShortestRankingProblem = golferPureProblemMap.get(problemId); @@ -157,7 +163,7 @@ export const ProblemDetailPage: React.FC = () => { Title () ); + const problemIndexMap = contests.reduce((map, contest) => { + contest.ProblemIdList.forEach((pid, i) => { + if (pid < 0) return; + map.set(pid, i); + }); + return map; + }, new Map()); const mergedProblems = problems.map( (problem): MergedProblem => { const DateNum = Date.parse(problem.Date as string); @@ -66,6 +73,7 @@ export const mergeSolveStatus = ( SolveStatus, Difficulty, Augmented, + Index: undefined, }; } // assert コンテスト情報あり @@ -78,6 +86,7 @@ export const mergeSolveStatus = ( SolveStatus: ProblemSolveStatus.Trying, Difficulty, Augmented, + Index: problemIndexMap.get(problem.ProblemId), }; } // assert AC 済み @@ -102,6 +111,7 @@ export const mergeSolveStatus = ( SolveStatus, Difficulty, Augmented, + Index: problemIndexMap.get(problem.ProblemId), }; } );