using System; using System.Collections.ObjectModel; using System.Linq; using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.Media; using Avalonia.Threading; using PolyTrader.App.Avalonia.ViewModels; using PolyTrader.Core.Analytics; using PolyTrader.Core.Modularity; using PolyTrader.Modules.Supervisor.Agent; using PolyTrader.Modules.Supervisor.Counterfactual; using PolyTrader.Modules.Supervisor.Persistence; using PolyTrader.Modules.Supervisor.Services; using PolyTraderSharp.Services; namespace PolyTrader.App.Avalonia.Views.Modules { /// /// Supervisor: Analyse-Chat gegen den Agenten, Dossiers je Signal, gespeicherte Berichte und /// Counterfactuals. Layout vollständig in SupervisorWindow.axaml. /// public partial class SupervisorWindow : Window { private readonly ObservableCollection _chat = new(); private readonly ObservableCollection _signals = new(); private readonly ObservableCollection _reports = new(); private readonly ObservableCollection _counterfactuals = new(); private readonly SupervisorAgent _agent = null!; private readonly DossierService _dossiers = null!; private readonly ISupervisorReportRepository _reportRepo = null!; private readonly ISupervisorCounterfactualRepository _cfRepo = null!; private readonly TerminalLogger _logger = null!; public SupervisorWindow() => AvaloniaXamlLoader.Load(this); public SupervisorWindow(IModuleUiHost host, SupervisorAgent agent, DossierService dossiers, ISupervisorReportRepository reportRepo, ISupervisorCounterfactualRepository cfRepo, TerminalLogger logger) : this() { this.FindControl("menuBar")!.Attach(host, "supervisor.main", this); _agent = agent; _dossiers = dossiers; _reportRepo = reportRepo; _cfRepo = cfRepo; _logger = logger; this.FindControl("chatLines")!.ItemsSource = _chat; this.FindControl("gridSignals")!.ItemsSource = _signals; this.FindControl("gridReports")!.ItemsSource = _reports; this.FindControl("gridCounterfactual")!.ItemsSource = _counterfactuals; var cbProfile = this.FindControl("cbProfile")!; cbProfile.ItemsSource = SupervisorProfiles.All.ToList(); cbProfile.SelectedIndex = 0; this.FindControl