5 changed files with 151 additions and 23 deletions
@ -1,10 +1,148 @@ |
|||||||
import React from 'react' |
import React from 'react' |
||||||
|
import axios from 'axios' |
||||||
|
|
||||||
export default class EditTodo extends React.Component { |
export default class EditTodo extends React.Component { |
||||||
|
|
||||||
|
constructor(props) { |
||||||
|
super(props) |
||||||
|
|
||||||
|
this.onChangeTodoDescription = this.onChangeTodoDescription.bind(this); |
||||||
|
this.onChangeTodoResponsible = this.onChangeTodoResponsible.bind(this); |
||||||
|
this.onChangeTodoPriority = this.onChangeTodoPriority.bind(this); |
||||||
|
this.onChangeTodoCompleted = this.onChangeTodoCompleted.bind(this); |
||||||
|
this.onSubmit = this.onSubmit.bind(this); |
||||||
|
|
||||||
|
this.state = { |
||||||
|
todo_description: '', |
||||||
|
todo_responsible: '', |
||||||
|
todo_priority: '', |
||||||
|
todo_completed: false |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
componentDidMount() { |
||||||
|
axios.get(`http://localhost:4000/todos/${this.props.match.params.id}`) |
||||||
|
.then ( response => { |
||||||
|
this.setState({ |
||||||
|
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("this.props.match.params", this.props.match.params) |
||||||
|
} ) |
||||||
|
.catch( (error) => { console.log(error) } ) |
||||||
|
} |
||||||
|
|
||||||
|
onChangeTodoDescription(e) { |
||||||
|
this.setState({ todo_description: e.target.value }); |
||||||
|
} |
||||||
|
|
||||||
|
onChangeTodoResponsible(e) { |
||||||
|
this.setState({ todo_responsible: e.target.value }); |
||||||
|
} |
||||||
|
|
||||||
|
onChangeTodoPriority(e) { |
||||||
|
this.setState({ todo_priority: e.target.value }); |
||||||
|
} |
||||||
|
|
||||||
|
onChangeTodoCompleted(e) { |
||||||
|
this.setState({ todo_completed: !this.state.todo_completed }); |
||||||
|
} |
||||||
|
|
||||||
|
onSubmit(e) { |
||||||
|
e.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('/'); |
||||||
|
} |
||||||
|
|
||||||
render() { |
render() { |
||||||
return ( |
return ( |
||||||
<div> |
<div> |
||||||
<p>Welcome to Edit Todo Component!!</p> |
<h3 align="center" >Update Todo</h3> |
||||||
|
<form onSubmit={this.onSubmit} > |
||||||
|
<div className="form-group" > |
||||||
|
<label>Description: </label> |
||||||
|
<input
|
||||||
|
type="text" |
||||||
|
className="form-control" |
||||||
|
value={this.state.todo_description} |
||||||
|
onChange={this.onChangeTodoDescription} |
||||||
|
/> |
||||||
|
</div> |
||||||
|
<div className="form-group" > |
||||||
|
<label>Responsible: </label> |
||||||
|
<input
|
||||||
|
type="text" |
||||||
|
className="form-control" |
||||||
|
value={this.state.todo_responsible} |
||||||
|
onChange={this.onChangeTodoResponsible} |
||||||
|
/> |
||||||
|
</div> |
||||||
|
<div className="form-group"> |
||||||
|
<div className="form-check form-check-inline"> |
||||||
|
<input
|
||||||
|
className="form-check-input" |
||||||
|
type="radio" |
||||||
|
name="priorityOptions" |
||||||
|
value="Low" |
||||||
|
checked={this.state.todo_priority==='Low'}
|
||||||
|
onChange={this.onChangeTodoPriority} |
||||||
|
/> |
||||||
|
<label className="form-check-label">Low</label> |
||||||
|
</div> |
||||||
|
<div className="form-check form-check-inline"> |
||||||
|
<input className="form-check-input"
|
||||||
|
type="radio"
|
||||||
|
name="priorityOptions"
|
||||||
|
id="priorityMedium"
|
||||||
|
value="Medium"
|
||||||
|
checked={this.state.todo_priority==='Medium'}
|
||||||
|
onChange={this.onChangeTodoPriority} |
||||||
|
/> |
||||||
|
<label className="form-check-label">Medium</label> |
||||||
|
</div> |
||||||
|
<div className="form-check form-check-inline"> |
||||||
|
<input className="form-check-input"
|
||||||
|
type="radio"
|
||||||
|
name="priorityOptions"
|
||||||
|
id="priorityHigh"
|
||||||
|
value="High"
|
||||||
|
checked={this.state.todo_priority==='High'}
|
||||||
|
onChange={this.onChangeTodoPriority} |
||||||
|
/> |
||||||
|
<label className="form-check-label">High</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div className="form-check"> |
||||||
|
<input className="form-check-input" |
||||||
|
id="completedCheckbox" |
||||||
|
type="checkbox" |
||||||
|
name="completedCheckbox" |
||||||
|
onChange={this.onChangeTodoCompleted} |
||||||
|
checked={this.state.todo_completed} |
||||||
|
value={this.state.todo_completed} |
||||||
|
/> |
||||||
|
<label className="form-check-label" htmlFor="completedCheckbox"> |
||||||
|
Completed |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<br /> |
||||||
|
|
||||||
|
<div className="form-group"> |
||||||
|
<input type="submit" value="Update Todo" className="btn btn-primary" /> |
||||||
|
</div> |
||||||
|
</form> |
||||||
</div> |
</div> |
||||||
) |
) |
||||||
} |
} |
||||||
|
|||||||
Loading…
Reference in new issue