/// <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); }
/// <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); }