aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs222
1 files changed, 179 insertions, 43 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs
index 112d6d6c6..3dccd812e 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobProgressViewVM.cs
@@ -1,10 +1,14 @@
using System;
using System.Collections.Generic;
+using System.Data.Entity;
+using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.BL;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
+using Tango.ColorConversion;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.Logging;
@@ -28,6 +32,9 @@ namespace Tango.PPC.Jobs.ViewModels
{
private StopPrintingButton _stop_job_btn;
private JobHandler _handler;
+ private List<ColorSpace> _colorSpaces;
+ private bool _conversion_Busy;
+ private bool _printingEnded;
#region Properties
@@ -38,12 +45,15 @@ namespace Tango.PPC.Jobs.ViewModels
public Job Job
{
get { return _job; }
- set { _job = value;
- if(_job == null)
+ set
+ {
+ _job = value;
+ if (_job == null)
{
IsDyeingProcess = false;
}
- RaisePropertyChangedAuto(); }
+ RaisePropertyChangedAuto();
+ }
}
private RunningJobStatus _runningJobStatus;
@@ -53,9 +63,10 @@ namespace Tango.PPC.Jobs.ViewModels
public RunningJobStatus RunningJobStatus
{
get { return _runningJobStatus; }
- set {
+ set
+ {
_runningJobStatus = value;
- if(_runningJobStatus == null)
+ if (_runningJobStatus == null)
{
IsDyeingProcess = false;
}
@@ -63,6 +74,14 @@ namespace Tango.PPC.Jobs.ViewModels
}
}
+ private bool _displayInputOutput;
+ public bool DisplayInputOutput
+ {
+ get { return _displayInputOutput; }
+ set { _displayInputOutput = value; RaisePropertyChangedAuto(); }
+ }
+
+
private bool _isDisplayJobOutline;
/// <summary>
/// Gets or sets a value indicating whether to display the job outline.
@@ -112,7 +131,27 @@ namespace Tango.PPC.Jobs.ViewModels
}
}
- public JobBrushStop JobBrushStop { get; set; }
+ private JobBrushStop _jobBrushStop;
+ public JobBrushStop JobBrushStop
+ {
+ get { return _jobBrushStop; }
+ set
+ {
+ if (_jobBrushStop != value)
+ {
+ _jobBrushStop = value;
+
+ RaisePropertyChanged(nameof(CyanOutput));
+ RaisePropertyChanged(nameof(LightCyanOutput));
+ RaisePropertyChanged(nameof(MagentaOutput));
+ RaisePropertyChanged(nameof(LightMagentaOutput));
+ RaisePropertyChanged(nameof(YellowOutput));
+ RaisePropertyChanged(nameof(LightYellowOutput));
+ RaisePropertyChanged(nameof(BlackOutput));
+ }
+ }
+ }
+
public double CyanOutput
{
@@ -204,17 +243,8 @@ namespace Tango.PPC.Jobs.ViewModels
protected void OnUpdateCurrentBrush()
{
- CurrentBrushStop.SetLiquidVolumes(MachineProvider.Machine.Configuration, Job.Rml, MachineProvider.MachineOperator.CurrentProcessParameters);
-
+ CurrentBrushStop?.SetLiquidVolumes(MachineProvider.Machine.Configuration, Job.Rml, MachineProvider.MachineOperator.CurrentProcessParameters);
RaisePropertyChanged(nameof(CurrentBrushStop));
-
- RaisePropertyChanged(nameof(CyanOutput));
- RaisePropertyChanged(nameof(LightCyanOutput));
- RaisePropertyChanged(nameof(MagentaOutput));
- RaisePropertyChanged(nameof(LightMagentaOutput));
- RaisePropertyChanged(nameof(YellowOutput));
- RaisePropertyChanged(nameof(LightYellowOutput));
- RaisePropertyChanged(nameof(BlackOutput));
}
private double GetVolumeLiquidType(LiquidTypes liquidType)
@@ -238,10 +268,22 @@ namespace Tango.PPC.Jobs.ViewModels
/// <summary>
/// Called when the application has been started.
/// </summary>
- public override void OnApplicationStarted()
+ public override async void OnApplicationStarted()
{
MachineProvider.MachineOperator.PrintingStarted += MachineOperator_PrintingStarted;
MachineProvider.MachineOperator.PrintingEnded += MachineOperator_PrintingEnded;
+
+ try
+ {
+ using (var db = ObservablesContext.CreateDefault())
+ {
+ _colorSpaces = await db.ColorSpaces.ToListAsync();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex);
+ }
}
/// <summary>
@@ -279,8 +321,12 @@ namespace Tango.PPC.Jobs.ViewModels
/// <param name="e">The <see cref="PrintingEventArgs"/> instance containing the event data.</param>
private void MachineOperator_PrintingStarted(object sender, PrintingEventArgs e)
{
+ DisplayInputOutput = false;
+ _printingEnded = false;
_handler = e.JobHandler;
Job = e.Job;
+ CurrentBrushStop = null;
+ JobBrushStop = null;
e.JobHandler.StatusChanged += JobHandler_StatusChanged;
e.JobHandler.SpoolChangeRequired += JobHandler_SpoolChangeRequired;
e.JobHandler.Stopped += JobHandler_Stopped;
@@ -292,6 +338,9 @@ namespace Tango.PPC.Jobs.ViewModels
private void MachineOperator_PrintingEnded(object sender, PrintingEventArgs e)
{
+ _printingEnded = true;
+ CurrentBrushStop = RunningJobStatus.CurrentSegment.BrushStops.OrderBy(x => x.StopIndex).Last();
+
LogManager.Log("Printing ended, popping job stop button...");
if (_stop_job_btn != null)
@@ -348,46 +397,133 @@ namespace Tango.PPC.Jobs.ViewModels
/// <param name="e">The e.</param>
private void JobHandler_StatusChanged(object sender, RunningJobStatus e)
{
- InvokeUI(() =>
+ InvokeUI(async () =>
{
RunningJobStatus = e;
IsDyeingProcess = (RunningJobStatus != null && RunningJobStatus.CurrentSegment != null);
- if (RunningJobStatus != null && RunningJobStatus.CurrentSegment != null)
- {
- if (_runningJobStatus.CurrentSegment.IsInterSegment)
- {
- CurrentBrushStop = _runningJobStatus.CurrentSegment.BrushStops.FirstOrDefault();
- JobBrushStop = null;
- }
- else
+ if (RunningJobStatus != null && RunningJobStatus.CurrentSegment != null)
{
- var realsegmIndex = 1;
- if (Job.EnableInterSegment && Job.InterSegmentLength > 0)
+
+ try
{
- int segmentIndex = _runningJobStatus.CurrentSegment.SegmentIndex - (Job.EffectiveSegments.Count * RunningJobStatus.CurrentUnit);
- if (RunningJobStatus.CurrentUnit > 0)
+ if (_runningJobStatus.CurrentSegment.IsInterSegment)
+ {
+ var stop = _runningJobStatus.CurrentSegment.BrushStops.FirstOrDefault();
+ stop.ColorSpace = CurrentBrushStop.ColorSpace;
+ CurrentBrushStop = stop;
+ JobBrushStop = null;
+ }
+ else
{
- segmentIndex -= RunningJobStatus.CurrentUnit;// inter segment between units
+ var realsegmIndex = 1;
+ if (Job.EnableInterSegment && Job.InterSegmentLength > 0)
+ {
+ int segmentIndex = _runningJobStatus.CurrentSegment.SegmentIndex - (Job.EffectiveSegments.Count * RunningJobStatus.CurrentUnit);
+ if (RunningJobStatus.CurrentUnit > 0)
+ {
+ segmentIndex -= RunningJobStatus.CurrentUnit;// inter segment between units
+ }
+ realsegmIndex = (int)(segmentIndex / 2) + 1;
+ }
+ else
+ {
+ realsegmIndex = Math.Max(_runningJobStatus.CurrentSegment.SegmentIndex - (Job.Segments.Count * RunningJobStatus.CurrentUnit), 0);
+ }
+
+ var segment = Job.Segments.FirstOrDefault(x => x.SegmentIndex == realsegmIndex);
+ JobSegment jobSegment = null;
+ if (segment != null)
+ {
+ if (_handler.JobTicket.Segments.Count > 0)
+ {
+ jobSegment = _handler.JobTicket.Segments[Job.OrderedSegments.IndexOf(segment)];
+ if (jobSegment.BrushStops.Count == 1)
+ {
+ JobBrushStop = jobSegment.BrushStops.First();
+ }
+ else if (jobSegment.BrushStops.Count > 1)
+ {
+ JobBrushStop = jobSegment.BrushStops.Last(x => x.OffsetMeters <= e.CurrentSegment.Progress);
+ }
+ else
+ {
+ JobBrushStop = null;
+ }
+ }
+ }
+
+
+ if (segment != null && jobSegment != null && jobSegment.BrushStops.Count > 1)
+ {
+ if (!_conversion_Busy)
+ {
+ var brushStop = RunningJobStatus.CurrentSegment.FirstBrushStop;
+ await ApplyJobBrushStopToBrushStop(JobBrushStop, brushStop);
+
+ if (!_printingEnded)
+ {
+ _currentBrushStop = brushStop;
+ RaisePropertyChanged(nameof(CurrentBrushStop));
+ }
+ }
+ }
+ else
+ {
+ CurrentBrushStop = RunningJobStatus.CurrentSegment.FirstBrushStop;
+ }
+
+
}
- realsegmIndex = (int)(segmentIndex / 2) + 1;
}
- else
+ catch (Exception ex)
{
- realsegmIndex = Math.Max(_runningJobStatus.CurrentSegment.SegmentIndex - (Job.Segments.Count * RunningJobStatus.CurrentUnit), 0);
+ LogManager.Log(ex, "Error displaying job progress input output.");
}
- var segment = Job.Segments.FirstOrDefault(x => x.SegmentIndex == realsegmIndex);
- if (segment != null)
+ DisplayInputOutput = true;
+ }
+ });
+ }
+
+ private async Task ApplyJobBrushStopToBrushStop(JobBrushStop stop, BrushStop s)
+ {
+ _conversion_Busy = true;
+
+ foreach (var dispenser in stop.Dispensers)
+ {
+ s.SetVolume(dispenser.Index, dispenser.Volume);
+ }
+
+ s.SetLiquidVolumes(MachineProvider.Machine.Configuration, Job.Rml, MachineProvider.MachineOperator.CurrentProcessParameters);
+
+ foreach (var liquidVolume in s.LiquidVolumes.Where(x => x.IdsPack.LiquidType.IsLightInk && x.Volume > 0).ToList())
+ {
+ var darkInk = s.LiquidVolumes.FirstOrDefault(x => x.IdsPack.LiquidType.Code == liquidVolume.IdsPack.LiquidType.DarkInkCode);
+ if (darkInk != null)
+ {
+ darkInk.Volume = liquidVolume.Volume / 10d;
+ liquidVolume.Volume = 0;
+ }
+ }
+
+ if (_colorSpaces != null)
+ {
+ if ((s.BrushColorSpace == ColorSpaces.RGB || s.BrushColorSpace == ColorSpaces.LAB) && (!s.IsLast && !s.IsFirst))
+ {
+ var converter = new DefaultColorConverter();
+
+ var previousSpace = s.ColorSpace;
+ s.SetColorSpaceSilent(_colorSpaces.First(x => x.Space == ColorSpaces.Volume));
+ var output = await converter.ConvertAsync(s, false, false);
+ s.SetColorSpaceSilent(previousSpace);
+ if (!_printingEnded)
{
- if (_handler.JobTicket.Segments.Count > 0)
- {
- JobBrushStop = _handler.JobTicket.Segments[Job.OrderedSegments.IndexOf(segment)].BrushStops.First();
- }
+ output.ApplyOnBrushStop(s, MachineProvider.MachineOperator.CurrentProcessParameters);
}
- CurrentBrushStop = RunningJobStatus.CurrentSegment.FirstBrushStop;
}
- }
- });
+ }
+
+ _conversion_Busy = false;
}
/// <summary>