Dashboard Kelurahan

Ringkasan data kelayakan penerima BLT-DD

{{-- BELL --}}
{{-- CLOCK --}}
{{-- GREETING --}}
{{ strtoupper(substr(Auth::user()->name ?? 'A', 0, 1)) }}

Selamat datang, {{ Auth::user()->name ?? 'Admin' }} 👋

Panel admin — kelola dan pantau seluruh data warga.

{{ $totalPending ?? 0 }} data menunggu verifikasi

Proses sekarang →
{{-- STAT CARDS --}}
@php $cards = [ ['label'=>'Total Warga','sub'=>'Dari semua dusun','val'=>$totalWarga??0,'grad'=>'#2563eb,#1d4ed8','shadow'=>'rgba(37,99,235,.3)','icon'=>'M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z','tc'=>'rgba(191,219,254,.9)'], ['label'=>'Pending','sub'=>'Belum diproses','val'=>$totalPending??0,'grad'=>'#f59e0b,#d97706','shadow'=>'rgba(245,158,11,.3)','icon'=>'M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(254,243,199,.9)'], ['label'=>'Diterima','sub'=>'Sudah ditetapkan','val'=>$totalPenerima??0,'grad'=>'#10b981,#059669','shadow'=>'rgba(16,185,129,.3)','icon'=>'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(167,243,208,.9)'], ['label'=>'Ditolak','sub'=>'Tidak memenuhi syarat','val'=>$totalDitolak??0,'grad'=>'#f43f5e,#e11d48','shadow'=>'rgba(244,63,94,.3)','icon'=>'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z','tc'=>'rgba(254,205,211,.9)'], ]; @endphp @foreach($cards as $c)

{{ $c['label'] }}

{{ $c['val'] }}

{{ $c['sub'] }}

@endforeach
{{-- GRAFIK + DATA PER DUSUN --}}
{{-- Grafik --}}

Warga per Dusun

{{ $wargaPerDusun->sum('total') }} total
@php $dusuns=$wargaPerDusun->values(); $n=max($dusuns->count(),1); $maxV=max((int)$dusuns->max('total'),1); $W=560;$H=200;$pL=40;$pR=20;$pT=28;$pB=44; $cW=$W-$pL-$pR;$cH=$H-$pT-$pB; $step=max(1,(int)ceil($maxV/4)); $yTicks=range(0,$maxV+$step,$step); $pts=[]; foreach($dusuns as $i=>$d){ $x=$pL+($n===1?$cW/2:($i/($n-1))*$cW); $y=$pT+$cH-($d->total/$maxV)*$cH; $pts[]=['x'=>round($x,1),'y'=>round($y,1),'val'=>$d->total,'name'=>$d->dusun]; } $poly=implode(' ',array_map(fn($p)=>"{$p['x']},{$p['y']}",$pts)); $firstPt=$pts[0];$lastPt=$pts[count($pts)-1]; $botY=$pT+$cH; $areaPath="M {$firstPt['x']},{$firstPt['y']} ".implode(' ',array_map(fn($p)=>"L {$p['x']},{$p['y']}",array_slice($pts,1)))." L {$lastPt['x']},{$botY} L {$firstPt['x']},{$botY} Z"; @endphp @foreach($yTicks as $t) @if($t<=$maxV+$step) @php $gy=$pT+$cH-min($t,$maxV)/$maxV*$cH; @endphp {{ $t }} @endif @endforeach @foreach($pts as $p) {{ $p['val'] }} {{ Str::limit($p['name'],8) }} @endforeach
{{-- Data per dusun --}}

Per Dusun

@php $maxDusun=$wargaPerDusun->max('total')?:1; @endphp @foreach($wargaPerDusun as $data)
{{ $data->dusun }} {{ $data->total }}
@endforeach
{{-- TOP 10 --}}

Top 10 Probabilitas Tertinggi

Diurutkan dari probabilitas terbesar

Lihat Semua
@forelse($topWarga as $index => $warga) @empty @endforelse
# Nama NIK Dusun / RT Penghasilan Probabilitas Status
@php $rk = ['linear-gradient(135deg,#f59e0b,#d97706)','linear-gradient(135deg,#94a3b8,#64748b)','linear-gradient(135deg,#f97316,#ea580c)']; $bg = $index < 3 ? $rk[$index] : '#f1f5f9'; $tc = $index < 3 ? '#fff' : '#64748b'; @endphp
{{ $index+1 }}
{{ strtoupper(substr($warga->nama,0,1)) }}
{{ $warga->nama }}
{{ $warga->pekerjaan }}
{{ $warga->nik }}
{{ $warga->dusun }} RT {{ str_pad($warga->rt??'0',3,'0',STR_PAD_LEFT) }}
Rp {{ number_format($warga->penghasilan,0,',','.') }} @php $sc=$warga->probabilitas>=70?'#10b981':($warga->probabilitas>=40?'#f59e0b':'#f43f5e'); @endphp
{{ number_format($warga->probabilitas,1) }}%
@php $st=['pending'=>['#fffbeb','#b45309','#fde68a','Pending'],'diterima'=>['#f0fdf4','#166534','#bbf7d0','Diterima'],'ditolak'=>['#fff1f2','#be123c','#fecdd3','Ditolak']]; $s=$st[$warga->status]??['#eff6ff','#1d4ed8','#bfdbfe',ucfirst($warga->status)]; @endphp {{ $s[3] }}
Belum ada data warga