diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb
index 013551d9..0bca1c86 100755
--- a/app/views/layouts/_header.html.erb
+++ b/app/views/layouts/_header.html.erb
@@ -331,35 +331,24 @@
// Check Internet Connection status
document.addEventListener('DOMContentLoaded', function() {
function updateConnectionStatus() {
- const statusTextEl = document.querySelector('.connection-status-text');
- console.log('checking internet connection');
- if (!statusTextEl) {
- return;
- }
+ const $statusTextEl = $('.connection-status-text');
+ const $icon = $('#connection-status-item i');
- statusTextEl.innerText = "Connecting";
- statusTextEl.style.color = "white";
- document.querySelector('#connection-status-item i').style.color = "white";
+ if ($statusTextEl.length === 0) return;
+ $statusTextEl.text("Connecting").css("color", "white");
+ $icon.css("color", "white");
-
- fetch("https://www.google.com/generate_204?_=" + new Date().getTime(), {
- method: 'GET',
- mode: 'no-cors',
- cache: 'no-store'
- })
- .then(function(res) {
- console.log(res);
- statusTextEl.innerText = "Online";
- statusTextEl.style.color = "lightgreen";
- document.querySelector('#connection-status-item i').style.color = "lightgreen";
- })
- .catch(function(e) {
- console.log("error", e);
- statusTextEl.innerText = "Offline";
- statusTextEl.style.color = "#ffcdd2";
- document.querySelector('#connection-status-item i').style.color = "#ffcdd2";
- });
+ const img = new Image();
+ img.onload = function () {
+ $statusTextEl.text("Online").css("color", "lightgreen");
+ $icon.css("color", "lightgreen");
+ };
+ img.onerror = function () {
+ $statusTextEl.text("Offline").css("color", "#ffcdd2");
+ $icon.css("color", "#ffcdd2");
+ };
+ img.src = "https://www.google.com/favicon.ico?_=" + new Date().getTime(); // avoid cache
}
updateConnectionStatus();
diff --git a/app/views/layouts/_read_modal.html.erb b/app/views/layouts/_read_modal.html.erb
index 4c3bda13..0b38e2ef 100644
--- a/app/views/layouts/_read_modal.html.erb
+++ b/app/views/layouts/_read_modal.html.erb
@@ -191,9 +191,7 @@ document.addEventListener('DOMContentLoaded', function () {
let selectedPaymentMethodId = null;
let selectedPaymentMethodLabel = '';
- const originalProceedButtonText = proceedButton.textContent.trim(); // Store original button text
-
- // Function to update the "Process" button's state and appearance
+ const originalProceedButtonText = proceedButton.textContent.trim();
function styleProceedButton(enabled) {
proceedButton.disabled = !enabled;
@@ -201,7 +199,6 @@ document.addEventListener('DOMContentLoaded', function () {
proceedButton.style.borderColor = '#54A5AF'; // Active/theme color
proceedButton.style.color = '#54A5AF';
proceedButton.textContent = `Process with ${selectedPaymentMethodLabel}`;
- // Opacity and cursor will be handled by :disabled CSS or browser defaults
} else {
// Reset to default styles (defined in CSS) when disabled
proceedButton.style.borderColor = ''; // Reverts to stylesheet's .btn-proceed border-color
@@ -272,54 +269,46 @@ document.addEventListener('DOMContentLoaded', function () {
}
function initDynamicQrPay() {
- const paymentMethod = 'MMQR';
- let table_id = $("#table_id").text();
- let booking_id = $("#booking_id").text();
- let customer_id = $("#customer_id").text();
- let second_display_lookup = $("#display_type").val();
+ const paymentMethod = 'MMQR';
+ const $serverMode = $('#server_mode');
+ const $createOrderBtn = $('#create_order');
+ const $createPayOrderBtn = $('#create_pay_order');
- let params = {
- order_source: "food_court",
- order_type: "dine_in",
- customer_id: customer_id,
- guest_info: "",
- table_id: table_id,
- order_items: JSON.stringify(get_order_item_rows()),
- create_type: "create_pay",
- };
+ const params = {
+ order_source: "food_court",
+ order_type: "dine_in",
+ customer_id: $("#customer_id").text(),
+ guest_info: "",
+ table_id: $("#table_id").text(),
+ order_items: JSON.stringify(get_order_item_rows()),
+ create_type: "create_pay",
+ };
- fetch('/foodcourt/addorders/create', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content,
- },
- body: JSON.stringify(params),
- })
- .then(response => {
- if (!response.ok) {
- throw new Error(`HTTP error! Status: ${response.status}`);
- }
- return response.json();
- })
- .then(result => {
- booking_id = result.booking_id;
- console.log(result);
- window.location.href = `/foodcourt/${result.sale_id}/qrpay/init`;
+ $.ajax({
+ url: '/foodcourt/addorders/create',
+ method: 'POST',
+ contentType: 'application/json',
+ headers: {
+ 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
+ },
+ data: JSON.stringify(params),
+ success: function(result) {
+ const booking_id = result.booking_id;
+ window.location.href = `/foodcourt/${result.sale_id}/qrpay/init`;
+ if ($serverMode.val() !== "cloud" && $("#display_type").val() === "2") {
+ // customer_display_view(null, "reload");
+ }
+ },
+ error: function(xhr) {
+ $('#oqs_loading_wrapper').hide();
+ $createOrderBtn.prop('disabled', false);
+ $createPayOrderBtn.prop('disabled', false);
- if (document.getElementById("server_mode").value !== "cloud" && second_display_lookup === 2) {
- // customer_display_view(null, "reload");
- }
- })
- .catch(error => {
- document.getElementById("oqs_loading_wrapper").style.display = "none";
- document.getElementById("create_order").disabled = false;
- document.getElementById("create_pay_order").disabled = false;
- swal("Error", "Status: " + error.message, "error");
+ const errorMsg = xhr.status ? `Status: ${xhr.status} - ${xhr.statusText}` : "Network error";
+ swal("Error", errorMsg, "error");
+ }
});
-
}
-
function get_order_item_rows(){
var order_items = [];
var item_row = $('.summary-items tbody tr');