コード例 #1
0
        /// <summary>
        /// Returns an instance of the <see cref="RelationshipMatrixRibbonViewModel"/> class
        /// </summary>
        /// <param name="iteration">The <see cref="Iteration"/> containing the information</param>
        /// <param name="session">The <see cref="ISession"/></param>
        /// <param name="thingDialogNavigationService">The <see cref="IThingDialogNavigationService"/></param>
        /// <param name="panelNavigationService">The <see cref="IPanelNavigationService"/></param>
        /// <param name="dialogNavigationService">The dialog navigation service</param>
        /// <param name="pluginSettingService">The plugin's settings service</param>
        /// <returns>An instance of <see cref="RelationshipMatrixViewModel"/></returns>
        public static RelationshipMatrixViewModel InstantiatePanelViewModel(Iteration iteration, ISession session, IThingDialogNavigationService thingDialogNavigationService, IPanelNavigationService panelNavigationService, IDialogNavigationService dialogNavigationService, IPluginSettingsService pluginSettingService)
        {
            var stopWatch = Stopwatch.StartNew();
            var viewModel = new RelationshipMatrixViewModel(iteration, session, thingDialogNavigationService, panelNavigationService, dialogNavigationService, pluginSettingService);

            stopWatch.Stop();
            Logger.Info("The Relationship Matrix opened in {0}", stopWatch.Elapsed.ToString("hh':'mm':'ss'.'fff"));

            return(viewModel);
        }
コード例 #2
0
        /// <summary>
        /// Filters and sort the <paramref name="source" /> with the <paramref name="sourceConfigurationViewModel" />
        /// </summary>
        /// <param name="source">The <see cref="Thing" /> to filter</param>
        /// <param name="sourceConfigurationViewModel">The filter and sort settings</param>
        /// <returns>The filtered <see cref="Thing" /></returns>
        private IEnumerable <DefinedThing> FilterAndSortSourceByCategoryAndOwner(IReadOnlyList <DefinedThing> source,
                                                                                 SourceConfigurationViewModel sourceConfigurationViewModel)
        {
            var sourceXCatThing = new List <DefinedThing>();

            if (sourceConfigurationViewModel?.SelectedCategories == null ||
                sourceConfigurationViewModel.SelectedCategories.Count == 0)
            {
                return(sourceXCatThing);
            }

            foreach (var definedThing in source)
            {
                if (!this.IsDefinedThingDisplayAllowed(definedThing))
                {
                    continue;
                }

                var thing = (ICategorizableThing)definedThing;

                if (RelationshipMatrixViewModel.IsCategoryApplicableToConfiguration(thing, sourceConfigurationViewModel))
                {
                    if (definedThing is IOwnedThing ownedThing)
                    {
                        if (sourceConfigurationViewModel.SelectedOwners.Contains(ownedThing.Owner))
                        {
                            sourceXCatThing.Add(definedThing);
                        }
                    }
                    else
                    {
                        sourceXCatThing.Add(definedThing);
                    }
                }
            }

            if (sourceConfigurationViewModel.SelectedSortOrder == SortOrder.Ascending)
            {
                sourceXCatThing = sourceConfigurationViewModel.SelectedSortKind == DisplayKind.Name
                    ? sourceXCatThing.OrderBy(x => x.Name).ToList()
                    : sourceXCatThing.OrderBy(x => x.ShortName).ToList();
            }
            else
            {
                sourceXCatThing = sourceConfigurationViewModel.SelectedSortKind == DisplayKind.Name
                    ? sourceXCatThing.OrderByDescending(x => x.Name).ToList()
                    : sourceXCatThing.OrderByDescending(x => x.ShortName).ToList();
            }

            return(sourceXCatThing);
        }