using HMI.Base;
|
using HMI.Core.Entity;
|
using HMI.Core.Manager;
|
using HMI.Core.Util;
|
using HMI.UI.Util;
|
using HMI.Util;
|
using Microsoft.Win32;
|
using System;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Linq;
|
using System.Text.RegularExpressions;
|
using System.Windows;
|
using System.Windows.Controls;
|
|
namespace HMI.ParameterManage
|
{
|
/// <summary>
|
/// UserControl1.xaml 的交互逻辑
|
/// </summary>
|
public partial class ParameterSetting : PluginControl
|
{
|
|
private ObservableCollection<ParameterData> datasource;
|
public ObservableCollection<ParameterData> Datasource
|
{
|
get => datasource;
|
set
|
{
|
Set(ref datasource, value);
|
}
|
}
|
|
public List<string> groups = new List<string>();
|
|
public ParameterSetting()
|
{
|
this.DataContext = this;
|
InitializeComponent();
|
}
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|
{
|
var btn = ((Button)sender);
|
ParameterData data = btn.DataContext as ParameterData;
|
switch (btn.Name)
|
{
|
case "addBtn":
|
OpenDataModal(null, false);
|
break;
|
case "editBtn":
|
OpenDataModal(data, true);
|
break;
|
case "refreshBtn":
|
LoadData();
|
break;
|
case "delBatchBtn":
|
DeleteBatch();
|
break;
|
case "exportBtn":
|
ExportData();
|
break;
|
case "importBtn":
|
ImportData();
|
break;
|
case "delBtn":
|
DeleteData(data);
|
break;
|
default:
|
break;
|
}
|
}
|
|
/// <summary>
|
/// 加载数据
|
/// </summary>
|
public void LoadData()
|
{
|
try
|
{
|
Datasource = ParameterManager.GetCommonParameter<ObservableCollection<ParameterData>>()
|
?? new ObservableCollection<ParameterData>();
|
groups = Datasource.Where(d => !string.IsNullOrEmpty(d.ShowGroup)).Select(d => d.ShowGroup).Distinct().ToList();
|
}
|
catch (Exception ex)
|
{
|
Datasource = new ObservableCollection<ParameterData>();
|
groups = new List<string>();
|
log.Error("Refresh Data Failed.", ex);
|
ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.RefreshFailed")}: {ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 打开新增或编辑窗口
|
/// </summary>
|
/// <param name="data"></param>
|
public void OpenDataModal(ParameterData data, bool isUpdate)
|
{
|
try
|
{
|
int index = isUpdate ? Datasource.IndexOf(data) : -1;
|
string title = isUpdate ? $"{this.lang("App.Edit")}" : $"{this.lang("App.Add")}";
|
SettingModal modal = new SettingModal()
|
{
|
Title = title,
|
Owner = Window.GetWindow(this)
|
};
|
if (modal.Open(data ?? new ParameterData(), Datasource, groups) == true)
|
{
|
if (index == -1)
|
{
|
Datasource.Add(modal.Data);
|
ParameterManager.SaveCommonParameter(Datasource);
|
}
|
else
|
{
|
ParameterManager.SaveCommonParameter(Datasource);
|
}
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
if (isUpdate)
|
{
|
log.Error("Edit Data Failed.", ex);
|
MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.EditFailed")}: {ex.Message}");
|
}
|
else
|
{
|
log.Error("Add Data Failed.", ex);
|
MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.AddFailed")}: {ex.Message}");
|
}
|
}
|
}
|
|
/// <summary>
|
/// 批量删除
|
/// </summary>
|
public void DeleteBatch()
|
{
|
try
|
{
|
var count = Datasource.Where(d => d.IsSelected).Count();
|
if (count <= 0)
|
{
|
ToastHelper.Warning(this, this.lang("HMI.NoDeleteData"));
|
return;
|
}
|
if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeletes", count))
|
== MessageBoxResult.OK)
|
{
|
var temp = Datasource.Where(d => !d.IsSelected).ToList();
|
ParameterManager.SaveCommonParameter(temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete Batch Data Failed.", ex);
|
ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.DeleteFailed")}: {ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 删除参数
|
/// </summary>
|
/// <param name="data"></param>
|
private void DeleteData(ParameterData data)
|
{
|
try
|
{
|
if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeleteSingle", data.Name))
|
== MessageBoxResult.OK)
|
{
|
int index = Datasource.IndexOf(data);
|
if (index < 0)
|
{
|
ToastHelper.Error(this, this.lang("App.ParameterException"));
|
return;
|
}
|
var temp = XmlHelper.DeepClone(Datasource);
|
temp.RemoveAt(index);
|
ParameterManager.SaveCommonParameter(temp);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Delete Parameter Failed.", ex);
|
ToastHelper.Error(this, $"{this.lang("App.DeleteFailed")}: {ex.Message}");
|
return;
|
}
|
}
|
|
/// <summary>
|
/// 导出数据
|
/// </summary>
|
private void ExportData()
|
{
|
try
|
{
|
SaveFileDialog sfd = new SaveFileDialog();
|
|
sfd.Filter = "";
|
sfd.DefaultExt = "xls";
|
sfd.FileName = this.lang("Pm.Setting.Title");
|
if (sfd.ShowDialog() == true)
|
{
|
string targetPath = sfd.FileName;
|
ExcelHelper.ExportExcel(targetPath, Datasource);
|
ToastHelper.Success(Window.GetWindow(this), this.lang("App.ExportSuccess"));
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Export Data Failed.", ex);
|
MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}");
|
}
|
}
|
|
private void ImportData()
|
{
|
try
|
{
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
openFileDialog.Filter = "execl(*.xlsx;*.xls)|*.xlsx;*.xls";
|
openFileDialog.Title = this.lang("App.SelectFile");
|
openFileDialog.Multiselect = false;
|
if (openFileDialog.ShowDialog() == true)
|
{
|
List<ParameterData> datas = ExcelHelper.ReadFromExcel<ParameterData>(openFileDialog.FileName);
|
ParameterManager.SaveCommonParameter(datas);
|
LoadData();
|
}
|
}
|
catch (Exception ex)
|
{
|
log.Error("Export Data Failed.", ex);
|
MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}");
|
}
|
}
|
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
{
|
LoadData();
|
Loaded -= UserControl_Loaded;
|
}
|
|
}
|
}
|