From a0a6bb49866c5d70ad4a016922dd4f465e61dce9 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 23 Mar 2026 06:04:48 -0400 Subject: [PATCH] refactor(ui): replace manual template inheritance tree with TreeView component --- .../Components/Pages/Design/Templates.razor | 92 ++++++++++--------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor index e87cafb..08d635c 100644 --- a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor +++ b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor @@ -33,39 +33,44 @@ - @* Inheritance tree visualization *@ -
-
- @foreach (var node in BuildTemplateTree()) + + + @node.Template.Name + @if (node.Template.ParentTemplateId.HasValue) { -
- @(node.HasChildren ? "[+]" : " -") - - @node.Template.Name - @if (node.Template.ParentTemplateId.HasValue) - { - inherits @(_templates.FirstOrDefault(t => t.Id == node.Template.ParentTemplateId)?.Name) - } - @if (!string.IsNullOrEmpty(node.Template.Description)) - { - @node.Template.Description - } - - - @node.Template.Attributes.Count attr, @node.Template.Alarms.Count alm, @node.Template.Scripts.Count scr - - @if (node.Template.Compositions.Count > 0) - { - @node.Template.Compositions.Count comp - } - -
+ inherits @(_templates.FirstOrDefault(t => t.Id == node.Template.ParentTemplateId)?.Name) } -
-
+ @if (!string.IsNullOrEmpty(node.Template.Description)) + { + @node.Template.Description + } + + @node.Template.Attributes.Count attr, @node.Template.Alarms.Count alm, @node.Template.Scripts.Count scr + + @if (node.Template.Compositions.Count > 0) + { + @node.Template.Compositions.Count comp + } + + + + + + + + No templates. Create one to get started. + + } else { @@ -275,6 +280,7 @@ try { _templates = (await TemplateEngineRepository.GetAllTemplatesAsync()).ToList(); + BuildTemplateTree(); } catch (Exception ex) { @@ -283,24 +289,22 @@ _loading = false; } - private record TemplateTreeNode(Template Template, int Depth, bool HasChildren); + private record TmplTreeNode(Template Template, List Children); - private List BuildTemplateTree() + private List _templateTreeRoots = new(); + + private void BuildTemplateTree() { - var result = new List(); - AddTemplateChildren(null, 0, result); - return result; + _templateTreeRoots = BuildTmplChildren(null); } - private void AddTemplateChildren(int? parentId, int depth, List result) + private List BuildTmplChildren(int? parentId) { - var children = _templates.Where(t => t.ParentTemplateId == parentId).OrderBy(t => t.Name); - foreach (var child in children) - { - var hasChildren = _templates.Any(t => t.ParentTemplateId == child.Id); - result.Add(new TemplateTreeNode(child, depth, hasChildren)); - AddTemplateChildren(child.Id, depth + 1, result); - } + return _templates + .Where(t => t.ParentTemplateId == parentId) + .OrderBy(t => t.Name) + .Select(t => new TmplTreeNode(t, BuildTmplChildren(t.Id))) + .ToList(); } private async Task SelectTemplate(int templateId)