aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs84
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