livia-test/Livia/Views/Controls/DataBlockTableControl.xaml
2025-03-28 14:31:53 +08:00

318 lines
25 KiB
XML

<UserControl x:Class="Livia.Views.Controls.DataBlockTableControl"
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"
xmlns:viewModels="clr-namespace:Livia.ViewModels"
xmlns:converters="clr-namespace:Livia.Views.Converters"
xmlns:attachedProperties="clr-namespace:Livia.Views.AttachedProperties"
xmlns:properties="clr-namespace:Livia.Properties"
xmlns:controls="clr-namespace:Livia.Views.Controls"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
mc:Ignorable="d"
d:Background="{StaticResource PrimaryColorBrush}"
d:DataContext="{d:DesignInstance Type=viewModels:DataBlockTableViewModel}">
<UserControl.Resources>
<ResourceDictionary>
<converters:ServerJobStatusColorConverter x:Key="ServerJobStatusColorConverter" />
<converters:BooleanToVisibilityHiddenConverter x:Key="BooleanToVisibilityHiddenConverter" />
<converters:ServerJobStatusVisibilityHiddenConverter x:Key="ServerJobStatusVisibilityHiddenConverter" />
<converters:ServerJobStatusVisibilityCollapsedConverter x:Key="ServerJobStatusVisibilityCollapsedConverter" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Livia;component/Resources/Themes/ScrollViewBarStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid Grid.Row="0"
ItemsSource="{Binding ServerJobList, IsAsync=True}"
x:Name="DataGrid"
Margin="20, 20, 20, 0"
Style="{StaticResource LiviaDataGrid}"
RowBackground="{StaticResource ServerJobListRowBackground}"
BorderBrush="Transparent"
BorderThickness="0"
AlternatingRowBackground="{StaticResource PrimaryColorBrush}"
Background="Transparent"
EnableRowVirtualization="True"
ScrollViewer.CanContentScroll="True"
RowHeight="80"
GridLinesVisibility="None"
ColumnHeaderStyle="{StaticResource ServerJobListColumnHeader}"
CellStyle="{StaticResource LiviaDataGridCell}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="{StaticResource PatientName}"
SortMemberPath="PatientName"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding PatientName}"
ToolTip="{Binding PatientName}"
MaxWidth="150"
Foreground="{StaticResource PrimaryTextColorBrush}"
Style="{StaticResource ServerJobListText}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="{StaticResource PatientId}"
SortMemberPath="PatientId"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding PatientId}"
ToolTip="{Binding PatientId}"
MaxWidth="150"
Foreground="{StaticResource PrimaryTextColorBrush}"
Style="{StaticResource ServerJobListText}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding PatientSex}"
Header="{StaticResource PatientSex}"
Foreground="{StaticResource PrimaryTextColorBrush}"
ElementStyle="{StaticResource ServerJobListText}"
IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding PatientAge}"
Header="{StaticResource PatientAge}"
Foreground="{StaticResource PrimaryTextColorBrush}"
ElementStyle="{StaticResource ServerJobListText}"
IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding StudyDate, StringFormat=d}"
Header="{StaticResource StudyDate}"
Foreground="{StaticResource PrimaryTextColorBrush}"
ElementStyle="{StaticResource ServerJobListText}"
IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding ImportTime}"
Header="{StaticResource ImportTime}"
Foreground="{StaticResource PrimaryTextColorBrush}"
ElementStyle="{StaticResource ServerJobListText}"
IsReadOnly="True" />
<DataGridTemplateColumn Header="{StaticResource Sequence}"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Sequence}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="2"
Columns="{Binding DataContext.SequenceColumnNum, ElementName=DataGrid}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{StaticResource DataGridButtonBackgroundBrush}"
HorizontalAlignment="Stretch"
Width="125"
Margin="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}"
Grid.Column="0"
Margin="5, 0"
Foreground="{StaticResource PrimaryTextColorBrush}"
HorizontalAlignment="Left"
Style="{StaticResource MaterialDesignBody1TextBlock}" />
<materialDesign:PopupBox Background="{StaticResource PrimaryColorBrush}"
Grid.Column="1"
HorizontalAlignment="Right"
Padding="0"
Foreground="{StaticResource Gray1Brush}">
<Border Padding="40, 20"
Background="{StaticResource PrimaryColorBrush}">
<DataGrid ItemsSource="{Binding Series}"
MaxHeight="500"
Background="{StaticResource PrimaryColorBrush}"
Style="{StaticResource LiviaDataGrid}"
AlternatingRowBackground="{StaticResource PrimaryColorBrush}"
RowBackground="{StaticResource ServerJobListRowBackground}"
BorderBrush="Transparent"
BorderThickness="0"
EnableRowVirtualization="True"
ScrollViewer.CanContentScroll="True"
RowHeight="80"
GridLinesVisibility="None"
ColumnHeaderStyle="{StaticResource ServerJobListColumnHeader}"
CellStyle="{StaticResource LiviaDataGridCell}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding SeriesDescription}"
Header="{StaticResource Sequence}"
Foreground="{StaticResource PrimaryTextColorBrush}"
FontSize="16"
IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
</Border>
</materialDesign:PopupBox>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="{StaticResource Status}"
SortMemberPath="Status"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding StatusString}"
Foreground="{Binding Status, Converter={StaticResource ServerJobStatusColorConverter}}"
Style="{StaticResource ServerJobListText}" />
<Button Style="{StaticResource LiviaPrimaryTinyIconButton}"
Visibility="{Binding Status, Converter={StaticResource ServerJobStatusVisibilityCollapsedConverter}}"
Margin="-8, 2, -8, 0"
Foreground="{StaticResource MaterialDesignCheckBoxOff}"
attachedProperties:IconKindProperties.IconKind="HelpCircleOutline"
ToolTip="{Binding Tooltip}"
VerticalAlignment="Center">
</Button>
<materialDesign:PopupBox Visibility="{Binding ContainsMultipleHistory, Converter={StaticResource BooleanToVisibilityHiddenConverter}}"
Background="{StaticResource PrimaryColorBrush}"
Padding="0"
Margin="0, 2, 0, 0"
Foreground="{StaticResource Gray1Brush}">
<Border Padding="40, 20"
Background="{StaticResource PrimaryColorBrush}">
<DataGrid ItemsSource="{Binding HistoryList}"
MaxHeight="500"
Background="{StaticResource PrimaryColorBrush}"
Style="{StaticResource LiviaDataGrid}"
AlternatingRowBackground="{StaticResource PrimaryColorBrush}"
RowBackground="{StaticResource ServerJobListRowBackground}"
BorderBrush="Transparent"
BorderThickness="0"
EnableRowVirtualization="True"
ScrollViewer.CanContentScroll="True"
RowHeight="80"
GridLinesVisibility="None"
ColumnHeaderStyle="{StaticResource ServerJobListColumnHeader}"
CellStyle="{StaticResource LiviaDataGridCell}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ImportTime}"
Header="{StaticResource ImportTime}"
Foreground="{StaticResource PrimaryTextColorBrush}"
ElementStyle="{StaticResource ServerJobListText}"
IsReadOnly="True" />
<DataGridTemplateColumn Header="{StaticResource Status}"
SortMemberPath="Status"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding StatusString}"
Foreground="{Binding Status, Converter={StaticResource ServerJobStatusColorConverter}}"
Style="{StaticResource ServerJobListText}" />
<Button Style="{StaticResource LiviaPrimaryTinyIconButton}"
Visibility="{Binding Status, Converter={StaticResource ServerJobStatusVisibilityHiddenConverter}}"
Margin="-7, 2, 0, 0"
Foreground="{StaticResource MaterialDesignCheckBoxOff}"
attachedProperties:IconKindProperties.IconKind="HelpCircleOutline"
ToolTip="{Binding Tooltip}"
VerticalAlignment="Center">
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="{StaticResource Operation}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Margin="0, 0, 0, 0"
Style="{StaticResource LiviaAlertIconButton}"
ToolTip="{StaticResource JobListDeleteSeriesButtonText}"
attachedProperties:IconKindProperties.IconKind="DeleteOutline"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="HistoryListDeleteHistoryButtonClick" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Border>
</materialDesign:PopupBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="{StaticResource Operation}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal"
Margin="10, 0">
<Button Margin="10, 0"
Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
Visibility="{Binding SelectSeriesButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}}"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListSelectSeriesButtonText}"
IsEnabled="True"
Click="SelectSeriesButtonClick" />
<StackPanel Orientation="Horizontal"
Visibility="{Binding JobSuccess, Converter={StaticResource BooleanToVisibilityHiddenConverter}}"
d:Visibility="Visible">
<Button Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListLoadDataButtonText}"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="LoadDataButtonClick" />
<Button Margin="10, 0, 0, 0"
Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
attachedProperties:StringItemProperties.ItemName="{StaticResource CheckReportsButtonText}"
Visibility="{Binding ShowSortedDownloadButton, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="CheckReportsButtonClick" />
<Button Margin="10, 0, 0, 0"
Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
Visibility="{Binding ShowArchiveDownloadButton, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListDownloadArchiveButtonText}"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="DownloadArchiveButtonClick" />
<Button Margin="10, 0, 0, 0"
Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
Visibility="{Binding ShowSortedDownloadButton, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListDownloadSortedButtonText}"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="DownloadSortedButtonClick" />
</StackPanel>
<StackPanel Visibility="{Binding DeleteButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
<Button Margin="10, 0, 0, 0"
Style="{StaticResource LiviaAlertIconButton}"
attachedProperties:IconKindProperties.IconKind="DeleteOutline"
IsEnabled="{Binding DataContext.ServerHandler.Processing, ElementName=DataGrid, Converter={StaticResource InvertBooleanConverter}}"
Click="DeleteDataButtonClick"
ToolTip="{StaticResource JobListDeleteSeriesButtonText}" >
</Button>
</StackPanel>
<Button Margin="10, 0"
Style="{StaticResource LiviaPrimaryGridProcessingTextButton}"
Visibility="{Binding CancelButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}}"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListCancelButtonText}"
IsEnabled="True"
Click="CancelButtonClick" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<controls:PagingControl DataContext="{Binding DataBlockPagingViewModel}"
Grid.Row="1"
Margin="10"
HorizontalAlignment="Center" />
</Grid>
</UserControl>