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 %}
+
-
+