fix get total data from api
This commit is contained in:
31
app/Http/Controllers/Api/LackOfPotentialController.php
Normal file
31
app/Http/Controllers/Api/LackOfPotentialController.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Advertisement;
|
||||
use App\Models\Customer;
|
||||
use App\Models\SpatialPlanning;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class LackOfPotentialController extends Controller
|
||||
{
|
||||
|
||||
public function count_lack_of_potential(){
|
||||
try{
|
||||
$total_reklame = Advertisement::count();
|
||||
$total_pdam = Customer::count();
|
||||
$total_tata_ruang = SpatialPlanning::count();
|
||||
|
||||
return response()->json([
|
||||
'total_reklame' => $total_reklame,
|
||||
'total_pdam' => $total_pdam,
|
||||
'total_tata_ruang' => $total_tata_ruang
|
||||
], 200);
|
||||
}catch(\Exception $e){
|
||||
return response()->json([
|
||||
'message' => 'Error: '.$e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,11 +6,16 @@ class LackOfPotential {
|
||||
this.bigTotalLackPotential = 0;
|
||||
this.totalPotensi = await this.getDataTotalPotensi(2025);
|
||||
this.totalTargetPAD = await this.getDataSettings("TARGET_PAD");
|
||||
this.allCountData = await this.getValueDashboard();
|
||||
this.reklameCount = this.allCountData.total_reklame ?? 0;
|
||||
this.pdamCount = this.allCountData.total_pdam ?? 0;
|
||||
this.tataRuangCount = this.allCountData.total_tata_ruang ?? 0;
|
||||
|
||||
this.bigTargetPAD = new Big(this.totalTargetPAD ?? 0);
|
||||
this.bigTotalPotensi = new Big(this.totalPotensi.totalData ?? 0);
|
||||
this.bigTotalLackPotential = this.bigTargetPAD - this.bigTotalPotensi;
|
||||
this.initChartKekuranganPotensi();
|
||||
this.initDataValueDashboard();
|
||||
}
|
||||
async getDataTotalPotensi(year) {
|
||||
try {
|
||||
@@ -69,6 +74,33 @@ class LackOfPotential {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
async getValueDashboard() {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/dashboard-potential-count`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${
|
||||
document.querySelector("meta[name='api-token']")
|
||||
.content
|
||||
}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
console.error("Network response was not ok", response);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
initChartKekuranganPotensi() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-lack-of-potential")
|
||||
@@ -88,6 +120,12 @@ class LackOfPotential {
|
||||
element.innerText = ``;
|
||||
});
|
||||
}
|
||||
initDataValueDashboard() {
|
||||
document.getElementById("reklame-count").innerText = this.reklameCount;
|
||||
document.getElementById("pdam-count").innerText = this.pdamCount;
|
||||
document.getElementById("pbb-bangunan-count").innerText =
|
||||
this.tataRuangCount;
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", async function (e) {
|
||||
await new LackOfPotential().init();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@props(['title' => 'title component', 'visible_data' => false, 'data' => 'data text', 'visible_data_type' => false,
|
||||
'data_type' => '','style' => '', 'size' => '', 'line' => []])
|
||||
@props(['title' => 'title component', 'visible_data' => false, 'data_count' => '', 'visible_data_type' => false,
|
||||
'data_type' => '','style' => '', 'size' => '', 'line' => [], 'data_id' => ''])
|
||||
|
||||
@section('css')
|
||||
@vite(['resources/scss/components/_custom_circle.scss'])
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="custom-circle-content">
|
||||
<p class="custom-circle-text">{{ $title }}</p>
|
||||
@if ($visible_data === "true")
|
||||
<div class="custom-circle-data">{{ $data }}</div>
|
||||
<div class="custom-circle-data" id="{{ $data_id }}">{{ $data_count }}</div>
|
||||
@endif
|
||||
@if ($visible_data_type === "true")
|
||||
<div class="custom-circle-data-type">{{ $data_type }}</div>
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
<div style="position: absolute; top: 200px; left: 50px;">
|
||||
<x-custom-circle title="Restoran" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square dia-top-left-bottom-right" style="top:30px;left:50px;width:150px;height:120px;"></div>
|
||||
<x-custom-circle title="PBB Bangunan" visible_data="true" data="649.157" size="small" style="background-color: #0e4753;" />
|
||||
<x-custom-circle title="PBB Bangunan" visible_data="true" data_id="pbb-bangunan-count" data_count="0" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square" style="width:150px;height:2px;background-color:black;left:50px;top:150px;"></div>
|
||||
<x-custom-circle title="Reklame" visible_data="true" data="2.428" size="small" style="background-color: #0e4753;" />
|
||||
<x-custom-circle title="Reklame" visible_data="true" data_id="reklame-count" data_count="0" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square dia-top-right-bottom-left" style="top:140px;left:50px;width:150px;height:120px;"></div>
|
||||
</div>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<div class="square dia-top-right-bottom-left" style="top:-100px;left:30px;width:150px;height:120px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-100px;left:120px;width:120px;height:120px;"></div>
|
||||
<x-custom-circle title="BAPENDA" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="PDAM" visible_data="true" data="9.022" visible_data_type="true" data_type="Pelanggan" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="PDAM" visible_data="true" data_id="pdam-count" data_count="0" visible_data_type="true" data_type="Pelanggan" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="KECAMATAN" size="small" style="float:left;background-color: #234f6c;" />
|
||||
|
||||
</div>
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
<x-custom-circle title="UUCK" size="small" style="background-color: #2390af;position:absolute;left:1270px;top:440px;" />
|
||||
<x-custom-circle title="BPN" size="small" style="background-color: #2390af;position:absolute;left:1270px;top:440px;" />
|
||||
|
||||
<div style="position: absolute; top: 470px; left: 430px;">
|
||||
<div class="square dia-top-right-bottom-left" style="top:-80px;left:20px;width:150px;height:120px;"></div>
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Http\Controllers\Api\DataSettingController;
|
||||
use App\Http\Controllers\Api\GlobalSettingsController;
|
||||
use App\Http\Controllers\Api\GoogleSheetController;
|
||||
use App\Http\Controllers\Api\ImportDatasourceController;
|
||||
use App\Http\Controllers\Api\LackOfPotentialController;
|
||||
use App\Http\Controllers\Api\MenusController;
|
||||
use App\Http\Controllers\Api\PbgTaskController;
|
||||
use App\Http\Controllers\Api\RequestAssignmentController;
|
||||
@@ -108,4 +109,7 @@ Route::group(['middleware' => 'auth:sanctum'], function (){
|
||||
Route::delete('/customers/{id}', 'destroy')->name('api.customers.destroy');
|
||||
Route::post('/customers/upload', 'upload')->name('api.customers.upload');
|
||||
});
|
||||
|
||||
//dashboard potensi
|
||||
Route::get('/dashboard-potential-count', [LackOfPotentialController::class, 'count_lack_of_potential'])->name('api.count-dashboard-potential');
|
||||
});
|
||||
Reference in New Issue
Block a user