diff --git a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
index b811c92..0c6a4e1 100644
--- a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
+++ b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
@@ -83,9 +83,7 @@
ChildrenSelector="n => n.Children"
HasChildrenSelector="n => n.Kind != TmplNodeKind.Composition && n.Children.Count > 0"
KeySelector="n => (object)n.Key"
- StorageKey="templates-tree"
- Selectable="true"
- SelectedKeyChanged="OnTreeNodeSelected">
+ StorageKey="templates-tree">
@RenderNodeLabel(node)
@@ -234,6 +232,9 @@
private TreeView _tree = default!;
+ private void OpenTemplate(int templateId) =>
+ NavigationManager.NavigateTo($"/design/templates/{templateId}");
+
private RenderFragment RenderNodeLabel(TmplNode node) => __builder =>
{
switch (node.Kind)
@@ -249,83 +250,23 @@
@node.Children.Count
}
- @RenderNodeKebab(node)
break;
case TmplNodeKind.Template:
@node.Label
- @RenderNodeKebab(node)
+ title="@node.Label"
+ @ondblclick="() => OpenTemplate(node.EntityId)">@node.Label
break;
case TmplNodeKind.Composition:
- @node.Label
- @RenderNodeKebab(node)
+ OpenTemplate(node.Composition!.ComposedTemplateId)">@node.Label
break;
}
};
- private RenderFragment RenderNodeKebab(TmplNode node) => __builder =>
- {
-
-
-
-
- };
-
- private void OnTreeNodeSelected(object? key)
- {
- if (key is not string s) return;
- if (s.StartsWith("t:") && int.TryParse(s[2..], out var tid))
- {
- NavigationManager.NavigateTo($"/design/templates/{tid}");
- }
- else if (s.StartsWith("c:") && int.TryParse(s[2..], out var cid))
- {
- var comp = _templates.SelectMany(t => t.Compositions).FirstOrDefault(c => c.Id == cid);
- if (comp != null)
- {
- NavigationManager.NavigateTo($"/design/templates/{comp.ComposedTemplateId}");
- }
- }
- // Folder selection is intentionally a no-op (use right-click for folder actions).
- }
-
private RenderFragment RenderNodeContextMenu(TmplNode node) => __builder =>
{
switch (node.Kind)