diff --git a/client/src/components/ProjectTemplate.tsx b/client/src/components/ProjectTemplate.tsx index 17b7403..fce5f18 100644 --- a/client/src/components/ProjectTemplate.tsx +++ b/client/src/components/ProjectTemplate.tsx @@ -229,23 +229,34 @@ export default function ProjectTemplate({ const handleConfirmRestart = () => { if (restartingProject && newEndDate) { - const restartedProject: Project = { + // Create a new project as a duplicate/copy of the closed project + const newProjectId = Date.now().toString(); + + const duplicatedProject: Project = { ...restartingProject, - status: 'planning', - startDate: new Date(), - endDate: newEndDate, - tasks: clearHistory ? [] : restartingProject.tasks.map(task => ({ ...task, status: 'todo' as const })) + id: newProjectId, // New unique ID + status: 'planning', // Start as planning + startDate: new Date(), // Set new start date + endDate: undefined, // Clear end date since it's active again + plannedEndDate: newEndDate, // Set the new planned end date + createdAt: new Date(), // Set new creation date + tasks: clearHistory + ? [] + : restartingProject.tasks.map(task => ({ + ...task, + id: `${newProjectId}-task-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, // Generate new task ID + status: 'todo' as const // Reset all tasks to todo status + })) }; - setProjects(projects.map(p => - p.id === restartingProject.id ? restartedProject : p - )); + // Add the new project to the projects array without removing the original + setProjects([...projects, duplicatedProject]); setIsRestartProjectOpen(false); setRestartingProject(null); setNewEndDate(undefined); setClearHistory(false); - console.log('Project restarted:', restartedProject.name, 'Clear history:', clearHistory); + console.log('Project duplicated:', duplicatedProject.name, 'with', duplicatedProject.tasks.length, 'tasks. Original project remains closed.'); } };