import React from "react"; import { Draggable } from "react-beautiful-dnd"; import formatDate from 'dateformat'; import { paramCase } from 'param-case'; import VSCodeApi from "./VSCodeApi"; const TaskItem = ({ task, position, dateFormat, vscode }: { task: KanbnTask, position: number, dateFormat: string, vscode: VSCodeApi }) => { const createdDate = 'created' in task.metadata ? formatDate(task.metadata.created, dateFormat) : null; const updatedDate = 'updated' in task.metadata ? formatDate(task.metadata.updated, dateFormat) : null; const startedDate = 'started' in task.metadata ? formatDate(task.metadata.started, dateFormat) : null; const dueDate = 'due' in task.metadata ? formatDate(task.metadata.due, dateFormat) : null; const completedDate = 'completed' in task.metadata ? formatDate(task.metadata.completed, dateFormat) : null; // Check if a task's due date is in the past const checkOverdue = (task: KanbnTask) => { if ('due' in task.metadata && task.metadata.due !== undefined) { return Date.parse(task.metadata.due) < (new Date()).getTime(); } return false; }; return ( {(provided, snapshot) => { return (
i).join(' ')} style={{ userSelect: "none", ...provided.draggableProps.style }} >
{ 'tags' in task.metadata && task.metadata.tags!.length > 0 &&
{task.metadata.tags!.map(tag => { return ( {tag} ); })}
}
{ 'assigned' in task.metadata && !!task.metadata.assigned &&
{task.metadata.assigned}
} { (createdDate || updatedDate) &&
i).join('\n')}> i).join(' ')} >{updatedDate || createdDate}
} { task.comments.length > 0 &&
{task.comments.length}
} { task.subTasks.length > 0 &&
{task.subTasks.filter(subTask => subTask.completed).length} / {task.subTasks.length}
} { task.workload !== undefined &&
{task.workload}
} { task.workload !== undefined && task.progress !== undefined &&
}
); }}
); } export default TaskItem;