JS/TP02/EX02/js/model.js

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)
}
}