Zixuan 2 일 전
부모
커밋
b039a3eded

+ 3 - 0
Analizer/ProximaAnalizer/ViewModels/DBInfoAlarmViewModel.cs

@@ -239,6 +239,9 @@ internal partial class DBInfoAlarmViewModel : ObservableObject
 
         if (_eventAggregator.GetEvent<UpdateSelectData>().KeyNames is not object keys || keys is null)
             return;
+
+        this.Play("stop");
+
         IDialogParameters para = new DialogParameters
         {
             { "point", this.Selected },

+ 30 - 9
Analizer/ProximaAnalizer/ViewModels/Dialog/SingleTracePlotViewModel.cs

@@ -1,6 +1,5 @@
 using ScottPlot;
 using ScottPlot.WPF;
-using System.Security.Cryptography;
 
 namespace ProximaAnalizer.ViewModels.Dialog;
 
@@ -19,12 +18,22 @@ internal partial class SingleTracePlotViewModel : ObservableObject, IDialogAware
 
     private readonly PlotHepler _plotHepler;
     private readonly DBDataHelper _dBDataHelper;
-    private IEnumerable<EventData>? _events;
     public DialogCloseListener RequestClose { get; set; }
 
     [ObservableProperty]
     private WpfPlot _PlotControl;
 
+    [ObservableProperty]
+    private ObservableCollection<EventData> _events = [];
+
+    [ObservableProperty]
+    private string? _Hint;
+
+    [ObservableProperty]
+    private Visibility _alarmVis = Visibility.Visible;
+
+    [ObservableProperty]
+    private Visibility _tabVis = Visibility.Visible;
 
     public bool CanCloseDialog()
     {
@@ -78,20 +87,24 @@ internal partial class SingleTracePlotViewModel : ObservableObject, IDialogAware
                 return;
         }
 
+        this.Hint = string.Empty;
+
         foreach (var item in rawData)
         {
             if (item is not IDictionary<string, object> contents)
                 continue;
 
+            if (string.IsNullOrEmpty(this.Hint) && contents[key] is bool b)
+                this.Hint = $"True: {Convert.ToSingle(true):0}  False: {Convert.ToSingle(false):0}";
+
             time.Add(new DateTime((long)contents["time"]));
             data.Add(Convert.ToSingle(contents[key]));
-
         }
 
         this._plotHepler.AddLeftLine(time, data, LinePattern.Solid, MarkerStyle.Default, 1, "1E90FF");
 
-        if (_events is not null)
-            foreach (var item in _events)
+        if (Events is not null)
+            foreach (var item in Events)
             {
                 switch (item.Level)
                 {
@@ -147,12 +160,20 @@ internal partial class SingleTracePlotViewModel : ObservableObject, IDialogAware
                 break;
         }
 
-        if (!this._dBDataHelper.GetAlarmData(out List<EventData>? alarms) || alarms is null)
-            return;
-
         _start = time.Value.AddMinutes(-1);
         _end = time.Value.AddMinutes(1);
         this._dBDataHelper.SetTimeRange(_start, _end);
-        this._events = alarms.Where(t => t.Occur_Time >= _start && t.Occur_Time <= _end);
+
+
+        if (!this._dBDataHelper.GetAlarmData(out List<EventData>? alarms) || alarms is null || alarms.Count == 0)
+            this.AlarmVis = Visibility.Collapsed;
+        else
+            this.Events.AddRange(alarms);
+
+        if (this.Tabs.Count == 1)
+        {
+            this.SelectTab(this.Tabs.First());
+            this.TabVis = Visibility.Collapsed;
+        }
     }
 }

+ 37 - 37
Analizer/ProximaAnalizer/ViewModels/RecipeStepNaviViewModel.cs

@@ -116,42 +116,42 @@ internal partial class RecipeStepNaviViewModel(IEventAggregator eventAggregator,
         });
     }
 
-    [RelayCommand]
-    private void NameSearch(string name)
-    {
-        if (sqlSugar.Client is null)
-            return;
-        if (string.IsNullOrEmpty(name))
-            return;
-
-        this.ProcessData ??= [];
-        this.ProcessData.Clear();
-        this.Masking = Visibility.Visible;
-        Task.Factory.StartNew(() =>
-        {
-            try
-            {
-                var t = sqlSugar.Client.Queryable<ProcessData>()
-                    .Where(t => (string.IsNullOrEmpty(t.Recipe_Name) ? string.Empty : t.Recipe_Name).ToLower().Contains(name.ToLower()))
-                    .AS("process_data").ToArray()
-                    .OrderBy(t => t.Process_Begin_Time);
-
-                foreach (var item in t)
-                {
-                    App.Current.Dispatcher.Invoke(() =>
-                    {
-                        this.ProcessData.Add(item);
-                    });
-                    Thread.Sleep(1);
-                }
-
-            }
-            finally
-            {
-                this.Masking = Visibility.Collapsed;
-            }
-        });
-
-    }
+    //[RelayCommand]
+    //private void NameSearch(string name)
+    //{
+    //    if (sqlSugar.Client is null)
+    //        return;
+    //    if (string.IsNullOrEmpty(name))
+    //        return;
+
+    //    this.ProcessData ??= [];
+    //    this.ProcessData.Clear();
+    //    this.Masking = Visibility.Visible;
+    //    Task.Factory.StartNew(() =>
+    //    {
+    //        try
+    //        {
+    //            var t = sqlSugar.Client.Queryable<ProcessData>()
+    //                .Where(t => (string.IsNullOrEmpty(t.Recipe_Name) ? string.Empty : t.Recipe_Name).ToLower().Contains(name.ToLower()))
+    //                .AS("process_data").ToArray()
+    //                .OrderBy(t => t.Process_Begin_Time);
+
+    //            foreach (var item in t)
+    //            {
+    //                App.Current.Dispatcher.Invoke(() =>
+    //                {
+    //                    this.ProcessData.Add(item);
+    //                });
+    //                Thread.Sleep(1);
+    //            }
+
+    //        }
+    //        finally
+    //        {
+    //            this.Masking = Visibility.Collapsed;
+    //        }
+    //    });
+
+    //}
 }
 

+ 83 - 22
Analizer/ProximaAnalizer/Views/Dialog/SingleTracePlot.xaml

@@ -13,29 +13,90 @@
             </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
     </UserControl.Resources>
-    <Grid Background="{StaticResource BackgroundColor}">
-        <Grid.RowDefinitions>
-            <RowDefinition/>
-            <RowDefinition Height="8"/>
-            <RowDefinition Height="auto"/>
-        </Grid.RowDefinitions>
-        <ContentControl Content="{Binding PlotControl, Mode=OneTime}" MinWidth="1200" MinHeight="600"/>
+    <Border Background="{StaticResource BackgroundColor}">
 
-        <ItemsControl Grid.Row="2" ItemsSource="{Binding Tabs}" Margin="8">
-            <ItemsControl.ItemTemplate>
-                <DataTemplate>
-                    <Button Background="Transparent" Margin="2" 
+        <Grid Margin="8" MinWidth="1200">
+            <Grid.RowDefinitions>
+                <RowDefinition MinHeight="540"/>
+                <RowDefinition Height="0"/>
+                <RowDefinition Height="auto" />
+                <RowDefinition Height="0"/>
+                <RowDefinition MaxHeight="240" Height="auto"/>
+            </Grid.RowDefinitions>
+            <ContentControl Content="{Binding PlotControl, Mode=OneTime}"/>
+            <TextBlock Panel.ZIndex="1" Text="{Binding Hint}" Margin="18,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
+            <GroupBox Grid.Row="2" Header="Data Picker" Visibility="{Binding TabVis}" Margin="0,8,0,0">
+                <ItemsControl Grid.Row="2" ItemsSource="{Binding Tabs}" Margin="8">
+                    <ItemsControl.ItemTemplate>
+                        <DataTemplate>
+                            <Button Background="Transparent" Margin="2" 
                             Command="{Binding RelativeSource={RelativeSource AncestorType=local:SingleTracePlot, Mode=FindAncestor}, Path=DataContext.SelectTabCommand}"
                             CommandParameter="{Binding}">
-                        <TextBlock Text="{Binding}" Margin="0,2"></TextBlock>
-                    </Button>
-                </DataTemplate>
-            </ItemsControl.ItemTemplate>
-            <ItemsControl.ItemsPanel>
-                <ItemsPanelTemplate>
-                    <UniformGrid/>
-                </ItemsPanelTemplate>
-            </ItemsControl.ItemsPanel>
-        </ItemsControl>
-    </Grid>
+                                <TextBlock Text="{Binding}" Margin="0,2"/>
+                            </Button>
+                        </DataTemplate>
+                    </ItemsControl.ItemTemplate>
+                    <ItemsControl.ItemsPanel>
+                        <ItemsPanelTemplate>
+                            <UniformGrid/>
+                        </ItemsPanelTemplate>
+                    </ItemsControl.ItemsPanel>
+                </ItemsControl>
+            </GroupBox>
+
+            <GroupBox Grid.Row="4" Header="Alarms" Visibility="{Binding AlarmVis}" Margin="0,8,0,0">
+                <DataGrid Grid.Row="4" ItemsSource="{Binding Events}"
+                   Margin="8"
+                   IsReadOnly="True"
+                   CanUserAddRows="False"
+                   CanUserDeleteRows="False"
+                   CanUserResizeRows="False"
+                   CanUserSortColumns="False"
+                   GridLinesVisibility="All"
+                   HorizontalGridLinesBrush="{StaticResource DarkBorderColor}"
+                   VerticalGridLinesBrush="{StaticResource DarkBorderColor}"
+                   AutoGenerateColumns="False"
+                   ColumnHeaderHeight="22"
+                   RowHeight="22"
+                   VerticalAlignment="Top"
+                  BorderBrush="{StaticResource DarkBorderColor}"
+                   Background="{StaticResource BackgroundColor}" >
+                    <DataGrid.Columns>
+                        <DataGridTemplateColumn Header="Time" Width="120">
+                            <DataGridTemplateColumn.CellTemplate>
+                                <DataTemplate>
+                                    <TextBlock Text="{Binding Occur_Time, StringFormat=HH:mm:ss.f}"></TextBlock>
+                                </DataTemplate>
+                            </DataGridTemplateColumn.CellTemplate>
+                        </DataGridTemplateColumn>
+
+                        <DataGridTemplateColumn Header="Source" MinWidth="64">
+                            <DataGridTemplateColumn.CellTemplate>
+                                <DataTemplate>
+                                    <TextBlock Text="{Binding Source}"></TextBlock>
+                                </DataTemplate>
+                            </DataGridTemplateColumn.CellTemplate>
+                        </DataGridTemplateColumn>
+
+                        <DataGridTemplateColumn Header="Level" Width="64">
+                            <DataGridTemplateColumn.CellTemplate>
+                                <DataTemplate>
+                                    <TextBlock Text="{Binding Level}"></TextBlock>
+                                </DataTemplate>
+                            </DataGridTemplateColumn.CellTemplate>
+                        </DataGridTemplateColumn>
+
+                        <DataGridTemplateColumn Header="Detail" Width="auto">
+                            <DataGridTemplateColumn.CellTemplate>
+                                <DataTemplate>
+                                    <TextBlock Text="{Binding Description}" Margin="8,0"></TextBlock>
+                                </DataTemplate>
+                            </DataGridTemplateColumn.CellTemplate>
+                        </DataGridTemplateColumn>
+
+                    </DataGrid.Columns>
+                </DataGrid>
+            </GroupBox>
+        </Grid>
+    </Border>
 </UserControl>

+ 2 - 2
Analizer/ProximaAnalizer/Views/RecipeStepNavi.xaml

@@ -46,7 +46,7 @@
                     </StackPanel>
                 </GroupBox>
 
-                <TextBlock Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">或</TextBlock>
+                <!--<TextBlock Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">或</TextBlock>
 
                 <GroupBox Grid.Column="4" Header="根据名称查询" HorizontalAlignment="Left" VerticalAlignment="Center" BorderBrush="{StaticResource DarkBorderColor}">
                     <StackPanel Orientation="Horizontal" >
@@ -55,7 +55,7 @@
                             Command="{Binding NameSearchCommand}"
                             CommandParameter="{Binding ElementName=NameBox, Path=Text}">查询</Button>
                     </StackPanel>
-                </GroupBox>
+                </GroupBox>-->
             </Grid>
 
             <GroupBox Grid.Row="2" Header="工艺历史记录" BorderBrush="{StaticResource DarkBorderColor}">