Skip to content

Commit 5239e1d

Browse files
authored
Merge pull request #171 from iilj/fix/#170_missing_ac
Fix #170, update firstSolved/solved merge procedure
2 parents 9b82b6a + e8f1523 commit 5239e1d

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

src/pages/UserPage/SolvedProblemList.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export const SolvedProblemList: React.FC<Props> = (props) => {
4444
toDate,
4545
problemLinkColorMode,
4646
} = props;
47-
4847
return (
4948
<BootstrapTable
5049
data={solvedProblems

src/pages/UserPage/index.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,13 @@ export const UserPage: React.FC = () => {
211211
},
212212
[] as SolvedProblem[]
213213
);
214+
// merge
215+
// solvedProblems に入っていて firstSolvedProblemsMap に入っていないものを追加する
216+
solvedProblems.forEach((solvedProblem) => {
217+
if (!firstSolvedProblemsMap.has(solvedProblem.ProblemId)) {
218+
mergedSolvedProblems.push(solvedProblem);
219+
}
220+
});
214221

215222
// for user info section
216223
/** returns [shortestCount, shortestRank] */

src/utils/MergeProcs.ts

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,48 @@ export const mergeSolveStatus = (
7676
};
7777
}
7878
// assert コンテスト情報あり
79+
7980
if (!firstSolvedProblem) {
80-
// 未 AC
81-
return {
82-
...problem,
83-
Contest: extendedContest,
84-
DateNum,
85-
SolveStatus: ProblemSolveStatus.Trying,
86-
Difficulty,
87-
Augmented,
88-
Index: problemIndexMap.get(problem.ProblemId),
89-
};
81+
if (!solvedProblem) {
82+
// 未 AC
83+
return {
84+
...problem,
85+
Contest: extendedContest,
86+
DateNum,
87+
SolveStatus: ProblemSolveStatus.Trying,
88+
Difficulty,
89+
Augmented,
90+
Index: problemIndexMap.get(problem.ProblemId),
91+
};
92+
} else {
93+
// 何故か firstSolvedProblem のほうに入っていないことがあるので polyfill
94+
// firstSolvedProblem の代わりに solvedProblem を使う
95+
const SolveDate = solvedProblem?.Date;
96+
const SolveDateNum = SolveDate ? Date.parse(SolveDate) : undefined;
97+
const FirstSolveDate = solvedProblem.Date;
98+
const FirstSolveDateNum = Date.parse(FirstSolveDate);
99+
const SolveStatus =
100+
FirstSolveDateNum > extendedContest.EndDateNum
101+
? ProblemSolveStatus.Solved
102+
: FirstSolveDateNum >= extendedContest.DateNum
103+
? ProblemSolveStatus.Intime
104+
: ProblemSolveStatus.BeforeContest;
105+
return {
106+
...problem,
107+
Contest: extendedContest,
108+
DateNum,
109+
SolveDate,
110+
SolveDateNum,
111+
FirstSolveDate,
112+
FirstSolveDateNum,
113+
SolveStatus,
114+
Difficulty,
115+
Augmented,
116+
Index: problemIndexMap.get(problem.ProblemId),
117+
};
118+
}
90119
}
120+
91121
// assert AC 済み
92122
const SolveDate = solvedProblem?.Date;
93123
const SolveDateNum = SolveDate ? Date.parse(SolveDate) : undefined;

0 commit comments

Comments
 (0)