updated how assignment form persists data

This commit is contained in:
2023-08-08 16:40:16 -06:00
parent 1494fd1906
commit b7e65e3914
3 changed files with 95 additions and 109 deletions

View File

@@ -31,7 +31,10 @@
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
Description = Assignment.Description; if (Description == "")
{
Description = Assignment.Description;
}
TemplateId = Assignment.TemplateId; TemplateId = Assignment.TemplateId;
UseTemplate = Assignment.TemplateId != null && Assignment.TemplateId != ""; UseTemplate = Assignment.TemplateId != null && Assignment.TemplateId != "";
} }
@@ -87,6 +90,7 @@
role="switch" role="switch"
id="useTemplateForDescription" id="useTemplateForDescription"
@bind="UseTemplate" @bind="UseTemplate"
/>
<label class="form-check-label" for="useTemplateForDescription"> <label class="form-check-label" for="useTemplateForDescription">
use template for description use template for description
</label> </label>
@@ -172,7 +176,8 @@ else
<textarea <textarea
id="description" id="description"
class="form-control" class="form-control"
rows=12 rows=12
value="@Description"
@oninput="@((e) => @oninput="@((e) =>
{ {
var newDescription = e.Value?.ToString(); var newDescription = e.Value?.ToString();

View File

@@ -29,8 +29,8 @@
[EditorRequired] [EditorRequired]
public bool Show { get; set; } public bool Show { get; set; }
[Parameter] [Parameter]
public Action OnHide { get; set; } = () => { }; public Action OnHide { get; set; } = () => { };
public Modal? AssignmentModal { get; set; } = null; 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; }
@@ -39,7 +39,7 @@
protected override void OnParametersSet() protected override void OnParametersSet()
{ {
if(Show) if (Show)
{ {
AssignmentModal?.Show(); AssignmentModal?.Show();
} }
@@ -52,45 +52,45 @@
private void submitHandler() private void submitHandler()
{ {
var totalRubricPoints = rubric var totalRubricPoints = rubric
.Where(r => !r.Label.Contains(RubricItem.extraCredit)) .Where(r => !r.Label.Contains(RubricItem.extraCredit))
.Select(s => s.Points) .Select(s => s.Points)
.Sum(); .Sum();
var newAssignment = Assignment with var newAssignment = Assignment with
{
Name=name,
LockAtDueDate=lockAtDueDate,
Rubric=rubric,
PointsPossible=totalRubricPoints,
SubmissionTypes=submissionTypes,
};
if(planner.LocalCourse != null)
{
var currentModule = planner
.LocalCourse
.Modules
.First(m =>
m.Assignments
.Select(a => a.Id)
.Contains(Assignment.Id)
) ?? throw new Exception("could not find current module in assignment form");
var updatedModules = planner.LocalCourse.Modules.Select(m =>
m.Name == currentModule.Name
? currentModule with
{
Assignments=currentModule.Assignments.Select(a =>
a.Id == newAssignment.Id
? newAssignment
: a
).ToArray()
}
: m
).ToArray();
planner.LocalCourse = planner.LocalCourse with
{ {
Modules=updatedModules Name = name,
LockAtDueDate = lockAtDueDate,
Rubric = rubric,
PointsPossible = totalRubricPoints,
SubmissionTypes = submissionTypes,
}; };
if (planner.LocalCourse != null)
{
var currentModule = planner
.LocalCourse
.Modules
.First(m =>
m.Assignments
.Select(a => a.Id)
.Contains(Assignment.Id)
) ?? throw new Exception("could not find current module in assignment form");
var updatedModules = planner.LocalCourse.Modules.Select(m =>
m.Name == currentModule.Name
? currentModule with
{
Assignments = currentModule.Assignments.Select(a =>
a.Id == newAssignment.Id
? newAssignment
: a
).ToArray()
}
: m
).ToArray();
planner.LocalCourse = planner.LocalCourse with
{
Modules = updatedModules
};
} }
AssignmentModal?.Hide(); AssignmentModal?.Hide();
} }
@@ -101,38 +101,38 @@
StateHasChanged(); StateHasChanged();
} }
private void SetTypes(IEnumerable<string> newTypes) private void SetTypes(IEnumerable<string> newTypes)
{ {
submissionTypes = newTypes; submissionTypes = newTypes;
StateHasChanged(); StateHasChanged();
} }
private async Task HandleDelete() private async Task HandleDelete()
{ {
if(planner.LocalCourse != null) if (planner.LocalCourse != null)
{ {
var assignment = Assignment; var assignment = Assignment;
var currentModule = planner var currentModule = planner
.LocalCourse .LocalCourse
.Modules .Modules
.First(m => .First(m =>
m.Assignments m.Assignments
.Select(a => a.Id) .Select(a => a.Id)
.Contains(Assignment.Id) .Contains(Assignment.Id)
) ?? throw new Exception("handling assignment delete, could not find module"); ) ?? throw new Exception("handling assignment delete, could not find module");
var newModules = planner.LocalCourse.Modules.Select(m => var newModules = planner.LocalCourse.Modules.Select(m =>
m.Name == currentModule.Name m.Name == currentModule.Name
? m with ? m with
{ {
Assignments = m.Assignments.Where(a => a.Id != assignment.Id).ToArray() Assignments = m.Assignments.Where(a => a.Id != assignment.Id).ToArray()
} }
: m : m
).ToArray(); ).ToArray();
planner.LocalCourse = planner.LocalCourse with planner.LocalCourse = planner.LocalCourse with
{ {
Modules = newModules Modules = newModules
}; };
if(assignment.CanvasId != null && planner.LocalCourse.CanvasId != null) if (assignment.CanvasId != null && planner.LocalCourse.CanvasId != null)
{ {
ulong courseId = planner.LocalCourse.CanvasId ?? throw new Exception("cannot delete if no course id"); ulong courseId = planner.LocalCourse.CanvasId ?? throw new Exception("cannot delete if no course id");
await canvas.Assignments.Delete(courseId, assignment); await canvas.Assignments.Delete(courseId, assignment);
@@ -145,52 +145,31 @@
<Title> <Title>
@Assignment.Name @Assignment.Name
</Title> </Title>
<Body> <Body>
<form @onsubmit:preventDefault="true" @onsubmit="submitHandler"> <form @onsubmit:preventDefault="true" @onsubmit="submitHandler">
<div class="m-1"> <div class="m-1">
<label <label class="form-label">
class="form-label"
>
Name Name
</label> </label>
<input <input class="form-control" @bind="name" />
class="form-control"
@bind="name"
/>
</div> </div>
<div class="m-1"> <div class="m-1">
<AssignmentDescriptionEditor <AssignmentDescriptionEditor Assignment="Assignment" />
Assignment="Assignment"
/>
</div> </div>
<div class="form-check m-1"> <div class="form-check m-1">
<input <input class="form-check-input" id="lockAtDueDate" type="checkbox" />
class="form-check-input" <label class="form-check-label" for="lockAtDueDate" @bind="lockAtDueDate">
id="lockAtDueDate"
type="checkbox"
/>
<label
class="form-check-label"
for="lockAtDueDate"
@bind="lockAtDueDate"
>
Lock At Due Date Lock At Due Date
</label> </label>
</div> </div>
<RubricEditor Rubric="rubric" SetRubric="updateRubric" /> <RubricEditor Rubric="rubric" SetRubric="updateRubric" />
<SubmissionTypeSelector <SubmissionTypeSelector Types="submissionTypes" SetTypes="SetTypes" />
Types="submissionTypes"
SetTypes="SetTypes"
/>
</form> </form>
</Body> </Body>
<Footer> <Footer>
<ConfirmationModal <ConfirmationModal Label="Delete" Class="btn btn-danger" OnConfirmAsync="HandleDelete" />
Label="Delete"
Class="btn btn-danger"
OnConfirmAsync="HandleDelete"
/>
<button class="btn btn-primary" @onclick="@(() => AssignmentModal?.Hide())"> <button class="btn btn-primary" @onclick="@(() => AssignmentModal?.Hide())">
Save Save
</button> </button>

View File

@@ -1,38 +1,38 @@
@code { @code {
[Parameter, EditorRequired] [Parameter, EditorRequired]
public RenderFragment? Title { get; set; } public RenderFragment? Title { get; set; }
[Parameter, EditorRequired] [Parameter, EditorRequired]
public RenderFragment? Body { get; set; } public RenderFragment? Body { get; set; }
[Parameter, EditorRequired] [Parameter, EditorRequired]
public RenderFragment? Footer { get; set; } public RenderFragment? Footer { get; set; }
[Parameter] [Parameter]
public Action OnShow { get; set; } = () => { }; public Action OnShow { get; set; } = () => { };
[Parameter] [Parameter]
public Action OnHide { get; set; } = () => { }; public Action OnHide { get; set; } = () => { };
private string modalClass = "hide-modal"; private string modalClass = "hide-modal";
private bool showBackdrop = false; private bool showBackdrop = false;
public void Show() public void Show()
{ {
modalClass = "show-modal"; modalClass = "show-modal";
showBackdrop = true; showBackdrop = true;
OnShow(); OnShow();
} }
public void Hide() public void Hide()
{ {
modalClass = "hide-modal"; modalClass = "hide-modal";
showBackdrop = false; showBackdrop = false;
OnHide(); OnHide();
} }
} }
<div class="modal @modalClass"> <div class="modal @modalClass" @onclick="Hide">
<div class="modal-dialog modal-xl" role="document"> <div class="modal-dialog modal-xl" role="document" @onclick:stopPropagation="true">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title text-center w-100">@Title</h4> <h4 class="modal-title text-center w-100">@Title</h4>
@@ -46,5 +46,7 @@
@if (showBackdrop) @if (showBackdrop)
{ {
<div class="modal-backdrop fade show"></div> <div
} class="modal-backdrop fade show"
></div>
}