千问写完触发器功能,错误未修复
This commit is contained in:
183
DMS.WPF/Views/Triggers/TriggerEditorView.xaml
Normal file
183
DMS.WPF/Views/Triggers/TriggerEditorView.xaml
Normal file
@@ -0,0 +1,183 @@
|
||||
<UserControl x:Class="DMS.WPF.Views.Triggers.TriggerEditorView"
|
||||
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:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:DMS.WPF.Views.Triggers"
|
||||
xmlns:viewmodels="clr-namespace:DMS.WPF.ViewModels.Triggers;assembly=DMS.WPF"
|
||||
xmlns:converters="clr-namespace:DMS.WPF.Converters;assembly=DMS.WPF"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="600"
|
||||
MinWidth="500" MinHeight="500">
|
||||
<UserControl.DataContext>
|
||||
<viewmodels:TriggerEditorViewModel />
|
||||
</UserControl.DataContext>
|
||||
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Header -->
|
||||
<TextBlock Grid.Row="0" Text="{Binding Title}" FontSize="18" FontWeight="Bold" Margin="0,0,0,10"/>
|
||||
|
||||
<!-- ScrollViewer for form content -->
|
||||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel>
|
||||
<!-- Basic Info Section -->
|
||||
<GroupBox Header="基本信息" Padding="5">
|
||||
<StackPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="关联变量:" Width="100" VerticalAlignment="Center"/>
|
||||
<ComboBox ItemsSource="{Binding AvailableVariables}"
|
||||
DisplayMemberPath="Name"
|
||||
SelectedValuePath="Id"
|
||||
SelectedValue="{Binding Trigger.VariableId}"
|
||||
Width="200" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="描述:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.Description, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="300" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
|
||||
<CheckBox Content="激活" IsChecked="{Binding Trigger.IsActive}" Margin="0,0,0,5"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Condition Section -->
|
||||
<GroupBox Header="触发条件" Padding="5" Margin="0,10,0,0">
|
||||
<StackPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="条件类型:" Width="100" VerticalAlignment="Center"/>
|
||||
<ComboBox ItemsSource="{Binding Source={StaticResource ConditionTypeEnum}}"
|
||||
SelectedItem="{Binding Trigger.Condition}"
|
||||
Width="200" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
|
||||
<!-- Conditional Fields based on Condition Type -->
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=GreaterThan}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="阈值:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.Threshold, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=LessThan}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="阈值:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.Threshold, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=EqualTo}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="阈值:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.Threshold, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=NotEqualTo}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="阈值:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.Threshold, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=InRange}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="下限:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.LowerBound, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="上限:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.UpperBound, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Condition, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=OutOfRange}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="下限:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.LowerBound, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="上限:" Width="100" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.UpperBound, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Action Section -->
|
||||
<GroupBox Header="触发动作" Padding="5" Margin="0,10,0,0">
|
||||
<StackPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="动作类型:" Width="100" VerticalAlignment="Center"/>
|
||||
<ComboBox ItemsSource="{Binding Source={StaticResource ActionTypeEnum}}"
|
||||
SelectedItem="{Binding Trigger.Action}"
|
||||
Width="200" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
|
||||
<!-- Conditional Fields based on Action Type -->
|
||||
<StackPanel Visibility="{Binding Trigger.Action, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=SendEmail}">
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="收件人 (分号分隔):" Width="150" VerticalAlignment="Top"/>
|
||||
<TextBox Text="{Binding EmailRecipients, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
|
||||
AcceptsReturn="True" TextWrapping="Wrap"
|
||||
Width="350" Height="60" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="邮件主题模板:" Width="150" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding EmailSubjectTemplate, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
|
||||
Width="350" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="邮件内容模板:" Width="150" VerticalAlignment="Top"/>
|
||||
<TextBox Text="{Binding EmailBodyTemplate, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
|
||||
AcceptsReturn="True" TextWrapping="Wrap"
|
||||
Width="350" Height="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Add placeholders for other action types if needed -->
|
||||
<StackPanel Visibility="{Binding Trigger.Action, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=ActivateAlarm}">
|
||||
<TextBlock Text="配置激活报警动作..." Margin="5"/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Visibility="{Binding Trigger.Action, Converter={StaticResource LocalEnumToVisibilityConverter}, ConverterParameter=WriteToLog}">
|
||||
<TextBlock Text="配置写入日志动作..." Margin="5"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Suppression Section -->
|
||||
<GroupBox Header="抑制设置" Padding="5" Margin="0,10,0,0">
|
||||
<StackPanel>
|
||||
<DockPanel Margin="0,0,0,5">
|
||||
<Label Content="抑制持续时间 (秒):" Width="150" VerticalAlignment="Center"/>
|
||||
<TextBox Text="{Binding Trigger.SuppressionDuration, Converter={StaticResource NullableTimeSpanToSecondsConverter}, UpdateSourceTrigger=PropertyChanged}"
|
||||
Width="100" HorizontalAlignment="Left"/>
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
<!-- Buttons -->
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,0,0">
|
||||
<Button Content="{Binding PrimaryButText}" Command="{Binding SaveCommand}" Margin="0,0,5,0" Width="80"/>
|
||||
<Button Content="取消" Command="{Binding CancelCommand}" Width="80"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
15
DMS.WPF/Views/Triggers/TriggerEditorView.xaml.cs
Normal file
15
DMS.WPF/Views/Triggers/TriggerEditorView.xaml.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace DMS.WPF.Views.Triggers
|
||||
{
|
||||
/// <summary>
|
||||
/// TriggerEditorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class TriggerEditorView : UserControl
|
||||
{
|
||||
public TriggerEditorView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
DMS.WPF/Views/Triggers/TriggersView.xaml
Normal file
51
DMS.WPF/Views/Triggers/TriggersView.xaml
Normal file
@@ -0,0 +1,51 @@
|
||||
<Page x:Class="DMS.WPF.Views.Triggers.TriggersView"
|
||||
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:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:DMS.WPF.Views.Triggers"
|
||||
xmlns:viewmodels="clr-namespace:DMS.WPF.ViewModels.Triggers;assembly=DMS.WPF"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800"
|
||||
Title="TriggersView">
|
||||
<Page.DataContext>
|
||||
<viewmodels:TriggersViewModel />
|
||||
</Page.DataContext>
|
||||
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Toolbar -->
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,0,10">
|
||||
<Button Content="添加" Command="{Binding AddTriggerCommand}" Margin="0,0,5,0"/>
|
||||
<Button Content="编辑" Command="{Binding EditTriggerCommand}" Margin="0,0,5,0"/>
|
||||
<Button Content="删除" Command="{Binding DeleteTriggerCommand}" Margin="0,0,5,0"/>
|
||||
<Button Content="刷新" Command="{Binding LoadTriggersCommand}" Margin="0,0,5,0"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Triggers List -->
|
||||
<DataGrid Grid.Row="1"
|
||||
ItemsSource="{Binding Triggers}"
|
||||
SelectedItem="{Binding SelectedTrigger}"
|
||||
AutoGenerateColumns="False"
|
||||
IsReadOnly="True"
|
||||
SelectionMode="Single">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="描述" Binding="{Binding Description}" Width="*" />
|
||||
<DataGridTextColumn Header="变量ID" Binding="{Binding VariableId}" Width="150" />
|
||||
<DataGridTextColumn Header="条件" Binding="{Binding Condition}" Width="100" />
|
||||
<DataGridTextColumn Header="阈值/范围" Binding="{Binding Threshold, StringFormat='{}{0:N2}'}" Width="100" />
|
||||
<DataGridTextColumn Header="下限" Binding="{Binding LowerBound, StringFormat='{}{0:N2}'}" Width="100" />
|
||||
<DataGridTextColumn Header="上限" Binding="{Binding UpperBound, StringFormat='{}{0:N2}'}" Width="100" />
|
||||
<DataGridTextColumn Header="动作" Binding="{Binding Action}" Width="100" />
|
||||
<DataGridTextColumn Header="激活" Binding="{Binding IsActive}" Width="60" />
|
||||
<DataGridTextColumn Header="最后触发" Binding="{Binding LastTriggeredAt, StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}" Width="150" />
|
||||
<DataGridTextColumn Header="创建时间" Binding="{Binding CreatedAt, StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}" Width="150" />
|
||||
<DataGridTextColumn Header="更新时间" Binding="{Binding UpdatedAt, StringFormat='{}{0:yyyy-MM-dd HH:mm:ss}'}" Width="150" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</Page>
|
||||
15
DMS.WPF/Views/Triggers/TriggersView.xaml.cs
Normal file
15
DMS.WPF/Views/Triggers/TriggersView.xaml.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace DMS.WPF.Views.Triggers
|
||||
{
|
||||
/// <summary>
|
||||
/// TriggersView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class TriggersView : Page
|
||||
{
|
||||
public TriggersView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user