diff --git a/static/js/admin_receipt_crop.js b/static/js/receipt_crop.js similarity index 50% rename from static/js/admin_receipt_crop.js rename to static/js/receipt_crop.js index 14853c5..c241ff1 100644 --- a/static/js/admin_receipt_crop.js +++ b/static/js/receipt_crop.js @@ -1,27 +1,45 @@ (function () { + const configs = (window.CROP_CONFIGS && Array.isArray(window.CROP_CONFIGS)) + ? window.CROP_CONFIGS + : (window.CROP_CONFIG ? [window.CROP_CONFIG] : []); + + if (!configs.length) return; + document.addEventListener("DOMContentLoaded", function () { - const cropModal = document.getElementById("adminCropModal"); - const cropImage = document.getElementById("adminCropImage"); - const spinner = document.getElementById("adminCropLoading"); - const saveButton = document.getElementById("adminSaveCrop"); + configs.forEach((cfg) => initCropperSet(cfg)); + }); + + function initCropperSet(cfg) { + const { + modalId, + imageId, + spinnerId, + saveBtnId, + endpoint + } = cfg || {}; + + const cropModal = document.getElementById(modalId); + const cropImage = document.getElementById(imageId); + const spinner = document.getElementById(spinnerId); + const saveButton = document.getElementById(saveBtnId); if (!cropModal || !cropImage || !spinner || !saveButton) return; let cropper; let currentReceiptId; - const currentEndpoint = "/admin/crop_receipt"; + const currentEndpoint = endpoint; cropModal.addEventListener("shown.bs.modal", function (event) { const button = event.relatedTarget; - const baseSrc = button.getAttribute("data-img-src") || ""; - const ver = button.getAttribute("data-version") || Date.now(); + const baseSrc = button?.getAttribute("data-img-src") || ""; + const ver = button?.getAttribute("data-version") || Date.now(); const sep = baseSrc.includes("?") ? "&" : "?"; cropImage.src = baseSrc + sep + "cb=" + ver; - currentReceiptId = button.getAttribute("data-receipt-id"); + currentReceiptId = button?.getAttribute("data-receipt-id"); document.querySelectorAll('.cropper-container').forEach(e => e.remove()); - if (cropper) cropper.destroy(); + if (cropper && cropper.destroy) cropper.destroy(); cropImage.onload = () => { cropper = cropUtils.initCropper(cropImage); }; }); @@ -35,5 +53,5 @@ spinner.classList.remove("d-none"); cropUtils.handleCrop(currentEndpoint, currentReceiptId, cropper, spinner); }); - }); + } })(); diff --git a/static/js/user_receipt_crop.js b/static/js/user_receipt_crop.js deleted file mode 100644 index dcb842a..0000000 --- a/static/js/user_receipt_crop.js +++ /dev/null @@ -1,39 +0,0 @@ -(function () { - document.addEventListener("DOMContentLoaded", function () { - const cropModal = document.getElementById("userCropModal"); - const cropImage = document.getElementById("userCropImage"); - const spinner = document.getElementById("userCropLoading"); - const saveButton = document.getElementById("userSaveCrop"); - - if (!cropModal || !cropImage || !spinner || !saveButton) return; - - let cropper; - let currentReceiptId; - const currentEndpoint = "/user_crop_receipt"; - - cropModal.addEventListener("shown.bs.modal", function (event) { - const button = event.relatedTarget; - const baseSrc = button.getAttribute("data-img-src") || ""; - const ver = button.getAttribute("data-version") || Date.now(); - const sep = baseSrc.includes("?") ? "&" : "?"; - cropImage.src = baseSrc + sep + "cb=" + ver; - - currentReceiptId = button.getAttribute("data-receipt-id"); - - document.querySelectorAll('.cropper-container').forEach(e => e.remove()); - if (cropper) cropper.destroy(); - cropImage.onload = () => { cropper = cropUtils.initCropper(cropImage); }; - }); - - cropModal.addEventListener("hidden.bs.modal", function () { - cropUtils.cleanUpCropper(cropImage, cropper); - cropper = null; - }); - - saveButton.addEventListener("click", function () { - if (!cropper) return; - spinner.classList.remove("d-none"); - cropUtils.handleCrop(currentEndpoint, currentReceiptId, cropper, spinner); - }); - }); -})(); diff --git a/templates/admin/receipts.html b/templates/admin/receipts.html index ca234b7..3c7f2b8 100644 --- a/templates/admin/receipts.html +++ b/templates/admin/receipts.html @@ -213,7 +213,16 @@ {% block scripts %} - + + {% endblock %} diff --git a/templates/edit_my_list.html b/templates/edit_my_list.html index 191e8a4..3bbba0f 100644 --- a/templates/edit_my_list.html +++ b/templates/edit_my_list.html @@ -244,8 +244,17 @@ {% endblock %} {% block scripts %} + - +