From 7413ba8c1b157fe651a68eee678addc9650a598c Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 18 Oct 2023 09:57:11 -0600 Subject: [PATCH] put quiz form on its own page --- Management.Web/Pages/QuizFormPage.razor | 100 ++++++++++++++++++ .../Quiz/Markdown/MarkdownQuizForm.razor | 100 ++++++------------ .../Shared/Course/CourseDetails.razor | 5 - ...Details.razor => AssignmentListItem.razor} | 0 .../Shared/Module/ModuleDetail.razor | 4 +- .../{QuizDetail.razor => QuizListItem.razor} | 10 +- .../Shared/Semester/Day/QuizInDay.razor | 8 +- .../Configuration/QuizEditorContext.cs | 6 +- 8 files changed, 153 insertions(+), 80 deletions(-) create mode 100644 Management.Web/Pages/QuizFormPage.razor rename Management.Web/Shared/Module/Assignment/{AssignmentDetails.razor => AssignmentListItem.razor} (100%) rename Management.Web/Shared/Module/{QuizDetail.razor => QuizListItem.razor} (83%) diff --git a/Management.Web/Pages/QuizFormPage.razor b/Management.Web/Pages/QuizFormPage.razor new file mode 100644 index 0000000..9c4fe04 --- /dev/null +++ b/Management.Web/Pages/QuizFormPage.razor @@ -0,0 +1,100 @@ +@page "/course/{CourseName}/quiz/{QuizName}" + +@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 +@using Management.Web.Shared.Components.Quiz.Markdown + +@inject YamlManager yamlManager +@inject CanvasService canvas +@inject CoursePlanner planner +@inject QuizEditorContext quizContext +@inject ILogger logger +@inject NavigationManager Navigation + +@code { + [Parameter] + public string? CourseName { get; set; } = default!; + [Parameter] + public string? QuizName { get; set; } = default!; + + private bool loading { get; set; }= true; + + protected override async Task OnInitializedAsync() + { + if(loading) + { + loading = false; + logger.LogInformation($"loading quiz {CourseName} {QuizName}"); + if(planner.LocalCourse == null) + { + var courses = await yamlManager.LoadSavedCourses(); + planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName); + logger.LogInformation($"set course to '{planner.LocalCourse?.Settings.Name}'"); + } + + if(quizContext.Quiz == null) + { + var quiz = planner + .LocalCourse? + .Modules + .SelectMany(m => m.Quizzes) + .FirstOrDefault(q => q.Name == QuizName); + + quizContext.Quiz = quiz; + logger.LogInformation($"set quiz to '{quizContext.Quiz?.Name}'"); + } + base.OnInitialized(); + StateHasChanged(); + } + } + + private void deleteQuiz() + { + quizContext.DeleteQuiz(); + Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); + } + + private async Task addToCanvas() + { + await quizContext.AddQuizToCanvas(); + } + private void done() + { + quizContext.Quiz = null; + Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); + } +} + +@if(quizContext.Quiz == null) +{ + +} + +@if(quizContext.Quiz != null) +{ + +} + + +@if(quizContext.Quiz != null) +{ +
+
+ + + +
+
+} \ No newline at end of file diff --git a/Management.Web/Shared/Components/Quiz/Markdown/MarkdownQuizForm.razor b/Management.Web/Shared/Components/Quiz/Markdown/MarkdownQuizForm.razor index 738dd3d..52c2d77 100644 --- a/Management.Web/Shared/Components/Quiz/Markdown/MarkdownQuizForm.razor +++ b/Management.Web/Shared/Components/Quiz/Markdown/MarkdownQuizForm.razor @@ -10,21 +10,21 @@ private string? error { get; set; } = null; private string _quizMarkdownInput { get; set; } = ""; - private string quizMarkdownInput - { + private string quizMarkdownInput + { get => _quizMarkdownInput; set { _quizMarkdownInput = value; - try + try { var newQuiz = LocalQuiz.ParseMarkdown(_quizMarkdownInput); error = null; testQuiz = newQuiz; quizContext.SaveQuiz(newQuiz); } - catch(QuizMarkdownParseException e) + catch (QuizMarkdownParseException e) { error = e.Message; StateHasChanged(); @@ -34,17 +34,17 @@ protected override void OnInitialized() { + reload(); quizContext.StateHasChanged += reload; } private void reload() { if (quizContext.Quiz != null) { - if(quizMarkdownInput == "") + if (quizMarkdownInput == "") { quizMarkdownInput = quizContext.Quiz.ToMarkdown(); } - modal?.Show(); this.InvokeAsync(this.StateHasChanged); } } @@ -53,69 +53,33 @@ quizContext.StateHasChanged -= reload; } - private void deleteQuiz() - { - quizContext.DeleteQuiz(); - modal?.Hide(); - } - - private async Task addToCanvas() - { - await quizContext.AddQuizToCanvas(); - } - - private void onHide() - { - _quizMarkdownInput = ""; - quizContext.Quiz = null; - } } - - - <div class="row justify-content-between"> - <div class="col-auto"> - @quizContext.Quiz?.Name - </div> - <div class="col-auto me-3"> - Points: @quizContext.Quiz?.Questions.Sum(q => q.Points) - </div> - </div> - - -
-
-