public async Task <BuildTreeViewModel> ProduceAsync(IBuildTree tree, BuildTreeViewModel?existingTree, IBuildTreeSortingDefinition buildTreeSortingDefinition) { var stopWatch = new Stopwatch(); stopWatch.Start(); Log.Debug().Message("Producing ViewModel for BuildTree.").Write(); var buildTreeResult = await Task.Run(() => { var groupsAsList = tree.GroupDefinition.ToList(); var sortingsAsList = buildTreeSortingDefinition.ToList(); Log.Debug().Message($"Grouping by {string.Join(",", tree.GroupDefinition)}.").Write(); var buildTree = new BuildTreeViewModel(tree); var firstLevelSorting = !buildTreeSortingDefinition.Any() ? SortingDefinition.AlphabeticalDescending : buildTreeSortingDefinition.First(); buildTree.SetSorting(firstLevelSorting); var children = CreateChildren(tree.Children, groupsAsList, sortingsAsList, 0); foreach (var childVm in children) { buildTree.Children.Add(childVm); } return(buildTree); }); if (existingTree != null) { Log.Debug().Message("Merging with existing tree.").Write(); buildTreeResult = Merge(existingTree, buildTreeResult); } var treeDepth = GetMaxDepth(buildTreeResult); Log.Debug().Message($"Setting max depths, which is {treeDepth}.").Write(); SetMaxDepths(buildTreeResult, treeDepth); SetBuildIsFromPullRequest(buildTreeResult); stopWatch.Stop(); Log.Info().Message($"Produced ViewModels for BuildTree in {stopWatch.ElapsedMilliseconds} ms. Displayed nodes: {GetNodeCount(buildTreeResult)}").Write(); return(buildTreeResult); }
public BuildTreeViewModel Produce(IBuildTree tree, BuildTreeViewModel existingTree) { var groupsAsList = tree.GroupDefinition.ToList(); var buildTree = new BuildTreeViewModel(tree); var children = CreateChildren(tree.Children, groupsAsList); foreach (var childVm in children) { buildTree.Children.Add(childVm); } if (existingTree != null) { buildTree = Merge(existingTree, buildTree); } var treeDepth = SetCurrentDepths(buildTree); SetMaxDepths(buildTree, treeDepth); return(buildTree); }
public void Notify(IBuildTree tree) { Updated?.Invoke(this, new PipelineUpdateEventArgs(tree)); }
public PipelineUpdateEventArgs(IBuildTree tree) { Tree = tree; }
public void Notify(IBuildTree tree, IEnumerable <INotification> delta) { Updated?.Invoke(this, new PipelineUpdateEventArgs(tree, delta)); }
public BuildTreeViewModel(IBuildTree tree) : base(tree) { _tree = tree; }
public PipelineUpdateEventArgs(IBuildTree tree, IEnumerable <INotification> notifications) { Tree = tree; Notifications = notifications; }