-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcurrentTask.tsx
More file actions
104 lines (93 loc) · 2.54 KB
/
Copy pathcurrentTask.tsx
File metadata and controls
104 lines (93 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { useEffect, useState } from "react";
import Countdown from "./countdown";
import TimeDisplay from "./timeDisplay";
interface Task {
id: number;
start_time: string;
end_time: string;
}
interface Tasks {
tasks: Task[];
}
const CurrentTask = ({ tasks }: Tasks) => {
const [currentTasks, setCurrentTasks] = useState<Task[]>([]);
const [currentTask, setCurrentTask] = useState<Task>(
{
id : 1,
start_time : "00:00:00",
end_time : "00:00:00"
}
);
useEffect(() => {
function getCurrentTask() {
setCurrentTasks([]);
tasks.forEach((task) => {
const [startHours, startMins, startSec] = task.start_time
.split(":")
.map(Number);
const [endHours, endMins, endSec] = task.end_time
.split(":")
.map(Number);
const d = new Date();
const start_time = startHours * 60 * 60 + startMins * 60 + startSec;
const end_time = endHours * 60 * 60 + endMins * 60 + endSec;
const cur_time =
d.getHours() * 60 * 60 + d.getMinutes() * 60 + d.getSeconds();
console.log(
startHours,
" ",
endHours,
" ",
endHours,
" ",
endMins,
" ",
d.getHours(),
" ",
d.getMinutes(),
);
console.log(start_time, " ", end_time, " ", cur_time);
if (start_time <= cur_time && end_time >= cur_time) {
setCurrentTasks((prevTasks) => [...prevTasks, task]);
}
});
setCurrentTask(currentTasks[0]);
}
getCurrentTask();
}, [tasks]);
const updateTask = (status : string) => {
if (status == "finished") {
setCurrentTask(currentTasks[0]);
}
}
return (
<>
<ul>
{currentTasks.length <= 0 ? (
<>
<div className="m-8 flex flex-col items-center justify-center rounded-xl bg-blue-500 p-3 px-10 font-sans text-white shadow-lg shadow-blue-500/50">
<h1 className="p-2 font-sans">NO CURRENT TASKS</h1>
<div>MAKE ONE?</div>
</div>
</>
) : (
<>
{currentTasks.map((task: Task) => (
<li key={task.id}>
<Countdown taskTime={task.end_time} />
</li>
))}
</>
)}
</ul>
<div>
{currentTasks.length > 0 ? (
<TimeDisplay statusSignal={updateTask} end_time={currentTasks[0].end_time} />
):(
<></>
)}
</div>
</>
);
};
export default CurrentTask;