@extends('layouts.app')
@section('title', 'Dashboard — ' . config('app.name', 'Website Pemetaan PJU'))
@section('content')
@php
$base = rtrim(request()->getBasePath(), '/');
$kpi = $kpi ?? [
'pju' => ['badge' => ['class' => 'neu', 'text' => '±0'], 'sub' => 'Data baru hari ini vs kemarin (semua PJU)'],
'jalan' => ['badge' => ['class' => 'neu', 'text' => '±0'], 'sub' => 'Tersebar di 0 kecamatan'],
'kondisi_baik' => ['value' => 0, 'badge' => ['class' => 'neu', 'text' => '±0'], 'sub' => ''],
'kondisi_kurang' => ['value' => 0, 'badge' => ['class' => 'neu', 'text' => '±0'], 'sub' => ''],
'kondisi_rusak' => ['value' => 0, 'badge' => ['class' => 'neu', 'text' => '±0'], 'sub' => ''],
];
$pju_last_activity = $pju_last_activity ?? null;
$pju_weekly_trend = $pju_weekly_trend ?? ['labels' => [], 'weekly' => [], 'cumulative' => []];
$pju_terbaru = $pju_terbaru ?? collect();
$ruas_pju_terbanyak = $ruas_pju_terbanyak ?? collect();
$ruas_pju_cakupan_max = max(1, (int) ($ruas_pju_terbanyak->max('pju_count') ?? 0));
$pju_per_kecamatan = $pju_per_kecamatan ?? collect();
$pju_per_kecamatan_max = max(1, (int) ($pju_per_kecamatan->max('jumlah') ?? 0));
$aktivitas_terbaru = $aktivitas_terbaru ?? collect();
$beranda_alerts = $beranda_alerts ?? [];
$pju_status_donut = [
(int) ($kpi['kondisi_baik']['value'] ?? 0),
(int) ($kpi['kondisi_kurang']['value'] ?? 0),
(int) ($kpi['kondisi_rusak']['value'] ?? 0),
];
@endphp
{{-- Google Fonts --}}
{{-- ===== MAIN CONTENT ===== --}}
{{-- Empty state --}}
@if(isset($belum_ada_data) && $belum_ada_data)
Belum ada data. Mulai dengan menambah Data Jalan (Lokasi PJU) atau Data PJU.
@endif
{{-- ===== KPI ROW ===== --}}
Ringkasan Sistem
{{-- ===== CHARTS ROW ===== --}}
Analitik
{{-- Line chart — tren penambahan PJU per minggu --}}
Tren penambahan PJU per minggu
12 minggu terakhir — akumulasi vs baru per minggu
Baru per minggu
Akumulasi
{{-- Donut chart — status PJU --}}
{{ number_format($count_pju) }}
Total PJU
Aktif
Perawatan
Mati
{{-- ===== TABLES ===== --}}
Data Terkini
{{-- Table PJU terbaru --}}
| No |
Lokasi / Jalan |
Tipe |
Status |
@forelse ($pju_terbaru as $pju)
@php $st = $pju->statusRingkasanDashboard(); @endphp
| {{ $loop->iteration }} |
{{ $pju->ruasJalan?->nama_jalan ?? '–' }} |
{{ $pju->jenisLampu?->nama ?? '–' }} / {{ $pju->jenisTiang?->nama ?? '–' }} |
{{ $st['label'] }} |
@empty
| Belum ada data PJU. |
@endforelse
{{-- Table ruas jalan --}}
| Nama Jalan |
Kecamatan |
Jml PJU |
Cakupan |
@forelse ($ruas_pju_terbanyak as $ruas)
@php
$cnt = (int) $ruas->pju_count;
$pct = $ruas_pju_cakupan_max > 0 ? round(($cnt / $ruas_pju_cakupan_max) * 100) : 0;
@endphp
| {{ $ruas->nama_jalan ?? '–' }} |
{{ $ruas->kecamatanRel?->nama ?? '–' }} |
{{ number_format($cnt) }} |
|
@empty
| Belum ada ruas dengan data PJU. |
@endforelse
{{-- ===== BOTTOM ROW ===== --}}
Distribusi & Aktivitas
{{-- Distribusi per kecamatan --}}
PJU per Kecamatan
Top 6 kecamatan
@forelse ($pju_per_kecamatan as $row)
@php
$j = (int) $row->jumlah;
$pctKec = $pju_per_kecamatan_max > 0 ? round(($j / $pju_per_kecamatan_max) * 100) : 0;
@endphp
{{ $row->nama ?? '–' }}
{{ number_format($j) }}
@empty
Belum ada PJU terpetakan per kecamatan
@endforelse
{{-- Log aktivitas --}}
Aktivitas Terbaru
Log perubahan data
@forelse ($aktivitas_terbaru as $ev)
{{ $ev['text'] }}
{{ $ev['time'] }}
@empty
Belum ada aktivitas tercatat.
—
@endforelse
{{-- Alert / notifikasi --}}
Notifikasi & Peringatan
Perlu tindakan
{{-- ===== SCRIPTS ===== --}}
@endsection