Beispiel #1
0
        public override async Task Initialize()
        {
            await base.Initialize();

            navigationFromEditTimeEntryViewModelStopwatch = stopwatchProvider.Get(MeasuredOperation.OpenSelectProjectFromEditView);
            stopwatchProvider.Remove(MeasuredOperation.OpenSelectProjectFromEditView);

            var workspaces = await interactorFactory.GetAllWorkspaces().Execute();

            shouldShowProjectCreationSuggestion = workspaces.Any(ws => ws.IsEligibleForProjectCreation());
            allWorkspaces = workspaces.ToList();
            UseGrouping   = allWorkspaces.Count > 1;

            dataSource.Projects
            .GetAll()
            .Select(projects => projects.Any())
            .Subscribe(hasProjects => IsEmpty = !hasProjects);

            infoSubject.AsObservable()
            .StartWith(Text)
            .Select(text => text.SplitToQueryWords())
            .ObserveOn(schedulerProvider.BackgroundScheduler)
            .SelectMany(query => interactorFactory.GetProjectsAutocompleteSuggestions(query).Execute())
            .SubscribeOn(schedulerProvider.MainScheduler)
            .Select(suggestions => suggestions.Cast <ProjectSuggestion>())
            .Select(setSelectedProject)
            .Subscribe(onSuggestions);
        }
        public IObservable <IEnumerable <AutocompleteSuggestion> > Execute()
        {
            var wordsToQuery = queryInfo.Text.SplitToQueryWords();

            switch (queryInfo.SuggestionType)
            {
            case AutocompleteSuggestionType.Projects:
                return(interactorFactory.GetProjectsAutocompleteSuggestions(wordsToQuery).Execute());

            case AutocompleteSuggestionType.Tags:
                return(interactorFactory.GetTagsAutocompleteSuggestions(wordsToQuery).Execute());
            }

            return(wordsToQuery.Count == 0
                ? Observable.Return(QuerySymbolSuggestion.Suggestions)
                : interactorFactory.GetTimeEntriesAutocompleteSuggestions(wordsToQuery).Execute());
        }
Beispiel #3
0
        public override async Task Initialize(SelectProjectParameter parameter)
        {
            await base.Initialize(parameter);

            creationEnabled = parameter.CreationEnabled;
            taskId          = parameter.TaskId;
            projectId       = parameter.ProjectId;
            workspaceId     = parameter.WorkspaceId;

            var workspaces = await interactorFactory.GetAllWorkspaces().Execute();

            projectCreationSuggestionsAreEnabled = workspaces.Any(ws => ws.IsEligibleForProjectCreation());
            UseGrouping = workspaces.Count() > 1;

            FilterText.Subscribe(async text =>
            {
                var suggestions = interactorFactory.GetProjectsAutocompleteSuggestions(text.SplitToQueryWords()).Execute().SelectMany(x => x).ToEnumerable()
                                  .Cast <ProjectSuggestion>()
                                  .Select(setSelectedProject);

                var collectionSections = suggestions
                                         .GroupBy(project => project.WorkspaceId)
                                         .Select(grouping => grouping.OrderBy(projectSuggestion => projectSuggestion.ProjectName))
                                         .OrderBy(grouping => grouping.First().WorkspaceName)
                                         .Select(grouping => collectionSection(grouping, prependNoProject: string.IsNullOrEmpty(text)))
                                         .ToList();

                if (creationEnabled && shouldSuggestCreation(text))
                {
                    var createEntitySuggestion = new CreateEntitySuggestion(Resources.CreateProject, text);
                    var section = new SectionModel <string, AutocompleteSuggestion>(null, new[] { createEntitySuggestion });
                    collectionSections.Insert(0, section);
                }

                if (collectionSections.None())
                {
                    var workspace           = await interactorFactory.GetWorkspaceById(workspaceId).Execute();
                    var noProjectSuggestion = ProjectSuggestion.NoProject(workspace.Id, workspace.Name);
                    collectionSections.Add(
                        new SectionModel <string, AutocompleteSuggestion>(null, new[] { noProjectSuggestion })
                        );
                }

                suggestionsSubject.OnNext(collectionSections.ToImmutableList());
            });
        }
        public override async Task Initialize()
        {
            await base.Initialize();

            var workspaces = await interactorFactory.GetAllWorkspaces().Execute();

            allWorkspaces = workspaces.ToList();
            UseGrouping   = allWorkspaces.Count > 1;

            dataSource.Projects
            .GetAll()
            .Select(projects => projects.Any())
            .Subscribe(hasProjects => IsEmpty = !hasProjects);

            infoSubject.AsObservable()
            .StartWith(Text)
            .Select(text => text.SplitToQueryWords())
            .SelectMany(query => interactorFactory.GetProjectsAutocompleteSuggestions(query).Execute())
            .Select(suggestions => suggestions.Cast <ProjectSuggestion>())
            .Select(setSelectedProject)
            .Subscribe(onSuggestions);
        }