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.bigTotalLackPotential = 0;
|
||||||
this.totalPotensi = await this.getDataTotalPotensi(2025);
|
this.totalPotensi = await this.getDataTotalPotensi(2025);
|
||||||
this.totalTargetPAD = await this.getDataSettings("TARGET_PAD");
|
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.bigTargetPAD = new Big(this.totalTargetPAD ?? 0);
|
||||||
this.bigTotalPotensi = new Big(this.totalPotensi.totalData ?? 0);
|
this.bigTotalPotensi = new Big(this.totalPotensi.totalData ?? 0);
|
||||||
this.bigTotalLackPotential = this.bigTargetPAD - this.bigTotalPotensi;
|
this.bigTotalLackPotential = this.bigTargetPAD - this.bigTotalPotensi;
|
||||||
this.initChartKekuranganPotensi();
|
this.initChartKekuranganPotensi();
|
||||||
|
this.initDataValueDashboard();
|
||||||
}
|
}
|
||||||
async getDataTotalPotensi(year) {
|
async getDataTotalPotensi(year) {
|
||||||
try {
|
try {
|
||||||
@@ -69,6 +74,33 @@ class LackOfPotential {
|
|||||||
return 0;
|
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() {
|
initChartKekuranganPotensi() {
|
||||||
document
|
document
|
||||||
.querySelectorAll(".document-count.chart-lack-of-potential")
|
.querySelectorAll(".document-count.chart-lack-of-potential")
|
||||||
@@ -88,6 +120,12 @@ class LackOfPotential {
|
|||||||
element.innerText = ``;
|
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) {
|
document.addEventListener("DOMContentLoaded", async function (e) {
|
||||||
await new LackOfPotential().init();
|
await new LackOfPotential().init();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
@props(['title' => 'title component', 'visible_data' => false, 'data' => 'data text', 'visible_data_type' => false,
|
@props(['title' => 'title component', 'visible_data' => false, 'data_count' => '', 'visible_data_type' => false,
|
||||||
'data_type' => '','style' => '', 'size' => '', 'line' => []])
|
'data_type' => '','style' => '', 'size' => '', 'line' => [], 'data_id' => ''])
|
||||||
|
|
||||||
@section('css')
|
@section('css')
|
||||||
@vite(['resources/scss/components/_custom_circle.scss'])
|
@vite(['resources/scss/components/_custom_circle.scss'])
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="custom-circle-content">
|
<div class="custom-circle-content">
|
||||||
<p class="custom-circle-text">{{ $title }}</p>
|
<p class="custom-circle-text">{{ $title }}</p>
|
||||||
@if ($visible_data === "true")
|
@if ($visible_data === "true")
|
||||||
<div class="custom-circle-data">{{ $data }}</div>
|
<div class="custom-circle-data" id="{{ $data_id }}">{{ $data_count }}</div>
|
||||||
@endif
|
@endif
|
||||||
@if ($visible_data_type === "true")
|
@if ($visible_data_type === "true")
|
||||||
<div class="custom-circle-data-type">{{ $data_type }}</div>
|
<div class="custom-circle-data-type">{{ $data_type }}</div>
|
||||||
|
|||||||
@@ -21,9 +21,9 @@
|
|||||||
<div style="position: absolute; top: 200px; left: 50px;">
|
<div style="position: absolute; top: 200px; left: 50px;">
|
||||||
<x-custom-circle title="Restoran" size="small" style="background-color: #0e4753;" />
|
<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>
|
<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>
|
<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 class="square dia-top-right-bottom-left" style="top:140px;left:50px;width:150px;height:120px;"></div>
|
||||||
</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-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>
|
<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="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;" />
|
<x-custom-circle title="KECAMATAN" size="small" style="float:left;background-color: #234f6c;" />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
|
|
||||||
</div>
|
</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 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>
|
<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\GlobalSettingsController;
|
||||||
use App\Http\Controllers\Api\GoogleSheetController;
|
use App\Http\Controllers\Api\GoogleSheetController;
|
||||||
use App\Http\Controllers\Api\ImportDatasourceController;
|
use App\Http\Controllers\Api\ImportDatasourceController;
|
||||||
|
use App\Http\Controllers\Api\LackOfPotentialController;
|
||||||
use App\Http\Controllers\Api\MenusController;
|
use App\Http\Controllers\Api\MenusController;
|
||||||
use App\Http\Controllers\Api\PbgTaskController;
|
use App\Http\Controllers\Api\PbgTaskController;
|
||||||
use App\Http\Controllers\Api\RequestAssignmentController;
|
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::delete('/customers/{id}', 'destroy')->name('api.customers.destroy');
|
||||||
Route::post('/customers/upload', 'upload')->name('api.customers.upload');
|
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