feat: extend task management with new statuses and centralized configuration

- Added `cancelled` and `freeze` statuses to `TasksResponse`, `HomePageClientProps`, and `useTasks` for comprehensive task tracking.
- Updated task forms to dynamically load statuses using `getAllStatuses`, enhancing maintainability and reducing hardcoded values.
- Refactored Kanban components to utilize centralized status configuration, improving consistency across the application.
- Adjusted visibility toggle and swimlanes to reflect new status options, ensuring a seamless user experience.
This commit is contained in:
Julien Froidefond
2025-09-14 23:06:50 +02:00
parent 2df64262ab
commit e6d24f2693
14 changed files with 189 additions and 105 deletions

View File

@@ -6,6 +6,7 @@ import { useMemo, useState } from 'react';
import { useTasksContext } from '@/contexts/TasksContext';
import { useColumnVisibility } from '@/hooks/useColumnVisibility';
import { ColumnVisibilityToggle } from './ColumnVisibilityToggle';
import { getAllStatuses } from '@/lib/status-config';
import {
DndContext,
DragEndEvent,
@@ -101,12 +102,14 @@ export function SwimlanesBoard({
})
);
const statuses: { id: TaskStatus; title: string; color: string }[] = [
{ id: 'todo', title: 'À faire', color: 'gray' },
{ id: 'in_progress', title: 'En cours', color: 'blue' },
{ id: 'done', title: 'Terminé', color: 'green' },
{ id: 'cancelled', title: 'Annulé', color: 'red' }
];
// Configuration des statuts basée sur la config centralisée
const statuses = useMemo(() => {
return getAllStatuses().map(statusConfig => ({
id: statusConfig.key,
title: statusConfig.label,
color: statusConfig.color
}));
}, []);
// Handlers pour le drag & drop
const handleDragStart = (event: DragStartEvent) => {
@@ -195,7 +198,6 @@ export function SwimlanesBoard({
{/* Headers des colonnes avec boutons toggle */}
<div className="flex items-center justify-between px-6 pb-4">
<ColumnVisibilityToggle
statuses={statuses}
hiddenStatuses={hiddenStatuses}
onToggleStatus={toggleStatusVisibility}
/>