aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2022-02-22 14:41:25 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2022-02-22 14:41:25 +0200
commit28fa1ab91b3fb7970d9968c5cb1d018c2b44fd69 (patch)
tree040ebb961e0e991436571f11d8a189c92326e4b3 /Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models
parent3681ab681f02bbb7cda89de4044fd69bc9d61ab8 (diff)
downloadTango-28fa1ab91b3fb7970d9968c5cb1d018c2b44fd69.tar.gz
Tango-28fa1ab91b3fb7970d9968c5cb1d018c2b44fd69.zip
Implement grouping of segments. Changes in GUI and database. Not in Dying process.
Related Work Items: #4558
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs31
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ColorLibrary.cs3
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ISegmentModel.cs6
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/JobModel.cs242
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentModel.cs7
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentsGroupModel.cs87
6 files changed, 292 insertions, 84 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
index 8a071f126..12add3d2f 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/BrushStopModel.cs
@@ -585,6 +585,8 @@ namespace Tango.PPC.Jobs.Models
}
}
}
+
+ protected bool RequiredMaxLiquidTest { get; set; }
#endregion
public BrushStopModel(SegmentModel segmentModel)
@@ -611,6 +613,7 @@ namespace Tango.PPC.Jobs.Models
ColorCatalogsItem = null;
PreventPropertyUpdate = false;
LiquidVolumesOutOfRange = false;
+ RequiredMaxLiquidTest = false;
}
public BrushStopModel(BrushStop brushStop, SegmentModel segmentModel, int version)
@@ -777,6 +780,7 @@ namespace Tango.PPC.Jobs.Models
cloned.LiquidVolumesOutOfRange = LiquidVolumesOutOfRange;
//this.MapPropertiesTo(cloned, MappingFlags.NoReferenceTypes);
cloned.PreventPropertyUpdate = false;
+ cloned.RequiredMaxLiquidTest = false;
return cloned;
}
@@ -830,6 +834,7 @@ namespace Tango.PPC.Jobs.Models
if (PreventPropertyUpdate)
return;
ColorSpace = ColorSpaces.Volume;
+ RequiredMaxLiquidTest = true;
RaisePropertyChanged(nameof(IsLiquidVolumesOutOfRange));
OnBrushStopFieldValueChanged();
@@ -972,6 +977,8 @@ namespace Tango.PPC.Jobs.Models
RaisePropertyChanged(nameof(Saturation));
RaisePropertyChanged(nameof(Brightness));
}
+ RequiredMaxLiquidTest = false;
+ RaisePropertyChanged(nameof(IsLiquidVolumesOutOfRange));
}
}
@@ -1011,6 +1018,8 @@ namespace Tango.PPC.Jobs.Models
RaisePropertyChanged(nameof(Red));
RaisePropertyChanged(nameof(Green));
RaisePropertyChanged(nameof(Blue));
+ RequiredMaxLiquidTest = false;
+ RaisePropertyChanged(nameof(IsLiquidVolumesOutOfRange));
}
}
@@ -1064,11 +1073,14 @@ namespace Tango.PPC.Jobs.Models
RaisePropertyChanged(nameof(L));
RaisePropertyChanged(nameof(A));
RaisePropertyChanged(nameof(B));
+ RequiredMaxLiquidTest = false;
+ RaisePropertyChanged(nameof(IsLiquidVolumesOutOfRange));
}
}
public void ConvertColorToVolume()
{
+ RequiredMaxLiquidTest = true;
if (ColorSpace != ColorSpaces.Volume)
{
if (ColorSpace == ColorSpaces.Catalog)
@@ -1209,19 +1221,20 @@ namespace Tango.PPC.Jobs.Models
return 0.0;
}
+
public bool IsLiquidVolumesOutOfRange
{
get
{
- //if (ColorSpace == BL.Enumerations.ColorSpaces.Volume)
- // {
- var sum = GetColorNLPerCm(Cyan, LiquidTypes.Cyan) + GetColorNLPerCm(Magenta, LiquidTypes.Magenta) + GetColorNLPerCm(Yellow, LiquidTypes.Yellow) + GetColorNLPerCm(Black, LiquidTypes.Black);
- var maxLiq = GetTotalMaximumLiquidNlPerCMLimit();
- LiquidVolumesOutOfRange = sum > GetTotalMaximumLiquidNlPerCMLimit();
-
- return LiquidVolumesOutOfRange;
- // }
- // else return false;
+ if (RequiredMaxLiquidTest )
+ {
+ var sum = GetColorNLPerCm(Cyan, LiquidTypes.Cyan) + GetColorNLPerCm(Magenta, LiquidTypes.Magenta) + GetColorNLPerCm(Yellow, LiquidTypes.Yellow) + GetColorNLPerCm(Black, LiquidTypes.Black);
+ var maxLiq = GetTotalMaximumLiquidNlPerCMLimit();
+ LiquidVolumesOutOfRange = sum > GetTotalMaximumLiquidNlPerCMLimit();
+
+ return LiquidVolumesOutOfRange;
+ }
+ else return false;
}
}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ColorLibrary.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ColorLibrary.cs
index 511a90e15..502e19dfc 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ColorLibrary.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ColorLibrary.cs
@@ -27,7 +27,8 @@ namespace Tango.PPC.Jobs.Models
public string Name
{
get { return _name; }
- set { _name = value; }
+ set { _name = value;
+ RaisePropertyChangedAuto(); }
}
private bool _editColorsGroupMode;
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ISegmentModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ISegmentModel.cs
index 9bed7e849..37a8fc33b 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ISegmentModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/ISegmentModel.cs
@@ -9,11 +9,13 @@ namespace Tango.PPC.Jobs.Models
public interface ISegmentModel
{
String Name { get; set; }
- double Length { get; set; }
+ double Length { get; }
+ double LengthWithInterSegment { get; }
bool IsGroupSegment { get; }
bool IsSelected { get; set; }
bool IsLast { get; set; }
Int32 SegmentIndex { get; set; }
double InterSegmentLength { get; }
- }
+ bool EnableInterSegment { get; set; }
+}
}
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/JobModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/JobModel.cs
index 3379149f6..dd8c88971 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/JobModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/JobModel.cs
@@ -69,7 +69,8 @@ namespace Tango.PPC.Jobs.Models
{
if (Segments != null)
{
- return Segments.Sum(x => x.LengthWithInterSegment);
+ return GroupingSegments.Sum(x => x.LengthWithInterSegment);
+ //return Segments.Sum(x => x.LengthWithInterSegment);
// return Segments.Sum(x => x.LengthWithFactor) + ((EnableInterSegment && IsAllSegmentsPerSpool) ? (InterSegmentLength * (Segments.Count > 0 ? Segments.Count - 1 : Segments.Count)) : 0);
}
else
@@ -142,8 +143,8 @@ namespace Tango.PPC.Jobs.Models
if (_intersegmentlength != value)
{
_intersegmentlength = value;
- OnInterSegmentlengthChanged();
RaisePropertyChangedAuto();
+ OnInterSegmentlengthChanged();
}
}
}
@@ -314,6 +315,7 @@ namespace Tango.PPC.Jobs.Models
}
}
}
+ public JobTypes JobType { get; set; }
protected SynchronizedObservableCollection<SegmentModel> _segments;
@@ -338,41 +340,39 @@ namespace Tango.PPC.Jobs.Models
}
}
- public ObservableCollection<SegmentModel> EffectiveSegments
+ private bool _enableintersegment;
+ public bool EnableInterSegment
{
get
{
- //if (EnableInterSegment && IsAllSegmentsPerSpool)
- if( IsAllSegmentsPerSpool)
- {
- int max = Segments.Max(x => x.SegmentIndex);
-
- ObservableCollection<SegmentModel> effectiveSegments = new ObservableCollection<SegmentModel>();
-
- foreach (var s in Segments.ToList().OrderBy(x => x.SegmentIndex))
- {
- effectiveSegments.Add(s);
-
- if (s.SegmentIndex != max && s.EnableInterSegment)
- {
- effectiveSegments.Add(CreateInterSegment(InterSegmentLength));
- }
- }
+ return _enableintersegment;
+ }
- return effectiveSegments;
- }
- else
+ set
+ {
+ if (_enableintersegment != value)
{
- return Segments.OrderBy(x => x.SegmentIndex).ToObservableCollection();
+ _enableintersegment = value;
+ RaisePropertyChangedAuto();
+ OnEnableInterSegmentChanged();
}
}
}
+
+ private ObservableCollection<SegmentModel> _effectiveSegments;
+ public ObservableCollection<SegmentModel> EffectiveSegments
+ {
+ get
+ {
+ return _effectiveSegments;
+ }
+ }
- protected ObservableCollection<ISegmentModel> _groupingSegments;
+ protected SynchronizedObservableCollection<ISegmentModel> _groupingSegments;
/// <summary>
/// Gets or sets the display segments.
/// </summary>
- public ObservableCollection<ISegmentModel> GroupingSegments
+ public SynchronizedObservableCollection<ISegmentModel> GroupingSegments
{
get
{
@@ -424,22 +424,32 @@ namespace Tango.PPC.Jobs.Models
}
}
- public int LastNewGroupID { get; set; }
-
+ public int LastGroupID
+ {
+ get
+ {
+ var groups = GroupingSegments.ToList().OfType<SegmentsGroupModel>().ToList();
+ return groups.Count() == 0 ? 0 : groups.Max(x => x.SegmentIndex);
+ }
+ }
+
#endregion
public JobModel(List<ColorSpace> list)
{
ColorSpacesList = list;
_segments = new SynchronizedObservableCollection<SegmentModel>();
- _groupingSegments = new ObservableCollection<ISegmentModel>();
+ _groupingSegments = new SynchronizedObservableCollection<ISegmentModel>();
SegmentsToCopy = new List<SegmentModel>();
+ _effectiveSegments = new ObservableCollection<SegmentModel>();
Segments.CollectionChanged -= Segments_CollectionChanged;
Segments.CollectionChanged += Segments_CollectionChanged;
+
+ GroupingSegments.CollectionChanged -= SegmentsGroup_CollectionChanged;
+ GroupingSegments.CollectionChanged += SegmentsGroup_CollectionChanged;
SelectAllSegments = false;
NumberOfUnits = 1;
- LastNewGroupID = 1;
}
#region modifications
@@ -453,16 +463,21 @@ namespace Tango.PPC.Jobs.Models
{
GroupingSegments.Clear();
var groupedList = Segments.Where(x => x.GroupID >0).Select(grp => grp.SegmentsGroupModel).Distinct().ToList();//List<SegmentsGroupModel>
+ int ID = 1;
+ groupedList.ForEach(x => x.SegmentIndex = ID++);
+
Dictionary<int, SegmentsGroupModel> groupIDToSegmentsGroup = new Dictionary<int, SegmentsGroupModel>();
foreach (var group in groupedList)
{
- var groupID = group.GroupID;
+ var groupID = group.SegmentIndex;
groupIDToSegmentsGroup[groupID] = group;
};
+ int currentIndex = 1;
foreach (var segment in Segments)
{
if (!segment.IsGroupSegment)
{
+ segment.SegmentIndex = currentIndex;
GroupingSegments.Add(segment);
}
else
@@ -471,10 +486,14 @@ namespace Tango.PPC.Jobs.Models
if (groupIDToSegmentsGroup.TryGetValue(segment.GroupID, out segmentsGroup))
{
GroupingSegments.Add(segmentsGroup);
+ segmentsGroup.SegmentIndex = currentIndex;
groupIDToSegmentsGroup.Remove(segment.GroupID);
}
}
+ currentIndex++;
}
+ if(GroupingSegments.Count > 0)
+ GroupingSegments.Last().IsLast = true;
RaisePropertyChanged(nameof(GroupingSegments));
}
public static SegmentModel CreateInterSegment(double length)
@@ -518,19 +537,102 @@ namespace Tango.PPC.Jobs.Models
#endregion
#region changes
+
+ private void OnEnableInterSegmentChanged()
+ {
+ GroupingSegments.ToList().ForEach(x => x.EnableInterSegment = EnableInterSegment);
+ UpdateEffectiveSegments();
+ }
+
+ private void UpdateEffectiveSegments()
+ {
+ if (IsAllSegmentsPerSpool)
+ {
+ int max = GroupingSegments.Count > 0 ? GroupingSegments.Max(x => x.SegmentIndex) : 0;
+
+ ObservableCollection<SegmentModel> effectiveSegments = new ObservableCollection<SegmentModel>();
+
+ foreach (var s in GroupingSegments.OrderBy(x => x.SegmentIndex))
+ {
+ if (s is SegmentModel)
+ {
+ SegmentModel segment = s as SegmentModel;
+ effectiveSegments.Add(segment);
+ if (segment.SegmentIndex != max && segment.EnableInterSegment)
+ {
+ effectiveSegments.Add(CreateInterSegment(InterSegmentLength));
+ }
+ }
+ else if (s is SegmentsGroupModel)
+ {
+ SegmentsGroupModel segmentsGroup = s as SegmentsGroupModel;
+ List<SegmentModel> segments = segmentsGroup.Segments.ToList();
+ for (int repeats = 0; repeats < segmentsGroup.Repeats; repeats++)
+ {
+ for (int i = 0; i < segments.Count; i++)
+ {
+ if (repeats > 0)
+ {
+ effectiveSegments.Add(segments[i].Clone());
+ }
+ else
+ effectiveSegments.Add(segments[i]);
+
+ }
+ }
+ if (EnableInterSegment &&
+ !(segmentsGroup.SegmentIndex == max && segmentsGroup.SegmentIndex != max))
+ {
+ effectiveSegments.Add(CreateInterSegment(InterSegmentLength));
+ }
+ }
+ }
+ _effectiveSegments = effectiveSegments;
+ }
+ else
+ {
+ foreach (var s in GroupingSegments.OrderBy(x => x.SegmentIndex))
+ {
+ if (s is SegmentModel)
+ {
+ SegmentModel segment = s as SegmentModel;
+ _effectiveSegments.Add(segment);
+ }
+ else if (s is SegmentsGroupModel)
+ {
+ SegmentsGroupModel segmentsGroup = s as SegmentsGroupModel;
+ List<SegmentModel> segments = segmentsGroup.Segments.ToList();
+ for (int repeats = 0; repeats < segmentsGroup.Repeats; repeats++)
+ {
+ for (int i = 0; i < segments.Count; i++)
+ {
+ if (repeats > 0)
+ {
+ _effectiveSegments.Add(segments[i].Clone());
+ }
+ else
+ _effectiveSegments.Add(segments[i]);
+ }
+ }
+ }
+ }
+ }
+ RaisePropertyChanged(nameof(EffectiveSegments));
+ }
+
/// <summary>
/// Handles the CollectionChanged event of the Segments collection.
/// </summary>
- private void Segments_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+ private void Segments_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
foreach (var segment in Segments.ToList())
{
segment.PropertyChanged -= Segment_PropertyChanged;
segment.PropertyChanged += Segment_PropertyChanged;
}
-
- OnLengthChanged();
- RaisePropertyChanged(nameof(EffectiveSegments));
+
+ //OnLengthChanged();
+ //UpdateEffectiveSegments();
}
/// <summary>
@@ -544,13 +646,13 @@ namespace Tango.PPC.Jobs.Models
}
else if (e.PropertyName == nameof(SegmentModel.SegmentIndex))
{
- RaisePropertyChanged(nameof(EffectiveSegments));
- }
- else if(e.PropertyName == nameof(SegmentModel.EnableInterSegment))
- {
- OnLengthChanged();
- RaisePropertyChanged(nameof(EffectiveSegments));
+ UpdateEffectiveSegments();
}
+ //else if(e.PropertyName == nameof(SegmentModel.EnableInterSegment))
+ //{
+ // OnLengthChanged();
+ // RaisePropertyChanged(nameof(EffectiveSegments));
+ //}
else if(e.PropertyName == nameof(SegmentModel.IsSelected))
{
if (_preventChange) return;
@@ -566,7 +668,43 @@ namespace Tango.PPC.Jobs.Models
RaisePropertyChanged(nameof(HasSelectedItems));
}
}
-
+
+ private void SegmentsGroup_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+ {
+ foreach (var group in GroupingSegments.ToList())
+ {
+ if (group is SegmentsGroupModel)
+ {
+ (group as SegmentsGroupModel).PropertyChanged -= SegmentsGroup_PropertyChanged;
+ (group as SegmentsGroupModel).PropertyChanged += SegmentsGroup_PropertyChanged;
+ }
+ }
+ OnLengthChanged();
+ UpdateEffectiveSegments();
+ }
+
+ private void SegmentsGroup_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == nameof(SegmentsGroupModel.Repeats))
+ {
+ OnLengthChanged();
+ UpdateEffectiveSegments();
+ }
+ else if (e.PropertyName == nameof(SegmentModel.IsSelected))
+ {
+ //if (_preventChange) return;
+ //if (Segments.ToList().TrueForAll(x => x.IsSelected))
+ //{
+ // _selectAllSegments = true;
+ //}
+ //else
+ //{
+ // _selectAllSegments = false;
+ //}
+ //RaisePropertyChanged(nameof(SelectAllSegments));
+ //RaisePropertyChanged(nameof(HasSelectedItems));
+ }
+ }
/// <summary>
/// Called when the <see cref="Length"/> property has been changed
@@ -586,7 +724,7 @@ namespace Tango.PPC.Jobs.Models
if (Segments != null )
{
_preventChange = true;
- Segments.ToList().ForEach(x => x.IsSelected = SelectAllSegments);
+ GroupingSegments.ToList().ForEach(x => x.IsSelected = SelectAllSegments);
_preventChange = false;
RaisePropertyChanged(nameof(HasSelectedItems));
}
@@ -595,10 +733,10 @@ namespace Tango.PPC.Jobs.Models
private void OnInterSegmentlengthChanged()
{
_preventChange = true;
- if (Segments.Count > 0)
+ if (GroupingSegments.Count > 0)
{
- int max = Segments.Max(x => x.SegmentIndex);
- Segments.Where(i => i.SegmentIndex != max).ToList().ForEach(x => x.EnableInterSegment = InterSegmentLength > 0);
+ int max = GroupingSegments.Max(x => x.SegmentIndex);
+ GroupingSegments.Where(i => i.SegmentIndex != max).ToList().ForEach(x => x.EnableInterSegment = InterSegmentLength > 0);
}
_preventChange = false;
}
@@ -612,19 +750,19 @@ namespace Tango.PPC.Jobs.Models
if (false == Segments.ToList().Any(x => x.IsSelected))
return;
LogManager.Log("Copy selected segments.");
- int max = Segments.Max(x => x.SegmentIndex);
- Segments.Where(i => i.IsSelected && i.SegmentIndex != max).ToList().ForEach(y => y.EnableInterSegment = true);
+ int max = GroupingSegments.Max(x => x.SegmentIndex);
+ GroupingSegments.Where(i => i.IsSelected && i.SegmentIndex != max).ToList().ForEach(y => y.EnableInterSegment = true);
}
public void SwapSegments(int index1, int index2)
{
- if (index1 < 0 || index1 >= Segments.Count)
+ if (index1 < 0 || index1 >= GroupingSegments.Count)
return;
- if (index2 < 0 || index2 >= Segments.Count)
+ if (index2 < 0 || index2 >= GroupingSegments.Count)
return;
- var tmpIndex = Segments[index2];
- Segments[index2] = Segments[index1];
- Segments[index1] = tmpIndex;
+ var tmpIndex = GroupingSegments[index2];
+ GroupingSegments[index2] = GroupingSegments[index1];
+ GroupingSegments[index1] = tmpIndex;
}
#endregion
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentModel.cs
index 0773abf19..e7282bf8d 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentModel.cs
@@ -31,7 +31,7 @@ namespace Tango.PPC.Jobs.Models
public int GroupID {
get
{
- return SegmentsGroupModel == null ? -1 : SegmentsGroupModel.GroupID;
+ return SegmentsGroupModel == null ? -1 : SegmentsGroupModel.SegmentIndex;
}
}
@@ -136,8 +136,9 @@ namespace Tango.PPC.Jobs.Models
_enableintersegment = value;
RaisePropertyChangedAuto();
RaisePropertyChanged(nameof(LengthWithInterSegment));
- RaisePropertyChanged(nameof(InterSegmentLength));
+
}
+ RaisePropertyChanged(nameof(InterSegmentLength));
}
}
@@ -450,7 +451,7 @@ namespace Tango.PPC.Jobs.Models
Job = jobModel;
GUID = guid;
IsLast = false;
- EnableInterSegment = jobModel.InterSegmentLength > 0;
+ EnableInterSegment = jobModel.EnableInterSegment;
}
public SegmentModel()
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentsGroupModel.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentsGroupModel.cs
index 0c3863f78..7a2850684 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentsGroupModel.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Models/SegmentsGroupModel.cs
@@ -12,9 +12,24 @@ namespace Tango.PPC.Jobs.Models
{
#region Properties
- public ObservableCollection<SegmentModel> Segments { get; set; }
-
- public int GroupID{ get; set; }
+ public SynchronizedObservableCollection<SegmentModel> Segments { get; set; }
+
+ private Int32 _segnmentIndex;
+ public Int32 SegmentIndex
+ {
+ get
+ {
+ return _segnmentIndex;
+ }
+ set
+ {
+ if(_segnmentIndex != value)
+ {
+ _segnmentIndex = value;
+ RaisePropertyChangedAuto();
+ }
+ }
+ }
private int _repeats;
@@ -23,6 +38,7 @@ namespace Tango.PPC.Jobs.Models
get { return _repeats; }
set { _repeats = value;
RaisePropertyChangedAuto();
+ RaisePropertyChanged(nameof(Length));
}
}
@@ -34,6 +50,8 @@ namespace Tango.PPC.Jobs.Models
RaisePropertyChangedAuto();
}
}
+ public JobModel Job { get; set; }
+
protected Double _length;
/// <summary>
/// Gets or sets the length.
@@ -44,13 +62,19 @@ namespace Tango.PPC.Jobs.Models
{
return Segments.Count == 0 ? 0 : Segments.ToList().Sum(x=>x.Length);
}
- set
+
+ }
+
+ public Double LengthWithInterSegment
+ {
+ get
{
- if (_length != value)
+ if (Job != null )
{
- _length = value;
- RaisePropertyChangedAuto();
+ return EnableInterSegment ? (Length + Job.InterSegmentLength) * Repeats : Length * Repeats;
}
+ return Length;
+ //return Segments.Count == 0 ? 0 : Segments.ToList().Sum(x => x.LengthWithInterSegment) * Repeats;
}
}
@@ -75,13 +99,19 @@ namespace Tango.PPC.Jobs.Models
}
}
- public bool IsLast { get; set; }
- public Int32 SegmentIndex {
- get {
- return Segments.Count == 0 ? 0 : Segments.ToList().OrderBy(x => x.SegmentIndex).Select(x => x.SegmentIndex).FirstOrDefault();
+ private bool _isLast;
+
+ public bool IsLast
+ {
+ get { return _isLast; }
+ set
+ {
+ _isLast = value;
+ RaisePropertyChangedAuto();
}
- set { }
}
+
+
public int FirstSegmentIndex {
get
{
@@ -108,22 +138,45 @@ namespace Tango.PPC.Jobs.Models
{
get
{
- return Segments.Count == 0 ? 0 : Segments.ToList().Select(x => x.InterSegmentLength).FirstOrDefault();
+ return Job == null ? 0 : Job.InterSegmentLength;
+ // return Segments.Count == 0 ? 0 : Segments.ToList().Select(x => x.InterSegmentLength).FirstOrDefault();
}
}
+ protected Boolean _enableintersegment;
+ public Boolean EnableInterSegment
+ {
+ get { return _enableintersegment; }
+ set
+ {
+ if (_enableintersegment != value)
+ {
+ _enableintersegment = value;
+ RaisePropertyChangedAuto();
+ RaisePropertyChanged(nameof(LengthWithInterSegment));
+ RaisePropertyChanged(nameof(InterSegmentLength));
+
+ }
+
+ }
+ }
+
#endregion
- public SegmentsGroupModel(List<SegmentModel> selectedSegments)
+ public SegmentsGroupModel(JobModel jobModel, List<SegmentModel> selectedSegments)
{
- Segments = selectedSegments.ToObservableCollection();
+ Job = jobModel;
+ Segments = selectedSegments.ToSynchronizedObservableCollection();
Repeats = 1;
+ EnableInterSegment = jobModel.EnableInterSegment;
}
- public SegmentsGroupModel()
+ public SegmentsGroupModel(JobModel jobModel)
{
- Segments = new ObservableCollection<SegmentModel>();
+ Job = jobModel;
+ Segments = new SynchronizedObservableCollection<SegmentModel>();
Repeats = 1;
+ EnableInterSegment = jobModel.EnableInterSegment;
}
}
}