moved assignment editing to its own page

This commit is contained in:
2023-08-31 15:12:01 -06:00
parent 3ae110d22a
commit ebb9cd4d2e
9 changed files with 145 additions and 103 deletions

View File

@@ -1,33 +0,0 @@
@page "/course/{CourseName}/assignment/{AssignmentId}"
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Course
@using Management.Web.Shared.Module.Assignment.Templates
@using Management.Web.Shared.Semester
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@using Management.Web.Shared.Module.Assignment
@using Management.Web.Shared.Components
@inject YamlManager yamlManager
@inject CanvasService canvas
@inject CoursePlanner planner
@code {
[Parameter]
public string CourseName { get; set; }
[Parameter]
public string AssignmentId { get; set; }
protected override async Task OnInitializedAsync()
{
if(planner.LocalCourse == null)
{
var courses = await yamlManager.LoadSavedCourses();
planner.LocalCourse = courses.First(c => c.Name == CourseName);
}
base.OnInitialized();
@* loading = false; *@
}
}

View File

@@ -0,0 +1,67 @@
@page "/course/{CourseName}/assignment/{AssignmentId}"
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Components.AssignmentForm
@using Management.Web.Shared.Course
@using Management.Web.Shared.Module.Assignment.Templates
@using Management.Web.Shared.Semester
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@using Management.Web.Shared.Module.Assignment
@using Management.Web.Shared.Components
@inject YamlManager yamlManager
@inject CanvasService canvas
@inject CoursePlanner planner
@inject AssignmentEditorContext assignmentContext
@inject ILogger<AssignmentFormPage> logger
@code {
[Parameter]
public string? CourseName { get; set; } = default!;
[Parameter]
public string? AssignmentId { get; set; } = default!;
private bool loading { get; set; }= true;
protected override async Task OnInitializedAsync()
{
if(loading)
{
loading = false;
logger.LogInformation($"loading assignment {CourseName} {AssignmentId}");
if(planner.LocalCourse == null)
{
var courses = await yamlManager.LoadSavedCourses();
planner.LocalCourse = courses.First(c => c.Name == CourseName);
logger.LogInformation($"set course to '{planner.LocalCourse?.Name}'");
}
if(assignmentContext.Assignment == null)
{
var assignment = planner
.LocalCourse?
.Modules
.SelectMany(m => m.Assignments)
.FirstOrDefault(a => a.Id == AssignmentId);
assignmentContext.Assignment = assignment;
logger.LogInformation($"set assignment to '{assignmentContext.Assignment?.Name}'");
}
base.OnInitialized();
StateHasChanged();
}
}
}
@if(loading)
{
<Spinner />
}
@if(planner.LocalCourse != null && assignmentContext.Assignment != null)
{
<AssignmentForm />
}

View File

@@ -17,8 +17,8 @@
private bool showNewFile { get; set; } = false; private bool showNewFile { get; set; } = false;
protected override void OnInitialized() protected override void OnInitialized()
{ {
planner.StateHasChanged += reload;
planner.LocalCourse = null; planner.LocalCourse = null;
planner.StateHasChanged += reload;
} }
private void reload() private void reload()

View File

@@ -190,7 +190,7 @@
<div class="col"> <div class="col">
<textarea <textarea
id="description" id="description"
class="form-control" class="form-control h-100"
rows=12 rows=12
@bind="description" @bind="description"
@oninput="handleNewDescription" @oninput="handleNewDescription"

View File

@@ -4,18 +4,19 @@
@inject CoursePlanner planner @inject CoursePlanner planner
@inject CanvasService canvas @inject CanvasService canvas
@inject NavigationManager Navigation
@inject AssignmentEditorContext assignmentContext @inject AssignmentEditorContext assignmentContext
@code { @code {
protected override void OnInitialized() protected override void OnInitialized()
{ {
assignmentContext.StateHasChanged += reload; assignmentContext.StateHasChanged += reload;
reload();
} }
private void reload() private void reload()
{ {
if (assignmentContext.Assignment != null) if (assignmentContext.Assignment != null)
{ {
AssignmentModal?.Show();
name = assignmentContext.Assignment.Name; name = assignmentContext.Assignment.Name;
lockAtDueDate = assignmentContext.Assignment.LockAtDueDate; lockAtDueDate = assignmentContext.Assignment.LockAtDueDate;
} }
@@ -32,7 +33,6 @@
name = ""; name = "";
lockAtDueDate = false; lockAtDueDate = false;
} }
public Modal? AssignmentModal { get; set; } = null;
private string name { get; set; } = String.Empty; private string name { get; set; } = String.Empty;
private bool lockAtDueDate { get; set; } private bool lockAtDueDate { get; set; }
@@ -48,7 +48,6 @@
assignmentContext.SaveAssignment(newAssignment); assignmentContext.SaveAssignment(newAssignment);
} }
AssignmentModal?.Hide();
assignmentContext.Assignment = null; assignmentContext.Assignment = null;
} }
@@ -86,7 +85,6 @@
await canvas.Assignments.Delete(courseId, assignment); await canvas.Assignments.Delete(courseId, assignment);
} }
} }
AssignmentModal?.Hide();
} }
private void handleNameChange(ChangeEventArgs e) private void handleNameChange(ChangeEventArgs e)
@@ -134,14 +132,10 @@
.FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId); .FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId);
} }
<Modal @ref="AssignmentModal" OnHide="OnHide" Size="xl"> @assignmentContext.Assignment?.Name
<Title>
@assignmentContext.Assignment?.Name
</Title>
<Body> @if (assignmentContext.Assignment != null)
@if (assignmentContext.Assignment != null) {
{
<div class="m-1"> <div class="m-1">
<label class="form-label"> <label class="form-label">
Name Name
@@ -181,18 +175,15 @@
</div> </div>
<RubricEditor /> <RubricEditor />
<SubmissionTypeSelector /> <SubmissionTypeSelector />
} }
</Body> <ConfirmationModal Label="Delete" Class="btn btn-danger" OnConfirmAsync="HandleDelete" />
<Footer> <button
<ConfirmationModal Label="Delete" Class="btn btn-danger" OnConfirmAsync="HandleDelete" />
<button
class="btn btn-primary" class="btn btn-primary"
@onclick="@(() => { @onclick="@(() => {
AssignmentModal?.Hide();
assignmentContext.Assignment = null; assignmentContext.Assignment = null;
Navigation.NavigateTo("/course/" + planner.LocalCourse?.Name);
})" })"
> >
Done Done
</button> </button>
</Footer>
</Modal>

View File

@@ -40,7 +40,6 @@
} }
} }
<AssignmentForm />
<QuizForm /> <QuizForm />
<div class="row"> <div class="row">

View File

@@ -17,11 +17,11 @@
void handleClick(MouseEventArgs e, LocalCourse course) void handleClick(MouseEventArgs e, LocalCourse course)
{ {
logger.LogInformation("here"); @* logger.LogInformation("here"); *@
planner.LocalCourse = course; planner.LocalCourse = course;
Navigation.NavigateTo("/course/" + course.Name); Navigation.NavigateTo("/course/" + course.Name);
Console.WriteLine("navigated to course detail");
} }
} }
<div class="text-center"> <div class="text-center">

View File

@@ -3,6 +3,7 @@
@inject DragContainer dragContainer @inject DragContainer dragContainer
@inject CoursePlanner planner @inject CoursePlanner planner
@inject NavigationManager Navigation
@inject AssignmentEditorContext assignmentContext @inject AssignmentEditorContext assignmentContext
@inherits DroppableAssignment @inherits DroppableAssignment
@@ -44,6 +45,11 @@
.FirstOrDefault( .FirstOrDefault(
a => a.Id == Assignment.CanvasId a => a.Id == Assignment.CanvasId
) != null; ) != null;
private void OnClick()
{
assignmentContext.Assignment = Assignment;
Navigation.NavigateTo("/course/" + planner.LocalCourse.Name + "/assignment/" + Assignment.Id);
}
} }
@@ -51,7 +57,7 @@
draggable="true" draggable="true"
@ondragstart="HandleDragStart" @ondragstart="HandleDragStart"
@ondragend="HandleDragEnd" @ondragend="HandleDragEnd"
@onclick="@(() => assignmentContext.Assignment = Assignment)" @onclick="OnClick"
role="button" role="button"
> >
<div class="card"> <div class="card">

View File

@@ -2,8 +2,10 @@
@inject DragContainer dragContainer @inject DragContainer dragContainer
@inject CoursePlanner planner @inject CoursePlanner planner
@inject NavigationManager Navigation
@inject AssignmentEditorContext assignmentContext @inject AssignmentEditorContext assignmentContext
@inject ILogger<AssignmentInDay> logger
@inherits DroppableAssignment @inherits DroppableAssignment
@code { @code {
@@ -29,13 +31,23 @@
{ {
dragContainer.DropCallback = null; dragContainer.DropCallback = null;
} }
private void OnClick()
{
if(planner.LocalCourse != null)
{
assignmentContext.Assignment = Assignment;
Navigation.NavigateTo("/course/" + planner.LocalCourse.Name + "/assignment/" + Assignment.Id);
logger.LogInformation("navigating to assignment page");
}
}
} }
<div <div
draggable="true" draggable="true"
@ondragstart="HandleDragStart" @ondragstart="HandleDragStart"
@ondragend="HandleDragEnd" @ondragend="HandleDragEnd"
@onclick="@(() => assignmentContext.Assignment = Assignment)" @onclick="OnClick"
role="button" role="button"
> >
@Assignment.Name @Assignment.Name