From 88aef852e06894698ccf27a2749a9dfbb9471624 Mon Sep 17 00:00:00 2001 From: muamars Date: Thu, 12 Mar 2026 10:22:40 +0700 Subject: [PATCH] update: fixing rerendering --- .../driver/js/detail-penjemputan-non-tps.js | 49 +++++++++++++------ wwwroot/driver/js/detail-penjemputan-tps.js | 47 ++++++++++++------ 2 files changed, 67 insertions(+), 29 deletions(-) diff --git a/wwwroot/driver/js/detail-penjemputan-non-tps.js b/wwwroot/driver/js/detail-penjemputan-non-tps.js index 7c1f30e..d01b80b 100644 --- a/wwwroot/driver/js/detail-penjemputan-non-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-non-tps.js @@ -121,15 +121,7 @@ document.addEventListener('DOMContentLoaded', function() {
- ${tps.fotoKedatangan.length > 0 && !tps.fotoKedatanganUploaded ? ` - - ` : tps.fotoKedatanganUploaded ? ` -
- ✓ Foto kedatangan sudah diupload -
- ` : ''} +
${getKedatanganUploadStateMarkup(tps)}
@@ -258,14 +250,14 @@ document.addEventListener('DOMContentLoaded', function() { tps.fotoKedatanganUploaded = false; updateWaktuKedatangan(); updateMultiPreview(this, form.querySelector('.tps-preview-kedatangan')); - renderTpsForm(); + refreshKedatanganUploadState(form); }); fotoPetugasInput.addEventListener('change', function() { tps.fotoPetugas = Array.from(this.files); tps.fotoPetugasUploaded = false; updateMultiPreview(this, form.querySelector('.tps-preview-petugas')); - renderTpsForm(); + refreshPetugasUploadState(form); }); namaPetugasInput.addEventListener('input', function() { @@ -660,7 +652,7 @@ document.addEventListener('DOMContentLoaded', function() { if (isUploaded) { return `
✓ Foto timbangan sudah diupload
-

Kalau mau revisi, pilih file baru di atas. Status upload akan direset otomatis.

+

Jika ingin revisi, pilih file baru diatas. Status upload akan tereset otomatis.

`; } @@ -677,6 +669,31 @@ document.addEventListener('DOMContentLoaded', function() { `; } + function getKedatanganUploadStateMarkup(tps) { + if (tps.fotoKedatanganUploaded) { + return '
✓ Foto kedatangan sudah diupload
'; + } + if (!tps.fotoKedatangan.length) { + return ''; + } + return ``; + } + + function refreshKedatanganUploadState(form) { + const stateContainer = form.querySelector('.kedatangan-upload-state'); + if (!stateContainer) return; + + const tps = tpsData[activeTpsIndex]; + stateContainer.innerHTML = getKedatanganUploadStateMarkup(tps); + + const btnUploadKedatangan = stateContainer.querySelector('.tps-btn-upload-kedatangan'); + if (btnUploadKedatangan) { + btnUploadKedatangan.addEventListener('click', uploadFotoKedatangan); + } + + refreshSubmitButtonState(form); + } + function getPetugasUploadStateMarkup(tps) { if (tps.fotoPetugasUploaded) { return '
✓ Foto petugas sudah diupload
'; @@ -968,7 +985,7 @@ document.addEventListener('DOMContentLoaded', function() { const ocrInfo = item.querySelector('.input-ocr-info')?.textContent || 'OCR: belum diproses.'; tps.timbangan.push({ - file: fileInput.files[0] || null, + file: fileInput.files[0] || previousTimbangan[index]?.file || null, berat: [weight], jenisSampah: [jenisSampah], lokasiAngkut: [], @@ -1050,7 +1067,8 @@ document.addEventListener('DOMContentLoaded', function() { } alert(`Upload ${tps.fotoKedatangan.length} foto kedatangan\n(Implementasi upload ke server)`); tps.fotoKedatanganUploaded = true; - renderTpsForm(); + const form = tpsContentContainer.querySelector('form'); + if (form) refreshKedatanganUploadState(form); } function uploadFotoPetugas() { @@ -1065,7 +1083,8 @@ document.addEventListener('DOMContentLoaded', function() { } alert(`Upload ${tps.fotoPetugas.length} foto petugas untuk ${tps.name}\n(Implementasi upload ke server)`); tps.fotoPetugasUploaded = true; - renderTpsForm(); + const form = tpsContentContainer.querySelector('form'); + if (form) refreshPetugasUploadState(form); } function submitTpsData() { diff --git a/wwwroot/driver/js/detail-penjemputan-tps.js b/wwwroot/driver/js/detail-penjemputan-tps.js index c09e4c7..a530adf 100644 --- a/wwwroot/driver/js/detail-penjemputan-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-tps.js @@ -250,15 +250,7 @@ const DetailPenjemputan = (function() {
- ${tps.fotoKedatangan.length > 0 && !tps.fotoKedatanganUploaded ? ` - - ` : tps.fotoKedatanganUploaded ? ` -
- ✓ Foto kedatangan sudah diupload -
- ` : ''} +
${getKedatanganUploadStateMarkup(tps)}
@@ -338,14 +330,14 @@ const DetailPenjemputan = (function() { tps.fotoKedatanganUploaded = false; updateWaktuKedatangan(); updateMultiPreview(this, form.querySelector('.tps-preview-kedatangan')); - renderTpsForm(); + refreshKedatanganUploadState(form); }); fotoPetugasInput.addEventListener('change', function() { tps.fotoPetugas = Array.from(this.files); tps.fotoPetugasUploaded = false; updateMultiPreview(this, form.querySelector('.tps-preview-petugas')); - renderTpsForm(); + refreshPetugasUploadState(form); }); namaPetugasInput.addEventListener('input', function() { @@ -685,7 +677,7 @@ const DetailPenjemputan = (function() { if (isUploaded) { return `
✓ Foto timbangan sudah diupload
-

Kalau mau revisi, pilih file baru di atas. Status upload akan direset otomatis.

+

Jika ingin revisi, pilih file baru diatas. Status upload akan tereset otomatis.

`; } @@ -702,6 +694,31 @@ const DetailPenjemputan = (function() { `; } + function getKedatanganUploadStateMarkup(tps) { + if (tps.fotoKedatanganUploaded) { + return '
✓ Foto kedatangan sudah diupload
'; + } + if (!tps.fotoKedatangan.length) { + return ''; + } + return ``; + } + + function refreshKedatanganUploadState(form) { + const stateContainer = form.querySelector('.kedatangan-upload-state'); + if (!stateContainer) return; + + const tps = state.tpsData[state.activeTpsIndex]; + stateContainer.innerHTML = getKedatanganUploadStateMarkup(tps); + + const btnUploadKedatangan = stateContainer.querySelector('.tps-btn-upload-kedatangan'); + if (btnUploadKedatangan) { + btnUploadKedatangan.addEventListener('click', uploadFotoKedatangan); + } + + refreshSubmitButtonState(form); + } + function getPetugasUploadStateMarkup(tps) { if (tps.fotoPetugasUploaded) { return '
✓ Foto petugas sudah diupload
'; @@ -1211,7 +1228,8 @@ async function applyWatermark(file, photoNumber) { alert(`Upload ${tps.fotoKedatangan.length} foto kedatangan untuk ${tps.name}\n(Implementasi upload ke server)`); tps.fotoKedatanganUploaded = true; - renderTpsForm(); + const form = elements.tpsContentContainer.querySelector('form'); + if (form) refreshKedatanganUploadState(form); } function uploadFotoPetugas() { @@ -1228,7 +1246,8 @@ async function applyWatermark(file, photoNumber) { alert(`Upload ${tps.fotoPetugas.length} foto petugas untuk ${tps.name}\n(Implementasi upload ke server)`); tps.fotoPetugasUploaded = true; - renderTpsForm(); + const form = elements.tpsContentContainer.querySelector('form'); + if (form) refreshPetugasUploadState(form); } function buildSubmitFormData(tps) {