fix pbg task add toggle and rab krk dlh
This commit is contained in:
@@ -3,6 +3,21 @@ import GlobalConfig, { addThousandSeparators } from "../global-config.js";
|
||||
import InitDatePicker from "../utils/InitDatePicker.js";
|
||||
|
||||
class BigData {
|
||||
// Helper function to safely access nested object properties with default values
|
||||
safeGet(obj, path, defaultValue = 0) {
|
||||
try {
|
||||
return path.split(".").reduce((current, key) => {
|
||||
return current &&
|
||||
current[key] !== null &&
|
||||
current[key] !== undefined
|
||||
? current[key]
|
||||
: defaultValue;
|
||||
}, obj);
|
||||
} catch (error) {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
async init() {
|
||||
try {
|
||||
new InitDatePicker(
|
||||
@@ -25,6 +40,14 @@ class BigData {
|
||||
try {
|
||||
this.resumeBigData = await this.getBigDataResume(filterDate);
|
||||
|
||||
// Ensure resumeBigData is not null/undefined
|
||||
if (!this.resumeBigData) {
|
||||
this.resumeBigData = {};
|
||||
console.warn(
|
||||
"No data received, using empty object with default values"
|
||||
);
|
||||
}
|
||||
|
||||
this.initChartTargetPAD(filterDate);
|
||||
this.initChartUsaha();
|
||||
this.initChartNonUsaha();
|
||||
@@ -43,6 +66,8 @@ class BigData {
|
||||
this.initChartNonBusinessDLH();
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
// Initialize with empty data if there's an error
|
||||
this.resumeBigData = {};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,14 +117,24 @@ class BigData {
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"target_pad.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
this.resumeBigData.target_pad.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.target_pad.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"target_pad.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartTotalPotensi() {
|
||||
@@ -108,44 +143,68 @@ class BigData {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-total-potensi")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${countAll}`;
|
||||
element.innerText = `${this.resumeBigData.total_potensi.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"total_potensi.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-total-potensi")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"total_potensi.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.bigTotalPotensi.toString()
|
||||
this.resumeBigData.total_potensi.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-total-potensi")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.resultPercentage}%`;
|
||||
element.innerText = `${this.resumeBigData.total_potensi.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"total_potensi.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartVerificationDocuments() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-berkas-terverifikasi")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataVerification.count}`;
|
||||
element.innerText = `${this.resumeBigData.verified_document.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"verified_document.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-berkas-terverifikasi")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"verified_document.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.bigTotalVerification.toString()
|
||||
this.resumeBigData.verified_document.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-berkas-terverifikasi")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.percetageResultVerification}%`;
|
||||
element.innerText = `${this.resumeBigData.verified_document.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"verified_document.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartNonVerificationDocuments() {
|
||||
@@ -154,17 +213,25 @@ class BigData {
|
||||
".document-count.chart-berkas-belum-terverifikasi"
|
||||
)
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataNonVerification.count}`;
|
||||
element.innerText = `${this.resumeBigData.non_verified_document.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_verified_document.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(
|
||||
".document-total.chart-berkas-belum-terverifikasi"
|
||||
)
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_verified_document.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.bigTotalNonVerification.toString()
|
||||
this.resumeBigData.non_verified_document.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
@@ -172,52 +239,80 @@ class BigData {
|
||||
".small-percentage.chart-berkas-belum-terverifikasi"
|
||||
)
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.percentageResultNonVerification}%`;
|
||||
element.innerText = `${this.resumeBigData.non_verified_document.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_verified_document.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartUsaha() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-business")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataBusiness.count}`;
|
||||
element.innerText = `${this.resumeBigData.business_document.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_document.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-business")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_document.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.bigTotalBusiness.toString()
|
||||
this.resumeBigData.business_document.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-business")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.percentageResultBusiness}%`;
|
||||
element.innerText = `${this.resumeBigData.business_document.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_document.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartNonUsaha() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-non-business")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataNonBusiness.count}`;
|
||||
element.innerText = `${this.resumeBigData.non_business_document.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_document.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-non-business")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_document.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.bigTotalNonBusiness.toString()
|
||||
this.resumeBigData.non_business_document.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-non-business")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.percentageResultNonBusiness}%`;
|
||||
element.innerText = `${this.resumeBigData.non_business_document.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_document.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartKekuranganPotensi() {
|
||||
@@ -229,129 +324,226 @@ class BigData {
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-kekurangan-potensi")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"kekurangan_potensi.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.totalKekuranganPotensi.toString()
|
||||
this.resumeBigData.kekurangan_potensi.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-kekurangan-potensi")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.percentageKekuranganPotensi}%`;
|
||||
element.innerText = `${this.resumeBigData.kekurangan_potensi.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"kekurangan_potensi.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartRealisasiTerbitPBG() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-realisasi-tebit-pbg")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataCountRealisasiTerbit}`;
|
||||
element.innerText = `${this.resumeBigData.realisasi_terbit.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"realisasi_terbit.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-realisasi-tebit-pbg")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"realisasi_terbit.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.dataSumRealisasiTerbit
|
||||
this.resumeBigData.realisasi_terbit.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-realisasi-tebit-pbg")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.realisasi_terbit.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"realisasi_terbit.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartMenungguKlikDPMPTSP() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-menunggu-klik-dpmptsp")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataCountMenungguKlikDPMPTSP}`;
|
||||
element.innerText = `${this.resumeBigData.menunggu_klik_dpmptsp.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"menunggu_klik_dpmptsp.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-menunggu-klik-dpmptsp")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"menunggu_klik_dpmptsp.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.dataSumMenungguKlikDPMPTSP
|
||||
this.resumeBigData.menunggu_klik_dpmptsp.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-menunggu-klik-dpmptsp")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.menunggu_klik_dpmptsp.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"menunggu_klik_dpmptsp.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartProsesDinasTeknis() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-proses-dinas-teknis")
|
||||
.forEach((element) => {
|
||||
// element.innerText = `${this.dataCountProsesDinasTeknis}`;
|
||||
element.innerText = `${this.resumeBigData.proses_dinas_teknis.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"proses_dinas_teknis.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-proses-dinas-teknis")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"proses_dinas_teknis.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
// this.dataSumProsesDinasTeknis
|
||||
this.resumeBigData.proses_dinas_teknis.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-proses-dinas-teknis")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.proses_dinas_teknis.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"proses_dinas_teknis.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartPotensiTataRuang() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.tata_ruang.count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"tata_ruang.count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
const sum = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"tata_ruang.sum",
|
||||
0
|
||||
);
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
this.resumeBigData.tata_ruang.sum.toString()
|
||||
sum.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.tata_ruang.percentage}%`;
|
||||
const percentage = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"tata_ruang.percentage",
|
||||
0
|
||||
);
|
||||
element.innerText = `${percentage}%`;
|
||||
});
|
||||
}
|
||||
initChartBusinessRAB() {
|
||||
document.querySelectorAll("#business-rab-count").forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.business_rab_count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_rab_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
initChartBusinessKRK() {
|
||||
document.querySelectorAll("#business-krk-count").forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.business_krk_count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_krk_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
initChartBusinessDLH() {
|
||||
document.querySelectorAll("#business-dlh-count").forEach((element) => {
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"business_dlh_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
initChartNonBusinessRAB() {
|
||||
document
|
||||
.querySelectorAll("#non-business-rab-count")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.non_business_rab_count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_rab_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
initChartNonBusinessKRK() {
|
||||
document
|
||||
.querySelectorAll("#non-business-krk-count")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.non_business_krk_count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_krk_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
initChartNonBusinessDLH() {
|
||||
document
|
||||
.querySelectorAll("#non-business-dlh-count")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${this.resumeBigData.non_business_dlh_count}`;
|
||||
const count = this.safeGet(
|
||||
this.resumeBigData,
|
||||
"non_business_dlh_count",
|
||||
0
|
||||
);
|
||||
element.innerText = `${count}`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ class PbgTaskAssignments {
|
||||
this.initTablePbgTaskAssignments();
|
||||
this.handleUpdateData();
|
||||
this.initDatePicker();
|
||||
this.initIsValidToggle();
|
||||
}
|
||||
|
||||
initDatePicker() {
|
||||
@@ -20,6 +21,30 @@ class PbgTaskAssignments {
|
||||
});
|
||||
}
|
||||
|
||||
initIsValidToggle() {
|
||||
const checkbox = document.getElementById("is_valid");
|
||||
const statusText = document.querySelector(".status-text");
|
||||
const statusDescription = statusText?.nextElementSibling;
|
||||
|
||||
if (checkbox && statusText) {
|
||||
checkbox.addEventListener("change", function () {
|
||||
if (this.checked) {
|
||||
statusText.textContent = "Data Valid";
|
||||
if (statusDescription) {
|
||||
statusDescription.textContent =
|
||||
"Data telah diverifikasi dan sesuai";
|
||||
}
|
||||
} else {
|
||||
statusText.textContent = "Data Tidak Valid";
|
||||
if (statusDescription) {
|
||||
statusDescription.textContent =
|
||||
"Data perlu diverifikasi atau diperbaiki";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
initTablePbgTaskAssignments() {
|
||||
let tableContainer = document.getElementById(
|
||||
"table-pbg-task-assignments"
|
||||
@@ -92,6 +117,12 @@ class PbgTaskAssignments {
|
||||
formData.forEach((value, key) => {
|
||||
formObject[key] = value;
|
||||
});
|
||||
|
||||
// Handle checkbox properly - ensure boolean value is sent
|
||||
const isValidCheckbox = document.getElementById("is_valid");
|
||||
if (isValidCheckbox) {
|
||||
formObject["is_valid"] = isValidCheckbox.checked ? 1 : 0;
|
||||
}
|
||||
fetch(form.action, {
|
||||
method: "PUT", // Ensure your Laravel route is set to accept PUT requests
|
||||
body: JSON.stringify(formObject), // Convert form data to JSON
|
||||
|
||||
@@ -1,6 +1,102 @@
|
||||
// PBG Task Show Page Styles
|
||||
// Custom styles for data lists display (List Layout)
|
||||
|
||||
// Enhanced checkbox styling for is_valid field
|
||||
.form-check.form-switch {
|
||||
padding-left: 0;
|
||||
|
||||
.form-check-input {
|
||||
width: 3.25rem;
|
||||
height: 1.75rem;
|
||||
border-radius: 1rem;
|
||||
background-color: #dc3545;
|
||||
border: none;
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
margin-left: 0;
|
||||
|
||||
// Remove default browser styling
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
|
||||
&:checked {
|
||||
background-color: #28a745;
|
||||
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
|
||||
}
|
||||
|
||||
&:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(93, 135, 255, 0.25);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:not(:checked) {
|
||||
background-color: #dc3545;
|
||||
}
|
||||
|
||||
// The toggle circle
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0.125rem;
|
||||
left: 0.125rem;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
background-color: #fff;
|
||||
border-radius: 50%;
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
// Animation for checked state
|
||||
&:checked::before {
|
||||
transform: translateX(1.5rem);
|
||||
}
|
||||
}
|
||||
|
||||
.form-check-label {
|
||||
margin-left: 1rem;
|
||||
cursor: pointer;
|
||||
padding-left: 0;
|
||||
|
||||
.status-text {
|
||||
font-weight: 600;
|
||||
font-size: 1rem;
|
||||
color: #2c3e50;
|
||||
transition: color 0.3s ease;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.85rem;
|
||||
margin-top: 0.25rem;
|
||||
line-height: 1.3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Status indicator styling
|
||||
.status-validation-container {
|
||||
background: #f8f9fa;
|
||||
border: 1px solid #e9ecef;
|
||||
border-radius: 8px;
|
||||
padding: 1rem;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&.valid {
|
||||
background: #d4edda;
|
||||
border-color: #c3e6cb;
|
||||
color: #155724;
|
||||
}
|
||||
|
||||
&.invalid {
|
||||
background: #f8d7da;
|
||||
border-color: #f5c6cb;
|
||||
color: #721c24;
|
||||
}
|
||||
}
|
||||
|
||||
.data-list-section {
|
||||
.section-header {
|
||||
border-bottom: 2px solid #f8f9fa;
|
||||
|
||||
@@ -100,15 +100,15 @@
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 50px; left: 900px; width: 200px; height: 200px; ">
|
||||
<x-custom-circle title="RAB dan Gambar" size="medium" style="background-color: #c23c3c;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="business-rab-count" data_count="0"
|
||||
<x-custom-circle title="RAB dan Gambar" size="medium" style="background-color: #c248a7;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="non-business-rab-count" data_count="0"
|
||||
document_url="{{ route('web-spatial-plannings.index', ['menu_id' => $menus->where('url','web-spatial-plannings.index')->first()->id]) }}"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 160px; left: 900px; width: 200px; height: 200px; ">
|
||||
<x-custom-circle title="KRK" size="medium" style="background-color: #295040;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="business-krk-count" data_count="0"
|
||||
visible_data="true" data_id="non-business-krk-count" data_count="0"
|
||||
document_url="{{ route('web-spatial-plannings.index', ['menu_id' => $menus->where('url','web-spatial-plannings.index')->first()->id]) }}"
|
||||
/>
|
||||
</div>
|
||||
@@ -123,22 +123,22 @@
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 350px; left: 900px; width: 200px; height: 200px; ">
|
||||
<x-custom-circle title="RAB dan Gambar" size="medium" style="background-color: #ad4343;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="non-business-rab-count" data_count="0"
|
||||
<x-custom-circle title="RAB dan Gambar" size="medium" style="background-color: #c248a7;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="business-rab-count" data_count="0"
|
||||
document_url="{{ route('web-spatial-plannings.index', ['menu_id' => $menus->where('url','web-spatial-plannings.index')->first()->id]) }}"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 460px; left: 900px; width: 200px; height: 200px; ">
|
||||
<x-custom-circle title="KRK" size="medium" style="background-color: #51db51;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="non-business-krk-count" data_count="0"
|
||||
<x-custom-circle title="KRK" size="medium" style="background-color: #1d8b1d;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="business-krk-count" data_count="0"
|
||||
document_url="{{ route('web-spatial-plannings.index', ['menu_id' => $menus->where('url','web-spatial-plannings.index')->first()->id]) }}"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 570px; left: 900px; width: 200px; height: 200px; ">
|
||||
<x-custom-circle title="DLH" size="medium" style="background-color: #331d04;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="non-business-dlh-count" data_count="0"
|
||||
<x-custom-circle title="DLH" size="medium" style="background-color: #351d02;float:left;margin-left:250px;"
|
||||
visible_data="true" data_id="business-dlh-count" data_count="0"
|
||||
document_url="{{ route('web-spatial-plannings.index', ['menu_id' => $menus->where('url','web-spatial-plannings.index')->first()->id]) }}"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -14,13 +14,13 @@ class="authentication-bg"
|
||||
<div class="card-body p-0">
|
||||
<div class="row align-items-center g-0">
|
||||
<div class="col">
|
||||
<div class="mx-auto mb-4 text-center">
|
||||
<img src="/images/simbg-dputr.png" alt="auth" height="250" class="mt-5 mb-3" />
|
||||
<div class="mx-auto mb-4 text-center">
|
||||
<img src="{{ asset('images/simbg-dputr.png') }}" alt="auth" height="250" class="mt-5 mb-3" />
|
||||
|
||||
<h2 class="fs-22 lh-base">Service Unavailable!</h2>
|
||||
<p class="text-muted mt-1 mb-4">Our site is currently undergoing scheduled maintenance.<br /> Please check back later.</p>
|
||||
<h2 class="fs-22 lh-base">Service Unavailable!</h2>
|
||||
<p class="text-muted mt-1 mb-4">Our site is currently undergoing scheduled maintenance.<br /> Please check back later.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end col -->
|
||||
</div> <!-- end row -->
|
||||
</div> <!-- end card-body -->
|
||||
|
||||
@@ -4,19 +4,42 @@
|
||||
|
||||
@include('layouts.partials/page-title', ['title' => 'Home', 'subtitle' => 'Home'])
|
||||
|
||||
<div className="container d-flex justify-content-center align-items-center min-vh-100 bg-light">
|
||||
<div className="col-lg-8 col-md-10 col-sm-12">
|
||||
<div className="card shadow-lg rounded-3 p-4">
|
||||
<div className="card-body text-center">
|
||||
<h1 className="card-title text-primary">Selamat Datang di SIBEDAS PBG!</h1>
|
||||
<p className="card-text text-secondary mt-3">
|
||||
Sistem Informasi Berbasis Data (SIBEDAS) adalah sebuah sistem yang dirancang untuk mengelola dan mengolah data pegawai secara efektif dan efisien.
|
||||
Dengan teknologi modern, SIBEDAS memungkinkan pegawai untuk mendata, melihat, dan memanipulasi informasi pegawai dengan mudah.
|
||||
</p>
|
||||
<p className="card-text text-secondary">
|
||||
PBG (Pegawai Badan Kepegawaian) merupakan unit kerja yang bertanggung jawab atas administrasi kepegawaian.
|
||||
Melalui SIBEDAS PBG, proses manajemen data pegawai menjadi lebih terstruktur, transparan, dan mudah diakses kapan saja.
|
||||
</p>
|
||||
<div class="container-fluid bg-gradient-primary">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-10 col-xl-8">
|
||||
<div class="card border-0 shadow-lg">
|
||||
<div class="card-body">
|
||||
<div class="text-center mb-4">
|
||||
<h1 class="display-4 fw-bold text-secondary mb-3">
|
||||
<i class="fas fa-building me-3"></i>SIBEDAS PBG
|
||||
</h1>
|
||||
<div class="bg-secondary" style="height: 3px; width: 80px; margin: 0 auto;"></div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="bg-light rounded-3 p-4 mb-4">
|
||||
<h5 class="text-secondary fw-semibold mb-3">
|
||||
<i class="fas fa-info-circle text-primary me-2"></i>Tentang Aplikasi
|
||||
</h5>
|
||||
<p class="text-secondary mb-0 lh-lg">
|
||||
Aplikasi SIBEDAS PBG merupakan sistem pendukung yang dirancang untuk membantu pimpinan dalam melakukan pengawasan dan monitoring terhadap berkas pengajuan Persetujuan Bangunan Gedung (PBG) yang tercatat di SIMBG.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-light rounded-3 p-4">
|
||||
<h5 class="text-secondary fw-semibold mb-3">
|
||||
<i class="fas fa-chart-line text-success me-2"></i>Manfaat & Keunggulan
|
||||
</h5>
|
||||
<p class="text-secondary mb-0 lh-lg">
|
||||
Melalui SIBEDAS PBG, pimpinan dapat memantau secara langsung status perkembangan setiap berkas, mengidentifikasi pengajuan yang belum selesai, dan memastikan tindak lanjut penyelesaian dilakukan tepat waktu. Pengawasan yang lebih terstruktur, cepat, dan akurat ini tidak hanya meningkatkan kualitas pelayanan kepada masyarakat, tetapi juga mendukung tercapainya target Pendapatan Asli Daerah (PAD) melalui optimalisasi penyelesaian berkas PBG.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@ class="authentication-bg"
|
||||
</a> -->
|
||||
</div>
|
||||
|
||||
<img src="/images/simbg-dputr.png" alt="auth" height="250" class="mt-5 mb-3" />
|
||||
<img src="{{ asset('images/simbg-dputr.png') }}" alt="dputr logo" height="250" class="mt-5 mb-3" />
|
||||
|
||||
<h2 class="fs-22 lh-base">Page Not Found !</h2>
|
||||
<p class="text-muted mt-1 mb-4">The page you're trying to reach seems to have gone <br /> missing in the digital wilderness.</p>
|
||||
|
||||
@@ -80,10 +80,24 @@
|
||||
<label for="due_date" class="form-label">Due Date</label>
|
||||
<input type="text" class="form-control" id="datepicker_due_date" name="due_date" value="{{$data->due_date}}">
|
||||
</div>
|
||||
<div>
|
||||
<div class="mb-3">
|
||||
<label for="task_created_at" class="form-label">Task Created At</label>
|
||||
<input type="datetime-local" class="form-control" id="task_created_at" name="task_created_at" value="{{$data->task_created_at}}" disabled>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Status Validasi Data</label>
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="is_valid" name="is_valid" value="1" {{ $data->is_valid ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="is_valid">
|
||||
<span class="status-text">{{ $data->is_valid ? 'Data Valid' : 'Data Tidak Valid' }}</span>
|
||||
<small class="text-muted d-block">
|
||||
{{ $data->is_valid ? 'Data telah diverifikasi dan sesuai' : 'Data perlu diverifikasi atau diperbaiki' }}
|
||||
</small>
|
||||
</label>
|
||||
</div>
|
||||
<!-- Hidden input to ensure false value is sent when unchecked -->
|
||||
<input type="hidden" name="is_valid" value="0">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
Reference in New Issue
Block a user