Dashboard
@include('projects.team-members-bar')
Sprint Overview
@foreach($dashboardSprints as $dSprint)
@php
$dsTaskCount = $dSprint->tasks_count;
$dsDoneCount = $dSprint->tasks->where('task_status', 'approved')->count();
$dsProgress = $dsTaskCount > 0 ? round(($dsDoneCount / $dsTaskCount) * 100) : 0;
$dsStatusColor = match($dSprint->status) {
'active' => 'bg-green-100 text-green-800 border-green-200',
'completed' => 'bg-blue-100 text-blue-800 border-blue-200',
default => 'bg-yellow-100 text-yellow-800 border-yellow-200',
};
@endphp
View sprint
@endforeach
@else
{{ $dSprint->name }}
{{ ucfirst($dSprint->status) }}
{{ $dsTaskCount }} {{ Str::plural('task', $dsTaskCount) }}
{{ $dSprint->start_date->format('M d') }} – {{ $dSprint->end_date->format('M d, Y') }}
{{ $dsDoneCount }} / {{ $dsTaskCount }} done
{{ $dsProgress }}%
No sprints yet
Create a sprint to track work in time-boxed iterations.
Projects
@foreach($projects as $project)
@endforeach
@else
@endif
{{ $project->name }}
{{ $project->status }}{{ $project->description }}
Progress
{{ $project->completed_tasks ?? 0 }}/{{ $project->tasks_count ?? 0 }}
{{ $project->progress_percentage ?? 0 }}% complete
Filter by Project:
@foreach($projects as $project)
@endforeach
@if($tasksByStatus[$status]->count() > 0)
@php
// Sort by project name (A-Z), then group by project
$tasksGroupedByProject = $tasksByStatus[$status]
->sortBy(fn($i) => strtolower($i['project']->name ?? ''))
->groupBy(fn($i) => $i['project']->id);
$priorityColors = [
'urgent' => 'bg-red-100 text-red-800',
'high' => 'bg-orange-100 text-orange-800',
'medium' => 'bg-yellow-100 text-yellow-800',
'low' => 'bg-green-100 text-green-800',
];
$statusColors = [
'pending' => 'bg-gray-500 text-white',
'in_progress' => 'bg-blue-600 text-white',
'review' => 'bg-yellow-500 text-white',
'unapproved' => 'bg-red-600 text-white',
'approved' => 'bg-green-600 text-white',
];
@endphp
@foreach($tasksGroupedByProject as $projectId => $projectTasks)
@php
$projectName = $projectTasks->first()['project']->name ?? 'Project';
// Sort tasks within each project (A-Z by task title)
$projectTasks = $projectTasks->sortBy(fn($i) => strtolower($i['task']->title ?? ''));
@endphp
@endforeach
@else
@endforeach
{{ $projectName }}
{{ $projectTasks->count() }} {{ $projectTasks->count() === 1 ? 'task' : 'tasks' }}
@foreach($projectTasks as $item)
@php
$lastComment = $item['task']->comments->sortByDesc('created_at')->first();
@endphp
@if($lastComment)
@endif
@endforeach
Task:
{{ $item['task']->title }}
Task List:
{{ $item['taskList']->name }}
@php
$p = $item['task']->priority ?? 'medium';
$priorityClass = $priorityColors[$p] ?? $priorityColors['medium'];
$statusClass = $statusColors[$status] ?? 'bg-gray-100 text-gray-800';
$statusLabel = $status === 'review'
? 'Review'
: ucfirst(str_replace('_', ' ', $item['task']->task_status ?? $status));
@endphp
{{ ucfirst($p) }}
Last Comment:
{{ $lastComment->user->name ?? 'Unknown' }}
{{ $lastComment->created_at->format('m/d/Y, h:i A') }}
{{ $lastComment->content }}
@if($status === 'pending')
Created By: {{ $item['task']->creator->name ?? 'Unknown' }}
Created: {{ $item['task']->created_at->format('m/d/Y, h:i A') }}
@else
Updated By: {{ $item['task']->creator->name ?? 'Unknown' }}
Updated: {{ $item['task']->updated_at->format('m/d/Y, h:i A') }}
@endif
@if($status === 'review' || $status === 'approved' || $status === 'unapproved')
@php
$projectSettings = $item['project']->settings ?? [];
$requireApproval = $projectSettings['requireApproval'] ?? false;
$canApprove = !$requireApproval || (auth()->id() === $item['project']->project_manager_id);
@endphp
@if($status === 'review')
@if($canApprove)
@endif
@elseif($status === 'approved')
@elseif($status === 'unapproved')
@if($canApprove)
@endif
@endif
@endif
View Task
No tasks in this status
@endif