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) + @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)