using HMI.Base; using HMI.Core.Util; using HMI.ParameterManage.Entity; using HMI.ParameterManage.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.Windows; using System.Windows.Controls; using System.Windows.Markup; namespace HMI.ParameterManage { /// /// UserControl1.xaml 的交互逻辑 /// public partial class ParameterSetting : PluginControl { private ObservableCollection datasource; public ObservableCollection Datasource { get => datasource; set { Set(ref datasource, value); } } 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; } } /// /// 加载数据 /// public void LoadData() { try { Datasource = ParameterManager.GetCommonParameter>() ?? new ObservableCollection(); } catch (Exception ex) { Datasource = new ObservableCollection(); log.Error("Refresh Data Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.RefreshFailed")}: {ex.Message}"); } } /// /// 打开新增或编辑窗口 /// /// 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) == 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}"); } } } /// /// 批量删除 /// 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}"); } } /// /// 删除参数 /// /// 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; } } /// /// 导出数据 /// 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 datas = ExcelHelper.ReadFromExcel(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; } } }