From 5230fedfd0acdd4720cd9826c074c665acd48072 Mon Sep 17 00:00:00 2001 From: "Matt Parker [SSW]" <61717342+MattParkerDev@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:17:25 +1000 Subject: [PATCH] nested view --- .../SolutionDiscovery/GetNodesInSolution.cs | 12 ++++-- src/SharpIDE.Photino/Pages/Home.razor | 38 +++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs index 28a6508..b7995aa 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/GetNodesInSolution.cs @@ -1,6 +1,12 @@ -namespace SharpIDE.Application.Features.SolutionDiscovery; +using Microsoft.Build.Construction; -public class GetNodesInSolution +namespace SharpIDE.Application.Features.SolutionDiscovery; + +public static class GetNodesInSolution { - + public static SolutionFile? ParseSolutionFileFromPath(string solutionFilePath) + { + var solutionFile = SolutionFile.Parse(solutionFilePath); + return solutionFile; + } } diff --git a/src/SharpIDE.Photino/Pages/Home.razor b/src/SharpIDE.Photino/Pages/Home.razor index 195ca1b..8951c04 100644 --- a/src/SharpIDE.Photino/Pages/Home.razor +++ b/src/SharpIDE.Photino/Pages/Home.razor @@ -1,7 +1,45 @@ @page "/" +@using Microsoft.Build.Construction +@using SharpIDE.Application.Features.SolutionDiscovery Welcome to a new Photino Blazor app! +@if (_solutionFile is null) +{ + return; +} + + + @foreach(var project in _rootNodes) + { + @GetProjectFragment(project) + } + + + @code { + private SolutionFile _solutionFile = null!; + private List _rootNodes = []; + + private RenderFragment GetProjectFragment(ProjectInSolution project) => + @ + + @foreach(var child in _solutionFile.ProjectsByGuid.Values.Where(s => s.ParentProjectGuid == project.ProjectGuid).OrderBy(s => s.ProjectName)) + { + @GetProjectFragment(child) + } + + ; + + protected override async Task OnInitializedAsync() + { + var solutionFile = GetNodesInSolution.ParseSolutionFileFromPath("D:/matth/Documents/Git/amazon/ClientPortal.sln"); + ArgumentNullException.ThrowIfNull(solutionFile); + _solutionFile = solutionFile; + var rootNodes = solutionFile.ProjectsByGuid.Values.Where(p => p.ParentProjectGuid == null).OrderBy(s => s.ProjectName).ToList(); + _rootNodes = rootNodes; + Console.WriteLine(); + } + }