From 847d1200e694b0548e053881ade1249bcbbdbcfc Mon Sep 17 00:00:00 2001 From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at> Date: Fri, 21 May 2021 08:28:48 +0200 Subject: [PATCH] Added Text wrapping to output view, Added label to airdrag view --- .gitignore | 1 + .../Implementation/JobListViewModel.cs | 107 ++++++++++++++++++ .../Multistage/MultistageAirDragView.xaml | 4 +- VECTO3GUI2020/Views/OutputView.xaml | 8 +- 4 files changed, 117 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c2960974ac..0f4bd7bb9e 100644 --- a/.gitignore +++ b/.gitignore @@ -217,3 +217,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/ /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test+.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test.VIF_Report_5.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs index 8b001c0ecd..c98a24d601 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs @@ -11,6 +11,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; +using System.Windows.Forms; using System.Windows.Input; using System.Xml; using System.Xml.Linq; @@ -335,7 +336,113 @@ namespace VECTO3GUI2020.ViewModel.Implementation }); } } + foreach (var cycle in jobContainer.GetCycleTypes()) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, Message = $"Detected cycle {cycle.Name}: {cycle.CycleType}" + }); + } + + outputMessages.Report(new MessageEntry() { + Type = MessageType.StatusMessage, + Message = $"Starting simulation ({jobs.Length} jobs, {jobContainer.GetProgress().Count} runs)", + }); + + var start = Stopwatch.StartNew(); + jobContainer.Execute(true); + while (!jobContainer.AllCompleted) + { + if (ct.IsCancellationRequested) + { + jobContainer.Cancel(); + return; + } + + var jobProgress = jobContainer.GetProgress(); + var sumProgress = jobProgress.Sum(x => x.Value.Progress); + var duration = start.Elapsed.TotalSeconds; + + progress.Report(Convert.ToInt32(sumProgress * 100 / jobProgress.Count)); + //outputMessages.Report( + // new MessageEntry() + // { + // Type = VectoSimulationProgress.MsgType.Progress, + // Message = string.Format( + // "Duration: {0:F1}s, Curernt Progress: {1:P} ({2})", duration, sumProgress / progress.Count, + // string.Join(", ", progress.Select(x => string.Format("{0,4:P}", x.Value.Progress)))) + // }); + var justFinished = jobProgress.Where(x => x.Value.Done & !finishedRuns.Contains(x.Key)) + .ToDictionary(x => x.Key, x => x.Value); + //PrintRuns(justFinished, fileWriters); + finishedRuns.AddRange(justFinished.Select(x => x.Key)); + Thread.Sleep(100); + } + start.Stop(); + var remainingRuns = jobContainer.GetProgress().Where(x => x.Value.Done && !finishedRuns.Contains(x.Key)) + .ToDictionary(x => x.Key, x => x.Value); + //PrintRuns(remainingRuns, fileWriters); + + finishedRuns.Clear(); + fileWriters.Clear(); + foreach (var progressEntry in jobContainer.GetProgress()) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = + string.Format("{0,-60} {1,8:P} {2,10:F2}s - {3}", + $"{progressEntry.Value.RunName} {progressEntry.Value.CycleName} {progressEntry.Value.RunSuffix}", + progressEntry.Value.Progress, + progressEntry.Value.ExecTime / 1000.0, + progressEntry.Value.Success ? "Success" : "Aborted") + }); + if (!progressEntry.Value.Success) + { + outputMessages.Report( + new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = progressEntry.Value.Error.Message + } + ); + } + } + foreach (var jobEntry in jobs) + { + var w = new FileOutputWriter(GetOutputDirectory(jobEntry.DataSource.SourceFile)); + foreach (var entry in new Dictionary<string, string>() { { w.XMLFullReportName, "XML ManufacturereReport" }, { w.XMLCustomerReportName, "XML Customer Report" }, { w.XMLVTPReportName, "VTP Report" }, { w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File" } }) + { + if (File.Exists(entry.Key)) + { + outputMessages.Report( + new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format( + "{2} for '{0}' written to {1}", Path.GetFileName(jobEntry.DataSource.SourceFile), entry.Key, entry.Value), + //Link = "<XML>" + entry.Key + }); + } + } + } + + if (File.Exists(sumFileWriter.SumFileName)) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format("Sum file written to {0}", sumFileWriter.SumFileName), + //Link = "<CSV>" + sumFileWriter.SumFileName + }); + } + + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds) + }); } diff --git a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml index 3eb4584508..2b7cf405df 100644 --- a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml +++ b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml @@ -30,13 +30,13 @@ </DockPanel> <StackPanel HorizontalAlignment="Stretch" Margin="4" > - + <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> <StackPanel Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}"> - <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/> </StackPanel> + <Label Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=invert}">No data set</Label> <Label Style="{DynamicResource LabelStyle1}">Data from File</Label> <ContentControl Content="{Binding AirDragViewModel}" Visibility="{Binding AirDragViewModel, Converter={StaticResource NullToVisibilityConverter}}"> diff --git a/VECTO3GUI2020/Views/OutputView.xaml b/VECTO3GUI2020/Views/OutputView.xaml index 03784a8b05..89a5c64cec 100644 --- a/VECTO3GUI2020/Views/OutputView.xaml +++ b/VECTO3GUI2020/Views/OutputView.xaml @@ -14,7 +14,13 @@ IsReadOnly="True" HeadersVisibility="All" RowHeaderWidth="5" Name="MessageList"> <DataGrid.Columns> - <DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*" /> + <DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*"> + <DataGridTextColumn.ElementStyle> + <Style> + <Setter Property="TextBlock.TextWrapping" Value="Wrap" /> + </Style> + </DataGridTextColumn.ElementStyle> + </DataGridTextColumn> <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" /> </DataGrid.Columns> <DataGrid.RowStyle> -- GitLab