diff options
| author | Roy <roy.mail.net@gmail.com> | 2018-02-16 19:04:47 +0200 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2018-02-16 19:04:47 +0200 |
| commit | e332170566c295fb4ff375498867f984f1570707 (patch) | |
| tree | 9b9b72067d9d03e01f262b26e01203dada4fe624 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels | |
| parent | 9879f87a345bec10a3ee26e9ec669add2b5bfcd3 (diff) | |
| download | Tango-e332170566c295fb4ff375498867f984f1570707.tar.gz Tango-e332170566c295fb4ff375498867f984f1570707.zip | |
Before developer module redesign.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index b2f6c3579..013129fc1 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -47,7 +47,6 @@ namespace Tango.MachineStudio.Developer.ViewModels private int _fullScreenGraphIndex; private JobHandler _jobHandler; - #region Properties /// <summary> @@ -329,6 +328,16 @@ namespace Tango.MachineStudio.Developer.ViewModels set { _fullScreenGraph = value; RaisePropertyChangedAuto(); } } + private List<Segment> _runningJobSegments; + /// <summary> + /// Gets or sets the running job segments. + /// </summary> + public List<Segment> RunningJobSegments + { + get { return _runningJobSegments; } + set { _runningJobSegments = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -477,11 +486,21 @@ namespace Tango.MachineStudio.Developer.ViewModels #region Event Handlers + /// <summary> + /// Handles the diagnostics provider frame received event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="response">The response.</param> private void DiagnosticsFrameProvider_FrameReceived(object sender, PushDiagnosticsResponse response) { PopulateDiagnosticsData(response); } + /// <summary> + /// Handles the application manager connected machine changes event. + /// </summary> + /// <param name="sender">The sender.</param> + /// <param name="machine">The machine.</param> private void ApplicationManager_ConnectedMachineChanged(object sender, IExternalBridgeClient machine) { MachineOperator = machine; @@ -497,11 +516,21 @@ namespace Tango.MachineStudio.Developer.ViewModels InvalidateLiquidFactorsAndProcessTables(); } + /// <summary> + /// Handles the LengthChanged event of the SelectedJob. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void SelectedJob_LengthChanged(object sender, EventArgs e) { UpdateEstimatedDuration(); } + /// <summary> + /// Handles the DyeingSpeedMinInkUptakeChanged event of the SelectedProcessParametersTable. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged(object sender, EventArgs e) { if (SelectedSegment != null) @@ -693,6 +722,7 @@ namespace Tango.MachineStudio.Developer.ViewModels RunningJob = SelectedJob; _runningJobEstimatedDuration = EstimatedDuration; + RunningJobSegments = CreateRunningJobEffectiveSegments(RunningJob); _jobHandler = MachineOperator.Print(SelectedJob, SelectedProcessParametersTable); @@ -700,6 +730,27 @@ namespace Tango.MachineStudio.Developer.ViewModels { RunningJobRemainingTime = _runningJobEstimatedDuration - TimeSpan.FromSeconds(RunningJobProgress / (SelectedProcessParametersTable.DyeingSpeed / 100d)); RunningJobProgress = status.Progress; + + foreach (var segment in RunningJobSegments) + { + var previousSegmentsWithThis = RunningJobSegments.Where(s => RunningJobSegments.IndexOf(s) <= RunningJobSegments.IndexOf(segment)).ToList(); + var segmentsDuration = TimeSpan.FromSeconds(previousSegmentsWithThis.Sum(s => s.Length) / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + var segmentDuration = TimeSpan.FromSeconds(segment.Length / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + TimeSpan remaining = segmentsDuration - TimeSpan.FromSeconds(RunningJobProgress / (SelectedProcessParametersTable.DyeingSpeed / 100d)); + if (remaining >= TimeSpan.Zero) + { + segment.RemainingTime = remaining; + } + if (remaining < segmentDuration) + { + segment.Started = true; + } + if (remaining <= TimeSpan.Zero) + { + segment.Completed = true; + segment.Started = false; + } + } }; _jobHandler.Failed += (x, ex) => @@ -729,6 +780,7 @@ namespace Tango.MachineStudio.Developer.ViewModels { using (_notification.PushTaskItem("Saving machine jobs...")) { + SelectedJob.CreationDate = DateTime.UtcNow; await SelectedJob.SaveAsync(); } } @@ -938,6 +990,36 @@ namespace Tango.MachineStudio.Developer.ViewModels } } + private List<Segment> CreateRunningJobEffectiveSegments(Job job) + { + List<Segment> segments = new List<Segment>(); + foreach (var s in job.Segments) + { + s.Completed = false; + s.Started = false; + segments.Add(s); + + if (job.EnableInterSegment && job.Segments.IndexOf(s) != job.Segments.Count - 1) + { + segments.Add(new Segment() + { + Length = job.InterSegmentLength, + BrushStops = new System.Collections.ObjectModel.ObservableCollection<BrushStop>() + { + new BrushStop() + { + Color = Colors.White, + } + }, + Started = false, + Completed = false + }); + } + } + + return segments; + } + #endregion #region Override Methods |
