Exemplo n.º 1
0
        private void updateSearch()
        {
            queryChangedDebounce?.Cancel();

            if (!IsLoaded)
            {
                return;
            }

            if (State == Visibility.Hidden)
            {
                return;
            }

            BeatmapSets   = null;
            ResultAmounts = null;

            getSetsRequest?.Cancel();

            if (api == null)
            {
                return;
            }

            if (Header.Tabs.Current.Value == DirectTab.Search && (Filter.Search.Text == string.Empty || currentQuery == string.Empty))
            {
                return;
            }

            previewTrackManager.StopAnyPlaying(this);

            getSetsRequest = new SearchBeatmapSetsRequest(currentQuery.Value ?? string.Empty,
                                                          ((FilterControl)Filter).Ruleset.Value,
                                                          Filter.DisplayStyleControl.Dropdown.Current.Value,
                                                          Filter.Tabs.Current.Value); //todo: sort direction (?)

            getSetsRequest.Success += response =>
            {
                Task.Run(() =>
                {
                    var sets = response.BeatmapSets.Select(r => r.ToBeatmapSet(rulesets)).ToList();

                    // may not need scheduling; loads async internally.
                    Schedule(() =>
                    {
                        BeatmapSets = sets;
                        recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value);
                    });
                });
            };

            api.Queue(getSetsRequest);
        }
Exemplo n.º 2
0
        private void updateSearch()
        {
            queryChangedDebounce?.Cancel();

            if (!IsLoaded)
            {
                return;
            }

            BeatmapSets   = null;
            ResultAmounts = null;

            getSetsRequest?.Cancel();

            if (api == null)
            {
                return;
            }

            if (Header.Tabs.Current.Value == DirectTab.Search && (Filter.Search.Text == string.Empty || currentQuery == string.Empty))
            {
                return;
            }

            getSetsRequest = new GetBeatmapSetsRequest(currentQuery,
                                                       ((FilterControl)Filter).Ruleset.Value,
                                                       Filter.DisplayStyleControl.Dropdown.Current.Value,
                                                       Filter.Tabs.Current.Value); //todo: sort direction (?)

            getSetsRequest.Success += r =>
            {
                BeatmapSets = r?.Select(response => response.ToBeatmapSet(rulesets));
                if (BeatmapSets == null)
                {
                    return;
                }

                var artists = new List <string>();
                var songs   = new List <string>();
                var tags    = new List <string>();
                foreach (var s in BeatmapSets)
                {
                    artists.Add(s.Metadata.Artist);
                    songs.Add(s.Metadata.Title);
                    tags.AddRange(s.Metadata.Tags.Split(' '));
                }

                ResultAmounts = new ResultCounts(distinctCount(artists), distinctCount(songs), distinctCount(tags));
            };

            api.Queue(getSetsRequest);
        }
Exemplo n.º 3
0
        private void updateSearch()
        {
            queryChangedDebounce?.Cancel();

            if (!IsLoaded)
            {
                return;
            }

            BeatmapSets   = null;
            ResultAmounts = null;

            getSetsRequest?.Cancel();

            if (api == null)
            {
                return;
            }

            if (Header.Tabs.Current.Value == DirectTab.Search && (Filter.Search.Text == string.Empty || currentQuery == string.Empty))
            {
                return;
            }

            getSetsRequest = new SearchBeatmapSetsRequest(currentQuery.Value ?? string.Empty,
                                                          ((FilterControl)Filter).Ruleset.Value,
                                                          Filter.DisplayStyleControl.Dropdown.Current.Value,
                                                          Filter.Tabs.Current.Value); //todo: sort direction (?)

            getSetsRequest.Success += response =>
            {
                Task.Run(() =>
                {
                    var onlineIds        = response.Select(r => r.OnlineBeatmapSetID).ToList();
                    var presentOnlineIds = beatmaps.QueryBeatmapSets(s => onlineIds.Contains(s.OnlineBeatmapSetID) && !s.DeletePending).Select(r => r.OnlineBeatmapSetID).ToList();
                    var sets             = response.Select(r => r.ToBeatmapSet(rulesets)).Where(b => !presentOnlineIds.Contains(b.OnlineBeatmapSetID)).ToList();

                    // may not need scheduling; loads async internally.
                    Schedule(() =>
                    {
                        BeatmapSets = sets;
                        recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value);
                    });
                });
            };

            api.Queue(getSetsRequest);
        }
Exemplo n.º 4
0
        private void updateSearch()
        {
            queryChangedDebounce?.Cancel();

            if (!IsLoaded)
            {
                return;
            }

            BeatmapSets   = null;
            ResultAmounts = null;

            getSetsRequest?.Cancel();

            if (api == null)
            {
                return;
            }

            if (Header.Tabs.Current.Value == DirectTab.Search && (Filter.Search.Text == string.Empty || currentQuery == string.Empty))
            {
                return;
            }

            getSetsRequest = new SearchBeatmapSetsRequest(currentQuery.Value ?? string.Empty,
                                                          ((FilterControl)Filter).Ruleset.Value,
                                                          Filter.DisplayStyleControl.Dropdown.Current.Value,
                                                          Filter.Tabs.Current.Value); //todo: sort direction (?)

            getSetsRequest.Success += r =>
            {
                BeatmapSets = r?.
                              Select(response => response.ToBeatmapSet(rulesets)).
                              Where(b => beatmaps.QueryBeatmapSet(q => q.OnlineBeatmapSetID == b.OnlineBeatmapSetID) == null);

                recreatePanels(Filter.DisplayStyleControl.DisplayStyle.Value);
            };

            api.Queue(getSetsRequest);
        }
Exemplo n.º 5
0
        public void Add(SarifLog newBaselineLog, SarifLog baselineLog, SarifLog currentLog)
        {
            Dictionary <string, ResultCounts> newAndRemovedPerUri = new Dictionary <string, ResultCounts>();

            foreach (Result result in newBaselineLog.EnumerateResults())
            {
                // Track New+Absent results per distinct first Result Uri
                Uri          first  = result.AllArtifactUris().FirstOrDefault();
                ResultCounts counts = null;
                if (!newAndRemovedPerUri.TryGetValue(first?.OriginalString ?? "", out counts))
                {
                    counts = new ResultCounts();
                    newAndRemovedPerUri[first.OriginalString] = counts;
                }

                counts.Add(result);
            }

            ChurnCount     += newAndRemovedPerUri.Values.Sum(counts => counts.ChurnCount);
            NewResultTotal += newAndRemovedPerUri.Values.Sum(counts => counts.NewCount);
            ResultCount    += currentLog.EnumerateResults().Count();
        }
Exemplo n.º 6
0
        public DirectOverlay()
        {
            RelativeSizeAxes = Axes.Both;

            // osu!direct colours are not part of the standard palette

            Waves.FirstWaveColour  = OsuColour.FromHex(@"19b0e2");
            Waves.SecondWaveColour = OsuColour.FromHex(@"2280a2");
            Waves.ThirdWaveColour  = OsuColour.FromHex(@"005774");
            Waves.FourthWaveColour = OsuColour.FromHex(@"003a4e");

            ScrollFlow.Children = new Drawable[]
            {
                resultCountsContainer = new FillFlowContainer
                {
                    AutoSizeAxes = Axes.Both,
                    Direction    = FillDirection.Horizontal,
                    Margin       = new MarginPadding {
                        Top = 5
                    },
                    Children = new Drawable[]
                    {
                        new OsuSpriteText
                        {
                            Text     = "Found ",
                            TextSize = 15,
                        },
                        resultCountsText = new OsuSpriteText
                        {
                            TextSize = 15,
                            Font     = @"Exo2.0-Bold",
                        },
                    }
                },
            };

            Filter.Search.Current.ValueChanged += text =>
            {
                if (text != string.Empty)
                {
                    Header.Tabs.Current.Value = DirectTab.Search;

                    if (Filter.Tabs.Current.Value == DirectSortCriteria.Ranked)
                    {
                        Filter.Tabs.Current.Value = DirectSortCriteria.Relevance;
                    }
                }
                else
                {
                    Header.Tabs.Current.Value = DirectTab.NewestMaps;

                    if (Filter.Tabs.Current.Value == DirectSortCriteria.Relevance)
                    {
                        Filter.Tabs.Current.Value = DirectSortCriteria.Ranked;
                    }
                }
            };
            ((FilterControl)Filter).Ruleset.ValueChanged             += ruleset => Scheduler.AddOnce(updateSearch);
            Filter.DisplayStyleControl.DisplayStyle.ValueChanged     += recreatePanels;
            Filter.DisplayStyleControl.Dropdown.Current.ValueChanged += rankStatus => Scheduler.AddOnce(updateSearch);

            Header.Tabs.Current.ValueChanged += tab =>
            {
                if (tab != DirectTab.Search)
                {
                    currentQuery.Value        = string.Empty;
                    Filter.Tabs.Current.Value = (DirectSortCriteria)Header.Tabs.Current.Value;
                    Scheduler.AddOnce(updateSearch);
                }
            };

            currentQuery.ValueChanged += v =>
            {
                queryChangedDebounce?.Cancel();

                if (string.IsNullOrEmpty(v))
                {
                    Scheduler.AddOnce(updateSearch);
                }
                else
                {
                    BeatmapSets   = null;
                    ResultAmounts = null;

                    queryChangedDebounce = Scheduler.AddDelayed(updateSearch, 500);
                }
            };

            currentQuery.BindTo(Filter.Search.Current);

            Filter.Tabs.Current.ValueChanged += sortCriteria =>
            {
                if (Header.Tabs.Current.Value != DirectTab.Search && sortCriteria != (DirectSortCriteria)Header.Tabs.Current.Value)
                {
                    Header.Tabs.Current.Value = DirectTab.Search;
                }

                Scheduler.AddOnce(updateSearch);
            };

            updateResultCounts();
        }