Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions catatan_rilis.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Terimakasih [isi disini] yang telah berkontribusi langsung mengembangkan aplikas
3. [#1520](https://github.com/OpenSID/OpenDK/issues/1520) Perbaikan Sorting tanggal terbit artikel tidak berjalan dengan semestinya
4. [#1542](https://github.com/OpenSID/OpenDK/issues/1542) Perbaikan tampilan sumber dana di pembagunan
5. [#1545](https://github.com/OpenSID/OpenDK/issues/1545) Perbaikan Sort, search , pagination, dan filter desa tidak berfungsi di menu data -> pembangunan
6. [#1546](https://github.com/OpenSID/OpenDK/issues/1546) Perbaikan Sort, search , pagination, dan filter desa tidak berfungsi di menu data -> program bantuan

#### TEKNIS

Expand Down
98 changes: 33 additions & 65 deletions resources/views/data/program_bantuan/gabungan/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,7 @@
</a>
</div>
<div class="box-body">
<div class="row">
<div class="col-sm-3">
<label>Desa</label>
<select class="form-control" id="list_desa">
<option value="">Semua Desa</option>
@foreach ($list_desa as $desa)
<option value="{{ $desa->kode_desa }}">{{ $desa->nama_desa }}</option>
@endforeach
</select>
</div>
</div>
@include('layouts.fragments.list-desa')
<hr>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable" id="program-table">
Expand All @@ -60,37 +50,6 @@
@push('scripts')
<script type="text/javascript">
$(document).ready(function() {
function loadDesa() {
$.ajax({
url: `{{ $settings['api_server_database_gabungan'] ?? '' }}{{ '/api/v1/opendk/desa-datatable/' . str_replace('.', '', $profil->kecamatan_id) }}`,
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": `Bearer {{ $settings['api_key_database_gabungan'] ?? '' }}`,
},
success: function(response) {
// Bersihkan select box
$('#list_desa').empty().append(
'<option value="">Semua {{ config('setting.sebutan_desa') }}</option>');

// Tambahkan data desa ke select box
response.data.forEach(desa => {
$('#list_desa').append(
`<option value="${desa.attributes.kode_desa}">${desa.attributes.nama_desa}</option>`
);
});
},
error: function(xhr, status, error) {
console.error("Gagal memuat daftar desa:", error);
}
});
}

// Panggil fungsi loadDesa untuk memuat data saat halaman dimuat
loadDesa();

// Inisialisasi Select2 untuk dropdown desa
$('#list_desa').select2();

// Konfigurasi DataTables
Expand All @@ -103,64 +62,68 @@ function loadDesa() {
'filter[kode_kecamatan]' => str_replace('.', '', $profil->kecamatan_id),
]) }}`,
headers: {
"Accept": "application/ld+json",
"Content-Type": "application/json; charset=utf-8",
"Authorization": `Bearer {{ $settings['api_key_database_gabungan'] ?? '' }}`
},
method: 'POST',
data: function(row) {
const desaId = $('#list_desa').val();
var selectedDesa = $('#list_desa').val();
var searchValue = row.search.value;

return {
"page[size]": row.length,
"page[number]": (row.start / row.length) + 1,
"filter[kode_desa]": desaId || '',
"filter[search]": row.search.value,
"fields[program]": "*",
"filter[search]": searchValue,
"filter[kode_desa]": selectedDesa == 'Semua' ? '' : selectedDesa,
"sort": (row.order[0]?.dir === "asc" ? "" : "-") + row.columns[row.order[0]
?.column]?.name,
?.column]
?.name,
};
},
dataSrc: function(json) {
json.recordsTotal = json.meta.pagination.total;
json.recordsFiltered = json.meta.pagination.total;

return json.data.map(item => ({
aksi: `<a href="{{ url('data/program-bantuan/show') }}/${item.id}/${item.attributes.kode_desa}/${item.attributes.nama}" class="btn btn-primary btn-sm">Detail</a>`,
nama: item.attributes.nama,
desa: item.attributes.desa || 'N/A',
masa_berlaku: item.attributes.masa_berlaku || '-',
nama_sasaran: item.attributes.nama_sasaran || '-'
}));
return json.data;
},
},
columns: [{
data: 'aksi',
data: function(data) {
return `<a href="{{ url('data/program-bantuan/show') }}/${data.id}/${data.attributes.kode_desa}/${data.attributes.nama}" class="btn btn-primary btn-sm">Detail</a>`;
},
name: 'aksi',
orderable: false,
searchable: false,
class: 'text-center'
},
{
data: 'nama',
data: 'attributes.nama',
name: 'nama'
},
{
data: 'desa',
data: 'attributes.desa',
name: 'desa',
orderable: false,
searchable: false
searchable: false,
render: function(data) {
return data || 'N/A';
}
},
{
data: 'masa_berlaku',
data: 'attributes.masa_berlaku',
name: 'masa_berlaku',
orderable: false,
searchable: false
searchable: false,
render: function(data) {
return data || '-';
}
},
{
data: 'nama_sasaran',
data: 'attributes.nama_sasaran',
name: 'nama_sasaran',
orderable: false,
searchable: false
searchable: false,
render: function(data) {
return data || '-';
}
},
],
order: [
Expand Down Expand Up @@ -227,6 +190,10 @@ class: 'text-center'
var kode_kecamatan = "{{ str_replace('.', '', config('profil.kecamatan_id')) }}";
urlParams.append('kode_kecamatan', kode_kecamatan);

// kirim kode_desa dari list_desa β€” handle sentinel 'Semua'
var kode_desa = $('#list_desa').val();
urlParams.append('kode_desa', kode_desa == 'Semua' ? '' : kode_desa);

// Make fetch request
const response = await fetch(downloadUrl, {
method: 'POST',
Expand Down Expand Up @@ -303,4 +270,5 @@ class: 'text-center'
}
});
</script>
@include('forms.datatable-vertical')
@endpush