61 lines
2.0 KiB
Plaintext
61 lines
2.0 KiB
Plaintext
@using Blazor.Diagrams
|
|
@using Blazor.Diagrams.Core.Anchors
|
|
@using Blazor.Diagrams.Core.Geometry
|
|
@using Blazor.Diagrams.Core.Models
|
|
@using DotNetSolutionTools.Core.Models
|
|
|
|
<h3>BuildOrderDiagram</h3>
|
|
<div style="width: 100%; height: 400px; border: black">
|
|
<CascadingValue Value="Diagram" IsFixed="true">
|
|
<DiagramCanvas />
|
|
</CascadingValue>
|
|
</div>
|
|
|
|
@code {
|
|
[Parameter, EditorRequired]
|
|
public List<Project> 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));
|
|
}
|
|
} |