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() { } }