mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
started creating module ui, workign on assignments
This commit is contained in:
@@ -1,3 +1,31 @@
|
||||
@page "/modules"
|
||||
@using Management.Web.Shared.Module
|
||||
@using System.Linq
|
||||
@inject IModuleManager moduleManager
|
||||
|
||||
@code {
|
||||
private bool showNewModule { get; set; } = false;
|
||||
|
||||
}
|
||||
|
||||
<PageTitle>Weather forecast</PageTitle>
|
||||
|
||||
@if (!showNewModule)
|
||||
{
|
||||
<button class="btn btn-secondary" @onclick="() => showNewModule = true">New Module</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button class="btn btn-secondary" @onclick="() => showNewModule = false">Hide New Module</button>
|
||||
}
|
||||
|
||||
@if (showNewModule)
|
||||
{
|
||||
<NewModule OnSubmit="() => showNewModule = false" />
|
||||
}
|
||||
|
||||
@foreach (var i in moduleManager.Modules.Select((_value, i) => i))
|
||||
{
|
||||
<hr>
|
||||
<ModuleDetail ModuleIndex="i" />
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
global using System.Text.Json.Serialization;
|
||||
global using System.Text.Json;
|
||||
global using System.ComponentModel.DataAnnotations;
|
||||
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Web;
|
||||
@@ -15,6 +16,7 @@ builder.Services.AddServerSideBlazor();
|
||||
builder.Services.AddSingleton<IWebRequestor, WebRequestor>();
|
||||
builder.Services.AddSingleton<ICanvasService, CanvasService>();
|
||||
builder.Services.AddSingleton<IConfigurationManagement, ConfigurationManagement>();
|
||||
builder.Services.AddSingleton<IModuleManager, ModuleManager>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
38
Management.Web/Shared/Module/Assignment/NewAssignment.razor
Normal file
38
Management.Web/Shared/Module/Assignment/NewAssignment.razor
Normal file
@@ -0,0 +1,38 @@
|
||||
@inject IModuleManager moduleManager
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter, EditorRequired]
|
||||
public int ModuleIndex { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnSubmit { get; set; }
|
||||
|
||||
[Required]
|
||||
[StringLength(50, ErrorMessage = "Name too long (50 character limit).")]
|
||||
private string Name { get; set; } = "";
|
||||
|
||||
private async Task submitHandler()
|
||||
{
|
||||
var newAssignment = new LocalAssignment
|
||||
{
|
||||
name = Name,
|
||||
description = "testDescription",
|
||||
published = false,
|
||||
lock_at_due_date = true,
|
||||
rubric = new RubricItem[] { },
|
||||
lock_at = null,
|
||||
due_at = DateTime.Now,
|
||||
points_possible = 10,
|
||||
submission_types = new SubmissionType[] { SubmissionType.online_text_entry }
|
||||
};
|
||||
moduleManager.AddAssignment(ModuleIndex, newAssignment);
|
||||
await OnSubmit.InvokeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
<form @onsubmit:preventDefault="true" @onsubmit="submitHandler">
|
||||
<label for="Assignment Name">Name</label>
|
||||
<input id="moduleName" class="form-control" @bind="Name" />
|
||||
<button class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
40
Management.Web/Shared/Module/ModuleDetail.razor
Normal file
40
Management.Web/Shared/Module/ModuleDetail.razor
Normal file
@@ -0,0 +1,40 @@
|
||||
@using Management.Web.Shared.Module.Assignment
|
||||
|
||||
|
||||
@inject IModuleManager moduleManager
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired]
|
||||
public int ModuleIndex { get; set; }
|
||||
|
||||
private bool showAddAssignment { get; set; } = false;
|
||||
|
||||
private CourseModule? module
|
||||
{
|
||||
get
|
||||
{
|
||||
return moduleManager.Modules.ElementAtOrDefault(ModuleIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if (module != null)
|
||||
{
|
||||
<h3 class="text-center">@module.Name</h3>
|
||||
<button class="btn btn-primary" @onclick="() => showAddAssignment = true">Add Assignment</button>
|
||||
@if (showAddAssignment)
|
||||
{
|
||||
<div class="ms-5 ">
|
||||
<div class="bg-light border rounded m-3 p-3">
|
||||
<NewAssignment ModuleIndex="ModuleIndex" OnSubmit="() => showAddAssignment = false" />
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<h5>Assignments</h5>
|
||||
@foreach (var assignment in module.Assignments)
|
||||
{
|
||||
<div>@assignment.name</div>
|
||||
}
|
||||
|
||||
}
|
||||
27
Management.Web/Shared/Module/NewModule.razor
Normal file
27
Management.Web/Shared/Module/NewModule.razor
Normal file
@@ -0,0 +1,27 @@
|
||||
@inject IModuleManager moduleManager
|
||||
|
||||
@code {
|
||||
|
||||
[Required]
|
||||
[StringLength(50, ErrorMessage = "Name too long (50 character limit).")]
|
||||
private string Name { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnSubmit { get; set; }
|
||||
|
||||
private async Task submitHandler()
|
||||
{
|
||||
var module = new CourseModule(Name: Name, Assignments: new LocalAssignment[] { });
|
||||
moduleManager.AddModule(module);
|
||||
Name = "";
|
||||
await OnSubmit.InvokeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
<h1>New Module</h1>
|
||||
|
||||
<form @onsubmit:preventDefault="true" @onsubmit="submitHandler">
|
||||
<label for="moduleName">Name:</label>
|
||||
<input id="moduleName" class="form-control" @bind="Name" />
|
||||
<button class="btn btn-primary">Save</button>
|
||||
</form>
|
||||
Reference in New Issue
Block a user