@page "/course/{CourseName}/quiz/{QuizName}" @using CanvasModel.EnrollmentTerms @using CanvasModel.Quizzes @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 @using Management.Web.Shared.Module.Assignment @using Management.Web.Shared.Components @using Management.Web.Shared.Components.Quiz.Markdown @inject FileStorageManager fileStorageManager @inject CanvasService canvas @inject CoursePlanner planner @inject QuizEditorContext quizContext @inject MyLogger 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; private bool addingQuizToCanvas = false; protected override void OnInitialized() { quizContext.StateHasChanged += reload; } private void reload() { this.InvokeAsync(this.StateHasChanged); } public void Dispose() { quizContext.StateHasChanged -= reload; } protected override async Task OnInitializedAsync() { if (loading) { loading = false; logger.Log($"loading quiz {CourseName} {QuizName}"); if (planner.LocalCourse == null) { var courses = await fileStorageManager.LoadSavedCourses(); planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName); logger.Log($"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.Log($"set quiz to '{quizContext.Quiz?.Name}'"); } StateHasChanged(); if (planner.CanvasQuizzes == null) { await planner.LoadCanvasData(); } base.OnInitialized(); StateHasChanged(); } } private void deleteQuiz() { quizContext.DeleteQuiz(); Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); } private async Task addToCanvas() { addingQuizToCanvas = true; await quizContext.AddQuizToCanvas(); await planner.LoadCanvasData(); addingQuizToCanvas = false; } private void done() { quizContext.Quiz = null; Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); } private CanvasQuiz? quizInCanvas => planner.CanvasQuizzes?.FirstOrDefault(q => q.Title == quizContext.Quiz?.Name); private string canvasQuizUrl => $"https://snow.instructure.com/courses/{planner.LocalCourse?.Settings.CanvasId}/quizzes/{quizInCanvas?.Id}"; private int? quizPoints => quizContext.Quiz?.Questions.Sum(q => q.Points); private bool showHelp = false; private readonly static string exampleMarkdownQuestion = @"QUESTION REFERENCE --- Points: 2 this is a question? *a) correct b) not correct --- points: 1 question goes here [*] correct [ ] not correct [] not correct --- the points default to 1? *a) true b) false --- Markdown is supported - like - this - list [*] true [ ] false --- This is a one point essay question essay --- points: 4 this is a short answer question short_answer --- points: 4 the underscore is optional short answer --- this is a matching question ^ left answer - right dropdown ^ other thing - another option "; }

@quizContext.Quiz?.Name

@if (quizContext.Quiz == null) {
}

Questions: @quizContext.Quiz?.Questions.Count() - Points: @quizPoints

@if (quizInCanvas != null) { @if (quizInCanvas?.Published == true) {
Published!
} else {
Not Published
} }
@if(showHelp) {
        @exampleMarkdownQuestion
      
}
@if (quizContext.Quiz != null) { }
@if (quizContext.Quiz != null) {
@if (quizInCanvas != null) { View in Canvas }
} @if (addingQuizToCanvas) { }