Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Client/CenterViews/DataLogs/WaferHistory/WaferHistoryDBView.xaml

284 lines
22 KiB
XML

<UserControl x:Class="MECF.Framework.UI.Client.CenterViews.DataLogs.WaferHistory.WaferHistoryDBView"
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:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:s="http://schemas.abtsoftware.co.uk/scichart"
xmlns:micro="clr-namespace:Caliburn.Micro"
xmlns:waferHistory="clr-namespace:MECF.Framework.UI.Client.CenterViews.DataLogs.WaferHistory"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="1800">
<Grid x:Name="root">
<Grid.Resources>
<waferHistory:HideMinTimeConverters x:Key="HideMinTimeConvert"/>
<waferHistory:MinTime2BoolConverters x:Key="MinTime2BoolConverter"/>
<waferHistory:RecipeStepNull2Empty x:Key="RecipeStepNull2Empty"/>
<Grid x:Key="LotLayout">
<DataGrid ItemsSource="{Binding Lots}" IsReadOnly="True" AutoGenerateColumns="False" RowHeight="25"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14">
<DataGrid.Columns>
<DataGridTextColumn Header="Lot Name" Width="180*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Start Time" Width="150*" Binding="{Binding StartTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="End Time" Width="150*" Binding="{Binding EndTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="Duration" Width="75*" Binding="{Binding Duration}" />
<DataGridTextColumn Header="Wafer Count" Width="100*" Binding="{Binding WaferCount}" />
<DataGridTextColumn Header="Fault Wafer Count" Width="150*" Binding="{Binding FaultWaferCount}" />
<DataGridTemplateColumn Header="Chart" Width="100*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="To Chart" Margin="0" Height="22" VerticalContentAlignment="Center" FontSize="12">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding DataContext.ToChartCommand,ElementName=root}" CommandParameter="{Binding }" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
<Grid x:Key="WaferLayout">
<DataGrid ItemsSource="{Binding Wafers}" IsReadOnly="True" AutoGenerateColumns="False" RowHeight="25"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14" >
<DataGrid.Columns>
<DataGridTextColumn Header="Wafer Name" Width="180*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Arrive Time" Width="150*" Binding="{Binding StartTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="Remove Time" Width="150*" Binding="{Binding EndTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="Duration" Width="75*" Binding="{Binding Duration}" />
<DataGridTextColumn Header="Sequence" Width="200*" Binding="{Binding Sequence}" />
<DataGridTextColumn Header="Status" Width="200*" Binding="{Binding Status}" />
<DataGridTemplateColumn Header="Chart" Width="100*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="To Chart" IsEnabled="{Binding EndTime,Converter={StaticResource MinTime2BoolConverter }}" Margin="0" Height="22" VerticalContentAlignment="Center" FontSize="12">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding DataContext.ToChartCommand,ElementName=root}" CommandParameter="{Binding }" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
<Grid x:Key="MovementLayout">
<Grid.RowDefinitions>
<RowDefinition Height="20*"/>
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<DataGrid ItemsSource="{Binding Recipes}" IsReadOnly="True" AutoGenerateColumns="False" RowHeight="25"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="200*" Binding="{Binding Recipe}" />
<DataGridTextColumn Header="StartTime" Width="150*" Binding="{Binding StartTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="EndTime" Width="150*" Binding="{Binding EndTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="Chamber" Width="100*" Binding="{Binding Chamber}" />
<DataGridTextColumn Header="SettingTime" Width="150*" Binding="{Binding SettingTime}" />
<DataGridTextColumn Header="ActualTime" Width="150*" Binding="{Binding ActualTime}" />
<DataGridTemplateColumn Header="Chart" Width="100*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="To Chart" Margin="0" Height="22" VerticalContentAlignment="Center" FontSize="12">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding DataContext.ToChartCommand,ElementName=root}" CommandParameter="{Binding Recipe}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<TabControl Grid.Row="1">
<TabItem Header="Movements">
<DataGrid ItemsSource="{Binding Movements}" IsReadOnly="True" AutoGenerateColumns="False" RowHeight="25"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14">
<DataGrid.Columns>
<DataGridTextColumn Header="Source" Width="200*" Binding="{Binding Source}" />
<DataGridTextColumn Header="Destination" Width="200*" Binding="{Binding Destination}" />
<DataGridTextColumn Header="Time" Width="200*" Binding="{Binding InTime,Converter={StaticResource HideMinTimeConvert}}" />
</DataGrid.Columns>
</DataGrid>
</TabItem>
</TabControl>
</Grid>
<Grid x:Key="RecipeLayout">
<Grid.RowDefinitions>
<RowDefinition Height="20*" />
<RowDefinition Height="80*" />
</Grid.RowDefinitions>
<Border BorderBrush="{DynamicResource Tab_BD}" BorderThickness="1" Background="{DynamicResource Tab_BG}">
<Grid DataContext="{Binding Recipe}" Background="{DynamicResource DataGrid_BG_First}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="10*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Grid.Column="0" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="Name" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Grid.Column="1" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="StartTime" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Grid.Column="2" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="EndTime" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Grid.Column="3" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="Chamber" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Grid.Column="4" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="SettingTime" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Grid.Column="5" Background="{DynamicResource Table_BG_Title}" Grid.Row="0" Padding="5,1">
<TextBlock Text="ActualTime" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="0" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding Recipe}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="1" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding StartTime,Converter={StaticResource HideMinTimeConvert}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="2" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding EndTime,Converter={StaticResource HideMinTimeConvert}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="3" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding Chamber}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="4" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding SettingTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,0,1" Background="{DynamicResource Table_BG_Content}" Grid.Column="5" Grid.Row="1" Padding="5,1">
<TextBlock Text="{Binding ActualTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
</Grid>
</Border>
<TabControl Grid.Row="1" >
<TabItem Header="Steps">
<DataGrid ItemsSource="{Binding Recipe.Steps, Converter={StaticResource RecipeStepNull2Empty}}" IsReadOnly="True" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14" >
<DataGrid.Columns>
<DataGridTextColumn Header="#" Binding="{Binding No}" />
<DataGridTextColumn Header="Name" Width="200*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Start Time" Width="200*" Binding="{Binding StartTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="End Time" Width="200*" Binding="{Binding EndTime,Converter={StaticResource HideMinTimeConvert}}" />
<DataGridTextColumn Header="Actual Time" Width="100*" Binding="{Binding ActualTime}" />
<DataGridTextColumn Header="Setting Time" Width="100*" Binding="{Binding SettingTime}" />
</DataGrid.Columns>
</DataGrid>
</TabItem>
<TabItem Header="FDC">
<DataGrid ItemsSource="{Binding Recipe.Fdcs}" IsReadOnly="True" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserResizeRows="False" CanUserResizeColumns="True" FontFamily="Arial" FontSize="14" >
<DataGrid.Columns>
<DataGridTextColumn Header="#" Binding="{Binding StepNumber}" />
<DataGridTextColumn Header="Name" Width="200" Binding="{Binding Name}" />
<DataGridTextColumn Header="SetPoint" Width="100" Binding="{Binding SetPoint}" />
<DataGridTextColumn Header="Count" Width="50" Binding="{Binding SampleCount}" />
<DataGridTextColumn Header="Min" Width="100" Binding="{Binding MinValue}" />
<DataGridTextColumn Header="Max" Width="100" Binding="{Binding MaxValue}" />
<DataGridTextColumn Header="Mean" Width="100" Binding="{Binding MeanValue}" />
<DataGridTextColumn Header="Std" Width="100" Binding="{Binding StdValue}" />
</DataGrid.Columns>
</DataGrid>
</TabItem>
</TabControl>
</Grid>
<waferHistory:HistoryLayoutSelectorConverter x:Key="HistoryLayoutSelectorConverter" WaferLayout="{StaticResource WaferLayout}"
MovementLayout="{StaticResource MovementLayout}"
RecipeLayout="{StaticResource RecipeLayout}"
LotsLayout="{StaticResource LotLayout}"/>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="700"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="2,10,2,2">
<Label Content="Start_Time:"/>
<wfi:WindowsFormsHost Margin="5,0,0,0" FontSize="14" FontFamily="Arial" Width="170" Height="22" VerticalAlignment="Center">
<wf:DateTimePicker x:Name="wfTimeFrom" Value="2011-8-1" CustomFormat="yyyy/MM/dd HH:mm:ss" Format="Custom"></wf:DateTimePicker>
</wfi:WindowsFormsHost>
<Label Content="End_Time:"/>
<wfi:WindowsFormsHost Margin="5,0,0,0" FontSize="14" FontFamily="Arial" Width="170" Height="22" VerticalAlignment="Center">
<wf:DateTimePicker x:Name="wfTimeTo" Value="2011-8-1" CustomFormat="yyyy/MM/dd HH:mm:ss" Format="Custom"></wf:DateTimePicker>
</wfi:WindowsFormsHost>
<Label Content="LotName:" />
<TextBox Width="200" Text="{Binding KeyWord}" />
<Button Content="Query" Width="120" Margin="4,2,4,2" Command="{Binding QueryCommand}"/>
</StackPanel>
<Grid Grid.Row="1" Grid.Column="0" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="350" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Margin="0,5,13,0" BorderBrush="{DynamicResource Tab_BD}" BorderThickness="1" Background="{DynamicResource Tab_BG}">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TreeView ItemsSource="{Binding HistoryData}" SelectedValuePath="Data">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
<TextBlock Text="{Binding Data.ItemInfo}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding DataContext.SelectionChangedCommand,ElementName=root}" CommandParameter="{Binding Data}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</ScrollViewer>
</Border>
<GridSplitter Grid.Column="0" Width="10" HorizontalAlignment="Right" Background="Transparent" VerticalAlignment="Stretch" Style="{DynamicResource VerticalGridSplitterStyle}">
</GridSplitter>
<Grid Grid.Row="0" Grid.Column="1">
<ContentControl Content="{Binding SelectedItem,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource HistoryLayoutSelectorConverter}}"/>
</Grid>
</Grid>
</Grid>
</UserControl>