Exemple #1
0
        private IObservable <IEnumerable <AutocompleteSuggestion> > querySuggestions(
            IEnumerable <string> wordsToQuery, AutocompleteSuggestionType suggestionType)
        {
            var queryListIsEmpty = !wordsToQuery.Any();

            switch (suggestionType)
            {
            case AutocompleteSuggestionType.Projects when queryListIsEmpty:
                return(database.Projects.GetAll()
                       .Select(ProjectSuggestion.FromProjectsPrependingEmpty));

            case AutocompleteSuggestionType.Projects:
                return(wordsToQuery
                       .Aggregate(database.Projects.GetAll(), (obs, word) => obs.Select(filterProjectsByWord(word)))
                       .Select(ProjectSuggestion.FromProjects));

            case AutocompleteSuggestionType.Tags:
                return(wordsToQuery
                       .Aggregate(database.Tags.GetAll(), (obs, word) => obs.Select(filterTagsByWord(word)))
                       .Select(TagSuggestion.FromTags));
            }

            if (queryListIsEmpty)
            {
                return(Observable.Return(QuerySymbolSuggestion.Suggestions));
            }

            return(wordsToQuery
                   .Aggregate(database.TimeEntries.GetAll(), (obs, word) => obs.Select(filterTimeEntriesByWord(word)))
                   .Select(TimeEntrySuggestion.FromTimeEntries));
        }
Exemple #2
0
        public IObservable <IEnumerable <AutocompleteSuggestion> > Query(string queryText, AutocompleteSuggestionType suggestionType)
        {
            var wordsToQuery = queryText.Split(' ').Where(word => !string.IsNullOrEmpty(word)).Distinct();

            return(querySuggestions(wordsToQuery, suggestionType));
        }
Exemple #3
0
 public QueryInfo(string text, AutocompleteSuggestionType suggestionType)
 {
     Text           = text;
     SuggestionType = suggestionType;
 }