diff --git a/DiunaBI.UI.Shared/Pages/Layers/Details.razor b/DiunaBI.UI.Shared/Pages/Layers/Details.razor index d8a0f33..15f5941 100644 --- a/DiunaBI.UI.Shared/Pages/Layers/Details.razor +++ b/DiunaBI.UI.Shared/Pages/Layers/Details.razor @@ -162,22 +162,25 @@ } - Value1 sum - @foreach (var column in displayedColumns) + @if (showSummary) { - @if (column == "Value1") + @totalSum.ToString("N2") + @foreach (var column in displayedColumns) { - @valueSum.ToString("N2") + @if (column.StartsWith("Value") && columnSums.ContainsKey(column)) + { + @columnSums[column].ToString("N2") + } + else + { + + } } - else + @if (isEditable) { } } - @if (isEditable) - { - - } @@ -230,7 +233,9 @@ } - + @if (showHistoryTab) + { + @if (isLoadingHistory) { @@ -354,6 +359,7 @@ } } + } } diff --git a/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs b/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs index 16171df..74fdb3a 100644 --- a/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs +++ b/DiunaBI.UI.Shared/Pages/Layers/Details.razor.cs @@ -30,12 +30,16 @@ public partial class Details : ComponentBase private List records = new(); private List displayedColumns = new(); private double valueSum = 0; + private Dictionary columnSums = new(); + private double totalSum = 0; private bool isLoading = false; private Guid? editingRecordId = null; private RecordDto? editingRecord = null; private bool isAddingNew = false; private RecordDto newRecord = new(); private bool isEditable => layer?.Type == LayerType.Dictionary || layer?.Type == LayerType.Administration; + private bool showHistoryTab => layer?.Type == LayerType.Administration || layer?.Type == LayerType.Dictionary; + private bool showSummary => layer?.Type == LayerType.Import || layer?.Type == LayerType.Processed; // History tab state private bool isLoadingHistory = false; @@ -79,7 +83,7 @@ public partial class Details : ComponentBase { records = layer.Records.OrderBy(r => r.Code).ToList(); CalculateDisplayedColumns(); - CalculateValueSum(); + CalculateColumnSums(); BuildUserCache(); } } @@ -118,11 +122,25 @@ public partial class Details : ComponentBase } } - private void CalculateValueSum() + private void CalculateColumnSums() { - valueSum = records - .Where(r => r.Value1.HasValue) - .Sum(r => r.Value1!.Value); + columnSums.Clear(); + totalSum = 0; + + // Calculate sum for each displayed value column + foreach (var columnName in displayedColumns.Where(c => c.StartsWith("Value"))) + { + var sum = records + .Select(r => GetRecordValueByName(r, columnName)) + .Where(v => v.HasValue) + .Sum(v => v!.Value); + + columnSums[columnName] = sum; + totalSum += sum; + } + + // Keep valueSum for backward compatibility (Value1 sum) + valueSum = columnSums.ContainsKey("Value1") ? columnSums["Value1"] : 0; } private string GetRecordValue(RecordDto record, string columnName) @@ -246,7 +264,7 @@ public partial class Details : ComponentBase { records.Remove(record); CalculateDisplayedColumns(); - CalculateValueSum(); + CalculateColumnSums(); Snackbar.Add("Record deleted successfully", Severity.Success); } else @@ -297,7 +315,7 @@ public partial class Details : ComponentBase { records.Add(created); CalculateDisplayedColumns(); - CalculateValueSum(); + CalculateColumnSums(); isAddingNew = false; newRecord = new(); Snackbar.Add("Record added successfully", Severity.Success);