@extends('layouts.main') @section('title', 'Dashboard Andalan') @section('css') @php $dashboardCssPath = public_path('assets/css/dashboard.css'); $dashboardCssVersion = file_exists($dashboardCssPath) ? filemtime($dashboardCssPath) : time(); $attendanceCssPath = public_path('assets/css/attendance.css'); $attendanceCssVersion = file_exists($attendanceCssPath) ? filemtime($attendanceCssPath) : time(); @endphp @endsection @section('content') @include('layouts.breadcrumb', [ 'title' => 'Project Management', 'current' => 'Project Detail', 'homeRoute' => 'dashboard', ]) @include('project_management.layouts.profile-index') @php $projectDetail = $projectDetail ?? []; $projectSummary = $projectSummary ?? []; $projectTaskTimeline = $projectTaskTimeline ?? []; $projectDivisionGroups = collect($projectDivisionGroups ?? []); $projectTeamMembers = collect($projectDetail['team_members'] ?? []); $divisionPalette = ['#2445c7', '#ff8a00', '#2bc155', '#ff5b8a', '#ffb800', '#8b5cf6']; $summaryChartLabels = $projectDivisionGroups ->map(fn ($divisionGroup): string => (string) ($divisionGroup['name'] ?? '-')) ->values(); $summaryChartSeries = $projectDivisionGroups ->map(fn ($divisionGroup): int => (int) ($divisionGroup['total_tasks'] ?? 0)) ->values(); @endphp
Projects
Back to Projects

{{ $projectDetail['name'] ?? '-' }}

{{ $projectDetail['subtitle'] ?? '-' }}
Status Badge
{{ $projectDetail['status_label'] ?? '-' }}
Client Name
{{ $projectDetail['client_name'] ?? '-' }}
Live Event Dates
{{ $projectDetail['live_event_date_label'] ?? '-' }} ({{ $projectDetail['live_event_duration_label'] ?? '-' }})
Project Lifecycle
{{ $projectDetail['date_label'] ?? '-' }} ({{ $projectDetail['duration_label'] ?? '-' }})
Event Lead / PIC
{{ $projectDetail['pic_label'] ?? '-' }}
Core Team
{{ $projectDetail['team_count'] ?? 0 }} Staff
Team
@forelse ($projectTeamMembers->take(6) as $teamMember) @if (! empty($teamMember['avatar_url'])) {{ $teamMember['name'] ?? 'Staff' }} @else {{ $teamMember['fallback_label'] ?? 'S' }} @endif @empty - @endforelse @if ($projectTeamMembers->count() > 6) +{{ $projectTeamMembers->count() - 6 }} @endif

Tasks Summary

{{ $projectSummary['overdue_tasks'] ?? 0 }} Overdue Tasks
@forelse ($projectDivisionGroups as $divisionGroup)
{{ $divisionGroup['name'] }}
{{ $divisionGroup['total_tasks'] }}
@empty

No division category available.

@endforelse

Tasks

Incomplete Complete
@forelse ($projectDivisionGroups as $divisionGroup)

{{ $divisionGroup['name'] }}

{{ $divisionGroup['sub_title'] ?: $divisionGroup['total_tasks'].' task from this project' }}
@if ($divisionGroup['can_manage_drive'] ?? false) @if (! empty($divisionGroup['google_drive_url'])) @else @endif @elseif (! empty($divisionGroup['google_drive_url'])) Drive @else @endif
{{ $divisionGroup['completed_tasks'] }} / {{ $divisionGroup['total_tasks'] }} Completed ({{ $divisionGroup['completion_rate'] }}%) @if ($divisionGroup['can_create_task'] ?? false) @endif
@forelse ($divisionGroup['tasks'] as $task)
@if ($task['can_toggle'])
@else
@endif
{{ $task['title'] }}
{{ $task['due_label'] }} by {{ $task['assignee_label'] }}
@if ($task['can_toggle']) @else @endif
@empty

No project task for this division.

@endforelse
@empty
No division task found

Division cards appear after event divisions are seeded.

@endforelse
@endsection @section('script') @php $dashboardJsPath = public_path('assets/js/dashboard.js'); $dashboardJsVersion = file_exists($dashboardJsPath) ? filemtime($dashboardJsPath) : time(); $apexChartsPath = public_path('assets/vendor/apexcharts/dist/apexcharts.min.js'); $apexChartsVersion = file_exists($apexChartsPath) ? filemtime($apexChartsPath) : time(); @endphp @endsection