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>
93 lines
5.2 KiB
XML
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>
|