init
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
<base:BaseView x:Class="HardwareList.HardwareListOverdueView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:HardwareList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:converters2="clr-namespace:HardwareList.Converters"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyleNoSelection}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<BooleanToVisibilityConverter x:Key="BoolToVisibility" />
|
||||
<converters2:FirstUseDateConverter x:Key="FirstUseConverter" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}">
|
||||
<ListView ItemsSource="{Binding OverdueHardware, UpdateSourceTrigger=PropertyChanged}" AutomationProperties.AutomationId="HardwareListView" SelectedIndex="{Binding SelectedOverdueIndex, Mode=TwoWay}">
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="HardwareListGridView">
|
||||
<GridViewColumn AutomationProperties.AutomationId="SerialNumber">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="SerialNumber" Content="{strings:TranslateExtension SerialNumber}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding SerialNumber,FallbackValue='SerialNumber'}" AutomationProperties.AutomationId="dueSerialNumLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="HardwareType">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="HardwareType" Content="{strings:TranslateExtension HardwareType}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding HardwareType,FallbackValue='HardwareType'}" AutomationProperties.AutomationId="dueTypeLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="ChannelCount">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="ChannelCount" Content="{strings:TranslateExtension ChannelCount}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding ChannelCount,FallbackValue='ChannelCount'}" AutomationProperties.AutomationId="dueChanCountLbl" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="Firmware">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="Firmware" Content="{strings:TranslateExtension Firmware}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Firmware,FallbackValue='Firmware'}" AutomationProperties.AutomationId="dueFirmwareLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="MaxSampleRate">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="MaxSampleRate" Content="{strings:TranslateExtension MaxSampleRate}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding MaxSampleRate,FallbackValue='MaxSampleRate',StringFormat='N0', TargetNullValue='---'}" AutomationProperties.AutomationId="dueMaxSampleRateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDate">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="CalDate" Content="{strings:TranslateExtension CalDate}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding CalDate,FallbackValue='CalDate', StringFormat='d'}" AutomationProperties.AutomationId="dueCalDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="FirstUseDate">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="FirstUseDate" Content="{strings:TranslateExtension FirstUseDate}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource FirstUseConverter}}"
|
||||
AutomationProperties.AutomationId="FirstUseDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDueDate">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="CalDueDate" Content="{strings:TranslateExtension CalDueDate}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding CalDueDate,FallbackValue='CalDueDate', StringFormat='d'}" AutomationProperties.AutomationId="dueCalDueDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,26 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using DTS.Common.Interface.DASFactory.Diagnostics.HardwareList;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace HardwareList
|
||||
{
|
||||
/// <inheritdoc cref="IHardwareListOverdueView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for HardwareListView.xaml
|
||||
/// </summary>
|
||||
public partial class HardwareListOverdueView : IHardwareListOverdueView
|
||||
{
|
||||
public HardwareListOverdueView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void ListViewHeader_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
var colHeader = (GridViewColumnHeader)e.OriginalSource;
|
||||
var viewModel = (IHardwareListViewModel)colHeader.DataContext;
|
||||
viewModel.SortOverdue(colHeader.Tag, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
<base:BaseView x:Class="HardwareList.HardwareListReplaceView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:behaviors="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:HardwareList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:converters="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
xmlns:converters2="clr-namespace:HardwareList.Converters"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:controls2="clr-namespace:DTS.Common.Controls;assembly=DTS.Common">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<converters:BooleanToVisibilityConverter x:Key="BoolToVis" />
|
||||
<converters2:FirstUseDateConverter x:Key="FirstUseConverter" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="0" Margin="5">
|
||||
<TextBlock Text="{strings:TranslateExtension HardwareToReplace}" Margin="5,0,5,0" />
|
||||
<ComboBox MinWidth="200" ItemsSource="{Binding HardwareInTest}" SelectedItem="{Binding HardwareToReplace}" />
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="0" Margin="5">
|
||||
<TextBlock Text="{strings:TranslateExtension HardwareToReplaceWith}" Margin="5,0,5,0"/>
|
||||
<ComboBox MinWidth="200" ItemsSource="{Binding AvailableHardware}" SelectedItem="{Binding ReplacementHardware}"/>
|
||||
<Button Content="{strings:TranslateExtension Replace}" Click="Replace_Click" MinHeight="25"/>
|
||||
</StackPanel>
|
||||
<ListView ItemsSource="{Binding AssignedChannels}" Grid.Row="2">
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView>
|
||||
<GridViewColumn>
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension ChannelNumber}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding ChannelNumber}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn>
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension Sensor}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Sensor}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn>
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension Name}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Name}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using DTS.Common.Controls;
|
||||
using DTS.Common.Interface.DASFactory.Diagnostics.HardwareList;
|
||||
using DTS.Common.Utils;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace HardwareList
|
||||
{
|
||||
/// <inheritdoc cref="IHardwareListReplaceView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for HardwareListReplaceView.xaml
|
||||
/// </summary>
|
||||
public partial class HardwareListReplaceView : IHardwareListReplaceView
|
||||
{
|
||||
public HardwareListReplaceView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Replace_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(control.DataContext is IHardwareListViewModel vm)) { return; }
|
||||
vm.Replace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,255 @@
|
||||
<base:BaseView x:Class="HardwareList.HardwareListSelectView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:converters="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
xmlns:converters2="clr-namespace:HardwareList.Converters"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:HardwareList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:common="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml"
|
||||
xmlns:controls2="clr-namespace:DTS.Common.Controls;assembly=DTS.Common">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<Style TargetType="RadioButton" BasedOn="{StaticResource FlatRadioButtonStyle}" >
|
||||
<Setter Property="Height" Value="24" />
|
||||
<Setter Property="Margin" Value="5" />
|
||||
</Style>
|
||||
<Style TargetType="{x:Type c1:C1NumericBox}"> <!-- Based on DataPRO CommonStyles -->
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="Background" Value="{StaticResource Brush_FlatControlWindowBackground}" />
|
||||
<Setter Property="CornerRadius" Value="0"/>
|
||||
<Setter Property="MinWidth" Value="50"/>
|
||||
<Setter Property="Height" Value="24" />
|
||||
<Setter Property="ButtonBackground" Value="Transparent"/>
|
||||
<Setter Property="Value" Value="{Binding Value, FallbackValue=1234}"/>
|
||||
<Setter Property="TextAlignment" Value="Left"/>
|
||||
<Setter Property="Margin" Value="5"/>
|
||||
<!--<Setter Property="MouseOverBrush" Value="{StaticResource Brush_FlatControlMouseOverBackground}"/>-->
|
||||
<Setter Property="ToolTipService.ToolTip" Value="" />
|
||||
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
|
||||
<!--<EventSetter Event="ToolTipOpening" Handler="ToolTipEventHandler" />-->
|
||||
<!--<Setter Property="Width" Value="30"/>-->
|
||||
<Setter Property="HorizontalAlignment" Value="Left"/>
|
||||
<!--<Setter Property="Margin" Value="5,2,5,2"/>-->
|
||||
</Style>
|
||||
<converters:BooleanToVisibilityConverter x:Key="BoolToVisibility" />
|
||||
<converters:BooleanAndToVisibilityMultiConverter x:Key="BoolAndToVisibilityMulti" />
|
||||
<converters:IsLessThanConverter x:Key="IsLessThanConverter" />
|
||||
<converters:InverseBooleanConverter x:Key="BoolToInverse" />
|
||||
<converters2:FirstUseDateConverter x:Key="FirstUseConverter" />
|
||||
<converters2:StandInFieldConverter x:Key="StandInConverter" />
|
||||
<converters:DSPStreamingFilterFrequencyConverter x:Key="dspConverter" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}" x:Name="maingrid">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="0">
|
||||
<RadioButton Content="{strings:TranslateExtension Compact}" GroupName="Buttons" IsChecked="{Binding ShowCompact}" AutomationProperties.AutomationId="HardwareListCompactRadioButton"/>
|
||||
<RadioButton Content="{strings:TranslateExtension ShowModules}" GroupName="Buttons" IsChecked="{Binding ShowCompact, Converter={StaticResource BoolToInverse}}" AutomationProperties.AutomationId="HardwareListExpandedRadioButton"/>
|
||||
</StackPanel>
|
||||
<ListView Grid.Row="1" ItemsSource="{Binding Hardware, UpdateSourceTrigger=PropertyChanged}" AutomationProperties.AutomationId="HardwareListView" SelectedIndex="{Binding SelectedHardwareIndex, Mode=TwoWay}" GridViewColumnHeader.Click="GridViewColumnHeader_OnClick"
|
||||
x:Name="LvHardware">
|
||||
<i:Interaction.Behaviors>
|
||||
<common:MultiSelectionBehavior SelectedItems="{Binding SelectedHardwareItems}" />
|
||||
</i:Interaction.Behaviors>
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="HardwareListGridView">
|
||||
<!-- column 0 -->
|
||||
<GridViewColumn AutomationProperties.AutomationId="Included">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="Included" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox IsChecked="{Binding Included}" AutomationProperties.AutomationId="IncludeChkBx" Click="Included_Click"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<!-- column 1-->
|
||||
<GridViewColumn AutomationProperties.AutomationId="SerialNumber">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="SerialNumber" HeaderTitle="{strings:TranslateExtension SerialNumber}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding SerialNumberDisplay,FallbackValue='SerialNumber'}" AutomationProperties.AutomationId="SerailNumLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="IPAddress">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="IPAddress" HeaderTitle="{strings:TranslateExtension IPAddress}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding IPAddress,FallbackValue='IPAddress'}" AutomationProperties.AutomationId="IPAddressLbl">
|
||||
</TextBlock>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="HardwareType">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="HardwareType" HeaderTitle="{strings:TranslateExtension HardwareType}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding HardwareType,FallbackValue='HardwareType'}" AutomationProperties.AutomationId="HardwareTypeLbl">
|
||||
</TextBlock>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="ChannelCount">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="ChannelCount" HeaderTitle="{strings:TranslateExtension ChannelCount}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding ChannelCount,FallbackValue='ChannelCount'}" AutomationProperties.AutomationId="ChannelCountLbl">
|
||||
</TextBlock>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="Firmware">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="Firmware" HeaderTitle="{strings:TranslateExtension Firmware}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource StandInConverter}, ConverterParameter='Firmware'}"
|
||||
AutomationProperties.AutomationId="FirmwareLbl"/>
|
||||
<!--<TextBlock Text="{Binding Firmware,FallbackValue='Firmware'}" AutomationProperties.AutomationId="FirmwareLbl">
|
||||
</TextBlock>-->
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="MaxSampleRate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="MaxSampleRate" HeaderTitle="{strings:TranslateExtension MaxSampleRate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding MaxSampleRate,FallbackValue='MaxSampleRate',StringFormat='N0', TargetNullValue='---'}" AutomationProperties.AutomationId="SampleRateLbl">
|
||||
</TextBlock>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="TestSampleRate" Width="{Binding TestSampleRateColumnWidth}">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="TestSampleRate" HeaderTitle="{strings:TranslateExtension TestSampleRate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel>
|
||||
<StackPanel.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BoolAndToVisibilityMulti}" ConverterParameter="HIDE">
|
||||
<Binding Path="Included" />
|
||||
<Binding Path="StreamInChannels" Converter="{StaticResource IsLessThanConverter}" ConverterParameter="1" />
|
||||
</MultiBinding>
|
||||
</StackPanel.Visibility>
|
||||
<ComboBox ItemsSource="{Binding AvailableSampleRates}" SelectedIndex="{Binding SelectedSampleRateIndex}" SelectedItem ="{Binding SelectedSampleRateItem}" AutomationProperties.AutomationId="TestSampleRateLbl"
|
||||
Visibility="{Binding IncludedAndNotMixedRatesAndCompactOrNotDistributor, Converter={StaticResource BoolToVisibility}}"/>
|
||||
<Button Content="{strings:TranslateExtension ChainMultipleTestSampleRates}" AutomationProperties.AutomationId="ChainSampleRateMixedButton" Click="ChainSampleRateMixed_Clicked"
|
||||
Visibility="{Binding IncludedAndMixedRatesAndCompact, Converter={StaticResource BoolToVisibility}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="TestAAFRateHz" Width="{Binding TestAAFRateHzColumnWidth}">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="TestAAFRateHz" HeaderTitle="{strings:TranslateExtension TestAAFRateHz}" ClickHandler="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox Text="{Binding TestAAFilterRateHz, FallbackValue='AAFilterRateHz',StringFormat='N0'}" MinWidth="100"
|
||||
Visibility="{Binding Included, Converter={StaticResource BoolToVisibility}}"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="TestClockMaster" Width="{Binding TestClockMasterColumnWidth}">
|
||||
<controls2:GridViewColumnHeaderSelectable Tag="TestClockMaster" HeaderTitle="{strings:TranslateExtension IsHWClockMaster}" ClickHandler="GridViewColumnHeaderCheckBox_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox IsChecked="{Binding IsClockMaster}">
|
||||
<CheckBox.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BoolAndToVisibilityMulti}" ConverterParameter="HIDE">
|
||||
<Binding Path="Included" />
|
||||
<Binding Path="IsClockedDAS" />
|
||||
</MultiBinding>
|
||||
</CheckBox.Visibility>
|
||||
</CheckBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="PTPDomain" Width="{Binding PTPDomainColumnWidth}">
|
||||
<controls2:GridViewColumnHeaderSelectable Tag="PTPDomain" HeaderTitle="{strings:TranslateExtension PTPDomain}" ListviewId="{Binding ListViewId}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<c1:C1NumericBox Value="{Binding PTPDomainID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="nbPTPDomainID" Increment="1" Minimum="0" Maximum="255" >
|
||||
<c1:C1NumericBox.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BoolAndToVisibilityMulti}" ConverterParameter="HIDE">
|
||||
<Binding Path="Included" />
|
||||
<Binding Path="IsClockedDAS" />
|
||||
<Binding Path="IsPTPSync" />
|
||||
</MultiBinding>
|
||||
</c1:C1NumericBox.Visibility>
|
||||
</c1:C1NumericBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<!-- DSP streaming filter -->
|
||||
<GridViewColumn AutomationProperties.AutomationId="DSPStreamingFilterColumn" x:Name="DSPStreamingColumn">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="DSPStreamingFilter" HeaderTitle="{strings:TranslateExtension DSPStreamingFilterColumnHeader}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding DSPStreamingFilter,Converter={StaticResource dspConverter}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDate" x:Name="CalDateColumn">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="CalDate" HeaderTitle="{strings:TranslateExtension CalDate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource StandInConverter}, ConverterParameter='CalDate'}"
|
||||
AutomationProperties.AutomationId="CalDateLbl"/>
|
||||
<!--<TextBlock Text="{Binding CalDate,FallbackValue='CalDate', StringFormat='d'}" AutomationProperties.AutomationId="CalDateLbl">
|
||||
</TextBlock>-->
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="FirstUseDate">
|
||||
<GridViewColumn.Header>
|
||||
<GridViewColumnHeader Tag="FirstUseDate" Content="{strings:TranslateExtension FirstUseDate}" Click="ListViewHeader_Click" />
|
||||
</GridViewColumn.Header>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource FirstUseConverter}}"
|
||||
AutomationProperties.AutomationId="FirstUseDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDueDate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="CalDueDate" HeaderTitle="{strings:TranslateExtension CalDueDate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource StandInConverter}, ConverterParameter='CalDueDate'}"
|
||||
AutomationProperties.AutomationId="CalDueDateLbl">
|
||||
<!--<TextBlock Text="{Binding CalDueDate,FallbackValue='CalDueDate',StringFormat='d'}" AutomationProperties.AutomationId="CalDueDateLbl">-->
|
||||
</TextBlock>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,92 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Media;
|
||||
using DTS.Common.Controls;
|
||||
using DTS.Common.Interface.DASFactory.Diagnostics.HardwareList;
|
||||
using DTS.Common.Utils;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace HardwareList
|
||||
{
|
||||
/// <inheritdoc cref="IHardwareListSelectView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for HardwareListSelectView.xaml
|
||||
/// </summary>
|
||||
public partial class HardwareListSelectView : IHardwareListSelectView
|
||||
{
|
||||
public HardwareListSelectView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void InitializeColumns(bool bSteamingTest)
|
||||
{
|
||||
var view = (GridView)LvHardware.View;
|
||||
var calDateIndex = view.Columns.IndexOf(CalDateColumn);
|
||||
if (calDateIndex < 0) { calDateIndex = 0; }
|
||||
if (bSteamingTest)
|
||||
{
|
||||
AddColumn(view, DSPStreamingColumn, calDateIndex - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveColumn(view, DSPStreamingColumn);
|
||||
}
|
||||
}
|
||||
private void AddColumn(GridView view, GridViewColumn column, int index)
|
||||
{
|
||||
if (!view.Columns.Contains(column)) { view.Columns.Insert(index, column); }
|
||||
}
|
||||
private void RemoveColumn(GridView view, GridViewColumn column)
|
||||
{
|
||||
if (view.Columns.Contains(column)) { view.Columns.Remove(column); }
|
||||
}
|
||||
private void ListViewHeader_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
var colHeader = (GridViewColumnHeader)e.OriginalSource;
|
||||
var viewModel = (IHardwareListViewModel)colHeader.DataContext;
|
||||
viewModel.Sort(colHeader.Tag, true);
|
||||
}
|
||||
private void GridViewColumnHeaderSearchable_OnSearch(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var searchTerm = (string)e.OriginalSource;
|
||||
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag;
|
||||
var viewModel = (IHardwareListViewModel)DataContext;
|
||||
viewModel.Filter(columnTag, searchTerm);
|
||||
}
|
||||
private void GridViewColumnHeader_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = (IHardwareListViewModel)DataContext;
|
||||
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag ??
|
||||
Utils.FindChild<GridViewColumnHeaderSearchable>((DependencyObject)e.OriginalSource, null)?.Tag ??
|
||||
(e.OriginalSource as GridViewColumnHeader)?.Tag;
|
||||
vm?.Sort(columnTag, true);
|
||||
}
|
||||
private void GridViewColumnHeaderCheckBox_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var viewModel = (IHardwareListViewModel)DataContext;
|
||||
var columnTag = (sender as GridViewColumnHeaderSelectable)?.Tag ?? Utils.FindChild<GridViewColumnHeaderSelectable>((DependencyObject)e.OriginalSource, null)?.Tag;
|
||||
viewModel?.Sort(columnTag, true);
|
||||
}
|
||||
private void Included_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is HardwareListViewModel vm)) { return; }
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(control.DataContext is IHardware hardware)) { return; }
|
||||
if (vm.ShowCompact)
|
||||
{
|
||||
vm.IncludeChildren(hardware);
|
||||
}
|
||||
|
||||
}
|
||||
private void ChainSampleRateMixed_Clicked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is HardwareListViewModel vm)) { return; }
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(control.DataContext is IHardware hardware)) { return; }
|
||||
vm.RemoveMultipleButton(hardware);
|
||||
}
|
||||
}
|
||||
}
|
||||
135
DataPRO/Modules/Hardware/HardwareList/View/HardwareListView.xaml
Normal file
135
DataPRO/Modules/Hardware/HardwareList/View/HardwareListView.xaml
Normal file
@@ -0,0 +1,135 @@
|
||||
<base:BaseView x:Class="HardwareList.HardwareListView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:behaviors="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:HardwareList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:converters="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
xmlns:converters2="clr-namespace:HardwareList.Converters"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:controls2="clr-namespace:DTS.Common.Controls;assembly=DTS.Common">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<converters:BooleanToVisibilityConverter x:Key="BoolToVis" />
|
||||
<converters2:FirstUseDateConverter x:Key="FirstUseConverter" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}">
|
||||
<ListView ItemsSource="{Binding Hardware, UpdateSourceTrigger=PropertyChanged}" AutomationProperties.AutomationId="HardwareListView" SelectedIndex="{Binding SelectedHardwareIndex, Mode=TwoWay}" MouseDoubleClick="MouseDoubleClick" GridViewColumnHeader.Click="GridViewColumnHeader_OnClick">
|
||||
<i:Interaction.Behaviors>
|
||||
<behaviors:MultiSelectionBehavior SelectedItems="{Binding SelectedHardwareItems}" />
|
||||
</i:Interaction.Behaviors>
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="HardwareListGridView">
|
||||
<GridViewColumn AutomationProperties.AutomationId="SerialNumber">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="SerialNumber" HeaderTitle="{strings:TranslateExtension SerialNumber}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding SerialNumber,FallbackValue='SerialNumber'}" AutomationProperties.AutomationId="SerialNumLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="HardwareType">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="HardwareType" HeaderTitle="{strings:TranslateExtension HardwareType}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding HardwareType,FallbackValue='HardwareType'}" AutomationProperties.AutomationId="TypeLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="IPAddress">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="IPAddress" HeaderTitle="{strings:TranslateExtension Connection}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding IPAddress,FallbackValue='IPAddress'}" AutomationProperties.AutomationId="IPAddressLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ChannelCount">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="ChannelCount" HeaderTitle="{strings:TranslateExtension ChannelCount}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding ChannelCount,FallbackValue='ChannelCount'}" AutomationProperties.AutomationId="ChanCountLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="Firmware">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="Firmware" HeaderTitle="{strings:TranslateExtension Firmware}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Firmware,FallbackValue='Firmware'}" AutomationProperties.AutomationId="FirmwareLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="MaxSampleRate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="MaxSampleRate" HeaderTitle="{strings:TranslateExtension MaxSampleRate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding MaxSampleRate,FallbackValue='MaxSampleRate',StringFormat='N0', TargetNullValue='---'}" AutomationProperties.AutomationId="MaxSampleRateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="CalDate" HeaderTitle="{strings:TranslateExtension CalDate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding CalDate,FallbackValue='CalDate', StringFormat='d', TargetNullValue='N/A'}" AutomationProperties.AutomationId="CalDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="FirstUseDate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="FirstUseDate" HeaderTitle="{strings:TranslateExtension FirstUseDate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=DataContext,RelativeSource={RelativeSource Self}, StringFormat='d',Converter={StaticResource FirstUseConverter}}"
|
||||
AutomationProperties.AutomationId="FirstUseDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CalDueDate">
|
||||
<controls2:GridViewColumnHeaderSearchable Tag="CalDueDate" HeaderTitle="{strings:TranslateExtension CalDueDate}" Search="GridViewColumnHeaderSearchable_OnSearch" ClickHandler="GridViewColumnHeader_OnClick" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding CalDueDate,FallbackValue='CalDueDate',StringFormat='d', TargetNullValue='N/A'}" AutomationProperties.AutomationId="CalDueDateLbl"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="TreeViewButton">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Button Visibility="{Binding HasTreeView, Converter={StaticResource BoolToVis}}"
|
||||
Content="{strings:TranslateExtension TreeView}"
|
||||
Click="TreeviewButton_Click" AutomationProperties.AutomationId="btnTreeViewDataRecordersS6DB"
|
||||
/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
<Popup x:Name="SLICE6TreeViewPopup" Visibility="Collapsed" StaysOpen="False"/>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,101 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using DTS.Common.Controls;
|
||||
using DTS.Common.Interface.DASFactory.Diagnostics.HardwareList;
|
||||
using DTS.Common.Utils;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace HardwareList
|
||||
{
|
||||
/// <inheritdoc cref="IHardwareListView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for HardwareListView.xaml
|
||||
/// </summary>
|
||||
public partial class HardwareListView : IHardwareListView
|
||||
{
|
||||
public HardwareListView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void GridViewColumnHeaderSearchable_OnSearch(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var searchTerm = (string)e.OriginalSource;
|
||||
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag;
|
||||
var viewModel = (IHardwareListViewModel)DataContext;
|
||||
viewModel.Filter(columnTag, searchTerm);
|
||||
}
|
||||
private void GridViewColumnHeader_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var vm = (IHardwareListViewModel)DataContext;
|
||||
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag ??
|
||||
Utils.FindChild<GridViewColumnHeaderSearchable>((DependencyObject)e.OriginalSource, null)?.Tag ??
|
||||
(e.OriginalSource as GridViewColumnHeader)?.Tag;
|
||||
vm?.Sort(columnTag, true);
|
||||
}
|
||||
|
||||
private void MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
if (!(sender is ListView lv))
|
||||
{
|
||||
return;
|
||||
}
|
||||
var index = GetCurrentIndex(e.GetPosition, lv);
|
||||
if (index >= 0 && index < lv.Items.Count)
|
||||
{
|
||||
var vm = (IHardwareListViewModel)lv.DataContext;
|
||||
vm.MouseDoubleClick(index);
|
||||
}
|
||||
}
|
||||
|
||||
private delegate Point GetPositionDelegate(IInputElement element);
|
||||
private int GetCurrentIndex(GetPositionDelegate getPosition, ListView lv)
|
||||
{
|
||||
var index = -1;
|
||||
for (var i = 0; i < lv.Items.Count; i++)
|
||||
{
|
||||
var item = GetListViewItem(i, lv);
|
||||
if (item == null)
|
||||
continue;
|
||||
if (IsMouseOverTarget(item, getPosition))
|
||||
{
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return index;
|
||||
}
|
||||
private static ListViewItem GetListViewItem(int index, ListView lv)
|
||||
{
|
||||
return lv.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;
|
||||
}
|
||||
private static bool IsMouseOverTarget(Visual target, GetPositionDelegate getPosition)
|
||||
{
|
||||
var bounds = VisualTreeHelper.GetDescendantBounds(target);
|
||||
var mousePos = getPosition((IInputElement)target);
|
||||
return bounds.Contains(mousePos);
|
||||
}
|
||||
|
||||
private void TreeviewButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IHardware hardware)) { return; }
|
||||
|
||||
if (!(DataContext is IHardwareListViewModel hardwareListViewModel)) { return; }
|
||||
|
||||
SLICE6TreeViewPopup.IsOpen = false;
|
||||
hardwareListViewModel.SLICE6TreeView.DataContext = hardwareListViewModel;
|
||||
|
||||
SLICE6TreeViewPopup.PlacementTarget = control;
|
||||
SLICE6TreeViewPopup.Child = null;
|
||||
hardwareListViewModel.LoadTreeView(hardware.SerialNumber);
|
||||
|
||||
SLICE6TreeViewPopup.Child = (UIElement)hardwareListViewModel.SLICE6TreeView;
|
||||
SLICE6TreeViewPopup.IsOpen = true;
|
||||
SLICE6TreeViewPopup.PlacementTarget = control;
|
||||
}
|
||||
}
|
||||
}
|
||||
104
DataPRO/Modules/Hardware/HardwareList/View/SLICE6TreeView.xaml
Normal file
104
DataPRO/Modules/Hardware/HardwareList/View/SLICE6TreeView.xaml
Normal file
@@ -0,0 +1,104 @@
|
||||
<base:BaseView x:Class="HardwareList.SLICE6TreeView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:behaviors="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:HardwareList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:converters="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:controls2="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
x:Name="treeView">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<converters:BooleanToVisibilityConverter x:Key="BoolToVis" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<ListView ItemsSource="{Binding SLICE6TreeNodes, UpdateSourceTrigger=PropertyChanged}"
|
||||
AutomationProperties.AutomationId="SLICE6TreeView" Grid.Row="0">
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="SLICE6TreeViewGridView">
|
||||
<GridViewColumn AutomationProperties.AutomationId="Number">
|
||||
<!--<controls2:GridViewColumnHeaderSearchable HeaderTitle="{strings:TranslateExtension Number}" ListviewId="{Binding ListViewId}"/>-->
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension Number}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Number,FallbackValue='001', StringFormat='{}{0:000}'}" AutomationProperties.AutomationId="NumberTextBlock"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="SerialNumber">
|
||||
<!--<controls2:GridViewColumnHeaderSearchable HeaderTitle="{strings:TranslateExtension SerialNumber}" ListviewId="{Binding ListViewId}"/>-->
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension SerialNumber}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding SerialNumber,FallbackValue='S600NA'}" AutomationProperties.AutomationId="SerialNumberTextBlock"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="Port">
|
||||
<!--<controls2:GridViewColumnHeaderSearchable HeaderTitle="{strings:TranslateExtension Port}" ListviewId="{Binding ListViewId}"/>-->
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension Port}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding PortString}" AutomationProperties.AutomationId="PortTextBlock"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="PositionOnChain">
|
||||
<!--<controls2:GridViewColumnHeaderSearchable HeaderTitle="{strings:TranslateExtension PositionOnChain}" ListviewId="{Binding ListViewId}"/>-->
|
||||
<GridViewColumnHeader Content="{strings:TranslateExtension PositionOnChain}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding PositionOnChainString}" AutomationProperties.AutomationId="PositionOnChainTextBlock"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="RemoveColumn">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Button Content="{strings:TranslateExtension Remove}" Visibility="{Binding Path=DataContext.IsEdit, ElementName=treeView, Converter={StaticResource BoolToVis}}"
|
||||
Click="Remove_Click" AutomationProperties.AutomationId="btnRemove"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal" Visibility="{Binding IsEdit, Converter={StaticResource BoolToVis}}">
|
||||
<ComboBox ItemsSource="{Binding AvailableSLICE6}" SelectedItem="{Binding SelectedSLICE6}"
|
||||
DisplayMemberPath="SerialNumber" AutomationProperties.AutomationId="comboBoxAdd"/>
|
||||
<Button Content="{strings:TranslateExtension Add}" Click="Add_Click" AutomationProperties.AutomationId="btnAdd"/>
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" Visibility="{Binding IsEdit, Converter={StaticResource BoolToVis}}">
|
||||
<ComboBox ItemsSource="{Binding AvailableSLICE6DB}" SelectedItem="{Binding SelectedSLICE6DB}"
|
||||
DisplayMemberPath="SerialNumber" AutomationProperties.AutomationId="comboBoxSwap"/>
|
||||
<Button Content="{strings:TranslateExtension Swap}" Click="Swap_Click" AutomationProperties.AutomationId="btnSwap"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,59 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using DTS.Common.Interface.DASFactory.Diagnostics.HardwareList;
|
||||
using Prism.Ioc;
|
||||
using Prism.Events;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace HardwareList
|
||||
{
|
||||
/// <inheritdoc cref="ISLICE6TreeView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for SLICE6TreeView.xaml
|
||||
/// </summary>
|
||||
public partial class SLICE6TreeView : ISLICE6TreeView
|
||||
{
|
||||
public SLICE6TreeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Remove_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(control.DataContext is ISLICE6TreeNode treeNode)) { return; }
|
||||
if (!(DataContext is IHardwareListViewModel vm)) { return; }
|
||||
|
||||
vm.UnAssociate(treeNode);
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<DTS.Common.Events.PageModifiedEvent>().Publish(
|
||||
new DTS.Common.Events.PageModifiedArg(DTS.Common.Events.PageModifiedArg.Status.Modified, null));
|
||||
}
|
||||
|
||||
private void Add_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IHardwareListViewModel vm)) { return; }
|
||||
if (null == vm.SelectedSLICE6) { return; }
|
||||
var treeNode = vm.SelectedSLICE6;
|
||||
vm.Associate(treeNode);
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<DTS.Common.Events.PageModifiedEvent>().Publish(
|
||||
new DTS.Common.Events.PageModifiedArg(DTS.Common.Events.PageModifiedArg.Status.Modified, null));
|
||||
}
|
||||
/// <summary>
|
||||
/// handles the click of the swap button in the view
|
||||
/// </summary>
|
||||
private void Swap_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IHardwareListViewModel vm)) { return; }
|
||||
if (null == vm.SelectedSLICE6DB) { return; }
|
||||
vm.Associate(vm.SelectedSLICE6DB);
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<DTS.Common.Events.PageModifiedEvent>().Publish(
|
||||
new DTS.Common.Events.PageModifiedArg(DTS.Common.Events.PageModifiedArg.Status.Modified, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user