private async void RefreshFilteredMessages() { if (waiting) { return; } waiting = true; await Task.Delay(500); waiting = false; var selection = await Dispatcher.InvokeAsync(() => session.ActiveAssetView.SelectedAssets.ToList()); FilteredMessages.Clear(); var ids = await Task.Run(() => { var result = new HashSet <AssetId>(); foreach (var asset in selection) { result.Add(asset.Id); var dependencyManager = asset.AssetItem.Package.Session.DependencyManager; var dependencies = dependencyManager.ComputeDependencies(asset.AssetItem.Id, AssetDependencySearchOptions.Out | AssetDependencySearchOptions.Recursive, ContentLinkType.All); if (dependencies != null) { foreach (var reference in dependencies.LinksOut) { result.Add(reference.Item.Id); } } } return(result); }); var selectedLoggers = loggers.Where(x => ids.Contains(x.Key.AssetId)); foreach (var loggerResult in selectedLoggers.Select(x => x.Value).OfType <LoggerResult>()) { FilteredMessages.AddRange(loggerResult.Messages); } ErrorCount = FilteredMessages.Count(x => x.IsAtLeast(LogMessageType.Warning)); }
private void updateFilter() { if (_filterDuringDay) { ObservableCollection <StateChanged> newColl = new ObservableCollection <StateChanged>(); DateTime currDate = DateTime.MinValue; bool first = true; foreach (var sc in _data.Messages) { if (sc.Time.Date != currDate.Date) { newColl.Add(sc); currDate = sc.Time.Date; first = true; } else if (sc.Time.Date == currDate.Date && first) { newColl.Add(sc); first = false; } else { newColl.RemoveAt(newColl.Count - 1); newColl.Add(sc); } } FilteredMessages.Clear(); foreach (var sc in newColl) { FilteredMessages.Add(sc); } } else { FilteredMessages.Clear(); foreach (var sc in Messages) { FilteredMessages.Add(sc); } } }