fixed filtering logic

view should not change when single todos are modified
main
Giulio Alessandrini 2021-08-01 23:04:31 +02:00
parent 960ff4ee24
commit 9ded69a288
1 changed files with 13 additions and 4 deletions

View File

@ -1,6 +1,8 @@
<script> <script>
import {todos} from "$lib/stores/todos.js"; import {todos} from "$lib/stores/todos.js";
let todo_text = ""; let todo_text = "";
let todo_type = "all";
let filteredTodo = [];
let addTodo = () => { let addTodo = () => {
if (todo_text.length > 0) { if (todo_text.length > 0) {
const todo = { const todo = {
@ -8,17 +10,21 @@
date: Date.now, date: Date.now,
done: false done: false
} }
if (todo_type == "done") todo_type = "all";
$todos = [todo, ...$todos]; $todos = [todo, ...$todos];
} }
} }
let clearTodo = (todo) => { let clearTodo = (todo) => {
if(todo.done) if(todo.done) {
$todos = $todos.filter(x => x != todo) $todos = $todos.filter(x => x != todo)
else }
else {
todo.done = true; todo.done = true;
$todos = $todos; $todos = $todos
}
} }
let filterTodo = (type) => { let filterTodo = (type) => {
todo_type = type;
switch (type) { switch (type) {
case 'active': case 'active':
filteredTodo = $todos.filter(todo => !todo.done); filteredTodo = $todos.filter(todo => !todo.done);
@ -31,7 +37,10 @@
break; break;
} }
} }
$: filteredTodo = $todos $: {
filteredTodo = $todos;
filterTodo(todo_type)
}
</script> </script>
<div class = "panel"> <div class = "panel">