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();
+ }
+
}