public ICollection <ExplorerItemNodeViewModel> GetItems(List <IDependencyVisualizationNode> nodes, IExplorerItemNodeViewModel parent, List <ExplorerItemNodeViewModel> acc, List <Guid> seenResource)
        {
            var items = new List <ExplorerItemNodeViewModel>(nodes.Count);

            foreach (var node in nodes)
            {
                if (!seenResource.Contains(Guid.Parse(node.ID)))
                {
                    var mainViewModel = CustomContainer.Get <IShellViewModel>();
                    var env           = mainViewModel?
                                        .ExplorerViewModel.Environments.FirstOrDefault(model => model.ResourceId == ResourceModel.Environment.EnvironmentID);
                    var exploreritem = env?.UnfilteredChildren.Flatten(model => model.UnfilteredChildren).FirstOrDefault(model => model.ResourceId == Guid.Parse(node.ID));
                    if (exploreritem != null)
                    {
                        items = GetItems(items, node, parent, ref acc, seenResource, exploreritem);
                    }
                }
            }
            return(items);
        }
        List <ExplorerItemNodeViewModel> GetItems(List <ExplorerItemNodeViewModel> items, IDependencyVisualizationNode node, IExplorerItemNodeViewModel parent, ref List <ExplorerItemNodeViewModel> acc, List <Guid> seenResource, IExplorerItemViewModel exploreritem)
        {
            var item = new ExplorerItemNodeViewModel(_server, parent, _popupController)
            {
                ResourceName   = exploreritem.ResourceName,
                TextVisibility = true,
                ResourceType   = exploreritem.ResourceType,
                IsMainNode     = exploreritem.ResourceName.Equals(ResourceModel.ResourceName),
                ResourceId     = Guid.Parse(node.ID)
            };

            if (node.NodeDependencies != null && node.NodeDependencies.Count > 0)
            {
                seenResource.Add(Guid.Parse(node.ID));
                item.Children = new ObservableCollection <IExplorerItemViewModel>(GetItems(node.NodeDependencies, item, acc, seenResource).Select(a => a as IExplorerItemViewModel));
            }
            else
            {
                seenResource.Add(Guid.Parse(node.ID));
                item.Children = new ObservableCollection <IExplorerItemViewModel>();
            }
            items.Add(item);
            acc.Add(item);
            return(items);
        }
Exemplo n.º 3
0
        public ICollection <ExplorerItemNodeViewModel> GetItems(List <IDependencyVisualizationNode> nodes, IExplorerItemNodeViewModel parent, List <ExplorerItemNodeViewModel> acc, List <Guid> seenResource)
        {
            List <ExplorerItemNodeViewModel> items = new List <ExplorerItemNodeViewModel>(nodes.Count);

            foreach (var node in nodes)
            {
                if (!seenResource.Contains(Guid.Parse(node.ID)))
                {
                    var mainViewModel = CustomContainer.Get <IShellViewModel>();
                    var env           = mainViewModel?
                                        .ExplorerViewModel.Environments.FirstOrDefault(model => model.ResourceId == ResourceModel.Environment.EnvironmentID);
                    var exploreritem = env?.UnfilteredChildren.Flatten(model => model.UnfilteredChildren).FirstOrDefault(model => model.ResourceId == Guid.Parse(node.ID));
                    if (exploreritem != null)
                    {
                        ExplorerItemNodeViewModel item = new ExplorerItemNodeViewModel(_server, parent, _popupController)
                        {
                            ResourceName   = exploreritem.ResourceName,
                            TextVisibility = true,
                            ResourceType   = exploreritem.ResourceType,
                            IsMainNode     = exploreritem.ResourceName.Equals(ResourceModel.ResourceName),
                            ResourceId     = Guid.Parse(node.ID)
                        };
                        if (node.NodeDependencies != null && node.NodeDependencies.Count > 0)
                        {
                            seenResource.Add(Guid.Parse(node.ID));
                            item.Children = new ObservableCollection <IExplorerItemViewModel>(GetItems(node.NodeDependencies, item, acc, seenResource).Select(a => a as IExplorerItemViewModel));
                        }
                        else
                        {
                            seenResource.Add(Guid.Parse(node.ID));
                            item.Children = new ObservableCollection <IExplorerItemViewModel>();
                        }
                        items.Add(item);
                        acc.Add(item);
                    }
                }
            }
            return(items);
        }