@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 ===== --}}
💡
{{ $kpi['pju']['badge']['text'] }}
{{ number_format($count_pju) }}
Total Lampu PJU
Update Data: Hari ini
🛣️
{{ $kpi['jalan']['badge']['text'] }}
{{ number_format($count_jalan) }}
Ruas Jalan Terdaftar
{{ $kpi['jalan']['sub'] }}
{{ $kpi['kondisi_baik']['badge']['text'] }}
{{ number_format($kpi['kondisi_baik']['value']) }}
PJU Aktif
Update Data: Hari ini
⚠️
{{ $kpi['kondisi_kurang']['badge']['text'] }}
{{ number_format($kpi['kondisi_kurang']['value']) }}
PJU Butuh Perawatan
Update Data: Hari ini
🔴
{{ $kpi['kondisi_rusak']['badge']['text'] }}
{{ number_format($kpi['kondisi_rusak']['value']) }}
PJU Mati
Update Data: Hari ini
{{-- ===== CHARTS ROW ===== --}}
{{-- 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 --}}
Grafik Kondisi PJU
{{ number_format($count_pju) }}
Total PJU
Aktif Perawatan Mati
{{-- ===== TABLES ===== --}}
{{-- Table PJU terbaru --}}
PJU Terbaru Ditambah Lihat semua →
@forelse ($pju_terbaru as $pju) @php $st = $pju->statusRingkasanDashboard(); @endphp @empty @endforelse
No Lokasi / Jalan Tipe Status
{{ $loop->iteration }} {{ $pju->ruasJalan?->nama_jalan ?? '–' }} {{ $pju->jenisLampu?->nama ?? '–' }} / {{ $pju->jenisTiang?->nama ?? '–' }} {{ $st['label'] }}
Belum ada data PJU.
{{-- Table ruas jalan --}}
Ruas Jalan — PJU Terbanyak Lihat semua →
@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 @empty @endforelse
Nama Jalan Kecamatan Jml PJU Cakupan
{{ $ruas->nama_jalan ?? '–' }} {{ $ruas->kecamatanRel?->nama ?? '–' }} {{ number_format($cnt) }}
Belum ada ruas dengan data PJU.
{{-- ===== BOTTOM ROW ===== --}}
{{-- 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
@forelse ($beranda_alerts as $al) @if($al['title'] == 'PJU Kondisi Rusak') @endif
{{ $al['icon'] }}
{{ $al['title'] }}
{{ $al['desc'] }}
@if($al['title'] == 'PJU Kondisi Rusak')
@endif @empty
Tidak ada peringatan dari data saat ini
Ringkasan kondisi mengacu pada PJU dengan 9 indikator lengkap.
@endforelse
{{-- ===== SCRIPTS ===== --}} @endsection