|
|
@ -1,8 +1,16 @@ |
|
|
|
const ToDo = (props) => ( |
|
|
|
const ToDo = props => ( |
|
|
|
<tr> |
|
|
|
<td><label>{props.id}</label></td> |
|
|
|
<td><input/></td> |
|
|
|
<td><label>{props.createdAt.toTimeString()}</label></td> |
|
|
|
<td> |
|
|
|
<label>{props.id}</label> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<input /> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
<label> |
|
|
|
{props.createdAt.toTimeString()} |
|
|
|
</label> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
); |
|
|
|
|
|
|
@ -14,86 +22,114 @@ class ToDoList extends React.Component { |
|
|
|
this.state = { |
|
|
|
todoCounter: todoCounter, |
|
|
|
list: [ |
|
|
|
{ id: todoCounter, createdAt: date }, |
|
|
|
] |
|
|
|
} |
|
|
|
{ |
|
|
|
id: todoCounter, |
|
|
|
createdAt: date, |
|
|
|
}, |
|
|
|
], |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
sortByEarliest() { |
|
|
|
const sortedList = this.state.list.sort((a, b) => { |
|
|
|
return a.createdAt - b.createdAt; |
|
|
|
}); |
|
|
|
const sortedList = this.state.list.sort( |
|
|
|
(a, b) => { |
|
|
|
return ( |
|
|
|
a.createdAt - b.createdAt |
|
|
|
); |
|
|
|
} |
|
|
|
); |
|
|
|
this.setState({ |
|
|
|
list: [...sortedList] |
|
|
|
}) |
|
|
|
list: [...sortedList], |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
sortByLatest() { |
|
|
|
const sortedList = this.state.list.sort((a, b) => { |
|
|
|
return b.createdAt - a.createdAt; |
|
|
|
}); |
|
|
|
const sortedList = this.state.list.sort( |
|
|
|
(a, b) => { |
|
|
|
return ( |
|
|
|
b.createdAt - a.createdAt |
|
|
|
); |
|
|
|
} |
|
|
|
); |
|
|
|
this.setState({ |
|
|
|
list: [...sortedList] |
|
|
|
}) |
|
|
|
list: [...sortedList], |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
addToEnd() { |
|
|
|
const date = new Date(); |
|
|
|
const nextId = this.state.todoCounter + 1; |
|
|
|
const nextId = |
|
|
|
this.state.todoCounter + 1; |
|
|
|
const newList = [ |
|
|
|
...this.state.list, |
|
|
|
{ id: nextId, createdAt: date } |
|
|
|
{id: nextId, createdAt: date}, |
|
|
|
]; |
|
|
|
this.setState({ |
|
|
|
list: newList, |
|
|
|
todoCounter: nextId |
|
|
|
todoCounter: nextId, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
addToStart() { |
|
|
|
const date = new Date(); |
|
|
|
const nextId = this.state.todoCounter + 1; |
|
|
|
const nextId = |
|
|
|
this.state.todoCounter + 1; |
|
|
|
const newList = [ |
|
|
|
{id: nextId, createdAt: date}, |
|
|
|
...this.state.list |
|
|
|
...this.state.list, |
|
|
|
]; |
|
|
|
this.setState({ |
|
|
|
list: newList, |
|
|
|
todoCounter: nextId |
|
|
|
todoCounter: nextId, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
render() { |
|
|
|
return ( |
|
|
|
<div> |
|
|
|
<code>key=index</code><br/> |
|
|
|
<button onClick={this.addToStart.bind(this)}> |
|
|
|
<code>key=index</code> |
|
|
|
<br /> |
|
|
|
<button |
|
|
|
onClick={this.addToStart.bind( |
|
|
|
this |
|
|
|
)}> |
|
|
|
Add New to Start |
|
|
|
</button> |
|
|
|
<button onClick={this.addToEnd.bind(this)}> |
|
|
|
<button |
|
|
|
onClick={this.addToEnd.bind( |
|
|
|
this |
|
|
|
)}> |
|
|
|
Add New to End |
|
|
|
</button> |
|
|
|
<button onClick={this.sortByEarliest.bind(this)}> |
|
|
|
<button |
|
|
|
onClick={this.sortByEarliest.bind( |
|
|
|
this |
|
|
|
)}> |
|
|
|
Sort by Earliest |
|
|
|
</button> |
|
|
|
<button onClick={this.sortByLatest.bind(this)}> |
|
|
|
<button |
|
|
|
onClick={this.sortByLatest.bind( |
|
|
|
this |
|
|
|
)}> |
|
|
|
Sort by Latest |
|
|
|
</button> |
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<th>ID</th><th></th><th>created at</th> |
|
|
|
<th>ID</th> |
|
|
|
<th /> |
|
|
|
<th>created at</th> |
|
|
|
</tr> |
|
|
|
{ |
|
|
|
this.state.list.map((todo, index) => ( |
|
|
|
{this.state.list.map( |
|
|
|
(todo, index) => ( |
|
|
|
<ToDo |
|
|
|
key={index} |
|
|
|
{...todo} |
|
|
|
/> |
|
|
|
)) |
|
|
|
} |
|
|
|
) |
|
|
|
)} |
|
|
|
</table> |
|
|
|
</div> |
|
|
|
) |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|