diff --git a/DiunaBI.UI.Shared/Extensions/ServiceCollectionExtensions.cs b/DiunaBI.UI.Shared/Extensions/ServiceCollectionExtensions.cs index 22b1bdc..5aa82ba 100644 --- a/DiunaBI.UI.Shared/Extensions/ServiceCollectionExtensions.cs +++ b/DiunaBI.UI.Shared/Extensions/ServiceCollectionExtensions.cs @@ -45,6 +45,7 @@ public static class ServiceCollectionExtensions services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); // Filter state services (scoped to maintain state during user session) services.AddScoped(); diff --git a/DiunaBI.UI.Shared/Pages/Layers/Details.razor b/DiunaBI.UI.Shared/Pages/Layers/Details.razor index 48d9fd3..8594d43 100644 --- a/DiunaBI.UI.Shared/Pages/Layers/Details.razor +++ b/DiunaBI.UI.Shared/Pages/Layers/Details.razor @@ -165,12 +165,12 @@ @if (showSummary) { - @totalSum.ToString("N2") + @NumberFormatHelper.FormatNumber(totalSum) @foreach (var column in displayedColumns) { @if (column.StartsWith("Value") && columnSums.ContainsKey(column)) { - @columnSums[column].ToString("N2") + @NumberFormatHelper.FormatNumber(columnSums[column]) } else { diff --git a/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs b/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs index 127f8ec..83763a1 100644 --- a/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs +++ b/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs @@ -32,6 +32,9 @@ public partial class Details : ComponentBase, IDisposable [Inject] private DateTimeHelper DateTimeHelper { get; set; } = null!; + [Inject] + private NumberFormatHelper NumberFormatHelper { get; set; } = null!; + private LayerDto? layer; private List records = new(); private List displayedColumns = new(); @@ -191,7 +194,7 @@ public partial class Details : ComponentBase, IDisposable } var value = GetRecordValueByName(record, columnName); - return value.HasValue ? value.Value.ToString("N2") : string.Empty; + return NumberFormatHelper.FormatNumber(value); } private double? GetRecordValueByName(RecordDto record, string columnName) diff --git a/DiunaBI.UI.Shared/Services/NumberFormatHelper.cs b/DiunaBI.UI.Shared/Services/NumberFormatHelper.cs new file mode 100644 index 0000000..1aae194 --- /dev/null +++ b/DiunaBI.UI.Shared/Services/NumberFormatHelper.cs @@ -0,0 +1,50 @@ +using System.Globalization; + +namespace DiunaBI.UI.Shared.Services; + +public class NumberFormatHelper +{ + private readonly CultureInfo _culture; + + public NumberFormatHelper() + { + // Always use Polish culture for number formatting + _culture = CultureInfo.GetCultureInfo("pl-PL"); + } + + public string FormatNumber(double? value, int decimals = 2) + { + if (!value.HasValue) + return string.Empty; + + return value.Value.ToString($"N{decimals}", _culture); + } + + public string FormatNumber(double value, int decimals = 2) + { + return value.ToString($"N{decimals}", _culture); + } + + public string FormatInteger(double? value) + { + if (!value.HasValue) + return string.Empty; + + return value.Value.ToString("N0", _culture); + } + + public string FormatInteger(double value) + { + return value.ToString("N0", _culture); + } + + public string GetCultureName() + { + return _culture.DisplayName; + } + + public CultureInfo GetCulture() + { + return _culture; + } +}