using HMI.Core.Entity;
|
using HMI.Core.Util;
|
using HMI.UI.Util;
|
using HMI.Util;
|
using HMI.Util.Alarm;
|
using log4net;
|
using Microsoft.Win32;
|
using Panuon.WPF.UI;
|
using System;
|
using System.Collections.ObjectModel;
|
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(ILog log)
|
{
|
BlockDatasource = AlarmUtil.BlockSettings;
|
MarkDatasource = AlarmUtil.MarkSettings;
|
this.log = log;
|
DataContext = this;
|
InitializeComponent();
|
}
|
|
private ObservableCollection<AlarmSetting> blockDatasource;
|
|
public ObservableCollection<AlarmSetting> BlockDatasource
|
{
|
get => blockDatasource;
|
set { Set(ref blockDatasource, 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 ? BlockDatasource.IndexOf(data) : MarkDatasource.IndexOf(data), data);
|
break;
|
case "exportBtn":
|
ExportData();
|
break;
|
case "importBtn":
|
ImportData();
|
break;
|
case "delBtn":
|
DeleteData(ItemIndex == 0 ? BlockDatasource.IndexOf(data) : MarkDatasource.IndexOf(data));
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void LoadData()
|
{
|
BlockDatasource = AlarmUtil.BlockSettings;
|
MarkDatasource = AlarmUtil.MarkSettings;
|
}
|
|
private void AddData(AlarmSetting data)
|
{
|
try
|
{
|
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 ? BlockDatasource : MarkDatasource, 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 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 ? BlockDatasource : MarkDatasource, 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 ? BlockDatasource : 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)
|
{
|
AlarmUtil.UpdateBlockSettings(datasource);
|
BlockDatasource = AlarmUtil.BlockSettings;
|
}
|
else
|
{
|
AlarmUtil.UpdateMarkSettings(datasource);
|
MarkDatasource = AlarmUtil.MarkSettings;
|
}
|
}
|
}
|
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)
|
{
|
bool isBlock = ItemIndex == 0;
|
var temp = XmlHelper.DeepClone(isBlock ? BlockDatasource : MarkDatasource);
|
|
temp.RemoveAt(index);
|
if (isBlock)
|
{
|
AlarmUtil.UpdateBlockSettings(temp);
|
}
|
else
|
{
|
AlarmUtil.UpdateMarkSettings(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 ? BlockDatasource : 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)
|
{
|
bool isBlock = ItemIndex == 0;
|
temp = (isBlock ? BlockDatasource : MarkDatasource).Where(e => !e.IsSelected).ToList();
|
if (isBlock)
|
{
|
AlarmUtil.UpdateBlockSettings(temp);
|
}
|
else
|
{
|
AlarmUtil.UpdateMarkSettings(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;
|
}
|
}
|
}
|