✨ 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.
This commit is contained in:
@@ -130,7 +130,7 @@
|
||||
<img id="upload-gs-preview"
|
||||
src="{{ isset($forminspeksi['upload_gs']) && is_string($forminspeksi['upload_gs']) && !empty($forminspeksi['upload_gs']) ? asset('storage/' . $forminspeksi['upload_gs']) : '' }}"
|
||||
alt="Foto Gs" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($forminspeksi['upload_gs']) && is_string($forminspeksi['upload_gs']) && !empty($forminspeksi['upload_gs']) ? '' : 'display: none;' }} max-width: 20rem;" />
|
||||
style="{{ isset($forminspeksi['upload_gs']) && is_string($forminspeksi['upload_gs']) && !empty($forminspeksi['upload_gs']) ? '' : 'display: none;' }} max-width: 30rem;" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -146,19 +146,18 @@
|
||||
<input id="inputGistaru" type="file" name="foto_sentuh_tanahku"
|
||||
class="w-full file-input file-input-bordered"
|
||||
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
|
||||
onchange="uploadFile(this, 'sentuh_tanahku-preview', 'foto_sentuh_tanahku')">
|
||||
onchange="uploadFile(this, 'sentuh_tanahku-preview', 'foto_sentuh_tanahku')"
|
||||
>
|
||||
|
||||
<img id="sentuh_tanahku-preview"
|
||||
src="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? asset('storage/' . $forminspeksi['foto_sentuh_tanahku']) : '' }}"
|
||||
src="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? asset('storage/' . $forminspeksi['foto_sentuh_tanahku']) : '' }}"
|
||||
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? '' : 'display: none;' }} max-width: 20rem;" />
|
||||
style="{{ isset($forminspeksi['foto_sentuh_tanahku']) && is_string($forminspeksi['foto_sentuh_tanahku']) && !empty($forminspeksi['foto_sentuh_tanahku']) ? '' : 'display: none;' }} max-width: 30rem;"/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
|
||||
<label class="form-label max-w-56">
|
||||
<span class="form-label">Gistaru</span>
|
||||
@@ -174,7 +173,7 @@
|
||||
<img id="gistaru-preview"
|
||||
src="{{ isset($forminspeksi['foto_gistaru']) && is_string($forminspeksi['foto_gistaru']) && !empty($forminspeksi['foto_gistaru']) ? asset('storage/' . $forminspeksi['foto_gistaru']) : '' }}"
|
||||
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
|
||||
style="{{ isset($forminspeksi['foto_gistaru']) && is_string($forminspeksi['foto_gistaru']) && !empty($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 20rem;" />
|
||||
style="{{ isset($forminspeksi['foto_gistaru']) && is_string($forminspeksi['foto_gistaru']) && !empty($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 30rem;" />
|
||||
|
||||
|
||||
</div>
|
||||
@@ -198,17 +197,15 @@
|
||||
class="w-full file-input file-input-bordered"
|
||||
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
|
||||
onchange="uploadFile(this, 'bhumi-preview', 'foto_bhumi')">
|
||||
@php
|
||||
$bhumiPath =
|
||||
isset($forminspeksi['foto_bhumi']) &&
|
||||
is_string($forminspeksi['foto_bhumi']) &&
|
||||
!empty($forminspeksi['foto_bhumi'])
|
||||
@php
|
||||
$bhumiPath = isset($forminspeksi['foto_bhumi']) && is_string($forminspeksi['foto_bhumi']) && !empty($forminspeksi['foto_bhumi'])
|
||||
? asset('storage/' . $forminspeksi['foto_bhumi'])
|
||||
: '';
|
||||
@endphp
|
||||
<img id="bhumi-preview" src="{{ $bhumiPath }}" alt="Foto Bhumi"
|
||||
class="mt-2 max-w-full h-auto"
|
||||
style="{{ $bhumiPath ? '' : 'display: none;' }} max-width: 20rem;" />
|
||||
@endphp
|
||||
<img id="bhumi-preview"
|
||||
src="{{ $bhumiPath }}"
|
||||
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
|
||||
style="{{ $bhumiPath ? '' : 'display: none;' }} max-width: 30rem;" />
|
||||
</div>
|
||||
<a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light" target="_blank">
|
||||
<i class="ki-filled ki-map"></i> Bhumi
|
||||
@@ -229,18 +226,17 @@
|
||||
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
|
||||
onchange="uploadFile(this, 'argis-region-preview', 'foto_argis_region')">
|
||||
@php
|
||||
$argisRegionPath =
|
||||
isset($forminspeksi['foto_argis_region']) &&
|
||||
is_string($forminspeksi['foto_argis_region']) &&
|
||||
!empty($forminspeksi['foto_argis_region'])
|
||||
? asset('storage/' . $forminspeksi['foto_argis_region'])
|
||||
: '';
|
||||
$argisRegionPath = isset($forminspeksi['foto_argis_region']) && is_string($forminspeksi['foto_argis_region']) && !empty($forminspeksi['foto_argis_region'])
|
||||
? asset('storage/' . $forminspeksi['foto_argis_region'])
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<img id="argis-region-preview" src="{{ $argisRegionPath }}" alt="Foto Argis Region"
|
||||
class="mt-2 max-w-full h-auto"
|
||||
style="{{ $argisRegionPath ? '' : 'display: none;' }} max-width: 20rem;">
|
||||
<img id="argis-region-preview"
|
||||
src="{{ $argisRegionPath }}"
|
||||
alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
|
||||
style="{{ $argisRegionPath ? '' : 'display: none;' }} max-width: 30rem;">
|
||||
</div>
|
||||
< </div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Upload Photo Button -->
|
||||
@@ -260,17 +256,14 @@
|
||||
</button>
|
||||
</div>
|
||||
@php
|
||||
$fotoTempat =
|
||||
isset($forminspeksi['foto_tempat']) &&
|
||||
is_string($forminspeksi['foto_tempat']) &&
|
||||
!empty($forminspeksi['foto_tempat'])
|
||||
? asset('storage/' . $forminspeksi['foto_tempat'])
|
||||
: '';
|
||||
$fotoTempat = isset($forminspeksi['foto_tempat']) && is_string($forminspeksi['foto_tempat']) && !empty($forminspeksi['foto_tempat'])
|
||||
? asset('storage/' . $forminspeksi['foto_tempat'])
|
||||
: '';
|
||||
@endphp
|
||||
|
||||
<img id="foto_tempat-preview" src="{{ $fotoTempat ?: '' }}" alt="Foto Tempat"
|
||||
class="mt-2 max-w-full h-auto"
|
||||
style="max-width: 20rem; {{ $fotoTempat ? '' : 'display: none;' }}">
|
||||
style="max-width: 30rem; {{ $fotoTempat ? '' : 'display: none;' }}">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -321,7 +314,6 @@
|
||||
// Ambil file dari elemen input
|
||||
const file = inputElement.files[0];
|
||||
|
||||
|
||||
if (!file) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
|
||||
Reference in New Issue
Block a user