using GalaSoft.MvvmLight.Ioc; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.DAL.Observables; using Tango.MachineStudio.Common.StudioApplication; using Tango.SharedUI; namespace Tango.MachineStudio.Developer.ViewModels { public class MainViewVM : ViewModel { public IStudioApplicationManager ApplicationManager { get; set; } public ObservablesEntitiesAdapter Adapter { get; set; } private Machine _selectedMachine; public Machine SelectedMachine { get { return _selectedMachine; } set { _selectedMachine = value; RaisePropertyChangedAuto(); OnMachineChanged(); InvalidateRelayCommands(); } } private List _liquidTypesRmls; public List LiquidTypesRmls { get { return _liquidTypesRmls; } set { _liquidTypesRmls = value; RaisePropertyChangedAuto(); } } private ObservableCollection _rmlProcessParametersTables; public ObservableCollection RmlProcessParametersTables { get { return _rmlProcessParametersTables; } set { _rmlProcessParametersTables = value; RaisePropertyChangedAuto(); } } private DBViewContextWrapper _selectedRML; public DBViewContextWrapper SelectedRML { get { return _selectedRML; } set { _selectedRML = value; RaisePropertyChangedAuto(); InvalidateLiquidFactorsAndProcessTables(); InvalidateRelayCommands(); } } private bool _isSideBarOpened; public bool IsSideBarOpened { get { return _isSideBarOpened; } set { _isSideBarOpened = value; RaisePropertyChangedAuto(); } } public RelayCommand EditMachineCommand { get; set; } public RelayCommand EditRMLCommand { get; set; } public RelayCommand ToggleSideBarCommand { get; set; } public MainViewVM() { IsSideBarOpened = true; } [PreferredConstructor] public MainViewVM(IStudioApplicationManager applicationManager) { Adapter = ObservablesEntitiesAdapter.Instance; EditMachineCommand = new RelayCommand(EditMachine, (x) => SelectedMachine != null); ApplicationManager = applicationManager; EditRMLCommand = new RelayCommand(EditRML, (x) => SelectedRML != null); ToggleSideBarCommand = new RelayCommand(() => IsSideBarOpened = !IsSideBarOpened); } private void EditRML() { ApplicationManager.RequestModule("Data Base", SelectedRML.EditEntity); } private void EditMachine() { ApplicationManager.RequestModule("Machine Designer", SelectedMachine); } private void OnMachineChanged() { InvalidateLiquidFactorsAndProcessTables(); } private void InvalidateLiquidFactorsAndProcessTables() { if (SelectedRML != null && SelectedMachine != null) { LiquidTypesRmls = SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => x.LiquidTypes).SelectMany(x => x.LiquidTypesRmls).Where(x => x.Rml.Guid == SelectedRML.EditEntity.Guid).ToList(); RmlProcessParametersTables = SelectedRML.EditEntity.RmlsProcessParametersTables.ToObservableCollection(); } } } }