main
Ilham Wara Nugroho 2026-02-25 10:42:19 +07:00
parent e63821138b
commit accbd3ff4f
15 changed files with 258 additions and 192 deletions

View File

@ -18,11 +18,12 @@ class FrontController extends Controller
$data = []; $data = [];
// $data['template'] = TabelData::where('show_dashboard',1)->limit(4)->inRandomOrder()->get(); // $data['template'] = TabelData::where('show_dashboard',1)->limit(4)->inRandomOrder()->get();
$data['template'] = TabelData::limit(4)->inRandomOrder()->get(); $data['template'] = TabelData::limit(6)->orderBy('created_at','DESC')->get();
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->limit(4)->get(); $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->limit(4)->get();
// $data['instansi'] = Instansi::all(); // $data['instansi'] = Instansi::all();
$data['count'] = [ $data['count'] = [
'dataset' => Dataset::count(), 'dataset' => Dataset::count(),
'dataset_tambahan' => DatasetTambahan::count(),
'resource' => TabelData::count(), 'resource' => TabelData::count(),
'instansi' => Instansi::count(), 'instansi' => Instansi::count(),
]; ];

View File

@ -190,7 +190,12 @@ class DatasetController extends Controller
$dataset->data = null; $dataset->data = null;
$dataset->file = null; $dataset->file = null;
$dataset->deskripsi = $request->deskripsi; $dataset->deskripsi = $request->deskripsi;
if((session('group_id') == 1) || (session('group_alias') == 'admin')){
$dataset->status = 1;
}else{
$dataset->status = 0; $dataset->status = 0;
}
$dataset->created_by = auth()->user()->id; $dataset->created_by = auth()->user()->id;
$dataset->save(); $dataset->save();
} }

View File

@ -72,26 +72,28 @@ class DatasetTambahanController extends Controller
$action = ''; $action = '';
if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){ if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){
$action .= '<div class="flex gap-3 justify-center items-center flex-row">'; $action .= '<div class="flex gap-1 justify-center items-center flex-row">';
if($row->created_by == auth()->user()->id){ if($row->created_by == auth()->user()->id){
$action .= '<a href="'.url('opendata/dataset-tambahan/update/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Ubah Data" class="btn btn-sm btn-block bg-primary"><i class="ri-pencil-line text-white"></i></a>'; $action .= '<a href="'.url('opendata/dataset-tambahan/update/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Ubah Data" class="p-2 rounded text-white bg-blue-500"><i class="ri-pencil-line text-white"></i></a>';
} }
$action .= '<a href="'.url('opendata/dataset-tambahan/view/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Lihat Data" class="btn btn-sm btn-block bg-info"><i class="ri-eye-line text-white"></i></a>'; $action .= '<a href="'.url('opendata/dataset-tambahan/view/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Lihat Data" class="p-2 rounded text-white bg-blue-900"><i class="ri-eye-line text-white"></i></a>';
if((session('group_id') == 1) || (session('group_alias') == 'admin')){ if((session('group_id') == 1) || (session('group_alias') == 'admin')){
// $action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin btn btn-sm btn-block bg-success"><i class="ri-user-2-line text-white"></i></a>'; // $action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin p-2 rounded text-white bg-success"><i class="ri-user-2-line text-white"></i></a>';
if($row->status == 1){ if($row->status == 1){
$action .= '<a href="#" data-href="'.url('opendata/dataset-tambahan/delete/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>'; $action .= '<a href="#" data-href="'.url('opendata/dataset-tambahan/delete/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data p-2 rounded text-white bg-red-500"><i class="ri-delete-bin-line text-white"></i></a>';
}else{ }else{
$action .= '<a href="#" data-href="'.url('opendata/dataset-tambahan/aktif/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Aktifkan Data" class="aktif_data btn btn-sm btn-block bg-success"><i class="ri-check-line text-white"></i></a>'; $action .= '<a href="#" data-href="'.url('opendata/dataset-tambahan/aktif/'.encode_id($row->DatasetTambahanId)).'" data-toggle="tooltip" title="Aktifkan Data" class="aktif_data p-2 rounded text-white bg-emerald-500"><i class="ri-check-line text-white"></i></a>';
} }
} }
$action .= '</div>'; $action .= '</div>';
} }
$status = ''; $status = '';
if($row->status == 1){ if($row->status == 1){
$status = '<small class="p-1 w-full bg-success text-white rounded" title="Aktif"><i class="ri-check-line"></i></small>'; $status = '<small class="p-1 w-full bg-emerald-500 text-white rounded" title="Valid">Valid</small>';
}else{ }elseif($row->status == 0){
$status = '<small class="p-1 w-full bg-danger text-white rounded" title="Tidak Aktif"><i class="ri-close-line"></i></small>'; $status = '<small class="p-1 w-full bg-yellow-500 text-white rounded" title="Tidak Valid">Menunggu Verifikasi</small>';
}elseif($row->status == 2){
$status = '<small class="p-1 w-full bg-red-500 text-white rounded" title="Tidak Valid">Verifikasi Ditolak</small>';
} }
$_data[] = [ $_data[] = [
@ -100,6 +102,7 @@ class DatasetTambahanController extends Controller
'name' => @$row->name, 'name' => @$row->name,
'publik' => @$row->publik, 'publik' => @$row->publik,
'tahun' => @$row->tahun, 'tahun' => @$row->tahun,
'template' => @$row->tabelData->name,
'created_at' => date('d-m-Y',strtotime(@$row->created_at)), 'created_at' => date('d-m-Y',strtotime(@$row->created_at)),
'instansi' => @$row->instansi->name, 'instansi' => @$row->instansi->name,
'action' => @$action, 'action' => @$action,
@ -134,10 +137,10 @@ class DatasetTambahanController extends Controller
if(@$request->file){ if(@$request->file){
$file = $request->file('file'); $file = $request->file('file');
$path = $file->getRealPath(); $path = $file->getRealPath();
$spreadsheet = IOFactory::load($path); // $spreadsheet = IOFactory::load($path);
$sheet = $spreadsheet->getActiveSheet(); // $sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray(); // $rows = $sheet->toArray();
$header = $rows[4]; // Baris pertama sebagai header // $header = $rows[4]; // Baris pertama sebagai header
if (@$request->hasFile('file')) { if (@$request->hasFile('file')) {
$file = $request->file('file'); $file = $request->file('file');
$destinationPath = public_path('uploads/dataset'); $destinationPath = public_path('uploads/dataset');
@ -147,9 +150,9 @@ class DatasetTambahanController extends Controller
$fileMime = $file->getClientMimeType(); $fileMime = $file->getClientMimeType();
$fileExtension = $file->getClientOriginalExtension(); $fileExtension = $file->getClientOriginalExtension();
$fileSize = $file->getSize(); $fileSize = $file->getSize();
if(($fileExtension != 'xls') && ($fileExtension != 'xlsx')){ if(($fileExtension != 'xls') && ($fileExtension != 'xlsx') && ($fileExtension != 'pdf') && ($fileExtension != 'docx')){
return redirect()->back()->with([ return redirect()->back()->with([
'message' => 'Maaf File Harus Berupa xls,xlsx!', 'message' => 'Maaf File Harus Berupa pdf,docx,xls,xlsx!',
'type' => "error" 'type' => "error"
]); ]);
} }
@ -164,21 +167,21 @@ class DatasetTambahanController extends Controller
for ($i = 5; $i < count($rows); $i++) { // for ($i = 5; $i < count($rows); $i++) {
$row = $rows[$i]; // $row = $rows[$i];
// Skip baris kosong // // Skip baris kosong
if (collect($row)->filter()->isEmpty()) continue; // if (collect($row)->filter()->isEmpty()) continue;
$assoc = []; // $assoc = [];
foreach ($header as $j => $columnName) { // foreach ($header as $j => $columnName) {
if($columnName != null){ // if($columnName != null){
$assoc[strtolower(str_replace(' ','_',$columnName))] = $row[$j] ?? null; // $assoc[strtolower(str_replace(' ','_',$columnName))] = $row[$j] ?? null;
} // }
} // }
$data[] = $assoc; // $data[] = $assoc;
} // }
} }
} }
@ -208,6 +211,11 @@ class DatasetTambahanController extends Controller
$insert->deskripsi = $request->deskripsi; $insert->deskripsi = $request->deskripsi;
$insert->tahun = $request->tahun; $insert->tahun = $request->tahun;
$insert->tahun_data = $request->tahun_data; $insert->tahun_data = $request->tahun_data;
if((session('group_id') == 1) || (session('group_alias') == 'admin')){
$insert->status = 1;
}else{
$insert->status = 0;
}
$insert->save(); $insert->save();
}else{ }else{
// dd($request->all()); // dd($request->all());

View File

@ -11,6 +11,10 @@ class DatasetTambahan extends Model
protected $primaryKey = 'DatasetTambahanId'; protected $primaryKey = 'DatasetTambahanId';
protected $guarded = []; protected $guarded = [];
function tabelData() {
return $this->belongsTo('App\Models\Master\TabelData','template_id');
}
function instansi() { function instansi() {
return $this->belongsTo('App\Models\Master\Instansi','instansi_id'); return $this->belongsTo('App\Models\Master\Instansi','instansi_id');
} }

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('dataset-tambahan', function (Blueprint $table) {
$table->year('tahun_data')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('dataset-tambahan', function (Blueprint $table) {
//
});
}
};

View File

@ -5,7 +5,7 @@
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<nav class="flex mb-4 text-sm font-medium text-slate-500" aria-label="Breadcrumb"> <nav class="flex mb-4 text-sm font-medium text-slate-500" aria-label="Breadcrumb">
<ol class="flex items-center space-x-2"> <ol class="flex items-center space-x-2">
<li><a href="dataset.html" class="hover:text-blue-600 transition-colors">Dataset</a></li> <li><a href="dataset.html" class="hover:text-blue-600 transition-colors">Dataset Utama</a></li>
<li><i data-lucide="chevron-right" class="w-4 h-4 text-slate-300"></i></li> <li><i data-lucide="chevron-right" class="w-4 h-4 text-slate-300"></i></li>
<li class="text-slate-900 truncate max-w-[200px] md:max-w-none">{{ $dataset->name }}</li> <li class="text-slate-900 truncate max-w-[200px] md:max-w-none">{{ $dataset->name }}</li>
</ol> </ol>
@ -17,6 +17,7 @@
<span class="text-slate-400 text-xs flex items-center"><i data-lucide="calendar" class="w-3 h-3 mr-1"></i> Terbit: {{ date('d M Y',strtotime($dataset->created_at)) }}</span> <span class="text-slate-400 text-xs flex items-center"><i data-lucide="calendar" class="w-3 h-3 mr-1"></i> Terbit: {{ date('d M Y',strtotime($dataset->created_at)) }}</span>
</div> </div>
<h2 class="text-2xl md:text-3xl font-extrabold text-slate-900 tracking-tight leading-tight">{{ $dataset->name }}</h2> <h2 class="text-2xl md:text-3xl font-extrabold text-slate-900 tracking-tight leading-tight">{{ $dataset->name }}</h2>
<h2 class="mt-3 text-md text-blue-500 tracking-tight leading-tight">{{ $dataset->instansi->name }}</h2>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2">
<a href="{{url('opendata/dataset/download/'.encode_id(@$dataset->DatasetId))}}" class="flex-1 md:flex-none bg-blue-600 text-white px-6 py-3 rounded-xl font-bold hover:bg-blue-700 transition-all flex items-center justify-center shadow-lg shadow-blue-100"> <a href="{{url('opendata/dataset/download/'.encode_id(@$dataset->DatasetId))}}" class="flex-1 md:flex-none bg-blue-600 text-white px-6 py-3 rounded-xl font-bold hover:bg-blue-700 transition-all flex items-center justify-center shadow-lg shadow-blue-100">
@ -76,7 +77,7 @@
<div class="space-y-6"> <div class="space-y-6">
<!-- Metadata Card --> <!-- Metadata Card -->
<section class="bg-white p-6 rounded-3xl border border-slate-200 shadow-sm"> <section class="bg-white p-6 rounded-3xl border border-slate-200 shadow-sm">
<h3 class="text-sm font-bold text-slate-400 uppercase tracking-widest mb-6">Informasi Metadata</h3> <h3 class="text-sm font-bold text-slate-900 uppercase tracking-widest mb-6 flex items-center"><i data-lucide="info" class="w-5 h-5 mr-2 text-blue-600"></i> Informasi Metadata</h3>
<div class="space-y-4"> <div class="space-y-4">
<div class="flex justify-between items-center py-2 border-b border-slate-50"> <div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Tahun Data</span> <span class="text-sm text-slate-500">Tahun Data</span>
@ -87,9 +88,13 @@
<span class="text-sm font-bold text-slate-900">{{ $dataset->tahun }}</span> <span class="text-sm font-bold text-slate-900">{{ $dataset->tahun }}</span>
</div> </div>
<div class="flex justify-between items-center py-2 border-b border-slate-50"> <div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Kategori</span>
<span class="text-sm font-bold text-slate-900">{{ @$dataset->tabelData->kategori ?? '-' }}</span>
</div>
{{-- <div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Organisasi</span> <span class="text-sm text-slate-500">Organisasi</span>
<span class="text-sm font-bold text-blue-600 underline">{{ $dataset->instansi->name }}</span> <span class="text-sm font-bold text-blue-600 underline">{{ $dataset->instansi->name }}</span>
</div> </div> --}}
{{-- <div class="flex justify-between items-center py-2 border-b border-slate-50"> {{-- <div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Dilihat</span> <span class="text-sm text-slate-500">Dilihat</span>
<span class="text-sm font-bold text-slate-900">1.240 Kali</span> <span class="text-sm font-bold text-slate-900">1.240 Kali</span>

View File

@ -1,106 +1,74 @@
@extends('layouts.app') @extends('layouts.appNew')
@section('css')
@endsection
@section('content') @section('content')
<section class="container relative pt-[150px] py-20 pb-0 px-5 flex flex-col gap-5"> <!-- Header / Breadcrumb -->
<div class="relative flex justify-between items-center content-center mb-10"> <header class="pt-32 pb-8 bg-white border-b border-slate-200">
<div> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h1 class="">Home / <a href="{{ url('dataset') }}">Dataset</a> / <span class="bold">{{ $dataset->name }}</span></h1> <nav class="flex mb-4 text-sm font-medium text-slate-500" aria-label="Breadcrumb">
</div> <ol class="flex items-center space-x-2">
</div> <li><a href="dataset.html" class="hover:text-blue-600 transition-colors">Dataset Tambahan</a></li>
</section> <li><i data-lucide="chevron-right" class="w-4 h-4 text-slate-300"></i></li>
<section class="container pb-10 pt-10 px-5"> <li class="text-slate-900 truncate max-w-[200px] md:max-w-none">{{ $dataset->name }}</li>
<div class="flex flex-col gap-6">
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div class="flex flex-col gap-3 items-center text-center w-1/4">
{{-- <img src="{{ asset('uploads/'.@$dataset->instansi->logo) }}" alt="" width="50" class=""> --}}
<img src="{{ asset('logodki.png') }}" alt="" width="50" class="">
<h1 class="font-bold">{{ $dataset->instansi->name }}</h1>
<a href="{{asset('uploads/'.$dataset->file)}}" class="rounded-full text-[12px] bg-success text-white px-2 py-1">Download <i class="ri-download-line"></i></a>
</div>
<div class="flex items-center justify-between w-3/4">
<div class="flex flex-col gap-3">
<div class="">
<h5 class="font-bold">{{ $dataset->name }}</h5>
</div>
<div>
<p>{{ $dataset->deskripsi }}</p>
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#103760] text-white px-2 py-1">{{$dataset->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#103760] text-white px-2 py-1">{{$dataset->template->name}}</span>
</div>
<div class="flex gap-1">
<span>Bagikan : </span>
<a href=""><i class="p-1 rounded-full bg-[#aaa] text-white ri-facebook-line"></i></a>
<a href=""><i class="p-1 rounded-full bg-[#aaa] text-white ri-whatsapp-line"></i></a>
<a href=""><i class="p-1 rounded-full bg-[#aaa] text-white ri-twitter-line"></i></a>
</div>
</div>
</div>
</div>
<?php
$data = json_decode($dataset->data);
?>
@if(@$data)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div style="overflow-x:auto; width:100%!important;">
<table id="table"
data-toggle="table"
data-search="false"
data-pagination="true"
data-side-pagination="server"
data-url="{{ url('dataset/Griddetail?id='.@$keyId) }}"
>
<thead>
<tr class="bg-primary-light text-primary">
@if (!empty($data))
@foreach ($data[0] as $k => $key)
<th data-field="{{$k}}" class="gridjs-td gridjs-th text-xs">{{ ucwords(str_replace('_', ' ', $k)) }}</th>
@endforeach
@endif
</tr>
</thead>
</table>
</div>
</div>
@endif
</ol>
</nav>
<div class="flex flex-col md:flex-row md:items-start justify-between gap-6">
<div class="max-w-3xl">
<div class="flex items-center space-x-3 mb-3">
{{-- <span class="bg-blue-100 text-blue-700 text-[10px] font-extrabold px-2 py-0.5 rounded uppercase">Udara</span> --}}
<span class="text-slate-400 text-xs flex items-center"><i data-lucide="calendar" class="w-3 h-3 mr-1"></i> Terbit: {{ date('d M Y',strtotime($dataset->created_at)) }}</span>
</div> </div>
</section> <h2 class="text-2xl md:text-3xl font-extrabold text-slate-900 tracking-tight leading-tight">{{ $dataset->name }}</h2>
<section class="relative bg-[#F0F0F0] "> <h2 class="mt-3 text-md text-blue-500 tracking-tight leading-tight">{{ $dataset->instansi->name }}</h2>
<div class="container px-10 py-10">
<div class="relative flex justify-between items-center content-center mb-10">
<div>
<h1 class="font-bold poppins-bold text-xl">Dataset Terbaru</h1>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
@foreach($lainnya as $dataSet)
<a href="{{ url('dataset-tambahan/detail/'.encode_id($dataSet->DatasetTambahanId)) }}" class="transition duration-300 ease-in-out hover:-translate-y-100 hover:scale-410">
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div class="flex flex-col gap-3 items-center text-center">
<div class="flex flex-col items-center gap-3">
<img src="{{ asset('logodki.png') }}" alt="" width="50" class="">
{{-- <img src="{{ asset('uploads/'.@$dataSet->instansi->logo) }}" alt="" width="50" class=""> --}}
<h1 class="font-bold">{{ $dataSet->instansi->name }}</h1>
</div>
<div class="">
<h5 class="font-bold">{{ $dataSet->name }}</h5>
</div>
<div>
<p>{{ substr($dataSet->deskripsi,0,50) }}</p>
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#E9811A] text-white px-2 py-1">{{$dataSet->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->template->name,0,25) }}...</span>
</div>
</div>
</div> </div>
<div class="flex gap-2">
<a href="{{url('opendata/dataset/download/'.encode_id(@$dataset->DatasetId))}}" class="flex-1 md:flex-none bg-blue-600 text-white px-6 py-3 rounded-xl font-bold hover:bg-blue-700 transition-all flex items-center justify-center shadow-lg shadow-blue-100">
<i data-lucide="download" class="w-5 h-5 mr-2"></i> Unduh Data
</a> </a>
@endforeach </div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10">
<div class="grid lg:grid-cols-3 gap-8">
<!-- Left Column: Details & Preview -->
<div class="lg:col-span-2 space-y-8">
<!-- Description Section -->
<section class="bg-white p-8 rounded-3xl border border-slate-200 shadow-sm">
<h3 class="text-lg font-bold mb-4 flex items-center text-slate-900">
<i data-lucide="info" class="w-5 h-5 mr-2 text-blue-600"></i> Deskripsi Dataset
</h3>
<p class="text-slate-600 leading-relaxed">
{{ $dataset->deskripsi }}
</p>
</section>
</div>
<!-- Right Column: Metadata & Format -->
<div class="space-y-6">
<!-- Metadata Card -->
<section class="bg-white p-6 rounded-3xl border border-slate-200 shadow-sm">
<h3 class="text-sm font-bold text-slate-900 uppercase tracking-widest mb-6 flex items-center"><i data-lucide="info" class="w-5 h-5 mr-2 text-blue-600"></i> Informasi Metadata</h3>
<div class="space-y-4">
<div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Tahun Data</span>
<span class="text-sm font-bold text-slate-900">{{ $dataset->tahun_data }}</span>
</div>
<div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Tahun Input Data</span>
<span class="text-sm font-bold text-slate-900">{{ $dataset->tahun }}</span>
</div>
<div class="flex justify-between items-center py-2 border-b border-slate-50">
<span class="text-sm text-slate-500">Kategori</span>
<span class="text-sm font-bold text-slate-900">{{ @$dataset->tabelData->kategori ?? '-' }}</span>
</div> </div>
</div> </div>
</section> </section>
</div>
</div>
</main>
@endsection @endsection

View File

@ -101,14 +101,15 @@
<h4 class="text-lg font-bold text-slate-900 mb-2">{{ $dataSet->name }}</h4> <h4 class="text-lg font-bold text-slate-900 mb-2">{{ $dataSet->name }}</h4>
<p class="text-sm text-slate-500 line-clamp-2 mb-4">{{ substr($dataSet->deskripsi,0,150) }}...</p> <p class="text-sm text-slate-500 line-clamp-2 mb-4">{{ substr($dataSet->deskripsi,0,150) }}...</p>
<div class="flex flex-wrap gap-2"> <div class="flex flex-wrap gap-2">
<span class="flex items-center bg-slate-100 text-slate-600 px-2 py-1 rounded text-[10px] font-bold">XLSX</span> <span class="flex items-center bg-slate-100 text-slate-600 px-2 py-1 rounded text-[10px] font-bold uppercase">{{ @explode('.',@$dataSet->file)[1] }}</span>
<span class="flex items-center bg-yellow-100 text-yellow-600 px-2 py-1 rounded text-[10px] font-bold uppercase">{{ @$dataSet->tabelData->kategori ?? '-' }}</span>
</div> </div>
</div> </div>
<div class="flex flex-row md:flex-col justify-end gap-2 md:w-32"> <div class="flex flex-row md:flex-col justify-end gap-2 md:w-32">
<a href="{{asset('uploads/'.$dataset->file)}}" class="flex-1 md:w-full bg-blue-600 text-white py-2 px-4 rounded-xl text-sm font-bold hover:bg-blue-700 transition-all flex items-center justify-center"> <a href="{{asset('uploads/'.@$dataSet->file)}}" class="flex-1 md:w-full bg-blue-600 text-white py-2 px-4 rounded-xl text-sm font-bold hover:bg-blue-700 transition-all flex items-center justify-center">
<i data-lucide="download" class="w-4 h-4 mr-2"></i> Unduh <i data-lucide="download" class="w-4 h-4 mr-2"></i> Unduh
</a> </a>
<a href="{{ url('dataset-tambahan/detail/'.encode_id($dataSet->DatasetId)) }}" class="flex-1 md:w-full border border-slate-200 text-slate-700 py-2 px-4 rounded-xl text-sm font-bold hover:bg-slate-50 transition-all flex items-center justify-center"> <a href="{{ url('dataset-tambahan/detail/'.encode_id($dataSet->DatasetTambahanId)) }}" class="flex-1 md:w-full border border-slate-200 text-slate-700 py-2 px-4 rounded-xl text-sm font-bold hover:bg-slate-50 transition-all flex items-center justify-center">
<i data-lucide="eye" class="w-4 h-4 mr-2"></i> Detail <i data-lucide="eye" class="w-4 h-4 mr-2"></i> Detail
</a> </a>
</div> </div>

View File

@ -5,7 +5,7 @@
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col md:flex-row md:items-center justify-between gap-6"> <div class="flex flex-col md:flex-row md:items-center justify-between gap-6">
<div> <div>
<h2 class="text-3xl font-extrabold text-slate-900 tracking-tight">Eksplorasi Dataset</h2> <h2 class="text-3xl font-extrabold text-slate-900 tracking-tight">Eksplorasi Dataset Utama</h2>
<p class="text-slate-600 mt-2">Temukan data mentah kinerja lingkungan hidup</p> <p class="text-slate-600 mt-2">Temukan data mentah kinerja lingkungan hidup</p>
</div> </div>
<div class="relative w-full md:w-96 hidden"> <div class="relative w-full md:w-96 hidden">
@ -102,6 +102,7 @@
<p class="text-sm text-slate-500 line-clamp-2 mb-4">{{ substr($dataSet->deskripsi,0,150) }}...</p> <p class="text-sm text-slate-500 line-clamp-2 mb-4">{{ substr($dataSet->deskripsi,0,150) }}...</p>
<div class="flex flex-wrap gap-2"> <div class="flex flex-wrap gap-2">
<span class="flex items-center bg-slate-100 text-slate-600 px-2 py-1 rounded text-[10px] font-bold">XLSX</span> <span class="flex items-center bg-slate-100 text-slate-600 px-2 py-1 rounded text-[10px] font-bold">XLSX</span>
<span class="flex items-center bg-yellow-100 text-yellow-600 px-2 py-1 rounded text-[10px] font-bold uppercase">{{ @$dataSet->tabelData->kategori ?? '-' }}</span>
</div> </div>
</div> </div>
<div class="flex flex-row md:flex-col justify-end gap-2 md:w-32"> <div class="flex flex-row md:flex-col justify-end gap-2 md:w-32">

View File

@ -81,7 +81,7 @@
</div> </div>
<div> <div>
<p class="text-xs text-slate-500 font-medium">Dataset Tambahan</p> <p class="text-xs text-slate-500 font-medium">Dataset Tambahan</p>
<p class="font-bold text-xl">{{ $count['resource'] }}</p> <p class="font-bold text-xl">{{ $count['dataset_tambahan'] }}</p>
</div> </div>
</div> </div>
{{-- <span class="text-[10px] font-bold px-2 py-1 rounded-md bg-blue-100 text-blue-700">Cukup</span> --}} {{-- <span class="text-[10px] font-bold px-2 py-1 rounded-md bg-blue-100 text-blue-700">Cukup</span> --}}
@ -155,8 +155,8 @@
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col md:flex-row justify-between items-end mb-12 gap-6"> <div class="flex flex-col md:flex-row justify-between items-end mb-12 gap-6">
<div class="max-w-xl"> <div class="max-w-xl">
<h3 class="text-3xl font-bold text-slate-900 mb-4 tracking-tight">Dokumen Publikasi</h3> <h3 class="text-3xl font-bold text-slate-900 mb-4 tracking-tight">Dataset Utama Terbaru</h3>
<p class="text-slate-600">Akses seluruh arsip Dokumen Informasi Kinerja Pengelolaan Lingkungan Hidup Daerah dari tahun ke tahun</p> <p class="text-slate-600">Akses seluruh arsip Dataset Kinerja Pengelolaan Lingkungan Hidup Daerah dari tahun ke tahun</p>
</div> </div>
{{-- <div class="flex space-x-2"> {{-- <div class="flex space-x-2">
<button class="year-filter px-4 py-2 text-sm font-semibold bg-blue-600 text-white rounded-lg" data-year="all">Semua Tahun</button> <button class="year-filter px-4 py-2 text-sm font-semibold bg-blue-600 text-white rounded-lg" data-year="all">Semua Tahun</button>

View File

@ -51,7 +51,7 @@
<!-- Desktop Menu --> <!-- Desktop Menu -->
<div class="hidden md:flex items-center space-x-8"> <div class="hidden md:flex items-center space-x-8">
<a href="{{ url('/') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Beranda</a> <a href="{{ url('/') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Beranda</a>
<a href="{{ url('dataset') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Dataset</a> <a href="{{ url('dataset') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Dataset Utama</a>
<a href="{{ url('dataset-tambahan') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Dataset Tambahan</a> <a href="{{ url('dataset-tambahan') }}" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Dataset Tambahan</a>
{{-- <a href="#" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Informasi</a> --}} {{-- <a href="#" class="font-medium text-slate-700 hover:text-blue-600 transition-colors">Informasi</a> --}}
<a href="{{ url('login') }}" class="flex items-center space-x-2 bg-blue-600 text-white px-5 py-2 rounded-xl font-semibold hover:bg-blue-700 transition-all shadow-lg shadow-blue-200"> <a href="{{ url('login') }}" class="flex items-center space-x-2 bg-blue-600 text-white px-5 py-2 rounded-xl font-semibold hover:bg-blue-700 transition-all shadow-lg shadow-blue-200">
@ -71,7 +71,7 @@
<!-- Mobile Menu --> <!-- Mobile Menu -->
<div id="mobile-menu" class="hidden md:hidden bg-white border-t border-slate-100 p-4 space-y-4 shadow-xl"> <div id="mobile-menu" class="hidden md:hidden bg-white border-t border-slate-100 p-4 space-y-4 shadow-xl">
<a href="{{ url('/') }}" class="block font-medium py-2">Beranda</a> <a href="{{ url('/') }}" class="block font-medium py-2">Beranda</a>
<a href="{{ url('dataset') }}" class="block font-medium py-2">Dataset</a> <a href="{{ url('dataset') }}" class="block font-medium py-2">Dataset Utama</a>
<a href="{{ url('dataset-tambahan') }}" class="block font-medium py-2">Dataset Tambahan</a> <a href="{{ url('dataset-tambahan') }}" class="block font-medium py-2">Dataset Tambahan</a>
<a href="{{ url('/login') }}" class="w-full bg-blue-600 text-white px-5 py-3 rounded-xl font-bold">Login</a> <a href="{{ url('/login') }}" class="w-full bg-blue-600 text-white px-5 py-3 rounded-xl font-bold">Login</a>
</div> </div>

View File

@ -49,10 +49,10 @@
<div class="flex gap-4"> <div class="flex gap-4">
<label class="mb-3 w-1/2 font-semibold required">Unggah Berkas</label> <label class="mb-3 w-1/2 font-semibold required">Unggah Berkas</label>
<div class="flex flex-col w-full justify-center items-start gap-2"> <div class="flex flex-col w-full justify-center items-start gap-2">
<input type="file" accept=".xls,.xlsx" value="{{@$item->file ? @$item->file : old('file')}}" name="file" class="p-2 border rounded w-full @error('file') is-invalid @enderror" placeholder="Masukan File Dataset" {{@$item->file ? '' : 'required'}}> <input type="file" accept=".pdf,.docx,.xls,.xlsx" value="{{@$item->file ? @$item->file : old('file')}}" name="file" class="p-2 border rounded w-full @error('file') is-invalid @enderror" placeholder="Masukan File Dataset" {{@$item->file ? '' : 'required'}}>
<small><i>Masukan Ekstensi File : .pdf,.xls,.xlsx</i></small> <small><i>Masukan Ekstensi File : .pdf,.docx,.xls,.xlsx</i></small>
@if(@$item->file) @if(@$item->file)
<a href="{{asset('uploads/'.$item->file)}}" class="btn bg-success text-white mt-3"><i class="ri-download-line"></i>&nbsp;Download File</a> <a href="{{asset('uploads/'.$item->file)}}" class="p-2 bg-emerald-500 rounded text-white mt-3"><i class="ri-download-line"></i>&nbsp;Download File</a>
@endif @endif
</div> </div>
@error('file') @error('file')

View File

@ -42,6 +42,7 @@
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="instansi">Nama Instansi</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="instansi">Nama Instansi</th>
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="name">Nama Dataset</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="name">Nama Dataset</th>
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="template">Sumber Data Terkait</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="template">Sumber Data Terkait</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="tahun">Tahun Sistem</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="tahun">Tahun Sistem</th>
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="created_at">Tanggal Input</th> <th class="text-[10px] border font-bold text-slate-900 text-center" data-field="created_at">Tanggal Input</th>
</tr> </tr>

View File

@ -2,60 +2,76 @@
@section('css') @section('css')
@endsection @endsection
@section('content') @section('content')
<div class="flex flex-col gap-6"> <div class="flex-1 overflow-y-auto p-8 custom-scrollbar">
<div class="card"> <div class="p-8 bg-white rounded-3xl border border-slate-200 shadow-sm overflow-hidden">
<div class="card-header"> <div class="flex justify-between items-center mb-5">
<div class="flex justify-between items-center"> <h5 class="text-lg text-slate-700 font-bold">Informasi Dataset</h5>
<h4 class="card-title">{{$title}}</h4> <a href="{{route($route.'.index')}}" class="bg-blue-500 rounded py-2 px-3 text-white flex items-center"><i data-lucide="arrow-left" class="w-4 h-4 mr-2"></i><span>Kembali</span></a>
</div> </div>
</div> <hr>
<div class="p-6"> <div class="grid lg:grid-cols-2 gap-3 mb-3 mt-5">
<div class="grid lg:grid-cols-2 gap-3 mb-3"> <div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="flex flex-between gap-3 bg-secondary/10 items-center p-2 rounded">
<div class="p-2"> <div class="p-2">
<i class="ri-building-4-line text-primary text-xl"></i> <i data-lucide="building" class="w-4 h-4 mr-2"></i>
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col">
<div class="text-sm"><b>Instansi</b></div> <div class="text-sm"><b>Instansi</b></div>
<div class="text-xs">{{$item->instansi->name}}</div> <div class="text-xs">{{$item->instansi->name}}</div>
</div> </div>
</div> </div>
<div class="flex flex-between gap-3 bg-secondary/10 items-center p-2 rounded"> <div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2"> <div class="p-2">
<i class="ri-database-2-line text-primary text-xl"></i> <i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col">
<div class="text-sm"><b>Sumber Data</b></div> <div class="text-sm"><b>Sumber Data</b></div>
<div class="text-xs">{{$item->template->name}}</div> <div class="text-xs">{{$item->tabelData->name}}</div>
</div> </div>
</div> </div>
<div class="flex flex-between gap-3 bg-secondary/10 items-center p-2 rounded"> <div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2"> <div class="p-2">
<i class="ri-database-2-line text-primary text-xl"></i> <i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col">
<div class="text-sm"><b>Nama Dataset</b></div> <div class="text-sm"><b>Nama Dataset</b></div>
<div class="text-xs">{{$item->name}}</div> <div class="text-xs">{{$item->name}}</div>
</div> </div>
</div> </div>
<div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2">
<i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div>
<div class="flex items-center gap-3">
<div class="text-sm"><b>File</b></div>
<div>
<a download href="{{url('uploads/'.@$item->file)}}" class="p-1 bg-blue-500 rounded text-white flex items-center"><i data-lucide="download" class="w-4 h-4 mr-2"></i>Download File</a>
</div>
</div>
</div>
<div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2">
<i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div>
<div class="flex flex-col">
<div class="text-sm"><b>Tahun Sistem SLHD</b></div>
<div class="text-xs">{{$item->tahun}}</div>
</div>
</div>
<div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2">
<i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div>
<div class="flex flex-col">
<div class="text-sm"><b>Tahun Data</b></div>
<div class="text-xs">{{@$item->tahun_data}}</div>
</div>
</div>
</div> </div>
<div class="grid lg-grid-cols-1 gap-3"> <div class="grid lg-grid-cols-1 gap-3">
<div class="flex flex-between gap-3 bg-secondary/10 items-center p-2 rounded"> <div class="flex flex-between gap-3 bg-gray-100 items-center p-2 rounded">
<div class="p-2"> <div class="p-2">
<i class="ri-database-2-line text-primary text-xl"></i> <i data-lucide="info" class="w-4 h-4 mr-2"></i>
</div>
<div class="flex flex-row gap-2">
<div class="text-sm">
<b>File</b>
</div>
<div>
<a href="{{asset('uploads/'.@$item->file)}}" class="p-1 bg-primary rounded text-white text-xs"><i class="ri-download-line"></i>&nbsp;Download File</a>
</div>
</div>
</div>
<div class="flex flex-between gap-3 bg-secondary/10 items-center p-2 rounded">
<div class="p-2">
<i class="ri-information-line text-primary text-xl"></i>
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col">
<div class="text-sm"><b>Deskripsi</b></div> <div class="text-sm"><b>Deskripsi</b></div>
@ -63,7 +79,35 @@
</div> </div>
</div> </div>
</div> </div>
@if(@$item->status == 0)
<hr class="mt-3">
<h5 class="text-xl font-bold mt-3">Form Verifikasi Dataset</h5>
<form action="{{ url('opendata/dataset/verifikasi/'.encode_id($item->DatasetId)) }}" method="POST">
{{ csrf_field() }}
<div class="mt-2">
<select name="verifikasi" class="w-full p-2 bg-white border" id="">
<option value="1">Verifikasi</option>
<option value="2">Tolak Verifikasi</option>
</select>
</div> </div>
<div class="mt-2">
<textarea name="catatan" class="w-full p-2 bg-white border" id="" cols="30" rows="10" placeholder="Masukan Catatan"></textarea>
</div>
<div class="mt-2">
<button class="p-2 bg-blue-500 rounded text-white">Simpan</button>
</div>
</form>
@endif
@if($item->status == '2')
<hr class="mt-3">
<h5 class="text-xl font-bold my-3">Catatan Verifikasi Dataset</h5>
@foreach ($catatan as $valCatatan)
<div class="flex flex-col gap-3 bg-gray-100 p-2 mb-2 rounded">
<div class="text-[10px]">{{$valCatatan->created_at}}</div>
<div class="text-sm">{{$valCatatan->catatan}}</div>
</div>
@endforeach
@endif
</div> </div>
</div> </div>
@endsection @endsection

View File

@ -42,7 +42,7 @@
<i data-lucide="database" class="w-4 h-4 mr-2"></i> <i data-lucide="database" class="w-4 h-4 mr-2"></i>
</div> </div>
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<div class="text-sm">File</div> <div class="text-sm"><b>File</b></div>
<div> <div>
<a href="{{url('opendata/dataset/download/'.encode_id(@$item->DatasetId))}}" class="p-1 bg-blue-500 rounded text-white flex items-center"><i data-lucide="download" class="w-4 h-4 mr-2"></i>Download File</a> <a href="{{url('opendata/dataset/download/'.encode_id(@$item->DatasetId))}}" class="p-1 bg-blue-500 rounded text-white flex items-center"><i data-lucide="download" class="w-4 h-4 mr-2"></i>Download File</a>
</div> </div>