@using Blazor.Diagrams @using Blazor.Diagrams.Core.Anchors @using Blazor.Diagrams.Core.Geometry @using Blazor.Diagrams.Core.Models @using DotNetSolutionTools.Core.Models

BuildOrderDiagram

@code { [Parameter, EditorRequired] public List Projects { get; set; } private BlazorDiagram Diagram { get; set; } = null!; protected override void OnInitialized() { Diagram = new BlazorDiagram(); foreach (var project in Projects) { var node = Diagram.Nodes.Add(new NodeModel() { Title = project.Name, }); foreach (var dependency in project.DependsOn) { var dependencyNode = Diagram.Nodes.Add(new NodeModel() { Title = dependency.Name }); Diagram.Links.Add(new LinkModel(node, dependencyNode)); } } } protected void Example() { Diagram = new BlazorDiagram(); var firstNode = Diagram.Nodes.Add(new NodeModel(position: new Point(50, 50)) { Title = "Node 1" }); var secondNode = Diagram.Nodes.Add(new NodeModel(position: new Point(200, 100)) { Title = "Node 2" }); var leftPort = secondNode.AddPort(PortAlignment.Left); var rightPort = secondNode.AddPort(PortAlignment.Right); // The connection point will be the intersection of // a line going from the target to the center of the source var sourceAnchor = new ShapeIntersectionAnchor(firstNode); // The connection point will be the port's position var targetAnchor = new SinglePortAnchor(leftPort); var link = Diagram.Links.Add(new LinkModel(sourceAnchor, targetAnchor)); } }