Commit 8a97931a by liulongfei

服务状态监控

parent adea8cba
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// 服务FPS到纯色画刷转换器
/// </summary>
public class ServiceFps2SolidBrushConverter : IValueConverter
{
/// <summary>
/// 正常画刷
/// </summary>
public SolidColorBrush NormalBrush { get; set; }
/// <summary>
/// 警告画刷
/// </summary>
public SolidColorBrush WarningBrush { get; set; }
/// <summary>
/// 警告阈值
/// </summary>
public int WarningThreshold { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
int fps = (int)value;
return fps < this.WarningThreshold ? this.WarningBrush : this.NormalBrush;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using System.Windows.Media;
namespace VIZ.H2V.Module.Resource
{
/// <summary>
/// 服务FPS到可见性转化器
/// </summary>
public class ServiceFps2VisibilityConverter : IValueConverter
{
/// <summary>
/// 正常画刷
/// </summary>
public Visibility NormalVisibility { get; set; }
/// <summary>
/// 警告画刷
/// </summary>
public Visibility WarningVisibility { get; set; }
/// <summary>
/// 警告阈值
/// </summary>
public int WarningThreshold { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
int fps = (int)value;
return fps < this.WarningThreshold ? this.WarningVisibility : this.NormalVisibility;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
...@@ -146,6 +146,8 @@ ...@@ -146,6 +146,8 @@
<Compile Include="Converter\AlgorithmStrategyTagStringConverter.cs" /> <Compile Include="Converter\AlgorithmStrategyTagStringConverter.cs" />
<Compile Include="Converter\AlgorithmStrategyType2FootballFieldHeightConverter.cs" /> <Compile Include="Converter\AlgorithmStrategyType2FootballFieldHeightConverter.cs" />
<Compile Include="Converter\AlgorithmStrategyType2FootballFieldOrientationConverter.cs" /> <Compile Include="Converter\AlgorithmStrategyType2FootballFieldOrientationConverter.cs" />
<Compile Include="Converter\ServiceFps2VisibilityConverter.cs" />
<Compile Include="Converter\ServiceFps2SolidBrushConverter.cs" />
<Compile Include="Converter\TallyColor2RadialGradientBrushConverter.cs" /> <Compile Include="Converter\TallyColor2RadialGradientBrushConverter.cs" />
<Compile Include="Converter\NDIViewProperty2VisibilityConverter.cs" /> <Compile Include="Converter\NDIViewProperty2VisibilityConverter.cs" />
<Compile Include="Converter\NDIViewProperty2BoolConverter.cs" /> <Compile Include="Converter\NDIViewProperty2BoolConverter.cs" />
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
xmlns:local="clr-namespace:VIZ.H2V.Module" xmlns:local="clr-namespace:VIZ.H2V.Module"
xmlns:fcommon="clr-namespace:VIZ.Framework.Common;assembly=VIZ.Framework.Common" xmlns:fcommon="clr-namespace:VIZ.Framework.Common;assembly=VIZ.Framework.Common"
xmlns:domain="clr-namespace:VIZ.H2V.Domain;assembly=VIZ.H2V.Domain" xmlns:domain="clr-namespace:VIZ.H2V.Domain;assembly=VIZ.H2V.Domain"
xmlns:resource="clr-namespace:VIZ.H2V.Module.Resource;assembly=VIZ.H2V.Module.Resource"
d:DataContext="{d:DesignInstance Type=local:NDIMainViewModel}" Background="Transparent" d:DataContext="{d:DesignInstance Type=local:NDIMainViewModel}" Background="Transparent"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="1080" d:DesignWidth="1920"> d:DesignHeight="1080" d:DesignWidth="1920">
...@@ -19,6 +20,12 @@ ...@@ -19,6 +20,12 @@
<ResourceDictionary Source="/VIZ.Framework.Common.Resource;component/Style/ListBox/ListBox_None.xaml"></ResourceDictionary> <ResourceDictionary Source="/VIZ.Framework.Common.Resource;component/Style/ListBox/ListBox_None.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
<fcore:ByteSizeConverter x:Key="ByteSizeConverter" InType="B" OutType="GB"></fcore:ByteSizeConverter> <fcore:ByteSizeConverter x:Key="ByteSizeConverter" InType="B" OutType="GB"></fcore:ByteSizeConverter>
<resource:ServiceFps2SolidBrushConverter x:Key="ServiceFps2SolidBrushConverter" WarningThreshold="20"
NormalBrush="#ffa5ef20" WarningBrush="#ffdaa605"></resource:ServiceFps2SolidBrushConverter>
<resource:ServiceFps2VisibilityConverter x:Key="ServiceFps2VisibilityConverter_Normal" WarningThreshold="20"
NormalVisibility="Visible" WarningVisibility="Collapsed"></resource:ServiceFps2VisibilityConverter>
<resource:ServiceFps2VisibilityConverter x:Key="ServiceFps2VisibilityConverter_Warning" WarningThreshold="20"
NormalVisibility="Collapsed" WarningVisibility="Visible"></resource:ServiceFps2VisibilityConverter>
</ResourceDictionary> </ResourceDictionary>
</UserControl.Resources> </UserControl.Resources>
...@@ -79,9 +86,9 @@ ...@@ -79,9 +86,9 @@
<!-- 算法服务监控 --> <!-- 算法服务监控 -->
<StackPanel Orientation="Horizontal" Background="Transparent" <StackPanel Orientation="Horizontal" Background="Transparent"
ToolTipService.Placement="Top" ToolTipService.HasDropShadow="True" ToolTipService.Placement="Top" ToolTipService.HasDropShadow="True"
ToolTipService.HorizontalOffset="-60"> ToolTipService.HorizontalOffset="-65">
<StackPanel.ToolTip> <StackPanel.ToolTip>
<ToolTip x:Name="ttAlgorithm" Background="#ff0f1221" BorderBrush="#ff0f1221"> <ToolTip Background="#ff0f1221" BorderBrush="#ff0f1221">
<ListBox Style="{StaticResource ListBox_None}" Width="180" Height="160" Margin="10" <ListBox Style="{StaticResource ListBox_None}" Width="180" Height="160" Margin="10"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemsSource="{Binding Path=NDIViewServices,Mode=OneWay}"> ItemsSource="{Binding Path=NDIViewServices,Mode=OneWay}">
...@@ -99,7 +106,8 @@ ...@@ -99,7 +106,8 @@
<TextBlock Text=":" Foreground="White" Margin="5,0,5,0"></TextBlock> <TextBlock Text=":" Foreground="White" Margin="5,0,5,0"></TextBlock>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="1"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="1">
<TextBlock Text="{Binding Path=AlgorithmFPS.FPS}" Grid.Column="1" FontSize="14" Foreground="White" <TextBlock Text="{Binding Path=AlgorithmFPS.FPS}" Grid.Column="1" FontSize="14"
Foreground="{Binding Path=AlgorithmFPS.FPS,Converter={StaticResource ServiceFps2SolidBrushConverter}}"
Margin="5,0,0,0"></TextBlock> Margin="5,0,0,0"></TextBlock>
<TextBlock Text="fps" Grid.Column="1" FontSize="14" Foreground="#88ffffff" <TextBlock Text="fps" Grid.Column="1" FontSize="14" Foreground="#88ffffff"
Margin="5,0,0,0"></TextBlock> Margin="5,0,0,0"></TextBlock>
...@@ -111,18 +119,57 @@ ...@@ -111,18 +119,57 @@
</ToolTip> </ToolTip>
</StackPanel.ToolTip> </StackPanel.ToolTip>
<Image Width="18" Height="18" VerticalAlignment="Center" <Grid Width="18" Height="18" VerticalAlignment="Center">
Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"></Image> <Image Source="/VIZ.H2V.Module.Resource;component/Icons/status_yellow_25x22.png"
Visibility="{Binding AlgorithmStatusMinFps,Converter={StaticResource ServiceFps2VisibilityConverter_Warning}}"></Image>
<Image Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"
Visibility="{Binding AlgorithmStatusMinFps,Converter={StaticResource ServiceFps2VisibilityConverter_Normal}}"></Image>
</Grid>
<TextBlock Text="算法服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock> <TextBlock Text="算法服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock>
</StackPanel> </StackPanel>
<!-- 剪切服务监控 --> <!-- 剪切服务监控 -->
<StackPanel Orientation="Horizontal" Grid.Column="1" Background="Transparent"> <StackPanel Orientation="Horizontal" Background="Transparent" Grid.Column="1"
<!--<StackPanel.ToolTip> ToolTipService.Placement="Top" ToolTipService.HasDropShadow="True"
<local:ClipServiceStatusPanelView></local:ClipServiceStatusPanelView> ToolTipService.HorizontalOffset="-65">
</StackPanel.ToolTip>--> <StackPanel.ToolTip>
<Image Width="18" Height="18" VerticalAlignment="Center" <ToolTip Background="#ff0f1221" BorderBrush="#ff0f1221">
Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"></Image> <ListBox Style="{StaticResource ListBox_None}" Width="180" Height="160" Margin="10"
<TextBlock Text="剪切服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock> ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemsSource="{Binding Path=NDIViewServices,Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="60"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock Text="{Binding Path=DisplayName}" FontSize="14" Foreground="White"
MaxWidth="90"
TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"></TextBlock>
<TextBlock Text=":" Foreground="White" Margin="5,0,5,0"></TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="1">
<TextBlock Text="{Binding Path=ClipFPS.FPS}" Grid.Column="1" FontSize="14"
Foreground="{Binding Path=ClipFPS.FPS,Converter={StaticResource ServiceFps2SolidBrushConverter}}"
Margin="5,0,0,0"></TextBlock>
<TextBlock Text="fps" Grid.Column="1" FontSize="14" Foreground="#88ffffff"
Margin="5,0,0,0"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ToolTip>
</StackPanel.ToolTip>
<Grid Width="18" Height="18" VerticalAlignment="Center">
<Image Source="/VIZ.H2V.Module.Resource;component/Icons/status_yellow_25x22.png"
Visibility="{Binding ClipStatusMinFps,Converter={StaticResource ServiceFps2VisibilityConverter_Warning}}"></Image>
<Image Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"
Visibility="{Binding ClipStatusMinFps,Converter={StaticResource ServiceFps2VisibilityConverter_Normal}}"></Image>
</Grid>
<TextBlock Text="裁切服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock>
</StackPanel> </StackPanel>
<!-- 计算机监控 --> <!-- 计算机监控 -->
<StackPanel Orientation="Horizontal" Grid.Column="2"> <StackPanel Orientation="Horizontal" Grid.Column="2">
......
...@@ -455,12 +455,12 @@ namespace VIZ.H2V.Module ...@@ -455,12 +455,12 @@ namespace VIZ.H2V.Module
foreach (INDIViewService service in services) foreach (INDIViewService service in services)
{ {
// 算法服务 // 算法服务
service.AlgorithmFPS.PropertyChanged -= Algorith_FPS_PropertyChanged; service.AlgorithmFPS.OnFpsChanged -= AlgorithFpsChanged;
service.AlgorithmFPS.PropertyChanged += Algorith_FPS_PropertyChanged; service.AlgorithmFPS.OnFpsChanged += AlgorithFpsChanged;
// 裁切服务 // 裁切服务
service.ClipFPS.PropertyChanged -= Clip_FPS_PropertyChanged; service.ClipFPS.OnFpsChanged -= ClipFpsChanged;
service.ClipFPS.PropertyChanged += Clip_FPS_PropertyChanged; service.ClipFPS.OnFpsChanged += ClipFpsChanged;
} }
this.NDIViewServices = services; this.NDIViewServices = services;
...@@ -472,7 +472,7 @@ namespace VIZ.H2V.Module ...@@ -472,7 +472,7 @@ namespace VIZ.H2V.Module
/// <summary> /// <summary>
/// 算法FPS属性改变后触发 /// 算法FPS属性改变后触发
/// </summary> /// </summary>
private void Algorith_FPS_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private void AlgorithFpsChanged(object sender, EventArgs e)
{ {
this.AlgorithmStatusMinFps = this.NDIViewServices.Min(p => p.AlgorithmFPS.FPS); this.AlgorithmStatusMinFps = this.NDIViewServices.Min(p => p.AlgorithmFPS.FPS);
} }
...@@ -480,7 +480,7 @@ namespace VIZ.H2V.Module ...@@ -480,7 +480,7 @@ namespace VIZ.H2V.Module
/// <summary> /// <summary>
/// 裁切FPS属性改变时触发 /// 裁切FPS属性改变时触发
/// </summary> /// </summary>
private void Clip_FPS_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private void ClipFpsChanged(object sender, EventArgs e)
{ {
this.ClipStatusMinFps = this.NDIViewServices.Min(p => p.ClipFPS.FPS); this.ClipStatusMinFps = this.NDIViewServices.Min(p => p.ClipFPS.FPS);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment