Commit adfe0432 authored by Ermolaev Timur's avatar Ermolaev Timur

Merge branch 'task-148-fix/fix_bugs_and_enhance' into 'development'

Task 148 fix/fix bugs and enhance

See merge request !115
parents eb22fe70 95a5903f
......@@ -27,7 +27,7 @@ router.get('/', async(req:Request, res:Response):Promise<Response> => {
/**create new task for table MyTask*/
router.post('/', auth, async(req:Request, res:Response):Promise<Response>=>{
const {user,title,description,project,executor,dateTimeStart,dateTimeDue, dateTimeDeadLine,priority} = req.body;
const {user,title,description,project,executor,dateTimeStart,dateTimeDue, dateTimeDeadLine,priority, calendar} = req.body;
console.log('dateTimeStart \n', dateTimeStart, "dateTimeDue\n", dateTimeDue, 'dateTimeDeadLine\n ', dateTimeDeadLine)
let dateTimeDueFinal = dateTimeDue
let dateTimeStartFinal = dateTimeStart
......@@ -96,7 +96,7 @@ router.post('/', auth, async(req:Request, res:Response):Promise<Response>=>{
}
newTask.priority = priority;
await newTask.save();
if (dateTimeDeadlineFinal) {
if (calendar) {
const newDateTimeTask = new DateTimeTask();
newDateTimeTask.dateTimeStart = dateTimeStartFinal
newDateTimeTask.dateTimeDue = dateTimeDueFinal
......
......@@ -40,8 +40,7 @@ const CalendarRowDay = ({ xs, hoursInDay, createTaskInCellHandler, currentTask,
>
{linesInDay?.map((line, i) => {
const tasks = getTasksWithInfoForPosition(line, hoursInDay, sortedTasks, i, rowDaySize.width)
return (<>
{tasks.map((task) => {
return (tasks.map((task) => {
const step = rowDaySize.width / hoursInDay.length
return (
<CalendarTask
......@@ -61,8 +60,8 @@ const CalendarRowDay = ({ xs, hoursInDay, createTaskInCellHandler, currentTask,
>
</CalendarTask>
)
})}
</>)
})
)
})}
{hoursInDay.map((hour, i) => {
......
......@@ -57,12 +57,12 @@ const CalendarTask = ({ setCurrentTask, handleOpen, task, setCopyTask, width, le
const dragStartHandler = useCallback((e, task) => {
setCurrentTask(task);
setCopyTask(task)
},[setCurrentTask])
},[setCurrentTask, setCopyTask])
const dragEndHandler = useCallback((e) => {
e.target.style.boxShadow = 'none'
setCopyTask(null)
},[])
},[setCopyTask])
const onClickCopyIconHandler = useCallback((e) => {
e.stopPropagation();
......
......@@ -34,7 +34,7 @@ function CalendarModalTaskContent({ title, onChangeCurrentTaskHandler, descripti
/>
<div style={{ display: 'flex', gap: '20px', margin: '20px 0' }}>
<CustomSelect
defaultValue={null}
defaultValue={priorities[0]?.value}
value={priority}
name={'priority'}
variant={'outlined'}
......
......@@ -22,7 +22,6 @@ const CalendarStandartCell = ({ children, xs, hours, dayNumber, createTaskInCell
}
},[copyTask, copyModeTask, year, month, dayNumber, hours])
// console.log(copyTask)
const cellClass = useMemo(() => {
const backgroundColor = isDeadLine ? '#fa9b9be3' : 'null'
return ({
......
import { useMemo } from "react";
import React, { useMemo } from "react";
import { getHoursInDayNumbers, getAvailableTasks, getLinesInDay, getSortedTasks } from "../../../../../helpers/CalendarHelpers";
import CalendarStandartCell from "../../../UI/CalendarStandartCell/CalendarStandartCell";
import { useEffect, useRef, useState } from "react";
......@@ -8,7 +8,7 @@ import { getTasksWithInfoForPosition, getWidthLeftZIndex } from "./Helpers";
function CalendarColumnDayWeek({ hoursInDay, tasks, month, year, day, hourFormat, handleOpen, setCurrentTask, copyTask, setCopyTask, createCopyTask, createTaskInCellHandler, modal, dragTaskHandler, copyMode, deleteTaskHandler }) {
function CalendarColumnDayWeek({ hoursInDay, tasks, month, year, day, hourFormat, handleOpen, setCurrentTask, copyTask, setCopyTask, createCopyTask, createTaskInCellHandler, modal, dragTaskHandler, copyMode, deleteTaskHandler}) {
const [columnDaySize, setColumnDaySize] = useState({ width: 0, height: 0 })
......@@ -39,8 +39,7 @@ function CalendarColumnDayWeek({ hoursInDay, tasks, month, year, day, hourFormat
<Grid item xs={12 / 7} ref={dayColumnRef} sx={{ position: 'relative' }}>
{linesInDay?.map((line, i) => {
const boxes = getTasksWithInfoForPosition(line, sortedTasks, linesInDay, columnDaySize.height, hours)
return (<>
{boxes.map((task) => {
return boxes.map((task) => {
const { width, left, zIndex } = getWidthLeftZIndex(task, columnDaySize.width, i)
const step = columnDaySize.height / hours.length
const tasksLength = task.tasksInHour
......@@ -64,11 +63,9 @@ function CalendarColumnDayWeek({ hoursInDay, tasks, month, year, day, hourFormat
hourFormat={hourFormat}
copyModeTask={copyMode.task}
deleteTaskHandler={deleteTaskHandler}
>
</CalendarWeekTask>
/>
)
})}
</>)
})
})}
{hoursInDay?.map((hour, i) => {
......
......@@ -4,13 +4,11 @@ import { memo } from 'react';
import ButtonSwapCalendar from '../../UI/ButtonSwapCalendar/ButtonSwapCalendar';
import CalendarUserDisplayName from '../../UI/CalendarUserDisplayName/CalendarUserDisplayName';
import WeekCalendarHeaderInfo from './WeekCalendarHeaderInfo/WeekCalendarHeaderInfo';
import WeekGoal from './WeekGoal/WeekGoal';
import WeekPriorities from './WeekPriorities/WeekPriorities';
function WeekCalendarHeader({ decrementWeek, incrementWeek, weekInfo, weekGoal, onChangeWeekGoalHandler, weekPriorities, onChangeWeekPrioritiesHandler, handleOpen, currentCalendarDisplayName, user, userId }) {
function WeekCalendarHeader({ decrementWeek, incrementWeek, weekInfo, onChangeWeekGoalHandler, handleOpen, currentCalendarDisplayName, user, userId }) {
return (
<>
......@@ -22,21 +20,11 @@ function WeekCalendarHeader({ decrementWeek, incrementWeek, weekInfo, weekGoal,
<CalendarUserDisplayName
currentCalendarDisplayName={currentCalendarDisplayName}
/>
<WeekGoal
weekGoal={weekGoal}
onChangeWeekGoalHandler={onChangeWeekGoalHandler}
/>
<WeekPriorities
weekPriorities={weekPriorities}
onChangeWeekPrioritiesHandler={onChangeWeekPrioritiesHandler}
/>
<WeekCalendarHeaderInfo
decrementWeek={decrementWeek}
incrementWeek={incrementWeek}
weekInfo={weekInfo}
weekGoal={weekGoal}
onChangeWeekGoalHandler={onChangeWeekGoalHandler}
/>
......
......@@ -9,7 +9,7 @@ import { memo, } from 'react';
function WeekCalendarHeaderInfo({ decrementWeek, incrementWeek, weekInfo}) {
return (
<>
<Box sx={{ width: '80%', marginBottom: '15px' }}>
<Box sx={{ width: '400px', marginBottom: '15px' }}>
<Box sx={{ display: 'flex', alignItems: 'center' }}>
<ArrowDecrementButton
......
import { Box } from '@mui/system';
import { TextField, Typography } from '@mui/material';
import { memo, useCallback, useState } from 'react';
function WeekGoal({ weekGoal, onChangeWeekGoalHandler }) {
const [goalEditCheck, setGoalEditCheck] = useState(false)
const onClickGoalHandler = useCallback(() => {
setGoalEditCheck(true)
}, [])
return (
<>
<Box sx={{ display: 'flex', alignItems: 'center', gap: '10px' }}>
{goalEditCheck ?
<>
<Typography variant='h5' sx={{ marginTop: '20px' }}>
Цель недели:
</Typography>
<TextField
id="week-gaol"
value={weekGoal}
variant="standard"
sx={{ input: { color: 'white', fontSize: '22px', fontWeight: '400', paddingTop: '25px' } }}
InputProps={{
disableUnderline: true,
}}
name='weekGoal'
autoFocus
onBlur={() => { setGoalEditCheck(false) }}
onChange={(e) => { onChangeWeekGoalHandler(e) }}
/>
</>
: <Typography variant='h5' onClick={() => { onClickGoalHandler() }} sx={{ marginTop: '20px' }}>Цель недели: {weekGoal}</Typography>
}
</Box>
</>
);
}
export default memo(WeekGoal);
\ No newline at end of file
import { Box } from '@mui/system';
import { Typography } from '@mui/material';
import { memo } from 'react';
import WeekPriority from './WeekPriority/WeekPriority';
function WeekPriorities({ weekPriorities, onChangeWeekPrioritiesHandler }) {
return (
<>
<Box>
<Typography variant='h5' sx={{ display: 'flex', flexDirection: 'column' }}>
Приоритеты:
{Object.values(weekPriorities).map((priority, i)=>{
return (
<WeekPriority
key={i}
onChangeWeekPrioritiesHandler={(e)=>{onChangeWeekPrioritiesHandler(e)}}
priorityName={Object.keys(weekPriorities)[i]}
priority={priority}
number={i+1}
/>
)
})}
</Typography>
</Box>
</>
);
}
export default memo(WeekPriorities);
\ No newline at end of file
import { Box } from '@mui/system';
import { TextField, Typography } from '@mui/material';
import { memo, useCallback, useState } from 'react';
function WeekPriority({ number, priority, onChangeWeekPrioritiesHandler, priorityName }) {
const [priorityEditCheck, setPriorityEditCheck] = useState(false)
const onClickPriorityHandler = useCallback(() => {
setPriorityEditCheck(true)
}, [])
return (
<>
<Box sx={{ display: 'flex', alignItems: 'center', gap: '10px' }}>
{priorityEditCheck ?
<>
<Typography variant='string'>
{number}.
</Typography>
<TextField
id={priorityName}
value={priority}
variant="standard"
sx={{ input: { color: 'white', fontSize: '22px', fontWeight: '400'} }}
InputProps={{
disableUnderline: true,
}}
name={priorityName}
autoFocus
onBlur={() => { setPriorityEditCheck(false) }}
onChange={(e) => { onChangeWeekPrioritiesHandler(e) }}
/>
</>
: <Typography variant='string' onClick={() => { onClickPriorityHandler() }}>{number}. {priority}</Typography>
}
</Box>
</>
);
}
export default memo(WeekPriority);
\ No newline at end of file
......@@ -36,7 +36,7 @@ const ProjectInfo = ({ project, handleOpen, currentRoleInProject,onClickTasksHan
<Typography variant="body1" sx={styleText}>
Задачи: <ArrowIncrementButton onClick={()=>{onClickTasksHandler()}}/>
</Typography>
{currentRoleInProject === 'admin' ?
{currentRoleInProject === 'Админ' ?
<Typography variant="body1" sx={styleText}>
Добавить участника: <PersonAddIcon style={{ cursor: 'pointer' }} onClick={() => { handleOpen() }} />
</Typography>
......
import { Grid } from "@mui/material";
import DeleteIcon from "@mui/icons-material/Delete";
import { deleteMember } from "../../../store/actions/projectsActions";
import { memo } from "react";
const ProjectMembersItem = ({ user }) => {
const style = {
width: '90%',
border: '1px solid black',
borderRadius: '5px',
padding: '15px 15px',
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center'
}
return <>
<Grid sx={style}>
{user?.displayName}
<DeleteIcon
/>
</Grid>
</>
};
export default memo(ProjectMembersItem);
......@@ -48,7 +48,7 @@ const ProjectMembersItem = ({ user, deleteMemberHandler, currentRoleInProject, d
>
{user?.displayName}
{currentRoleInProject === 'admin' && user.id !== userId ?
{currentRoleInProject === 'Админ' && user.id !== userId ?
<DeleteIcon
sx={{ cursor: 'pointer' }}
onClick={deleteMemberHandler}
......
import {Box, Grid, Typography } from "@mui/material";
import {Box, Typography } from "@mui/material";
import { useSelector } from "react-redux";
import { memo, useMemo } from "react";
import DeleteButton from "../../../../UI/DeleteButton/DeleteButton";
......@@ -23,7 +23,16 @@ const ProjectItem = ({ title, members, onClickProjectHandler, onClickGoToSpecifi
const { user } = useSelector(state => state.users);
const currentRoleInProject = useMemo(() => {
return members.find((member) => member.user.id === user.id)?.roleProject
switch (members.find((member) => member.user.id === user.id)?.roleProject) {
case 'admin':
return 'Админ'
case 'user':
return 'Юзер'
case 'watcher':
return 'Наблюдатель'
default:
return ''
}
}, [members, user.id])
return <>
......
import { Grid, Typography, Button, Card, CardContent } from "@mui/material";
import { Grid, Typography, Button } from "@mui/material";
import { memo } from "react";
import ProjectsList from "./ProjectsList/ProjectsList";
......
......@@ -15,7 +15,7 @@ export const anonymoysMenuButtons = [
]
export const priorities = [
{ value: null, text: '--Приоритет--' },
{ value: '', text: '--Приоритет--' },
{ value: 'A', text: 'A' },
{ value: 'B', text: 'B' },
{ value: 'C', text: 'C' }
......
import { Grid } from "@mui/material";
import { useNavigate, useParams } from "react-router-dom";
import { useSelector, useDispatch } from "react-redux";
import { useCallback, useEffect, useMemo, useState } from "react";
......@@ -39,7 +38,16 @@ const FullProject = ({ projectId }) => {
}, [project])
const currentRoleInProject = useMemo(() => {
return members.find((member) => member.user.id === user.id)?.roleProject
switch (members.find((member) => member.user.id === user.id)?.roleProject) {
case 'admin':
return 'Админ'
case 'user':
return 'Юзер'
case 'watcher':
return 'Наблюдатель'
default:
return ''
}
}, [members, user.id])
const onChangeRoleHandler = useCallback((e, value) => {
......
......@@ -20,7 +20,7 @@ function MonthCalendar() {
const [hourFormat, setHourFormat] = useState(false);
const [dateNow, setDateNow] = useState({ month: '', year: '' })
const [workerInfo, setWorkerInfo] = useState({ project: '', worker: '' });
const [currentTask, setCurrentTask] = useState({ title: '', description: '', priority: null, infoForCell: { startHour: null, endHour: null } })
const [currentTask, setCurrentTask] = useState({ title: '', description: '', priority: '', infoForCell: { startHour: null, endHour: null } })
const [copyTask, setCopyTask] = useState(null)
const [cellSizes, setCellSizes] = useState({})
const [userId, setUserId] = useState('')
......@@ -141,7 +141,7 @@ function MonthCalendar() {
const newTask = {
title: "Задача",
description: "описание",
priority: null,
priority: '',
dateTimeStart: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hour, 0)),
dateTimeDue: dateToISOLikeButLocal(new Date(dateNow.year, dateNow.month, dayNumber, hourDue, 59)),
infoForCell: {
......@@ -198,7 +198,7 @@ function MonthCalendar() {
dateTimeDue: due,
executor: userId,
author: user.id,
dateTimeDeadLine: due,
calendar: true,
}
delete newTask.infoForCell
delete newTask.id
......
......@@ -20,18 +20,16 @@ function WeekCalendar() {
const { calendarTasks, copyMode } = useSelector(state => state.tasks);
const { user, currentCalendarDisplayName } = useSelector(state => state.users);
const { allUserProjects } = useSelector(state => state.projects)
console.log(copyMode)
const [weekGoal, setWeekGoal] = useState('Наладить режим сна')
const [weekPriorities, setWeekPriorities] = useState({ priorityOne: 'Один', priorityTwo: 'Два', priorityThree: 'Три' })
const [workerInfo, setWorkerInfo] = useState({ project: '', worker: '' });
const [dateNow, setDateNow] = useState({ year: '', month: '', currentDay: '' })
const [currentTask, setCurrentTask] = useState({ title: '', description: '', priority: null, infoForCell: { startHour: null, endHour: null } })
const [currentTask, setCurrentTask] = useState({ title: '', description: '', priority: '', infoForCell: { startHour: null, endHour: null } })
const [hourFormat, setHourFormat] = useState(false);
const [copyTask, setCopyTask] = useState(null)
const [userCalendarId, setUserCalendarId] = useState(null)
const [modal, setModal] = useState(false)
const [userId, setUserId] = useState('')
console.log(copyTask)
useEffect(() => {
const year = new Date().getFullYear()
const month = new Date().getMonth()
......@@ -96,23 +94,6 @@ function WeekCalendar() {
setWorkerInfo((prevState) => { return { ...prevState, worker: value } });
}, []);
const onChangeWeekGoalHandler = useCallback((e) => {
setWeekGoal((prevState) => {
return e.target.value
})
}, [])
const onChangeWeekPrioritiesHandler = useCallback((e) => {
const { name, value } = e.target;
setWeekPriorities((prevState) => {
return {
...prevState,
[name]: value
}
})
}, [])
const onChangeCurrentTaskHandler = useCallback((e) => {
const { name, value } = e.target;
if (name === 'startHour' || name === 'endHour') {
......@@ -157,7 +138,7 @@ function WeekCalendar() {
const newTask = {
title: "Задача",
description: "описание",
priority: null,
priority: '',
dateTimeStart: dateToISOLikeButLocal(new Date(year, month, dayNumber, hour, 0)),
dateTimeDue: dateToISOLikeButLocal(new Date(year, month, dayNumber, hourDue, 59)),
infoForCell: {
......@@ -196,7 +177,7 @@ function WeekCalendar() {
dateTimeDue: due,
executor: userId,
author: user.id,
dateTimeDeadLine: due,
calendar: true,
}
delete newTask.infoForCell
delete newTask.id
......@@ -311,15 +292,12 @@ function WeekCalendar() {
incrementWeek={incrementWeek}
decrementWeek={decrementWeek}
weekInfo={weekInfo}
weekGoal={weekGoal}
onChangeWeekGoalHandler={onChangeWeekGoalHandler}
weekPriorities={weekPriorities}
onChangeWeekPrioritiesHandler={onChangeWeekPrioritiesHandler}
handleOpen={handleOpen}
currentCalendarDisplayName={currentCalendarDisplayName}
user={user}
userId={userId}
/>
<WeekCalendarBody
deleteTaskHandler={deleteTaskHandler}
sendNewTaskHandler={sendNewTaskHandler}
......
......@@ -64,7 +64,7 @@ export const deleteProject = (projectId) => {
return async (dispatch) => {
dispatch(deleteProjectRequest());
try {
const response = await axios.delete('/projects', { data: { projectId: projectId } });
await axios.delete('/projects', { data: { projectId: projectId } });
dispatch(deleteProjectSuccess())
dispatch(fetchProjects())
} catch (error) {
......
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