using HMI.AlarmInfoManage.Entity;
|
using HMI.Core.Util;
|
using HMI.UI.Util;
|
using HMI.Util;
|
using log4net;
|
using Microsoft.Win32;
|
using NPOI.SS.Formula.Functions;
|
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, ObservableCollection<AlarmSetting> datasource,
|
ObservableCollection<AlarmSetting> markDatasource,
|
ILog log)
|
{
|
this.blockFile = blockFile;
|
this.markFile = markFile;
|
Datasource = datasource;
|
MarkDatasource = markDatasource;
|
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> { LangUtil.Get("Alm.DbBlockAlarm"), LangUtil.Get("Alm.TagAlarm") };
|
|
public ObservableCollection<string> Items
|
{
|
get => items;
|
set { Set(ref items, value); }
|
}
|
|
private int itemIndex;
|
public int ItemIndex
|
{
|
get => itemIndex;
|
set
|
{
|
Set(ref itemIndex, value);
|
LoadData();
|
}
|
}
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
{
|
Button btn = sender as Button;
|
AlarmSetting data = btn?.Tag as AlarmSetting;
|
switch (btn.Name)
|
{
|
case "refreshBtn":
|
LoadData();
|
break;
|
case "addBtn":
|
AddData(new AlarmSetting());
|
break;
|
case "delBatchBtn":
|
DeleteBatchData();
|
break;
|
case "editBtn":
|
EditData(ItemIndex == 0 ? Datasource.IndexOf(data) : MarkDatasource.IndexOf(data), data);
|
break;
|
case "exportBtn":
|
ExportData();
|
break;
|
case "importBtn":
|
ImportData();
|
break;
|
case "delBtn":
|
DeleteData(ItemIndex == 0 ? Datasource.IndexOf(data) : MarkDatasource.IndexOf(data));
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void LoadData()
|
{
|
try
|
{
|
if (File.Exists(blockFile))
|
{
|
Datasource =
|
XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(blockFile);
|
}
|
else
|
{
|
Datasource = new ObservableCollection<AlarmSetting>();
|
}
|
}
|
catch (Exception ex)
|
{
|
Datasource = new ObservableCollection<AlarmSetting>();
|
ToastHelper.Error(this, $"{this.lang("App.LoadFailed")}: {ex.Message}");
|
}
|
|
try
|
{
|
if (File.Exists(markFile))
|
{
|
MarkDatasource =
|
XmlHelper.DeserializeFromXml<ObservableCollection<AlarmSetting>>(markFile);
|
}
|
else
|
{
|
MarkDatasource = new ObservableCollection<AlarmSetting>();
|
}
|
}
|
catch (Exception ex)
|
{
|
MarkDatasource = new ObservableCollection<AlarmSetting>();
|
ToastHelper.Error(this, $"{this.lang("App.LoadFailed")}: {ex.Message}");
|
}
|
}
|
|
private void AddData(AlarmSetting data)
|
{
|
try
|
{
|
var file = ItemIndex == 0 ? blockFile : markFile;
|
var temp = ItemIndex == 0 ? this.lang("Alm.DbBlockAlarm") : this.lang("Alm.TagAlarm");
|
var modal = new AlarmSettingModal(log)
|
{
|
Title = $"{this.lang("App.Add")}{temp}",
|
Owner = Window.GetWindow(this),
|
};
|
if (modal.Open(-1, data, ItemIndex == 0 ? Datasource : MarkDatasource, file, ItemIndex != 0) == true)
|
{
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Add AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.AddFailed")}: {ex.Message}");
|
}
|
}
|
|
private void EditData(int index, AlarmSetting data)
|
{
|
try
|
{
|
var file = ItemIndex == 0 ? blockFile : markFile;
|
var temp = ItemIndex == 0 ? this.lang("Alm.DbBlockAlarm") : this.lang("Alm.TagAlarm");
|
var modal = new AlarmSettingModal(log)
|
{
|
Title = $"{this.lang("App.Edit")}{temp}",
|
Owner = Window.GetWindow(this),
|
};
|
if (modal.Open(index, data, ItemIndex == 0 ? Datasource : MarkDatasource, file, ItemIndex != 0) == true)
|
{
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Edit AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.EditFailed")}: {ex.Message}");
|
}
|
}
|
|
private void ExportData()
|
{
|
try
|
{
|
SaveFileDialog sfd = new SaveFileDialog
|
{
|
FileName = ItemIndex == 0 ? "DB块报警.xls" : "标志位报警.xls",
|
Filter = "Excel|*.xls"
|
};
|
if (sfd.ShowDialog() == true)
|
{
|
ExcelHelper.ExportExcel(sfd.FileName, ItemIndex == 0 ? Datasource : MarkDatasource);
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Export Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.ExportFailed")}: {ex.Message}");
|
}
|
}
|
|
private void ImportData()
|
{
|
try
|
{
|
OpenFileDialog ofd = new OpenFileDialog
|
{
|
Filter = "Excel|*.xls"
|
};
|
if (ofd.ShowDialog() == true)
|
{
|
var datasource = new ObservableCollection<AlarmSetting>(
|
ExcelHelper.ReadFromExcel<AlarmSetting>(ofd.FileName));
|
if (ItemIndex == 0)
|
{
|
Datasource = datasource;
|
}
|
else
|
{
|
MarkDatasource = datasource;
|
}
|
var file = ItemIndex == 0 ? blockFile : markFile;
|
var temp = ItemIndex == 0 ? Datasource : MarkDatasource;
|
XmlHelper.SerializeToXml(file, temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Import Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.ImportFailed")}: {ex.Message}");
|
}
|
}
|
|
private void DeleteData(int index)
|
{
|
try
|
{
|
if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeleteThis")) == MessageBoxResult.OK)
|
{
|
var file = ItemIndex == 0 ? blockFile : markFile;
|
var temp = XmlHelper.DeepClone(ItemIndex == 0 ? Datasource : MarkDatasource);
|
|
temp.RemoveAt(index);
|
XmlHelper.SerializeToXml(file, temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.DeleteFailed")}: {ex.Message}");
|
}
|
}
|
private void DeleteBatchData()
|
{
|
try
|
{
|
var temp = (ItemIndex == 0 ? Datasource : MarkDatasource).Where(e => e.IsSelected).ToList();
|
if (temp == null || temp.Count <= 0)
|
{
|
ToastHelper.Warning(Window.GetWindow(this), this.lang("HMI.NoDeleteData"));
|
return;
|
}
|
|
if (MsgBoxHelper.WarnMessage(Window.GetWindow(this), this.lang("HMI.MakeSureDeletes", temp.Count))
|
== MessageBoxResult.OK)
|
{
|
var file = ItemIndex == 0 ? blockFile : markFile;
|
temp = (ItemIndex == 0 ? Datasource : MarkDatasource).Where(e => !e.IsSelected).ToList();
|
XmlHelper.SerializeToXml(file, temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete Batch AlarmSetting Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.DeleteFailed")}: {ex.Message}");
|
}
|
}
|
|
private void WindowX_Loaded(object sender, RoutedEventArgs e)
|
{
|
ItemIndex = 0;
|
Loaded -= WindowX_Loaded;
|
}
|
}
|
}
|