From 35723d3f9138c222de477ed99b33d357132e2e68 Mon Sep 17 00:00:00 2001 From: ksbin1025 Date: Fri, 5 Nov 2021 18:20:17 +0900 Subject: [PATCH] =?UTF-8?q?Todo=20=EC=99=84=EC=84=B1=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/components/Buttons/AddBtn.js | 5 +- .../components/Buttons/buttons.module.scss | 1 + client/src/components/Form/SubjectForm.js | 6 +- client/src/components/Modal/TodoModal.js | 48 +++++++-- client/src/components/Modal/TodoPostModal.js | 26 +++-- .../{Card => StudyPlan}/StudyPlanCard.js | 2 +- .../{ => StudyPlan}/StudyPlanList.js | 10 +- client/src/components/TodoList.js | 73 +++++++++++-- client/src/pages/StudyPlanListPage.js | 2 +- client/src/pages/ToDoPage.js | 4 +- server/controllers/todo.controller.js | 100 +++++++++++++++++- server/db/index.js | 1 + server/routes/index.js | 4 +- server/routes/todo.route.js | 15 +++ 14 files changed, 244 insertions(+), 53 deletions(-) rename client/src/components/{Card => StudyPlan}/StudyPlanCard.js (92%) rename client/src/components/{ => StudyPlan}/StudyPlanList.js (80%) create mode 100644 server/routes/todo.route.js diff --git a/client/src/components/Buttons/AddBtn.js b/client/src/components/Buttons/AddBtn.js index 5ba8bdd..05a4178 100644 --- a/client/src/components/Buttons/AddBtn.js +++ b/client/src/components/Buttons/AddBtn.js @@ -1,11 +1,14 @@ +import { useParams } from "react-router-dom"; import TodoModal from "../Modal/TodoModal"; import styles from "./buttons.module.scss"; const AddBtn = () => { + const { date } = useParams() + return ( <> - + ) } diff --git a/client/src/components/Buttons/buttons.module.scss b/client/src/components/Buttons/buttons.module.scss index f3c8bc0..85e65f5 100644 --- a/client/src/components/Buttons/buttons.module.scss +++ b/client/src/components/Buttons/buttons.module.scss @@ -16,6 +16,7 @@ .icon { color: crimson; font-size: 2.7em; + cursor: pointer; } .backBtn { diff --git a/client/src/components/Form/SubjectForm.js b/client/src/components/Form/SubjectForm.js index 28b9a0c..7c010da 100644 --- a/client/src/components/Form/SubjectForm.js +++ b/client/src/components/Form/SubjectForm.js @@ -9,14 +9,14 @@ import styles from "./form.module.scss"; const SubjectForm = () => { const { user } = useAuth(); const { subjectId } = useParams(); - const [success, setSuccess] = useState(false) + const [success, setSuccess] = useState(false); const [error, setError] = useState(""); - const [disabled, setDisabled] = useState(true) + const [disabled, setDisabled] = useState(true); const [subject, setSubject] = useState({ lectureName: "", prof: "", classRoom: "" - }) + }); useEffect(() => { if (subjectId) getInfo(subjectId); diff --git a/client/src/components/Modal/TodoModal.js b/client/src/components/Modal/TodoModal.js index 2e2ad1f..a0e8abe 100644 --- a/client/src/components/Modal/TodoModal.js +++ b/client/src/components/Modal/TodoModal.js @@ -1,27 +1,53 @@ -import { useState } from "react"; +import { useState, useEffect, useRef } from "react"; +import todoApi from "../../apis/todo.api"; +import { useAuth } from "../../utils/context"; +import catchErrors from "../../utils/catchErrors"; import moment from "moment"; import styles from "./modal.module.scss"; -const TodoModal = () => { +const TodoModal = ({ curDate, selectTodo = "" }) => { + const { user } = useAuth() const [todo, setTodo] = useState({ todoTitle: "", - todoDate: moment().format("YYYY-MM-DD") + todoDate: moment(curDate).format("YYYY-MM-DD") }) + const [error, setError] = useState(""); + + useEffect(() => { + setTodo({ ...todo, todoDate: curDate }) + }, [curDate]) + + useEffect(() => { + if (selectTodo) { + console.log("selectTodo 값 변경으로 실행") + setTodo({ ...todo, ...selectTodo }) + } + }, [selectTodo]) const handleChange = (e) => { const { name, value } = e.target setTodo({ ...todo, [name]: value }) } - const handleClick = () => { - setTodo({ - todoTitle: "", - todoDate: moment().format("YYYY-MM-DD") - }) + async function handleSubmit() { + try { + setError("") + if (selectTodo) { + await todoApi.edit(todo, user.id) + alert("해당 할일이 성공적으로 수정되었습니다.") + } else { + await todoApi.submit(todo, user.id) + alert("해당 할일이 성공적으로 등록되었습니다.") + } + window.location.reload() + } catch (error) { + catchErrors(error, setError) + } } return (