Files
lpj/resources/views/surveyor/components/print-out/informasi.blade.php
Daeng Deni Mardaeni 0d5b6b1529 feat(lpj-module): tambah tampilan laporan inspeksi & refactor detail lokasi
Ringkasan:
- Menambahkan halaman hasil inspeksi dan tampilan cetak laporan.
- Mengekstrak komponen detail lokasi ke partial baru agar reusable.
- Menambahkan null-safe access dan perbaikan binding data di view.
- Merapikan tombol cetak dan navigasi agar konsisten antar halaman.

Perubahan utama:
1. activitydetail.blade.php → ubah tombol print jadi route, tambah null-safe user/branch.
2. detail-lokasi.blade.php (baru) → komponen reusable untuk detail lokasi dengan formatLabel & tanggal.
3. form-penilai.blade.php → refactor luas menggunakan match, hapus fungsi debug & Swal loading.
4. print-out-dokument.blade.php → gunakan partial lpj::component.detail-lokasi untuk detail lokasi.
5. show-laporan-inspeksi.blade.php (baru) → tab 'Laporan' & 'Hasil Inspeksi' + tombol cetak dan back.
6. print-out-sederhana / print-out-standar → penyesuaian tampilan & binding data.
7. signature-approval.blade.php → perbaikan layout area tanda tangan.
8. surveyor/components/* → normalisasi tampilan, validasi gambar, dan penyelarasan fakta/lingkungan.
9. routes/web.php → tambah dan ubah rute untuk laporan inspeksi dan cetak laporan.

Catatan:
- Tidak ada perubahan query database; semua modifikasi bersifat tampilan.
- Logging tambahan untuk observabilitas proses render laporan.
2025-11-09 21:19:58 +07:00

100 lines
4.1 KiB
PHP

@php
use Illuminate\Support\Facades\Storage;
// Daftar kunci informasi dan tipe foto yang akan ditampilkan
$informasi = [
'peruntukan', 'kdb', 'kdh', 'gsb', 'max_lantai', 'klb', 'gss', 'pelebaran_jalan', 'nama_petugas',
];
$fotoTypes = [
'upload_gs', 'foto_sentuh_tanahku', 'foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat',
];
$customLabels = [
'upload_gs' => 'Gambar Situasi',
'foto_sentuh_tanahku' => 'Sentuh Tanahku',
'foto_gistaru' => 'Gistaru',
'foto_bhumi' => 'Bhumi',
'foto_argis_region' => 'Blad Tata Ruang',
'foto_tempat' => 'Peta Lokasi',
];
// Periksa apakah ada informasi dinas tata ruang yang valid
$hasInformasi = collect($informasi)->some(fn ($key) => isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-');
// Periksa apakah ada foto yang valid (menggunakan Storage disk public)
$hasValidPhotos = collect($fotoTypes)->some(function ($type) use ($forminspeksi) {
$imagePath = $forminspeksi[$type] ?? null;
return is_string($imagePath) && Storage::disk('public')->exists($imagePath);
});
// Siapkan catatan sebagai array, kemudian periksa apakah ada catatan yang perlu diperhatikan
$notes = (array) ($forminspeksi['fakta']['keterangan'] ?? []);
$hasNotes = count($notes) > 0;
// Log render status untuk debugging
\Log::info('Render print-out informasi tata ruang', [
'hasInformasi' => $hasInformasi,
'hasValidPhotos' => $hasValidPhotos,
'hasNotes' => $hasNotes,
]);
@endphp
@if ($hasInformasi || $hasValidPhotos || $hasNotes)
<div class="no-break">
<table style="width: 100%; border: 1px solid #000; border-collapse: collapse;">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style="text-transform: uppercase; text-align: center; margin: 0;">Informasi Dinas Tata Ruang</h2>
</td>
</tr>
</table>
<table>
@if ($hasInformasi)
<tr>
<td width="20%" style="vertical-align: top;">Informasi Dinas Tata Ruang</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($informasi as $key)
@if (($val = $forminspeksi['fakta'][$key] ?? null) && $val !== '-')
<p>- {{ strlen($key) === 3 ? strtoupper($key) : ucfirst(str_replace('_', ' ', $key)) }}: {{ $val }}</p>
@endif
@endforeach
</td>
</tr>
@endif
@if ($hasValidPhotos)
@foreach ($fotoTypes as $type)
@php
$imagePath = $forminspeksi[$type] ?? null;
@endphp
@if (is_string($imagePath) && Storage::disk('public')->exists($imagePath))
<tr>
<td width="20%" style="vertical-align: top;">{{ $customLabels[$type] ?? '' }}</td>
<td width="1%" style="vertical-align: top;"></td>
<td style="width: 79%">
<img src="{{ asset('storage/' . $imagePath) }}" alt="{{ $customLabels[$type] ?? '' }}"
style="max-height: 400px; height: auto; max-width: 100%;">
</td>
</tr>
@endif
@endforeach
@endif
@if ($hasNotes)
<tr>
<td width="20%" style="vertical-align: top;">Catatan yang Perlu Diperhatikan</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@foreach ($notes as $note)
<p>{!! nl2br(e($note)) !!}</p>
@endforeach
</td>
</tr>
@endif
</table>
</div>
@endif