diff --git a/public/js/grocy.js b/public/js/grocy.js index 2fb0e20d..d4623491 100644 --- a/public/js/grocy.js +++ b/public/js/grocy.js @@ -582,32 +582,35 @@ function RefreshLocaleNumberInput(rootSelector = "#page-content") { $(rootSelector + " .locale-number-input.locale-number-currency").each(function() { - if (isNaN(parseFloat($(this).val()))) + var value = $(this).val(); + if (isNaN(value)) { return; } - $(this).val(parseFloat($(this).val()).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices })); + $(this).val(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices })); }); $(rootSelector + " .locale-number-input.locale-number-quantity-amount").each(function() { - if (isNaN(parseFloat($(this).val()))) + var value = $(this).val(); + if (isNaN(value)) { return; } - $(this).val(parseFloat($(this).val()).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $(this).val(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); }); $(rootSelector + " .locale-number-input.locale-number-generic").each(function() { - if (isNaN(parseFloat($(this).val()))) + var value = $(this).val(); + if (isNaN(value)) { return; } - $(this).val(parseFloat($(this).val()).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })); + $(this).val(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })); }); } RefreshLocaleNumberInput(); diff --git a/public/viewjs/consume.js b/public/viewjs/consume.js index e606f760..414458f8 100644 --- a/public/viewjs/consume.js +++ b/public/viewjs/consume.js @@ -96,7 +96,7 @@ $("#display_amount").attr("max", "999999"); $("#display_amount").attr("step", "1"); $("#display_amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount)); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); $("#tare-weight-handling-info").addClass("d-none"); @@ -162,7 +162,7 @@ $('#save-mark-as-open-button').on('click', function(e) Grocy.FrontendHelpers.EndUiBusy("consume-form"); toastr.success(__t('Marked %1$s of %2$s as opened', jsonForm.amount + " " + __n(jsonForm.amount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural), productDetails.product.name) + '
' + __t("Undo") + ''); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount)); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); Grocy.Components.ProductPicker.Clear(); @@ -276,7 +276,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) { Grocy.Components.ProductAmountPicker.Reload(productDetails.product.id, productDetails.quantity_unit_stock.id); Grocy.Components.ProductAmountPicker.SetQuantityUnit(productDetails.quantity_unit_stock.id); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount)); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); @@ -393,7 +393,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) } }); -$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); +$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount)); $(".input-group-productamountpicker").trigger("change"); Grocy.FrontendHelpers.ValidateForm('consume-form'); diff --git a/public/viewjs/inventory.js b/public/viewjs/inventory.js index f7c27ee3..452b3d66 100644 --- a/public/viewjs/inventory.js +++ b/public/viewjs/inventory.js @@ -162,7 +162,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) $("#tare-weight-handling-info").addClass("d-none"); } - $('#price').val(parseFloat(productDetails.last_price).toLocaleString({ minimumFractionDigits: 2, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices })); + $('#price').val(parseFloat(productDetails.last_price)); RefreshLocaleNumberInput(); if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) { diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 4613b64b..7c969246 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -111,7 +111,7 @@ $('#save-purchase-button').on('click', function(e) $("#display_amount").attr("min", "1"); $("#display_amount").attr("step", "1"); $("#display_amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount)); $(".input-group-productamountpicker").trigger("change"); $('#price').val(''); $("#tare-weight-handling-info").addClass("d-none"); @@ -176,13 +176,13 @@ if (Grocy.Components.ProductPicker !== undefined) Grocy.Components.ProductAmountPicker.Reload(productDetails.product.id, productDetails.quantity_unit_stock.id); Grocy.Components.ProductAmountPicker.SetQuantityUnit(productDetails.default_quantity_unit_purchase.id); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount)); $(".input-group-productamountpicker").trigger("change"); if (GetUriParam("flow") === "shoppinglistitemtostock") { Grocy.Components.ProductAmountPicker.SetQuantityUnit(GetUriParam("quId")); - $('#display_amount').val(parseFloat(GetUriParam("amount") * $("#qu_id option:selected").attr("data-qu-factor")).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(GetUriParam("amount") * $("#qu_id option:selected").attr("data-qu-factor"))); } $(".input-group-productamountpicker").trigger("change"); @@ -210,7 +210,7 @@ if (Grocy.Components.ProductPicker !== undefined) } else { - $('#price').val(parseFloat(productDetails.last_price / $("#qu_id option:selected").attr("data-qu-factor")).toLocaleString({ minimumFractionDigits: 2, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices })); + $('#price').val(parseFloat(productDetails.last_price / $("#qu_id option:selected").attr("data-qu-factor"))); RefreshLocaleNumberInput(); } @@ -340,7 +340,7 @@ if (Grocy.Components.ProductPicker !== undefined) }); } -$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); +$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount)); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); Grocy.FrontendHelpers.ValidateForm('purchase-form'); diff --git a/public/viewjs/shoppinglistitemform.js b/public/viewjs/shoppinglistitemform.js index d806b2df..4ac4f663 100644 --- a/public/viewjs/shoppinglistitemform.js +++ b/public/viewjs/shoppinglistitemform.js @@ -211,7 +211,7 @@ if (GetUriParam("list") !== undefined) if (GetUriParam("amount") !== undefined) { - $("#display_amount").val(parseFloat(GetUriParam("amount")).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $("#display_amount").val(parseFloat(GetUriParam("amount"))); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); Grocy.FrontendHelpers.ValidateForm('shoppinglist-form'); diff --git a/public/viewjs/stockentries.js b/public/viewjs/stockentries.js index 778bc775..42a1d97b 100644 --- a/public/viewjs/stockentries.js +++ b/public/viewjs/stockentries.js @@ -62,7 +62,7 @@ $(document).on('click', '.stock-consume-button', function(e) Grocy.Api.Get('stock/products/' + productId, function(result) { - var toastMessage = __t('Removed %1$s of %2$s from stock', consumeAmount.toString() + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; + var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; if (wasSpoiled) { toastMessage += " (" + __t("Spoiled") + ")"; diff --git a/public/viewjs/stockentryform.js b/public/viewjs/stockentryform.js index 44e7deed..96181f50 100644 --- a/public/viewjs/stockentryform.js +++ b/public/viewjs/stockentryform.js @@ -109,8 +109,6 @@ Grocy.Api.Get('stock/products/' + Grocy.EditObjectProductId, $("#amount").attr("step", "1"); $("#amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %1$s', '1')); } - - RefreshLocaleNumberInput(); }, function(xhr) { diff --git a/public/viewjs/stockoverview.js b/public/viewjs/stockoverview.js index 55f18fad..c05b7708 100755 --- a/public/viewjs/stockoverview.js +++ b/public/viewjs/stockoverview.js @@ -117,11 +117,11 @@ $(document).on('click', '.product-consume-button', function(e) { if (result.product.enable_tare_weight_handling == 1) { - var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(originalTotalStockAmount).toString() + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; + var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(originalTotalStockAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; } else { - var toastMessage = __t('Removed %1$s of %2$s from stock', consumeAmount.toString() + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; + var toastMessage = __t('Removed %1$s of %2$s from stock', parseFloat(consumeAmount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + __n(consumeAmount, result.quantity_unit_stock.name, result.quantity_unit_stock.name_plural), result.product.name) + '
' + __t("Undo") + ''; } if (wasSpoiled) @@ -177,7 +177,7 @@ $(document).on('click', '.product-open-button', function(e) } Grocy.FrontendHelpers.EndUiBusy(); - toastr.success(__t('Marked %1$s of %2$s as opened', amount.toString() + " " + productQuName, productName) + '
' + __t("Undo") + ''); + toastr.success(__t('Marked %1$s of %2$s as opened', parseFloat(amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }) + " " + productQuName, productName) + '
' + __t("Undo") + ''); RefreshStatistics(); RefreshProductRow(productId); }, diff --git a/public/viewjs/transfer.js b/public/viewjs/transfer.js index a121cae5..19606d47 100644 --- a/public/viewjs/transfer.js +++ b/public/viewjs/transfer.js @@ -93,7 +93,7 @@ $("#display_amount").attr("max", "999999"); $("#display_amount").attr("step", "1"); $("#display_amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts })); + $('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount)); RefreshLocaleNumberInput(); $(".input-group-productamountpicker").trigger("change"); $("#tare-weight-handling-info").addClass("d-none"); @@ -234,9 +234,10 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) } }); -$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); +$('#display_amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount)); $(".input-group-productamountpicker").trigger("change"); Grocy.FrontendHelpers.ValidateForm('transfer-form'); +RefreshLocaleNumberInput(); $("#location_id_from").on('change', function(e) { diff --git a/views/stockentryform.blade.php b/views/stockentryform.blade.php index 79c66630..f2546bda 100644 --- a/views/stockentryform.blade.php +++ b/views/stockentryform.blade.php @@ -56,10 +56,10 @@ @include('components.numberpicker', array( 'id' => 'amount', 'value' => $stockEntry->amount, + 'min' => '0.' . str_repeat('0', $userSettings['stock_decimal_places_amounts'] - 1) . '1', 'label' => 'Amount', 'contextInfoId' => 'amount_qu_unit', 'invalidFeedback' => $__t('The amount cannot be lower than %s', '0'), - 'additionalAttributes' => 'data-not-equal="-1"', 'additionalCssClasses' => 'locale-number-input locale-number-quantity-amount' )) diff --git a/views/stockoverview.blade.php b/views/stockoverview.blade.php index 5d4ab937..f63fdde4 100755 --- a/views/stockoverview.blade.php +++ b/views/stockoverview.blade.php @@ -376,10 +376,10 @@ xx{{ $currentStockEntry->product_group_name }}xx - {{ $currentStockEntry->product_calories }} + {{ $currentStockEntry->product_calories }} - {{ $currentStockEntry->calories }} + {{ $currentStockEntry->calories }} @include('components.userfields_tbody', array(