edit edukasi
This commit is contained in:
parent
860615f00e
commit
21029e9389
|
|
@ -158,4 +158,26 @@ public function cetakPdf(Request $request, $id)
|
||||||
|
|
||||||
return $pdf->download('laporan_balita.pdf');
|
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]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -156,5 +156,26 @@ public function cetakPdf(Request $request, $id)
|
||||||
return $pdf->download('laporan_ibu_hamil.pdf');
|
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]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,22 +36,47 @@
|
||||||
<span class="input-group-text bg-white border-end-0">
|
<span class="input-group-text bg-white border-end-0">
|
||||||
<i class="bi bi-tag text-muted"></i>
|
<i class="bi bi-tag text-muted"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<select name="kategori" class="form-select border-start-0 custom-input" required>
|
<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)">
|
<optgroup label="Kategori Balita (Stunting)">
|
||||||
<option value="Sangat Pendek" {{ old('kategori', $t_edukasi->kategori) == 'Sangat Pendek' ? 'selected' : '' }}>Sangat Pendek</option>
|
<option value="Sangat Pendek"
|
||||||
<option value="Pendek" {{ old('kategori', $t_edukasi->kategori) == 'Pendek' ? 'selected' : '' }}>Pendek</option>
|
{{ old('kategori', $t_edukasi->kategori) == 'Sangat Pendek' ? 'selected' : '' }}>
|
||||||
<option value="Normal" {{ old('kategori', $t_edukasi->kategori) == 'Normal' ? 'selected' : '' }}>Normal</option>
|
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>
|
||||||
|
|
||||||
<optgroup label="Kategori Ibu Hamil">
|
<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 kurang"
|
||||||
<option value="ibu hamil gizi normal" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Gizi Normal' ? 'selected' : '' }}>Gizi Normal</option>
|
{{ old('kategori', $t_edukasi->kategori) == 'Ibu hamil gizi kurang' ? 'selected' : '' }}>
|
||||||
<option value="ibu hamil gizi lebih" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Gizi Lebih' ? 'selected' : '' }}>Gizi Lebih</option>
|
Gizi Kurang
|
||||||
<option value="ibu hamil obesitas" {{ old('kategori', $t_edukasi->kategori) == 'Ibu Hamil Obesitas' ? 'selected' : '' }}>Obesitas</option>
|
</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>
|
</optgroup>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,52 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</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">
|
<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>
|
<a href="{{ route('pengukuran_balita.index') }}" class="btn btn-light px-4" style="border-radius: 10px;">Batal</a>
|
||||||
|
|
@ -127,19 +173,17 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Inisialisasi Select2
|
|
||||||
$('#balita_id').select2({
|
$('#balita_id').select2({
|
||||||
placeholder: 'Cari nama balita...',
|
placeholder: 'Cari nama balita...',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
width: '100%'
|
width: '100%'
|
||||||
});
|
});
|
||||||
|
|
||||||
// Event change untuk Select2 harus pakai .on('change')
|
|
||||||
$('#balita_id').on('change', function() {
|
$('#balita_id').on('change', function() {
|
||||||
updateData();
|
updateData();
|
||||||
|
fetchLastHistory($(this).val());
|
||||||
});
|
});
|
||||||
|
|
||||||
// Event change tanggal tetap sama
|
|
||||||
document.getElementById("tanggal_ukur").addEventListener("change", updateData);
|
document.getElementById("tanggal_ukur").addEventListener("change", updateData);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -153,19 +197,48 @@ function updateData() {
|
||||||
document.getElementById("jk_input").value = jk;
|
document.getElementById("jk_input").value = jk;
|
||||||
|
|
||||||
let tglLahir = new Date(opt.getAttribute("data-tgl"));
|
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
|
let totalBulan = (tglUkur.getFullYear() - tglLahir.getFullYear()) * 12
|
||||||
+ (tglUkur.getMonth() - tglLahir.getMonth());
|
+ (tglUkur.getMonth() - tglLahir.getMonth());
|
||||||
if (tglUkur.getDate() < tglLahir.getDate()) totalBulan--;
|
if (tglUkur.getDate() < tglLahir.getDate()) totalBulan--;
|
||||||
|
|
||||||
document.getElementById("usia_display").value = (totalBulan < 0 ? 0 : totalBulan) + " Bulan";
|
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 {
|
} else {
|
||||||
document.getElementById("jk_display").value = '';
|
document.getElementById("jk_display").value = '';
|
||||||
document.getElementById("jk_input").value = '';
|
document.getElementById("jk_input").value = '';
|
||||||
document.getElementById("usia_display").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>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,52 @@ class="form-control custom-input fs-5 fw-bold text-center"
|
||||||
</div>
|
</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 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">
|
<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>
|
<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;">
|
<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>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Inisialisasi Select2
|
|
||||||
$('#ibu_id').select2({
|
$('#ibu_id').select2({
|
||||||
placeholder: 'Cari nama ibu hamil...',
|
placeholder: 'Cari nama ibu hamil...',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
width: '100%'
|
width: '100%',
|
||||||
|
dropdownParent: $('body') // tambah ini, fix search hilang
|
||||||
});
|
});
|
||||||
|
|
||||||
// Event change Select2
|
|
||||||
$('#ibu_id').on('change', function() {
|
$('#ibu_id').on('change', function() {
|
||||||
let selected = document.getElementById("ibu_id");
|
let ibuId = $(this).val();
|
||||||
let opt = selected.options[selected.selectedIndex];
|
|
||||||
let tgl_lahir = opt.getAttribute("data-tgl");
|
// Hitung usia
|
||||||
|
let opt = $('#ibu_id option:selected');
|
||||||
|
let tgl_lahir = opt.attr("data-tgl");
|
||||||
|
|
||||||
if (tgl_lahir) {
|
if (tgl_lahir) {
|
||||||
let lahir = new Date(tgl_lahir);
|
let lahir = new Date(tgl_lahir);
|
||||||
let today = new Date();
|
let today = new Date();
|
||||||
let usia = today.getFullYear() - lahir.getFullYear();
|
let usia = today.getFullYear() - lahir.getFullYear();
|
||||||
let m = today.getMonth() - lahir.getMonth();
|
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";
|
document.getElementById("usia").value = usia + " Tahun";
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("usia").value = '';
|
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>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function () {
|
Route::middleware(['auth'])->group(function () {
|
||||||
Route::resource('pengukuran_ibu_hamil', PengukuranIbuHamilController::class);
|
Route::resource('pengukuran_ibu_hamil', PengukuranIbuHamilController::class);
|
||||||
|
Route::get('/pengukuran-ibu-hamil/last/{id}', [PengukuranIbuHamilController::class, 'getLastPengukuran']);
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/pengukuran-ibu-hamil/{id}/detail',
|
Route::get('/pengukuran-ibu-hamil/{id}/detail',
|
||||||
|
|
@ -74,6 +75,7 @@
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function () {
|
Route::middleware(['auth'])->group(function () {
|
||||||
Route::resource('pengukuran_balita', PengukuranBalitaController::class);
|
Route::resource('pengukuran_balita', PengukuranBalitaController::class);
|
||||||
|
Route::get('/pengukuran-balita/last/{id}', [PengukuranBalitaController::class, 'getLastPengukuran']);
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/pengukuran-balita/{id}/detail',
|
Route::get('/pengukuran-balita/{id}/detail',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue