main
Ilham Wara Nugroho 2026-02-27 13:47:26 +07:00
parent accbd3ff4f
commit 2fcba34124
9 changed files with 87 additions and 42 deletions

View File

@ -33,11 +33,52 @@ class HomeController extends Controller
$data['title'] = 'Dashboard'; $data['title'] = 'Dashboard';
$data['route'] = $this->route; $data['route'] = $this->route;
if((session('group_id') == 1) || (session('group_alias') == 'admin')){ if((session('group_id') == 1) || (session('group_alias') == 'admin')){
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->count(); $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->where('tahun',date('Y'))->count();
$data['datasetTambahan'] = DatasetTambahan::orderBy('DatasetId','DESC')->count(); $data['datasetTambahan'] = DatasetTambahan::orderBy('DatasetId','DESC')->where('tahun',date('Y'))->count();
$data['datasetInstansi'] = Instansi::selectRaw("
SUM(
CASE
WHEN resource_data IS NULL
OR json_array_length(resource_data) = 0
THEN 1
ELSE json_array_length(resource_data)
END
) as total_resource
")
->value('total_resource');
$data['total'] = Instansi::join('dataset as d', 'd.instansi_id', '=', 'ms_instansi.MsInstansiId')
->whereRaw("ms_instansi.resource_data IS NOT NULL
AND EXISTS (
SELECT 1
FROM jsonb_array_elements_text(ms_instansi.resource_data::jsonb) AS r(value)
WHERE r.value = d.ms_tabel_data_id::text
)
")->distinct('ms_instansi.MsInstansiId')
->count('ms_instansi.MsInstansiId');
}else{ }else{
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->whereIn('instansi_id',[session('instansi_id')])->count(); $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->whereIn('instansi_id',[session('instansi_id')])->where('tahun',date('Y'))->count();
$data['datasetTambahan'] = DatasetTambahan::whereIn('instansi_id',[session('instansi_id')])->count(); $data['datasetTambahan'] = DatasetTambahan::whereIn('instansi_id',[session('instansi_id')])->where('tahun',date('Y'))->count();
$data['datasetInstansi'] = Instansi::where('MsInstansiId',session('instansi_id'))->selectRaw("
SUM(
CASE
WHEN resource_data IS NULL
OR json_array_length(resource_data) = 0
THEN 1
ELSE json_array_length(resource_data)
END
) as total_resource
")
->value('total_resource');
$data['total'] = Instansi::where('MsInstansiId',session('instansi_id'))->join('dataset as d', 'd.instansi_id', '=', 'ms_instansi.MsInstansiId')
->whereRaw("ms_instansi.resource_data IS NOT NULL
AND EXISTS (
SELECT 1
FROM jsonb_array_elements_text(ms_instansi.resource_data::jsonb) AS r(value)
WHERE r.value = d.ms_tabel_data_id::text
)
")->distinct('ms_instansi.MsInstansiId')
->count('ms_instansi.MsInstansiId');
} }
$data['instansi'] = Instansi::count(); $data['instansi'] = Instansi::count();
@ -66,13 +107,16 @@ class HomeController extends Controller
$status = ''; $status = '';
$cek = Dataset::where('ms_tabel_data_id',$row->MsTabelDataId)->where('tahun',date('Y'))->count(); $cek = Dataset::where('ms_tabel_data_id',$row->MsTabelDataId)->where('tahun',date('Y'))->count();
if($cek > 0){ if($cek > 0){
$status = '<span class="bg-emerald-500 rounded w-100 p-1 text-[10px] text-white">Sudah Unggah</spa>'; $status = '<span class="flex bg-emerald-500 rounded w-100 p-1 text-[10px] text-white">Sudah Unggah</spa>';
$action = '';
}else{ }else{
$status = '<span class="bg-red-500 rounded w-100 p-1 text-[10px] text-white">Belum Unggah</spa>'; $status = '<span class="flex bg-red-500 rounded w-100 p-1 text-[10px] text-white">Belum Unggah</spa>';
$action = '<a href="'.url('opendata/dataset/update').'" title="Buat Dataset" class="flex p-2 rounded bg-emerald-500 text-white"><i class="ri-add-line"></i></a>';
} }
$_data[] = [ $_data[] = [
'no' => $key+1, 'no' => $key+1,
'action' => $action,
'name' => 'Tabel '.@$row->nomor_tabel.' - '.@$row->name, 'name' => 'Tabel '.@$row->nomor_tabel.' - '.@$row->name,
'status' => @$status, 'status' => @$status,
]; ];

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -4,8 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SLHD | Dinas Lingkungan Hidup</title> <title>SLHD | Dinas Lingkungan Hidup</title>
<link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo3.png')}}">
<link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo3.png')}}">
<!-- Tailwind CSS CDN --> <!-- Tailwind CSS CDN -->
<!-- Tailwind CSS CDN --> <!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.tailwindcss.com"></script>
@ -39,11 +39,11 @@
<div class="relative z-10"> <div class="relative z-10">
<div class="flex items-center space-x-3 mb-0 md:mb-12"> <div class="flex items-center space-x-3 mb-0 md:mb-12">
<div class="bg-white p-2 rounded-xl text-blue-600"> <div class="bg-white p-2 rounded-xl text-blue-600">
<img src="{{asset('assets/logo-dinas.ico')}}" width="40" alt=""> <img src="{{asset('assets/logo3.png')}}" width="40" alt="">
</div> </div>
<div> <div>
<h1 class="font-bold text-2xl tracking-tight leading-none uppercase text-white">SLHD</h1> <h1 class="font-bold text-2xl tracking-tight leading-none uppercase text-white mb-2">SLHD</h1>
<p class="text-[10px] uppercase tracking-widest text-blue-100 font-bold">Status Lingkungan Hidup Provinsi DKI Jakarta</p> <p class="text-[10px] uppercase tracking-widest text-blue-100 font-bold">Status Lingkungan Hidup Daerah</p>
</div> </div>
</div> </div>

View File

@ -4,8 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SLHD | Dinas Lingkungan Hidup</title> <title>SLHD | Dinas Lingkungan Hidup</title>
<link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo3.png')}}">
<link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo3.png')}}">
<!-- Tailwind CSS CDN --> <!-- Tailwind CSS CDN -->
<script src="{{ asset('assets/js/tailwind.js') }}"></script> <script src="{{ asset('assets/js/tailwind.js') }}"></script>
<!-- Google Fonts --> <!-- Google Fonts -->
@ -41,10 +41,10 @@
<nav id="main-nav" class="fixed w-full z-50 transition-all duration-300 py-4"> <nav id="main-nav" class="fixed w-full z-50 transition-all duration-300 py-4">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex justify-between items-center"> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex justify-between items-center">
<div class="flex items-center space-x-3"> <div class="flex items-center space-x-3">
<img src="{{asset('assets/logo-dinas.ico')}}" width="40" alt=""> <img src="{{asset('assets/logo3.png')}}" width="40" alt="">
<div> <div>
<h1 class="font-bold text-xl tracking-tight text-blue-900 leading-none uppercase">SLHD</h1> <h1 class="font-bold text-xl tracking-tight text-slate-900 leading-none uppercase mb-2">SLHD</h1>
<p class="text-[10px] uppercase tracking-widest text-blue-600 font-bold">Status Lingkungan Hidup Provinsi DKI Jakarta</p> <p class="text-[10px] uppercase tracking-widest text-slate-600 font-bold">Status Lingkungan Hidup Daerah</p>
</div> </div>
</div> </div>
@ -85,9 +85,13 @@
<div class="flex flex-col md:flex-row justify-between items-center"> <div class="flex flex-col md:flex-row justify-between items-center">
<div class="mb-6 md:mb-0"> <div class="mb-6 md:mb-0">
<div class="flex items-center justify-center md:justify-start space-x-3 mb-2"> <div class="flex items-center justify-center md:justify-start space-x-3 mb-2">
<img src="{{asset('assets/logo-dinas.ico')}}" width="40" alt=""> <img src="{{asset('assets/logo3.png')}}" width="40" alt="">
<span class="font-bold text-slate-900 uppercase">SLHD JAKARTA</span> <div>
<h1 class="font-bold text-xl tracking-tight text-slate-900 leading-none uppercase mb-2">SLHD</h1>
<p class="text-[10px] uppercase tracking-widest text-slate-600 font-bold">Status Lingkungan Hidup Daerah</p>
</div>
</div> </div>
<p class="text-slate-500 text-xs">© {{ date('Y') }} Dinas Lingkungan Hidup Provinsi DKI Jakarta.</p> <p class="text-slate-500 text-xs">© {{ date('Y') }} Dinas Lingkungan Hidup Provinsi DKI Jakarta.</p>
</div> </div>
{{-- <div class="flex space-x-8 text-sm font-medium text-slate-600"> {{-- <div class="flex space-x-8 text-sm font-medium text-slate-600">

View File

@ -5,9 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Panel - SLHD Provinsi DKI Jakarta</title> <title>Admin Panel - SLHD Provinsi DKI Jakarta</title>
<!-- Tailwind CSS CDN --> <!-- Tailwind CSS CDN -->
<link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="apple-touch-icon" sizes="180x180" href="{{asset('assets/logo3.png')}}">
<link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo-dinas.ico')}}"> <link rel="icon" type="image/png" sizes="32x32" href="{{asset('assets/logo3.png')}}">
<link rel="mask-icon" href="{{asset('assets/logo-dinas.ico')}}" color="#5bbad5"> <link rel="mask-icon" href="{{asset('assets/logo3.png')}}" color="#5bbad5">
<script src="{{ asset('assets/js/tailwind.js') }}"></script> <script src="{{ asset('assets/js/tailwind.js') }}"></script>
<!-- Google Fonts --> <!-- Google Fonts -->
<link href="{{ asset('assets/css/font.css') }}" rel="stylesheet"> <link href="{{ asset('assets/css/font.css') }}" rel="stylesheet">
@ -101,11 +101,11 @@
<div class="p-6 border-b border-slate-50 flex items-center justify-between"> <div class="p-6 border-b border-slate-50 flex items-center justify-between">
<div class="flex items-center space-x-3 overflow-hidden"> <div class="flex items-center space-x-3 overflow-hidden">
{{-- <div class="bg-white p-2 rounded-lg text-white shrink-0"> --}} {{-- <div class="bg-white p-2 rounded-lg text-white shrink-0"> --}}
<img src="{{asset('assets/logo-dinas.ico')}}" width="40" alt=""> <img src="{{asset('assets/logo3.png')}}" width="40" alt="">
{{-- </div> --}} {{-- </div> --}}
<div class="sidebar-header-text"> <div class="sidebar-header-text">
<h1 class="font-bold text-lg tracking-tight text-slate-900 leading-none">SLHD</h1> <h1 class="font-bold text-lg tracking-tight text-slate-900 leading-none">SLHD</h1>
<p class="text-[8px] mt-2 uppercase tracking-widest text-slate-600 font-bold">Status Lingkungan <br> Hidup Daerah</p> <p class="text-[6px] mt-2 uppercase tracking-widest text-slate-600 font-bold">Status Lingkungan Hidup Daerah</p>
</div> </div>
</div> </div>
<!-- Desktop Toggle Button --> <!-- Desktop Toggle Button -->

View File

@ -5,7 +5,7 @@
<div class="flex-1 overflow-y-auto p-8 custom-scrollbar"> <div class="flex-1 overflow-y-auto p-8 custom-scrollbar">
<!-- Stats Cards --> <!-- Stats Cards -->
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-3 gap-6 mb-8"> <div class="grid grid-cols-1 {{ (session('group_id') == 1) || (session('group_alias') == 'admin') ? 'md:grid-cols-4 lg:grid-cols-4' : 'md:grid-cols-3 lg:grid-cols-3' }} gap-6 mb-8">
<!-- Card 1 --> <!-- Card 1 -->
<div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm hover:shadow-md transition-shadow"> <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm hover:shadow-md transition-shadow">
<div class="flex justify-between items-start mb-4"> <div class="flex justify-between items-start mb-4">
@ -27,26 +27,22 @@
<h4 class="text-2xl font-black text-slate-900 mt-1">{{$datasetTambahan}}</h4> <h4 class="text-2xl font-black text-slate-900 mt-1">{{$datasetTambahan}}</h4>
</div> </div>
<!-- Card 3 --> <!-- Card 3 -->
<!-- Card 4 -->
<div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm hover:shadow-md transition-shadow"> <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm hover:shadow-md transition-shadow">
<div class="flex justify-between items-start mb-4">
<div class="p-2 bg-orange-50 rounded-lg text-orange-600">
<i data-lucide="users" class="w-5 h-5"></i>
</div>
</div>
<p class="text-slate-500 text-[10px] font-bold uppercase tracking-wider">Instansi Terdaftar</p>
<h4 class="text-2xl font-black text-slate-900 mt-1">{{$instansi}}</h4>
</div>
<!-- Card 4 -->
{{-- <div class="bg-white p-6 rounded-2xl border border-slate-200 shadow-sm hover:shadow-md transition-shadow">
<div class="flex justify-between items-start mb-4"> <div class="flex justify-between items-start mb-4">
<div class="p-2 bg-purple-50 rounded-lg text-purple-600"> <div class="p-2 bg-purple-50 rounded-lg text-purple-600">
<i data-lucide="table" class="w-5 h-5"></i> <i data-lucide="upload" class="w-5 h-5"></i>
</div> </div>
<span class="text-xs font-bold text-red-500 bg-red-50 px-2 py-1 rounded">-2%</span> <?php
$persentase = (($total/@$datasetInstansi)*100);
?>
<span class="text-xs font-bold {{$persentase >= 60 ? 'text-emerald-500 bg-emerald-50' : 'text-red-500 bg-red-50'}} px-2 py-1 rounded">{{round($persentase)}}%</span>
</div> </div>
<p class="text-slate-500 text-[10px] font-bold uppercase tracking-wider">Tabel Kinerja DPSIR</p> <p class="text-slate-500 text-[10px] font-bold uppercase tracking-wider">Dataset Utama Instansi Terinput</p>
<h4 class="text-2xl font-black text-slate-900 mt-1">{{ $tabelData }}</h4> <h4 class="text-2xl font-black text-slate-900 mt-1">{{ $total }} / {{ @$datasetInstansi }}</h4>
</div> --}} </div>
</div> </div>
@if((session('group_id') == 1) || (session('group_alias') == 'admin')) @if((session('group_id') == 1) || (session('group_alias') == 'admin'))
@ -94,7 +90,7 @@
</div> </div>
</div> </div>
@else @else
<div class="grid grid-cols-2 gap-2"> <div class="grid grid-cols-1 xl:grid-cols-2 gap-2">
<div class="bg-white rounded-3xl border border-slate-200 shadow-sm overflow-hidden"> <div class="bg-white rounded-3xl border border-slate-200 shadow-sm overflow-hidden">
<div class="p-6 border-b border-slate-100 flex flex-col md:flex-row md:items-center justify-between gap-4"> <div class="p-6 border-b border-slate-100 flex flex-col md:flex-row md:items-center justify-between gap-4">
<div> <div>
@ -118,6 +114,7 @@
id="grid-data1"> id="grid-data1">
<thead class="bg-slate-100 border-b border-slate-100"> <thead class="bg-slate-100 border-b border-slate-100">
<tr> <tr>
<th class="text-[10px] border font-bold text-slate-900 text-center tengah align-middle" style="vertical-align: middle!important;" data-field="action">#</th>
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="name">Dataset</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="name">Dataset</th>
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="status">Status</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="status">Status</th>
</tr> </tr>

View File

@ -16,9 +16,9 @@
<i data-lucide="plus" class="w-4 h-4 mr-2"></i> Tambah Data <i data-lucide="plus" class="w-4 h-4 mr-2"></i> Tambah Data
</a> </a>
@endif @endif
<button class="hidden p-2 bg-slate-900 text-white rounded-xl hover:bg-slate-800 transition-colors flex items-center text-sm font-semibold"> {{-- <button class=" p-2 bg-slate-900 text-white rounded-xl hover:bg-slate-800 transition-colors flex items-center text-sm font-semibold">
<i data-lucide="filter" class="w-4 h-4 mr-2"></i> Filter <i data-lucide="filter" class="w-4 h-4 mr-2"></i> Filter
</button> </button> --}}
</div> </div>
</div> </div>