update
parent
2ea1bfd70d
commit
4b3b7bfa45
|
|
@ -4,6 +4,9 @@ namespace App\Http\Controllers;
|
|||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Master\Instansi;
|
||||
use App\Models\Dataset;
|
||||
use App\Models\Dataset\DatasetTable45;
|
||||
use App\Models\Dataset\DatasetTable47;
|
||||
|
||||
class AjaxController extends Controller
|
||||
{
|
||||
|
|
@ -19,4 +22,38 @@ class AjaxController extends Controller
|
|||
|
||||
return response()->json(['data' => $data,'status' => true]);
|
||||
}
|
||||
|
||||
function getPenduduk($tahun){
|
||||
$_data = [];
|
||||
|
||||
$dataset = Dataset::whereIn('tahun',[$tahun])->pluck('DatasetId')->toArray();
|
||||
|
||||
$data = DatasetTable45::whereIn('dataset_id',$dataset)->select('kabupaten_kota', 'jumlah_penduduk')->get();
|
||||
|
||||
$labels = $data->pluck('kabupaten_kota');
|
||||
$series = $data->pluck('jumlah_penduduk')->map(fn($v) => (int)$v);
|
||||
|
||||
return response()->json([
|
||||
'labels' => $labels,
|
||||
'series' => $series,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
function getTimbulan($tahun){
|
||||
$_data = [];
|
||||
|
||||
$dataset = Dataset::whereIn('tahun',[$tahun])->pluck('DatasetId')->toArray();
|
||||
|
||||
$data = DatasetTable47::whereIn('dataset_id',$dataset)->select('kabupaten_kota', 'timbulan_sampah')->get();
|
||||
|
||||
$labels = $data->pluck('kabupaten_kota');
|
||||
$series = $data->pluck('timbulan_sampah')->map(fn($v) => (int)$v);
|
||||
|
||||
return response()->json([
|
||||
'labels' => $labels,
|
||||
'series' => $series,
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,84 +59,258 @@
|
|||
|
||||
</div>
|
||||
@endif
|
||||
<div class="grid xl:grid-cols-1 lg:grid-cols-1 grid-cols-1 gap-6 mb-6">
|
||||
<div class="grid xl:grid-cols-2 lg:grid-cols-2 grid-cols-1 gap-6 mb-6">
|
||||
<div class="card">
|
||||
<div class="p-6">
|
||||
<div>
|
||||
<div class="mb-5">
|
||||
<h5 class="text-md font-bold">Data Resource</h5>
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="w-full">
|
||||
<h5 class="text-lg bold mb-10">Data Penduduk Berdasarkan Tingkat Pendidikan Tahun {{(date('Y')-1)}}</h5>
|
||||
<p class="mb-10">Ini adalah data Data Penduduk Berdasarkan Tingkat Pendidikan Tahun {{(date('Y')-1)}}, berdasarkan data yang sudah di upload sebelumnya</p>
|
||||
<div id="penduduk1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="p-6">
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="w-full">
|
||||
<h5 class="text-lg bold mb-10">Data Penduduk Berdasarkan Tingkat Pendidikan Tahun {{date('Y')}}</h5>
|
||||
<p class="mb-10">Ini adalah data Data Penduduk Berdasarkan Tingkat Pendidikan Tahun {{date('Y')}}, berdasarkan data yang sudah di upload sebelumnya</p>
|
||||
<div id="penduduk2"></div>
|
||||
</div>
|
||||
<table class="gridjs-table"
|
||||
data-search="false"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="false"
|
||||
data-url="{{route('modules.dashboard.gridResource')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="5"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="gridjs-thead">
|
||||
<tr class="gridjs-tr bg-primary-light">
|
||||
<th class="gridjs-td gridjs-th text-sm" data-width="10" data-field="action">#</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-width="10" data-field="no">No</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="name">Resource Data</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="jumlah">Jumlah Upload Dataset</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="gridjs-tbody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- <div class="grid xl:grid-cols-1 lg:grid-cols-1 grid-cols-1 gap-6 mb-6 hidden">
|
||||
|
||||
<div class="grid xl:grid-cols-2 lg:grid-cols-2 grid-cols-1 gap-6 mb-6">
|
||||
<div class="card">
|
||||
<div class="p-6">
|
||||
<div>
|
||||
<div id="toolbar">
|
||||
<h5 class="text-md font-bold">10 Data Update Terakhir</h5>
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="w-full">
|
||||
<h5 class="text-lg bold mb-10">Data Jumlah Timbulan Sampah Tahun {{(date('Y')-1)}}</h5>
|
||||
<p class="mb-10">Ini adalah data Data Jumlah Timbulan Sampah Tahun {{(date('Y')-1)}}, berdasarkan data yang sudah di upload sebelumnya</p>
|
||||
<div id="timbulan1"></div>
|
||||
</div>
|
||||
<table class="gridjs-table"
|
||||
data-search="true"
|
||||
data-toggle="table"
|
||||
data-pagination="true"
|
||||
data-toolbar="#toolbar"
|
||||
data-show-refresh="false"
|
||||
data-url="{{route('modules.dashboard.grid')}}"
|
||||
data-sort-name="ids"
|
||||
data-sort-order="desc"
|
||||
data-page-size="10"
|
||||
data-id-field="id"
|
||||
id="grid-data">
|
||||
<thead class="gridjs-thead">
|
||||
<tr class="gridjs-tr bg-primary-light">
|
||||
<th class="gridjs-td gridjs-th text-sm" data-width="10" data-field="action">#</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-width="10" data-field="no">No</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="instansi">Nama Instansi</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="name">Nama Dataset</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="tahun">Tahun</th>
|
||||
<th class="gridjs-td gridjs-th text-sm text-center" data-field="status">Status</th>
|
||||
<th class="gridjs-td gridjs-th text-sm" data-field="created_at">Tanggal Dibuat</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="gridjs-tbody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="card">
|
||||
<div class="p-6">
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="w-full">
|
||||
<h5 class="text-lg bold mb-10">Data Jumlah Timbulan Sampah Tahun {{date('Y')}}</h5>
|
||||
<p class="mb-10">Ini adalah data Data Jumlah Timbulan Sampah Tahun {{date('Y')}}, berdasarkan data yang sudah di upload sebelumnya</p>
|
||||
<div id="timbulan2"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- end row -->
|
||||
@endsection
|
||||
@section('js')
|
||||
<script src="{{asset('assets/js/pages/dashboard-analytics.js')}}"></script>
|
||||
<!-- Apex Charts js -->
|
||||
<script src="{{asset('assets/libs/apexcharts/apexcharts.min.js')}}"></script>
|
||||
<script>
|
||||
var base_url = '{{ url("/") }}';
|
||||
var tahun = '{{ date("Y")-1 }}';
|
||||
|
||||
<!-- Vector Map Js -->
|
||||
<script src="{{asset('assets/libs/jsvectormap/js/jsvectormap.min.js')}}"></script>
|
||||
<script src="{{asset('assets/libs/jsvectormap/maps/world-merc.js')}}"></script>
|
||||
<script src="{{asset('assets/libs/jsvectormap/maps/world.js')}}"></script>
|
||||
fetch(base_url+'/getPenduduk/'+tahun)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
const series = data.series.map(Number);
|
||||
|
||||
var options = {
|
||||
chart: {
|
||||
type: 'pie',
|
||||
height: 400
|
||||
},
|
||||
series: series,
|
||||
labels: data.labels,
|
||||
tooltip: {
|
||||
custom: function({ series, seriesIndex, w }) {
|
||||
// ambil nama kabupaten/kota langsung dari chart context
|
||||
const kota = w.globals.labels[seriesIndex];
|
||||
const value = series[seriesIndex].toLocaleString('id-ID');
|
||||
|
||||
// hitung persentase dari total
|
||||
const total = series.reduce((a, b) => a + b, 0);
|
||||
const persen = ((series[seriesIndex] / total) * 100).toFixed(1);
|
||||
|
||||
return `
|
||||
<div style="padding:6px 10px; font-size:13px;">
|
||||
Jumlah Penduduk <b>${kota}</b>: ${value} (${persen}%)
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
},
|
||||
responsive: [{
|
||||
breakpoint: 480,
|
||||
options: {
|
||||
chart: {
|
||||
width: 400
|
||||
},
|
||||
legend: {
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var chart = new ApexCharts(document.querySelector("#penduduk1"), options);
|
||||
chart.render();
|
||||
}).catch(error => console.error('Error:', error));
|
||||
</script>
|
||||
<script>
|
||||
var base_url = '{{ url("/") }}';
|
||||
var tahun = '{{ date("Y") }}';
|
||||
|
||||
fetch(base_url+'/getPenduduk/'+tahun)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
const series = data.series.map(Number);
|
||||
|
||||
var options = {
|
||||
chart: {
|
||||
type: 'pie',
|
||||
height: 400
|
||||
},
|
||||
series: series,
|
||||
labels: data.labels,
|
||||
tooltip: {
|
||||
custom: function({ series, seriesIndex, w }) {
|
||||
// ambil nama kabupaten/kota langsung dari chart context
|
||||
const kota = w.globals.labels[seriesIndex];
|
||||
const value = series[seriesIndex].toLocaleString('id-ID');
|
||||
|
||||
// hitung persentase dari total
|
||||
const total = series.reduce((a, b) => a + b, 0);
|
||||
const persen = ((series[seriesIndex] / total) * 100).toFixed(1);
|
||||
|
||||
return `
|
||||
<div style="padding:6px 10px; font-size:13px;">
|
||||
Jumlah Penduduk <b>${kota}</b>: ${value} (${persen}%)
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
},
|
||||
responsive: [{
|
||||
breakpoint: 480,
|
||||
options: {
|
||||
chart: {
|
||||
width: 400
|
||||
},
|
||||
legend: {
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var chart = new ApexCharts(document.querySelector("#penduduk2"), options);
|
||||
chart.render();
|
||||
}).catch(error => console.error('Error:', error));
|
||||
</script>
|
||||
<script>
|
||||
var base_url = '{{ url("/") }}';
|
||||
var tahun = '{{ date("Y")-1 }}';
|
||||
|
||||
fetch(base_url+'/getTimbulan/'+tahun)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
const series = data.series.map(Number);
|
||||
|
||||
var options = {
|
||||
chart: {
|
||||
type: 'pie',
|
||||
height: 400
|
||||
},
|
||||
series: series,
|
||||
labels: data.labels,
|
||||
tooltip: {
|
||||
custom: function({ series, seriesIndex, w }) {
|
||||
// ambil nama kabupaten/kota langsung dari chart context
|
||||
const kota = w.globals.labels[seriesIndex];
|
||||
const value = series[seriesIndex].toLocaleString('id-ID');
|
||||
|
||||
// hitung persentase dari total
|
||||
const total = series.reduce((a, b) => a + b, 0);
|
||||
const persen = ((series[seriesIndex] / total) * 100).toFixed(1);
|
||||
|
||||
return `
|
||||
<div style="padding:6px 10px; font-size:13px;">
|
||||
Jumlah Timbulan Kg Per Hari <b>${kota}</b>: ${value} (${persen}%)
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
},
|
||||
responsive: [{
|
||||
breakpoint: 480,
|
||||
options: {
|
||||
chart: {
|
||||
width: 400
|
||||
},
|
||||
legend: {
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var chart = new ApexCharts(document.querySelector("#timbulan1"), options);
|
||||
chart.render();
|
||||
}).catch(error => console.error('Error:', error));
|
||||
</script>
|
||||
<script>
|
||||
var base_url = '{{ url("/") }}';
|
||||
var tahun = '{{ date("Y") }}';
|
||||
|
||||
fetch(base_url+'/getTimbulan/'+tahun)
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
const series = data.series.map(Number);
|
||||
|
||||
var options = {
|
||||
chart: {
|
||||
type: 'pie',
|
||||
height: 400
|
||||
},
|
||||
series: series,
|
||||
labels: data.labels,
|
||||
tooltip: {
|
||||
custom: function({ series, seriesIndex, w }) {
|
||||
// ambil nama kabupaten/kota langsung dari chart context
|
||||
const kota = w.globals.labels[seriesIndex];
|
||||
const value = series[seriesIndex].toLocaleString('id-ID');
|
||||
|
||||
// hitung persentase dari total
|
||||
const total = series.reduce((a, b) => a + b, 0);
|
||||
const persen = ((series[seriesIndex] / total) * 100).toFixed(1);
|
||||
|
||||
return `
|
||||
<div style="padding:6px 10px; font-size:13px;">
|
||||
Jumlah Timbulan Kg Per Hari <b>${kota}</b>: ${value} (${persen}%)
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
},
|
||||
responsive: [{
|
||||
breakpoint: 480,
|
||||
options: {
|
||||
chart: {
|
||||
width: 400
|
||||
},
|
||||
legend: {
|
||||
position: 'bottom'
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
var chart = new ApexCharts(document.querySelector("#timbulan2"), options);
|
||||
chart.render();
|
||||
}).catch(error => console.error('Error:', error));
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -11,7 +11,10 @@ use App\Http\Controllers\Management\RoleController;
|
|||
use App\Http\Controllers\Management\AksesController;
|
||||
use App\Http\Controllers\Opendata\DatasetController;
|
||||
use App\Http\Controllers\Opendata\DatasetTambahanController;
|
||||
use App\Http\Controllers\AjaxController;
|
||||
|
||||
Route::get('getPenduduk/{tahun}',[AjaxController::class,'getPenduduk'])->name('getPenduduk');
|
||||
Route::get('getTimbulan/{tahun}',[AjaxController::class,'getTimbulan'])->name('getTimbulan');
|
||||
|
||||
Route::name('dashboard.')->prefix('dashboard')->group(function () {
|
||||
Route::get('/',[HomeController::class,'dashboard'])->name('dashboard');
|
||||
|
|
|
|||
Loading…
Reference in New Issue