From 37008f692da3baec7c48e77dd5e567281166e191 Mon Sep 17 00:00:00 2001
From: bmodee <bjomo323@student.liu.se>
Date: Wed, 12 May 2021 10:53:41 +0200
Subject: [PATCH] Add max value for score value

---
 client/package-lock.json                      |  3 +-
 .../QuestionSettings.tsx                      | 40 ++++++++++++++-----
 .../slideSettingsComponents/Timer.tsx         | 16 +++++++-
 3 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/client/package-lock.json b/client/package-lock.json
index ef036354..d9504ac9 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -17610,7 +17610,8 @@
         },
         "ssri": {
           "version": "6.0.1",
-          "resolved": "",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
           "requires": {
             "figgy-pudding": "^3.5.1"
           }
diff --git a/client/src/pages/presentationEditor/components/slideSettingsComponents/QuestionSettings.tsx b/client/src/pages/presentationEditor/components/slideSettingsComponents/QuestionSettings.tsx
index f714fe23..526a1d0f 100644
--- a/client/src/pages/presentationEditor/components/slideSettingsComponents/QuestionSettings.tsx
+++ b/client/src/pages/presentationEditor/components/slideSettingsComponents/QuestionSettings.tsx
@@ -13,6 +13,7 @@ type QuestionSettingsProps = {
 
 const QuestionSettings = ({ activeSlide, competitionId }: QuestionSettingsProps) => {
   const dispatch = useAppDispatch()
+  const maxScore = 1000
 
   const updateQuestion = async (
     updateTitle: boolean,
@@ -29,15 +30,34 @@ const QuestionSettings = ({ activeSlide, competitionId }: QuestionSettingsProps)
           })
           .catch(console.log)
       } else {
-        setScore(+event.target.value)
-        await axios
-          .put(`/api/competitions/${competitionId}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`, {
-            total_score: event.target.value,
-          })
-          .then(() => {
-            dispatch(getEditorCompetition(competitionId))
-          })
-          .catch(console.log)
+        if (+event.target.value > maxScore) {
+          setScore(maxScore)
+          await axios
+            .put(
+              `/api/competitions/${competitionId}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`,
+              {
+                total_score: maxScore,
+              }
+            )
+            .then(() => {
+              dispatch(getEditorCompetition(competitionId))
+            })
+            .catch(console.log)
+          return maxScore
+        } else {
+          setScore(+event.target.value)
+          await axios
+            .put(
+              `/api/competitions/${competitionId}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`,
+              {
+                total_score: event.target.value,
+              }
+            )
+            .then(() => {
+              dispatch(getEditorCompetition(competitionId))
+            })
+            .catch(console.log)
+        }
       }
     }
   }
@@ -73,7 +93,7 @@ const QuestionSettings = ({ activeSlide, competitionId }: QuestionSettingsProps)
             helperText="Välj hur många poäng frågan ska ge för rätt svar."
             label="Poäng"
             type="number"
-            InputProps={{ inputProps: { min: 0 } }}
+            InputProps={{ inputProps: { min: 0, max: maxScore } }}
             value={score || 0}
             onChange={(event) => updateQuestion(false, event)}
           />
diff --git a/client/src/pages/presentationEditor/components/slideSettingsComponents/Timer.tsx b/client/src/pages/presentationEditor/components/slideSettingsComponents/Timer.tsx
index a633efec..7a8208d4 100644
--- a/client/src/pages/presentationEditor/components/slideSettingsComponents/Timer.tsx
+++ b/client/src/pages/presentationEditor/components/slideSettingsComponents/Timer.tsx
@@ -12,9 +12,21 @@ type TimerProps = {
 }
 
 const Timer = ({ activeSlide, competitionId }: TimerProps) => {
+  const maxTime = 1000
   const dispatch = useAppDispatch()
   const updateTimer = async (event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => {
-    setTimer(+event.target.value)
+    if (+event.target.value > maxTime) {
+      setTimer(maxTime)
+      await axios
+        .put(`/api/competitions/${competitionId}/slides/${activeSlide.id}`, { timer: maxTime || null })
+        .then(() => {
+          dispatch(getEditorCompetition(competitionId))
+        })
+        .catch(console.log)
+      return maxTime
+    } else {
+      setTimer(+event.target.value)
+    }
     if (activeSlide) {
       await axios
         .put(`/api/competitions/${competitionId}/slides/${activeSlide.id}`, { timer: event.target.value || null })
@@ -24,6 +36,7 @@ const Timer = ({ activeSlide, competitionId }: TimerProps) => {
         .catch(console.log)
     }
   }
+
   const [timer, setTimer] = useState<number | undefined>(activeSlide?.timer)
   useEffect(() => {
     setTimer(activeSlide?.timer)
@@ -40,6 +53,7 @@ const Timer = ({ activeSlide, competitionId }: TimerProps) => {
           label="Timer"
           type="number"
           onChange={updateTimer}
+          inputProps={{ max: maxTime }}
           value={timer || ''}
         />
       </Center>
-- 
GitLab