mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 01:32:38 +00:00
Optimized locale number display handling (fixes #2309)
This commit is contained in:
parent
3a2929c016
commit
a123535b0a
@ -585,77 +585,90 @@ if (window.location.hash)
|
|||||||
|
|
||||||
function RefreshLocaleNumberDisplay(rootSelector = "#page-content")
|
function RefreshLocaleNumberDisplay(rootSelector = "#page-content")
|
||||||
{
|
{
|
||||||
$(rootSelector + " .locale-number.locale-number-currency").each(function()
|
$(rootSelector + " .locale-number.locale-number-currency:not('.number-parsing-done')").each(function()
|
||||||
{
|
{
|
||||||
var text = $(this).text();
|
var element = $(this);
|
||||||
|
var text = element.text();
|
||||||
if (!text || Number.isNaN(text))
|
if (!text || Number.isNaN(text))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var value = Number.parseFloat(text);
|
var value = Number.parseFloat(text);
|
||||||
$(this).text(value.toLocaleString(undefined, { style: "currency", currency: Grocy.Currency, minimumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_display, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_display }));
|
element.text(value.toLocaleString(undefined, { style: "currency", currency: Grocy.Currency, minimumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_display, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_display }));
|
||||||
|
element.addClass("number-parsing-done");
|
||||||
});
|
});
|
||||||
|
|
||||||
$(rootSelector + " .locale-number.locale-number-quantity-amount").each(function()
|
$(rootSelector + " .locale-number.locale-number-quantity-amount:not('.number-parsing-done')").each(function()
|
||||||
{
|
{
|
||||||
var text = $(this).text();
|
var element = $(this);
|
||||||
|
var text = element.text();
|
||||||
if (!text || Number.isNaN(text))
|
if (!text || Number.isNaN(text))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var value = Number.parseFloat(text);
|
var value = Number.parseFloat(text);
|
||||||
$(this).text(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }));
|
element.text(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts }));
|
||||||
|
element.addClass("number-parsing-done");
|
||||||
});
|
});
|
||||||
|
|
||||||
$(rootSelector + " .locale-number.locale-number-generic").each(function()
|
$(rootSelector + " .locale-number.locale-number-generic:not('.number-parsing-done')").each(function()
|
||||||
{
|
{
|
||||||
var text = $(this).text();
|
var element = $(this);
|
||||||
|
var text = element.text();
|
||||||
if (!text || Number.isNaN(text))
|
if (!text || Number.isNaN(text))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var value = Number.parseFloat(text);
|
var value = Number.parseFloat(text);
|
||||||
$(this).text(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }));
|
element.text(value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }));
|
||||||
|
element.addClass("number-parsing-done");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
RefreshLocaleNumberDisplay();
|
RefreshLocaleNumberDisplay();
|
||||||
|
$(document).on("DOMSubtreeModified", ".locale-number", function()
|
||||||
|
{
|
||||||
|
$(this).removeClass("number-parsing-done");
|
||||||
|
});
|
||||||
|
|
||||||
function RefreshLocaleNumberInput(rootSelector = "#page-content")
|
function RefreshLocaleNumberInput(rootSelector = "#page-content")
|
||||||
{
|
{
|
||||||
$(rootSelector + " .locale-number-input.locale-number-currency").each(function()
|
$(rootSelector + " .locale-number-input.locale-number-currency").each(function()
|
||||||
{
|
{
|
||||||
var value = $(this).val();
|
var element = $(this);
|
||||||
|
var value = element.val();
|
||||||
if (!value || Number.isNaN(value))
|
if (!value || Number.isNaN(value))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this).val(Number.parseFloat(value).toLocaleString("en", { minimumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_input, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_input, useGrouping: false }));
|
element.val(Number.parseFloat(value).toLocaleString("en", { minimumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_input, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_prices_input, useGrouping: false }));
|
||||||
});
|
});
|
||||||
|
|
||||||
$(rootSelector + " .locale-number-input.locale-number-quantity-amount").each(function()
|
$(rootSelector + " .locale-number-input.locale-number-quantity-amount").each(function()
|
||||||
{
|
{
|
||||||
var value = $(this).val();
|
var element = $(this);
|
||||||
|
var value = element.val();
|
||||||
if (!value || Number.isNaN(value))
|
if (!value || Number.isNaN(value))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this).val(Number.parseFloat(value).toLocaleString("en", { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts, useGrouping: false }));
|
element.val(Number.parseFloat(value).toLocaleString("en", { minimumFractionDigits: 0, maximumFractionDigits: Grocy.UserSettings.stock_decimal_places_amounts, useGrouping: false }));
|
||||||
});
|
});
|
||||||
|
|
||||||
$(rootSelector + " .locale-number-input.locale-number-generic").each(function()
|
$(rootSelector + " .locale-number-input.locale-number-generic").each(function()
|
||||||
{
|
{
|
||||||
var value = $(this).val();
|
var element = $(this);
|
||||||
|
var value = element.val();
|
||||||
if (!value || Number.isNaN(value))
|
if (!value || Number.isNaN(value))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this).val(value.toLocaleString("en", { minimumFractionDigits: 0, maximumFractionDigits: 2, useGrouping: false }));
|
element.val(value.toLocaleString("en", { minimumFractionDigits: 0, maximumFractionDigits: 2, useGrouping: false }));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
RefreshLocaleNumberInput();
|
RefreshLocaleNumberInput();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user