fix: add active filters count to context and components
- Integrated activeFiltersCount into useTasksContext for HomePageContent and KanbanFilters. - Removed redundant activeFiltersCount calculation from KanbanFilters, leveraging the context instead for better performance and consistency.
This commit is contained in:
@@ -19,7 +19,7 @@ interface HomePageClientProps {
|
||||
|
||||
|
||||
function HomePageContent() {
|
||||
const { stats, syncing, createTask } = useTasksContext();
|
||||
const { stats, syncing, createTask, activeFiltersCount } = useTasksContext();
|
||||
const { preferences, updateViewPreferences } = useUserPreferences();
|
||||
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
|
||||
|
||||
@@ -78,7 +78,7 @@ function HomePageContent() {
|
||||
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 100 4m0-4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 100 4m0-4v2m0-6V4" />
|
||||
</svg>
|
||||
Filtres
|
||||
Filtres{activeFiltersCount > 0 && ` (${activeFiltersCount})`}
|
||||
</button>
|
||||
|
||||
<button
|
||||
|
||||
@@ -36,7 +36,7 @@ interface KanbanFiltersProps {
|
||||
}
|
||||
|
||||
export function KanbanFilters({ filters, onFiltersChange, hiddenStatuses: propsHiddenStatuses, onToggleStatusVisibility }: KanbanFiltersProps) {
|
||||
const { tags: availableTags, regularTasks } = useTasksContext();
|
||||
const { tags: availableTags, regularTasks, activeFiltersCount } = useTasksContext();
|
||||
const { preferences, toggleColumnVisibility } = useUserPreferences();
|
||||
|
||||
// Utiliser les props si disponibles, sinon utiliser le context
|
||||
@@ -214,15 +214,6 @@ export function KanbanFilters({ filters, onFiltersChange, hiddenStatuses: propsH
|
||||
// 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');
|
||||
|
||||
const activeFiltersCount =
|
||||
(filters.tags?.filter(Boolean).length || 0) +
|
||||
(filters.priorities?.filter(Boolean).length || 0) +
|
||||
(filters.search ? 1 : 0) +
|
||||
(filters.jiraProjects?.filter(Boolean).length || 0) +
|
||||
(filters.jiraTypes?.filter(Boolean).length || 0) +
|
||||
(filters.showJiraOnly ? 1 : 0) +
|
||||
(filters.hideJiraTasks ? 1 : 0);
|
||||
|
||||
// Calculer les compteurs pour les priorités
|
||||
const priorityCounts = useMemo(() => {
|
||||
const counts: Record<string, number> = {};
|
||||
|
||||
@@ -27,6 +27,7 @@ interface TasksContextType {
|
||||
setKanbanFilters: (filters: KanbanFilters) => void;
|
||||
filteredTasks: Task[];
|
||||
pinnedTasks: Task[]; // Tâches avec tags épinglés (objectifs)
|
||||
activeFiltersCount: number; // Nombre de filtres actifs
|
||||
// Tags
|
||||
tags: Tag[];
|
||||
tagsLoading: boolean;
|
||||
@@ -126,6 +127,17 @@ export function TasksProvider({ children, initialTasks, initialStats, initialTag
|
||||
return { pinnedTasks: sortedPinned, regularTasks: regular };
|
||||
}, [tasksState.tasks, tags, kanbanFilters.sortBy]);
|
||||
|
||||
// Calcul du nombre de filtres actifs
|
||||
const activeFiltersCount = useMemo(() => {
|
||||
return (kanbanFilters.tags?.filter(Boolean).length || 0) +
|
||||
(kanbanFilters.priorities?.filter(Boolean).length || 0) +
|
||||
(kanbanFilters.search ? 1 : 0) +
|
||||
(kanbanFilters.jiraProjects?.filter(Boolean).length || 0) +
|
||||
(kanbanFilters.jiraTypes?.filter(Boolean).length || 0) +
|
||||
(kanbanFilters.showJiraOnly ? 1 : 0) +
|
||||
(kanbanFilters.hideJiraTasks ? 1 : 0);
|
||||
}, [kanbanFilters]);
|
||||
|
||||
// Filtrage et tri des tâches régulières (pas les épinglées)
|
||||
const filteredTasks = useMemo(() => {
|
||||
let filtered = regularTasks;
|
||||
@@ -203,7 +215,8 @@ export function TasksProvider({ children, initialTasks, initialStats, initialTag
|
||||
kanbanFilters,
|
||||
setKanbanFilters,
|
||||
filteredTasks,
|
||||
pinnedTasks
|
||||
pinnedTasks,
|
||||
activeFiltersCount
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user