diff --git a/src/components/kanban/KanbanFilters.tsx b/src/components/kanban/KanbanFilters.tsx
index 007dfef..e16cc89 100644
--- a/src/components/kanban/KanbanFilters.tsx
+++ b/src/components/kanban/KanbanFilters.tsx
@@ -24,6 +24,7 @@ export interface KanbanFilters {
swimlanesMode?: 'tags' | 'priority'; // Mode des swimlanes
pinnedTag?: string; // Tag pour les objectifs principaux
sortBy?: string; // Clé de l'option de tri sélectionnée
+ showWithDueDate?: boolean; // Afficher seulement les tâches avec une date de fin
// Filtres spécifiques Jira
showJiraOnly?: boolean; // Afficher seulement les tâches Jira
hideJiraTasks?: boolean; // Masquer toutes les tâches Jira
@@ -189,6 +190,13 @@ export function KanbanFilters({ filters, onFiltersChange, hiddenStatuses: propsH
onFiltersChange({});
};
+ const handleDueDateFilterToggle = () => {
+ onFiltersChange({
+ ...filters,
+ showWithDueDate: !filters.showWithDueDate
+ });
+ };
+
// Calculer les compteurs pour les priorités
const priorityCounts = useMemo(() => {
@@ -388,6 +396,34 @@ export function KanbanFilters({ filters, onFiltersChange, hiddenStatuses: propsH
)}
+ {/* Filtres généraux */}
+
{filters.tags?.filter(Boolean).join(', ')}
)}
+ {filters.showWithDueDate && (
+
+ Affichage: Avec date de fin
+
+ )}
{filters.showJiraOnly && (
Affichage: Jira seulement
diff --git a/src/contexts/TasksContext.tsx b/src/contexts/TasksContext.tsx
index a8cbcc9..f7eec76 100644
--- a/src/contexts/TasksContext.tsx
+++ b/src/contexts/TasksContext.tsx
@@ -60,6 +60,7 @@ export function TasksProvider({ children, initialTasks, initialTags, initialStat
compactView: preferences.viewPreferences.compactView || false,
swimlanesByTags: preferences.viewPreferences.swimlanesByTags || false,
swimlanesMode: preferences.viewPreferences.swimlanesMode || 'tags',
+ showWithDueDate: preferences.kanbanFilters.showWithDueDate || false,
// Filtres Jira
showJiraOnly: preferences.kanbanFilters.showJiraOnly || false,
hideJiraTasks: preferences.kanbanFilters.hideJiraTasks || false,
@@ -80,6 +81,7 @@ export function TasksProvider({ children, initialTasks, initialTags, initialStat
priorities: newFilters.priorities,
showCompleted: newFilters.showCompleted,
sortBy: newFilters.sortBy,
+ showWithDueDate: newFilters.showWithDueDate,
// Filtres Jira
showJiraOnly: newFilters.showJiraOnly,
hideJiraTasks: newFilters.hideJiraTasks,
@@ -138,6 +140,7 @@ export function TasksProvider({ children, initialTasks, initialTags, initialStat
return (kanbanFilters.tags?.filter(Boolean).length || 0) +
(kanbanFilters.priorities?.filter(Boolean).length || 0) +
(kanbanFilters.search ? 1 : 0) +
+ (kanbanFilters.showWithDueDate ? 1 : 0) +
(kanbanFilters.jiraProjects?.filter(Boolean).length || 0) +
(kanbanFilters.jiraTypes?.filter(Boolean).length || 0) +
(kanbanFilters.showJiraOnly ? 1 : 0) +
@@ -212,6 +215,11 @@ export function TasksProvider({ children, initialTasks, initialTags, initialStat
);
}
+ // Filtre par date de fin
+ if (kanbanFilters.showWithDueDate) {
+ filtered = filtered.filter(task => task.dueDate != null);
+ }
+
// Tri des tâches
if (kanbanFilters.sortBy) {
const sortOption = getSortOption(kanbanFilters.sortBy);
diff --git a/src/lib/types.ts b/src/lib/types.ts
index 5376b8e..0036174 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -71,6 +71,7 @@ export interface KanbanFilters {
priorities?: TaskPriority[];
showCompleted?: boolean;
sortBy?: string;
+ showWithDueDate?: boolean;
// Filtres spécifiques Jira
showJiraOnly?: boolean;
hideJiraTasks?: boolean;
diff --git a/src/services/core/user-preferences.ts b/src/services/core/user-preferences.ts
index 15753aa..ee65e99 100644
--- a/src/services/core/user-preferences.ts
+++ b/src/services/core/user-preferences.ts
@@ -17,7 +17,8 @@ const DEFAULT_PREFERENCES: UserPreferences = {
tags: [],
priorities: [],
showCompleted: true,
- sortBy: ''
+ sortBy: '',
+ showWithDueDate: false
},
viewPreferences: {
compactView: false,