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
? `
-
-
+
${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";