import React from "react"; import { TaskDefinition, TaskMetadata, } from "../services/WorkflowTemplateService"; import AddTaskButton from "./AddTaskButton"; import { SelectableList } from "../../../../components/common/SelectableList"; import { sortTasksTopologically } from "./workflowGraphUtils"; import { useCapabilityDefaults, validateTask } from "./useCapabilityDefaults"; import ValidationErrorIcon from "../../../../components/validationErrorIcon"; interface TaskListProps { tasks: TaskDefinition[]; validTasksList: Record; tasksMetadata: TaskMetadata[]; onChange: (tasks: TaskDefinition[]) => void; selectedTask: TaskDefinition | null; onSelectTask: (task: TaskDefinition | null) => void; onValidate: (taskId: string, isValid: boolean) => void; } const TaskList: React.FC = ({ tasks, validTasksList, tasksMetadata, onChange, selectedTask, onSelectTask, onValidate, }) => { const runDefaults = useCapabilityDefaults(tasksMetadata); const handleAddTask = (selectedType: TaskMetadata) => { const newTask: TaskDefinition = { type: selectedType.taskType, config: { guid: crypto.randomUUID(), }, }; //Assign the default values for the task here. selectedType.capabilities.forEach((capability) => { runDefaults(capability, newTask, tasks); }); const updatedTasks = [...tasks, newTask]; const errors = validateTask(newTask, updatedTasks, tasksMetadata); onValidate(newTask.config.guid as string, Object.keys(errors).length === 0); onChange(updatedTasks); onSelectTask(newTask); }; const sortedTasks = sortTasksTopologically(tasks); return (
{ if (x) { return ( <> {x.config.name as string} { } ); } else return <>; }} onSelect={(item) => onSelectTask(item)} />
); }; export default TaskList;