Browse Source

Create DataLog

Zixuan 1 week ago
parent
commit
d2c8351bed

+ 30 - 0
FurnaceNewWorld/UIModules/DataLogModule/Converter/AlarmTypeToIcon.cs

@@ -0,0 +1,30 @@
+using System.Globalization;
+using System.Windows;
+using System.Windows.Data;
+using System.Windows.Media;
+
+namespace DataLogModule.Converter;
+
+internal class AlarmTypeToIcon : IValueConverter
+{
+    public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture)
+    {
+        if (value is not AlarmTypeEnum alarmType)
+            return default;
+
+
+        return alarmType switch
+        {
+            AlarmTypeEnum.Info => (DrawingImage)Application.Current.TryFindResource("Hint"),
+            AlarmTypeEnum.Warning => (DrawingImage)Application.Current.TryFindResource("Icon_Warning"),
+            AlarmTypeEnum.Alarm => (DrawingImage)Application.Current.TryFindResource("Icon_Fatal"),
+            _ => default,
+        };
+
+    }
+
+    public object? ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture)
+    {
+        return default;
+    }
+}

+ 40 - 1
FurnaceNewWorld/UIModules/DataLogModule/ViewModels/DLOperationViewModel.cs

@@ -1,5 +1,44 @@
-namespace DataLogModule.ViewModels;
+using System.Collections.ObjectModel;
+
+namespace DataLogModule.ViewModels;
 
 internal partial class DLOperationViewModel : ObservableObject
 {
+    public DLOperationViewModel()
+    {
+        this.Logs = [];
+        
+        for (int i = 0; i < 3; i++)
+        {
+            OperationLog log = new()
+            {
+                AlarmType=(AlarmTypeEnum)i,
+                Time = DateTime.Now,
+                System="System",
+                Description=$"Test Log {i}"
+            };
+            this.Logs.Add(log);
+        }
+
+
+    }
+
+    [ObservableProperty]
+    private ObservableCollection<OperationLog> _Logs;
+
+}
+
+public class OperationLog
+{
+    public AlarmTypeEnum AlarmType { get; set; }
+    public DateTime Time { get; set; }
+    public string? System { get; set; }
+    public string? Description { get; set; }
+}
+
+public enum AlarmTypeEnum
+{
+    Info,
+    Warning,
+    Alarm
 }

+ 174 - 4
FurnaceNewWorld/UIModules/DataLogModule/Views/DataLogOpretionLog.xaml

@@ -4,9 +4,179 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:DataLogModule.Views"
-             mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
-    <Grid>
-            
+            xmlns:convert="clr-namespace:DataLogModule.Converter"
+            mc:Ignorable="d" 
+            d:DesignHeight="450" d:DesignWidth="800">
+    <UserControl.Resources>
+        <ResourceDictionary >
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="/UICommon;component/Resources.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+            <convert:AlarmTypeToIcon x:Key="Alarm2Icon"/>
+        </ResourceDictionary>
+    </UserControl.Resources>
+    <Grid Margin="8">
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="auto" MinWidth="240"/>
+            <ColumnDefinition Width="8"/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+        <Grid>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="8"/>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="8"/>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="8"/>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="8"/>
+                <RowDefinition />
+            </Grid.RowDefinitions>
+            <Border Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Margin="8">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="24"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="24"/>
+                    </Grid.RowDefinitions>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="auto"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <TextBlock Grid.ColumnSpan="3" HorizontalAlignment="Center" FontSize="14">Query Condition</TextBlock>
+                    <TextBlock Grid.Row="2" VerticalAlignment="Center">Start Time</TextBlock>
+                    <Button Grid.Row="2" Grid.Column="2" Style="{StaticResource FunctionButton}">00:00:00</Button>
+
+                    <TextBlock Grid.Row="4" VerticalAlignment="Center">End Time</TextBlock>
+                    <Button Grid.Row="4" Grid.Column="2" Style="{StaticResource FunctionButton}">00:00:00</Button>
+                </Grid>
+            </Border>
+
+            <Border Grid.Row="2" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Margin="8">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="auto"/>
+                    </Grid.RowDefinitions>
+                    <TextBlock Grid.ColumnSpan="3" HorizontalAlignment="Center" FontSize="14">Query Operation</TextBlock>
+                    <UniformGrid Grid.Row="2" Columns="2" Margin="-2,0">
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">Alarm</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">Warning</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">Information</CheckBox>
+                    </UniformGrid>
+                </Grid>
+            </Border>
+
+            <Border Grid.Row="4" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Margin="8">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="24"/>
+                    </Grid.RowDefinitions>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="auto"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <TextBlock Grid.ColumnSpan="3" HorizontalAlignment="Center" FontSize="14">Extra Condition</TextBlock>
+                    <TextBlock Grid.Row="2" VerticalAlignment="Center">Key Words</TextBlock>
+                    <TextBox Grid.Row="2" Grid.Column="2" VerticalContentAlignment="Center">AAA</TextBox>
+                </Grid>
+            </Border>
+
+            <Grid Grid.Row="6">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition/>
+                    <ColumnDefinition Width="8"/>
+                    <ColumnDefinition/>
+                </Grid.ColumnDefinitions>
+                <Button Style="{StaticResource FunctionButton}" Height="28" Margin="4">Query</Button>
+                <Button Grid.Column="2" Style="{StaticResource FunctionButton}" Height="28" Margin="4">Export</Button>
+            </Grid>
+
+            <Border Grid.Row="8" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Margin="8">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="8"/>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="16"/>
+                        <RowDefinition Height="24"/>
+                        <RowDefinition Height="16"/>
+                        <RowDefinition Height="32"/>
+                    </Grid.RowDefinitions>
+
+                    <TextBlock HorizontalAlignment="Center" FontSize="14">Filter Condition</TextBlock>
+
+                    <TextBlock Grid.Row="2" VerticalAlignment="Center">System:</TextBlock>
+
+                    <UniformGrid Grid.Row="4" Columns="2">
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}" Height="36">System</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">CassetteRobot</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">WaferRobot</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">Boat</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">StageA</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">StageB</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">SMIFA</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">SMIFB</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">PM1</CheckBox>
+                        <CheckBox Margin="2" Style="{StaticResource FunctionCheckBox}">All</CheckBox>
+                    </UniformGrid>
+
+                    <Grid Grid.Row="6">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="auto"/>
+                            <ColumnDefinition Width="8"/>
+                            <ColumnDefinition/>
+                        </Grid.ColumnDefinitions>
+                        <TextBlock Grid.Row="6" VerticalAlignment="Center">Key Words</TextBlock>
+                        <TextBox Grid.Row="6" Grid.Column="2" VerticalContentAlignment="Center">AAA</TextBox>
+                    </Grid>
+
+                    <Button Grid.Row="8" Style="{StaticResource FunctionButton}">Filter</Button>
+                </Grid>
+            </Border>
+
+        </Grid>
+
+        <Border Grid.Column="2" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+            <Grid Margin="8">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"/>
+                    <RowDefinition Height="8"/>
+                    <RowDefinition/>
+                </Grid.RowDefinitions>
+                <TextBlock>
+                    <Run>Total:</Run>
+                    <Run Text="{Binding Logs.Length}"></Run>
+                </TextBlock>
+                <DataGrid Grid.Row="2" Style="{StaticResource ThemeDataGrid}" ItemsSource="{Binding Logs}">
+                    <DataGrid.Columns>
+                        <DataGridTemplateColumn >
+                            <DataGridTemplateColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Image Source="{Binding AlarmType, Converter={StaticResource Alarm2Icon}}" Width="24" Margin="4"/>
+                                </DataTemplate>
+                            </DataGridTemplateColumn.CellTemplate>
+                        </DataGridTemplateColumn>
+
+                        <DataGridTextColumn Header="Type" MinWidth="96" Binding="{Binding AlarmType}"/>
+                        <DataGridTextColumn Header="Time" MinWidth="140" Binding="{Binding Time, StringFormat=yyyy/MM/dd HH:mm:ss}"/>
+                        <DataGridTextColumn Header="System" MinWidth="96" Binding="{Binding System}"/>
+                        <DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description}"/>
+                    </DataGrid.Columns>
+                </DataGrid>
+            </Grid>
+        </Border>
+
+
     </Grid>
 </UserControl>

+ 82 - 2
FurnaceNewWorld/UIModules/DataLogModule/Views/DataLogProcessHistory.xaml

@@ -4,9 +4,89 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:DataLogModule.Views"
+             xmlns:convert="clr-namespace:DataLogModule.Converter"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800">
-    <Grid>
-            
+    <UserControl.Resources>
+        <ResourceDictionary >
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="/UICommon;component/Resources.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+            <convert:AlarmTypeToIcon x:Key="Alarm2Icon"/>
+        </ResourceDictionary>
+    </UserControl.Resources>
+    <Grid Margin="8">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="auto"/>
+            <RowDefinition Height="8"/>
+            <RowDefinition/>
+            <RowDefinition Height="8"/>
+            <RowDefinition Height="auto"/>
+        </Grid.RowDefinitions>
+
+        <Grid>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="auto"/>
+                <ColumnDefinition Width="8"/>
+                <ColumnDefinition/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Height="24" Margin="8,4">
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="auto"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition Width="128"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition Width="auto"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition Width="128"/>
+                    </Grid.ColumnDefinitions>
+                    <TextBlock VerticalAlignment="Center">Start Time</TextBlock>
+                    <Button Grid.Column="2" Style="{StaticResource FunctionButton}">00:00:00</Button>
+
+                    <TextBlock Grid.Column="4" VerticalAlignment="Center">End Time</TextBlock>
+                    <Button Grid.Column="6" Style="{StaticResource FunctionButton}">00:00:00</Button>
+                </Grid>
+            </Border>
+
+            <Border Grid.Column="2" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+                <Grid Height="24" Margin="8,4">
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="auto"/>
+                        <ColumnDefinition Width="16"/>
+                        <ColumnDefinition MaxWidth="320"/>
+                        <ColumnDefinition Width="8"/>
+                        <ColumnDefinition Width="120"/>
+                    </Grid.ColumnDefinitions>
+                    <TextBlock VerticalAlignment="Center">Batch ID</TextBlock>
+                    <TextBox Grid.Column="2" VerticalContentAlignment="Center" BorderThickness="0">AAAA</TextBox>
+                    <Button Grid.Column="4" Style="{StaticResource FunctionButton}">Query</Button>
+                </Grid>
+            </Border>
+        </Grid>
+
+
+        <DataGrid Grid.Row="2" Style="{StaticResource ThemeDataGrid}">
+            <DataGrid.Columns>
+                <DataGridCheckBoxColumn Header="Selected" Width="64"/>
+                <DataGridTextColumn Header="Batch ID" MinWidth="240"/>
+                <DataGridTextColumn Header="Job Name" MinWidth="240"/>
+                <DataGridTextColumn Header="Recipe Name" MinWidth="240"/>
+                <DataGridTextColumn Header="Form" MinWidth="64"/>
+                <DataGridTextColumn Header="Start Time" MinWidth="200"/>
+                <DataGridTextColumn Header="End Time" MinWidth="200"/>
+                <DataGridTextColumn Header="Wafer" MinWidth="200"/>
+            </DataGrid.Columns>
+        </DataGrid>
+
+        <Border Grid.Row="4" Background="{StaticResource BorderBackgroundColor}" CornerRadius="4">
+            <UniformGrid Margin="4" Rows="1" HorizontalAlignment="Right">
+                <Button Style="{StaticResource FunctionButton}" Height="32" Width="120" Margin="4">Process Table</Button>
+                <Button Style="{StaticResource FunctionButton}" Height="32" Width="120" Margin="4">Batch Detail</Button>
+                <Button Style="{StaticResource FunctionButton}" Height="32" Width="120" Margin="4">Process Detail</Button>
+                <Button Style="{StaticResource FunctionButton}" Height="32" Width="120" Margin="4">Process Export</Button>
+            </UniformGrid>
+        </Border>
+
     </Grid>
 </UserControl>

+ 2 - 3
FurnaceNewWorld/UIModules/DataLogModule/properties/_global.cs

@@ -1,6 +1,5 @@
 global using CommunityToolkit.Mvvm.ComponentModel;
 global using DataVM;
-global using JobModule.Pops.JobNormal;
-global using JobModule.ViewModels;
-global using JobModule.Views;
+global using DataLogModule.ViewModels;
+global using DataLogModule.Views;
 global using ModuleBase;