Update menu layanan dan form ulasan pelanggan

master
Citra Pangestu 2026-05-05 19:37:09 +07:00
parent 4c03db176c
commit e4a91420f9
12 changed files with 482 additions and 126 deletions

View File

@ -48,6 +48,12 @@ namespace WebApplication2.Controllers
return View("~/Views/TentangKami.cshtml");
}
[HttpGet("/ulasan")]
public IActionResult Ulasan()
{
return View("~/Views/FormReview.cshtml");
}
public IActionResult Privacy()
{
return View();

View File

@ -0,0 +1,239 @@
@{
ViewData["Title"] = "Ulasan Pelanggan";
var questions = new[]{
new { key = "persyaratan", label = "Bagaimana pendapat Saudara tentang kesesuaian persyaratan pelayanan dengan jenis pelayanannya?" },
new { key = "prosedur", label = "Bagaimana pemahaman Saudara tentang kemudahan prosedur pelayanan di Laboratorium Lingkungan Hidup Daerah DKI Jakarta?" },
new { key = "kerahasiaan", label = "Bagaimana pendapat Saudara mengenai jaminan kerahasiaan contoh uji (sampel) di LLHD?" },
new { key = "kecepatan", label = "Bagaimana pendapat Saudara tentang kecepatan pelayanan di LLHD?" },
new { key = "ketepatan_waktu", label = "Bagaimana pendapat Saudara tentang ketepatan waktu penyelesaian pengujian laboratorium terhadap jadwal waktu pelayanan yang telah ditetapkan?" },
new { key = "biaya", label = "Bagaimana pendapat Saudara tentang kesesuaian biaya/tarif dalam pelayanan?" },
new { key = "produk", label = "Bagaimana pendapat Saudara tentang kesesuaian produk pelayanan antara yang tercantum dalam standar pelayanan dengan hasil yang diberikan?" },
new { key = "kompetensi", label = "Bagaimana pendapat Saudara tentang kompetensi/kemampuan petugas dalam pelayanan?" },
new { key = "komunikasi", label = "Bagaimana pendapat Saudara mengenai kemampuan komunikasi petugas dalam memberikan informasi ke pelanggan?" },
new { key = "sikap", label = "Bagaimana pendapat Saudara perilaku petugas dalam pelayanan terkait kesopanan dan keramahan?" },
new { key = "penanganan_keluhan", label = "Bagaimana pendapat Saudara tentang respon/bantuan petugas dalam menangani keluhan/pengaduan?" },
new { key = "fasilitas", label = "Bagaimana pendapat Saudara tentang kenyamanan fasilitas pelayanan di LLHD?" }
};
}
@section Style {
<link rel="stylesheet" href="~/css/FormReview.css" asp-append-version="true" />
}
<div class="container py-5">
<div class="card shadow-sm border-0 mx-auto form-card">
<div class="card-body p-4 p-md-5">
<h3 class="fw-bold mb-1">Survei Kepuasan Pelanggan</h3>
<p class="text-muted mb-4">Mohon isi form berikut untuk meningkatkan kualitas pelayanan kami</p>
<form id="formUlasan" novalidate>
<div class="mb-3">
<label class="form-label">Jenis Kelamin<span class="text-danger">*</span></label>
<select class="form-select" id="gender">
<option value="">Pilih</option>
<option>Laki-laki</option>
<option>Perempuan</option>
</select>
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<div class="mb-3">
<label class="form-label">Usia<span class="text-danger">*</span></label>
<input type="number" class="form-control" id="usia" />
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<div class="mb-3">
<label class="form-label">Pendidikan<span class="text-danger">*</span></label>
<select class="form-select" id="pendidikan">
<option value="">Pilih</option>
<option>SLTA ke bawah</option>
<option>SLTA</option>
<option>D1/D2/D3</option>
<option>S1</option>
<option>S2/S3/Profesi</option>
</select>
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<div class="mb-4">
<label class="form-label">Pekerjaan<span class="text-danger">*</span></label>
<select class="form-select" id="pekerjaan">
<option value="">Pilih</option>
<option>PNS/TNI/POLRI</option>
<option>Pegawai Swasta</option>
<option>Wiraswasta</option>
<option>Pelajar/Mahasiswa</option>
<option value="lainnya">Lainnya</option>
</select>
<input type="text" class="form-control mt-2 d-none" id="pekerjaanLainnya"
placeholder="Isi pekerjaan lainnya..." />
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<hr class="my-4" />
@for (int i = 0; i < questions.Length; i++)
{
<div class="mb-4 p-3 question-card">
<label class="form-label fw-semibold mb-3">
@(i + 1). @questions[i].label
<span class="text-danger">*</span>
</label>
<div class="survey-scale">
<span class="scale-label">Tidak Sesuai</span>
<div class="scale-options">
@for (int j = 1; j <= 4; j++)
{
<label class="scale-item">
<span class="number">@j</span>
<input type="radio" name="@questions[i].key" value="@j" />
<span class="circle"></span>
</label>
}
</div>
<span class="scale-label text-end">Sangat Sesuai</span>
</div>
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
}
<div class="mb-3">
<label class="form-label">Saran dan Masukan<span class="text-danger">*</span></label>
<textarea class="form-control" id="saran"></textarea>
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<div class="mb-4">
<label class="form-label">Ulasan<span class="text-danger">*</span></label>
<textarea class="form-control" id="ulasan"></textarea>
<small class="text-danger d-none error-msg">Wajib diisi</small>
</div>
<button type="submit" class="btn btn-primary w-100 rounded-pill py-2">
Kirim
</button>
</form>
<div id="successMsg" class="alert alert-success mt-4 d-none">
Ulasan berhasil dikirim. Terima kasih atas partisipasi Anda!
</div>
</div>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const form = document.getElementById("formUlasan");
const pekerjaan = document.getElementById("pekerjaan");
const pekerjaanLainnya = document.getElementById("pekerjaanLainnya");
const successMsg = document.getElementById("successMsg");
pekerjaan.addEventListener("change", function () {
if (this.value === "lainnya") {
pekerjaanLainnya.classList.remove("d-none");
} else {
pekerjaanLainnya.classList.add("d-none");
pekerjaanLainnya.value = "";
}
});
document.querySelectorAll("input, select, textarea").forEach(el => {
el.addEventListener("input", function () {
const container = this.closest(".mb-3, .mb-4");
const errorMsg = container?.querySelector(".error-msg");
this.classList.remove("is-invalid");
if (errorMsg) errorMsg.classList.add("d-none");
});
});
document.querySelectorAll("input[type=radio]").forEach(input => {
input.addEventListener("change", function () {
const card = this.closest(".question-card");
const errorMsg = card.querySelector(".error-msg");
card.classList.remove("border", "border-danger");
errorMsg.classList.add("d-none");
});
});
form.addEventListener("submit", function (e) {
e.preventDefault();
let isValid = true;
const penilaian = {};
["gender", "usia", "pendidikan", "pekerjaan", "saran", "ulasan"].forEach(id => {
const el = document.getElementById(id);
const container = el.closest(".mb-3, .mb-4");
const errorMsg = container.querySelector(".error-msg");
if (!el.value.trim()) {
isValid = false;
el.classList.add("is-invalid");
errorMsg.classList.remove("d-none");
}
});
if (pekerjaan.value === "lainnya" && !pekerjaanLainnya.value.trim()) {
isValid = false;
pekerjaanLainnya.classList.add("is-invalid");
}
document.querySelectorAll(".question-card").forEach(card => {
const checked = card.querySelector("input:checked");
const errorMsg = card.querySelector(".error-msg");
if (!checked) {
isValid = false;
card.classList.add("border", "border-danger");
errorMsg.classList.remove("d-none");
} else {
const input = card.querySelector("input:checked");
penilaian[input.name] = Number(input.value);
}
});
if (!isValid) return;
const data = {
gender: document.getElementById("gender").value,
usia: Number(document.getElementById("usia").value),
pendidikan: document.getElementById("pendidikan").value,
pekerjaan: pekerjaan.value === "lainnya"
? pekerjaanLainnya.value
: pekerjaan.value,
saran: document.getElementById("saran").value,
ulasan: document.getElementById("ulasan").value,
penilaian: penilaian
};
console.log("DATA FINAL:", data);
form.reset();
pekerjaanLainnya.classList.add("d-none");
successMsg.classList.remove("d-none");
setTimeout(() => {
successMsg.classList.add("d-none");
}, 3000);
});
});
</script>

View File

@ -58,6 +58,9 @@
<p class="text-muted">
Senin - Jumat, 08:00 - 16:00
</p>
<a href="https://wa.me/6281511930751" class="btn btn-outline-success rounded-pill mt-2 px-4 bi bi-whatsapp">
WA DASALEWA (text only) →
</a>
</div>
<div class="row g-4 justify-content-center">
@ -67,15 +70,16 @@
<div class="service-card">
<div class="service-bg" style="background-image:url('/assets/image/foto/ilustrasi pengujian air.png')"></div>
<div class="service-bg" style="background-image:url('/assets/image/foto/1.jpeg')"></div>
<div class="service-overlay"></div>
<div class="service-content">
<div class="top-content">
<div class="icon">
<img src="~/assets/image/icon/icon lab.png" />
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#094f9a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pipette-icon lucide-pipette"><path d="m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12" /><path d="m18 9 .4.4a1 1 0 1 1-3 3l-3.8-3.8a1 1 0 1 1 3-3l.4.4 3.4-3.4a1 1 0 1 1 3 3z" /><path d="m2 22 .414-.414" /></svg>
</div>
<p class="title">Layanan PCU Air</p>
<p class="title">Pengambilan Contoh Uji (PCU) Air</p>
</div>
<div class="service-list">
@ -99,13 +103,13 @@
<a href="/Layanan?jenis=air" class="service-card-link">
<div class="service-card">
<div class="service-bg" style="background-image:url('/assets/image/foto/ilustrasi pengujian air.png')"></div>
<div class="service-bg" style="background-image:url('/assets/image/foto/2.jpeg')"></div>
<div class="service-overlay"></div>
<div class="service-content" asp-controller="Layanan" asp-action="Air">
<div class="top-content">
<div class="icon">
<img src="~/assets/image/icon/icon lab.png" />
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#094f9a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zodiac-aquarius-icon lucide-zodiac-aquarius"><path d="m2 10 2.456-3.684a.7.7 0 0 1 1.106-.013l2.39 3.413a.7.7 0 0 0 1.096-.001l2.402-3.432a.7.7 0 0 1 1.098 0l2.402 3.432a.7.7 0 0 0 1.098 0l2.389-3.413a.7.7 0 0 1 1.106.013L22 10" /><path d="m2 18.002 2.456-3.684a.7.7 0 0 1 1.106-.013l2.39 3.413a.7.7 0 0 0 1.097 0l2.402-3.432a.7.7 0 0 1 1.098 0l2.402 3.432a.7.7 0 0 0 1.098 0l2.389-3.413a.7.7 0 0 1 1.106.013L22 18.002" /></svg>
</div>
<p class="title">Layanan Pengujian Air</p>
</div>
@ -132,13 +136,13 @@
<a href="/Layanan?jenis=udara" class="service-card-link">
<div class="service-card">
<div class="service-bg" style="background-image:url('/assets/image/foto/ilustrasi pengujian udara.png')"></div>
<div class="service-bg" style="background-image:url('/assets/image/foto/3.jpeg')"></div>
<div class="service-overlay"></div>
<div class="service-content" asp-controller="Layanan" asp-action="Udara">
<div class="top-content">
<div class="icon">
<img src="~/assets/image/icon/icon lab.png" />
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#094f9a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wind-icon lucide-wind"><path d="M12.8 19.6A2 2 0 1 0 14 16H2" /><path d="M17.5 8a2.5 2.5 0 1 1 2 4H2" /><path d="M9.8 4.4A2 2 0 1 1 11 8H2" /></svg>
</div>
<p class="title">Layanan Pengujian Udara</p>
</div>
@ -770,9 +774,9 @@
</div>
</div>
<div class="text-center mt-4">
<a href="#" class="btn btn-outline-dark rounded-pill px-4 py-2">
<a href="/ulasan" class="btn btn-outline-dark rounded-pill px-4 py-2">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus-icon lucide-plus"><path d="M5 12h14" /><path d="M12 5v14" /></svg>
Tambah Review
Tambah Ulasan
</a>
</div>

View File

@ -23,9 +23,9 @@
<div class="col-md-4">
<div class="layanan-card">
<h6>PCU Air</h6>
<h6>Pengambilan Contoh Uji (PCU) Air</h6>
<img src="~/assets/image/foto/ilustrasi pengujian air.png" class="card-img" />
<img src="~/assets/image/foto/1.jpeg" class="card-img" />
<p class="desc">
Beberapa pengujian laboratorium yang dapat dilakukan pada pengujian air yaitu:
@ -50,7 +50,7 @@
<div class="layanan-card">
<h6>Pengujian Air</h6>
<img src="~/assets/image/foto/ilustrasi pengujian air.png" class="card-img" />
<img src="~/assets/image/foto/2.jpeg" class="card-img" />
<p class="desc">
Beberapa pengujian laboratorium yang dapat dilakukan pada pengujian air yaitu:
@ -77,7 +77,7 @@
<div class="layanan-card">
<h6>Pengujian Udara</h6>
<img src="~/assets/image/foto/ilustrasi pengujian udara.png" class="card-img" />
<img src="~/assets/image/foto/3.jpeg" class="card-img" />
<p class="desc">
Beberapa pengujian laboratorium yang dapat dilakukan pada pengujian udara yaitu:

View File

@ -1,4 +1,10 @@
<header>

@{
var currentController = ViewContext.RouteData.Values["Controller"]?.ToString();
var currentAction = ViewContext.RouteData.Values["Action"]?.ToString();
}
<header>
<nav class="navbar navbar-expand-lg navbar-light bg-white shadow-sm sticky-top">
<div class="container">
@ -15,51 +21,58 @@
<ul class="navbar-nav mx-auto align-items-lg-center gap-lg-3">
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Home" asp-action="Index">
<a class="nav-link nav-underline @(currentController == "Home" && currentAction == "Index" ? "active" : "")"
asp-controller="Home" asp-action="Index">
Beranda
</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link" asp-controller="Layanan" asp-action="Index">Layanan</a>
<a class="nav-link nav-underline @(currentController == "Layanan" ? "active" : "")"
asp-controller="Layanan" asp-action="Index">
Layanan
</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="/Layanan?jenis=pcu">
PCU Air
</a>
</li>
<li>
<a class="dropdown-item" href="/Layanan?jenis=air">
Pengujian Air
</a>
</li>
<li>
<a class="dropdown-item" href="/Layanan?jenis=udara">
Pengujian Udara
</a>
</li>
<li><a class="dropdown-item" href="/Layanan?jenis=pcu">PCU Air</a></li>
<li><a class="dropdown-item" href="/Layanan?jenis=air">Pengujian Air</a></li>
<li><a class="dropdown-item" href="/Layanan?jenis=udara">Pengujian Udara</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Regulasi" asp-action="Index">Regulasi</a>
<a class="nav-link nav-underline @(currentController == "Regulasi" ? "active" : "")"
asp-controller="Regulasi" asp-action="Index">
Regulasi
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Home" asp-action="Sertifikat">Sertifikat</a>
<a class="nav-link nav-underline @(currentAction == "Sertifikat" ? "active" : "")"
asp-controller="Home" asp-action="Sertifikat">
Sertifikat
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Home" asp-action="TentangKami">Tentang Kami</a>
<a class="nav-link nav-underline @(currentAction == "TentangKami" ? "active" : "")"
asp-controller="Home" asp-action="TentangKami">
Tentang Kami
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Home" asp-action="Kontak">Kontak</a>
<a class="nav-link nav-underline @(currentAction == "Kontak" ? "active" : "")"
asp-controller="Home" asp-action="Kontak">
Kontak
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-underline" asp-controller="Home" asp-action="Faq">FAQ</a>
<a class="nav-link nav-underline @(currentAction == "Faq" ? "active" : "")"
asp-controller="Home" asp-action="Faq">
FAQ
</a>
</li>
<li>
@ -71,7 +84,10 @@
</ul>
<div class="d-flex">
<a href="https://akun.dinaslhdki.id/Identity/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%3Fclient_id%3Dlab-llhd%26redirect_uri%3Dhttps%253A%252F%252Fllhd.jakarta.go.id%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520roles%26code_challenge%3DROZFhIiIV8Fg4iVUWuIQbid6GXDa_jGSOqZKlmhU3N0%26code_challenge_method%3DS256%26response_mode%3Dform_post%26nonce%3D639063956776558493.ZTJjNjYxNzktODcyMC00NDdmLTgxODMtOTc3YzU1NmJkMGJiY2Q5ODg1MDMtMDZmOS00YTk2LThmM2YtNzI2ZjM5M2I5YjVj%26state%3DCfDJ8PaurvbSUKVMk3vpur3gVTRI_1HtqkzE3Ft0v1DW-t6Y10uXXwPx-sK1w0KA7UMZBOQgdlnQyyMJ4JeuYWtY0mOiiFlqizj2RDhZ934xfHNaqJMORnk08t2i4zCqJ0232v7LWviUqFkNsHYKUba4NLAJMkmPIhl8lgOZr_DrC-qAM6uCGJmD4wDyErxslcXYe4ljvW2InuPjWT4jKBq-qnKp6JsuEl6jmJBMt5fSSt2BqfFq4TDrHDZSB_xNHakU5l1m0QxLKH2lgoOe--p-eydQkxLzULMuxrIiI30nX_klk4cVioq6b-asGqqgbvsZVKGa3BilFjwV6_1Lntls2FcJaQ9_i69pLK5SAArWpPPNEGBLSVur-QysWvwnhYubGg%26x-client-SKU%3DID_NET9_0%26x-client-ver%3D8.0.1.0%26prompt%3D" class="btn btn-primary rounded-pill px-4">Login</a>
<a href="https://akun.dinaslhdki.id/Identity/Account/Login"
class="btn btn-primary rounded-pill px-4">
Login
</a>
</div>
</div>
@ -99,9 +115,9 @@
</div>
<script>
let allData = [];
let allData = [];
async function loadSearchData() {
async function loadSearchData() {
const regulasi = await fetch('/Regulasi/GetRegulasi').then(r => r.json());
const berita = await fetch('/Berita/GetAll').then(r => r.json());
@ -109,9 +125,9 @@ async function loadSearchData() {
...regulasi.map(x => ({ ...x, type: 'regulasi' })),
...berita.map(x => ({ ...x, type: 'berita' })),
];
}
}
function searchData(keyword) {
function searchData(keyword) {
keyword = keyword.toLowerCase();
@ -120,9 +136,9 @@ function searchData(keyword) {
);
renderResult(result);
}
}
function renderResult(data) {
function renderResult(data) {
let html = "";
@ -151,9 +167,9 @@ function renderResult(data) {
});
document.getElementById("searchResult").innerHTML = html;
}
}
document.addEventListener("DOMContentLoaded", () => {
document.addEventListener("DOMContentLoaded", () => {
loadSearchData();
@ -168,5 +184,5 @@ document.addEventListener("DOMContentLoaded", () => {
searchData(keyword);
});
});
});
</script>

View File

@ -0,0 +1,107 @@
body {
background: #f0f2f5;
}
.survey-scale {
display: grid;
grid-template-columns: 130px 1fr 130px;
align-items: center;
gap: 10px;
margin-top: 10px;
}
.scale-label {
font-size: 14px;
color: #555;
}
.scale-options {
display: flex;
justify-content: space-between;
text-align: center;
}
.scale-item {
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
}
.scale-item input {
display: none;
}
.scale-item .number {
font-size: 14px;
margin-bottom: 5px;
}
.scale-item .circle {
width: 22px;
height: 22px;
border-radius: 50%;
border: 2px solid #999;
transition: 0.2s;
}
.scale-item input:checked + .circle {
border-color: #0d6efd;
background: radial-gradient(#0d6efd 40%, transparent 45%);
}
.scale-item:hover .circle {
border-color: #0d6efd;
}
.form-card {
max-width: 800px;
border-radius: 16px;
}
.question-card {
border-radius: 12px;
border: 1px solid #eee;
background: #fafafa;
transition: 0.2s;
}
.question-card:hover {
background: #f5f9ff;
border-color: #dbeafe;
}
@media (max-width: 576px) {
.survey-scale {
display: flex;
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.scale-label {
display: flex;
justify-content: space-between;
font-size: 13px;
}
.scale-options {
display: flex;
justify-content: space-between;
gap: 6px;
}
.scale-item {
flex: 1;
}
.scale-item .circle {
width: 28px;
height: 28px;
}
.scale-item .number {
font-size: 12px;
}
}

View File

@ -1,3 +1,4 @@
.nav-underline {
position: relative;
display: inline-block;
@ -7,14 +8,15 @@
content: "";
position: absolute;
left: 0;
bottom: 0;
bottom: -5px;
width: 0%;
height: 2px;
background-color: #0d6efd;
background: #0d6efd;
transition: width 0.3s ease;
}
.nav-underline:hover::after {
.nav-underline:hover::after,
.nav-underline.active::after {
width: 100%;
}
@ -23,7 +25,7 @@
color: #374151;
border: none;
background: transparent;
transition: 0.2s;
transition: all 0.2s ease;
}
.search-btn:hover {
@ -57,6 +59,7 @@
padding: 14px 20px;
font-size: 16px;
border: 1px solid #e5e7eb;
transition: 0.2s;
}
.search-popup-input:focus {

View File

@ -1,6 +1,4 @@
/* =========================
VIDEO CARD
========================= */
.video-card {
position: relative;
cursor: pointer;
@ -25,10 +23,6 @@
transform: scale(1.05);
}
/* =========================
OVERLAY (JUDUL)
========================= */
.video-overlay {
position: absolute;
inset: 0;
@ -52,10 +46,6 @@
margin: 0;
}
/* =========================
PLAY BUTTON
========================= */
.play-btn {
position: absolute;
top: 50%;
@ -69,9 +59,6 @@
}
/* =========================
MODAL VIDEO
========================= */
.video-modal {
display: none;
position: fixed;
@ -95,9 +82,6 @@
}
/* =========================
CLOSE BUTTON
========================= */
.close-btn {
position: absolute;
top: -35px;
@ -108,9 +92,6 @@
}
/* =========================
YOUTUBE EMBED (OPTIONAL)
========================= */
.youtube-wrapper {
position: relative;
width: 100%;

View File

@ -8,7 +8,7 @@
"Air Tanah, dan",
"Air Perpipaan."
],
"gambar": "assets/image/foto/ilustrasi pengujian air.png",
"gambar": "assets/image/foto/2.jpeg",
"table1": {
"columns": [ "No", "Kode", "Output Hasil Uji", "Jenis Baku Mutu", "Tipe Pengujian", "Total Parameter", "Total Harga", "Aksi" ],

View File

@ -1,8 +1,8 @@
{
"judul": "PCU Air",
"judul": "Pengambilan Contoh Uji (PCU) Air",
"deskripsi-singkat": "Kegiatan laboratorium untuk memperoleh sampel air secara representatif dari sumber tertentu, seperti air permukaan, air tanah, air limbah, maupun air minum sesuai dengan standar dan prosedur yang berlaku oleh personel yang kompeten. Berdasarkan Permen LH No. 23 Tahun 2020, pengambilan contoh uji wajib dilakukan oleh laboratorium lingkungan sebagai bagian integral dari proses pengujian yang menentukan validitas, akurasi, ketertelusuran, ketidakberpihakan, serta menjamin keabsahan hasil uji laboratorium. Pengambilan contoh uji air di LLHD merupakan salah satu layanan yang telah terakreditasi oleh KAN. Beberapa pengujian laboratorium yang dapat dilakukan pada PCU air yaitu:",
"deskripsi": [ "Air Limbah","Air Tanah, maupun ","Air Minum."],
"gambar": "assets/image/foto/ilustrasi pengujian air.png",
"gambar": "assets/image/foto/1.jpeg",
"table1": {
"columns": [ "No", "Kode", "Output Hasil Uji", "Jenis Baku Mutu", "Tipe Pengujian", "Total Parameter", "Total Harga", "Aksi" ],

View File

@ -9,7 +9,7 @@
"Emisi Bergerak (kendaraan)",
"SPKU (stasiun pemantau kualitas udara)"
],
"gambar": "assets/image/foto/ilustrasi pengujian udara.png",
"gambar": "assets/image/foto/3.jpeg",
"table1": {
"columns": [ "Kode", "Output", "Jenis", "Tipe", "Total Parameter", "Total Harga", "Aksi" ],

View File

@ -1,14 +1,14 @@
[
{
"id": 1,
"youtube": "4hCwevKy3yU"
},
{
"id": 2,
"youtube": "PiZnr9hOOgs"
},
{
"id": 2,
"youtube": "_YnE4zWMEnM"
},
{
"id": 3,
"youtube": "i1gc4GPZINY"
"youtube": "UR1ue36yhM4"
}
]