using HMI.AlarmInfoManage.Entity;
|
using HMI.Core.Util;
|
using HMI.UI.Util;
|
using log4net;
|
using Panuon.WPF.UI;
|
using System;
|
using System.Collections.ObjectModel;
|
using System.IO;
|
using System.Linq;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace HMI.AlarmInfoManage
|
{
|
/// <summary>
|
/// AlarmSettingList.xaml 的交互逻辑
|
/// </summary>
|
public partial class AlarmSettingList : WindowX
|
{
|
private ILog log;
|
public AlarmSettingList(string blockFile, string markFile, ILog log)
|
{
|
this.blockFile = blockFile;
|
this.markFile = markFile;
|
this.log = log;
|
DataContext = this;
|
InitializeComponent();
|
}
|
|
private readonly string blockFile;
|
private readonly string markFile;
|
|
private ObservableCollection<AlarmSetting> datasource;
|
|
public ObservableCollection<AlarmSetting> Datasource
|
{
|
get => datasource;
|
set { Set(ref datasource, value); }
|
}
|
|
private ObservableCollection<AlarmSetting> markDatasource;
|
|
public ObservableCollection<AlarmSetting> MarkDatasource
|
{
|
get => markDatasource;
|
set { Set(ref markDatasource, value); }
|
}
|
|
private ObservableCollection<string> items =
|
new ObservableCollection<string> { "DB块报警", "标志位报警" };
|
|
public ObservableCollection<string> Items
|
{
|
get => items;
|
set { Set(ref items, value); }
|
}
|
|
private string selectedValue;
|
|
public string SelectedValue
|
{
|
get { return selectedValue; }
|
set
|
{
|
Set(ref selectedValue, value);
|
LoadData();
|
}
|
}
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
{
|
Button btn = sender as Button;
|
DataGridRow row = btn?.Tag as DataGridRow;
|
switch (btn.Name)
|
{
|
case "refreshBtn":
|
LoadData();
|
break;
|
case "addBtn":
|
AddData(new AlarmSetting());
|
break;
|
case "delBatchBtn":
|
DeleteBatchData();
|
break;
|
case "editBtn":
|
EditData(row.GetIndex(), btn.DataContext as AlarmSetting);
|
break;
|
case "delBtn":
|
DeleteData(row.GetIndex());
|
break;
|
default:
|
break;
|
}
|
|
}
|
|
private void LoadData()
|
{
|
try
|
{
|
ObservableCollection<AlarmSetting> datasource = new ObservableCollection<AlarmSetting>();
|
if (SelectedValue == "DB块报警" && File.Exists(blockFile))
|
{
|
datasource =
|
XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(blockFile);
|
}
|
else if (SelectedValue == "标志位报警" && File.Exists(markFile))
|
{
|
datasource =
|
XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(markFile);
|
}
|
Datasource = datasource;
|
}
|
catch (Exception ex)
|
{
|
ToastHelper.Error(this, $"加载错误!{ex.Message}");
|
}
|
}
|
|
private void AddData(AlarmSetting data)
|
{
|
try
|
{
|
var file = SelectedValue == "DB块报警" ? blockFile : markFile;
|
var modal = new AlarmSettingModal(log)
|
{
|
Title = $"新增{SelectedValue}",
|
Owner = Window.GetWindow(this),
|
};
|
if (modal.Open(-1, data, Datasource, file) == true)
|
{
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Add AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"新增失败!{ex.Message}");
|
}
|
}
|
|
private void EditData(int index, AlarmSetting data)
|
{
|
try
|
{
|
var file = SelectedValue == "DB块报警" ? blockFile : markFile;
|
var modal = new AlarmSettingModal(log)
|
{
|
Title = $"编辑{SelectedValue}",
|
Owner = Window.GetWindow(this),
|
};
|
if (modal.Open(index, data, Datasource, file) == true)
|
{
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Edit AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"编辑失败!{ex.Message}");
|
}
|
}
|
private void DeleteData(int index)
|
{
|
try
|
{
|
if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), "确定要删除该项吗?该操作不可逆") == MessageBoxResult.OK)
|
{
|
var file = SelectedValue == "DB块报警" ? blockFile : markFile;
|
var temp = XmlHelper.DeepClone(Datasource);
|
|
temp.RemoveAt(index);
|
XmlHelper.SerializeToXml(file, temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"删除失败!{ex.Message}");
|
}
|
}
|
private void DeleteBatchData()
|
{
|
try
|
{
|
var temp = Datasource.Where(e => e.IsSelected).ToList();
|
if (temp == null || temp.Count <= 0)
|
{
|
ToastHelper.Warning(Window.GetWindow(this), "请选择要删除的数据");
|
return;
|
}
|
|
if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), $"确定要删除{temp.Count}项数据吗?该操作不可逆") == MessageBoxResult.OK)
|
{
|
var file = SelectedValue == "DB块报警" ? blockFile : markFile;
|
temp = Datasource.Where(e => !e.IsSelected).ToList();
|
XmlHelper.SerializeToXml(file, temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete Batch AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"删除失败!{ex.Message}");
|
}
|
}
|
|
private void WindowX_Loaded(object sender, RoutedEventArgs e)
|
{
|
SelectedValue = "DB块报警";
|
Loaded -= WindowX_Loaded;
|
}
|
}
|
}
|