$filters['status'] ?? '', 'priority' => $filters['priority'] ?? '', 'assignee_id' => $filters['assignee_id'] ?? '', 'search' => $filters['search'] ?? '', ]; $tableUrl = $baseUrl . '?view=table'; $kanbanUrl = $baseUrl . '?view=kanban'; $cardsUrl = $baseUrl . '?view=cards'; $deadlineRank = function (array $task): int { $deadline = taskDeadlineState($task['planned_at'] ?? null, $task['status'] ?? null); return match ($deadline['code'] ?? '') { 'red' => 1, 'yellow' => 2, 'green' => 3, default => 4, }; }; usort($tasks, function (array $a, array $b) use ($deadlineRank): int { $rankA = $deadlineRank($a); $rankB = $deadlineRank($b); if ($rankA !== $rankB) { return $rankA <=> $rankB; } return strtotime((string)($a['planned_at'] ?? '9999-12-31')) <=> strtotime((string)($b['planned_at'] ?? '9999-12-31')); }); if (!empty($columns)) { foreach ($columns as $statusCode => $column) { usort($columns[$statusCode]['tasks'], function (array $a, array $b) use ($deadlineRank): int { $rankA = $deadlineRank($a); $rankB = $deadlineRank($b); if ($rankA !== $rankB) { return $rankA <=> $rankB; } return strtotime((string)($a['planned_at'] ?? '9999-12-31')) <=> strtotime((string)($b['planned_at'] ?? '9999-12-31')); }); } } ?>
| ID | CRM ID | Постановщик | Ответственный | Наименование | Статус | Приоритет | Комментарии | Дата план |
|---|---|---|---|---|---|---|---|---|
| = (int)$task['id'] ?> | = htmlspecialchars((string)$task['crm_id']) ?> | = htmlspecialchars((string)($task['creator_name'] ?? '')) ?> | = htmlspecialchars((string)($task['assignee_name'] ?? '')) ?> | = htmlspecialchars((string)$task['name']) ?> | = htmlspecialchars(task_status_label((string)$task['status'])) ?> | = htmlspecialchars(task_priority_label((string)$task['priority'])) ?> | = $commentCount ?> |
= htmlspecialchars(date('d.m.Y H:i', strtotime((string)$task['planned_at']))) ?>
= htmlspecialchars($deadline['text']) ?>
|
| Нет задач | ||||||||
= htmlspecialchars((string)($task['crm_id'] ?: ('Заявка #' . $task['id']))) ?>
= htmlspecialchars((string)$task['name']) ?>