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:
Bernd Bestel
2020-01-27 19:00:49 +01:00
parent 9221d787a5
commit 05aceb72ae
74 changed files with 5506 additions and 1868 deletions

View File

@@ -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();
};

View File

@@ -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())))
{