From 639cae64dd2fb5b19082a0486608c5b3066d4e78 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 12 Dec 2017 19:25:15 +0200 Subject: Working on machine studio. --- .../ViewModels/AddressesViewVM.cs | 14 -- .../ViewModels/DBViewModels/AddressesViewVM.cs | 14 ++ .../ViewModels/DBViewModels/DbTableViewModel.cs | 215 +++++++++++++++++++++ .../ViewModels/DBViewModels/DialogOpenMode.cs | 14 ++ .../ViewModels/DBViewModels/MachinesViewVM.cs | 21 ++ .../ViewModels/DBViewModels/MultiComboVM.cs | 25 +++ .../ViewModels/DBViewModels/OrganizationsViewVM.cs | 26 +++ .../ViewModels/DBViewModels/UsersViewVM.cs | 68 +++++++ .../ViewModels/EntityViewModel.cs | 31 +++ .../ViewModels/MachinesViewVM.cs | 21 -- .../ViewModels/OrganizationsViewVM.cs | 26 --- 11 files changed, 414 insertions(+), 61 deletions(-) delete mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/AddressesViewVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs create mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/EntityViewModel.cs delete mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/MachinesViewVM.cs delete mode 100644 Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/OrganizationsViewVM.cs (limited to 'Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels') diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/AddressesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/AddressesViewVM.cs deleted file mode 100644 index 6f10a0102..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/AddressesViewVM.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DAL.Observables; - -namespace Tango.MachineStudio.UI.ViewModels -{ - public class AddressesViewVM : DbTableViewModel
- { - - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs new file mode 100644 index 000000000..009de0139 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/AddressesViewVM.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.DAL.Observables; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public class AddressesViewVM : DbTableViewModel
+ { + + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs new file mode 100644 index 000000000..5ec0e06de --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DbTableViewModel.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Commands; +using Tango.DAL.Observables; +using Tango.MachineStudio.UI.Managers; +using Tango.SharedUI; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public abstract class DbTableViewModel : ViewModel where T : IObservableEntity + { + private T _editEntity; + /// + /// Gets or sets the edit entity. + /// + public T EditEntity + { + get { return _editEntity; } + set { _editEntity = value; RaisePropertyChangedAuto(); } + } + + private DialogOpenMode _dialogOpenMode; + /// + /// Gets or sets the dialog open mode. + /// + public DialogOpenMode DialogOpenMode + { + get { return _dialogOpenMode; } + set { _dialogOpenMode = value; RaisePropertyChangedAuto(); } + } + + private bool _isDialogOpen; + /// + /// Gets or sets a value indicating whether this instance is dialog open. + /// + public bool IsDialogOpen + { + get { return _isDialogOpen; } + set { _isDialogOpen = value; RaisePropertyChangedAuto(); } + } + + private ObservablesEntitiesAdapter _adapter; + /// + /// Gets or sets the DB adapter. + /// + public ObservablesEntitiesAdapter Adapter + { + get { return _adapter; } + set { _adapter = value; RaisePropertyChangedAuto(); } + } + + private T _selectedEntity; + /// + /// Gets or sets the selected entity. + /// + public T SelectedEntity + { + get { return _selectedEntity; } + set { _selectedEntity = value; RaisePropertyChangedAuto(); } + } + + private String _filter; + /// + /// Gets or sets the search filter. + /// + public String Filter + { + get { return _filter; } + set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(value); } + } + + /// + /// Gets or sets the dialog OK command. + /// + public RelayCommand DialogOKCommand { get; set; } + + /// + /// Gets or sets the dialog cancel command. + /// + public RelayCommand DialogCancelCommand { get; set; } + + /// + /// Gets or sets the add command. + /// + public RelayCommand AddCommand { get; set; } + + /// + /// Gets or sets the edit command. + /// + public RelayCommand EditCommand { get; set; } + + /// + /// Gets or sets the delete command. + /// + public RelayCommand DeleteCommand { get; set; } + + /// + /// Initializes a new instance of the class. + /// + public DbTableViewModel() : base() + { + Adapter = App.DbAdapter; + + AddCommand = new RelayCommand(OnAdd); + EditCommand = new RelayCommand(OnEdit); + DeleteCommand = new RelayCommand(OnDelete); + DialogOKCommand = new RelayCommand(() => OnDialogOKPressed(DialogOpenMode, EditEntity)); + DialogCancelCommand = new RelayCommand(() => OnDialogCancelPressed(DialogOpenMode, EditEntity)); + + IsDialogOpen = false; + } + + /// + /// Called when delete command invoked. + /// + protected virtual void OnDelete() + { + SelectedEntity.Deleted = true; + Adapter.SaveChanges(); + } + + /// + /// Called when edit command invoked. + /// + protected virtual void OnEdit() + { + DialogOpenMode = DialogOpenMode.Editing; + EditEntity = GetEditableEntity(DialogOpenMode); + DialogsManager.ShowDialog(DialogOpenMode, this); + IsDialogOpen = true; + } + + /// + /// Called when add command invoked. + /// + protected virtual void OnAdd() + { + DialogOpenMode = DialogOpenMode.Adding; + EditEntity = GetEditableEntity(DialogOpenMode); + DialogsManager.ShowDialog(DialogOpenMode, this); + IsDialogOpen = true; + } + + /// + /// Called when dialog closes with OK button. + /// + /// The mode. + protected virtual void OnDialogOKPressed(DialogOpenMode mode, T entity) + { + if (mode == DialogOpenMode.Editing) + { + entity.ShallowCopyTo(SelectedEntity); + entity = SelectedEntity; + } + + OnBeforeEntitySave(mode, entity); + + entity.Save(Adapter); + Adapter.SaveChanges(); + IsDialogOpen = false; + SelectedEntity = EditEntity; + } + + /// + /// Called when [before entity save]. + /// + /// The mode. + /// The entity. + protected virtual void OnBeforeEntitySave(DialogOpenMode mode,T entity) + { + + } + + /// + /// Called when dialog closes with cancel button. + /// + /// The mode. + protected virtual void OnDialogCancelPressed(DialogOpenMode mode, T entity) + { + IsDialogOpen = false; + } + + /// + /// Gets the editable entity. + /// + /// The mode. + /// + private T GetEditableEntity(DialogOpenMode mode) + { + if (mode == DialogOpenMode.Adding) + { + var newEntity = Activator.CreateInstance(); + InitializeEntity(newEntity); + return newEntity; + } + else + { + return SelectedEntity.ShallowClone(); + } + } + + protected virtual void OnFilterChanged(String filter) + { + + } + + protected virtual void InitializeEntity(T entity) + { + + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs new file mode 100644 index 000000000..9c6dbe807 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/DialogOpenMode.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public enum DialogOpenMode + { + Editing, + Adding, + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs new file mode 100644 index 000000000..c008f1124 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MachinesViewVM.cs @@ -0,0 +1,21 @@ +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.SharedUI; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public class MachinesViewVM : DbTableViewModel + { + protected override void InitializeEntity(Machine entity) + { + base.InitializeEntity(entity); + entity.ProductionDate = DateTime.Now; + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs new file mode 100644 index 000000000..dc3488282 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/MultiComboVM.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.SharedUI; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public class MultiComboVM : EntityViewModel + { + public MultiComboVM(T entity) : base(entity) + { + + } + + private bool _isSelected; + + public bool IsSelected + { + get { return _isSelected; } + set { _isSelected = value; RaisePropertyChangedAuto(); } + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs new file mode 100644 index 000000000..6a2fd73df --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/OrganizationsViewVM.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.DAL.Observables; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public class OrganizationsViewVM : DbTableViewModel + { + public OrganizationsViewVM() : base() + { + + } + + protected override void OnFilterChanged(string filter) + { + Adapter.OrganizationsViewSource.Filter = (x) => + { + var org = x as Organization; + return org.Name.Contains(filter); + }; + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs new file mode 100644 index 000000000..22ddef4e0 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/DBViewModels/UsersViewVM.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.DAL.Observables; + +namespace Tango.MachineStudio.UI.ViewModels.DBViewModels +{ + public class UsersViewVM : DbTableViewModel + { + private ObservableCollection> _selectedRoles; + public ObservableCollection> SelectedRoles + { + get { return _selectedRoles; } + set { _selectedRoles = value; RaisePropertyChangedAuto(); } + } + + public UsersViewVM() : base() + { + SelectedRoles = new ObservableCollection>(); + } + + protected override void OnEdit() + { + SelectedRoles = Adapter.Roles.Select(x => new MultiComboVM(x)).ToObservableCollection(); + + foreach (var role in SelectedRoles) + { + if (SelectedEntity.UsersRoles.ToList().Exists(x => x.Role == role.Entity && !x.Deleted)) + { + role.IsSelected = true; + } + } + + base.OnEdit(); + } + + protected override void OnBeforeEntitySave(DialogOpenMode mode, User user) + { + base.OnBeforeEntitySave(mode, user); + + foreach (var role in SelectedRoles) + { + var userRole = user.UsersRoles.SingleOrDefault(x => x.Role == role.Entity); + + if (userRole != null) + { + userRole.Deleted = !role.IsSelected; + } + else + { + if (role.IsSelected) + { + user.UsersRoles.Add(new UsersRole() + { + Role = role.Entity, + User = user, + RoleGuid = role.Entity.Guid, + UserGuid = user.Guid + }); + } + } + } + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/EntityViewModel.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/EntityViewModel.cs new file mode 100644 index 000000000..fff03a1db --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/EntityViewModel.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Commands; +using Tango.SharedUI; + +namespace Tango.MachineStudio.UI.ViewModels +{ + public class EntityViewModel : ViewModel + { + private T _entity; + + public T Entity + { + get { return _entity; } + set { _entity = value; RaisePropertyChanged(nameof(Entity)); } + } + + public EntityViewModel() : base() + { + + } + + public EntityViewModel(T entity) : this() + { + Entity = entity; + } + } +} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/MachinesViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/MachinesViewVM.cs deleted file mode 100644 index ce200ad8b..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/MachinesViewVM.cs +++ /dev/null @@ -1,21 +0,0 @@ -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.SharedUI; - -namespace Tango.MachineStudio.UI.ViewModels -{ - public class MachinesViewVM : DbTableViewModel - { - protected override void InitializeEntity(Machine entity) - { - base.InitializeEntity(entity); - entity.ProductionDate = DateTime.Now; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/OrganizationsViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/OrganizationsViewVM.cs deleted file mode 100644 index 3fce16065..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineDesigner.UI/ViewModels/OrganizationsViewVM.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DAL.Observables; - -namespace Tango.MachineStudio.UI.ViewModels -{ - public class OrganizationsViewVM : DbTableViewModel - { - public OrganizationsViewVM() : base() - { - - } - - protected override void OnFilterChanged(string filter) - { - Adapter.OrganizationsViewSource.Filter = (x) => - { - var org = x as Organization; - return org.Name.Contains(filter); - }; - } - } -} -- cgit v1.3.1