Push Changes from other Github
This commit is contained in:
@@ -1,377 +0,0 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Heisig.HMI.AdsManager;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Common;
|
||||
using InfineonHMI.Common;
|
||||
using TcEventLoggerAdsProxyLib;
|
||||
|
||||
namespace InfineonHMI;
|
||||
|
||||
public sealed partial class MachineOverviewPageVM : ObservableObject, IRecipient<NavigateMessage>, IDisposable
|
||||
{
|
||||
|
||||
[ObservableProperty] private StringControlButtonVM dummyStringVM;
|
||||
|
||||
[ObservableProperty] private Page currentDetailPage;
|
||||
|
||||
[ObservableProperty] private PackMLControlVM machinePackMLControlVM;
|
||||
|
||||
public bool CanUserChangePageAlignment
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
|
||||
public bool CanUserChangePageEtching1
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageEtching2
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageHighVoltage
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageHotCoolplate
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageKukaRobot
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageMediaCabinet
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageNIOStation
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageProductionOverview
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageReceipe
|
||||
{
|
||||
get { return currentUser.UserLevel == 100; }
|
||||
}
|
||||
public bool CanUserChangePageTrayFeeder
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangeMachineState
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
|
||||
|
||||
private readonly IAdsManager _adsManager;
|
||||
private readonly IConfiguration _config;
|
||||
|
||||
private User currentUser;
|
||||
// Last active event
|
||||
[ObservableProperty] private string currentActiveEvent = "";
|
||||
|
||||
// Empty page
|
||||
private readonly Page _emptyPage;
|
||||
|
||||
// Last navigate message
|
||||
private readonly Stack<NavigateMessage> _messageStack = new();
|
||||
NavigateMessage? _currentMessage;
|
||||
|
||||
// Hot Coolplate page view model
|
||||
HotCoolPlatePageVM? _hotCoolplatePageVM;
|
||||
|
||||
AlignmentStationPageVM? _alignmentStationPageVM;
|
||||
|
||||
EtchingStation1PageVM? _etchingStation1PageVm;
|
||||
|
||||
EtchingStation2PageVM? _etchingStation2PageVm;
|
||||
|
||||
HighVoltageStationPageVM? _highVoltageStationPageVm;
|
||||
|
||||
MediaCabinetPageVM? _mediaCabinetPageVM;
|
||||
|
||||
NIOStationPageVM? _nioStationPageVm;
|
||||
|
||||
TrayFeederPageVM? _trayFeederPageVm;
|
||||
|
||||
private ProductionOverviewPageVM? _prodVM;
|
||||
|
||||
private MainWindowVM _mainVm;
|
||||
|
||||
// Kuka Robot page view model
|
||||
KukaRobotPageVM? _kukaRobotPageVM;
|
||||
|
||||
public MachineOverviewPageVM()
|
||||
{
|
||||
// default ctor
|
||||
MachinePackMLControlVM = new();
|
||||
MachinePackMLControlVM.STitle = "Betriebszustand\n Gesamtanlage";
|
||||
|
||||
currentUser = Users.getCurrentUser();
|
||||
}
|
||||
public MachineOverviewPageVM(IAdsManager adsManager, IConfiguration config,MainWindowVM mainVm, ProductionOverviewPageVM prodVm, TcEventLogger eventLogger)
|
||||
{
|
||||
_adsManager = adsManager;
|
||||
_config = config;
|
||||
_prodVM = prodVm;
|
||||
_mainVm = mainVm;
|
||||
// Create dummy string
|
||||
DummyStringVM = new StringControlButtonVM();
|
||||
|
||||
currentUser = Users.getCurrentUser();
|
||||
MachinePackMLControlVM = new(_adsManager, "GVL_SCADA.stMachine.stMachineCmds");
|
||||
|
||||
MachinePackMLControlVM.STitle = "Betriebszustand\n Gesamtanlage";
|
||||
// Create empty page
|
||||
_emptyPage = new();
|
||||
|
||||
CurrentDetailPage = _emptyPage;
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
_messageStack.Push(_currentMessage);
|
||||
|
||||
WeakReferenceMessenger.Default.Register<NavigateMessage>(this);
|
||||
|
||||
//CanUserChangePageAlignment = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageEtching1 = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageEtching2 = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageHighVoltage = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageHotCoolplate = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageKukaRobot = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageMediaCabinet = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageNIOStation = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageProductionOverview = currentUser.UserLevel > 50;
|
||||
//CanUserChangePageReceipe = currentUser.UserLevel == 100;
|
||||
//CanUserChangePageTrayFeeder = currentUser.UserLevel > 50;
|
||||
//CanUserChangeMachineState = currentUser.UserLevel > 50;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[RelayCommand]
|
||||
public void TrayfeederPageClicked()
|
||||
{
|
||||
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(TrayFeederPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void AlignerPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(AlignmentStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching1PageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(EtchingStation1Page));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching2PageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(EtchingStation2Page));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void HVTestPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(HighVoltageStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void HotCoolplatePageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(HotCoolPlatePage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void NIOStationPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(NIOStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
[RelayCommand]
|
||||
public void KukaPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(KukaRobotPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void MediaCabinetPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(MediaCabinetPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
// Only use for forward traversal!
|
||||
public void Receive(NavigateMessage message)
|
||||
{
|
||||
// Only change page if its a new page type
|
||||
if (CurrentDetailPage.GetType() == message.type)
|
||||
return;
|
||||
|
||||
// Push current message
|
||||
if (_currentMessage != null)
|
||||
_messageStack.Push(_currentMessage);
|
||||
|
||||
// Save current message for later push
|
||||
_currentMessage = message;
|
||||
|
||||
// Set can navigate back
|
||||
|
||||
Navigate(message);
|
||||
}
|
||||
|
||||
private void Navigate(NavigateMessage message)
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
|
||||
|
||||
// Create new page
|
||||
switch (message.type.Name)
|
||||
{
|
||||
case nameof(TrayFeederPage):
|
||||
if (_trayFeederPageVm == null)
|
||||
_trayFeederPageVm = new(_adsManager, "GVL_SCADA.stMachine"); //In and Out ist set directly in ViewModel
|
||||
|
||||
TrayFeederPage trayFeederPage = new() { DataContext = _trayFeederPageVm };
|
||||
CurrentDetailPage = trayFeederPage;
|
||||
break;
|
||||
|
||||
case nameof(AlignmentStationPage):
|
||||
// Create seetings page view model only once
|
||||
if (_alignmentStationPageVM == null)
|
||||
_alignmentStationPageVM = new(_adsManager, "GVL_SCADA.stMachine.stAligner");
|
||||
|
||||
AlignmentStationPage settingsPage = new() { DataContext = _alignmentStationPageVM };
|
||||
CurrentDetailPage = settingsPage;
|
||||
break;
|
||||
|
||||
case nameof(EtchingStation1Page):
|
||||
if (_etchingStation1PageVm == null)
|
||||
_etchingStation1PageVm = new(_adsManager, "GVL_SCADA.stMachine.stEtcher1");
|
||||
|
||||
EtchingStation1Page etchingStation1Page = new() { DataContext = _etchingStation1PageVm };
|
||||
CurrentDetailPage = etchingStation1Page;
|
||||
break;
|
||||
|
||||
case nameof(EtchingStation2Page):
|
||||
if (_etchingStation2PageVm == null)
|
||||
_etchingStation2PageVm = new(_adsManager, "GVL_SCADA.stMachine.stEtcher2");
|
||||
|
||||
EtchingStation2Page etchingStation2Page = new() { DataContext = _etchingStation2PageVm };
|
||||
CurrentDetailPage = etchingStation2Page;
|
||||
break;
|
||||
|
||||
case nameof(HighVoltageStationPage):
|
||||
if (_highVoltageStationPageVm == null)
|
||||
_highVoltageStationPageVm = new(_adsManager, "GVL_SCADA.stMachine.stHVTester"); // Hot/Cold is Set directly in VM
|
||||
|
||||
HighVoltageStationPage highVoltageStationPage = new() { DataContext = _highVoltageStationPageVm };
|
||||
CurrentDetailPage = highVoltageStationPage;
|
||||
break;
|
||||
|
||||
case nameof(HotCoolPlatePage):
|
||||
if (_hotCoolplatePageVM == null)
|
||||
_hotCoolplatePageVM = new(_adsManager, "GVL_SCADA.stMachine"); //".stHotplate /.stCoolplate is set directly in VM
|
||||
|
||||
HotCoolPlatePage hotCoolPlatePage = new() {DataContext = _hotCoolplatePageVM };
|
||||
CurrentDetailPage = hotCoolPlatePage;
|
||||
break;
|
||||
|
||||
case nameof(NIOStationPage):
|
||||
if (_nioStationPageVm == null)
|
||||
_nioStationPageVm = new(_adsManager, "GVL_SCADA.stMachine.stNOK");
|
||||
|
||||
NIOStationPage nIOStationPage = new() { DataContext = _nioStationPageVm };
|
||||
CurrentDetailPage = nIOStationPage;
|
||||
break;
|
||||
|
||||
case nameof(KukaRobotPage):
|
||||
// Create page view model only once
|
||||
if (_kukaRobotPageVM == null)
|
||||
_kukaRobotPageVM = new(_adsManager); // Variablenames are set directly in Viewmodel
|
||||
|
||||
KukaRobotPage kukaRobotPage = new() { DataContext = _kukaRobotPageVM };
|
||||
CurrentDetailPage = kukaRobotPage;
|
||||
break;
|
||||
|
||||
case nameof(MediaCabinetPage):
|
||||
if (_mediaCabinetPageVM == null)
|
||||
_mediaCabinetPageVM = new(_adsManager, "GVL_SCADA.stMachine.stMediaCabinet"); //TODO not Implemented on PLC yet
|
||||
|
||||
MediaCabinetPage mediaCabinetPage = new() { DataContext= _mediaCabinetPageVM };
|
||||
CurrentDetailPage = mediaCabinetPage;
|
||||
break;
|
||||
|
||||
default:
|
||||
CurrentDetailPage = new Page();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void AckAlarms()
|
||||
{
|
||||
_adsManager.WriteValue("GVL_SCADA.stConfirmAlarmsBtn.xRequest", true);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
|
||||
DummyStringVM.Dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,6 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using HMIToolkit;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Heisig.HMI.AdsManager;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using TwinCAT.TypeSystem;
|
||||
using System.Collections.ObjectModel;
|
||||
using Common;
|
||||
using InfineonHMI.Model;
|
||||
|
||||
namespace InfineonHMI;
|
||||
|
||||
|
||||
177
uniper_hmi/UniperHMI/Pages/ViewModels/OverviewPageVM.cs
Normal file
177
uniper_hmi/UniperHMI/Pages/ViewModels/OverviewPageVM.cs
Normal file
@@ -0,0 +1,177 @@
|
||||
using Common;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Heisig.HMI.AdsManager;
|
||||
using InfineonHMI.Common;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
namespace InfineonHMI;
|
||||
|
||||
public sealed partial class OverviewPageVM : ObservableValidator, IDisposable
|
||||
{
|
||||
[ObservableProperty] private PackMLControlVM machinePackMLControlVM;
|
||||
|
||||
private User currentUser;
|
||||
private MainWindowVM _mainVm;
|
||||
private readonly IAdsManager _adsManager;
|
||||
private readonly IConfiguration _config;
|
||||
|
||||
public bool CanUserChangePageAlignment
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
|
||||
public bool CanUserChangePageEtching1
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageEtching2
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageHighVoltage
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageHotCoolplate
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageKukaRobot
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageMediaCabinet
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageNIOStation
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageProductionOverview
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangePageReceipe
|
||||
{
|
||||
get { return currentUser.UserLevel == 100; }
|
||||
}
|
||||
public bool CanUserChangePageTrayFeeder
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
public bool CanUserChangeMachineState
|
||||
{
|
||||
get { return currentUser.UserLevel > 50; }
|
||||
}
|
||||
|
||||
public OverviewPageVM()
|
||||
{
|
||||
// default ctor
|
||||
MachinePackMLControlVM = new();
|
||||
MachinePackMLControlVM.STitle = "Betriebszustand\n Gesamtanlage";
|
||||
|
||||
currentUser = Users.getCurrentUser();
|
||||
}
|
||||
|
||||
public OverviewPageVM(IAdsManager adsManager, string variableName)
|
||||
{
|
||||
_adsManager = adsManager;
|
||||
currentUser = Users.getCurrentUser();
|
||||
MachinePackMLControlVM = new(_adsManager, "GVL_SCADA.stMachine.stMachineCmds");
|
||||
|
||||
MachinePackMLControlVM.STitle = "Betriebszustand\n Gesamtanlage";
|
||||
}
|
||||
|
||||
|
||||
[RelayCommand]
|
||||
public void TrayfeederPageClicked()
|
||||
{
|
||||
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(TrayFeederPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void AlignerPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(AlignmentStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching1PageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(EtchingStation1Page));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching2PageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(EtchingStation2Page));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void HVTestPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(HighVoltageStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void HotCoolplatePageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(HotCoolPlatePage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void NIOStationPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(NIOStationPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
[RelayCommand]
|
||||
public void KukaPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(KukaRobotPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void MediaCabinetPageClicked()
|
||||
{
|
||||
NavigateMessage message = new("", typeof(ProductionOverviewPage));
|
||||
NavigateMessage nextMessage = new("", typeof(MediaCabinetPage));
|
||||
this.Dispose();
|
||||
_mainVm?.NavigateFromOuterPage(message, nextMessage);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,308 +3,408 @@ using CommunityToolkit.Mvvm.Input;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
using Heisig.HMI.AdsManager;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using InfineonHMI.Common;
|
||||
using TcEventLoggerAdsProxyLib;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace InfineonHMI;
|
||||
|
||||
public sealed partial class ProductionOverviewPageVM : ObservableObject, IRecipient<NavigateMessage>, IDisposable
|
||||
public sealed partial class ProductionOverviewPageVM : ObservableObject, IRecipient<NavigateMessage>, IDisposable, INotifyPropertyChanged
|
||||
{
|
||||
|
||||
[ObservableProperty] private StringControlButtonVM dummyStringVM;
|
||||
[ObservableProperty] private StringControlButtonVM dummyStringVM;
|
||||
|
||||
[ObservableProperty] private Page currentDetailPage;
|
||||
[ObservableProperty] private Page currentDetailPage;
|
||||
|
||||
[ObservableProperty] private bool canNavigateBack;
|
||||
[ObservableProperty] private bool canNavigateBack;
|
||||
|
||||
private readonly IAdsManager _adsManager;
|
||||
private readonly IConfiguration _config;
|
||||
private readonly TcEventLogger _eventlogger;
|
||||
private readonly IAdsManager _adsManager;
|
||||
private readonly IConfiguration _config;
|
||||
private readonly TcEventLogger _eventlogger;
|
||||
|
||||
private User currentUser;
|
||||
private User currentUser;
|
||||
|
||||
// Last active event
|
||||
[ObservableProperty] private string currentActiveEvent = "";
|
||||
// Last active event
|
||||
[ObservableProperty] private string currentActiveEvent = "";
|
||||
|
||||
private readonly object _lock = new();
|
||||
private readonly object _lock = new();
|
||||
|
||||
// Empty page
|
||||
private readonly Page _emptyPage;
|
||||
// Empty page
|
||||
private readonly Page _emptyPage;
|
||||
|
||||
// Last navigate message
|
||||
private readonly Stack<NavigateMessage> _messageStack = new();
|
||||
NavigateMessage? _currentMessage;
|
||||
|
||||
// Hot Coolplate page view model
|
||||
HotCoolPlatePageVM? _hotCoolplatePageVM;
|
||||
// Last navigate message
|
||||
private readonly Stack<NavigateMessage> _messageStack = new();
|
||||
NavigateMessage? _currentMessage;
|
||||
|
||||
AlignmentStationPageVM? _alignmentStationPageVM;
|
||||
// Hot Coolplate page view model
|
||||
HotCoolPlatePageVM? _hotCoolplatePageVM;
|
||||
|
||||
EtchingStation1PageVM? _etchingStation1PageVm;
|
||||
AlignmentStationPageVM? _alignmentStationPageVM;
|
||||
|
||||
EtchingStation2PageVM? _etchingStation2PageVm;
|
||||
EtchingStation1PageVM? _etchingStation1PageVm;
|
||||
|
||||
HighVoltageStationPageVM? _highVoltageStationPageVm;
|
||||
EtchingStation2PageVM? _etchingStation2PageVm;
|
||||
|
||||
MediaCabinetPageVM? _mediaCabinetPageVM;
|
||||
HighVoltageStationPageVM? _highVoltageStationPageVm;
|
||||
|
||||
NIOStationPageVM? _nioStationPageVm;
|
||||
MediaCabinetPageVM? _mediaCabinetPageVM;
|
||||
|
||||
TrayFeederPageVM? _trayFeederPageVm;
|
||||
NIOStationPageVM? _nioStationPageVm;
|
||||
|
||||
TrayFeederPageVM? _trayFeederPageVm;
|
||||
|
||||
// Kuka Robot page view model
|
||||
KukaRobotPageVM? _kukaRobotPageVM;
|
||||
OverviewPageVM? _overviewPageVM;
|
||||
|
||||
public ProductionOverviewPageVM()
|
||||
{
|
||||
// default ctor
|
||||
currentUser = Users.getCurrentUser();
|
||||
}
|
||||
public ProductionOverviewPageVM(IAdsManager adsManager, IConfiguration config, TcEventLogger eventLogger, NavigateMessage? message = null)
|
||||
{
|
||||
_adsManager = adsManager;
|
||||
_config = config;
|
||||
// Create dummy string
|
||||
DummyStringVM = new StringControlButtonVM();
|
||||
currentUser = Users.getCurrentUser();
|
||||
// Create empty page
|
||||
_emptyPage = new();
|
||||
public bool IsOverview
|
||||
{
|
||||
get => (OverviewPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
OverviewPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
CurrentDetailPage = _emptyPage;
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
_messageStack.Push(_currentMessage);
|
||||
public bool IsTrayFeeder
|
||||
{
|
||||
get => (TrayFeederPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if(value)
|
||||
TrayfeederPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
if (message != null)
|
||||
{
|
||||
Receive(message);
|
||||
}
|
||||
public bool IsAligner
|
||||
{
|
||||
get => (AlignmentStationPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
AlignerPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
WeakReferenceMessenger.Default.Register<NavigateMessage>(this);
|
||||
public bool IsHVTest
|
||||
{
|
||||
get => (HighVoltageStationPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
HVTestPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
public bool IsEtchingStation1
|
||||
{
|
||||
get => (EtchingStation1Page)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
Etching1PageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void TrayfeederPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["TrayFeederVarName"]!, typeof(TrayFeederPage));
|
||||
Receive(message);
|
||||
}
|
||||
public bool IsEtchingStation2
|
||||
{
|
||||
get => (EtchingStation2Page)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
Etching2PageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void AlignerPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["AlignerVarName"]!, typeof(AlignmentStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
public bool IsHotCoolPlate
|
||||
{
|
||||
get => (HotCoolPlatePage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
HotCoolplatePageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching1PageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["Etching1VarName"]!, typeof(EtchingStation1Page));
|
||||
Receive(message);
|
||||
}
|
||||
public bool IsKukaRobot
|
||||
{
|
||||
get => (KukaRobotPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
KukaPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void Etching2PageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["Etching2VarName"]!, typeof(EtchingStation2Page));
|
||||
Receive(message);
|
||||
}
|
||||
public bool IsNioStation
|
||||
{
|
||||
get => (NIOStationPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
NIOStationPageClicked();
|
||||
}
|
||||
}
|
||||
public bool IsMediaCabinet
|
||||
{
|
||||
get => (MediaCabinetPage)currentDetailPage != null;
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
MediaCabinetPageClicked();
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void HVTestPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["HVTestVarName"]!, typeof(HighVoltageStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
// Kuka Robot page view model
|
||||
KukaRobotPageVM? _kukaRobotPageVM;
|
||||
private bool isTrayFeeder;
|
||||
|
||||
[RelayCommand]
|
||||
public void HotCoolplatePageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["HotCoolplateVarName"]!, typeof(HotCoolPlatePage));
|
||||
Receive(message);
|
||||
}
|
||||
public ProductionOverviewPageVM()
|
||||
{
|
||||
// default ctor
|
||||
currentUser = Users.getCurrentUser();
|
||||
}
|
||||
public ProductionOverviewPageVM(IAdsManager adsManager, IConfiguration config, TcEventLogger eventLogger, NavigateMessage? message = null)
|
||||
{
|
||||
_adsManager = adsManager;
|
||||
_config = config;
|
||||
// Create dummy string
|
||||
DummyStringVM = new StringControlButtonVM();
|
||||
currentUser = Users.getCurrentUser();
|
||||
// Create empty page
|
||||
_emptyPage = new();
|
||||
|
||||
[RelayCommand]
|
||||
public void NIOStationPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["NIOStationVarName"]!, typeof(NIOStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
CurrentDetailPage = _emptyPage;
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
_messageStack.Push(_currentMessage);
|
||||
|
||||
if (message != null)
|
||||
{
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
WeakReferenceMessenger.Default.Register<NavigateMessage>(this);
|
||||
|
||||
[RelayCommand]
|
||||
public void KukaPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["KukaRobotVarName"]!, typeof(KukaRobotPage));
|
||||
Receive(message);
|
||||
}
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public void MediaCabinetPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["MediaCabinetVarName"]!, typeof(MediaCabinetPage));
|
||||
Receive(message);
|
||||
}
|
||||
[RelayCommand]
|
||||
public void TrayfeederPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["TrayFeederVarName"]!, typeof(TrayFeederPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
// Only use for forward traversal!
|
||||
public void Receive(NavigateMessage message)
|
||||
{
|
||||
// Only change page if its a new page type
|
||||
if (CurrentDetailPage.GetType() == message.type)
|
||||
return;
|
||||
[RelayCommand]
|
||||
public void AlignerPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["AlignerVarName"]!, typeof(AlignmentStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
// Push current message
|
||||
if (_currentMessage != null)
|
||||
_messageStack.Push(_currentMessage);
|
||||
[RelayCommand]
|
||||
public void Etching1PageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["Etching1VarName"]!, typeof(EtchingStation1Page));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
// Save current message for later push
|
||||
_currentMessage = message;
|
||||
[RelayCommand]
|
||||
public void Etching2PageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["Etching2VarName"]!, typeof(EtchingStation2Page));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
// Set can navigate back
|
||||
CanNavigateBack = true;
|
||||
[RelayCommand]
|
||||
public void HVTestPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["HVTestVarName"]!, typeof(HighVoltageStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
Navigate(message);
|
||||
}
|
||||
[RelayCommand]
|
||||
public void HotCoolplatePageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["HotCoolplateVarName"]!, typeof(HotCoolPlatePage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
public void NavigateFromOuterPage(NavigateMessage message)
|
||||
{
|
||||
_currentMessage = message;
|
||||
[RelayCommand]
|
||||
public void NIOStationPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["NIOStationVarName"]!, typeof(NIOStationPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
CanNavigateBack = true;
|
||||
Navigate(message);
|
||||
}
|
||||
[RelayCommand]
|
||||
public void OverviewPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["OverviewVarName"]!, typeof(OverviewPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
private void Navigate(NavigateMessage message)
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
[RelayCommand]
|
||||
public void KukaPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["KukaRobotVarName"]!, typeof(KukaRobotPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
// Create new page
|
||||
switch (message.type.Name)
|
||||
{
|
||||
case nameof(TrayFeederPage):
|
||||
if (_trayFeederPageVm == null)
|
||||
_trayFeederPageVm = new(_adsManager, "GVL_SCADA.stMachine"); //In and Out ist set directly in ViewModel
|
||||
[RelayCommand]
|
||||
public void MediaCabinetPageClicked()
|
||||
{
|
||||
_messageStack.Clear();
|
||||
_currentMessage = new NavigateMessage("", typeof(Page));
|
||||
NavigateMessage message = new(_config["MediaCabinetVarName"]!, typeof(MediaCabinetPage));
|
||||
Receive(message);
|
||||
}
|
||||
|
||||
TrayFeederPage trayFeederPage = new() { DataContext = _trayFeederPageVm };
|
||||
CurrentDetailPage = trayFeederPage;
|
||||
break;
|
||||
// Only use for forward traversal!
|
||||
public void Receive(NavigateMessage message)
|
||||
{
|
||||
// Only change page if its a new page type
|
||||
if (CurrentDetailPage.GetType() == message.type)
|
||||
return;
|
||||
|
||||
case nameof(AlignmentStationPage):
|
||||
// Create seetings page view model only once
|
||||
if (_alignmentStationPageVM == null)
|
||||
_alignmentStationPageVM = new(_adsManager, "GVL_SCADA.stMachine.stAligner");
|
||||
|
||||
AlignmentStationPage settingsPage = new() { DataContext = _alignmentStationPageVM };
|
||||
CurrentDetailPage = settingsPage;
|
||||
break;
|
||||
// Push current message
|
||||
if (_currentMessage != null)
|
||||
_messageStack.Push(_currentMessage);
|
||||
|
||||
case nameof(EtchingStation1Page):
|
||||
if (_etchingStation1PageVm == null)
|
||||
_etchingStation1PageVm = new(_adsManager, "GVL_SCADA.stMachine.stEtcher1");
|
||||
// Save current message for later push
|
||||
_currentMessage = message;
|
||||
|
||||
EtchingStation1Page etchingStation1Page = new() { DataContext = _etchingStation1PageVm };
|
||||
CurrentDetailPage = etchingStation1Page;
|
||||
break;
|
||||
// Set can navigate back
|
||||
CanNavigateBack = true;
|
||||
|
||||
case nameof(EtchingStation2Page):
|
||||
if (_etchingStation2PageVm == null)
|
||||
_etchingStation2PageVm = new(_adsManager, "GVL_SCADA.stMachine.stEtcher2");
|
||||
Navigate(message);
|
||||
}
|
||||
|
||||
EtchingStation2Page etchingStation2Page = new() { DataContext = _etchingStation2PageVm };
|
||||
CurrentDetailPage = etchingStation2Page;
|
||||
break;
|
||||
public void NavigateFromOuterPage(NavigateMessage message)
|
||||
{
|
||||
_currentMessage = message;
|
||||
|
||||
case nameof(HighVoltageStationPage):
|
||||
if (_highVoltageStationPageVm == null)
|
||||
_highVoltageStationPageVm = new(_adsManager, "GVL_SCADA.stMachine.stHVTester"); // Hot/Cold is Set directly in VM
|
||||
CanNavigateBack = true;
|
||||
Navigate(message);
|
||||
}
|
||||
|
||||
HighVoltageStationPage highVoltageStationPage = new() { DataContext = _highVoltageStationPageVm };
|
||||
CurrentDetailPage = highVoltageStationPage;
|
||||
break;
|
||||
private void Navigate(NavigateMessage message)
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
|
||||
case nameof(HotCoolPlatePage):
|
||||
if (_hotCoolplatePageVM == null)
|
||||
_hotCoolplatePageVM = new(_adsManager, "GVL_SCADA.stMachine"); //".stHotplate /.stCoolplate is set directly in VM
|
||||
// Create new page
|
||||
switch (message.type.Name)
|
||||
{
|
||||
case nameof(OverviewPage):
|
||||
_overviewPageVM ??= OverviewPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = OverviewPage.CreateView(_overviewPageVM);
|
||||
break;
|
||||
|
||||
HotCoolPlatePage hotCoolPlatePage = new() {DataContext = _hotCoolplatePageVM };
|
||||
CurrentDetailPage = hotCoolPlatePage;
|
||||
break;
|
||||
case nameof(TrayFeederPage):
|
||||
_trayFeederPageVm ??= TrayFeederPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = TrayFeederPage.CreateView(_trayFeederPageVm);
|
||||
break;
|
||||
|
||||
case nameof(NIOStationPage):
|
||||
if (_nioStationPageVm == null)
|
||||
_nioStationPageVm = new(_adsManager, "GVL_SCADA.stMachine.stNOK");
|
||||
case nameof(AlignmentStationPage):
|
||||
// Create seetings page view model only once
|
||||
|
||||
NIOStationPage nIOStationPage = new() { DataContext = _nioStationPageVm };
|
||||
CurrentDetailPage = nIOStationPage;
|
||||
break;
|
||||
_alignmentStationPageVM ??= AlignmentStationPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = AlignmentStationPage.CreateView(_alignmentStationPageVM);
|
||||
break;
|
||||
|
||||
case nameof(KukaRobotPage):
|
||||
// Create page view model only once
|
||||
if (_kukaRobotPageVM == null)
|
||||
_kukaRobotPageVM = new(_adsManager); // Variablenames are set directly in Viewmodel
|
||||
case nameof(EtchingStation1Page):
|
||||
|
||||
KukaRobotPage kukaRobotPage = new() { DataContext = _kukaRobotPageVM };
|
||||
CurrentDetailPage = kukaRobotPage;
|
||||
break;
|
||||
_etchingStation1PageVm ??= EtchingStation1Page.CreateModel(_adsManager);
|
||||
CurrentDetailPage = EtchingStation1Page.CreateView(_etchingStation1PageVm);
|
||||
break;
|
||||
|
||||
case nameof(MediaCabinetPage):
|
||||
if (_mediaCabinetPageVM == null)
|
||||
_mediaCabinetPageVM = new(_adsManager, "GVL_SCADA.stMachine.stMediaCabinet"); //TODO not Implemented on PLC yet
|
||||
case nameof(EtchingStation2Page):
|
||||
|
||||
MediaCabinetPage mediaCabinetPage = new() { DataContext= _mediaCabinetPageVM };
|
||||
CurrentDetailPage = mediaCabinetPage;
|
||||
break;
|
||||
_etchingStation2PageVm ??= EtchingStation2Page.CreateModel(_adsManager);
|
||||
CurrentDetailPage = EtchingStation2Page.CreateView(_etchingStation2PageVm);
|
||||
break;
|
||||
|
||||
default:
|
||||
CurrentDetailPage = new Page();
|
||||
break;
|
||||
}
|
||||
}
|
||||
case nameof(HighVoltageStationPage):
|
||||
|
||||
[RelayCommand]
|
||||
private void AckAlarms()
|
||||
{
|
||||
_adsManager.WriteValue("GVL_SCADA.stConfirmAlarmsBtn.xRequest", true);
|
||||
}
|
||||
_highVoltageStationPageVm ??= HighVoltageStationPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = HighVoltageStationPage.CreateView(_highVoltageStationPageVm);
|
||||
break;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
case nameof(HotCoolPlatePage):
|
||||
|
||||
DummyStringVM.Dispose();
|
||||
}
|
||||
_hotCoolplatePageVM ??= HotCoolPlatePage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = HotCoolPlatePage.CreateView(_hotCoolplatePageVM);
|
||||
break;
|
||||
|
||||
case nameof(NIOStationPage):
|
||||
|
||||
_nioStationPageVm ??= NIOStationPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = NIOStationPage.CreateView(_nioStationPageVm);
|
||||
break;
|
||||
|
||||
case nameof(KukaRobotPage):
|
||||
|
||||
// Create page view model only once
|
||||
_kukaRobotPageVM??= KukaRobotPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = KukaRobotPage.CreateView(_kukaRobotPageVM);
|
||||
break;
|
||||
|
||||
case nameof(MediaCabinetPage)://TODO not Implemented on PLC yet
|
||||
|
||||
_mediaCabinetPageVM ??= MediaCabinetPage.CreateModel(_adsManager);
|
||||
CurrentDetailPage = MediaCabinetPage.CreateView(_mediaCabinetPageVM);
|
||||
break;
|
||||
}
|
||||
|
||||
OnPropertyChanged(nameof(IsTrayFeeder));
|
||||
OnPropertyChanged(nameof(IsHVTest));
|
||||
OnPropertyChanged(nameof(IsAligner));
|
||||
OnPropertyChanged(nameof(IsEtchingStation1));
|
||||
OnPropertyChanged(nameof(IsEtchingStation2));
|
||||
OnPropertyChanged(nameof(IsHotCoolPlate));
|
||||
OnPropertyChanged(nameof(IsMediaCabinet));
|
||||
OnPropertyChanged(nameof(IsKukaRobot));
|
||||
OnPropertyChanged(nameof(IsNioStation));
|
||||
OnPropertyChanged(nameof(IsOverview));
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void AckAlarms()
|
||||
{
|
||||
_adsManager.WriteValue("GVL_SCADA.stConfirmAlarmsBtn.xRequest", true);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Dispose current pages viewmodel
|
||||
if (CurrentDetailPage.DataContext is IDisposable viewModel)
|
||||
{
|
||||
CurrentDetailPage.DataContext = null;
|
||||
viewModel.Dispose();
|
||||
}
|
||||
|
||||
DummyStringVM.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user