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>
94 lines
6.0 KiB
XML
94 lines
6.0 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:controls="using:PolyTrader.App.Avalonia.Controls"
|
|
xmlns:rf="using:PolyTrader.Modules.ResolutionFarming.Models"
|
|
x:Class="PolyTrader.App.Avalonia.Views.Modules.ResolutionFarmingWindow">
|
|
|
|
<!-- Vier Tabs (Kandidaten / Positionen / Historie+Statistik / Settings), Aufbau nach
|
|
docs/UI-SPEZIFIKATION-WinForms.md: je Tab ein Grid mit „Aktualisieren", Konto-Auswahl oben. -->
|
|
<DockPanel>
|
|
<Border Classes="toolbar" DockPanel.Dock="Top">
|
|
<StackPanel Orientation="Horizontal" Spacing="8">
|
|
<TextBlock Text="Konto:" VerticalAlignment="Center" />
|
|
<ComboBox Name="cbAccount" MinWidth="240" />
|
|
<Button Name="btnRefresh" Content="Aktualisieren" />
|
|
<TextBlock Name="lblStatus" VerticalAlignment="Center" Foreground="{DynamicResource AppMutedTextBrush}" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<TabControl>
|
|
|
|
<TabItem Header="Kandidaten">
|
|
<DataGrid Name="gridCandidates" x:DataType="rf:RfCandidate">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Gescannt" Width="140" Binding="{Binding ScannedAt, StringFormat=\{0:dd.MM. HH:mm\}}" />
|
|
<DataGridTextColumn Header="Markt" Width="*" Binding="{Binding MarketQuestion}" />
|
|
<DataGridTextColumn Header="Outcome" Width="80" Binding="{Binding Outcome}" />
|
|
<DataGridTextColumn Header="Kategorie" Width="120" Binding="{Binding Category}" />
|
|
<DataGridTextColumn Header="Ask" Width="70" Binding="{Binding Ask, StringFormat=\{0:F3\}}" />
|
|
<DataGridTextColumn Header="Fee (bps)" Width="80" Binding="{Binding FeeBps}" />
|
|
<DataGridTextColumn Header="Netto-Edge %" Width="110" Binding="{Binding NetEdgePct, StringFormat=\{0:F2\}}" />
|
|
<DataGridTextColumn Header="Score" Width="80" Binding="{Binding Score, StringFormat=\{0:F2\}}" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</TabItem>
|
|
|
|
<TabItem Header="Positionen">
|
|
<DockPanel>
|
|
<Border Classes="statusbar" DockPanel.Dock="Bottom">
|
|
<TextBlock Name="lblPositionsSummary" Text="—" />
|
|
</Border>
|
|
<DataGrid Name="gridPositions" x:DataType="rf:RfPosition">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Eröffnet" Width="140" Binding="{Binding OpenedAt, StringFormat=\{0:dd.MM.yyyy HH:mm\}}" />
|
|
<DataGridTextColumn Header="Markt" Width="*" Binding="{Binding MarketQuestion}" />
|
|
<DataGridTextColumn Header="Outcome" Width="80" Binding="{Binding Outcome}" />
|
|
<DataGridTextColumn Header="Kategorie" Width="120" Binding="{Binding Category}" />
|
|
<DataGridTextColumn Header="Entry" Width="70" Binding="{Binding EntryPrice, StringFormat=\{0:F3\}}" />
|
|
<DataGridTextColumn Header="Size" Width="80" Binding="{Binding Size, StringFormat=\{0:F2\}}" />
|
|
<DataGridTextColumn Header="Einsatz" Width="90" Binding="{Binding AmountUsd, StringFormat=\{0:F2\}}" />
|
|
<DataGridCheckBoxColumn Header="Demo" Width="60" Binding="{Binding IsDemo}" />
|
|
<DataGridTextColumn Header="Auflösung" Width="140" Binding="{Binding EndDate, StringFormat=\{0:dd.MM.yyyy\}}" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
|
|
<TabItem Header="Historie / Statistik">
|
|
<DockPanel>
|
|
<Border Classes="statusbar" DockPanel.Dock="Bottom">
|
|
<TextBlock Name="lblHistorySummary" Text="—" />
|
|
</Border>
|
|
<DataGrid Name="gridHistory" x:DataType="rf:RfClosedTrade">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Markt" Width="*" Binding="{Binding MarketQuestion}" />
|
|
<DataGridTextColumn Header="Outcome" Width="80" Binding="{Binding Outcome}" />
|
|
<DataGridTextColumn Header="Kategorie" Width="120" Binding="{Binding Category}" />
|
|
<DataGridTextColumn Header="Entry" Width="70" Binding="{Binding EntryPrice, StringFormat=\{0:F3\}}" />
|
|
<DataGridTextColumn Header="Exit" Width="70" Binding="{Binding ExitPrice, StringFormat=\{0:F3\}}" />
|
|
<DataGridTextColumn Header="Size" Width="80" Binding="{Binding Size, StringFormat=\{0:F2\}}" />
|
|
<DataGridTextColumn Header="PnL" Width="90" Binding="{Binding RealizedPnl, StringFormat=\{0:F2\}}" />
|
|
<DataGridTextColumn Header="PnL %" Width="80" Binding="{Binding PnlPercent, StringFormat=\{0:F1\}}" />
|
|
<DataGridCheckBoxColumn Header="Demo" Width="60" Binding="{Binding IsDemo}" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</TabItem>
|
|
|
|
<TabItem Header="Settings">
|
|
<DockPanel>
|
|
<Border Classes="toolbar" DockPanel.Dock="Top">
|
|
<StackPanel Orientation="Horizontal" Spacing="8">
|
|
<Button Name="btnSettingsSave" Content="Speichern" />
|
|
<TextBlock Name="lblSettingsHint" VerticalAlignment="Center" Foreground="{DynamicResource AppMutedTextBrush}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<controls:SettingsEditor Name="editorSettings" />
|
|
</DockPanel>
|
|
</TabItem>
|
|
|
|
</TabControl>
|
|
</DockPanel>
|
|
|
|
</UserControl>
|