feat: MySQL integration, Docker setup, drag-and-drop kanban
This commit is contained in:
@@ -7,12 +7,13 @@ interface ListProps {
|
||||
tasks: Task[]; currentUser: User; onTaskClick: (t: Task) => void;
|
||||
filterUser: string | null; searchQuery: string;
|
||||
onToggleDone: (taskId: string) => void;
|
||||
users: User[];
|
||||
}
|
||||
|
||||
type SortKey = 'dueDate' | 'priority' | 'status' | 'assignee';
|
||||
const PRIO_ORDER = { critical: 0, high: 1, medium: 2, low: 3 };
|
||||
|
||||
export function ListView({ tasks, currentUser, onTaskClick, filterUser, searchQuery, onToggleDone }: ListProps) {
|
||||
export function ListView({ tasks, currentUser, onTaskClick, filterUser, searchQuery, onToggleDone, users }: ListProps) {
|
||||
const [sortBy, setSortBy] = useState<SortKey>('dueDate');
|
||||
const [sortDir, setSortDir] = useState<'asc' | 'desc'>('asc');
|
||||
const [menuOpen, setMenuOpen] = useState<string | null>(null);
|
||||
@@ -53,14 +54,14 @@ export function ListView({ tasks, currentUser, onTaskClick, filterUser, searchQu
|
||||
</thead>
|
||||
<tbody>
|
||||
{sorted.map(t => {
|
||||
const u = getUserById(t.assignee);
|
||||
const u = getUserById(users, t.assignee);
|
||||
const due = new Date(t.dueDate + 'T00:00:00');
|
||||
const overdue = due < new Date() && t.status !== 'done';
|
||||
return (
|
||||
<tr key={t.id}>
|
||||
<td><input type="checkbox" checked={t.status === 'done'} onChange={() => onToggleDone(t.id)} /></td>
|
||||
<td onClick={() => onTaskClick(t)} style={{ cursor: 'pointer' }}>{t.title}</td>
|
||||
<td><div style={{ display: 'flex', alignItems: 'center', gap: 6 }}><Avatar userId={t.assignee} size={20} />{u?.name}</div></td>
|
||||
<td><div style={{ display: 'flex', alignItems: 'center', gap: 6 }}><Avatar userId={t.assignee} size={20} users={users} />{u?.name}</div></td>
|
||||
<td><PriorityBadge level={t.priority} /></td>
|
||||
<td><StatusBadge status={t.status} /></td>
|
||||
<td style={{ color: overdue ? '#ef4444' : undefined }}>{due.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}</td>
|
||||
|
||||
Reference in New Issue
Block a user