restructured components so that there are more components in the pages

This commit is contained in:
2024-01-11 17:28:14 -07:00
parent 4fb5d9a25d
commit 5666d3dc85
22 changed files with 110 additions and 85 deletions

View File

@@ -1,9 +1,6 @@
@page "/course/{CourseName}/assignment/{AssignmentName}"
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Components.AssignmentForm
@using Management.Web.Shared.Course
@using Management.Web.Shared.Semester
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@@ -67,4 +64,4 @@
{
<AssignmentForm />
}
</div>
</div>

View File

@@ -1,5 +1,5 @@
@using Markdig
@using Shared.Components.AssignmentForm
@using Management.Web.Shared.Components
@inject CoursePlanner planner
@inject AssignmentEditorContext assignmentContext
@@ -40,7 +40,7 @@
rawText = newRawAssignment;
if (newRawAssignment != string.Empty)
{
try
try
{
var parsed = LocalAssignment.ParseMarkdown(newRawAssignment);
error = null;
@@ -75,7 +75,7 @@ SubmissionTypes:
Assignment Group Names:
- {groupNames}
";
}
}
}
<div class="d-flex w-100 h-100 flex-row">
@@ -92,7 +92,7 @@ Assignment Group Names:
{
<div class="row h-100 w-100">
<div class="col-6">
<MonacoTextArea Value=@rawText OnChange=@handleChange />
</div>
<div class="col-6 overflow-y-auto h-100" >
@@ -101,7 +101,7 @@ Assignment Group Names:
<p class="text-danger text-truncate">Error: @error</p>
}
<div>Due At: @assignmentContext.Assignment.DueAt</div>
<div>Lock At: @assignmentContext.Assignment.LockAt</div>
<div>Assignment Group Name @assignmentContext.Assignment.LocalAssignmentGroupName</div>
@@ -121,4 +121,4 @@ Assignment Group Names:
</div>
</div>
}
</div>
</div>

View File

@@ -1,7 +1,5 @@
@page "/course/{CourseName}"
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Course
@using Management.Web.Shared.Semester
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@@ -41,7 +39,7 @@
<PageTitle>@CourseName</PageTitle>
<div style="height: 100vh;">
@if (loading)
{
@@ -73,4 +71,4 @@
<CourseDetails />
}
</div>
</div>

View File

@@ -1,5 +1,5 @@
@using System.Linq
@using Management.Web.Shared.Semester.Day
@using Management.Web.Pages.Course.CourseCalendar.Day
@inject CoursePlanner planner
@@ -18,11 +18,11 @@
}
<h3 class="text-center">
<a
<a
role="button"
data-bs-toggle="collapse"
data-bs-toggle="collapse"
data-bs-target="@("#" + htmlLabel)"
aria-expanded="@( isInPast ? "false" : "true")"
aria-expanded="@( isInPast ? "false" : "true")"
aria-controls="@htmlLabel"
>
@MonthName
@@ -34,8 +34,8 @@
@foreach (DayOfWeek day in WeekDaysList)
{
<div class="@(
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
? "col"
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
? "col"
: "col text-secondary"
)">
@day
@@ -52,4 +52,4 @@
}
</div>
}
</div>
</div>

View File

@@ -1,10 +1,7 @@
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Module
@using Management.Web.Shared.Semester
@using Management.Web.Shared.Components.AssignmentForm
@using Management.Web.Shared.Components.Quiz
@using Management.Web.Shared.Components.Quiz.Markdown
@using Management.Web.Pages.Course.CourseCalendar
@inject CanvasService canvas
@inject CoursePlanner planner
@@ -20,8 +17,8 @@
if(firstRender)
{
if(
planner.CanvasAssignments == null
&& planner.LocalCourse != null
planner.CanvasAssignments == null
&& planner.LocalCourse != null
&& planner.LocalCourse.Settings.CanvasId != null
)
{

View File

@@ -2,15 +2,12 @@
@using CanvasModel.EnrollmentTerms
@using CanvasModel.Quizzes
@using Management.Web.Shared.Components.AssignmentForm
@using Management.Web.Shared.Course
@using Management.Web.Shared.Semester
@using Management.Web.Shared.Components
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@using Management.Web.Shared.Module.Assignment
@using Management.Web.Shared.Components
@using Management.Web.Shared.Components.Quiz.Markdown
@inject FileStorageManager fileStorageManager
@inject CanvasService canvas
@@ -210,7 +207,7 @@ this is a matching question
</section>
<div>
<button
<button
class="btn btn-outline-secondary mt-3"
@onclick="@(() => showHelp = !showHelp)"
>
@@ -222,11 +219,11 @@ this is a matching question
{
<div class="row justify-content-end">
<div class="col-auto">
<ConfirmationModal
Label="Delete"
Class="btn btn-danger"
<ConfirmationModal
Label="Delete"
Class="btn btn-danger"
OnConfirm="deleteQuiz"
Disabled="@addingQuizToCanvas"
Disabled="@addingQuizToCanvas"
/>
<button class="btn btn-outline-secondary me-1" @onclick="addToCanvas" disabled="@addingQuizToCanvas">
Add to Canvas
@@ -249,4 +246,4 @@ this is a matching question
<Spinner />
}
</section>
</div>
</div>

View File

@@ -1,6 +1,5 @@
@using CanvasModel.EnrollmentTerms
@using Management.Web.Shared.Components
@using Management.Web.Shared.Semester
@using CanvasModel.Courses
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@using LocalModels
@@ -110,9 +109,9 @@
<div class="row justify-content-center">
<div class="col-auto">
<label for="termselect">Select Term:</label>
<select
id="termselect"
class="form-select"
<select
id="termselect"
class="form-select"
@bind="selectedTermId"
>
@foreach (var term in terms)
@@ -148,9 +147,9 @@
<div class="row justify-content-center m-3">
<div class="col-auto">
<label for="directorySelect">Select Storage Directory:</label>
<select
id="directorySelect"
class="form-select"
<select
id="directorySelect"
class="form-select"
@bind="selectedStorageDirectory"
>
<option></option>
@@ -168,12 +167,12 @@
@foreach (DayOfWeek day in (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek)))
{
<div class="col">
<button
<button
class="@(
days.Contains(day)
? "btn btn-secondary"
days.Contains(day)
? "btn btn-secondary"
: "btn btn-outline-secondary"
)"
)"
@onclick="() => {
if(days.Contains(day))
days.Remove(day);

View File

@@ -1,5 +1,4 @@
@using Management.Web.Shared.Components
@using Management.Web.Shared.Components.AssignmentForm
@using CanvasModel.Assignments;
@inject DragContainer dragContainer
@@ -26,7 +25,7 @@
}
private bool showAll { get; set; } = false;
private void HandleDragStart()
{
dragContainer.DropCallback = DropCallback;
@@ -43,9 +42,9 @@
a => a.Name == Assignment.Name
);
private bool existsInCanvas =>
private bool existsInCanvas =>
assignmentInCanvas != null;
private void OnClick()
private void OnClick()
{
assignmentContext.Assignment = Assignment;
Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name + "/assignment/" + Assignment.Name);
@@ -54,15 +53,15 @@
private bool NeedsToBeUpdatedInCanvas => planner.LocalCourse != null
&& planner.LocalCourse.Settings.CanvasId != null
&& planner.CanvasAssignments != null
&& planner.CanvasModules != null
&& planner.CanvasModules != null
&& assignmentInCanvas != null
&& Assignment.NeedsUpdates(
(CanvasAssignment)assignmentInCanvas,
(CanvasAssignment)assignmentInCanvas,
Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.Settings.AssignmentGroups)
);
}
<div
<div
draggable="true"
@ondragstart="HandleDragStart"
@ondragend="HandleDragEnd"
@@ -99,15 +98,15 @@
</div>
@if(
planner.LocalCourse != null
&& existsInCanvas
&& NeedsToBeUpdatedInCanvas
planner.LocalCourse != null
&& existsInCanvas
&& NeedsToBeUpdatedInCanvas
&& assignmentInCanvas != null
)
{
<div class="mx-3 text-body-tertiary">
@Assignment.GetUpdateReason(
(CanvasAssignment)assignmentInCanvas,
(CanvasAssignment)assignmentInCanvas,
Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.Settings.AssignmentGroups))
</div>
}
@@ -149,25 +148,25 @@
</section>
</div>
}
@if(!showAll)
{
<div
class="text-center fs-3 fw-bold lh-1 text-primary"
role="button"
@onclick:preventDefault="true"
<div
class="text-center fs-3 fw-bold lh-1 text-primary"
role="button"
@onclick:preventDefault="true"
@onclick:stopPropagation="true"
@onclick="() => showAll = true"
>
<svg
width="30"
height="30"
viewBox="0 0 20 20"
<svg
width="30"
height="30"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 10a2 2 0 11-4.001-.001A2 2 0 016 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0112 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0118 10z"
<path
d="M6 10a2 2 0 11-4.001-.001A2 2 0 016 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0112 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0118 10z"
fill="var(--bs-primary)"
/>
</svg>
@@ -175,21 +174,21 @@
}
else
{
<div
class="text-center fs-3 fw-bold lh-1 text-primary"
role="button"
@onclick:preventDefault="true"
<div
class="text-center fs-3 fw-bold lh-1 text-primary"
role="button"
@onclick:preventDefault="true"
@onclick:stopPropagation="true"
@onclick="() => showAll = false"
>
<svg
width="30"
height="30"
viewBox="0 0 20 20"
<svg
width="30"
height="30"
viewBox="0 0 20 20"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 10a2 2 0 11-4.001-.001A2 2 0 016 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0112 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0118 10z"
<path
d="M6 10a2 2 0 11-4.001-.001A2 2 0 016 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0112 10zm6 0a2 2 0 11-4.001-.001A2 2 0 0118 10z"
fill="var(--bs-primary)"
/>
</svg>

View File

@@ -0,0 +1,32 @@
namespace CanvasModel.Pages;
public record PageModel (
[property: JsonPropertyName("page_id")] string PageId,
[property: JsonPropertyName("url")] string Url,
[property: JsonPropertyName("title")] string Title,
[property: JsonPropertyName("published")] bool Published,
[property: JsonPropertyName("front_page")] bool FrontPage,
[property: JsonPropertyName("body")] string? Body
);
// [JsonPropertyName("created_at")]
// public DateTime CreatedAt { get; set; }
// [JsonPropertyName("updated_at")]
// public DateTime UpdatedAt { get; set; }
// [JsonPropertyName("editing_roles")]
// public string EditingRoles { get; set; }
// [JsonPropertyName("last_edited_by")]
// public UserDisplayModel LastEditedBy { get; set; }
// [JsonPropertyName("locked_for_user")]
// public bool LockedForUser { get; set; }
// [JsonPropertyName("lock_info")]
// public LockInfoModel? LockInfo { get; set; }
// [JsonPropertyName("lock_explanation")]
// public string? LockExplanation { get; set; }

View File

@@ -0,0 +1,8 @@
namespace LocalModels;
public record LocalCoursePage
{
public required string Title { get; init; }
public required string Text { get; set; }
public DateTime? DueDateForOrdering { get; init; }
}

View File

@@ -4,9 +4,7 @@ public record LocalModule
{
public string Name { get; init; } = string.Empty;
public string Notes { get; set; } = string.Empty;
public IEnumerable<LocalAssignment> Assignments { get; init; } =
Enumerable.Empty<LocalAssignment>();
public IEnumerable<LocalQuiz> Quizzes { get; init; } = Enumerable.Empty<LocalQuiz>();
public IEnumerable<LocalAssignment> Assignments { get; init; } = [];
public IEnumerable<LocalQuiz> Quizzes { get; init; } = [];
public IEnumerable<LocalCoursePage> Pages { get; init; } = [];
}