diff --git a/src/components/kanban/filters/JiraFilters.tsx b/src/components/kanban/filters/JiraFilters.tsx index 71a0e68..5a64742 100644 --- a/src/components/kanban/filters/JiraFilters.tsx +++ b/src/components/kanban/filters/JiraFilters.tsx @@ -11,31 +11,31 @@ interface JiraFiltersProps { } export function JiraFilters({ filters, onFiltersChange }: JiraFiltersProps) { - const { regularTasks } = useTasksContext(); + const { regularTasks, filteredTasks } = useTasksContext(); // Vérifier s'il y a des tâches Jira dans le système (même masquées) const hasJiraTasks = regularTasks.some(task => task.source === 'jira'); - // Récupérer les projets et types Jira disponibles dans TOUTES les tâches + // Récupérer les projets et types Jira disponibles dans les tâches filtrées const availableJiraProjects = useMemo(() => { const projects = new Set(); - regularTasks.forEach(task => { + filteredTasks.forEach(task => { if (task.source === 'jira' && task.jiraProject) { projects.add(task.jiraProject); } }); return Array.from(projects).sort(); - }, [regularTasks]); + }, [filteredTasks]); const availableJiraTypes = useMemo(() => { const types = new Set(); - regularTasks.forEach(task => { + filteredTasks.forEach(task => { if (task.source === 'jira' && task.jiraType) { types.add(task.jiraType); } }); return Array.from(types).sort(); - }, [regularTasks]); + }, [filteredTasks]); const handleJiraToggle = (mode: 'show' | 'hide' | 'all') => { const updates: Partial = {}; diff --git a/src/components/kanban/filters/PriorityFilters.tsx b/src/components/kanban/filters/PriorityFilters.tsx index 38d0524..f4bbd22 100644 --- a/src/components/kanban/filters/PriorityFilters.tsx +++ b/src/components/kanban/filters/PriorityFilters.tsx @@ -11,16 +11,16 @@ interface PriorityFiltersProps { } export function PriorityFilters({ selectedPriorities = [], onPriorityToggle }: PriorityFiltersProps) { - const { regularTasks } = useTasksContext(); + const { filteredTasks } = useTasksContext(); - // Calculer les compteurs pour les priorités + // Calculer les compteurs pour les priorités basés sur les tâches filtrées const priorityCounts = useMemo(() => { const counts: Record = {}; getAllPriorities().forEach(priority => { - counts[priority.key] = regularTasks.filter(task => task.priority === priority.key).length; + counts[priority.key] = filteredTasks.filter(task => task.priority === priority.key).length; }); return counts; - }, [regularTasks]); + }, [filteredTasks]); const priorityOptions = getAllPriorities().map(priorityConfig => ({ value: priorityConfig.key, @@ -29,13 +29,21 @@ export function PriorityFilters({ selectedPriorities = [], onPriorityToggle }: P count: priorityCounts[priorityConfig.key] || 0 })); + // Filtrer les priorités qui ont des tâches visibles + const visiblePriorities = priorityOptions.filter(priority => priority.count > 0); + return (
-
- {priorityOptions.filter(priority => priority.count > 0).map((priority) => ( + {visiblePriorities.length === 0 ? ( +
+ Aucune priorité disponible dans les tâches filtrées +
+ ) : ( +
+ {visiblePriorities.map((priority) => ( ))} -
+
+ )}
); } diff --git a/src/components/kanban/filters/TagFilters.tsx b/src/components/kanban/filters/TagFilters.tsx index d447ae5..52921df 100644 --- a/src/components/kanban/filters/TagFilters.tsx +++ b/src/components/kanban/filters/TagFilters.tsx @@ -9,16 +9,16 @@ interface TagFiltersProps { } export function TagFilters({ selectedTags = [], onTagToggle }: TagFiltersProps) { - const { tags: availableTags, regularTasks } = useTasksContext(); + const { tags: availableTags, filteredTasks } = useTasksContext(); - // Calculer les compteurs pour les tags + // Calculer les compteurs pour les tags basés sur les tâches filtrées const tagCounts = useMemo(() => { const counts: Record = {}; availableTags.forEach(tag => { - counts[tag.name] = regularTasks.filter(task => task.tags?.includes(tag.name)).length; + counts[tag.name] = filteredTasks.filter(task => task.tags?.includes(tag.name)).length; }); return counts; - }, [regularTasks, availableTags]); + }, [filteredTasks, availableTags]); // Trier les tags par nombre d'utilisation (décroissant) const sortedTags = useMemo(() => { @@ -29,6 +29,9 @@ export function TagFilters({ selectedTags = [], onTagToggle }: TagFiltersProps) }); }, [availableTags, tagCounts]); + // Filtrer les tags qui ont des tâches visibles + const visibleTags = sortedTags.filter(tag => (tagCounts[tag.name] || 0) > 0); + if (availableTags.length === 0) { return null; } @@ -38,8 +41,13 @@ export function TagFilters({ selectedTags = [], onTagToggle }: TagFiltersProps) -
- {sortedTags.filter(tag => (tagCounts[tag.name] || 0) > 0).map((tag) => ( + {visibleTags.length === 0 ? ( +
+ Aucun tag disponible dans les tâches filtrées +
+ ) : ( +
+ {visibleTags.map((tag) => ( ))} -
+
+ )} ); } diff --git a/src/components/kanban/filters/TfsFilters.tsx b/src/components/kanban/filters/TfsFilters.tsx index 6447604..ce43c5e 100644 --- a/src/components/kanban/filters/TfsFilters.tsx +++ b/src/components/kanban/filters/TfsFilters.tsx @@ -11,21 +11,21 @@ interface TfsFiltersProps { } export function TfsFilters({ filters, onFiltersChange }: TfsFiltersProps) { - const { regularTasks } = useTasksContext(); + const { regularTasks, filteredTasks } = useTasksContext(); // Vérifier s'il y a des tâches TFS dans le système (même masquées) const hasTfsTasks = regularTasks.some(task => task.source === 'tfs'); - // Récupérer les projets TFS disponibles dans TOUTES les tâches + // Récupérer les projets TFS disponibles dans les tâches filtrées const availableTfsProjects = useMemo(() => { const projects = new Set(); - regularTasks.forEach(task => { + filteredTasks.forEach(task => { if (task.source === 'tfs' && task.tfsProject) { projects.add(task.tfsProject); } }); return Array.from(projects).sort(); - }, [regularTasks]); + }, [filteredTasks]); const handleTfsToggle = (mode: 'show' | 'hide' | 'all') => { const updates: Partial = {};