200 lines
13 KiB
XML
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="↻ 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>
|