You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
5.2 KiB
143 lines
5.2 KiB
|
|
import Grid from '@mui/material/Grid';
|
|
import { Button, Box, Switch } from '../../components/UI';
|
|
import React, { useState } from 'react'
|
|
|
|
interface Props {
|
|
children?: React.ReactNode;
|
|
onClick: () => void;
|
|
disable: boolean;
|
|
}
|
|
|
|
let scores_nay = 0;
|
|
|
|
|
|
|
|
export const Estimation: React.FC<Props> = ({children, onClick, disable}) => {
|
|
const [counter, setCounter] = useState(0);
|
|
const [butStartnDisable, setButStartnDisable] = useState(false);
|
|
const [butWriteDisable, setButWriteDisable] = useState(true);
|
|
const [switchDisable, setSwitchDisable] = useState(true);
|
|
const [scores, setScores] = useState(0);
|
|
const [start, setStart] = useState(false);
|
|
const [buttonText, setButtonText] = useState('СТАРТ');
|
|
const [data, setData] = useState({switchstart: false, switchwasher_1: false, switchwasher_2: false, switchwasher_3: false, switchwasher_4: false, switchfinish: false});
|
|
|
|
React.useEffect(() => {
|
|
const timer =
|
|
( counter < 60 ) && start && setInterval(() => setCounter(counter + 1), 1000);
|
|
return () => clearInterval(timer);
|
|
}, [counter, start]);
|
|
|
|
const fnStart = () => {
|
|
setStart(start ? false : true);
|
|
setButtonText(start ? 'СТАРТ':'СТОП');
|
|
console.log(start);
|
|
setButStartnDisable(start ? true : false);
|
|
setSwitchDisable(false);
|
|
setButWriteDisable(false);
|
|
}
|
|
|
|
|
|
const fnWrite = () => {
|
|
console.log(scores);
|
|
}
|
|
|
|
const updateData = (e: any) => {
|
|
setData({
|
|
...data, [e.target.id]: e.target.checked
|
|
});
|
|
scores_nay = e.target.checked ? scores_nay+parseInt(e.target.value): scores_nay-parseInt(e.target.value);
|
|
setScores(e.target.checked ? scores+parseInt(e.target.value): scores-parseInt(e.target.value))
|
|
|
|
if (scores_nay === 50) {
|
|
setScores(scores_nay+(60-counter));
|
|
}
|
|
}
|
|
return(
|
|
<Grid container rowSpacing={1} columnSpacing={{ xs: 12, sm: 2, md: 2 }}>
|
|
<Grid item xs={12} sm={2} md={6}>
|
|
<Box>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Команда: Имя</p>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Время: {counter} сек</p>
|
|
<p className='taskTitle'>Баллы: {scores} </p>
|
|
</div>
|
|
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Выезд из зоны старта</p>
|
|
<Switch
|
|
isOn={data.switchstart}
|
|
value={5}
|
|
disable={switchDisable}
|
|
name={'start'}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Первая щайба</p>
|
|
<Switch
|
|
isOn={data.switchwasher_1}
|
|
name={'washer_1'}
|
|
value={10}
|
|
disable={switchDisable}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Вторая шайба</p>
|
|
<Switch
|
|
isOn={data.switchwasher_2}
|
|
name={'washer_2'}
|
|
value={10}
|
|
disable={switchDisable}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Третья шайба</p>
|
|
<Switch
|
|
isOn={data.switchwasher_3}
|
|
name={'washer_3'}
|
|
value={10}
|
|
disable={switchDisable}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Четвертая шайба</p>
|
|
<Switch
|
|
isOn={data.switchwasher_4}
|
|
name={'washer_4'}
|
|
value={10}
|
|
disable={switchDisable}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='taskBox'>
|
|
<p className='taskTitle'>Заезд в зону финиша</p>
|
|
<Switch
|
|
isOn={data.switchfinish}
|
|
name={'finish'}
|
|
value={5}
|
|
disable={switchDisable}
|
|
onColor="#EF476F"
|
|
handleToggle={(e) => updateData(e)}>
|
|
</Switch>
|
|
</div>
|
|
<div className='boxButton'>
|
|
<Button onClick={()=> fnStart()} disable={butStartnDisable}>{buttonText}</Button>
|
|
<Button onClick={()=> fnWrite()} disable={butWriteDisable}>Подтверждаю результат</Button>
|
|
</div>
|
|
</Box>
|
|
</Grid>
|
|
</Grid>
|
|
)
|
|
} |