aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModelLocator.cs
blob: 70ae8a90ac9d4ebbf76cf5ceadd47b4b0af52922 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using Tango.Core.DI;
using Tango.MachineStudio.Developer.Navigation;
using Tango.MachineStudio.Developer.ViewModels;
using Tango.MachineStudio.Developer.Views;

namespace Tango.MachineStudio.Developer
{
    /// <summary>
    /// This class contains static references to all the view models in the
    /// application and provides an entry point for the bindings.
    /// </summary>
    public static class ViewModelLocator
    {
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        static ViewModelLocator()
        {
            TangoIOC.Default.Register<IMainView>(MainView.Instance);
            TangoIOC.Default.Register<MainViewVM>();
            TangoIOC.Default.Register<DeveloperNavigationManager, DeveloperNavigationManager>();
        }

        public static MainViewVM MainViewVM
        {
            get
            {
                return TangoIOC.Default.GetInstance<MainViewVM>();
            }
        }
    }
}
>; namespace Tango.MachineStudio.UI.ViewModels { public class ConnectedMachineViewVM : DialogViewVM { public enum ConnectedMachineVMResult { Cancel, Disconnect, UploadHardwareConfig, Reset, TurnOffHeaters } private IStudioApplicationManager _applicationManager; public IStudioApplicationManager ApplicationManager { get { return _applicationManager; } set { _applicationManager = value; RaisePropertyChangedAuto(); } } public ConnectedMachineVMResult Result { get; set; } private IDiagnosticsFrameProvider _diagnosticsFrameProvider; public IDiagnosticsFrameProvider DiagnosticsFrameProvider { get { return _diagnosticsFrameProvider; } set { _diagnosticsFrameProvider = value; RaisePropertyChangedAuto(); } } private String _totalMachineWorkTime; public String TotalMachineWorkTime { get { return _totalMachineWorkTime; } set { _totalMachineWorkTime = value; RaisePropertyChangedAuto(); } } private String _totalMachineMeters; public String TotalMachineMeters { get { return _totalMachineMeters; } set { _totalMachineMeters = value; RaisePropertyChangedAuto(); } } public RelayCommand DisconnectCommand { get; set; } public RelayCommand UploadHardwareConfigurationCommand { get; set; } public RelayCommand ResetCommand { get; set; } public RelayCommand TurnOffHeatersCommand { get; set; } public ConnectedMachineViewVM(IStudioApplicationManager application, IDiagnosticsFrameProvider frameProvider) { ApplicationManager = application; DisconnectCommand = new RelayCommand(() => AcceptResult(ConnectedMachineVMResult.Disconnect)); UploadHardwareConfigurationCommand = new RelayCommand(() => AcceptResult(ConnectedMachineVMResult.UploadHardwareConfig)); ResetCommand = new RelayCommand(() => AcceptResult(ConnectedMachineVMResult.Reset)); TurnOffHeatersCommand = new RelayCommand(() => AcceptResult(ConnectedMachineVMResult.TurnOffHeaters)); DiagnosticsFrameProvider = frameProvider; } private void AcceptResult(ConnectedMachineVMResult result) { Result = result; Accept(); } public override void OnShow() { base.OnShow(); LoadMachineCounters(); } private async void LoadMachineCounters() { try { TotalMachineMeters = "loading..."; TotalMachineWorkTime = "loading..."; using (ObservablesContext db = ObservablesContext.CreateDefault()) { var jobRuns = await db.JobRuns.Where(x => x.MachineGuid == ApplicationManager.Machine.Guid).Select(x => new { x.StartDate, x.EndDate, x.EndPosition }).ToListAsync(); TotalMachineWorkTime = TimeSpan.FromHours(jobRuns.Select(x => x.EndDate - x.StartDate).Sum(x => x.TotalHours)).ToStringUnlimitedHours(); int meters = (int)jobRuns.Select(x => x.EndPosition).Sum(); TotalMachineMeters = $"{meters.ToString("N0")} meters"; } } catch (Exception ex) { LogManager.Log(ex, "Error loading machine counters."); TotalMachineMeters = "error!"; TotalMachineWorkTime = "error!"; } } } }