using Aitex.Core.Util;
using Aitex.Core.Utilities;
using Caliburn.Micro;
using FurnaceUI.Models;
using MECF.Framework.Common.CommonData.EnumData;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Utilities;
using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
using MECF.Framework.UI.Client.CenterViews.Editors.Sequence;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Windows.Documents;
namespace FurnaceUI.Views.Editors
{
public class ScheduledMaintenanceMonitorViewModel : FurnaceUIViewModelBase
{
#region 构造函数
///
/// 构造函数
///
///
public ScheduledMaintenanceMonitorViewModel(ScheduleMaintenanceDataItem dataItem)
{
EditModel = CloneUtil.CloneObject(dataItem) as ScheduleMaintenanceDataItem;
EnumLoop.ForEach((item) =>
{
MaintenanceProcessingList.Add(item.ToString());
});
}
private bool _jobAutoStartCommandVisibility = false;
public bool JobAutoStartCommandVisibility
{
get => _jobAutoStartCommandVisibility;
set
{
_jobAutoStartCommandVisibility = value;
NotifyOfPropertyChange("JobAutoStartCommandVisibility");
}
}
private List _maintenanceProcessingList = new List();
public List MaintenanceProcessingList
{
get => _maintenanceProcessingList;
set
{
_maintenanceProcessingList = value;
NotifyOfPropertyChange("MaintenanceProcessingList");
}
}
#endregion
#region 属性 EditModel
///
/// EditModel
///
public ScheduleMaintenanceDataItem EditModel { get; set; }
#endregion
public bool IsEnable
{
get { return _isEnable; }
set
{
_isEnable = value;
NotifyOfPropertyChange("IsEnable");
}
}
private bool _isEnable;
#region 方法 CurrentValueChange
///
/// CurrentValueChange
///
public void CurrentValueChange()
{
IsEnable = !IsEnable;
}
#endregion
protected override void InvokeAfterUpdateProperty(Dictionary data)
{
if (EditModel != null && !string.IsNullOrEmpty(EditModel.MaintenanceProcessing) && EditModel.MaintenanceProcessing == MaintenanceProcessingCommandEnum.JobAutoStart.ToString())
{
JobAutoStartCommandVisibility = true;
}
else
{
EditModel.AssociationProcessRecipeName = "";
JobAutoStartCommandVisibility = false;
}
}
public void SelectProcessRecipe()
{
RecipeSelectDialogViewModel dialog = new RecipeSelectDialogViewModel();
dialog.DisplayName = "Select Recipe";
var recipeProvider = new RecipeProvider();
var processType = QueryDataClient.Instance.Service.GetConfig($"System.Recipe.SupportedProcessType");
if (processType == null)
{
processType = "Process";
}
var ProcessTypeFileList = new ObservableCollection();
string[] recipeProcessType = ((string)processType).Split(',');
var type = new ProcessTypeFileItem();
type.ProcessType = recipeProcessType[0];
var prefix = $"Furnace\\{recipeProcessType[0]}";
var recipes = recipeProvider.GetXmlRecipeList(prefix);
type.FileListByProcessType = RecipeSequenceTreeBuilder.BuildFileNode(prefix, "", false, recipes)[0].Files;
ProcessTypeFileList.Add(type);
dialog.ProcessTypeFileList = ProcessTypeFileList;
WindowManager wm = new WindowManager();
bool? bret = wm.ShowDialog(dialog);
if ((bool)bret)
{
EditModel.AssociationProcessRecipeName = dialog.DialogResult;
}
}
#region 方法 ClearCurrentValue
///
/// ClearCurrentValue
///
public void ClearCurrentValue()
{
if (EditModel != null)
{
EditModel.CurrentValue = 0;
}
}
#endregion
#region 方法 SetSave
public void SetSave()
{
this.TryClose(true);
}
#endregion
#region 方法 SetCancel
public void SetCancel()
{
TryClose();
}
#endregion
}
}