update
parent
fc8e7d8b49
commit
47cb21e8c4
|
|
@ -36,8 +36,8 @@ class HomeController extends Controller
|
|||
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->count();
|
||||
$data['datasetTambahan'] = DatasetTambahan::orderBy('DatasetId','DESC')->count();
|
||||
}else{
|
||||
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->whereIn('instansi_id',[auth()->user()->ms_instansi_id])->count();
|
||||
$data['datasetTambahan'] = DatasetTambahan::whereIn('instansi_id',[auth()->user()->ms_instansi_id])->count();
|
||||
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->whereIn('instansi_id',[session('instansi_id')])->count();
|
||||
$data['datasetTambahan'] = DatasetTambahan::whereIn('instansi_id',[session('instansi_id')])->count();
|
||||
|
||||
}
|
||||
$data['instansi'] = Instansi::count();
|
||||
|
|
@ -56,12 +56,52 @@ class HomeController extends Controller
|
|||
return view($this->template.'.dataset',$data);
|
||||
}
|
||||
|
||||
function gridInstansiUtama(Request $request){
|
||||
$instansi = Instansi::where('MsInstansiId',session('instansi_id'))->first();
|
||||
$data = TabelData::whereIn('MsTabelDataId',json_decode($instansi->resource_data))->get();
|
||||
|
||||
$_data = [];
|
||||
foreach ($data as $key => $row) {
|
||||
//cek upload
|
||||
$status = '';
|
||||
$cek = Dataset::where('ms_tabel_data_id',$row->MsTabelDataId)->where('tahun',date('Y'))->count();
|
||||
if($cek > 0){
|
||||
$status = '<span class="bg-emerald-500 rounded w-100 p-1 text-[10px] text-white">Sudah Unggah</spa>';
|
||||
}else{
|
||||
$status = '<span class="bg-red-500 rounded w-100 p-1 text-[10px] text-white">Belum Unggah</spa>';
|
||||
}
|
||||
|
||||
$_data[] = [
|
||||
'no' => $key+1,
|
||||
'name' => 'Tabel '.@$row->nomor_tabel.' - '.@$row->name,
|
||||
'status' => @$status,
|
||||
];
|
||||
}
|
||||
|
||||
return response()->json($_data);
|
||||
}
|
||||
|
||||
function gridInstansiTambahan(Request $request){
|
||||
$data = DatasetTambahan::whereIn('ms_instansi_id',session('instansi_id'))->get();
|
||||
|
||||
$_data = [];
|
||||
foreach ($data as $key => $row) {
|
||||
|
||||
$_data[] = [
|
||||
'no' => $key+1,
|
||||
'name' => @$row->name,
|
||||
];
|
||||
}
|
||||
|
||||
return response()->json($_data);
|
||||
}
|
||||
|
||||
public function gridTabel(Request $request)
|
||||
{
|
||||
if((session('group_id') == 1) || (session('group_alias') == 'admin')){
|
||||
$data = Instansi::all();
|
||||
}else{
|
||||
$data = Instansi::where('MsInstansiId',auth()->user()->ms_instansi_id)->get();
|
||||
$data = Instansi::where('MsInstansiId',session('instansi_id'))->get();
|
||||
}
|
||||
// $data = User::with(['group'])->orderBy('id','DESC')->get();
|
||||
$_data = [];
|
||||
|
|
@ -75,7 +115,7 @@ class HomeController extends Controller
|
|||
$dataset = Dataset::whereIn('ms_tabel_data_id',$resource)->count();
|
||||
}
|
||||
$persentase = $countresource > 0 ? round(($dataset/$countresource)*100) : '0';
|
||||
$btn = '<a data-toggle="modal" data-target="modal" href="#" data-id="'.encode_id($row->MsInstansiId).'" class="p-2 rounded bg-blue-500 text-white">'.$dataset.'/'.$countresource.'</a>';
|
||||
$btn = '<a onclick="openModal()" href="#" data-id="'.encode_id($row->MsInstansiId).'" class="p-2 rounded bg-blue-500 text-white">'.$dataset.'/'.$countresource.'</a>';
|
||||
if($persentase == 0){
|
||||
$percent = '<span class="p-2 rounded bg-red-500 text-white">'.$persentase.'%</span>';
|
||||
}elseif($persentase > 0 && $persentase <= 50){
|
||||
|
|
@ -148,7 +188,7 @@ class HomeController extends Controller
|
|||
$data = TabelData::with(['dataset'])->where('show_dashboard',1)->get();
|
||||
}else{
|
||||
$data = TabelData::with(['dataset'])->whereHas('dataset',function($query){
|
||||
$query->where('instansi_id',auth()->user()->ms_instansi_id);
|
||||
$query->where('instansi_id',session('instansi_id'));
|
||||
})->where('show_dashboard',1)->get();
|
||||
}
|
||||
// $data = User::with(['group'])->orderBy('id','DESC')->get();
|
||||
|
|
@ -160,7 +200,7 @@ class HomeController extends Controller
|
|||
if((session('group_id') == 1) || (session('group_alias') == 'admin')){
|
||||
$action .= '<a href="'.url('dashboard/dataset/resource/'.encode_id($row->MsTemplateId)) .'" class="btn w-full bg-success text-white">Lihat Data</a>';
|
||||
}else{
|
||||
$action .= '<a href="'.url('dashboard/dataset/resource/instansi/'.encode_id(auth()->user()->ms_instansi_id).'/'.encode_id($row->MsTemplateId)).'" class="btn w-full bg-success text-white">Lihat Data</a>';
|
||||
$action .= '<a href="'.url('dashboard/dataset/resource/instansi/'.encode_id(session('instansi_id')).'/'.encode_id($row->MsTemplateId)).'" class="btn w-full bg-success text-white">Lihat Data</a>';
|
||||
}
|
||||
|
||||
$_data[] = [
|
||||
|
|
|
|||
|
|
@ -47,143 +47,161 @@
|
|||
</div> --}}
|
||||
</div>
|
||||
|
||||
<!-- Datatable Section -->
|
||||
<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>
|
||||
<h3 class="text-lg font-bold text-slate-900">Mapping Dataset SLHD - Tahun {{date('Y')}}</h3>
|
||||
{{-- <p class="text-xs text-slate-500 font-medium">Pengelolaan data masuk dari berbagai stasiun pemantauan.</p> --}}
|
||||
@if((session('group_id') == 1) || (session('group_alias') == 'admin'))
|
||||
<!-- Datatable Section -->
|
||||
<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>
|
||||
<h3 class="text-lg font-bold text-slate-900">Mapping Dataset SLHD - Tahun {{date('Y')}}</h3>
|
||||
{{-- <p class="text-xs text-slate-500 font-medium">Pengelolaan data masuk dari berbagai stasiun pemantauan.</p> --}}
|
||||
</div>
|
||||
{{-- <div class="flex items-center space-x-2">
|
||||
<button class="p-2 border border-slate-200 rounded-xl hover:bg-slate-50 transition-colors flex items-center text-sm font-semibold text-slate-600">
|
||||
<i data-lucide="download-cloud" class="w-4 h-4 mr-2"></i> Ekspor
|
||||
</button>
|
||||
<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
|
||||
</button>
|
||||
</div> --}}
|
||||
</div>
|
||||
{{-- <div class="flex items-center space-x-2">
|
||||
<button class="p-2 border border-slate-200 rounded-xl hover:bg-slate-50 transition-colors flex items-center text-sm font-semibold text-slate-600">
|
||||
<i data-lucide="download-cloud" class="w-4 h-4 mr-2"></i> Ekspor
|
||||
</button>
|
||||
<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
|
||||
</button>
|
||||
</div> --}}
|
||||
</div>
|
||||
|
||||
<div class="overflow-x-auto p-8">
|
||||
<table class="w-full border text-left border-collapse"
|
||||
data-search="true"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="true"
|
||||
data-url="{{route($route.'.gridTabel')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="10"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="bg-slate-100 border-b border-slate-100">
|
||||
<tr>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center" data-width="10" data-field="no">No</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center" data-field="name">Instansi</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center" data-width="20" data-field="dataset">Dataset</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center" data-width="20" data-field="persentase">Persentase</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<table class="w-full text-left border-collapse hidden">
|
||||
<thead class="bg-slate-50/50 border-b border-slate-100">
|
||||
<div class="overflow-x-auto p-8">
|
||||
|
||||
<table class="w-full border text-left border-collapse"
|
||||
data-search="true"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="true"
|
||||
data-url="{{route($route.'.gridTabel')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="10"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="bg-slate-100 border-b border-slate-100">
|
||||
<tr>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center">Judul Dataset</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center">Kategori</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center">Terakhir Update</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center">Status</th>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center text-right">Aksi</th>
|
||||
<th class="border font-bold text-slate-900 text-center" data-width="10" data-field="no">No</th>
|
||||
<th class="border font-bold text-slate-900 text-center" data-field="name">Instansi</th>
|
||||
<th class="border font-bold text-slate-900 text-center" data-width="20" data-field="dataset">Dataset</th>
|
||||
<th class="border font-bold text-slate-900 text-center" data-width="20" data-field="persentase">Persentase</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-slate-100">
|
||||
<tr class="hover:bg-slate-50 transition-colors group">
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<div class="w-8 h-8 rounded bg-blue-100 flex items-center justify-center text-blue-600 mr-3">
|
||||
<i data-lucide="file-spreadsheet" class="w-4 h-4"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-bold text-slate-900">Kualitas Air Sungai Jakarta 2024</p>
|
||||
<p class="text-[10px] text-slate-400 font-medium">CSV, XLS • 12.5 MB</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="text-xs text-slate-600 font-semibold bg-slate-100 px-2 py-1 rounded">Air Limbah</span>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-xs text-slate-500 font-medium">12 Feb 2026</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<span class="w-2 h-2 bg-green-500 rounded-full mr-2"></span>
|
||||
<span class="text-[10px] font-bold text-green-700 uppercase">Terverifikasi</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-right">
|
||||
<button class="text-slate-400 hover:text-blue-600 p-1 transition-colors"><i data-lucide="more-vertical" class="w-5 h-5"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-slate-50 transition-colors group">
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<div class="w-8 h-8 rounded bg-orange-100 flex items-center justify-center text-orange-600 mr-3">
|
||||
<i data-lucide="trash-2" class="w-4 h-4"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-bold text-slate-900">Volume Sampah Per Kecamatan</p>
|
||||
<p class="text-[10px] text-slate-400 font-medium">PDF, XLS • 8.2 MB</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="text-xs text-slate-600 font-semibold bg-slate-100 px-2 py-1 rounded">Persampahan</span>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-xs text-slate-500 font-medium">08 Feb 2026</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<span class="w-2 h-2 bg-yellow-500 rounded-full mr-2"></span>
|
||||
<span class="text-[10px] font-bold text-yellow-700 uppercase">Draft</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-right">
|
||||
<button class="text-slate-400 hover:text-blue-600 p-1 transition-colors"><i data-lucide="more-vertical" class="w-5 h-5"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-slate-50 transition-colors group">
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<div class="w-8 h-8 rounded bg-purple-100 flex items-center justify-center text-purple-600 mr-3">
|
||||
<i data-lucide="wind" class="w-4 h-4"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm font-bold text-slate-900">ISPU Real-time Station</p>
|
||||
<p class="text-[10px] text-slate-400 font-medium">JSON API • Live Stream</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="text-xs text-slate-600 font-semibold bg-slate-100 px-2 py-1 rounded">Udara</span>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-xs text-slate-500 font-medium">Hari ini</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex items-center">
|
||||
<span class="w-2 h-2 bg-blue-500 rounded-full mr-2 animate-pulse"></span>
|
||||
<span class="text-[10px] font-bold text-blue-700 uppercase">Otomatis</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-right">
|
||||
<button class="text-slate-400 hover:text-blue-600 p-1 transition-colors"><i data-lucide="more-vertical" class="w-5 h-5"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<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>
|
||||
<h3 class="text-lg font-bold text-slate-900">Dataset Utama Tahun {{date('Y')}}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overflow-x-auto p-8">
|
||||
|
||||
<table class="w-full border"
|
||||
data-search="false"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="false"
|
||||
data-url="{{route($route.'.gridInstansiUtama')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="10"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="bg-slate-100 border-b border-slate-100">
|
||||
<tr>
|
||||
<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>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
<h3 class="text-lg font-bold text-slate-900">Dataset Tambahan Tahun {{date('Y')}}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="overflow-x-auto p-8">
|
||||
|
||||
<table class="w-full border text-left border-collapse"
|
||||
data-search="false"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="false"
|
||||
data-url="{{route($route.'.gridInstansiTambahan')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="10"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="bg-slate-100 border-b border-slate-100">
|
||||
<tr>
|
||||
<th class="text-[10px] border font-bold text-slate-900 text-center" data-width="20" data-field="dataset">Dataset</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div id="modal">
|
||||
<div id="modal" class="fixed inset-0 bg-black/50 hidden items-center justify-center z-50">
|
||||
|
||||
</div>
|
||||
<!-- Modal Box -->
|
||||
<div class="bg-white w-full max-w-4xl rounded-2xl shadow-2xl p-6 relative animate-scale">
|
||||
|
||||
<!-- Close Button -->
|
||||
<button
|
||||
onclick="closeModal()"
|
||||
class="absolute top-3 right-3 text-gray-400 hover:text-gray-600 text-xl">
|
||||
×
|
||||
</button>
|
||||
|
||||
<h2 class="text-xl font-bold mb-4">Tabel Data Dirjen Bina Marga</h2>
|
||||
<table class="w-full border text-left border-collapse">
|
||||
<thead class="bg-slate-100 border-b border-slate-100">
|
||||
<tr>
|
||||
<th class="p-2 border font-bold text-slate-900 text-center" data-field="name">No</th>
|
||||
<th class="p-2 border font-bold text-slate-900 text-center" data-field="name">Dataset</th>
|
||||
<th class="p-2 border font-bold text-slate-900 text-center" data-field="name">Tanggal Input</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="p-2 border text-slate-900 text-center" data-field="name">1</td>
|
||||
<td class="p-2 border text-slate-900 text-center" data-field="name">Tes</td>
|
||||
<td class="p-2 border text-slate-900 text-center" data-field="name">2</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@section('js')
|
||||
<script>
|
||||
function openModal() {
|
||||
document.getElementById('modal').classList.remove('hidden');
|
||||
document.getElementById('modal').classList.add('flex');
|
||||
}
|
||||
|
||||
function closeModal() {
|
||||
document.getElementById('modal').classList.remove('flex');
|
||||
document.getElementById('modal').classList.add('hidden');
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
<hr>
|
||||
<div class="flex gap-4 mt-5">
|
||||
<label class="mb-3 w-1/2 font-semibold required">Instansi</label>
|
||||
<select name="instansi_id" required class="p-2 border rounded w-full instansi_id select2 @error('instansi_id') is-invalid @enderror" id="">
|
||||
<select name="instansi_id" required class="p-2 border rounded w-full instansi_id select2 @error('instansi_id') is-invalid @enderror" id="instansi_id">
|
||||
<option value="">-</option>
|
||||
@foreach($instansi as $dataInstansi)
|
||||
<option {{@$item->instansi_id == $dataInstansi->MsInstansiId ? 'selected' : ''}} value="{{encode_id($dataInstansi->MsInstansiId)}}">{{$dataInstansi->name}}</option>
|
||||
|
|
@ -22,21 +22,25 @@
|
|||
</div>
|
||||
<div class="flex gap-4">
|
||||
<label class="mb-3 w-1/2 font-semibold required">Sumber Data Terkait</label>
|
||||
<select name="template_id" required class="p-2 border rounded w-full template_id select2 @error('template_id') is-invalid @enderror" id="">
|
||||
<option value="">-</option>
|
||||
@foreach($template as $dataTemplate)
|
||||
<div class="flex flex-col w-full justify-center items-start gap-2">
|
||||
<select name="template_id" required class="p-2 border rounded w-full template_id select2 @error('template_id') is-invalid @enderror" id="template_id">
|
||||
<option value="">-- Pilih Sumber Data --</option>
|
||||
{{-- @foreach($template as $dataTemplate)
|
||||
<option {{@$item->template_id == $dataTemplate->MsTemplateId ? 'selected' : ''}} data-template="{{asset($dataTemplate->template_url)}}" value="{{encode_id($dataTemplate->MsTemplateId)}}">Tabel {{$dataTemplate->nomor_tabel}} - {{$dataTemplate->name}}</option>
|
||||
@endforeach
|
||||
@endforeach --}}
|
||||
</select>
|
||||
<a href="{{ url('opendata/dataset/generateTemplate/'.encode_id(@$item->ms_tabel_data_id)); }}" class="p-2 bg-emerald-500 btnDownload text-white rounded flex gap-2 items-center"><i data-lucide="download" class="w-4 h-4 mr-2"></i><span>Download Template Excel</span></a>
|
||||
</div>
|
||||
@error('template_id')
|
||||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
<h5 class="text-lg text-slate-700 font-bold">Informasi Dataset</h5>
|
||||
<hr>
|
||||
<div class="flex gap-4 mt-5">
|
||||
<label class="mb-3 w-1/2 font-semibold required">Nama Dataset</label>
|
||||
<input type="text" value="{{@$item->name ? @$item->name : old('name')}}" name="name" class="p-2 border rounded w-full @error('name') is-invalid @enderror" placeholder="Masukan Nama Dataset" required>
|
||||
<input type="text" value="{{@$item->name ? @$item->name : old('name')}}" name="name" class="p-2 border rounded w-full nama_dataset @error('name') is-invalid @enderror" placeholder="Masukan Nama Dataset" required>
|
||||
@error('name')
|
||||
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
|
||||
@enderror
|
||||
|
|
@ -98,79 +102,78 @@
|
|||
@endsection
|
||||
@section('js')
|
||||
<script>
|
||||
|
||||
const input = document.getElementById('tag-input');
|
||||
const container = document.getElementById('tag-container');
|
||||
|
||||
input.addEventListener('keydown', function (e) {
|
||||
if (e.key === 'Enter' && this.value.trim() !== '') {
|
||||
e.preventDefault();
|
||||
const tagText = this.value.trim();
|
||||
|
||||
// Buat tag baru
|
||||
const tag = document.createElement('span');
|
||||
tag.className = 'inline-flex items-center px-2 py-1 bg-primary text-white text-sm rounded';
|
||||
tag.innerHTML = `${tagText} <button type="button" class="ml-1 text-blue-500 hover:text-red-600">×</button>`;
|
||||
|
||||
// Hidden input untuk dikirim ke server
|
||||
const hiddenInput = document.createElement('input');
|
||||
hiddenInput.type = 'hidden';
|
||||
hiddenInput.name = 'tags[]';
|
||||
hiddenInput.value = tagText;
|
||||
|
||||
// Tempelkan ke tag
|
||||
tag.appendChild(hiddenInput);
|
||||
|
||||
// Tambahkan tag ke container sebelum input
|
||||
container.insertBefore(tag, input);
|
||||
|
||||
// Reset input
|
||||
this.value = '';
|
||||
|
||||
// Hapus tag saat tombol × ditekan
|
||||
tag.querySelector('button').addEventListener('click', () => tag.remove());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$('.template_id').on('change',function(){
|
||||
var template = $(this).find(':selected').attr('data-template');
|
||||
var name = $(this).find(':selected').attr('data-name');
|
||||
$('.btnDownload').attr('href',template);
|
||||
$('.nama_dataset').val(name);
|
||||
});
|
||||
$('#template_default').on('change',function(){
|
||||
var instansi_id = $('.instansi_id').find(':selected').val();
|
||||
var val = $(this).find(':selected').val();
|
||||
var template = $('.template_id').find(':selected').attr('data-template');
|
||||
if(instansi_id == ''){
|
||||
toastr.error("Data instansi_id Belum Dipilih", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
|
||||
$('#template_default').val('');
|
||||
}else{
|
||||
if(val == 1){
|
||||
$('.btnDownload').attr('href',template);
|
||||
$('.btnDownload').removeClass('hidden');
|
||||
}else{
|
||||
$('.btnDownload').attr('href',"#");
|
||||
$('.btnDownload').addClass('hidden');
|
||||
}
|
||||
function clear(elementId) {
|
||||
$('#' + elementId).empty();
|
||||
$('#' + elementId).select2();
|
||||
}
|
||||
$('select').on("select2:selecting", function(e) {
|
||||
var selectorOrigin = this.id;
|
||||
var id = e.params.args.data.id;
|
||||
|
||||
|
||||
if(selectorOrigin=='instansi_id'){
|
||||
$('#loading-spinner').show();
|
||||
clear('template_id');
|
||||
selector = 'template_id';
|
||||
url_to = 'getResourceData';
|
||||
getSelect(id, selector, url_to);
|
||||
}
|
||||
});
|
||||
$(document).ready(function() {
|
||||
$('.numberInput').on('input', function() {
|
||||
this.value = this.value.replace(/[^0-9]/g, ''); // Hanya angka 0-9
|
||||
});
|
||||
$('#togglePassword').on('click', function() {
|
||||
let passwordField = $('#password');
|
||||
let icon = $(this).find('i');
|
||||
|
||||
// Cek apakah input saat ini bertipe password
|
||||
if (passwordField.attr('type') === 'password') {
|
||||
passwordField.attr('type', 'text'); // Ubah ke teks
|
||||
icon.removeClass('fa-eye').addClass('fa-eye-slash'); // Ganti ikon
|
||||
} else {
|
||||
passwordField.attr('type', 'password'); // Ubah ke password
|
||||
icon.removeClass('fa-eye-slash').addClass('fa-eye'); // Kembalikan ikon
|
||||
function getSelect(id, selectTo, urlTo, selected = "") {
|
||||
id = id;
|
||||
var base_url = "{{url('/')}}";
|
||||
//alert(id);
|
||||
destino = "#" + selectTo;
|
||||
console.log(id);
|
||||
valor = $('#' + id).find(":selected").val();
|
||||
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: base_url + '/' + urlTo,
|
||||
data: {
|
||||
id: id
|
||||
}
|
||||
})
|
||||
.done(function(msg) {
|
||||
obj = msg.data;
|
||||
|
||||
if (obj.length > 0) {
|
||||
//Clear the current options
|
||||
$(destino).empty();
|
||||
|
||||
if(selectTo=='template_id'){
|
||||
$(destino).append('<option value="">-Pilih Sumber Data-</option>').select2("val", "0");
|
||||
|
||||
$.each(obj, function(index) {
|
||||
value = obj[index].id;
|
||||
text = obj[index].name;
|
||||
text2 = obj[index].name2;
|
||||
excel = obj[index].excel;
|
||||
$(destino).append('<option data-name="'+text2+'" data-template="'+excel+'" value=' + value + '>' + text + '</option>');
|
||||
});
|
||||
console.log(selected)
|
||||
if (selected) {
|
||||
$(destino).val(selected).trigger('change');
|
||||
selected = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
if(selectTo=='template_id'){
|
||||
$(destino).empty().append('<option value="0">-Pilih Sumber Data-</option>').select2("val", "0");
|
||||
}
|
||||
}
|
||||
$('#loading-spinner').hide();
|
||||
});
|
||||
});
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -27,6 +27,8 @@ Route::name('dashboard.')->prefix('dashboard')->group(function () {
|
|||
Route::get('/grid',[HomeController::class,'grid'])->name('grid');
|
||||
Route::get('/grid/tabel',[HomeController::class,'gridTabel'])->name('gridTabel');
|
||||
Route::get('/gridResource',[HomeController::class,'gridResource'])->name('gridResource');
|
||||
Route::get('/gridInstansiUtama',[HomeController::class,'gridInstansiUtama'])->name('gridInstansiUtama');
|
||||
Route::get('/gridInstansiTambahan',[HomeController::class,'gridInstansiTambahan'])->name('gridInstansiTambahan');
|
||||
Route::get('/datasetGrid/{alias}',[HomeController::class,'datasetGrid'])->name('datasetGrid');
|
||||
Route::get('/api/chart/{template_id}/{instansi_id}',[HomeController::class,'apiChart'])->name('apiChart');
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue