From fa34cb621239f326839996a5270cb71ae9250b6d Mon Sep 17 00:00:00 2001
From: Albin Henriksson <albhe428@student.liu.se>
Date: Fri, 14 May 2021 11:25:38 +0200
Subject: [PATCH] Fix operator timer

---
 .../presentationEditor/components/SlideDisplay.tsx   | 12 ++++++++++++
 client/src/pages/views/OperatorViewPage.tsx          |  2 +-
 client/src/pages/views/components/Timer.tsx          |  8 ++++++--
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/client/src/pages/presentationEditor/components/SlideDisplay.tsx b/client/src/pages/presentationEditor/components/SlideDisplay.tsx
index 9fd6ed70..517deb54 100644
--- a/client/src/pages/presentationEditor/components/SlideDisplay.tsx
+++ b/client/src/pages/presentationEditor/components/SlideDisplay.tsx
@@ -3,6 +3,7 @@ import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'
 import { getTypes } from '../../../actions/typesAction'
 import { useAppDispatch, useAppSelector } from '../../../hooks'
 import PresentationComponent from '../../views/components/PresentationComponent'
+import Timer from '../../views/components/Timer'
 import RndComponent from './RndComponent'
 import { Center, SlideEditorContainer, SlideEditorContainerRatio, SlideEditorPaper } from './styled'
 
@@ -27,6 +28,10 @@ const SlideDisplay = ({ variant, activeViewTypeId, currentSlideId }: SlideDispla
     if (variant === 'editor') return state.editor.competition.background_image
     return state.presentation.competition.background_image
   })
+  const totalSlides = useAppSelector((state) => {
+    if (variant === 'presentation') return state.presentation.competition.slides.length
+    return state.editor.competition.slides.length
+  })
 
   const slideBackgroundImage = slide?.background_image
   const dispatch = useAppDispatch()
@@ -54,6 +59,13 @@ const SlideDisplay = ({ variant, activeViewTypeId, currentSlideId }: SlideDispla
     <SlideEditorContainer>
       <SlideEditorContainerRatio>
         <SlideEditorPaper ref={editorPaperRef}>
+          <Typography variant="h3" style={{ position: 'absolute', left: 5, top: 5 }}>
+            {variant === 'editor' && `Tid kvar: ${slide?.timer}`}
+            {variant === 'presentation' && <Timer />}
+          </Typography>
+          <Typography variant="h3" style={{ position: 'absolute', right: 5, top: 5 }}>
+            {slide && `Sida: ${slide?.order + 1} / ${totalSlides}`}
+          </Typography>
           {(competitionBackgroundImage || slideBackgroundImage) && (
             <img
               src={`/static/images/${
diff --git a/client/src/pages/views/OperatorViewPage.tsx b/client/src/pages/views/OperatorViewPage.tsx
index 0936abaf..a23809e4 100644
--- a/client/src/pages/views/OperatorViewPage.tsx
+++ b/client/src/pages/views/OperatorViewPage.tsx
@@ -309,7 +309,7 @@ const OperatorViewPage: React.FC = () => {
           <Tooltip title="Starta Timer" arrow>
             <OperatorButton onClick={socketStartTimer} variant="contained">
               <TimerIcon fontSize="large" />
-              <Timer></Timer>
+              <Timer disableText />
             </OperatorButton>
           </Tooltip>
 
diff --git a/client/src/pages/views/components/Timer.tsx b/client/src/pages/views/components/Timer.tsx
index 1bab9968..f96806e2 100644
--- a/client/src/pages/views/components/Timer.tsx
+++ b/client/src/pages/views/components/Timer.tsx
@@ -18,7 +18,11 @@ const mapDispatchToProps = (dispatch: any) => {
 
 let timerIntervalId: NodeJS.Timeout
 
-const Timer: React.FC = () => {
+type TimerProps = {
+  disableText?: boolean
+}
+
+const Timer = ({ disableText }: TimerProps) => {
   const dispatch = useAppDispatch()
   const slide = store
     .getState()
@@ -40,7 +44,7 @@ const Timer: React.FC = () => {
     }
   }, [timer.enabled])
 
-  return <div>{timer.value}</div>
+  return <div>{`${!disableText ? 'Tid kvar:' : ''} ${timer.value}`}</div>
 }
 
 export default Timer
-- 
GitLab