175 lines
11 KiB
XML
175 lines
11 KiB
XML
<Window x:Class="OrpaonVision.ConfigApp.Views.TrainingTaskManagementWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
mc:Ignorable="d"
|
|
Title="训练任务管理" Height="720" Width="1200" MinWidth="1000" MinHeight="600">
|
|
<Grid Margin="16">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 标题 -->
|
|
<TextBlock Grid.Row="0" Margin="0,0,0,16" FontSize="24" FontWeight="SemiBold" Text="训练任务管理" />
|
|
|
|
<!-- 统计信息和搜索栏 -->
|
|
<Grid Grid.Row="1" Margin="0,0,0,16">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- 统计信息 -->
|
|
<Border Grid.Column="0" Padding="16" Background="#F8F9FA" CornerRadius="6">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Grid.Column="0" Margin="0,0,16,0">
|
|
<TextBlock Text="总任务" FontSize="12" Foreground="#666666" />
|
|
<TextBlock Text="{Binding Statistics.TotalTasks}" FontSize="20" FontWeight="Bold" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="1" Margin="0,0,16,0">
|
|
<TextBlock Text="运行中" FontSize="12" Foreground="#666666" />
|
|
<TextBlock Text="{Binding Statistics.RunningTasks}" FontSize="20" FontWeight="Bold" Foreground="#007ACC" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="2" Margin="0,0,16,0">
|
|
<TextBlock Text="已完成" FontSize="12" Foreground="#666666" />
|
|
<TextBlock Text="{Binding Statistics.CompletedTasks}" FontSize="20" FontWeight="Bold" Foreground="#28A745" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="3" Margin="0,0,16,0">
|
|
<TextBlock Text="失败" FontSize="12" Foreground="#666666" />
|
|
<TextBlock Text="{Binding Statistics.FailedTasks}" FontSize="20" FontWeight="Bold" Foreground="#DC3545" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="4">
|
|
<TextBlock Text="成功率" FontSize="12" Foreground="#666666" />
|
|
<TextBlock Text="{Binding Statistics.SuccessRate, StringFormat={}{0:F1}%}" FontSize="20" FontWeight="Bold" Foreground="#28A745" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 搜索和筛选 -->
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
|
<TextBox x:Name="SearchTextBox" Width="200" Margin="0,0,8,0" VerticalContentAlignment="Center"
|
|
Text="{Binding SearchKeyword, UpdateSourceTrigger=PropertyChanged}" />
|
|
<ComboBox x:Name="StatusComboBox" Width="120" Margin="0,0,8,0" VerticalContentAlignment="Center"
|
|
ItemsSource="{Binding StatusOptions}" SelectedItem="{Binding SelectedStatus}">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Converter={StaticResource EnumToDescriptionConverter}}" />
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
<Button Content="搜索" Command="{Binding SearchCommand}" Padding="12,6" />
|
|
<Button Content="刷新" Command="{Binding RefreshDataCommand}" Padding="12,6" Margin="8,0,0,0" />
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
<!-- 任务列表 -->
|
|
<Border Grid.Row="2" BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="6">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 数据表格 -->
|
|
<DataGrid Grid.Row="0"
|
|
ItemsSource="{Binding Tasks}"
|
|
SelectedItem="{Binding SelectedTask}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
IsReadOnly="True"
|
|
HeadersVisibility="Column"
|
|
GridLinesVisibility="Horizontal"
|
|
HorizontalGridLinesBrush="#EEEEEE"
|
|
SelectionMode="Single">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="任务名称" Binding="{Binding Name}" Width="200" />
|
|
<DataGridTextColumn Header="类型" Binding="{Binding TaskType, Converter={StaticResource EnumToDescriptionConverter}}" Width="100" />
|
|
<DataGridTextColumn Header="状态" Binding="{Binding Status, Converter={StaticResource EnumToDescriptionConverter}}" Width="100">
|
|
<DataGridTextColumn.ElementStyle>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{Binding Status, Converter={StaticResource StatusToColorConverter}}" />
|
|
</Style>
|
|
</DataGridTextColumn.ElementStyle>
|
|
</DataGridTextColumn>
|
|
<DataGridTextColumn Header="优先级" Binding="{Binding Priority, Converter={StaticResource EnumToDescriptionConverter}}" Width="80" />
|
|
<DataGridTextColumn Header="进度" Binding="{Binding Progress, StringFormat={}{0:F1}%}" Width="80" />
|
|
<DataGridTextColumn Header="当前轮次" Binding="{Binding CurrentEpoch}" Width="80" />
|
|
<DataGridTextColumn Header="总轮次" Binding="{Binding TotalEpochs}" Width="80" />
|
|
<DataGridTextColumn Header="当前损失" Binding="{Binding CurrentLoss, StringFormat=F4}" Width="100" />
|
|
<DataGridTextColumn Header="最佳mAP" Binding="{Binding BestMap, StringFormat=F4}" Width="100" />
|
|
<DataGridTextColumn Header="创建人" Binding="{Binding CreatedByName}" Width="100" />
|
|
<DataGridTextColumn Header="创建时间" Binding="{Binding CreatedAtUtc, Converter={StaticResource DateTimeToLocalConverter}}" Width="140" />
|
|
<DataGridTextColumn Header="分配给" Binding="{Binding AssignedToName}" Width="100" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<!-- 分页控件 -->
|
|
<Border Grid.Row="1" Padding="12" Background="#F8F9FA" BorderThickness="0,1,0,0" BorderBrush="#DDDDDD">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
|
|
<TextBlock Text="共 " />
|
|
<TextBlock Text="{Binding TotalCount}" FontWeight="Bold" />
|
|
<TextBlock Text=" 条记录,第 " />
|
|
<TextBlock Text="{Binding CurrentPageIndex}" FontWeight="Bold" />
|
|
<TextBlock Text=" / " />
|
|
<TextBlock Text="{Binding TotalPages}" FontWeight="Bold" />
|
|
<TextBlock Text=" 页" />
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Column="2" Orientation="Horizontal">
|
|
<Button Content="上一页" Command="{Binding PageChangedCommand}" CommandParameter="{Binding CurrentPageIndex, Converter={StaticResource PageIndexConverter}, ConverterParameter=prev}"
|
|
Padding="8,4" Margin="0,0,8,0" />
|
|
<Button Content="下一页" Command="{Binding PageChangedCommand}" CommandParameter="{Binding CurrentPageIndex, Converter={StaticResource PageIndexConverter}, ConverterParameter=next}"
|
|
Padding="8,4" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 操作按钮栏 -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" Margin="0,16,0,0" HorizontalAlignment="Right">
|
|
<Button Content="启动" Command="{Binding StartTaskCommand}" IsEnabled="{Binding CanStartTask}" Padding="16,8" Margin="0,0,8,0" />
|
|
<Button Content="暂停" Command="{Binding PauseTaskCommand}" IsEnabled="{Binding CanPauseTask}" Padding="16,8" Margin="0,0,8,0" />
|
|
<Button Content="停止" Command="{Binding StopTaskCommand}" IsEnabled="{Binding CanStopTask}" Padding="16,8" Margin="0,0,8,0" />
|
|
<Button Content="取消" Command="{Binding CancelTaskCommand}" IsEnabled="{Binding CanCancelTask}" Padding="16,8" Margin="0,0,8,0" />
|
|
<Button Content="重启" Command="{Binding RestartTaskCommand}" IsEnabled="{Binding CanRestartTask}" Padding="16,8" Margin="0,0,8,0" />
|
|
<Button Content="删除" Command="{Binding DeleteTaskCommand}" IsEnabled="{Binding CanDeleteTask}" Padding="16,8" Margin="0,0,8,0" Background="#DC3545" Foreground="White" />
|
|
<Button Content="详情" Command="{Binding ViewTaskDetailsCommand}" IsEnabled="{Binding HasSelectedTask}" Padding="16,8" />
|
|
</StackPanel>
|
|
|
|
<!-- 状态栏 -->
|
|
<StatusBar Grid.Row="3" VerticalAlignment="Bottom" Background="#F8F9FA">
|
|
<StatusBarItem>
|
|
<StackPanel Orientation="Horizontal">
|
|
<ProgressBar IsIndeterminate="{Binding IsLoading}" Width="16" Height="16" Margin="0,0,8,0" Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisibilityConverter}}" />
|
|
<TextBlock Text="{Binding StatusMessage}" />
|
|
</StackPanel>
|
|
</StatusBarItem>
|
|
</StatusBar>
|
|
</Grid>
|
|
</Window>
|