-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEditMethodMenu.razor
85 lines (67 loc) · 3.62 KB
/
EditMethodMenu.razor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
@inject IDialogService DialogService
<MudDialog>
<DialogContent>
<div style="height: 50vh; width: 100%; display: flex; flex-direction: column">
<MudText Typo="Typo.h2">@Method.Name</MudText>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="Method.AddDefaultParameter" Class="px-8">Add parameter</MudButton>
<MudDataGrid Items="Method.Parameters" EditMode="DataGridEditMode.Cell" ReadOnly="false" Class="w100 flex-1">
<Columns>
<TemplateColumn Title="Type" Editable="false">
<CellTemplate>
<div style="display: grid; grid-template-columns: 1fr auto; align-items: center; width: 100%">
<MudText>@context.Item.ParameterType.FriendlyName</MudText>
<div style="justify-self: end;">
<MudIconButton Icon="@Icons.Material.Filled.Edit" OnClick="() => ShowParameterTypeEdit(context.Item)"></MudIconButton>
</div>
</div>
</CellTemplate>
</TemplateColumn>
<CallbackSetColumn Property="x => x.Name" SetCallback="(x, name) => x.Rename(name)" Editable="true" />
<TemplateColumn Title="IsOut">
<EditTemplate>
<MudCheckBox T="bool" Value="context.Item?.IsOut ?? false" ValueChanged="@(v => context.Item?.SetIsOut(v))"></MudCheckBox>
</EditTemplate>
</TemplateColumn>
<TemplateColumn Editable="false">
<CellTemplate>
<div style="display: flex; flex-direction: row">
<MudIconButton Icon="@Icons.Material.Filled.ArrowUpward" OnClick="context.Item.MoveUp" Disabled="Method.Parameters.FirstOrDefault() == context.Item"></MudIconButton>
<MudIconButton Icon="@Icons.Material.Filled.ArrowDownward" OnClick="context.Item.MoveDown" Disabled="Method.Parameters.LastOrDefault() == context.Item"></MudIconButton>
<MudIconButton Icon="@Icons.Material.Filled.Delete" OnClick="context.Item.Remove"></MudIconButton>
</div>
</CellTemplate>
</TemplateColumn>
</Columns>
</MudDataGrid>
</div>
</DialogContent>
<DialogActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="Submit">Close</MudButton>
</DialogActions>
</MudDialog>
@code {
[CascadingParameter]
MudDialogInstance MudDialog { get; set; } = null!;
[Parameter]
public NodeDev.Core.Class.NodeClassMethod Method { get; set; } = null!;
void Submit() => MudDialog.Close(DialogResult.Ok(true));
private async Task ShowParameterTypeEdit(NodeDev.Core.Class.NodeClassMethodParameter parameter)
{
var result = await DialogService.Show<TypeSelectorDialog>("", new()
{
[nameof(TypeSelectorDialog.TypeFactory)] = Method.Class.TypeFactory
}, new DialogOptions()
{
FullScreen = false,
FullWidth = true
}).Result;
NodeDev.Core.Types.TypeBase typeBase;
if (result?.Data is Type type)
typeBase = Method.Class.TypeFactory.Get(type, null);
else if (result?.Data is NodeDev.Core.Types.TypeBase t)
typeBase = t;
else
return;
parameter.ChangeType(typeBase);
}
}