diff --git a/Readme.md b/Readme.md index 19bdb5c..dfcb867 100644 --- a/Readme.md +++ b/Readme.md @@ -68,13 +68,16 @@ Good to have - 30-60 days - [X] Simple view where the user can drag and drop boxes - [X] Nav menu - [X] Creating project - - [ ] Users can connect boxes - - [ ] Run project - - [ ] Adding controller - - [ ] Adding service - - [ ] Add a way to create a simple CRUD - - [ ] Add logic statement - - [ ] Add loop statement + - [ ] Configuration endpoint class + - [ ] Save to file + - [ ] Load from file + - [ ] Users can connect boxes + - [ ] Run project + - [ ] Adding controller + - [ ] Adding service + - [ ] Add a way to create a simple CRUD + - [ ] Add logic statement + - [ ] Add loop statement Nice to have - 30 days - [ ] Tools diff --git a/ide/src/Fiona.IDE.ProjectManager/Exceptions/ProjectFileNotFoundException.cs b/ide/src/Fiona.IDE.ProjectManager/Exceptions/ProjectFileNotFoundException.cs new file mode 100644 index 0000000..3eaed63 --- /dev/null +++ b/ide/src/Fiona.IDE.ProjectManager/Exceptions/ProjectFileNotFoundException.cs @@ -0,0 +1,6 @@ +namespace Fiona.IDE.ProjectManager.Exceptions; + +public class ProjectFileNotFoundException(string @namespace): Exception($"Project with namespace {@namespace} not found") +{ + +} \ No newline at end of file diff --git a/ide/src/Fiona.IDE.ProjectManager/IProjectManager.cs b/ide/src/Fiona.IDE.ProjectManager/IProjectManager.cs index 838d974..aa47ed5 100644 --- a/ide/src/Fiona.IDE.ProjectManager/IProjectManager.cs +++ b/ide/src/Fiona.IDE.ProjectManager/IProjectManager.cs @@ -10,6 +10,7 @@ public interface IProjectManager Task CreateProject(string path, string name); Task LoadProject(string path); IEnumerable GetFiles(); + ProjectFile GetProjectFileByNamespace(string @namespace); Task CreateFileAsync(string name, string folderPath); } diff --git a/ide/src/Fiona.IDE.ProjectManager/Models/Dependency.cs b/ide/src/Fiona.IDE.ProjectManager/Models/Dependency.cs new file mode 100644 index 0000000..61b207a --- /dev/null +++ b/ide/src/Fiona.IDE.ProjectManager/Models/Dependency.cs @@ -0,0 +1,8 @@ +namespace Fiona.IDE.ProjectManager.Models; + +internal sealed class Dependency(string name, string type) +{ + public string Name { get; } = name; + public string Type { get; } = type; + +} \ No newline at end of file diff --git a/ide/src/Fiona.IDE.ProjectManager/Models/ProjectFile.cs b/ide/src/Fiona.IDE.ProjectManager/Models/ProjectFile.cs index f6435d9..e605bc6 100644 --- a/ide/src/Fiona.IDE.ProjectManager/Models/ProjectFile.cs +++ b/ide/src/Fiona.IDE.ProjectManager/Models/ProjectFile.cs @@ -7,16 +7,16 @@ public sealed class ProjectFile { public string Path { get; } public string Name { get; } - public static string Extension = "fn"; - public string Namespace => Path.Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "."); - - + public string Namespace { get; } + public const string Extension = "fn"; + + [JsonConstructor] private ProjectFile(string path) { Path = path; Name = path.Split(System.IO.Path.DirectorySeparatorChar).Last(); - + Namespace = path.Replace(System.IO.Path.DirectorySeparatorChar.ToString(), ".").Split(":").Last().Replace(".fn", "")[1..]; } internal static ProjectFile Create(string path) @@ -27,6 +27,8 @@ internal static ProjectFile Create(string path) } File.Create(path); + + return new ProjectFile(path); } } diff --git a/ide/src/Fiona.IDE.ProjectManager/ProjectManager.cs b/ide/src/Fiona.IDE.ProjectManager/ProjectManager.cs index 33eda84..185fd3f 100644 --- a/ide/src/Fiona.IDE.ProjectManager/ProjectManager.cs +++ b/ide/src/Fiona.IDE.ProjectManager/ProjectManager.cs @@ -38,6 +38,8 @@ public async Task LoadProject(string path) public IEnumerable GetFiles() => Project?.ProjectFileUrl ?? Enumerable.Empty() ; + public ProjectFile GetProjectFileByNamespace(string @namespace) + => Project?.ProjectFileUrl.FirstOrDefault(x => x.Namespace == @namespace) ?? throw new ProjectFileNotFoundException(@namespace); public Task CreateFileAsync(string name, string folderPath) { diff --git a/ide/src/Fiona.IDE/Components/Pages/Project/Index.razor b/ide/src/Fiona.IDE/Components/Pages/Project/Index.razor index c6521bc..ffd333c 100644 --- a/ide/src/Fiona.IDE/Components/Pages/Project/Index.razor +++ b/ide/src/Fiona.IDE/Components/Pages/Project/Index.razor @@ -3,11 +3,13 @@ @using Blazor.Diagrams.Core.Geometry @using Blazor.Diagrams.Components @using Fiona.IDE.ProjectManager +@using Fiona.IDE.ProjectManager.Models @inject NavigationManager NavManager -
+
+
@@ -24,6 +26,8 @@ [Parameter] public string? @namespace { get; init; } = default; + private ProjectFile CurrentFile { get; set; } + private BlazorDiagram Diagram { get; set; } = null!; @@ -34,7 +38,9 @@ NavManager.NavigateTo("/"); } - var options = new BlazorDiagramOptions + CurrentFile = ProjectManager.GetProjectFileByNamespace(@namespace!); + + BlazorDiagramOptions options = new BlazorDiagramOptions { AllowMultiSelection = true, Zoom =