Пример #1
0
        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);
         }
     }
 }