Commit bd708933 authored by Ermolaev Timur's avatar Ermolaev Timur

#66 Добавил логику под инпуты времени

parent 3b8eeeb6
...@@ -28,7 +28,15 @@ const CalendarTask = ({setCurrentTask, handleOpen, task, line, setCurrentLine, i ...@@ -28,7 +28,15 @@ const CalendarTask = ({setCurrentTask, handleOpen, task, line, setCurrentLine, i
const onClickTaskHandler = (e, task) => { const onClickTaskHandler = (e, task) => {
e.stopPropagation(); e.stopPropagation();
setCurrentTask(task); setCurrentTask((prevState)=>{
return {
...task,
infoForCell: {
...task.infoForCell,
endHour: task.infoForCell.endHour + 1
}
}
});
handleOpen(e) handleOpen(e)
} }
......
...@@ -13,7 +13,6 @@ function MonthCalendarBody({month, year, tasks, createTaskInCellHandler, current ...@@ -13,7 +13,6 @@ function MonthCalendarBody({month, year, tasks, createTaskInCellHandler, current
const [currentLine, setCurrentLine] = useState('') const [currentLine, setCurrentLine] = useState('')
const [modal, setModal] = useState({open:false, y: 0, x: 0,}); const [modal, setModal] = useState({open:false, y: 0, x: 0,});
const handleOpen = (e) => { const handleOpen = (e) => {
console.log(e)
setModal( { setModal( {
open: true, open: true,
yClickСordinates: e.clientY, yClickСordinates: e.clientY,
...@@ -90,6 +89,8 @@ function MonthCalendarBody({month, year, tasks, createTaskInCellHandler, current ...@@ -90,6 +89,8 @@ function MonthCalendarBody({month, year, tasks, createTaskInCellHandler, current
title={currentTask.title} title={currentTask.title}
description={currentTask.description} description={currentTask.description}
priority={currentTask.priority} priority={currentTask.priority}
startHour={currentTask.infoForCell?.startHour}
endHour={currentTask.infoForCell?.endHour}
onChangeCurrentTaskHandler={(e)=>{ onChangeCurrentTaskHandler(e)}} onChangeCurrentTaskHandler={(e)=>{ onChangeCurrentTaskHandler(e)}}
sendNewTaskHandler={()=>{sendNewTaskHandler(); handleClose()}} sendNewTaskHandler={()=>{sendNewTaskHandler(); handleClose()}}
deleteTaskHandler={()=>{deleteTaskHandler(currentTask.id); handleClose()}} deleteTaskHandler={()=>{deleteTaskHandler(currentTask.id); handleClose()}}
......
...@@ -27,7 +27,7 @@ function MonthCalendarHeader({ currentMonthString, decrementMonth, incrementMont ...@@ -27,7 +27,7 @@ function MonthCalendarHeader({ currentMonthString, decrementMonth, incrementMont
id={'worker'} id={'worker'}
items={workers} items={workers}
/> />
<div style={{marginLeft: '20px'}}>
<СustomSelect <СustomSelect
value={calendarType} value={calendarType}
onChange={(e)=>{onChangeCalendarTypeHandler(e)}} onChange={(e)=>{onChangeCalendarTypeHandler(e)}}
...@@ -35,6 +35,7 @@ function MonthCalendarHeader({ currentMonthString, decrementMonth, incrementMont ...@@ -35,6 +35,7 @@ function MonthCalendarHeader({ currentMonthString, decrementMonth, incrementMont
id={'calendar-type'} id={'calendar-type'}
items={types} items={types}
/> />
</div>
</Toolbar> </Toolbar>
</AppBar> </AppBar>
</Box> </Box>
......
...@@ -2,10 +2,10 @@ import { Button, TextField } from "@mui/material"; ...@@ -2,10 +2,10 @@ import { Button, TextField } from "@mui/material";
import { memo } from "react"; import { memo } from "react";
import CustomSelect from '../UI/СustomSelect/СustomSelect' import CustomSelect from '../UI/СustomSelect/СustomSelect'
const priorities = [{value: '', text: '--Приоритет--'}, {value: 'A', text: 'A'}, {value: 'B', text: 'B'}, {value: 'C', text: 'C'}] const priorities = [{value: null, text: '--Приоритет--'}, {value: 'A', text: 'A'}, {value: 'B', text: 'B'}, {value: 'C', text: 'C'}]
function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, description, priority, sendNewTaskHandler, deleteTaskHandler}) { function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, description, priority, sendNewTaskHandler, deleteTaskHandler, startHour, endHour}) {
return (<> return (<>
<TextField <TextField
id="task-description-title" id="task-description-title"
...@@ -27,9 +27,8 @@ function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, descripti ...@@ -27,9 +27,8 @@ function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, descripti
name='description' name='description'
onChange={(e)=>{onChangeCurrentTaskHandler(e)}} onChange={(e)=>{onChangeCurrentTaskHandler(e)}}
/> />
<CustomSelect <CustomSelect
defaultValue={''} defaultValue={null}
value={priority} value={priority}
name={'priority'} name={'priority'}
variant={'outlined'} variant={'outlined'}
...@@ -40,19 +39,19 @@ function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, descripti ...@@ -40,19 +39,19 @@ function MonthCalendarModalContent({title, onChangeCurrentTaskHandler, descripti
/> />
<div style={{display: 'flex', gap: '20px', margin: '20px 0'}}> <div style={{display: 'flex', gap: '20px', margin: '20px 0'}}>
<TextField <TextField
id="task-description-title" id="task-startHour"
value={title} value={startHour}
label="От" label="От"
variant="outlined" variant="outlined"
name='title' name='startHour'
onChange={(e)=>{onChangeCurrentTaskHandler(e)}} onChange={(e)=>{onChangeCurrentTaskHandler(e)}}
/> />
<TextField <TextField
id="task-description-title" id="task-endHour"
value={title} value={endHour}
label="До" label="До"
variant="outlined" variant="outlined"
name='title' name='endHour'
onChange={(e)=>{onChangeCurrentTaskHandler(e)}} onChange={(e)=>{onChangeCurrentTaskHandler(e)}}
/> />
</div> </div>
......
...@@ -38,7 +38,6 @@ export default function ModalTask({modal, handleClose, children}) { ...@@ -38,7 +38,6 @@ export default function ModalTask({modal, handleClose, children}) {
return modal.xClickСordinates + modal.xDiv - modal.xDivClick + 10 return modal.xClickСordinates + modal.xDiv - modal.xDivClick + 10
} else { } else {
return windowDimenion.winWidth - (windowDimenion.winWidth - modal.xClickСordinates) - modal.xDivClick - 270 - 80 return windowDimenion.winWidth - (windowDimenion.winWidth - modal.xClickСordinates) - modal.xDivClick - 270 - 80
// return modal.xClickСordinates - (windowDimenion.winWidth - (modal.yClickСordinates + 270)) + modal.xDiv + modal.xDivClick
} }
} }
const style = { const style = {
......
...@@ -5,7 +5,7 @@ function СustomSelect({value, onChange, label, variant='standard', items, id, ...@@ -5,7 +5,7 @@ function СustomSelect({value, onChange, label, variant='standard', items, id,
return ( return (
<> <>
<FormControl variant={variant} sx={{ m: 1, minWidth: 120 }}> <FormControl variant={variant} sx={{ m: 0, minWidth: 120 }}>
<InputLabel id={`${id}-select-label`}>{label}</InputLabel> <InputLabel id={`${id}-select-label`}>{label}</InputLabel>
<Select <Select
labelId={`${id}-select-label`} labelId={`${id}-select-label`}
......
...@@ -13,7 +13,7 @@ function MonthCalendar() { ...@@ -13,7 +13,7 @@ function MonthCalendar() {
const [dateNow, setDateNow] = useState({month: '', year: ''}) const [dateNow, setDateNow] = useState({month: '', year: ''})
const [worker, setWorker] = useState(''); const [worker, setWorker] = useState('');
const [calendarType, setCalendarType] = useState('Месяц'); const [calendarType, setCalendarType] = useState('Месяц');
const [currentTask, setCurrentTask] = useState({title: '', description: '', priority: ''}) const [currentTask, setCurrentTask] = useState({title: '', description: '', priority: null, infoForCell: {startHour: null, endHour: null}})
const [copyTask, setCopyTask] = useState(null) const [copyTask, setCopyTask] = useState(null)
const [cellSizes, setCellSizes] = useState({}) const [cellSizes, setCellSizes] = useState({})
...@@ -65,7 +65,7 @@ function MonthCalendar() { ...@@ -65,7 +65,7 @@ function MonthCalendar() {
return {...prevState, month: prevState.month + 1} return {...prevState, month: prevState.month + 1}
}) })
}, []) }, [])
console.log(currentTask)
const decrementMonth = useCallback(() => { const decrementMonth = useCallback(() => {
setDateNow((prevState)=>{ setDateNow((prevState)=>{
if (prevState.month - 1 === -1) { if (prevState.month - 1 === -1) {
...@@ -77,12 +77,24 @@ function MonthCalendar() { ...@@ -77,12 +77,24 @@ function MonthCalendar() {
const onChangeCurrentTaskHandler = useCallback((e) => { const onChangeCurrentTaskHandler = useCallback((e) => {
const {name, value} = e.target; const {name, value} = e.target;
setCurrentTask((prevState) => { if (name === 'startHour' || name === 'endHour') {
setCurrentTask((prevState) => {
return {
...prevState,
infoForCell: {
...prevState.infoForCell,
[name]: parseInt(value)
}
}
});
} else {
setCurrentTask((prevState) => {
return { return {
...prevState, ...prevState,
[name]: value [name]: value
} }
}); });
}
}, []); }, []);
const createTaskInCellHandler = (dayNumber, dayHour) => { const createTaskInCellHandler = (dayNumber, dayHour) => {
...@@ -94,9 +106,9 @@ function MonthCalendar() { ...@@ -94,9 +106,9 @@ function MonthCalendar() {
} }
let hourDue let hourDue
if (hourFormat) { if (hourFormat) {
hourDue = hour + 0
} else {
hourDue = hour + 1 hourDue = hour + 1
} else {
hourDue = hour + 2
} }
const newTask = { const newTask = {
title:"Задача", title:"Задача",
...@@ -104,6 +116,11 @@ function MonthCalendar() { ...@@ -104,6 +116,11 @@ function MonthCalendar() {
priority: null, priority: null,
dateTimeStart: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hour, 0)), dateTimeStart: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hour, 0)),
dateTimeDue: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hourDue, 59)), dateTimeDue: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hourDue, 59)),
infoForCell: {
startHour: hour,
endHour: hourDue,
startDay: dayNumber
}
} }
setCurrentTask((newTask)) setCurrentTask((newTask))
} }
...@@ -191,22 +208,21 @@ function MonthCalendar() { ...@@ -191,22 +208,21 @@ function MonthCalendar() {
} }
const sendNewTaskHandler = async () => { const sendNewTaskHandler = async () => {
const timeEndHour = currentTask.infoForCell.endHour
const timeStartHour = currentTask.infoForCell.startHour
const day = currentTask.infoForCell.startDay
const due = dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, day, timeEndHour - 1, 59))
const start = dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, day, timeStartHour, 0))
const newTask = {
...currentTask,
dateTimeStart: start,
dateTimeDue: due
}
delete newTask.infoForCell
if (currentTask.id) { if (currentTask.id) {
delete currentTask.infoForCell await dispatch(editCalendarTask(newTask))
setCurrentTask(() => {
return{
...currentTask,
}}
)
await dispatch(editCalendarTask(currentTask))
} else { } else {
setCurrentTask(() => { await dispatch(addCalendarTask(newTask))
return{
...currentTask,
}}
)
delete currentTask.infoForCell
await dispatch(addCalendarTask(currentTask))
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment