From 908f39bc5f25c0ba002a78f77a9a18812c4a1997 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 26 Sep 2025 08:57:08 +0200 Subject: [PATCH] feat: add project and type counters to Jira and TFS filters - Implemented `jiraProjectCounts` and `jiraTypeCounts` in `JiraFilters` to display task counts per project and type, enhancing user visibility. - Added similar functionality with `tfsProjectCounts` in `TfsFilters`, allowing users to see task distribution across TFS projects. - Updated UI to show these counts next to project and type labels for better context. --- src/components/kanban/filters/JiraFilters.tsx | 26 +++++++++++++++++-- src/components/kanban/filters/TfsFilters.tsx | 13 +++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/components/kanban/filters/JiraFilters.tsx b/src/components/kanban/filters/JiraFilters.tsx index 5a64742..2721a59 100644 --- a/src/components/kanban/filters/JiraFilters.tsx +++ b/src/components/kanban/filters/JiraFilters.tsx @@ -37,6 +37,28 @@ export function JiraFilters({ filters, onFiltersChange }: JiraFiltersProps) { return Array.from(types).sort(); }, [filteredTasks]); + // Calculer les compteurs pour les projets Jira + const jiraProjectCounts = useMemo(() => { + const counts: Record = {}; + availableJiraProjects.forEach(project => { + counts[project] = filteredTasks.filter(task => + task.source === 'jira' && task.jiraProject === project + ).length; + }); + return counts; + }, [filteredTasks, availableJiraProjects]); + + // Calculer les compteurs pour les types Jira + const jiraTypeCounts = useMemo(() => { + const counts: Record = {}; + availableJiraTypes.forEach(type => { + counts[type] = filteredTasks.filter(task => + task.source === 'jira' && task.jiraType === type + ).length; + }); + return counts; + }, [filteredTasks, availableJiraTypes]); + const handleJiraToggle = (mode: 'show' | 'hide' | 'all') => { const updates: Partial = {}; @@ -142,7 +164,7 @@ export function JiraFilters({ filters, onFiltersChange }: JiraFiltersProps) { : 'border-[var(--border)] bg-[var(--card)] text-[var(--muted-foreground)] hover:border-[var(--border)]' }`} > - 📋 {project} + 📋 {project} ({jiraProjectCounts[project]}) ))} @@ -172,7 +194,7 @@ export function JiraFilters({ filters, onFiltersChange }: JiraFiltersProps) { {type === 'Bug' && '🐛 '} {type === 'Support' && '🛠️ '} {type === 'Enabler' && '🔧 '} - {type} + {type} ({jiraTypeCounts[type]}) ))} diff --git a/src/components/kanban/filters/TfsFilters.tsx b/src/components/kanban/filters/TfsFilters.tsx index ce43c5e..358e616 100644 --- a/src/components/kanban/filters/TfsFilters.tsx +++ b/src/components/kanban/filters/TfsFilters.tsx @@ -27,6 +27,17 @@ export function TfsFilters({ filters, onFiltersChange }: TfsFiltersProps) { return Array.from(projects).sort(); }, [filteredTasks]); + // Calculer les compteurs pour les projets TFS + const tfsProjectCounts = useMemo(() => { + const counts: Record = {}; + availableTfsProjects.forEach(project => { + counts[project] = filteredTasks.filter(task => + task.source === 'tfs' && task.tfsProject === project + ).length; + }); + return counts; + }, [filteredTasks, availableTfsProjects]); + const handleTfsToggle = (mode: 'show' | 'hide' | 'all') => { const updates: Partial = {}; @@ -118,7 +129,7 @@ export function TfsFilters({ filters, onFiltersChange }: TfsFiltersProps) { : 'border-[var(--border)] bg-[var(--card)] text-[var(--muted-foreground)] hover:border-[var(--border)]' }`} > - 📦 {project} + 📦 {project} ({tfsProjectCounts[project]}) ))}