Skip to content

Commit 35bac97

Browse files
authored
Merge pull request #805 from OpenSID/dev-798
Tambahkan kolom nama desa pada beberapa halaman pendidikan di OpenKab
2 parents 17cbcb1 + 160252e commit 35bac97

5 files changed

Lines changed: 189 additions & 96 deletions

File tree

app/Http/Controllers/DataPokokController.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ public function pendidikan()
6868
return view('data_pokok.pendidikan.index');
6969
}
7070

71+
public function cetakPendidikan(Request $request)
72+
{
73+
return view('data_pokok.pendidikan.cetak', ['filter' => $request->getQueryString()]);
74+
}
75+
7176
public function ketenagakerjaan()
7277
{
7378
$title = 'Data Pekerjaan dan Pelatihan';

catatan_rilis.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Di rilis ini, versi 2508.0.0 berisi penambahan dan perbaikan yang diminta penggu
99
5. [#796](https://github.com/OpenSID/OpenKab/issues/796) Penambahan kolom nama desa pada halaman menu bantuan OpenKab.
1010
6. [#799](https://github.com/OpenSID/OpenKab/issues/799) Penambahan kolom nama desa pada beberapa halaman kesehatan di OpenKab.
1111
7. [#797](https://github.com/OpenSID/OpenKab/issues/797) Penambahan kolom nama desa pada halaman ketenagakerjaan di OpenKab.
12+
8. [#798](https://github.com/OpenSID/OpenKab/issues/798) Penambahan kolom nama desa pada beberapa halaman pendidikan di OpenKab.
13+
9. [#798](https://github.com/OpenSID/OpenKab/issues/798) Penambahan kolom nama desa pada beberapa halaman pendidikan di OpenKab.
1214

1315

1416
#### Perbaikan BUG
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
@extends('layouts.cetak.index')
2+
3+
@section('title', 'Data Pendidikan')
4+
5+
@section('content')
6+
@include('partials.breadcrumbs')
7+
<div x-data="{
8+
data: {},
9+
async retrievePosts() {
10+
try {
11+
const headers = @include('layouts.components.header_bearer_api_gabungan');
12+
var create_url = new URL({{ json_encode(config('app.databaseGabunganUrl')) }} + '/api/v1/pendidikan');
13+
14+
// Get current URL parameters and add them to create_url
15+
const currentUrl = new URL(window.location.href);
16+
const urlParams = currentUrl.searchParams;
17+
18+
// Add all search parameters from current URL
19+
for (const [key, value] of urlParams.entries()) {
20+
if (value && value !== '' && value !== 'null') {
21+
create_url.searchParams.set(key, value);
22+
}
23+
}
24+
25+
const response = await fetch(create_url.href, {
26+
method: 'GET',
27+
headers: headers
28+
});
29+
30+
if (!response.ok) throw new Error('Gagal mengambil data');
31+
32+
const result = await response.json();
33+
this.data = result.data;
34+
35+
await $nextTick();
36+
window.print();
37+
} catch (error) {
38+
console.error('Terjadi kesalahan:', error);
39+
alert('Terjadi kesalahan saat mengambil data.');
40+
}
41+
}
42+
}" x-init="retrievePosts">
43+
<table class="border thick" id="tabel-penduduk">
44+
<thead>
45+
<tr class="border thick">
46+
<th class="padat">No</th>
47+
<th class="padat">Nama {{ config('app.sebutanDesa') }}</th>
48+
<th class="padat">NIK</th>
49+
<th class="padat">Pendidikan<br> dalam KK</th>
50+
<th class="padat">Pendidikan<br>Sedang Ditempuh</th>
51+
<th class="padat">Partisipasi Sekolah</th>
52+
<th class="padat">Jenjang<br> dan Jenis<br>Pendidikan Tertinggi</th>
53+
<th class="padat">Kelas Tertinggi</th>
54+
<th class="padat">Ijazah Tertinggi</th>
55+
</tr>
56+
</thead>
57+
<tbody>
58+
<template x-for="(value, index) in data">
59+
<tr>
60+
<td class="padat" x-text="index+1"></td>
61+
<td x-text="value.attributes.nama_desa"></td>
62+
<td x-text="value.attributes.nik"></td>
63+
<td x-text="value.attributes.pendidikan_kk_id"></td>
64+
<td x-text="value.attributes.pendidikan_sedang_id"></td>
65+
<td x-text="value.attributes.partisipasi_sekolah"></td>
66+
<td x-text="value.attributes.pendidikan_tertinggi"></td>
67+
<td x-text="value.attributes.kelas_tertinggi"></td>
68+
<td x-text="value.attributes.ijazah_tertinggi"></td>
69+
</tr>
70+
</template>
71+
</tbody>
72+
</table>
73+
</div>
74+
@stop

resources/views/data_pokok/pendidikan/index.blade.php

Lines changed: 107 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,21 @@
4242
<div class="col-lg-12">
4343
<div class="card card-outline card-primary">
4444
<div class="card-header">
45-
<div class="float-left">Data Pendidikan Penduduk dan DTKS</div>
45+
<div>Data Pendidikan Penduduk dan DTKS</div>
46+
<div class="row">
47+
<div class="col-sm-3">
48+
<x-print-button :print-url="url('data-pokok/pendidikan/cetak')" table-id="pendidikan" :filter="[]" />
49+
<x-excel-download-button :download-url="config('app.databaseGabunganUrl') . '/api/v1/pendidikan/download'" table-id="pendidikan" filename="data_pendidikan" />
50+
</div>
51+
</div>
4652
</div>
4753
<div class="card-body">
4854
<div class="table-responsive">
4955
<table class="table table-striped" id="pendidikan">
5056
<thead>
5157
<tr>
5258
<th>No</th>
59+
<th>Nama {{ config('app.sebutanDesa') }}</th>
5360
<th>NIK</th>
5461
<th>Pendidikan dalam KK</th>
5562
<th>Pendidikan Sedang Ditempuh</th>
@@ -70,106 +77,110 @@
7077

7178
@section('js')
7279
@include('data_pokok.pendidikan.chart')
73-
<script nonce="{{ csp_nonce() }}" >
80+
<script nonce="{{ csp_nonce() }}">
7481
let data_grafik = [];
75-
document.addEventListener("DOMContentLoaded", function(event) {
82+
document.addEventListener("DOMContentLoaded", function(event) {
7683
77-
const header = @include('layouts.components.header_bearer_api_gabungan');
78-
var url = new URL("{{ config('app.databaseGabunganUrl').'/api/v1/pendidikan' }}");
79-
url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}");
80-
url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}");
81-
url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}");
84+
const header = @include('layouts.components.header_bearer_api_gabungan');
85+
var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/pendidikan' }}");
86+
url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}");
87+
url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}");
88+
url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}");
8289
83-
var pendidikan = $('#pendidikan').DataTable({
84-
processing: true,
85-
serverSide: true,
86-
autoWidth: false,
87-
ordering: false,
88-
searchPanes: {
89-
viewTotal: false,
90-
columns: [0]
91-
},
92-
ajax: {
93-
url: url.href,
94-
headers: header,
95-
method: 'get',
96-
data: function(row) {
97-
return {
98-
"page[size]": row.length,
99-
"page[number]": (row.start / row.length) + 1,
100-
"filter[search]": row.search.value,
101-
"filter[kode_desa]": $("#kode_desa").val(),
102-
};
103-
},
104-
dataSrc: function(json) {
105-
106-
if (json.data.length > 0) {
107-
json.recordsTotal = json.meta.pagination.total
108-
json.recordsFiltered = json.meta.pagination.total
109-
data_grafik = [];
110-
json.data.forEach(function(item, index) {
111-
data_grafik.push(item.attributes)
112-
})
113-
grafikPie()
114-
return json.data;
115-
}
116-
return false;
90+
var pendidikan = $('#pendidikan').DataTable({
91+
processing: true,
92+
serverSide: true,
93+
autoWidth: false,
94+
ordering: false,
95+
searchPanes: {
96+
viewTotal: false,
97+
columns: [0]
11798
},
118-
},
119-
columnDefs: [{
120-
targets: '_all',
121-
className: 'text-nowrap',
99+
ajax: {
100+
url: url.href,
101+
headers: header,
102+
method: 'get',
103+
data: function(row) {
104+
return {
105+
"page[size]": row.length,
106+
"page[number]": (row.start / row.length) + 1,
107+
"filter[search]": row.search.value,
108+
"filter[kode_desa]": $("#kode_desa").val(),
109+
};
110+
},
111+
dataSrc: function(json) {
112+
113+
if (json.data.length > 0) {
114+
json.recordsTotal = json.meta.pagination.total
115+
json.recordsFiltered = json.meta.pagination.total
116+
data_grafik = [];
117+
json.data.forEach(function(item, index) {
118+
data_grafik.push(item.attributes)
119+
})
120+
grafikPie()
121+
return json.data;
122+
}
123+
return false;
122124
},
123-
],
124-
columns: [{
125-
data: null,
126-
orderable: false
127-
},
128-
{
129-
data: "attributes.nik",
130-
name: "nik",
131-
orderable: false
132-
},
133-
{
134-
data: "attributes.pendidikan_kk_id",
135-
name: "pendidikan_kk_id",
136-
orderable: false
137-
},
138-
{
139-
data: "attributes.pendidikan_sedang_id",
140-
name: "pendidikan_sedang_id",
141-
orderable: false
142-
},
143-
{
144-
data: "attributes.partisipasi_sekolah",
145-
name: "partisipasi_sekolah",
146-
orderable: false
147-
},
148-
{
149-
data: "attributes.pendidikan_tertinggi",
150-
name: "pendidikan_tertinggi",
151-
orderable: false
152-
},
153-
{
154-
data: "attributes.kelas_tertinggi",
155-
name: "kelas_tertinggi",
156-
orderable: false
157-
},
158-
{
159-
data: "attributes.ijazah_tertinggi",
160-
name: "ijazah_tertinggi",
161-
orderable: false
162125
},
163-
]
164-
})
165-
pendidikan.on('draw.dt', function() {
166-
var PageInfo = $('#pendidikan').DataTable().page.info();
167-
pendidikan.column(0, {
168-
page: 'current'
169-
}).nodes().each(function(cell, i) {
170-
cell.innerHTML = i + 1 + PageInfo.start;
126+
columnDefs: [{
127+
targets: '_all',
128+
className: 'text-nowrap',
129+
}, ],
130+
columns: [{
131+
data: null,
132+
orderable: false
133+
},
134+
{
135+
data: "attributes.nama_desa",
136+
name: "nama_desa",
137+
orderable: false
138+
},
139+
{
140+
data: "attributes.nik",
141+
name: "nik",
142+
orderable: false
143+
},
144+
{
145+
data: "attributes.pendidikan_kk_id",
146+
name: "pendidikan_kk_id",
147+
orderable: false
148+
},
149+
{
150+
data: "attributes.pendidikan_sedang_id",
151+
name: "pendidikan_sedang_id",
152+
orderable: false
153+
},
154+
{
155+
data: "attributes.partisipasi_sekolah",
156+
name: "partisipasi_sekolah",
157+
orderable: false
158+
},
159+
{
160+
data: "attributes.pendidikan_tertinggi",
161+
name: "pendidikan_tertinggi",
162+
orderable: false
163+
},
164+
{
165+
data: "attributes.kelas_tertinggi",
166+
name: "kelas_tertinggi",
167+
orderable: false
168+
},
169+
{
170+
data: "attributes.ijazah_tertinggi",
171+
name: "ijazah_tertinggi",
172+
orderable: false
173+
},
174+
]
175+
})
176+
pendidikan.on('draw.dt', function() {
177+
var PageInfo = $('#pendidikan').DataTable().page.info();
178+
pendidikan.column(0, {
179+
page: 'current'
180+
}).nodes().each(function(cell, i) {
181+
cell.innerHTML = i + 1 + PageInfo.start;
182+
});
171183
});
172-
});
173-
})
184+
})
174185
</script>
175-
@endsection
186+
@endsection

routes/web.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@
162162
Route::middleware(['permission:datapokok-ketenagakerjaan-read'])->get('/ketenagakerjaan/cetak', 'cetakKetenagakerjaan');
163163

164164
Route::middleware(['permission:datapokok-pendidikan-read'])->get('/pendidikan', 'pendidikan')->name('pendidikan');
165+
Route::middleware(['permission:datapokok-pendidikan-read'])->get('/pendidikan/cetak', 'cetakPendidikan')->name('pendidikan.cetak');
165166
Route::middleware(['permission:datapokok-pariwisata-read'])->get('/pariwisata', 'pariwisata')->name('pariwisata');
166167
Route::middleware(['permission:datapokok-jaminan-sosial-read'])->get('/jaminan-sosial', 'jaminanSosial')->name('jaminan-sosial');
167168
Route::middleware(['permission:datapokok-jaminan-sosial-read'])->get('/jaminan-sosial/detail', 'detailJaminanSosial')->name('jaminan-sosial-detail');

0 commit comments

Comments
 (0)