From fff721dd185f5b97f7ae7a6e64189e55887ff590 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 05 Jul 2026 18:36:57 +0000
Subject: [PATCH] =Cleaning up the Square integration (still a bit more to do yet). Also majorly overhauled /rest/ files to ignore a rest request 'user' paramater, and rely on get_current_user_id() instead.

---
 assets/js/concise/CopyHours.js |   44 +++++++++++++++-----------------------------
 1 files changed, 15 insertions(+), 29 deletions(-)

diff --git a/assets/js/concise/CopyHours.js b/assets/js/concise/CopyHours.js
index 250952e..56f649b 100644
--- a/assets/js/concise/CopyHours.js
+++ b/assets/js/concise/CopyHours.js
@@ -42,25 +42,19 @@
 				case 'modal-open':
 					let e = data.event;
 					let modal = data.modal;
-					const dayGroup = e.target.closest('.group-fields:not(.hours)');
-					console.log(dayGroup);
+					const dayGroup = e.target.closest('.group:not([data-field="openingHours"])');
 					const dayName = this.getDayNameFromGroup(dayGroup);
-					console.log(dayName);
 					if (!dayName) return;
 
 					this.currentSourceDay = dayName;
-					console.log(dayName);
 
 					// Get source day hours
 					const sourceData = this.getSourceDayData(dayGroup);
 
-					console.log(sourceData);
-
 					// Update source day info
 					const sourceDayEl = modal.querySelector('.source-day');
 					const sourceHoursEl = modal.querySelector('.source-hours');
 
-					console.log('Elements: ', {sourceDayEl, sourceHoursEl});
 
 					if (sourceDayEl) {
 						sourceDayEl.textContent = window.uppercaseFirst ?
@@ -118,15 +112,13 @@
 	}
 
 	getDayNameFromGroup(group) {
-		const classList = Array.from(group.classList);
-		return this.days.find(day => classList.includes(day));
+		return group.dataset.field.replace('openingHours|','');
 	}
 
 	getSourceDayData(dayGroup) {
-		console.log(dayGroup);
-		const openCheckbox = dayGroup.querySelector('input[type="checkbox"][name$=":open"]');
-		const opensInput = dayGroup.querySelector('input[name$=":time_opens"]');
-		const closesInput = dayGroup.querySelector('input[name$=":time_closes"]');
+		const openCheckbox = dayGroup.querySelector(`input[type="checkbox"][name="openingHours|${this.currentSourceDay}|isOpen"]`);
+		const opensInput = dayGroup.querySelector(`input[name="openingHours|${this.currentSourceDay}|opens"]`);
+		const closesInput = dayGroup.querySelector(`input[name="openingHours|${this.currentSourceDay}|closes"]`);
 
 		return {
 			isOpen: openCheckbox ? openCheckbox.checked : false,
@@ -138,7 +130,7 @@
 	applyCopyHours() {
 		if (!this.currentSourceDay) return;
 
-		const sourceGroup = document.querySelector(`.group-fields.${this.currentSourceDay}`);
+		const sourceGroup = document.querySelector(`.group[data-field="openingHours|${this.currentSourceDay}"]`);
 		if (!sourceGroup) return;
 
 		const sourceData = this.getSourceDayData(sourceGroup);
@@ -164,17 +156,13 @@
 	}
 
 	applyHoursToDay(dayName, sourceData) {
-		const targetGroup = document.querySelector(`.group-fields.${dayName}`);
+		const targetGroup = document.querySelector(`.group[data-field="openingHours|${dayName}`);
 		if (!targetGroup) return;
 
-		const openCheckbox = targetGroup.querySelector('input[type="checkbox"][name$=":open"]');
-		const opensInput = targetGroup.querySelector('input[name$=":time_opens"]');
-		const closesInput = targetGroup.querySelector('input[name$=":time_closes"]');
-		console.log('applying hours to days: ', {
-			openCheckbox,
-			opensInput,
-			closesInput
-		});
+		const openCheckbox = targetGroup.querySelector(`input[type="checkbox"][name="openingHours|${dayName}|isOpen"]`);
+		const opensInput = targetGroup.querySelector(`input[name="openingHours|${dayName}|opens"]`);
+		const closesInput = targetGroup.querySelector(`input[name="openingHours|${dayName}|closes"]`);
+
 		if (!openCheckbox) return;
 
 		// Set checkbox state
@@ -185,10 +173,14 @@
 		// Set time values if open
 		if (sourceData.isOpen && opensInput && closesInput) {
 			opensInput.value = sourceData.opens;
+			opensInput.dispatchEvent(new Event('change', {bubbles: true}));
 			closesInput.value = sourceData.closes;
+			closesInput.dispatchEvent(new Event('change', {bubbles: true}));
 		} else if (opensInput && closesInput) {
 			opensInput.value = '';
+			opensInput.dispatchEvent(new Event('change', {bubbles: true}));
 			closesInput.value = '';
+			closesInput.dispatchEvent(new Event('change', {bubbles: true}));
 		}
 
 	}
@@ -196,12 +188,6 @@
 	showSuccessFeedback(count) {
 		// Create or update feedback element
 		let feedback = document.getElementById('copy-success-feedback');
-		if (!feedback) {
-			feedback = document.createElement('div');
-			feedback.id = 'copy-success-feedback';
-			feedback.className = 'copy-success-feedback';
-			document.body.appendChild(feedback);
-		}
 
 		const message = count === 1 ?
 			'Hours copied to 1 day successfully!' :

--
Gitblit v1.10.0