diff --git a/wwwroot/driver/js/detail-penjemputan-non-tps.js b/wwwroot/driver/js/detail-penjemputan-non-tps.js index 5482679..c50ef6b 100644 --- a/wwwroot/driver/js/detail-penjemputan-non-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-non-tps.js @@ -416,7 +416,7 @@ document.addEventListener('DOMContentLoaded', async function() { - +
${getKedatanganUploadStateMarkup(tps)}
@@ -464,7 +464,7 @@ document.addEventListener('DOMContentLoaded', async function() { - +
${getPetugasUploadStateMarkup(tps)}
diff --git a/wwwroot/driver/js/detail-penjemputan-tps.js b/wwwroot/driver/js/detail-penjemputan-tps.js index 5433f04..ce2c4b7 100644 --- a/wwwroot/driver/js/detail-penjemputan-tps.js +++ b/wwwroot/driver/js/detail-penjemputan-tps.js @@ -748,7 +748,7 @@ const DetailPenjemputan = (function () { const submitState = getSubmitState(tps); const actionMarkup = tps.submitted ? `
- + @@ -801,7 +801,7 @@ const DetailPenjemputan = (function () {
- +
${getKedatanganUploadStateMarkup(tps)}
@@ -857,7 +857,7 @@ const DetailPenjemputan = (function () { - +
${getPetugasUploadStateMarkup(tps)}
@@ -881,17 +881,23 @@ const DetailPenjemputan = (function () { const btnAddTimbangan = form.querySelector(".tps-btn-add-timbangan"); fotoKedatanganInput.addEventListener('change', function() { - tps.fotoKedatangan = Array.from(this.files); - tps.fotoKedatanganUploaded = false; + replaceSelectedPhotos( + tps, + 'fotoKedatangan', + this.files, + form.querySelector('.tps-preview-kedatangan') + ); updateWaktuKedatangan(tps.index); - updateMultiPreview(this, form.querySelector('.tps-preview-kedatangan')); refreshKedatanganUploadState(form); }); fotoPetugasInput.addEventListener('change', function() { - tps.fotoPetugas = Array.from(this.files); - tps.fotoPetugasUploaded = false; - updateMultiPreview(this, form.querySelector('.tps-preview-petugas')); + replaceSelectedPhotos( + tps, + 'fotoPetugas', + this.files, + form.querySelector('.tps-preview-petugas') + ); refreshPetugasUploadState(form); }); @@ -949,25 +955,60 @@ const DetailPenjemputan = (function () { const form = elements.tpsContentContainer.querySelector("form"); if (!form) return; - const previewKedatangan = form.querySelector('.tps-preview-kedatangan'); - if (previewKedatangan) { - if (tps.fotoKedatangan.length > 0) { - renderStoredPhotos(tps.fotoKedatangan, previewKedatangan); - } else if (tps.fotoKedatanganUploaded && tps.fotoKedatanganFileNames.length > 0) { - renderServerImagePreview(tps.fotoKedatanganFileNames, previewKedatangan); - } - } - - const previewPetugas = form.querySelector('.tps-preview-petugas'); - if (previewPetugas) { - if (tps.fotoPetugas.length > 0) { - renderStoredPhotos(tps.fotoPetugas, previewPetugas); - } else if (tps.fotoPetugasUploaded && tps.fotoPetugasFileNames.length > 0) { - renderServerImagePreview(tps.fotoPetugasFileNames, previewPetugas); - } - } + const previewKedatangan = form.querySelector('.tps-preview-kedatangan'); + if (previewKedatangan) { + renderPhotoPreviewByState({ + files: tps.fotoKedatangan, + uploaded: tps.fotoKedatanganUploaded, + fileNames: tps.fotoKedatanganFileNames, + container: previewKedatangan, + }); } + const previewPetugas = form.querySelector('.tps-preview-petugas'); + if (previewPetugas) { + renderPhotoPreviewByState({ + files: tps.fotoPetugas, + uploaded: tps.fotoPetugasUploaded, + fileNames: tps.fotoPetugasFileNames, + container: previewPetugas, + }); + } + } + + function renderPhotoPreviewByState({ files, uploaded, fileNames, container }) { + if (!container) return; + + container.innerHTML = ''; + + if (Array.isArray(files) && files.length > 0) { + renderStoredPhotos(files, container); + return; + } + + if (uploaded && Array.isArray(fileNames) && fileNames.length > 0) { + renderServerImagePreview(fileNames, container); + } + } + + function replaceSelectedPhotos(tps, fieldName, files, previewContainer) { + const fileNamesField = `${fieldName}FileNames`; + const uploadedField = `${fieldName}Uploaded`; + + tps[fieldName] = Array.from(files || []); + tps[fileNamesField] = []; + tps[uploadedField] = false; + + renderPhotoPreviewByState({ + files: tps[fieldName], + uploaded: tps[uploadedField], + fileNames: tps[fileNamesField], + container: previewContainer, + }); + + saveState(); + } + function renderStoredPhotos(files, container) { container.innerHTML = ""; container.className = "space-y-2";