private static int GetNodeCount(BuildTreeNodeViewModel node)
        {
            var count = 0;

            foreach (var child in node.Children)
            {
                count += GetNodeCount(child);
                count += 1;
            }

            return(count);
        }
        private static int GetMaxDepth(BuildTreeNodeViewModel node, int currentDepth = 0)
        {
            var maxDepth = currentDepth;

            foreach (var child in node.Children)
            {
                var deepestChildDepth = GetMaxDepth(child, currentDepth + 1);
                maxDepth = deepestChildDepth;
            }

            return(maxDepth);
        }
 private void RemoveTaggedNodes(BuildTreeNodeViewModel tree, List <BuildTreeNodeViewModel> taggedNodes)
 {
     foreach (var node in tree.Children.ToList())
     {
         if (taggedNodes.Contains(node))
         {
             tree.Children.Remove(node);
         }
         else
         {
             RemoveTaggedNodes(node, taggedNodes);
         }
     }
 }
예제 #4
0
        private static int SetCurrentDepths(BuildTreeNodeViewModel node, int currentDepth = 0)
        {
            node.CurrentTreeLevelDepth = currentDepth;

            var maxDepth = currentDepth;

            foreach (var child in node.Children)
            {
                var deepestChildDepth = SetCurrentDepths(child, currentDepth + 1);
                maxDepth = deepestChildDepth;
            }

            return(maxDepth);
        }
        private static void SetBuildIsFromPullRequest(BuildTreeNodeViewModel node, bool parentIsPullRequest = false)
        {
            if (node is BranchGroupNodeViewModel asBranch && asBranch.IsPullRequest)
            {
                parentIsPullRequest = true;
            }

            foreach (var child in node.Children)
            {
                SetBuildIsFromPullRequest(child, parentIsPullRequest);
            }

            if (node is BuildNodeViewModel asBuild)
            {
                asBuild.IsFromPullRequest = parentIsPullRequest;
            }
        }
        private void MergeInternal(BuildTreeNodeViewModel tree1, BuildTreeNodeViewModel tree2, List <BuildTreeNodeViewModel> taggedNodes)
        {
            var insertTarget = tree1;
            var nodeToInsert = tree2;

            var subTree = insertTarget.Children.FirstOrDefault(node => node.NodeSource.Equals(nodeToInsert.NodeSource) && !node.IsRemoving);

            if (subTree != null)
            {
                foreach (var child in nodeToInsert.Children)
                {
                    MergeInternal(subTree, child, taggedNodes);
                }

                taggedNodes.Remove(subTree);
                subTree.BackendPropertiesChanged();
            }
            else
            {
                tree1.Children.Add(nodeToInsert);
                taggedNodes.Remove(tree1);
            }
        }
 private static void SetMaxDepths(BuildTreeNodeViewModel node, in int maxDepth)