ChubachiPT2024 / manakan

MIT License
0 stars 0 forks source link

【Classification ページ】SubmissionCard を未分類エリアにドロップすると、grade と rank が null に設定される #202

Closed a2311kk closed 2 months ago

a2311kk commented 2 months ago

バグの説明

SubmissionCard を未分類エリアにドロップすると、grade と rank が null に設定される

バグの再現手順

  1. Classification ページに移動する
  2. SubmissionCard を未分類エリアにドロップする

期待される動作

grade と rank が undefined に設定される

スクリーンショット

追加のコンテキスト

原因は以下のコード。over.id が 'has-not-grade' であるとき、grade と rank が初期値 null のままになる。

    let grade: AssessmentGradeOfFrontend | null = null
    let rank: AssessmentRankOfFrontend | null = null

    if (over && active.id !== over?.id) {
      const newItems = report.items.map((item) => {
        if (item.student.numId === active.id) {
          if (over.id !== 'has-not-grade') {
            let [newGrade, newRank] = (over.id as string).split(':')
            newRank = newRank === '' ? undefined : newRank
            grade = Number(newGrade) as AssessmentGradeOfFrontend
            rank = newRank as AssessmentRankOfFrontend
          }

          return {
            ...item,
            assessment: {
              grade: grade,
              rank: rank,
            },
          }
        }

修正方法としては、over.id === 'has-not-grade' である場合に grade と rank を undefined にすれば良さそう。

          if (over.id === 'has-not-grade') {
            return {
              ...item,
              assessment: {
                grade: undefined,
                rank: undefined,
              },
            }
          }

その場合、以下の部分を undefined との比較かつ厳密等価に修正でき、そうした方が良いかもしれない。

  const notHasAssessmentItem = report.items
    .filter((item) => item.student.numId !== draggingSubmissionId)
    .filter((item) => item.assessment.grade == null)
  const hasAssessmentItem = report.items
    .filter((item) => item.student.numId !== draggingSubmissionId)
    .filter((item) => item.assessment.grade != null)
a2311kk commented 2 months ago

原因と対応方法まで特定できたので、私の方で対応しようかと思います。

shunya9811 commented 2 months ago

@a2311kk よろしくお願いします!