Revamped modal iframe dialog handling

This commit is contained in:
Bernd Bestel
2025-01-10 17:15:09 +01:00
parent 1900a5b8a2
commit 201bda93a2
33 changed files with 175 additions and 118 deletions

View File

@@ -124,7 +124,7 @@ Grocy.Components.BarcodeScanner.StartScanning = function()
window.localStorage.removeItem("cameraId");
setTimeout(function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}, 500);
return;
}
@@ -142,7 +142,7 @@ Grocy.Components.BarcodeScanner.StopScanning = function()
Grocy.Components.BarcodeScanner.DecodedCodesCount = 0;
Grocy.Components.BarcodeScanner.DecodedCodesErrorCount = 0;
bootbox.hideAll();
$(".modal").last().modal("hide");
}
Grocy.Components.BarcodeScanner.TorchOn = function(track)

View File

@@ -91,9 +91,9 @@
if (GetUriParam("embedded") !== undefined)
{
window.parent.postMessage(WindowMessageBag("ProductChanged", jsonForm.product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", jsonForm.product_id)), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
else
{

View File

@@ -159,7 +159,7 @@ $(".selectedEquipmentInstructionManualToggleFullscreenButton").on('click', funct
card.find(".card-header").toggleClass("fixed-top");
card.find(".card-body").toggleClass("mt-5");
$("body").toggleClass("fullscreen-card");
ResizeResponsiveEmbeds(true);
ResizeResponsiveEmbeds();
});
$("#selectedEquipmentDescriptionToggleFullscreenButton").on('click', function(e)

View File

@@ -130,9 +130,9 @@ $('#save-inventory-button').on('click', function(e)
{
Grocy.Components.UserfieldsForm.Save(function()
{
window.parent.postMessage(WindowMessageBag("ProductChanged", jsonForm.product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", jsonForm.product_id)), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
}

View File

@@ -937,7 +937,7 @@ $(document).on("click", ".display-recipe-button", function(e)
className: 'btn-secondary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
}
}

View File

@@ -27,8 +27,8 @@
Grocy.EditObjectId = result.created_object_id;
Grocy.Components.UserfieldsForm.Save()
window.parent.postMessage(WindowMessageBag("ProductBarcodesChanged"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("ProductBarcodesChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{
@@ -43,8 +43,8 @@
Grocy.Api.Put('objects/product_barcodes/' + Grocy.EditObjectId, jsonData,
function(result)
{
window.parent.postMessage(WindowMessageBag("ProductBarcodesChanged"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("ProductBarcodesChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{

View File

@@ -23,7 +23,7 @@
Grocy.EditObjectId = result.created_object_id;
Grocy.Components.UserfieldsForm.Save(function()
{
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/productgroups"));
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
},
function(xhr)
@@ -40,7 +40,7 @@
{
Grocy.Components.UserfieldsForm.Save(function()
{
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/productgroups"));
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
},
function(xhr)

View File

@@ -65,7 +65,7 @@ $(window).on("message", function(e)
{
var data = e.originalEvent.data;
if (data.Message === "CloseAllModals")
if (data.Message === "CloseLastModal")
{
window.location.reload();
}

View File

@@ -174,11 +174,11 @@ $('#save-purchase-button').on('click', function(e)
{
Grocy.Components.UserfieldsForm.Save(function()
{
window.parent.postMessage(WindowMessageBag("ProductChanged", jsonForm.product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", jsonForm.product_id)), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("AfterItemAdded", GetUriParam("listitemid")), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("Ready"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
}
else
@@ -627,7 +627,7 @@ function UndoStockBooking(bookingId)
Grocy.Api.Get('stock/bookings/' + bookingId.toString(),
function(result)
{
window.postMessage(WindowMessageBag("ProductChanged", result.product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", result.product_id)), Grocy.BaseUrl);
},
function(xhr)
{
@@ -652,7 +652,7 @@ function UndoStockTransaction(transactionId)
Grocy.Api.Get('stock/transactions/' + transactionId.toString(),
function(result)
{
window.postMessage(WindowMessageBag("ProductChanged", result[0].product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", result[0].product_id)), Grocy.BaseUrl);
},
function(xhr)
{

View File

@@ -37,8 +37,8 @@
}
else
{
window.parent.postMessage(WindowMessageBag("ProductQUConversionChanged"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("ProductQUConversionChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
});
},
@@ -69,8 +69,8 @@
}
else
{
window.parent.postMessage(WindowMessageBag("ProductQUConversionChanged"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("CloseAllModals"), U("/product/" + GetUriParam("product")));
window.parent.postMessage(WindowMessageBag("ProductQUConversionChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
});
},

View File

@@ -229,7 +229,7 @@ $(document).on('click', '.recipe-pos-edit-button', function(e)
className: 'btn-secondary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
}
}
@@ -275,7 +275,7 @@ $("#recipe-pos-add-button").on("click", function(e)
className: 'btn-secondary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
}
}

View File

@@ -47,7 +47,7 @@ $('#save-recipe-pos-button').on('click', function(e)
function(result)
{
window.parent.postMessage(WindowMessageBag("IngredientsChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{
@@ -62,7 +62,7 @@ $('#save-recipe-pos-button').on('click', function(e)
function(result)
{
window.parent.postMessage(WindowMessageBag("IngredientsChanged"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{

View File

@@ -301,7 +301,7 @@ recipesTables.on('select', function(e, dt, type, indexes)
className: 'btn-secondary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
}
}
@@ -333,7 +333,7 @@ $(".recipe-gallery-item").on("click", function(e)
className: 'btn-secondary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
}
}

View File

@@ -431,7 +431,7 @@ $(document).on("click", "#print-shopping-list-button", function(e)
className: 'btn-secondary',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
}
},
printtp: {
@@ -439,7 +439,7 @@ $(document).on("click", "#print-shopping-list-button", function(e)
className: 'btn-secondary',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
var printHeader = $("#print-show-header").prop("checked");
var thermalPrintDialog = bootbox.dialog({
title: __t('Printing'),
@@ -451,7 +451,7 @@ $(document).on("click", "#print-shopping-list-button", function(e)
Grocy.Api.Get('print/shoppinglist/thermal?list=' + $("#selected-shopping-list").val() + '&printHeader=' + printHeader,
function(result)
{
bootbox.hideAll();
$(".modal").last().modal("hide");
},
function(xhr)
{
@@ -481,7 +481,7 @@ $(document).on("click", "#print-shopping-list-button", function(e)
className: 'btn-primary responsive-button',
callback: function()
{
bootbox.hideAll();
$(".modal").last().modal("hide");
$('.modal-backdrop').remove();
$(".print-timestamp").text(moment().format("l LT"));

View File

@@ -25,7 +25,7 @@
{
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", result.created_object_id), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("Ready"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
},
function(xhr)
@@ -44,7 +44,7 @@
{
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", Grocy.EditObjectId), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("Ready"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{

View File

@@ -70,7 +70,7 @@ $('#save-shoppinglist-button').on('click', function(e)
}
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", $("#shopping_list_id").val().toString()), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{
@@ -111,7 +111,7 @@ $('#save-shoppinglist-button').on('click', function(e)
}
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", $("#shopping_list_id").val().toString()), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{
@@ -122,7 +122,7 @@ $('#save-shoppinglist-button').on('click', function(e)
else
{
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", $("#shopping_list_id").val().toString()), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
}
else
@@ -151,9 +151,13 @@ $('#save-shoppinglist-button').on('click', function(e)
Grocy.Api.Get('stock/products/' + jsonData.product_id,
function(productDetails)
{
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", __t("Added %1$s of %2$s to the shopping list \"%3$s\"", displayAmount.toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(displayAmount, $("#qu_id option:selected").text(), $("#qu_id option:selected").attr("data-qu-name-plural"), true), productDetails.product.name, $("#shopping_list_id option:selected").text())), Grocy.BaseUrl);
if (GetUriParam("product") !== undefined)
{
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", __t("Added %1$s of %2$s to the shopping list \"%3$s\"", displayAmount.toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(displayAmount, $("#qu_id option:selected").text(), $("#qu_id option:selected").attr("data-qu-name-plural"), true), productDetails.product.name, $("#shopping_list_id option:selected").text())), Grocy.BaseUrl);
}
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", $("#shopping_list_id").val().toString()), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
},
function(xhr)
{
@@ -164,7 +168,7 @@ $('#save-shoppinglist-button').on('click', function(e)
else
{
window.parent.postMessage(WindowMessageBag("ShoppingListChanged", $("#shopping_list_id").val().toString()), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
}
else

View File

@@ -84,11 +84,12 @@ $(document).on('click', '.stock-consume-button', function(e)
{
toastMessage += "<br>(" + __t("Spoiled") + ")";
}
toastMessage += '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
toastMessage += '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ', ' + bookingResponse[0].product_id + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
Grocy.FrontendHelpers.EndUiBusy();
RefreshStockEntryRow(stockRowId);
toastr.success(toastMessage);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", productId)), Grocy.BaseUrl);
},
function(xhr)
{
@@ -127,7 +128,7 @@ $(document).on('click', '.product-open-button', function(e)
{
button.addClass("disabled");
Grocy.FrontendHelpers.EndUiBusy();
toastr.success(__t('Marked %1$s of %2$s as opened', openAmount.toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(openAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
toastr.success(__t('Marked %1$s of %2$s as opened', openAmount.toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(openAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural, true), result.product.name) + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(' + bookingResponse[0].id + ',' + stockRowId + ', ' + productId + ')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>');
if (result.product.move_on_open == 1 && result.default_consume_location != null)
{
@@ -135,6 +136,7 @@ $(document).on('click', '.product-open-button', function(e)
}
RefreshStockEntryRow(stockRowId);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", productId)), Grocy.BaseUrl);
},
function(xhr)
{
@@ -309,20 +311,25 @@ $(window).on("message", function(e)
{
var data = e.originalEvent.data;
if (data.Message === "StockEntryChanged")
if (data.Message == "StockEntryChanged")
{
RefreshStockEntryRow(data.Payload);
}
else if (data.Message == "ProductChanged")
{
window.location.reload();
}
});
Grocy.Components.ProductPicker.GetPicker().trigger('change');
function UndoStockBookingEntry(bookingId, stockRowId)
function UndoStockBookingEntry(bookingId, stockRowId, productId)
{
Grocy.Api.Post('stock/bookings/' + bookingId.toString() + '/undo', {},
function(result)
{
window.postMessage(WindowMessageBag("StockEntryChanged", stockRowId), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("StockEntryChanged", stockRowId)), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", productId)), Grocy.BaseUrl);
toastr.success(__t("Booking successfully undone"));
},
function(xhr)

View File

@@ -62,10 +62,11 @@
{
var successMessage = __t('Stock entry successfully updated') + '<br><a class="btn btn-secondary btn-sm mt-2" href="#" onclick="UndoStockBookingEntry(\'' + result.id + '\',\'' + Grocy.EditObjectRowId + '\')"><i class="fa-solid fa-undo"></i> ' + __t("Undo") + '</a>';
window.parent.postMessage(WindowMessageBag("StockEntryChanged", Grocy.EditObjectRowId), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("StockEntryChanged", Grocy.EditObjectRowId)), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", Grocy.EditObjectProductId)), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("Ready"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
});
},
function(xhr)

View File

@@ -70,9 +70,9 @@
if (GetUriParam("embedded") !== undefined)
{
window.parent.postMessage(WindowMessageBag("ProductChanged", jsonForm.product_id), Grocy.BaseUrl);
window.top.postMessage(WindowMessageBag("BroadcastMessage", WindowMessageBag("ProductChanged", jsonForm.product_id)), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("ShowSuccessMessage", successMessage), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseAllModals"), Grocy.BaseUrl);
window.parent.postMessage(WindowMessageBag("CloseLastModal"), Grocy.BaseUrl);
}
else
{