Enable duplicating closed projects with new planned end dates
Update project restarting logic to create a duplicate of a closed project, assign it a new ID, reset its status to 'planning', and set a new planned end date. The original project remains closed. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ceced2fc-aa46-458d-ba87-ddd4b7bb1518 Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/659922a9-0087-461c-90dd-6d9a58b81d4d/ceced2fc-aa46-458d-ba87-ddd4b7bb1518/P2PZNJ9
This commit is contained in:
@@ -229,23 +229,34 @@ export default function ProjectTemplate({
|
|||||||
|
|
||||||
const handleConfirmRestart = () => {
|
const handleConfirmRestart = () => {
|
||||||
if (restartingProject && newEndDate) {
|
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,
|
...restartingProject,
|
||||||
status: 'planning',
|
id: newProjectId, // New unique ID
|
||||||
startDate: new Date(),
|
status: 'planning', // Start as planning
|
||||||
endDate: newEndDate,
|
startDate: new Date(), // Set new start date
|
||||||
tasks: clearHistory ? [] : restartingProject.tasks.map(task => ({ ...task, status: 'todo' as const }))
|
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 =>
|
// Add the new project to the projects array without removing the original
|
||||||
p.id === restartingProject.id ? restartedProject : p
|
setProjects([...projects, duplicatedProject]);
|
||||||
));
|
|
||||||
|
|
||||||
setIsRestartProjectOpen(false);
|
setIsRestartProjectOpen(false);
|
||||||
setRestartingProject(null);
|
setRestartingProject(null);
|
||||||
setNewEndDate(undefined);
|
setNewEndDate(undefined);
|
||||||
setClearHistory(false);
|
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.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user