72 lines
1.4 KiB
JavaScript
72 lines
1.4 KiB
JavaScript
|
const todos = [
|
||
|
{
|
||
|
id : 1,
|
||
|
text : "apprendre le javascript",
|
||
|
done : false
|
||
|
|
||
|
},
|
||
|
{
|
||
|
id : 2,
|
||
|
text : "Faire des maths",
|
||
|
done : false
|
||
|
|
||
|
}]
|
||
|
|
||
|
export default class Model {
|
||
|
constructor() {
|
||
|
//this.todos = JSON.parse(localStorage.getItem('todos')) || []
|
||
|
this.todos = JSON.parse(localStorage.getItem('todos')) || todos
|
||
|
}
|
||
|
|
||
|
_commit(todos) {
|
||
|
localStorage.setItem('todos', JSON.stringify(todos))
|
||
|
}
|
||
|
|
||
|
getTodos(filter){
|
||
|
if (filter == "active")
|
||
|
return this.todos.filter(todo => !todo.done)
|
||
|
if (filter == "done")
|
||
|
return this.todos.filter(todo => todo.done)
|
||
|
|
||
|
return this.todos
|
||
|
}
|
||
|
|
||
|
add(todoText) {
|
||
|
const todo = {
|
||
|
id: this.todos.length > 0 ? this.todos[this.todos.length - 1].id + 1 : 1,
|
||
|
text: todoText,
|
||
|
done : false,
|
||
|
}
|
||
|
|
||
|
this.todos.push(todo)
|
||
|
this._commit(this.todos)
|
||
|
return todo
|
||
|
}
|
||
|
|
||
|
edit(id, updatedText) {
|
||
|
let todo = this.todos.find(t => t.id === id)
|
||
|
todo.text = updatedText
|
||
|
// this.todos = this.todos.map(todo =>
|
||
|
// todo.id === id ? { id: todo.id, text: updatedText, done: todo.done} : todo
|
||
|
// )
|
||
|
|
||
|
this._commit(this.todos)
|
||
|
}
|
||
|
|
||
|
delete(id) {
|
||
|
this.todos = this.todos.filter(todo => todo.id !== id)
|
||
|
|
||
|
this._commit(this.todos)
|
||
|
}
|
||
|
|
||
|
toggle(id) {
|
||
|
let todo = this.todos.find(t => t.id === id)
|
||
|
todo.done = !todo.done
|
||
|
//this.todos = this.todos.map(todo =>
|
||
|
// todo.id === id ? { id: todo.id, text: todo.text, done: !todo.done } : todo
|
||
|
//)
|
||
|
this._commit(this.todos)
|
||
|
}
|
||
|
}
|
||
|
|