From bc51c498e2df54ee84bef5b84436cd996545d909 Mon Sep 17 00:00:00 2001 From: Yutsuo Date: Mon, 27 Jan 2020 13:04:02 -0300 Subject: [PATCH] update --- src/App.js | 2 +- src/components/create-todo.hooks.component.js | 115 ++++++++++++++++++ src/components/edit-todo.hooks.component.js | 56 +++++++++ src/components/todos-list.hooks.component.js | 52 ++++++++ 4 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 src/components/create-todo.hooks.component.js create mode 100644 src/components/edit-todo.hooks.component.js create mode 100644 src/components/todos-list.hooks.component.js diff --git a/src/App.js b/src/App.js index 14ae015..cbb83e4 100644 --- a/src/App.js +++ b/src/App.js @@ -9,7 +9,7 @@ import TodosList from "./components/todos-list.component"; import logo from "./logo.jpg"; -function App() { +const App = () => { return (
diff --git a/src/components/create-todo.hooks.component.js b/src/components/create-todo.hooks.component.js new file mode 100644 index 0000000..1a78d21 --- /dev/null +++ b/src/components/create-todo.hooks.component.js @@ -0,0 +1,115 @@ +import React, { useState } from 'react' +import axios from 'axios' + +const CreateTodo = () => { + const [todoState, setTodoState] = useState({ + todo_description: '', + todo_responsible: '', + todo_priority: '', + todo_completed: false + }) + + const onChangeTodoDescription = event => { + setTodoState({ ...todoState, todo_description: event.target.value }) + } + + const onChangeTodoResponsible = event => { + setTodoState({ ...todoState, todo_responsible: event.target.value }) + } + + const onChangeTodoPriority = event => { + setTodoState({ ...todoState, todo_priority: event.target.value }) + } + + const onSubmit = event => { + event.preventDefault(); + + console.log(`Form submitted:`) + console.log(`Todo Description: ${todoState.todo_description}`) + console.log(`Todo Responsible: ${todoState.todo_responsible}`) + console.log(`Todo Priority: ${todoState.todo_priority}`) + + const newTodo = { + todo_description: todoState.todo_description, + todo_responsible: todoState.todo_responsible, + todo_priority: todoState.todo_priority, + todo_completed: todoState.todo_completed + } + + axios.post('http://localhost:4000/todos/add', newTodo) + .then(res => console.log(res.data)) + + setTodoState({ + todo_description: '', + todo_responsible: '', + todo_priority: '', + todo_completed: false + }) + } + + return ( +
+

Create New Todo

+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ ) +} + +export default CreateTodo \ No newline at end of file diff --git a/src/components/edit-todo.hooks.component.js b/src/components/edit-todo.hooks.component.js new file mode 100644 index 0000000..9690be1 --- /dev/null +++ b/src/components/edit-todo.hooks.component.js @@ -0,0 +1,56 @@ +import React, {useState, useEffect} from 'react' +import axios from 'axios' + +const EditTodo = props => { + const [todoState, setTodoState] = useState({ + todo_description: '', + todo_responsible: '', + todo_priority: '', + todo_completed: false + }) + + useEffect = () =>{ + axios.get(`http://localhost:4000/todos/${props.match.params.id}`) + .then ( response => { + setTodoState({ + todo_description: response.data.todo_description, + todo_responsible: response.data.todo_responsible, + todo_priority: response.data.todo_priority, + todo_completed: response.data.todo_completed + } ) + console.log("props.match.params", props.match.params) + } ) + .catch( (error) => { console.log(error) } ) + } + + const onChangeTodoDescription = event => { + this.setState({ ...todoState, todo_description: event.target.value }); + } + + const onChangeTodoResponsible = event => { + this.setState({ ...todoState, todo_responsible: event.target.value }); + } + + const onChangeTodoPriority = event => { + this.setState({ ...todoState, todo_priority: event.target.value }); + } + + const onChangeTodoCompleted = () => { + this.setState({ ...todoState, todo_completed: !todoState.todo_completed }); + } + + const onSubmit = (event) => { + event.preventDefault(); + const obj = { + todo_description: this.state.todo_description, + todo_responsible: this.state.todo_responsible, + todo_priority: this.state.todo_priority, + todo_completed: this.state.todo_completed + }; + console.log(obj); + axios.post('http://localhost:4000/todos/update/'+this.props.match.params.id, obj) + .then(res => console.log(res.data)); + + this.props.history.push('/'); + } +} \ No newline at end of file diff --git a/src/components/todos-list.hooks.component.js b/src/components/todos-list.hooks.component.js new file mode 100644 index 0000000..8d79ccb --- /dev/null +++ b/src/components/todos-list.hooks.component.js @@ -0,0 +1,52 @@ +import React, { useState, useEffect } from "react" +import { Link } from "react-router-dom" +import axios from "axios" + +const Todo = props => ( + + {props.todo.todo_description} + {props.todo.todo_responsible} + {props.todo.todo_priority} + + Edit + + +) + +const TodosList = () => { + const [todosState, setTodosState] = useState( [] ) + + // Similar to componentDidMount and componentDidUpdate: + useEffect = () => { + axios.get('http://localhost:4000/todos/') + .then(response => { setTodosState( response.data ) }) + .catch(error => { console.log(error) }) + } + + const todoList = () => { + return todosState.map((currentTodo, index) => { + return + }) + } + + return ( +
+

Todos List

+ + + + + + + + + + + {todoList()} + +
DescriptionResponsiblePriorityAction
+
+ ) +} + +export default TodosList \ No newline at end of file