From 68fe1a2284045908d92ef06c1c26cd937ded784e Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 20 Apr 2024 23:48:43 +0200 Subject: Add basic project management --- BugMine.Web/Pages/Projects/Index.razor | 44 +++++++++++++++++++++++----- BugMine.Web/Pages/Projects/Index.razor.css | 26 ++++++++++++++++ BugMine.Web/Pages/Projects/NewProject.razor | 36 ++++++++++++++++++----- BugMine.Web/Pages/Projects/ViewProject.razor | 33 +++++++++++++++++++++ 4 files changed, 125 insertions(+), 14 deletions(-) create mode 100644 BugMine.Web/Pages/Projects/Index.razor.css create mode 100644 BugMine.Web/Pages/Projects/ViewProject.razor (limited to 'BugMine.Web/Pages/Projects') diff --git a/BugMine.Web/Pages/Projects/Index.razor b/BugMine.Web/Pages/Projects/Index.razor index a24747c..eaf8dc1 100644 --- a/BugMine.Web/Pages/Projects/Index.razor +++ b/BugMine.Web/Pages/Projects/Index.razor @@ -1,22 +1,52 @@ @page "/Projects" +@using LibMatrix.Homeservers

Projects

-@if (true) { +@if (Projects.Count == 0) {

There are no projects to display.

} +else { +
+ @foreach (var project in Projects) { +
+ @if (string.IsNullOrWhiteSpace(project.Info.ProjectIcon)) { + + } + else { + + } + @project.Info.Name +
+ @*

@project.Info.Name

*@ + } +
+}

Did not find the project board you are looking for?

Create new board @code { - private List projects = new List(); - - + private BugMineClient? Client { get; set; } + private List Projects { get; set; } = []; + private CancellationTokenSource? _cts = new(); protected override async Task OnInitializedAsync() { - + Client = await BugMineStorage.GetCurrentSessionOrNavigate(); + if (Client == null) { + return; + } + + await foreach (var project in Client.GetProjects()) { + Projects.Add(project); + StateHasChanged(); + // await Task.Delay(100); + } } - - private class Project { } + + private async Task Navigate(BugMineProject project) { + Console.WriteLine($"Navigating to {project.ProjectSlug}"); + NavigationManager.NavigateTo($"/Projects/{project.ProjectSlug}/"); + } + } \ No newline at end of file diff --git a/BugMine.Web/Pages/Projects/Index.razor.css b/BugMine.Web/Pages/Projects/Index.razor.css new file mode 100644 index 0000000..20d8c4d --- /dev/null +++ b/BugMine.Web/Pages/Projects/Index.razor.css @@ -0,0 +1,26 @@ +.projects { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); + gap: 1rem; + padding-bottom: 1rem; +} + +.project-card { + display: flex; + padding: 1rem; + border-radius: 0.5rem; + background-color: var(--bs-dark); + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.5); + transition: background-color 1s, box-shadow 3s; +} + +.project-icon { + border-radius: 50%; + width: 2rem; + height: 2rem; + margin-right: 1rem; +} + +.project-name { + display: inline; +} \ No newline at end of file diff --git a/BugMine.Web/Pages/Projects/NewProject.razor b/BugMine.Web/Pages/Projects/NewProject.razor index 529813e..00b7b21 100644 --- a/BugMine.Web/Pages/Projects/NewProject.razor +++ b/BugMine.Web/Pages/Projects/NewProject.razor @@ -1,25 +1,47 @@ @page "/Projects/New" -@using LibMatrix.Responses -@using BugMine.Web.Classes @using ArcaneLibs.Extensions

New project

Project name: - +
-Shortname: - +Project repository: +
+@* Room alias: *@ +@* *@ +@*
*@ @if (Constants.Debug) { Debug:
-        @request.ToJson()
+        @_request.ToJson()
     

} +Create project + @code { - private CreateRoomRequest request = new CreateRoomRequest(); + + private BugMineClient? Client { get; set; } + + private readonly ProjectInfo _request = new(); + + protected override async Task OnInitializedAsync() { + Client = await BugMineStorage.GetCurrentSessionOrNavigate(); + if (Client == null) { + return; + } + } + + private async Task CreateProject() { + if (Client == null) { + return; + } + + var proj = await Client.CreateProject(_request); + NavigationManager.NavigateTo($"/Projects/{proj.ProjectSlug}/"); + } } \ No newline at end of file diff --git a/BugMine.Web/Pages/Projects/ViewProject.razor b/BugMine.Web/Pages/Projects/ViewProject.razor new file mode 100644 index 0000000..de94c79 --- /dev/null +++ b/BugMine.Web/Pages/Projects/ViewProject.razor @@ -0,0 +1,33 @@ +@page "/Projects/{ProjectSlug}/" + + + +@if (Client is null) { +

Authenticating

+} +else if(Project is null) { +

Loading

+} +else { +

@Project.Info.Name

+ @*

@Project.Description

*@ +} + +@code { + [Parameter] public string ProjectSlug { get; set; } + + private BugMineClient? Client { get; set; } + + private BugMineProject? Project { get; set; } + + protected override async Task OnInitializedAsync() { + Client = await BugMineStorage.GetCurrentSessionOrNavigate(); + if (Client == null) { + return; + } + StateHasChanged(); + + Project = await Client.GetProject(ProjectSlug); + } + +} \ No newline at end of file -- cgit 1.5.1