aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2020-03-15 16:12:26 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2020-03-15 16:12:26 +0200
commit56678ae530fe45b0880053793ab46f47051e4dc6 (patch)
tree5098da59f675127fdb6c820b7ead4b990751a0e2 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics
parentd76fc5e1d3172a255d7de9446710c8764cd7335b (diff)
downloadTango-56678ae530fe45b0880053793ab46f47051e4dc6.tar.gz
Tango-56678ae530fe45b0880053793ab46f47051e4dc6.zip
MS Statistics Job Runs page. Added comments.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/NanoLiterToLiterFormatConverter.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/StatisticsValueCollection.cs49
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs59
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml25
4 files changed, 113 insertions, 22 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/NanoLiterToLiterFormatConverter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/NanoLiterToLiterFormatConverter.cs
index 3c25bfe4f..23d7564e8 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/NanoLiterToLiterFormatConverter.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Converters/NanoLiterToLiterFormatConverter.cs
@@ -14,7 +14,7 @@ namespace Tango.MachineStudio.Statistics.Converters
{
try
{
- double val =(double) ((int)value) / 1000000;
+ double val =(double) ((int)value) / 1000000000;
return val.ToString("N2", CultureInfo.InvariantCulture);
}
catch{ }
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/StatisticsValueCollection.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/StatisticsValueCollection.cs
index 2a298777b..2ad165d79 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/StatisticsValueCollection.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Models/StatisticsValueCollection.cs
@@ -35,6 +35,9 @@ namespace Tango.MachineStudio.Statistics.Models
private ObservableCollection<StatisticsValue> _statisticsCollection;
+ /// <summary>
+ /// Gets or sets the statistics collection of StatisticsValue object.
+ /// </summary>
public ObservableCollection<StatisticsValue> StatisticsCollection
{
get { return _statisticsCollection; }
@@ -44,16 +47,25 @@ namespace Tango.MachineStudio.Statistics.Models
}
private List<StatisticsValue> _threadConsumptionPerThread;
-
+ /// <summary>
+ /// Gets or sets the thread consumption per thread list.
+ /// </summary>
public List<StatisticsValue> ThreadConsumptionPerThread
{
get { return _threadConsumptionPerThread; }
set { _threadConsumptionPerThread = value; RaisePropertyChangedAuto(); }
}
+ /// <summary>
+ /// Gets or sets the thread consumption per thread collection.
+ /// </summary>
public CompositeCollection ThreadConsumptionPerThreadCollection { get; set; }
private LabeledSeriesCollection _pieJobSource;
+
+ /// <summary>
+ /// Gets or sets the pie job source.
+ /// </summary>
public LabeledSeriesCollection PieJobSource
{
get { return _pieJobSource; }
@@ -61,6 +73,10 @@ namespace Tango.MachineStudio.Statistics.Models
}
private LabeledSeriesCollection _pieJobRunStatus;
+
+ /// <summary>
+ /// Gets or sets the pie job run status.
+ /// </summary>
public LabeledSeriesCollection PieJobRunStatus
{
get { return _pieJobRunStatus; }
@@ -68,6 +84,10 @@ namespace Tango.MachineStudio.Statistics.Models
}
private LabeledSeriesCollection _pieGradientSolid;
+
+ /// <summary>
+ /// Gets or sets the pie gradient solid.
+ /// </summary>
public LabeledSeriesCollection PieGradientSolid
{
get { return _pieGradientSolid; }
@@ -75,6 +95,10 @@ namespace Tango.MachineStudio.Statistics.Models
}
private List<JobRunLiquidQuantity> _liquidQuantities;
+
+ /// <summary>
+ /// Gets or sets the liquid quantities.
+ /// </summary>
public List<JobRunLiquidQuantity> LiquidQuantities
{
get
@@ -91,6 +115,9 @@ namespace Tango.MachineStudio.Statistics.Models
private int _totalLiquidQuantities;
+ /// <summary>
+ /// Gets or sets the total liquid quantities.
+ /// </summary>
public int TotalLiquidQuantities
{
get { return _totalLiquidQuantities; }
@@ -128,6 +155,9 @@ namespace Tango.MachineStudio.Statistics.Models
};
}
+ /// <summary>
+ /// Cleans all values.
+ /// </summary>
public void Clean()
{
StatisticsCollection.Clear();
@@ -138,21 +168,27 @@ namespace Tango.MachineStudio.Statistics.Models
PieGradientSolid.SeriesCollection.Clear();
}
- public void AddStatisticsValue( string name, double value, string unit)
+ /// <summary>
+ /// Adds the statistics value.
+ /// </summary>
+ public void AddStatisticsValue(string name, double value, string unit)
{
- StatisticsCollection.Add(new StatisticsValue() { Name = name, Value=value, Unit = unit });
+ StatisticsCollection.Add(new StatisticsValue() { Name = name, Value = value, Unit = unit });
RaisePropertyChanged("StatisticsCollection");
}
+ /// <summary>
+ /// Creates the thread consumption per thread.
+ /// </summary>
public void CreateThreadConsumptionPerThread(List<StatisticsValue> threads)
{
ThreadConsumptionPerThreadCollection.Add(new CollectionContainer() { Collection = threads.Take(threads.Count() > 2 ? 2 : threads.Count()) });
if (threads.Count() > 2)
{
- ThreadConsumptionPerThreadCollection.Add(new CollectionContainer() { Collection = new List<MoreValue>() { new MoreValue(){ Text="More threads ..." } } });
+ ThreadConsumptionPerThreadCollection.Add(new CollectionContainer() { Collection = new List<MoreValue>() { new MoreValue() { Text = "More threads ..." } } });
ThreadConsumptionPerThread = threads.Skip(2).ToList();
}
-
+
RaisePropertyChanged("ThreadConsumptionPerThreadCollection");
}
@@ -259,6 +295,9 @@ namespace Tango.MachineStudio.Statistics.Models
}
#endregion
+ /// <summary>
+ /// Generates the statistics liquid quantity and TotalLiquidQuantities.
+ /// </summary>
public void GenerateStatisticsLiquidQuantity(List<JobRunLiquidQuantity> liquidQuantities)
{
LiquidQuantities = liquidQuantities;
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
index d57a1c96c..ed52c2352 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/ViewModels/JobRunsViewVM.cs
@@ -177,7 +177,7 @@ namespace Tango.MachineStudio.Statistics.ViewModels
private Job _selectedJob;
/// <summary>
- /// Gets or sets the job. Used as Sele
+ /// Gets or sets the job.
/// </summary>
public Job SelectedJob
{
@@ -188,7 +188,10 @@ namespace Tango.MachineStudio.Statistics.ViewModels
RaisePropertyChangedAuto();
}
}
-
+
+ /// <summary>
+ /// Gets or sets the statistics value collection. Class - container included calculated statistic values.
+ /// </summary>
public StatisticsValueCollection StatisticsValueCollection { get; set; }
#endregion
@@ -356,26 +359,37 @@ namespace Tango.MachineStudio.Statistics.ViewModels
}
}
+ #region GenerateS_StatisticsValueCollection
+
+ /// <summary>
+ /// Generates the statistics.
+ /// </summary>
protected void GenerateStatistics()
{
StatisticsValueCollection.Clean();
GenerateTotalRunsLength();
GenerateRunsDuration();
- GenerateUploadDuration();
- GenerateHeatingDuration();
+ GenerateAverageUploadDuration();
+ GenerateAverageHeatingDuration();
GenerateTotalThreadConsumption();
GeneratePieCharts();
CreateThreadConsumptionPerThread();
GenerateAllLiquidQuantities();
}
-
+
+ /// <summary>
+ /// Generates the total length of the job runs.
+ /// </summary>
protected void GenerateTotalRunsLength()
{
double val = JobRuns.Where(z => z.JobRun.EndPosition > 0).Sum(x => x.JobRun.JobLength);
StatisticsValueCollection.AddStatisticsValue("Total Runs Length", val, " m");
}
+ /// <summary>
+ /// Generates the duration and average of the job runs.
+ /// </summary>
protected void GenerateRunsDuration()
{
var selection = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.JobRun.EndDate != null && z.JobRun.ActualStartDate != null);
@@ -385,26 +399,36 @@ namespace Tango.MachineStudio.Statistics.ViewModels
StatisticsValueCollection.AddStatisticsValue("Average Runs Duration", average, " hours");
}
- protected void GenerateUploadDuration()
+ /// <summary>
+ /// Generates the average upload duration of the job runs.
+ /// </summary>
+ protected void GenerateAverageUploadDuration()
{
- var val = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.UploadDuration != null).Average(x => x.UploadDuration.Value.Ticks);
- TimeSpan ts = new TimeSpan(Convert.ToInt64(val));
- StatisticsValueCollection.AddStatisticsValue("Average Upload Duration", Math.Max(ts.TotalMinutes, 0), " minutes");
+ var average = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.UploadDuration != null && z.UploadDuration.Value.Ticks > 0).Average(x => x.UploadDuration.Value.TotalMinutes);
+ StatisticsValueCollection.AddStatisticsValue("Average Upload Duration", Math.Max(average, 0), " minutes");
}
- protected void GenerateHeatingDuration()
+ /// <summary>
+ /// Generates the average duration heating of the job runs.
+ /// </summary>
+ protected void GenerateAverageHeatingDuration()
{
- var val = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.HeatingDuration != null).Average(x => x.HeatingDuration.Value.Ticks);
- TimeSpan ts = new TimeSpan(Convert.ToInt64(val));
- StatisticsValueCollection.AddStatisticsValue("Average Heating Duration", Math.Max(ts.TotalMinutes, 0), " minutes");
+ var average = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.HeatingDuration != null && z.HeatingDuration.Value.Ticks > 0).Average(x => x.HeatingDuration.Value.TotalMinutes);
+ StatisticsValueCollection.AddStatisticsValue("Average Heating Duration", Math.Max(average, 0), " minutes");
}
+ /// <summary>
+ /// Generates the total thread consumption by EndPosition.
+ /// </summary>
protected void GenerateTotalThreadConsumption()
{
double val = JobRuns.Where(z => z.JobRun.EndPosition > 0).Sum(x => x.JobRun.EndPosition);
StatisticsValueCollection.AddStatisticsValue("Total Thread Consumption", val, " m");
}
+ /// <summary>
+ /// Generates the pie charts in percentage: JobSource, JobRunStatus, Gradient.
+ /// </summary>
protected void GeneratePieCharts()
{
int PPCCount = JobRuns.Count(x => x.JobRun.Source == JobSource.Local);
@@ -422,6 +446,9 @@ namespace Tango.MachineStudio.Statistics.ViewModels
}
+ /// <summary>
+ /// Creates the thread consumption per thread.
+ /// </summary>
protected void CreateThreadConsumptionPerThread()
{
var temp = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.Rml != null).GroupBy(x => x.Rml.Name);
@@ -429,6 +456,9 @@ namespace Tango.MachineStudio.Statistics.ViewModels
StatisticsValueCollection.CreateThreadConsumptionPerThread(result);
}
+ /// <summary>
+ /// Generates all liquid quantities.
+ /// </summary>
protected void GenerateAllLiquidQuantities()
{
var db_liquidQuantities = JobRuns.Where(z => z.JobRun.EndPosition > 0 && z.JobRun.LiquidQuantities.Count > 0).Select(y=> y.JobRun.LiquidQuantities).ToList();
@@ -436,13 +466,14 @@ namespace Tango.MachineStudio.Statistics.ViewModels
foreach (LiquidTypes ltype in (LiquidTypes[])Enum.GetValues(typeof(LiquidTypes)))
{
- var liquidQuantityByTypeList = db_liquidQuantities.Select(x => x.SingleOrDefault(y => y.LiquidType == ltype)).Where(x=>x!=null);
+ var liquidQuantityByTypeList = db_liquidQuantities.Select(x => x.FirstOrDefault(y => y.LiquidType == ltype)).Where(x=>x!=null);
var count = liquidQuantityByTypeList != null ? liquidQuantityByTypeList.Sum(x => x.Quantity) : 0;
JobRunLiquidQuantity lq = new JobRunLiquidQuantity() { LiquidType = ltype, Quantity = count };
allLiquidQuantities.Add(lq);
}
StatisticsValueCollection.GenerateStatisticsLiquidQuantity(allLiquidQuantities);
}
+ #endregion
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
index 4790402d5..58d94aca1 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Statistics/Views/JobRunsView.xaml
@@ -554,13 +554,24 @@
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text=": "/>
- <TextBlock Text="{Binding Value, StringFormat={}{0:0.0}}"/>
+ <TextBlock Text="{Binding Value, StringFormat={}{0:0.00}}"/>
<TextBlock Text="{Binding Unit}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
- <TextBlock Margin="0 10 0 0">Total Thread Consumption per thread:</TextBlock>
+ <TextBlock Margin="0 10 0 0" Text="Total Thread Consumption per thread:">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Visibility" Value="Visible" />
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding StatisticsValueCollection.ThreadConsumptionPerThreadCollection.Count}" Value="0">
+ <Setter Property="Visibility" Value="Collapsed" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
<ItemsControl ItemsSource="{Binding StatisticsValueCollection.ThreadConsumptionPerThreadCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
@@ -669,6 +680,16 @@
<Run Text="Total liquid quantities for all: "/>
<Run Text="{Binding StatisticsValueCollection.TotalLiquidQuantities, Converter={StaticResource NanoLiterToLiterFormatConverter}}"></Run>
<Run Text=" liters"></Run>
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Visibility" Value="Visible" />
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding StatisticsValueCollection.LiquidQuantities.Count}" Value="0">
+ <Setter Property="Visibility" Value="Collapsed" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
</TextBlock>
</DockPanel>
</Border>