From 81e6530ddca88eeadc2497ad8a75115b1886e97f Mon Sep 17 00:00:00 2001 From: Bernd Bestel Date: Sun, 12 Apr 2020 15:33:36 +0200 Subject: [PATCH] Always set number inputs in browser locale format (fixes #610) --- changelog/58_UNRELEASED_2020-xx-xx.md | 3 ++- public/viewjs/components/productamountpicker.js | 2 +- public/viewjs/consume.js | 6 +++--- public/viewjs/inventory.js | 2 +- public/viewjs/purchase.js | 8 ++++---- public/viewjs/shoppinglistitemform.js | 2 +- public/viewjs/transfer.js | 4 ++-- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/changelog/58_UNRELEASED_2020-xx-xx.md b/changelog/58_UNRELEASED_2020-xx-xx.md index 03d6705a..f5cf9eb1 100644 --- a/changelog/58_UNRELEASED_2020-xx-xx.md +++ b/changelog/58_UNRELEASED_2020-xx-xx.md @@ -27,7 +27,8 @@ ### API improvements - The endpoint `/stock/products/{productId}/locations` now also returns the current stock amount of the product in that loctation (new field/property `amount`) (thanks @Forceu) -### General & other improvements +### General & other improvements/fixes +- Fixed that all number inputs are always prefilled in the browser locale number format - New `config.php` setting `FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_FIELD_NUMBER_PAD` which activates the number pad for best-before-date fields on (supported) mobile browsers (useful because of [shorthands](https://github.com/grocy/grocy#input-shorthands-for-date-fields)) (defaults to `true`) (thanks @Mik-) - Enhancements for the camera barcode scanner (thanks @Mik-) - The light button only displayed when the device has a flash light diff --git a/public/viewjs/components/productamountpicker.js b/public/viewjs/components/productamountpicker.js index cce11e88..147473f2 100644 --- a/public/viewjs/components/productamountpicker.js +++ b/public/viewjs/components/productamountpicker.js @@ -83,7 +83,7 @@ $(".input-group-productamountpicker").on("change", function() $("#qu-conversion-info").text(__t("This equals %1$s %2$s in stock", destinationAmount.toLocaleString(), destinationQuName)); } - $("#amount").val(destinationAmount); + $("#amount").val(destinationAmount.toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); }); $("#display_amount").on("keyup", function() diff --git a/public/viewjs/consume.js b/public/viewjs/consume.js index 0994434c..f06bb44f 100644 --- a/public/viewjs/consume.js +++ b/public/viewjs/consume.js @@ -98,7 +98,7 @@ $("#amount").attr("max", "999999"); $("#amount").attr("step", "1"); $("#amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#amount').val(Grocy.UserSettings.stock_default_consume_amount); + $('#amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); $('#amount_qu_unit').text(""); $("#tare-weight-handling-info").addClass("d-none"); Grocy.Components.ProductPicker.Clear(); @@ -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") + ''); - $('#amount').val(Grocy.UserSettings.stock_default_consume_amount); + $('#amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); Grocy.Components.ProductPicker.Clear(); Grocy.Components.ProductPicker.GetInputElement().focus(); Grocy.FrontendHelpers.ValidateForm('consume-form'); @@ -379,7 +379,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) } }); -$('#amount').val(Grocy.UserSettings.stock_default_consume_amount); +$('#amount').val(parseFloat(Grocy.UserSettings.stock_default_consume_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); Grocy.FrontendHelpers.ValidateForm('consume-form'); $('#amount').on('focus', function(e) diff --git a/public/viewjs/inventory.js b/public/viewjs/inventory.js index 72dc2e82..df4727a5 100644 --- a/public/viewjs/inventory.js +++ b/public/viewjs/inventory.js @@ -155,7 +155,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) $("#tare-weight-handling-info").addClass("d-none"); } - $('#price').val(productDetails.last_price); + $('#price').val(parseFloat(productDetails.last_price).toLocaleString({ minimumFractionDigits: 2, maximumFractionDigits: 2 })); if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) { Grocy.Components.ShoppingLocationPicker.SetId(productDetails.last_shopping_location_id); } diff --git a/public/viewjs/purchase.js b/public/viewjs/purchase.js index 78027cf9..ab8e32d9 100644 --- a/public/viewjs/purchase.js +++ b/public/viewjs/purchase.js @@ -92,7 +92,7 @@ $("#amount").attr("min", "1"); $("#amount").attr("step", "1"); $("#amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#amount').val(Grocy.UserSettings.stock_default_purchase_amount); + $('#amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); $('#price').val(''); $('#amount_qu_unit').text(""); $("#tare-weight-handling-info").addClass("d-none"); @@ -143,7 +143,7 @@ if (Grocy.Components.ProductPicker !== undefined) Grocy.Api.Get('stock/products/' + productId, function(productDetails) { - $('#price').val(productDetails.last_price); + $('#price').val(parseFloat(productDetails.last_price).toLocaleString({ minimumFractionDigits: 2, maximumFractionDigits: 2 })); if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) { if (productDetails.last_shopping_location_id != null) @@ -258,7 +258,7 @@ if (Grocy.Components.ProductPicker !== undefined) }); } -$('#amount').val(Grocy.UserSettings.stock_default_purchase_amount); +$('#amount').val(parseFloat(Grocy.UserSettings.stock_default_purchase_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); Grocy.FrontendHelpers.ValidateForm('purchase-form'); if (Grocy.Components.ProductPicker) @@ -327,7 +327,7 @@ $('#amount').on('change', function(e) if (GetUriParam("flow") === "shoppinglistitemtostock") { - $('#amount').val(GetUriParam("amount")); + $('#amount').val(parseFloat(GetUriParam("amount")).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); } function UndoStockBooking(bookingId) diff --git a/public/viewjs/shoppinglistitemform.js b/public/viewjs/shoppinglistitemform.js index d7a5103e..9f2f0656 100644 --- a/public/viewjs/shoppinglistitemform.js +++ b/public/viewjs/shoppinglistitemform.js @@ -191,6 +191,6 @@ if (GetUriParam("list") !== undefined) if (GetUriParam("amount") !== undefined) { - $("#amount").val(GetUriParam("amount")); + $("#amount").val(parseFloat(GetUriParam("amount")).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); Grocy.FrontendHelpers.ValidateForm('shoppinglist-form'); } diff --git a/public/viewjs/transfer.js b/public/viewjs/transfer.js index 0824f9f3..800d079a 100644 --- a/public/viewjs/transfer.js +++ b/public/viewjs/transfer.js @@ -96,7 +96,7 @@ $("#amount").attr("max", "999999"); $("#amount").attr("step", "1"); $("#amount").parent().find(".invalid-feedback").text(__t('The amount cannot be lower than %s', '1')); - $('#amount').val(Grocy.UserSettings.stock_default_transfer_amount); + $('#amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount).toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); $('#amount_qu_unit').text(""); $("#tare-weight-handling-info").addClass("d-none"); Grocy.Components.ProductPicker.Clear(); @@ -233,7 +233,7 @@ Grocy.Components.ProductPicker.GetPicker().on('change', function(e) } }); -$('#amount').val(Grocy.UserSettings.stock_default_transfer_amount); +$('#amount').val(parseFloat(Grocy.UserSettings.stock_default_transfer_amount)..toLocaleString({ minimumFractionDigits: 0, maximumFractionDigits: 4 })); Grocy.FrontendHelpers.ValidateForm('transfer-form'); $("#location_id_from").on('change', function(e)