Passed
Push — development ( 4e024d...529d1a )
by Vad
09:33 queued 16s
created

frontend/src/components/RealTimeUpdate.tsx   A

Complexity

Total Complexity 4
Complexity/F 4

Size

Lines of Code 48
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 50%

Importance

Changes 0
Metric Value
eloc 35
dl 0
loc 48
ccs 7
cts 14
cp 0.5
rs 10
c 0
b 0
f 0
wmc 4
mnd 3
bc 3
fnc 1
bpm 3
cpm 4
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A RealTimeUpdate.tsx ➔ RealTimeUpdate 0 37 4
1
import { Label, ToggleSwitch } from 'flowbite-react';
2
3
type Props = {
4
    timerRef: React.MutableRefObject<number | null>;
5
    realTime: boolean;
6
    setRealTime: React.Dispatch<React.SetStateAction<boolean>>;
7
    setTrigger: React.Dispatch<React.SetStateAction<number>>
8
}
9
10
export default function RealTimeUpdate({timerRef, realTime, setRealTime, setTrigger} : Props) {
11
12 3
    const updateRealTime = () => {
13
        setRealTime(!realTime);
14 2
        if (realTime)
15
        {
16
          stopTimer();
17
        } else {
18
          startTimer();
19
        }
20
      }
21
22 3
      const startTimer = () => {
23 2
        if (!timerRef.current)
24
          {
25
            timerRef.current = setInterval(() => {
26
              setTrigger((prev: number) => prev + 1);
27
            }, 1000);
28
          }
29
    };
30
  
31 3
    const stopTimer = () => {
32 2
        if (timerRef.current)
33
          {
34
            clearInterval(timerRef.current);
35
            timerRef.current = null;
36
          }
37
    };
38
    
39
    
40
41 3
  return (
42
    <div>
43
        <Label htmlFor="realtimetoggle">Vill du uppdatera kartan i realtid?</Label>
44
        <ToggleSwitch id="realtimetoggle" data-testid="realtimeupdate" checked={realTime} onChange={updateRealTime}>Uppdatera i realtid?</ToggleSwitch>
45
    </div>
46
  )
47
}
48