main
Ilham Wara Nugroho 2025-10-21 11:04:09 +07:00
parent f19ab0def1
commit 324a7f8768
4 changed files with 102 additions and 7 deletions

View File

@ -4,12 +4,38 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\Master\Instansi; use App\Models\Master\Instansi;
use App\Models\Master\Template;
use App\Models\Dataset; use App\Models\Dataset;
use App\Models\Dataset\DatasetTable45; use App\Models\Dataset\DatasetTable45;
use App\Models\Dataset\DatasetTable47; use App\Models\Dataset\DatasetTable47;
class AjaxController extends Controller class AjaxController extends Controller
{ {
function getResourceData(Request $request){
$_data = [];
$keyId = decode_id($request->id);
$instansi = Instansi::find($keyId);
$resource = json_decode($instansi->resource_data);
$data = Template::whereIn('MsTemplateId',$resource)->count();
if(@$data != 0){
$data = Template::whereIn('MsTemplateId',$resource)->get();
}else{
$data = Template::all();
}
foreach ($data as $key => $value) {
$filename = pathinfo($value->template_url, PATHINFO_FILENAME);
$_data[$key]['id'] = encode_id($value->MsTemplateId);
$_data[$key]['name'] = $filename.' - '.$value->name;
$_data[$key]['excel'] = asset($value->template_url);
}
return response()->json(['data' => $_data,'status' => true]);
}
function getInstansi($type){ function getInstansi($type){
$data = []; $data = [];

View File

@ -72,7 +72,7 @@
<?php <?php
$filename = pathinfo($dataTemplate->template_url, PATHINFO_FILENAME); $filename = pathinfo($dataTemplate->template_url, PATHINFO_FILENAME);
?> ?>
<option {{ in_array(encode_id($dataTemplate->MsTemplateId), $selectedResources) ? 'selected' : '' }} value="{{encode_id($dataTemplate->MsTemplateId)}}">{{$filename}} - {{$dataTemplate->name}}</option> <option {{ in_array($dataTemplate->MsTemplateId, $selectedResources) ? 'selected' : '' }} value="{{$dataTemplate->MsTemplateId}}">{{$filename}} - {{$dataTemplate->name}}</option>
@endforeach @endforeach
</select> </select>
@error('resource_data') @error('resource_data')

View File

@ -19,7 +19,7 @@
<div class="grid lg:grid-cols-1 gap-3"> <div class="grid lg:grid-cols-1 gap-3">
<div class=""> <div class="">
<label class="mb-3 required">Instansi</label> <label class="mb-3 required">Instansi</label>
<select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id=""> <select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="instansi_id">
<option value="">-</option> <option value="">-</option>
@foreach($instansi as $dataInstansi) @foreach($instansi as $dataInstansi)
<option {{@$item->instansi_id == $dataInstansi->MsInstansiId ? 'selected' : ''}} value="{{encode_id($dataInstansi->MsInstansiId)}}">{{$dataInstansi->name}}</option> <option {{@$item->instansi_id == $dataInstansi->MsInstansiId ? 'selected' : ''}} value="{{encode_id($dataInstansi->MsInstansiId)}}">{{$dataInstansi->name}}</option>
@ -31,14 +31,14 @@
</div> </div>
<div class=""> <div class="">
<label class="mb-3 required">Resource Data</label> <label class="mb-3 required">Resource Data</label>
<select name="template_id" required class="form-input template_id select2 @error('template_id') is-invalid @enderror" id=""> <select name="template_id" required class="form-input template_id select2 @error('template_id') is-invalid @enderror" id="template_id">
<option value="">-</option> {{-- <option value="">-</option> --}}
@foreach($template as $dataTemplate) {{-- @foreach($template as $dataTemplate)
<?php <?php
$filename = pathinfo($dataTemplate->template_url, PATHINFO_FILENAME); // $filename = pathinfo($dataTemplate->template_url, PATHINFO_FILENAME);
?> ?>
<option {{@$item->template_id == $dataTemplate->MsTemplateId ? 'selected' : ''}} data-template="{{asset($dataTemplate->template_url)}}" value="{{encode_id($dataTemplate->MsTemplateId)}}">{{ $filename }} - {{$dataTemplate->name}}</option> <option {{@$item->template_id == $dataTemplate->MsTemplateId ? 'selected' : ''}} data-template="{{asset($dataTemplate->template_url)}}" value="{{encode_id($dataTemplate->MsTemplateId)}}">{{ $filename }} - {{$dataTemplate->name}}</option>
@endforeach @endforeach --}}
</select> </select>
@error('template_id') @error('template_id')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span> <span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@ -99,6 +99,74 @@
</div> </div>
@endsection @endsection
@section('js') @section('js')
<script>
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);
}
});
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 RESOURCE DATA-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
excel = obj[index].excel;
$(destino).append('<option 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 RESOURCE DATA-</option>').select2("val", "0");
}
}
$('#loading-spinner').hide();
});
return false;
}
</script>
<script> <script>
const input = document.getElementById('tag-input'); const input = document.getElementById('tag-input');

View File

@ -15,6 +15,7 @@ use App\Http\Controllers\AjaxController;
Route::get('getPenduduk/{tahun}',[AjaxController::class,'getPenduduk'])->name('getPenduduk'); Route::get('getPenduduk/{tahun}',[AjaxController::class,'getPenduduk'])->name('getPenduduk');
Route::get('getTimbulan/{tahun}',[AjaxController::class,'getTimbulan'])->name('getTimbulan'); Route::get('getTimbulan/{tahun}',[AjaxController::class,'getTimbulan'])->name('getTimbulan');
Route::get('getResourceData',[AjaxController::class,'getResourceData'])->name('getResourceData');
Route::name('dashboard.')->prefix('dashboard')->group(function () { Route::name('dashboard.')->prefix('dashboard')->group(function () {
Route::get('/',[HomeController::class,'dashboard'])->name('dashboard'); Route::get('/',[HomeController::class,'dashboard'])->name('dashboard');