Files
Encelado/DesktopBot/Views/OrdersView.xaml
T
2026-06-09 18:29:41 +02:00

200 lines
13 KiB
XML

<UserControl x:Class="DesktopBot.Views.OrdersView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<UserControl.Resources>
<Style x:Key="ColH" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="11"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Padding" Value="8,8"/>
</Style>
<Style x:Key="Cell" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}"/>
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Padding" Value="8,6"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</UserControl.Resources>
<Grid Background="{StaticResource BackgroundDarkBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Header -->
<Grid Grid.Row="0" Margin="24,20,24,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Ordini" Style="{StaticResource SectionTitle}" Margin="0"/>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<TextBlock Text="Caricamento..." Foreground="{StaticResource TextSecondaryBrush}"
FontFamily="Segoe UI" FontSize="12" VerticalAlignment="Center" Margin="0,0,12,0"
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}"/>
<Button Content="&#8635; Aggiorna" Command="{Binding RefreshCommand}"
Style="{StaticResource OutlineButton}" Padding="14,7"/>
</StackPanel>
</Grid>
<TextBlock Grid.Row="1" Margin="24,8,24,0"
Text="{Binding Orders.Count, StringFormat='Ordini totali: {0}'}"
Style="{StaticResource LabelSecondary}"/>
<!-- Errore -->
<Border Grid.Row="2" Margin="24,10,24,0"
Background="#2A1515" BorderBrush="{StaticResource AccentRedBrush}"
BorderThickness="1" CornerRadius="6" Padding="14,8"
Visibility="{Binding HasError, Converter={StaticResource BoolToVisConverter}}">
<TextBlock Text="{Binding ErrorMessage}" Foreground="{StaticResource AccentRedBrush}"
FontFamily="Segoe UI" FontSize="12"/>
</Border>
<!-- Header colonne -->
<Grid Grid.Row="3" Margin="24,14,24,0" Background="{StaticResource BackgroundPanelBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="65"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="145"/>
<ColumnDefinition Width="145"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Asset" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="1" Text="Tipo" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="2" Text="Side" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="3" Text="Qty" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="4" Text="Filled" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="5" Text="Avg Fill" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="6" Text="Limit" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="7" Text="Stato" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="8" Text="Inviato" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="9" Text="Eseguito" Style="{StaticResource ColH}"/>
<TextBlock Grid.Column="10" Text="" Style="{StaticResource ColH}"/>
</Grid>
<!-- Righe ordini -->
<ScrollViewer Grid.Row="4" Margin="24,0,24,20" VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding Orders}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,0,0,1">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#1A1A2E"/>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="65"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="145"/>
<ColumnDefinition Width="145"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Symbol}"
FontWeight="Bold" FontFamily="Segoe UI" FontSize="13"
Foreground="{StaticResource TextPrimaryBrush}" Padding="8,5"/>
<TextBlock Grid.Column="1" Text="{Binding OrderType}" Style="{StaticResource Cell}"
Foreground="{StaticResource TextSecondaryBrush}"/>
<Border Grid.Column="2" CornerRadius="3" Margin="4,7" Padding="6,2"
Background="{Binding SideBadgeColor}" VerticalAlignment="Center">
<TextBlock Text="{Binding Side}" FontFamily="Segoe UI" FontSize="10" FontWeight="Bold"
HorizontalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource AccentRedBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Side}" Value="BUY">
<Setter Property="Foreground" Value="{StaticResource AccentGreenBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Border>
<TextBlock Grid.Column="3" Text="{Binding Qty}" Style="{StaticResource Cell}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="4" Text="{Binding FilledQty}" Style="{StaticResource Cell}" HorizontalAlignment="Right" Foreground="{StaticResource TextSecondaryBrush}"/>
<TextBlock Grid.Column="5" Text="{Binding AvgFillPrice}" Style="{StaticResource Cell}" HorizontalAlignment="Right"/>
<TextBlock Grid.Column="6" Text="{Binding LimitPrice}" Style="{StaticResource Cell}" HorizontalAlignment="Right" Foreground="{StaticResource TextSecondaryBrush}"/>
<!-- Badge stato -->
<Border Grid.Column="7" CornerRadius="3" Margin="4,7" Padding="6,2" VerticalAlignment="Center">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Background" Value="#2A2A3A"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsOpen}" Value="True">
<Setter Property="Background" Value="#1A2A3A"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="{Binding Status}" FontFamily="Segoe UI" FontSize="10" FontWeight="SemiBold"
HorizontalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsOpen}" Value="True">
<Setter Property="Foreground" Value="#5BB8FF"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Border>
<TextBlock Grid.Column="8" Text="{Binding SubmittedAt}" Style="{StaticResource Cell}"
Foreground="{StaticResource TextSecondaryBrush}" FontFamily="Segoe UI Mono" FontSize="11"/>
<TextBlock Grid.Column="9" Text="{Binding FilledAt}" Style="{StaticResource Cell}"
Foreground="{StaticResource TextSecondaryBrush}" FontFamily="Segoe UI Mono" FontSize="11"/>
<Button Grid.Column="10" Content="Cancella"
Command="{Binding DataContext.CancelOrderCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding OrderId}"
Style="{StaticResource DangerButton}" Padding="8,4" Margin="4"
Visibility="{Binding IsOpen, Converter={StaticResource BoolToVisConverter}}"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Style>
<Style TargetType="ItemsControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Orders.Count}" Value="0">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="Nessun ordine trovato."
Foreground="{StaticResource TextSecondaryBrush}"
FontFamily="Segoe UI" FontSize="13"
HorizontalAlignment="Center" Margin="0,50"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.Style>
</ItemsControl>
</ScrollViewer>
</Grid>
</UserControl>