Compteur taĉhe à faire

This commit is contained in:
2024-08-26 11:56:05 +02:00
parent cf4c589626
commit 2869e25834
2 changed files with 14 additions and 4 deletions

View File

@ -10,6 +10,8 @@ Ce projet est une application simple de liste de tâches (Todo List) développé
- **Tri des tâches** : Les tâches sont automatiquement triées pour afficher les tâches non complètes en premier. - **Tri des tâches** : Les tâches sont automatiquement triées pour afficher les tâches non complètes en premier.
- **Supprimer une tâche** : Vous pouvez supprimer une tâche en cliquant sur le bouton "Supprimer" associé à chaque tâche. - **Supprimer une tâche** : Vous pouvez supprimer une tâche en cliquant sur le bouton "Supprimer" associé à chaque tâche.
- **Sauvegarde persistante** : Les tâches sont sauvegardées dans le Local Storage du navigateur pour être conservées même après le rafraîchissement de la page. - **Sauvegarde persistante** : Les tâches sont sauvegardées dans le Local Storage du navigateur pour être conservées même après le rafraîchissement de la page.
- **Comptage des tâches restantes** : Le nombre de tâches restantes à accomplir est calculé et affiché dynamiquement.
## Recommended IDE Setup ## Recommended IDE Setup

View File

@ -13,7 +13,7 @@
<div v-else> <div v-else>
<ul> <ul>
<li v-for="todo in sortedTodos()" :key="todo.date" :class="{completed: todo.completed}"> <li v-for="todo in sortedTodos" :key="todo.date" :class="{completed: todo.completed}">
<label> <label>
<input type="checkbox" v-model="todo.completed"> <input type="checkbox" v-model="todo.completed">
{{ todo.title }} {{ todo.title }}
@ -22,6 +22,11 @@
</label> </label>
</li> </li>
</ul> </ul>
<p v-if="remainingTodos > 0">
{{ remainingTodos }} tâche{{ remainingTodos > 1 ? 's' : '' }} à faire
</p>
<div> <div>
<label > <label >
@ -36,7 +41,7 @@
<script setup> <script setup>
import { ref, onMounted } from 'vue'; import { ref, onMounted, computed } from 'vue';
@ -56,13 +61,13 @@ const addTodo = () => {
newTodo.value = ''; newTodo.value = '';
}; };
const sortedTodos = () => { const sortedTodos = computed(() => {
const sortedTodo = todos.value.toSorted((a, b) => a.completed > b.completed ? 1 : -1); const sortedTodo = todos.value.toSorted((a, b) => a.completed > b.completed ? 1 : -1);
if (hideCompleted.value === true){ if (hideCompleted.value === true){
return sortedTodo.filter(t => t.completed === false) return sortedTodo.filter(t => t.completed === false)
} }
return sortedTodo return sortedTodo
}; });
const deleteTodo = (id) => { const deleteTodo = (id) => {
const index = todos.value.findIndex(todo => todo.id === id); const index = todos.value.findIndex(todo => todo.id === id);
@ -83,6 +88,9 @@ onMounted(() => {
} }
}); });
const remainingTodos = computed(() =>{
return todos.value.filter(t => t.completed === false).length
})