Refactoring e nuove funzionalità per AutoBidder v4.0

* Aggiornamento alla versione 4.0.0
* Refactoring architetturale: introdotte partial classes e UserControls modulari per migliorare manutenibilità e leggibilità.
* Aggiunti nuovi UserControls: `AuctionMonitorControl`, `BrowserControl`, `SettingsControl`, `StatisticsControl`.
* Introdotto supporto per WebView2 per il browser integrato.
* Migliorata gestione delle aste: aggiunta/rimozione tramite URL o ID, configurazione predefinita.
* Nuove funzionalità di esportazione: supporto CSV, JSON, XML con opzioni configurabili.
* Logging avanzato: codifica colore per severità e auto-scroll.
* Tema scuro moderno e miglioramenti UI/UX: sidebar di navigazione, griglie virtualizzate, icone emoji.
* Persistenza dati: salvataggio automatico di aste e impostazioni in file JSON.
* Documentazione aggiornata: `README.md`, `CHANGELOG.md` e nuovi file di supporto.
* Miglioramenti alla sicurezza: cookie di sessione salvati in modo sicuro con DPAPI.
* Preparazione per future estensioni: placeholder per funzionalità avanzate e struttura modulare.
This commit is contained in:
Alberto Balbo
2025-11-17 16:01:22 +01:00
parent 8717a3b6ef
commit 6036896f7d
35 changed files with 7088 additions and 2716 deletions

View File

@@ -0,0 +1,135 @@
<UserControl x:Class="AutoBidder.Controls.StatisticsControl"
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"
d:DesignHeight="800" d:DesignWidth="1200"
Background="#1E1E1E">
<UserControl.Resources>
<Style x:Key="RoundedButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}"
CornerRadius="8"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="15,10"/>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- Header -->
<Border Grid.Row="0" Background="#2D2D30" Padding="15" BorderBrush="#3E3E42" BorderThickness="0,0,0,1">
<Grid>
<TextBlock Text="📊 Dati Statistici - Analisi Aste Chiuse"
Foreground="#00D800"
FontSize="16"
FontWeight="Bold"
VerticalAlignment="Center"/>
<Button x:Name="LoadClosedAuctionsButton"
Content="🔄 Carica Statistiche"
HorizontalAlignment="Right"
Background="#007ACC"
Style="{StaticResource RoundedButton}"
Click="LoadClosedAuctionsButton_Click"/>
</Grid>
</Border>
<!-- DataGrid Statistiche -->
<DataGrid Grid.Row="1"
x:Name="StatsDataGrid"
AutoGenerateColumns="False"
IsReadOnly="True"
Background="#1E1E1E"
Foreground="#CCCCCC"
RowBackground="#1E1E1E"
AlternatingRowBackground="#252526"
GridLinesVisibility="Horizontal"
HeadersVisibility="Column"
BorderThickness="0"
Margin="15">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="#2D2D30"/>
<Setter Property="Foreground" Value="#CCCCCC"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Padding" Value="10,8"/>
<Setter Property="BorderThickness" Value="0,0,1,1"/>
<Setter Property="BorderBrush" Value="#3E3E42"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="10,5"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="#CCCCCC"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Prodotto" Binding="{Binding ProductName}" Width="3*"/>
<DataGridTextColumn Header="Prezzo Medio" Binding="{Binding AverageFinalPrice, StringFormat=€{0:F2}}" Width="120"/>
<DataGridTextColumn Header="Click Medi" Binding="{Binding AverageBidsUsed, StringFormat={}{0:F0}}" Width="100"/>
<DataGridTextColumn Header="Vincitore Frequente" Binding="{Binding Winner}" Width="150"/>
<DataGridTextColumn Header="# Aste" Binding="{Binding Count}" Width="80"/>
</DataGrid.Columns>
</DataGrid>
<!-- Footer: Status -->
<Border Grid.Row="2"
Background="#252526"
Padding="15"
BorderBrush="#3E3E42"
BorderThickness="0,1,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock x:Name="StatsStatusText"
Text="Pronto per caricare statistiche"
FontSize="13"
Foreground="#CCCCCC"
VerticalAlignment="Center"/>
<TextBlock x:Name="ExportProgressText"
Text=""
FontSize="11"
Foreground="#999999"
Margin="0,5,0,0"
Visibility="Collapsed"/>
</StackPanel>
<ProgressBar Grid.Column="1"
x:Name="ExportProgressBar"
Width="200"
Height="20"
IsIndeterminate="True"
Foreground="#007ACC"
Background="#1E1E1E"
BorderBrush="#3E3E42"
Visibility="Collapsed"/>
</Grid>
</Border>
</Grid>
</UserControl>