From c966604b07ce7a631d9e900d216275fa922b5e8d Mon Sep 17 00:00:00 2001 From: Elias Fierke Date: Fri, 7 Aug 2026 20:55:15 +0200 Subject: [PATCH] [chore:] better result window --- ResultWindow.axaml | 63 ++++++++++++++++++++++++++++++++-- ResultWindow.axaml.cs | 79 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 127 insertions(+), 15 deletions(-) diff --git a/ResultWindow.axaml b/ResultWindow.axaml index 7ab0b09..49792b0 100644 --- a/ResultWindow.axaml +++ b/ResultWindow.axaml @@ -3,8 +3,9 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" Icon="assets/icon.ico" + xmlns:local="using:Logof_Client" x:Class="Logof_Client.ResultWindow" - Title="Ergebnis"> + Title="Ergebnis" x:DataType="local:ResultWindow"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ResultWindow.axaml.cs b/ResultWindow.axaml.cs index 7a709fb..96f687d 100644 --- a/ResultWindow.axaml.cs +++ b/ResultWindow.axaml.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; using System.Linq; +using System.Runtime.CompilerServices; using Avalonia; using Avalonia.Controls; using Avalonia.Interactivity; @@ -8,38 +11,72 @@ using Avalonia.Layout; using Avalonia.Media; namespace Logof_Client; +using System.ComponentModel; +using System.Runtime.CompilerServices; -public partial class ResultWindow : Window +public partial class ResultWindow : Window, INotifyPropertyChanged { + public event PropertyChangedEventHandler? PropertyChanged; + + private List _results = new(); + + public List Results + { + get => _results; + private set + { + _results = value; + PropertyChanged?.Invoke( + this, + new PropertyChangedEventArgs(nameof(Results)) + ); + } + } + public List errortypecheckboxes = new(); public KasAddressList ur_addresses = new("Ergebnis_" + DateTime.Now.ToString("ddMMyy_HHmmss")); public List ur_result; public List warningtypecheckboxes = new(); + public List? SelectedResults { get; set; } - public ResultWindow(List result, - int addressSetID) + public ResultWindow(List result, int addressSetID) { InitializeComponent(); + + DataContext = this; + ur_result = result; Load(result); } - private void GenerateView(List result) - { + //public List Results { get; private set; } = new(); + private void GenerateView(List result) { try { // Filter to only show persons with errors var result_with_errors = result.Where(p => p.PersonError != null).ToList(); LblResultCount.Content = $"{result_with_errors.Count}/{ur_result.Count} Ergebnisse"; - - LbResults.Items.Clear(); - foreach (var person in result_with_errors) LbResults.Items.Add(person.PersonError.ToString(person)); + //LbResults.Items.Clear(); + // foreach (var person in result_with_errors) + // LbResults.Items.Add(person.PersonError.ToString(person)); + Results = result_with_errors + .Select(person => new ResultItem + { + Person = person, + PersonId = person.id, + Name = $"{person.vorname} {person.name}".Trim(), + Errors = string.Join(", ", person.PersonError.errors), + Warnings = string.Join(", ", person.PersonError.warnings), + Refsid = person.refsid.ToString() ?? "" + }) + .ToList(); } catch (Exception ex) { - Logger.Log("Error while generating result view: " + ex.Message, Logger.LogType.Warning); - } + Logger.Log("Error while generating result view: " + ex.Message, Logger.LogType.Warning); + + } } private void ViewSingle(int id) @@ -179,8 +216,9 @@ public partial class ResultWindow : Window LblResultCount.Content = $"{temp_result.Count}/{ur_result.Count} Ergebnisse"; - LbResults.Items.Clear(); - foreach (var person in temp_result) LbResults.Items.Add(person.PersonError.ToString(person)); + //LbResults.Items.Clear(); + GenerateView(temp_result); + //foreach (var person in temp_result) LbResults.Items.Add(person.PersonError.ToString(person)); } catch (Exception ex) { @@ -200,4 +238,19 @@ public partial class ResultWindow : Window Console.WriteLine("Updating filter..."); UpdateFilter(); } -} \ No newline at end of file + //public ObservableCollection Results { get; } = new(); +} +public class ResultItem +{ + public int PersonId { get; init; } + + public string Name { get; init; } = ""; + + public string Errors { get; init; } = ""; + + public string Warnings { get; init; } = ""; + + public string Refsid { get; init; } = ""; + + public KasPerson Person { get; init; } = null!; +}