import React, { useState } from 'react'; import { ListGenerator } from '../../components/forms/listGenerator'; import { FormGenerator } from '../../components/forms/formGenerator'; const AITasksDashboard = () => { const [selectedTask, setSelectedTask] = useState(null); const [tasks, setTasks] = useState([ { id: 1, name: 'Task A', type: 'Training', status: 'In Progress', lastModified: '2024-03-20', progress: 45 }, { id: 2, name: 'Task B', type: 'Inference', status: 'Completed', lastModified: '2024-03-19', progress: 100 } ]); const [isFormVisible, setIsFormVisible] = useState(false); const [formMode, setFormMode] = useState('create'); const [message, setMessage] = useState({ type: '', text: '' }); const handleTaskSelect = (task) => { setSelectedTask(task); }; const handleTaskAction = (action, task) => { switch (action) { case 'delete': handleDeleteTask(task.id); break; case 'edit': handleEditTask(task); break; case 'cancel': handleCancelTask(task.id); break; case 'restart': handleRestartTask(task.id); break; default: console.log('Unknown action:', action); } }; const handleCreateTask = () => { setFormMode('create'); setIsFormVisible(true); setSelectedTask(null); }; const handleEditTask = (task) => { setFormMode('edit'); setIsFormVisible(true); setSelectedTask(task); }; const handleDeleteTask = (taskId) => { setTasks(tasks.filter(task => task.id !== taskId)); if (selectedTask?.id === taskId) { setSelectedTask(null); } setMessage({ type: 'success', text: 'Task has been deleted' }); }; const handleCancelTask = (taskId) => { setTasks(tasks.map(task => task.id === taskId ? { ...task, status: 'Cancelled', progress: 0 } : task )); setMessage({ type: 'success', text: 'Task has been cancelled' }); }; const handleRestartTask = (taskId) => { setTasks(tasks.map(task => task.id === taskId ? { ...task, status: 'In Progress', progress: 0 } : task )); setMessage({ type: 'success', text: 'Task has been restarted' }); }; const handleFormSubmit = (formData) => { if (formMode === 'create') { const newTask = { id: tasks.length + 1, ...formData, lastModified: new Date().toISOString().split('T')[0], status: 'In Progress', progress: 0 }; setTasks([...tasks, newTask]); setMessage({ type: 'success', text: 'Task has been created' }); } else { setTasks(tasks.map(task => task.id === selectedTask.id ? { ...task, ...formData, lastModified: new Date().toISOString().split('T')[0] } : task )); setMessage({ type: 'success', text: 'Task has been updated' }); } setIsFormVisible(false); }; const handleFormCancel = () => { setIsFormVisible(false); setSelectedTask(null); }; const getTaskActions = (task) => { const actions = []; if (task.status === 'In Progress') { actions.push({ label: 'Cancel', action: 'cancel', className: 'cancel-button' }); } else if (task.status === 'Completed' || task.status === 'Cancelled') { actions.push({ label: 'Restart', action: 'restart', className: 'restart-button' }); } actions.push( { label: 'Edit', action: 'edit', className: 'update-button' }, { label: 'Delete', action: 'delete', className: 'delete-button' } ); return actions; }; const formFields = [ { name: 'name', label: 'Task Name', type: 'text', required: true, value: selectedTask?.name || '' }, { name: 'type', label: 'Task Type', type: 'select', required: true, options: [ { value: 'Training', label: 'Training' }, { value: 'Inference', label: 'Inference' }, { value: 'Evaluation', label: 'Evaluation' } ], value: selectedTask?.type || 'Training' }, { name: 'status', label: 'Status', type: 'select', required: true, options: [ { value: 'In Progress', label: 'In Progress' }, { value: 'Completed', label: 'Completed' }, { value: 'Failed', label: 'Failed' }, { value: 'Cancelled', label: 'Cancelled' } ], value: selectedTask?.status || 'In Progress' } ]; return (

AI Tasks

{message.text && (
{message.text}
)} {isFormVisible && (
)} (
{task.name}
{task.type}
{task.status}
{task.progress}%
Last Modified: {task.lastModified}
)} renderDetails={(task) => (

Task Details

ID: {task.id}
Name: {task.name}
Type: {task.type}
Status: {task.status}
Progress: {task.progress}%
Last Modified: {task.lastModified}
)} />
); }; export default AITasksDashboard;