📍 Nodes
Add Node
@foreach (var node in Order.Nodes)
{
@*
*@
@*
*@
Actions
@foreach (var act in node.Actions ?? Array.Empty())
{
@foreach (var at in Enum.GetValues())
{
@at
}
NONE
SOFT
HARD
Action Parameters
@foreach (var p in act.ActionParameters.Cast())
{
}
Add Parameter
Remove Action
}
Add Action
}
@code {
[Parameter] public OrderMessage Order { get; set; } = default!;
[Parameter] public EventCallback OnAddNode { get; set; }
[Parameter] public EventCallback OnRemoveNode { get; set; }
[Parameter] public EventCallback OnEditNode { get; set; }
[Parameter] public EventCallback OnAddAction { get; set; }
[Parameter] public EventCallback OnRemoveAction { get; set; }
[Parameter] public EventCallback OnAddActionParameter { get; set; }
[Parameter] public EventCallback OnRemoveActionParameter { get; set; }
[Parameter] public EventCallback OnOrderChanged { get; set; }
// 🔥 helper realtime – KHÔNG ambiguous
private async Task SetValue(System.Action setter)
{
setter();
await OnOrderChanged.InvokeAsync();
}
private async Task AddNodeAsync()
{
await OnAddNode.InvokeAsync();
await OnOrderChanged.InvokeAsync();
}
private async Task RemoveNodeAsync(Node node)
{
await OnRemoveNode.InvokeAsync(node);
await OnOrderChanged.InvokeAsync();
}
private async Task EditNodeAsync(Node node)
{
await OnEditNode.InvokeAsync(node);
await OnOrderChanged.InvokeAsync();
}
private async Task AddActionAsync(Node node)
{
await OnAddAction.InvokeAsync(node);
await OnOrderChanged.InvokeAsync();
}
private async Task RemoveActionAsync(Node node, VDA5050.InstantAction.Action action)
{
await OnRemoveAction.InvokeAsync(new NodeActionWrapper(node, action));
await OnOrderChanged.InvokeAsync();
}
private async Task AddActionParameterAsync(VDA5050.InstantAction.Action act)
{
await OnAddActionParameter.InvokeAsync(act);
await OnOrderChanged.InvokeAsync();
}
private async Task RemoveActionParameterAsync(VDA5050.InstantAction.Action act, ActionParameter param)
{
await OnRemoveActionParameter.InvokeAsync(new ActionParamWrapper(act, param));
await OnOrderChanged.InvokeAsync();
}
public record NodeActionWrapper(Node Node, VDA5050.InstantAction.Action Action);
public record ActionParamWrapper(VDA5050.InstantAction.Action Action, ActionParameter Parameter);
}