mirror of
https://github.com/grocy/grocy.git
synced 2025-10-12 16:44:55 +00:00
Squashed commit
- Only refresh contextual number/datetime info/formatting where needed (closes #513) - Also refresh correlated stock journal entries on undo (closes #471) - Prefill "New amount" with the current stock amount on the inventory page (closes #434) - Ensure that the location_id of the stock and stock_log tables is never empty after migration 95 (references #421) - Load initial values of the /stockedit form server side to improve loading performance (references #421) - Use more or less the same input ordering as on the purchase page for the /stockedit page (references #421) - Also display the "Compact view" button on the shopping list page when FEATURE_FLAG_SHOPPINGLIST_MULTIPLE_LISTS is disabled (references #453) - Ensure that the currently active sidebar menu item is visible - Optimized sidebar menu item grouping/spacing - Properly order the API documentation route groups and put the "by-barcode" routes into a separate group - Updated dependencies - Pulled translations from Transifex - Prepared changelog for next release
This commit is contained in:
@@ -145,3 +145,11 @@ function Delay(callable, delayMilliseconds)
|
||||
}, delayMilliseconds || 0);
|
||||
};
|
||||
}
|
||||
|
||||
$.fn.isVisibleInViewport = function(extraHeightPadding = 0)
|
||||
{
|
||||
var elementTop = $(this).offset().top;
|
||||
var viewportTop = $(window).scrollTop() - extraHeightPadding;
|
||||
|
||||
return elementTop + $(this).outerHeight() > viewportTop && elementTop < viewportTop + $(window).height();
|
||||
};
|
||||
|
@@ -258,11 +258,29 @@ if (!Grocy.ActiveNav.isEmpty())
|
||||
var menuItem = $('#sidebarResponsive').find("[data-nav-for-page='" + Grocy.ActiveNav + "']");
|
||||
menuItem.addClass('active-page');
|
||||
|
||||
var parentMenuSelector = menuItem.data("sub-menu-of");
|
||||
if (typeof parentMenuSelector !== "undefined")
|
||||
if (menuItem.length)
|
||||
{
|
||||
$(parentMenuSelector).collapse("show");
|
||||
$(parentMenuSelector).prev(".nav-link-collapse").addClass("active-page");
|
||||
var parentMenuSelector = menuItem.data("sub-menu-of");
|
||||
if (typeof parentMenuSelector !== "undefined")
|
||||
{
|
||||
$(parentMenuSelector).collapse("show");
|
||||
$(parentMenuSelector).prev(".nav-link-collapse").addClass("active-page");
|
||||
|
||||
$(parentMenuSelector).on("shown.bs.collapse", function (e)
|
||||
{
|
||||
if (!menuItem.isVisibleInViewport(75))
|
||||
{
|
||||
menuItem[0].scrollIntoView();
|
||||
}
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!menuItem.isVisibleInViewport(75))
|
||||
{
|
||||
menuItem[0].scrollIntoView();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,9 +311,9 @@ if (window.localStorage.getItem("sidebar_state") === "collapsed")
|
||||
}
|
||||
|
||||
$.timeago.settings.allowFuture = true;
|
||||
RefreshContextualTimeago = function()
|
||||
RefreshContextualTimeago = function(rootSelector = "#page-content")
|
||||
{
|
||||
$("time.timeago").each(function()
|
||||
$(rootSelector + " time.timeago").each(function()
|
||||
{
|
||||
var element = $(this);
|
||||
|
||||
@@ -526,9 +544,9 @@ $("#about-dialog-link").on("click", function()
|
||||
});
|
||||
});
|
||||
|
||||
function RefreshLocaleNumberDisplay()
|
||||
function RefreshLocaleNumberDisplay(rootSelector = "#page-content")
|
||||
{
|
||||
$(".locale-number.locale-number-currency").each(function()
|
||||
$(rootSelector + " .locale-number.locale-number-currency").each(function()
|
||||
{
|
||||
if (isNaN(parseFloat($(this).text())))
|
||||
{
|
||||
@@ -538,7 +556,7 @@ function RefreshLocaleNumberDisplay()
|
||||
$(this).text(parseFloat($(this).text()).toLocaleString(undefined, { style: "currency", currency: Grocy.Currency }));
|
||||
});
|
||||
|
||||
$(".locale-number.locale-number-quantity-amount").each(function()
|
||||
$(rootSelector + " .locale-number.locale-number-quantity-amount").each(function()
|
||||
{
|
||||
if (isNaN(parseFloat($(this).text())))
|
||||
{
|
||||
@@ -548,7 +566,7 @@ function RefreshLocaleNumberDisplay()
|
||||
$(this).text(parseFloat($(this).text()).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 3 }));
|
||||
});
|
||||
|
||||
$(".locale-number.locale-number-generic").each(function ()
|
||||
$(rootSelector + " .locale-number.locale-number-generic").each(function ()
|
||||
{
|
||||
if (isNaN(parseFloat($(this).text())))
|
||||
{
|
||||
|
Reference in New Issue
Block a user