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
5 changes: 5 additions & 0 deletions app/Http/Controllers/DataPokokController.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ public function ketenagakerjaan()
return view('data_pokok.ketenagakerjaan.index', ['title' => $title]);
}

public function cetakKetenagakerjaan(Request $request)
{
return view('data_pokok.ketenagakerjaan.cetak', ['filter' => $request->getQueryString()]);
}

public function infrastruktur()
{
$title = 'Data Prasarana dan Sarana';
Expand Down
3 changes: 3 additions & 0 deletions catatan_rilis.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ Di rilis ini, versi 2508.0.0 berisi penambahan dan perbaikan yang diminta penggu
3. [#800](https://github.com/OpenSID/OpenKab/issues/800) Penambahan fungsi untuk penyebutan kelurahan / desa & Kabupaten / Kota.
4. [#777](https://github.com/OpenSID/OpenKab/issues/777) Penambahan statistik pekerja migran penduduk.
5. [#796](https://github.com/OpenSID/OpenKab/issues/796) Penambahan kolom nama desa pada halaman menu bantuan OpenKab.
6. [#799](https://github.com/OpenSID/OpenKab/issues/799) Penambahan kolom nama desa pada beberapa halaman kesehatan di OpenKab.
7. [#797](https://github.com/OpenSID/OpenKab/issues/797) Penambahan kolom nama desa pada halaman ketenagakerjaan di OpenKab.


#### Perbaikan BUG

Expand Down
70 changes: 70 additions & 0 deletions resources/views/data_pokok/ketenagakerjaan/cetak.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
@extends('layouts.cetak.index')

@section('title', 'Data Ketenagakerjaan')

@section('content')
@include('partials.breadcrumbs')
<div x-data="{
data: {},
async retrievePosts() {
try {
const headers = @include('layouts.components.header_bearer_api_gabungan');
var create_url = new URL({{ json_encode(config('app.databaseGabunganUrl')) }} + '/api/v1/ketenagakerjaan');

// Get current URL parameters and add them to create_url
const currentUrl = new URL(window.location.href);
const urlParams = currentUrl.searchParams;

// Add all search parameters from current URL
for (const [key, value] of urlParams.entries()) {
if (value && value !== '' && value !== 'null') {
create_url.searchParams.set(key, value);
}
}

const response = await fetch(create_url.href, {
method: 'GET',
headers: headers
});

if (!response.ok) throw new Error('Gagal mengambil data');

const result = await response.json();
this.data = result.data;

await $nextTick();
window.print();
} catch (error) {
console.error('Terjadi kesalahan:', error);
alert('Terjadi kesalahan saat mengambil data.');
}
}
}" x-init="retrievePosts">
<table class="border thick" id="tabel-penduduk">
<thead>
<tr class="border thick">
<th class="padat">No</th>
<th class="padat">Nama {{ config('app.sebutanDesa') }}</th>
<th class="padat">NIK</th>
<th class="padat">Pekerjaan</th>
<th class="padat">Jabatan</th>
<th class="padat">Jumlah Penghasilan</th>
<th class="padat">Pelatihan</th>
</tr>
</thead>
<tbody>
<template x-for="(value, index) in data">
<tr>
<td class="padat" x-text="index+1"></td>
<td x-text="value.attributes.nama_desa"></td>
<td x-text="value.attributes.nik"></td>
<td x-text="value.attributes.pekerjaan"></td>
<td x-text="value.attributes.jabatan"></td>
<td x-text="value.attributes.jumlah_penghasilan"></td>
<td x-text="value.attributes.pelatihan"></td>
</tr>
</template>
</tbody>
</table>
</div>
@stop
182 changes: 97 additions & 85 deletions resources/views/data_pokok/ketenagakerjaan/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,22 @@
<div class="col-lg-12">
<div class="card card-outline card-primary">
<div class="card-header">
<div class="float-left">{{ $title }}</div>
<div>{{ $title }}</div>
<div class="row">
<div class="col-sm-3">
<x-print-button :print-url="url('data-pokok/ketenagakerjaan/cetak')" table-id="ketenagakerjaan" :filter="[]" />
<x-excel-download-button :download-url="config('app.databaseGabunganUrl') . '/api/v1/ketenagakerjaan/download'" table-id="ketenagakerjaan"
filename="data_ketenagakerjaan" />
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped" id="ketenagakerjaan">
<thead>
<tr>
<th>No</th>
<th>Nama {{ config('app.sebutanDesa') }}</th>
<th>NIK</th>
<th>Pekerjaan</th>
<th>Jabatan</th>
Expand All @@ -68,96 +76,100 @@

@section('js')
@include('data_pokok.ketenagakerjaan.chart')
<script nonce="{{ csp_nonce() }}" >
<script nonce="{{ csp_nonce() }}">
let data_grafik = [];
document.addEventListener("DOMContentLoaded", function(event) {
document.addEventListener("DOMContentLoaded", function(event) {

const header = @include('layouts.components.header_bearer_api_gabungan');
var url = new URL("{{ config('app.databaseGabunganUrl').'/api/v1/ketenagakerjaan' }}");
url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}");
url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}");
url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}");
const header = @include('layouts.components.header_bearer_api_gabungan');
var url = new URL("{{ config('app.databaseGabunganUrl') . '/api/v1/ketenagakerjaan' }}");
url.searchParams.set("kode_kabupaten", "{{ session('kabupaten.kode_kabupaten') ?? '' }}");
url.searchParams.set("kode_kecamatan", "{{ session('kecamatan.kode_kecamatan') ?? '' }}");
url.searchParams.set("config_desa", "{{ session('desa.id') ?? '' }}");

var ketenagakerjaan = $('#ketenagakerjaan').DataTable({
processing: true,
serverSide: true,
autoWidth: false,
ordering: false,
searchPanes: {
viewTotal: false,
columns: [0]
},
ajax: {
url: url.href,
headers: header,
method: 'get',
data: function(row) {
return {
"page[size]": row.length,
"page[number]": (row.start / row.length) + 1,
"filter[search]": row.search.value,
"filter[kode_desa]": $("#kode_desa").val(),
};
var ketenagakerjaan = $('#ketenagakerjaan').DataTable({
processing: true,
serverSide: true,
autoWidth: false,
ordering: false,
searchPanes: {
viewTotal: false,
columns: [0]
},
dataSrc: function(json) {

if (json.data.length > 0) {
json.recordsTotal = json.meta.pagination.total
json.recordsFiltered = json.meta.pagination.total
data_grafik = [];
json.data.forEach(function(item, index) {
data_grafik.push(item.attributes)
})
grafikPie()
return json.data;
}
return false;
ajax: {
url: url.href,
headers: header,
method: 'get',
data: function(row) {
return {
"page[size]": row.length,
"page[number]": (row.start / row.length) + 1,
"filter[search]": row.search.value,
"filter[kode_desa]": $("#kode_desa").val(),
};
},
dataSrc: function(json) {

if (json.data.length > 0) {
json.recordsTotal = json.meta.pagination.total
json.recordsFiltered = json.meta.pagination.total
data_grafik = [];
json.data.forEach(function(item, index) {
data_grafik.push(item.attributes)
})
grafikPie()
return json.data;
}
return false;
},
},
},
columnDefs: [{
targets: '_all',
className: 'text-nowrap',
columnDefs: [{
targets: '_all',
className: 'text-nowrap',
}, ],
columns: [{
data: null,
orderable: false
},
{
data: "attributes.nama_desa",
name: "nama_desa",
orderable: false
},
{
data: "attributes.nik",
name: "nik",
orderable: false
},
{
data: "attributes.pekerjaan",
name: "pekerjaan",
orderable: false
},
{
data: "attributes.jabatan",
name: "jabatan",
orderable: false
},
{
data: "attributes.jumlah_penghasilan",
name: "jumlah_penghasilan",
orderable: false
},
{
data: "attributes.pelatihan",
name: "pelatihan",
orderable: false
},
],
columns: [{
data: null,
orderable: false
},
{
data: "attributes.nik",
name: "nik",
orderable: false
},
{
data: "attributes.pekerjaan",
name: "pekerjaan",
orderable: false
},
{
data: "attributes.jabatan",
name: "jabatan",
orderable: false
},
{
data: "attributes.jumlah_penghasilan",
name: "jumlah_penghasilan",
orderable: false
},
{
data: "attributes.pelatihan",
name: "pelatihan",
orderable: false
},
],
})
ketenagakerjaan.on('draw.dt', function() {
var PageInfo = $('#ketenagakerjaan').DataTable().page.info();
ketenagakerjaan.column(0, {
page: 'current'
}).nodes().each(function(cell, i) {
cell.innerHTML = i + 1 + PageInfo.start;
})
ketenagakerjaan.on('draw.dt', function() {
var PageInfo = $('#ketenagakerjaan').DataTable().page.info();
ketenagakerjaan.column(0, {
page: 'current'
}).nodes().each(function(cell, i) {
cell.innerHTML = i + 1 + PageInfo.start;
});
});
});
})
})
</script>
@endsection
@endsection
4 changes: 3 additions & 1 deletion routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@
Route::middleware(['permission:datapresisi-read'])->controller(DataPokokController::class)
->prefix('data-pokok')
->group(function () {
Route::middleware(['permission:datapokok-ketenagakerjaan-read'])->get('/ketenagakerjaan', 'ketenagakerjaan')->name('pendidikan');
Route::middleware(['permission:datapokok-ketenagakerjaan-read'])->get('/ketenagakerjaan', 'ketenagakerjaan')->name('ketenagakerjaan');
Route::middleware(['permission:datapokok-ketenagakerjaan-read'])->get('/ketenagakerjaan/cetak', 'cetakKetenagakerjaan');

Route::middleware(['permission:datapokok-pendidikan-read'])->get('/pendidikan', 'pendidikan')->name('pendidikan');
Route::middleware(['permission:datapokok-pariwisata-read'])->get('/pariwisata', 'pariwisata')->name('pariwisata');
Route::middleware(['permission:datapokok-jaminan-sosial-read'])->get('/jaminan-sosial', 'jaminanSosial')->name('jaminan-sosial');
Expand Down