feat(KanbanFilters): add filter for hiding completed tasks older than 7 days
- Enhanced KanbanFilters component to include a new filter option for hiding tasks completed more than 15 days ago. - Updated GeneralFilters component to display the new filter and its count. - Modified TasksContext to calculate and provide the count of old completed tasks. - Adjusted KanbanFiltersProps and related types to accommodate the new filter functionality.
This commit is contained in:
@@ -34,6 +34,7 @@ interface TasksContextType {
|
||||
filteredTasks: Task[];
|
||||
pinnedTasks: Task[]; // Tâches avec tags épinglés (objectifs)
|
||||
activeFiltersCount: number; // Nombre de filtres actifs
|
||||
oldCompletedTasksCount: number; // Nombre de tâches terminées depuis +15j
|
||||
// Tags
|
||||
tags: Tag[];
|
||||
tagsLoading: boolean;
|
||||
@@ -64,6 +65,11 @@ export function TasksProvider({
|
||||
const { preferences, updateKanbanFilters, updateViewPreferences } =
|
||||
useUserPreferences();
|
||||
|
||||
// Fonction utilitaire pour identifier les statuts terminés
|
||||
const isCompletedStatus = (status: TaskStatus): boolean => {
|
||||
return ['done', 'cancelled', 'archived'].includes(status);
|
||||
};
|
||||
|
||||
// Construire l'objet KanbanFilters à partir des préférences
|
||||
const kanbanFilters: KanbanFilters = useMemo(
|
||||
() => ({
|
||||
@@ -79,6 +85,8 @@ export function TasksProvider({
|
||||
showWithDueDate: preferences.kanbanFilters.showWithDueDate || false,
|
||||
showCompletedLast7Days:
|
||||
preferences.kanbanFilters.showCompletedLast7Days || false,
|
||||
hideCompletedOlderThan15Days:
|
||||
preferences.kanbanFilters.hideCompletedOlderThan15Days || false,
|
||||
// Filtres Jira
|
||||
showJiraOnly: preferences.kanbanFilters.showJiraOnly || false,
|
||||
hideJiraTasks: preferences.kanbanFilters.hideJiraTasks || false,
|
||||
@@ -106,6 +114,7 @@ export function TasksProvider({
|
||||
sortBy: newFilters.sortBy,
|
||||
showWithDueDate: newFilters.showWithDueDate,
|
||||
showCompletedLast7Days: newFilters.showCompletedLast7Days,
|
||||
hideCompletedOlderThan15Days: newFilters.hideCompletedOlderThan15Days,
|
||||
// Filtres Jira
|
||||
showJiraOnly: newFilters.showJiraOnly,
|
||||
hideJiraTasks: newFilters.hideJiraTasks,
|
||||
@@ -277,12 +286,25 @@ export function TasksProvider({
|
||||
|
||||
filtered = filtered.filter(
|
||||
(task) =>
|
||||
task.status === 'done' &&
|
||||
isCompletedStatus(task.status) &&
|
||||
task.completedAt &&
|
||||
task.completedAt >= sevenDaysAgo
|
||||
);
|
||||
}
|
||||
|
||||
// Filtre pour masquer les tâches terminées depuis plus de 7 jours
|
||||
if (kanbanFilters.hideCompletedOlderThan15Days) {
|
||||
const sevenDaysAgo = new Date();
|
||||
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
||||
|
||||
filtered = filtered.filter(
|
||||
(task) =>
|
||||
!isCompletedStatus(task.status) ||
|
||||
!task.completedAt ||
|
||||
task.completedAt >= sevenDaysAgo
|
||||
);
|
||||
}
|
||||
|
||||
// Tri des tâches
|
||||
if (kanbanFilters.sortBy) {
|
||||
const sortOption = getSortOption(kanbanFilters.sortBy);
|
||||
@@ -302,6 +324,33 @@ export function TasksProvider({
|
||||
return filtered;
|
||||
}, [regularTasks, kanbanFilters]);
|
||||
|
||||
// Calculer le nombre de tickets terminés depuis plus de 7 jours
|
||||
const oldCompletedTasksCount = useMemo(() => {
|
||||
if (!regularTasks || regularTasks.length === 0) return 0;
|
||||
|
||||
const sevenDaysAgo = new Date();
|
||||
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
|
||||
|
||||
const oldTasks = regularTasks.filter(
|
||||
(task) =>
|
||||
isCompletedStatus(task.status) &&
|
||||
task.completedAt &&
|
||||
task.completedAt < sevenDaysAgo
|
||||
);
|
||||
|
||||
console.log('Debug old completed tasks:', {
|
||||
sevenDaysAgo: sevenDaysAgo.toISOString(),
|
||||
oldTasks: oldTasks.map((t) => ({
|
||||
title: t.title,
|
||||
status: t.status,
|
||||
completedAt: t.completedAt,
|
||||
isOld: t.completedAt ? t.completedAt < sevenDaysAgo : false,
|
||||
})),
|
||||
});
|
||||
|
||||
return oldTasks.length;
|
||||
}, [regularTasks]);
|
||||
|
||||
const contextValue: TasksContextType = {
|
||||
...tasksState,
|
||||
regularTasks,
|
||||
@@ -313,6 +362,7 @@ export function TasksProvider({
|
||||
filteredTasks,
|
||||
pinnedTasks,
|
||||
activeFiltersCount,
|
||||
oldCompletedTasksCount,
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user