Beispiel #1
0
        public static IEnumerable<Node> OrderChildsBySiblingsDependencies(IReadOnlyList<Node> childs)
        {
            foreach (var child in childs.Where(child => child.Childs.Any()))
            {
                child.SetChildren(OrderChildsBySiblingsDependencies(child.Childs));
            }

            if (!childs.SiblingDependencies().Any())
            {
                if (childs.Any() && childs.First().Parent != null)
                    childs.First().Parent.Orientation = OrientationKind.Horizontal;
                return childs;
            }

            var oldChildList = childs.ToHashSet();
            var newChildOrder = GroupNodes(oldChildList);
            return newChildOrder;
        }