diff --git a/CBSVisualizer/CBSVisualizer.Services.SettingsService/SettingService.cs b/CBSVisualizer/CBSVisualizer.Services.SettingsService/SettingService.cs index 0f60a91149d5a3aa1501565e35a12227ebfc6c22..5970161612e580a2023ac9ee757fa9b14695fddd 100644 --- a/CBSVisualizer/CBSVisualizer.Services.SettingsService/SettingService.cs +++ b/CBSVisualizer/CBSVisualizer.Services.SettingsService/SettingService.cs @@ -35,7 +35,9 @@ namespace CBSVisualizer.Services.SettingService var statisticsGroupMembers = new ObservableCollection<ISetting>() { new StringSetting("histogram_buckets", "Amount of Histogram Bins", "1000"), - new BooleanSetting("boxplot_display_besteffort_tt", "Box Plot: Show BestEffort and TT Queue?", false) + new BooleanSetting("boxplot_display_besteffort_tt", "Box Plot: Show BestEffort and TT Queue?", false), + new BooleanSetting("filter_raw_data", "Filter raw data? (outlier elimination)", true), + new StringSetting("raw_data_upper_limit", "Upper Limit (inclusive) of raw delay data [ms]", "600") }; var statisticsGroup = new SettingGroup("Statistics", statisticsGroupMembers); diff --git a/CBSVisualizer/CBSVisualizer.Services.StatisticsService/StatisticsService.cs b/CBSVisualizer/CBSVisualizer.Services.StatisticsService/StatisticsService.cs index e2ab61f765d7ec5596f02b794bf3c18e879234a2..ff022e8960d7de1793e55eefb3ac735d78c2235e 100644 --- a/CBSVisualizer/CBSVisualizer.Services.StatisticsService/StatisticsService.cs +++ b/CBSVisualizer/CBSVisualizer.Services.StatisticsService/StatisticsService.cs @@ -167,16 +167,25 @@ namespace CBSVisualizer.Services.StatisticsService return (xAxis, yAxis); } - private static List<double> CalculateDelays(ConcurrentBag<PacketTimestampCollection> data) + private List<double> CalculateDelays(ConcurrentBag<PacketTimestampCollection> data) { - return data.AsParallel().Select(collection => + // Calculate delays. + var delays = data.AsParallel().Select(collection => { if (collection.Arrival.HasValue && collection.Departure.HasValue) { return collection.Departure.Value.Subtract(collection.Arrival.Value).TotalMilliseconds; } return 0; - }).ToList(); + }); + + // Filter if the settings say so. + if (settings.GetSettingValue<bool>("filter_raw_data")) + { + delays = delays.AsParallel().Where(delay => delay <= settings.GetSettingValue<double>("raw_data_upper_limit")); + } + + return delays.ToList(); } } } diff --git a/CBSVisualizer/CBSVisualizer/Views/MainWindow.xaml b/CBSVisualizer/CBSVisualizer/Views/MainWindow.xaml index 5478e0ce5b4f4ffc5946ff4888652c9ee10863e9..0f60e99e75e704c9a73f8ff4abaf6b803044eb95 100644 --- a/CBSVisualizer/CBSVisualizer/Views/MainWindow.xaml +++ b/CBSVisualizer/CBSVisualizer/Views/MainWindow.xaml @@ -10,6 +10,8 @@ Background="{DynamicResource MaterialDesignPaper}" TextElement.FontWeight="Medium" TextElement.FontSize="14" + WindowState="Maximized" + SizeToContent="Manual" FontFamily="{materialDesign:MaterialDesignFont}"> <Grid> <Grid.RowDefinitions>