edit edukasi

This commit is contained in:
Sveemaaa 2026-06-15 07:36:56 +07:00
parent 860615f00e
commit 21029e9389
6 changed files with 241 additions and 28 deletions

View File

@ -158,4 +158,26 @@ public function cetakPdf(Request $request, $id)
return $pdf->download('laporan_balita.pdf');
}
// PengukuranBalitaController.php
public function getLastPengukuran($id)
{
$last = PengukuranBalita::where('balita_id', $id)
->orderBy('tanggal', 'desc')
->first();
if ($last) {
return response()->json([
'found' => true,
'tanggal' => $last->tanggal,
'usia_saat_ukur' => $last->usia_saat_ukur,
'berat_badan' => $last->berat_badan,
'tinggi_badan' => $last->tinggi_badan,
'lingkar_kepala' => $last->lingkar_kepala,
'hasil' => $last->hasil ?? null, // jika ada kolom ini
]);
}
return response()->json(['found' => false]);
}
}

View File

@ -156,5 +156,26 @@ public function cetakPdf(Request $request, $id)
return $pdf->download('laporan_ibu_hamil.pdf');
}
public function getLastPengukuran($id)
{
$last = PengukuranIbuHamil::where('ibu_hamil_id', $id)
->orderBy('tanggal', 'desc')
->first();
if ($last) {
return response()->json([
'found' => true,
'tanggal' => $last->tanggal,
'usia_kehamilan' => $last->usia_kehamilan,
'berat_badan' => $last->berat_badan,
'tinggi_badan' => $last->tinggi_badan,
'lila' => $last->lila,
'status_gizi' => $last->status_gizi ?? null, // tambah ini
]);
}
return response()->json(['found' => false]);
}
}

View File

@ -36,22 +36,47 @@
<span class="input-group-text bg-white border-end-0">
<i class="bi bi-tag text-muted"></i>
</span>
<select name="kategori" class="form-select border-start-0 custom-input" required>
<option value="" disabled>-- Pilih Kategori --</option>
<option value="" disabled {{ old('kategori', $t_edukasi->kategori) == '' ? 'selected' : '' }}>
-- Pilih Kategori --
</option>
<optgroup label="Kategori Balita (Stunting)">
<option value="Sangat Pendek" {{ old('kategori', $t_edukasi->kategori) == 'Sangat Pendek' ? 'selected' : '' }}>Sangat Pendek</option>
<option value="Pendek" {{ old('kategori', $t_edukasi->kategori) == 'Pendek' ? 'selected' : '' }}>Pendek</option>
<option value="Normal" {{ old('kategori', $t_edukasi->kategori) == 'Normal' ? 'selected' : '' }}>Normal</option>
<option value="Sangat Pendek"
{{ old('kategori', $t_edukasi->kategori) == 'Sangat Pendek' ? 'selected' : '' }}>
Sangat Pendek
</option>
<option value="Pendek"
{{ old('kategori', $t_edukasi->kategori) == 'Pendek' ? 'selected' : '' }}>
Pendek
</option>
<option value="Normal"
{{ old('kategori', $t_edukasi->kategori) == 'Normal' ? 'selected' : '' }}>
Normal
</option>
</optgroup>
<optgroup label="Kategori Ibu Hamil">
<option value="ibu hamil gizi kurang" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Gizi Kurang' ? 'selected' : '' }}>Gizi Kurang</option>
<option value="ibu hamil gizi normal" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Gizi Normal' ? 'selected' : '' }}>Gizi Normal</option>
<option value="ibu hamil gizi lebih" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Gizi Lebih' ? 'selected' : '' }}>Gizi Lebih</option>
<option value="ibu hamil obesitas" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Obesitas' ? 'selected' : '' }}>Obesitas</option>
<option value="Ibu hamil gizi kurang"
{{ old('kategori', $t_edukasi->kategori) == 'Ibu hamil gizi kurang' ? 'selected' : '' }}>
Gizi Kurang
</option>
<option value="Ibu hamil gizi normal"
{{ old('kategori', $t_edukasi->kategori) == 'Ibu hamil gizi normal' ? 'selected' : '' }}>
Gizi Normal
</option>
<option value="Ibu hamil gizi lebih"
{{ old('kategori', $t_edukasi->kategori) == 'Ibu hamil gizi lebih' ? 'selected' : '' }}>
Gizi Lebih
</option>
<option value="Ibu hamil obesitas"
{{ old('kategori', $t_edukasi->kategori) == 'Ibu hamil obesitas' ? 'selected' : '' }}>
Obesitas
</option>
</optgroup>
</select>
</div>
</div>

View File

@ -99,6 +99,52 @@
</div>
</div>
</div>
{{-- History Pengukuran Terakhir --}}
<div class="col-12" id="last-history" style="display: none;">
<div class="alert border-0 shadow-sm mb-2" style="border-radius: 14px; background: #fff5f0; border-left: 4px solid #FF782D !important;">
<div class="d-flex align-items-center mb-2">
<i class="bi bi-clock-history me-2" style="color: #FF782D; font-size: 1.1rem;"></i>
<strong style="color: #FF782D;">Pengukuran Terakhir</strong>
<span id="last-tanggal" class="ms-auto badge bg-light text-muted" style="font-size: 0.8rem;"></span>
</div>
<div class="row text-center g-2">
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Usia</div>
<div class="fw-bold fs-6" id="last-usia" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">bulan</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Berat Badan</div>
<div class="fw-bold fs-6" id="last-bb" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">kg</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Tinggi Badan</div>
<div class="fw-bold fs-6" id="last-tb" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">cm</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Lingkar Kepala</div>
<div class="fw-bold fs-6" id="last-lk" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">cm</div>
</div>
</div>
</div>
{{-- Tampilkan status gizi jika ada --}}
<div id="last-status-wrap" class="mt-2 text-center" style="display:none;">
<span class="badge px-3 py-2" id="last-status"
style="border-radius: 20px; font-size: 0.85rem; background: #FF782D; color: white;">
</span>
</div>
</div>
</div>
<div class="d-flex justify-content-end gap-2 border-top mt-4 pt-4">
<a href="{{ route('pengukuran_balita.index') }}" class="btn btn-light px-4" style="border-radius: 10px;">Batal</a>
@ -127,19 +173,17 @@
<script>
$(document).ready(function() {
// Inisialisasi Select2
$('#balita_id').select2({
placeholder: 'Cari nama balita...',
allowClear: true,
width: '100%'
});
// Event change untuk Select2 harus pakai .on('change')
$('#balita_id').on('change', function() {
updateData();
fetchLastHistory($(this).val());
});
// Event change tanggal tetap sama
document.getElementById("tanggal_ukur").addEventListener("change", updateData);
});
@ -153,19 +197,48 @@ function updateData() {
document.getElementById("jk_input").value = jk;
let tglLahir = new Date(opt.getAttribute("data-tgl"));
let tglUkur = new Date(document.getElementById("tanggal_ukur").value);
let tglUkur = new Date(document.getElementById("tanggal_ukur").value);
let totalBulan = (tglUkur.getFullYear() - tglLahir.getFullYear()) * 12
+ (tglUkur.getMonth() - tglLahir.getMonth());
+ (tglUkur.getMonth() - tglLahir.getMonth());
if (tglUkur.getDate() < tglLahir.getDate()) totalBulan--;
document.getElementById("usia_display").value = (totalBulan < 0 ? 0 : totalBulan) + " Bulan";
document.getElementById("usia_input").value = (totalBulan < 0 ? 0 : totalBulan);
document.getElementById("usia_input").value = (totalBulan < 0 ? 0 : totalBulan);
} else {
document.getElementById("jk_display").value = '';
document.getElementById("jk_input").value = '';
document.getElementById("jk_display").value = '';
document.getElementById("jk_input").value = '';
document.getElementById("usia_display").value = '';
document.getElementById("usia_input").value = '';
document.getElementById("usia_input").value = '';
}
}
function fetchLastHistory(balitaId) {
if (!balitaId) {
$('#last-history').slideUp(300);
return;
}
$.get(`/pengukuran-balita/last/${balitaId}`, function(data) {
if (data.found) {
$('#last-tanggal').text(data.tanggal);
$('#last-usia').text(data.usia_saat_ukur);
$('#last-bb').text(data.berat_badan);
$('#last-tb').text(data.tinggi_badan);
$('#last-lk').text(data.lingkar_kepala);
// Tampilkan status gizi jika ada
if (data.hasil) {
$('#last-status').text(data.hasil);
$('#last-status-wrap').show();
} else {
$('#last-status-wrap').hide();
}
$('#last-history').slideDown(300);
} else {
$('#last-history').slideUp(300);
}
});
}
</script>
@endsection

View File

@ -126,6 +126,52 @@ class="form-control custom-input fs-5 fw-bold text-center"
</div>
</div>
{{-- History Pengukuran Terakhir --}}
<div class="col-12" id="last-history" style="display: none;">
<div class="alert border-0 shadow-sm mb-2" style="border-radius: 14px; background: #fff5f0; border-left: 4px solid #FF782D !important;">
<div class="d-flex align-items-center mb-2">
<i class="bi bi-clock-history me-2" style="color: #FF782D; font-size: 1.1rem;"></i>
<strong style="color: #FF782D;">Pengukuran Terakhir</strong>
<span id="last-tanggal" class="ms-auto badge bg-light text-muted" style="font-size: 0.8rem;"></span>
</div>
<div class="row text-center g-2">
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Usia Kehamilan</div>
<div class="fw-bold fs-6" id="last-usia-kehamilan" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">minggu</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Berat Badan</div>
<div class="fw-bold fs-6" id="last-bb" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">kg</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">Tinggi Badan</div>
<div class="fw-bold fs-6" id="last-tb" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">cm</div>
</div>
</div>
<div class="col-3">
<div class="p-2 bg-white rounded-3 shadow-sm">
<div class="text-muted small">LILA</div>
<div class="fw-bold fs-6" id="last-lila" style="color: #2c3e50;">-</div>
<div class="text-muted" style="font-size:0.75rem;">cm</div>
</div>
</div>
<div id="last-status-wrap" class="mt-2 text-center" style="display:none;">
<span class="badge px-3 py-2" id="last-status"
style="border-radius: 20px; font-size: 0.85rem; background: #FF782D; color: white;">
</span>
</div>
</div>
</div>
</div>
<div class="d-flex justify-content-end gap-2 border-top mt-4 pt-4">
<a href="{{ route('pengukuran_ibu_hamil.index') }}" class="btn btn-light px-4" style="border-radius: 10px;">Batal</a>
<button type="submit" class="btn btn-orange px-4 py-2" style="background-color: #FF782D; color: white; border-radius: 10px; font-weight: 600; border: none;">
@ -154,32 +200,56 @@ class="form-control custom-input fs-5 fw-bold text-center"
<script>
$(document).ready(function() {
// Inisialisasi Select2
$('#ibu_id').select2({
placeholder: 'Cari nama ibu hamil...',
allowClear: true,
width: '100%'
width: '100%',
dropdownParent: $('body') // tambah ini, fix search hilang
});
// Event change Select2
$('#ibu_id').on('change', function() {
let selected = document.getElementById("ibu_id");
let opt = selected.options[selected.selectedIndex];
let tgl_lahir = opt.getAttribute("data-tgl");
let ibuId = $(this).val();
// Hitung usia
let opt = $('#ibu_id option:selected');
let tgl_lahir = opt.attr("data-tgl");
if (tgl_lahir) {
let lahir = new Date(tgl_lahir);
let today = new Date();
let usia = today.getFullYear() - lahir.getFullYear();
let m = today.getMonth() - lahir.getMonth();
if (m < 0 || (m === 0 && today.getDate() < lahir.getDate())) {
usia--;
}
if (m < 0 || (m === 0 && today.getDate() < lahir.getDate())) usia--;
document.getElementById("usia").value = usia + " Tahun";
} else {
document.getElementById("usia").value = '';
}
// Fetch history pengukuran terakhir
if (ibuId) {
$.get(`/pengukuran-ibu-hamil/last/${ibuId}`, function(data) {
if (data.found) {
$('#last-tanggal').text(data.tanggal);
$('#last-usia-kehamilan').text(data.usia_kehamilan);
$('#last-bb').text(data.berat_badan);
$('#last-tb').text(data.tinggi_badan);
$('#last-lila').text(data.lila);
if (data.status_gizi) {
$('#last-status').text(data.status_gizi);
$('#last-status-wrap').show();
} else {
$('#last-status-wrap').hide();
}
$('#last-history').slideDown(300);
} else {
$('#last-history').slideUp(300);
}
});
} else {
$('#last-history').slideUp(300);
}
});
});
</script>

View File

@ -64,6 +64,7 @@
Route::middleware(['auth'])->group(function () {
Route::resource('pengukuran_ibu_hamil', PengukuranIbuHamilController::class);
Route::get('/pengukuran-ibu-hamil/last/{id}', [PengukuranIbuHamilController::class, 'getLastPengukuran']);
});
Route::get('/pengukuran-ibu-hamil/{id}/detail',
@ -74,6 +75,7 @@
Route::middleware(['auth'])->group(function () {
Route::resource('pengukuran_balita', PengukuranBalitaController::class);
Route::get('/pengukuran-balita/last/{id}', [PengukuranBalitaController::class, 'getLastPengukuran']);
});
Route::get('/pengukuran-balita/{id}/detail',