From 66d94b7757025c5d2f1a82428dc21f46efb604a6 Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Mon, 19 Apr 2021 21:26:35 +0300 Subject: MS. Adding Organization & Site to Statistics. --- .../ViewModels/JobRunsViewVM.cs | 137 +++++++++++++++++++-- 1 file changed, 129 insertions(+), 8 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs index e1876e87e..e0b644fcf 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs @@ -41,6 +41,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels public class JobRunsViewVM : ViewModel { private INotificationProvider _notification; + private List _organizations; private List _allMachines; private List _allUsers; private List _rmlsModels; @@ -77,11 +78,72 @@ namespace Tango.MachineStudio.Statistics.ViewModels } } - private SelectedObjectCollection _selectedMachines; + private SelectedObjectCollection _selectedOrganizations; /// /// Gets or sets the selected machines. Contains all available machines and selected machines. Binding to ComboBox Machines. /// - public SelectedObjectCollection SelectedMachines + public SelectedObjectCollection SelectedOrganizations + { + get { return _selectedOrganizations; } + set + { + _selectedOrganizations = value; + RaisePropertyChangedAuto(); + } + } + + private bool _IsEnabledSelectionSites; + + public bool IsEnabledSelectionSites + { + get { return _IsEnabledSelectionSites; } + set { _IsEnabledSelectionSites = value; + RaisePropertyChangedAuto(); + } + } + + private bool _allSelectedSites; + + public bool AllSelectedSites + { + get { return _allSelectedSites; } + set { _allSelectedSites = value; + RaisePropertyChangedAuto(); + } + } + + + private SelectedObjectCollection _selectedSites; + /// + /// Gets or sets the selected machines. Contains all available machines and selected machines. Binding to ComboBox Machines. + /// + public SelectedObjectCollection SelectedSites + { + get { return _selectedSites; } + set + { + _selectedSites = value; + RaisePropertyChangedAuto(); + } + } + + private bool _allSelectedMachines; + + public bool AllSelectedMachines + { + get { return _allSelectedMachines; } + set + { + _allSelectedMachines = value; + RaisePropertyChangedAuto(); + } + } + + private SelectedObjectCollection _selectedMachines; + /// + /// Gets or sets the selected machines. Contains all available machines and selected machines. Binding to ComboBox Machines. + /// + public SelectedObjectCollection SelectedMachines { get { return _selectedMachines; } set @@ -236,7 +298,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels { _notification = notificationProvider; JobRuns = new ObservableCollection(); - LoadJobRunsCommand = new RelayCommand(async () => await LoadJobRuns(), () => IsFree); + LoadJobRunsCommand = new RelayCommand(async () => await LoadJobRuns(), () => IsFree && SelectedMachines.Source.Count >0); ExportToExcelCommand = new RelayCommand(ExportToExcel, () => IsFree); LengthUpperValue = 10000.0; LengthLowerValue = 0.0; @@ -325,12 +387,32 @@ namespace Tango.MachineStudio.Statistics.ViewModels using (var db = ObservablesContext.CreateDefault()) { + + _organizations = await db.Organizations.Select(x => new OrganisationToSiteModel(){ Name = x.Name, Guid = x.Guid}).ToListAsync(); + foreach(var org in _organizations) + { + org.Sites = await db.Sites.Where(y => y.OrganizationGuid == org.Guid).Select(y => new SiteModel(){ Guid = y.Guid,Name = y.Name,}).ToListAsync(); + foreach(var site in org.Sites) + { + site.Machines = await db.Machines.Where(x => x.SiteGuid == site.Guid).Select(y => new MachineModel(){Guid = y.Guid,Name = y.Name,SerialNumber = y.SerialNumber}).ToListAsync(); + } + org.Machines = await db.Machines.Where(y=> y.OrganizationGuid == org.Guid).Select(y => new MachineModel() {Guid = y.Guid, Name = y.Name, SerialNumber = y.SerialNumber }).ToListAsync(); + } _allMachines = await db.Machines.ToListAsync(); _allUsers = await db.Users.Include(x => x.Contact).ToListAsync(); _rmlsModels = await db.Rmls.Select(x => new RmlModel() { Name = x.Name, Guid = x.Guid }).ToListAsync(); - SelectedMachines = new SelectedObjectCollection(_allMachines.ToObservableCollection(), new ObservableCollection()); - SelectedThreads = new SelectedObjectCollection(_rmlsModels.ToObservableCollection(), new ObservableCollection()); } + IsEnabledSelectionSites = false; + SelectedMachines = new SelectedObjectCollection(new ObservableCollection(), new ObservableCollection()); + SelectedThreads = new SelectedObjectCollection(_rmlsModels.ToObservableCollection(), new ObservableCollection()); + SelectedSites = new SelectedObjectCollection(new ObservableCollection(), new ObservableCollection()); + SelectedOrganizations = new SelectedObjectCollection(_organizations.ToObservableCollection(), _organizations.ToObservableCollection()); + SelectedOrganizations.SelectionChanged -= OnSelectedOrganizationsChanged; + SelectedOrganizations.SelectionChanged += OnSelectedOrganizationsChanged; + SelectedSites.SelectionChanged -= OnSelectedSitesChanged; + SelectedSites.SelectionChanged += OnSelectedSitesChanged; + AllSelectedSites = true; + AllSelectedMachines = true; } catch (Exception ex) { @@ -343,6 +425,46 @@ namespace Tango.MachineStudio.Statistics.ViewModels } } + + private void OnSelectedSitesChanged(object sender, EventArgs e) + { + if (SelectedSites.SynchedSource.Count > 0) + { + SelectedMachines = new SelectedObjectCollection(SelectedSites.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection(), SelectedSites.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection()); + } + else + { + SelectedMachines = new SelectedObjectCollection(SelectedOrganizations.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection(), SelectedOrganizations.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection()); + } + AllSelectedMachines = false; + AllSelectedMachines = true; + InvalidateRelayCommands(); + } + + private void OnSelectedOrganizationsChanged(object sender, EventArgs e) + { + if (SelectedOrganizations.SynchedSource.Count != SelectedOrganizations.Source.Count) + { + IsEnabledSelectionSites = true; + var selectedOrg = SelectedOrganizations.SynchedSource.ToList(); + SelectedSites = new SelectedObjectCollection(selectedOrg.SelectMany(x => x.Sites).ToObservableCollection(), selectedOrg.SelectMany(x => x.Sites).ToObservableCollection()); + SelectedSites.SelectionChanged -= OnSelectedSitesChanged; + SelectedSites.SelectionChanged += OnSelectedSitesChanged; + SelectedMachines = new SelectedObjectCollection(selectedOrg.SelectMany(x => x.Machines).ToObservableCollection(), selectedOrg.SelectMany(x => x.Machines).ToObservableCollection()); + AllSelectedSites = false; + AllSelectedSites = true; + } + else + { + SelectedSites = new SelectedObjectCollection(SelectedOrganizations.SynchedSource.SelectMany(x => x.Sites).ToObservableCollection(), SelectedOrganizations.SynchedSource.SelectMany(x => x.Sites).ToObservableCollection()); + AllSelectedSites = false; + IsEnabledSelectionSites = false; + SelectedMachines = new SelectedObjectCollection(SelectedOrganizations.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection(), SelectedOrganizations.SynchedSource.SelectMany(x => x.Machines).ToObservableCollection()); + } + AllSelectedMachines = false; + AllSelectedMachines = true; + InvalidateRelayCommands(); + } /// /// Loads the job runs by filters. @@ -354,7 +476,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels try { IsFree = false; - + using (var db = ObservablesContext.CreateDefault()) { DateTime startUtc = new DateTime(StartSelectedDate.Year, StartSelectedDate.Month, StartSelectedDate.Day, 0, 0, 0).ToUniversalTime(); @@ -482,8 +604,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels JobRuns = modelList.ToObservableCollection(); GenerateStatistics(); } - - + } catch (Exception ex) { -- cgit v1.3.1