@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));
}
}