Files
PolyTraderSharp/src/PolyTrader.App.Avalonia/Views/TerminalWindow.axaml
T
RichardandClaude Opus 5 dd8da3fd3f Arbeitsstand gesichert: Deploymentcenter-Integration (D-0 bis D-5) und Einfenster-Shell
Sicherungscommit vor dem Aufraeumen des Repos, damit nachvollziehbar bleibt,
welcher Stand vor der Bereinigung galt. Build gruen, 476 Tests gruen.

Zwei Straenge, die sich ueber .csproj, Program.cs und appsettings.json
ueberschneiden und darum gemeinsam abgelegt werden:

Deploymentcenter-Integration (P3c, Plan D-0 bis D-5 code-seitig fertig):
- Deploymentcenter.Client 2.5.0 als lokales Paket, Source-Mapping erweitert
- DeploymentcenterOptions, DeploymentcenterErrorReporter, LicenseGate/LicenseCli
- WatchdogHeartbeatService auf die Deploymentcenter-API umgestellt
  (version, os, checks, metrics, status stopped)
- Security: MasterKeyResolver, SecretRedactor, FilePermissions
- Directory.Build.props mit zentraler Version 0.1.0 (Packager-Versionsdisziplin)
- deploy/: Packager-Vorlage und systemd-Unit; echte Zugangsdaten bleiben
  ueber .gitignore aussen vor
- setup.json fuer die Erstinstallation
- UMSETZUNGSPLAN-Deploymentcenter-Integration.md; ANALYSE-Linux-Portierung.md
  verweist auf den neuen Plan

Einfenster-Shell (UI-Redesign):
- ShellWindow + ShellNavModel als Seitenleisten-Shell
- WindowMenuBar und WindowMenuModel entfallen
- Modul- und Kernfenster auf die Shell-Einbettung angepasst

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 10:42:22 +02:00

93 lines
5.2 KiB
XML

<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:PolyTrader.App.Avalonia.ViewModels"
x:Class="PolyTrader.App.Avalonia.Views.TerminalWindow">
<!--
Terminal- und Log-Ansicht.
Live-Tab: farbige Log-Zeilen, abschaltbarer Autoscroll, Level-Filter.
Log-Viewer-Tab: die JSONL-Tagesdateien, filterbar nach Datum, Level, CID und Volltext.
Die Live-Ausgabe ist ein virtualisiertes ItemsControl über eine begrenzte Zeilenliste
statt einer RichTextBox. Damit entfällt das Auto-Clear der WinForms-Fassung, das bei
Erreichen der RAM-Grenze den gesamten Verlauf verwarf: es werden nur noch die ältesten
Zeilen verdrängt, der sichtbare Verlauf bleibt erhalten.
-->
<DockPanel>
<TabControl>
<TabItem Header="Live">
<DockPanel>
<Border Classes="toolbar" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal" Spacing="8">
<Button Name="btnAutoscroll" Content="Stop Autoscroll" />
<Button Name="btnClear" Content="Terminal leeren" />
<Button Name="btnCopyAll" Content="Alles kopieren" />
<TextBlock Text="Level:" VerticalAlignment="Center" />
<ComboBox Name="cbLogLevel" MinWidth="150" />
<TextBlock Name="lblLiveStatus" VerticalAlignment="Center" Foreground="{DynamicResource AppMutedTextBrush}" />
</StackPanel>
</Border>
<Border Background="#1E1E1E">
<ScrollViewer Name="logScroll">
<ScrollViewer.ContextMenu>
<ContextMenu>
<MenuItem Header="Kopieren" Click="OnContextMenuCopyClick" />
<MenuItem Header="Alles auswählen" Click="OnContextMenuSelectAllClick" />
</ContextMenu>
</ScrollViewer.ContextMenu>
<ItemsControl Name="logLines" Margin="8">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:LogLine">
<SelectableTextBlock Text="{Binding Text}"
Foreground="{Binding Brush}"
FontFamily="Consolas,Menlo,DejaVu Sans Mono,monospace"
FontSize="12"
TextWrapping="Wrap" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Border>
</DockPanel>
</TabItem>
<TabItem Header="Log Viewer">
<DockPanel>
<Border Classes="toolbar" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal" Spacing="8">
<TextBlock Text="Datum:" VerticalAlignment="Center" />
<CalendarDatePicker Name="dtViewerDate" MinWidth="150" />
<TextBlock Text="Level:" VerticalAlignment="Center" />
<ComboBox Name="cbViewerLevel" MinWidth="130" />
<TextBlock Text="CID:" VerticalAlignment="Center" />
<TextBox Name="tbViewerCid" MinWidth="150" />
<TextBlock Text="Text:" VerticalAlignment="Center" />
<TextBox Name="tbViewerText" MinWidth="220" />
<Button Name="btnViewerLoad" Content="Laden" />
<TextBlock Name="lblViewerStatus" VerticalAlignment="Center" Foreground="{DynamicResource AppMutedTextBrush}" />
</StackPanel>
</Border>
<DataGrid Name="gridLogs" x:DataType="vm:LogViewerRow">
<DataGrid.Columns>
<DataGridTextColumn Header="Zeit" Width="90" Binding="{Binding Time}" />
<DataGridTextColumn Header="Level" Width="110" Binding="{Binding Level}" />
<DataGridTextColumn Header="CID" Width="160" Binding="{Binding Cid}" />
<DataGridTextColumn Header="Nachricht" Width="*" Binding="{Binding Message}" />
</DataGrid.Columns>
</DataGrid>
</DockPanel>
</TabItem>
</TabControl>
</DockPanel>
</UserControl>