Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/NodeDev.Blazor.Server/project_.json

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions src/NodeDev.Blazor/Components/GraphCanvas.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public partial class GraphCanvas : Microsoft.AspNetCore.Components.ComponentBase
private Connection? PopupNodeConnection;
private Node? PopupNode;

private GraphNodeModel? SelectedNodeModel { get; set; }

private BlazorDiagram Diagram { get; set; } = null!;

#region OnInitialized
Expand Down Expand Up @@ -68,6 +70,7 @@ protected override void OnInitialized()
Diagram.Nodes.Removed += OnNodeRemoved;
Diagram.Links.Added += x => OnConnectionAdded(x, false);
Diagram.Links.Removed += OnConnectionRemoved;
Diagram.SelectionChanged += SelectionChanged;

}

Expand Down Expand Up @@ -591,6 +594,34 @@ public void OnNodeDoubleClick(Node node)

#endregion

#region SelectionChanged

private void SelectionChanged(SelectableModel obj)
{
var nodeModel = Diagram.Nodes.FirstOrDefault(x => x.Selected) as GraphNodeModel;

try
{
var path = nodeModel?.Node.SearchAllExecPaths([]);

foreach (var otherNodeModel in Diagram.Nodes.OfType<GraphNodeModel>())
{
foreach (var connection in otherNodeModel.Node.Outputs)
{
if (path != null && path.Contains(connection))
otherNodeModel.OnConnectionPathHighlighted(connection);
else
otherNodeModel.OnConnectionPathUnhighlighted(connection);
}

}
}
catch (Node.InfiniteLoopException)
{ }
}

#endregion

#endregion

#region ShowAddNode
Expand Down
30 changes: 28 additions & 2 deletions src/NodeDev.Blazor/DiagramsModels/GraphNodeModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,39 @@ internal void OnNodeExecuted(Connection exec)

}

internal void OnConnectionPathHighlighted(Connection connection)
{
var port = GetPort(connection);

foreach (var link in port.Links.OfType<LinkModel>())
{
if (!link.Classes.Contains("highlighted"))
link.Classes += " highlighted";

link.Refresh();
}
}

internal void OnConnectionPathUnhighlighted(Connection connection)
{
var port = GetPort(connection);

foreach (var link in port.Links.OfType<LinkModel>())
{
link.Classes = link.Classes.Replace(" highlighted", "");
link.Refresh();
}
}

internal async Task OnNodeExecuting(Connection exec)
{
var port = GetPort(exec);

foreach (var link in port.Links.OfType<LinkModel>())
{
link.Classes = "executing";
if(!link.Classes.Contains("executing"))
link.Classes += " executing";

link.Refresh();
}

Expand All @@ -50,7 +76,7 @@ internal async Task OnNodeExecuting(Connection exec)
{
foreach (var link in port.Links.OfType<LinkModel>())
{
link.Classes = "";
link.Classes = link.Classes.Replace(" executing", "");
link.Refresh();
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/NodeDev.Blazor/Index.razor
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
{
new Thread(() =>
{
Project.Run(new object?[1]);
Project.Run();
}).Start();
}

Expand Down
4 changes: 2 additions & 2 deletions src/NodeDev.Blazor/NodeDev.Blazor.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.3" />
<PackageReference Include="MudBlazor" Version="6.19.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.6" />
<PackageReference Include="MudBlazor" Version="6.20.0" />
</ItemGroup>

<ItemGroup>
Expand Down
8 changes: 7 additions & 1 deletion src/NodeDev.Blazor/wwwroot/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
padding: 0px;
}

g.diagram-link path {
g.diagram-link path{
transition: 2s linear stroke;
}

Expand All @@ -148,6 +148,12 @@ g.diagram-link.executing path {
stroke-width: 5px;
}

g.diagram-link.highlighted path {
transition: none;
stroke: blue !important;
stroke-width: 5px;
}

g.diagram-link path:not(.selection-helper) {
stroke-dasharray: 5;
animation: dash .5s linear infinite;
Expand Down
16 changes: 15 additions & 1 deletion src/NodeDev.Core/Class/NodeClassMethod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ public NodeClassMethod(NodeClass ownerClass, string name, TypeBase returnType, G

public Graph Graph { get; }

public bool IsStatic => false; // not supported yet
public bool IsStatic { get; set; }

public TypeBase DeclaringType => Class.ClassTypeBase;

public bool HasReturnValue => ReturnType != Class.TypeFactory.Void;

public void Rename(string newName)
{
if (string.IsNullOrWhiteSpace(newName))
Expand Down Expand Up @@ -79,6 +81,18 @@ public IEnumerable<IMethodParameterInfo> GetParameters()
return Parameters;
}

public MethodInfo CreateMethodInfo()
{
var classType = Class.ClassTypeBase.MakeRealType();

var method = classType.GetMethod(Name, GetParameters().Select(x => x.ParameterType.MakeRealType()).ToArray());

if(method == null)
throw new Exception("Unable to find method: " + Name);

return method;
}

#region Serialization

private SerializedNodeClassMethod? SavedDataDuringDeserializationStep1 { get; set; }
Expand Down
2 changes: 2 additions & 0 deletions src/NodeDev.Core/Class/NodeClassProperty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public NodeClassProperty(NodeClass ownerClass, string name, TypeBase propertyTyp

public bool CanSet => true;

public bool IsField => false;

#region UI Actions

public void Rename(string newName)
Expand Down
Loading