mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
workflow to create quiz only in markdown should work now
This commit is contained in:
@@ -95,7 +95,7 @@
|
|||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
@if(error != null)
|
@if(error != null)
|
||||||
{
|
{
|
||||||
<p class="text-danger text-truncate">@error</p>
|
<p class="text-danger text-truncate">Error: @error</p>
|
||||||
}
|
}
|
||||||
<QuizPreview Quiz="testQuiz" />
|
<QuizPreview Quiz="testQuiz" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
<div class="col-6">@Quiz.LocalAssignmentGroupName</div>
|
<div class="col-6">@Quiz.LocalAssignmentGroupName</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="p-3">@Quiz.Description</div>
|
<div class="p-3" style="white-space: pre-wrap;">@Quiz.Description</div>
|
||||||
|
|
||||||
@foreach(var question in Quiz.Questions)
|
@foreach(var question in Quiz.Questions)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public class QuizEditorContext
|
|||||||
|
|
||||||
|
|
||||||
private LocalQuiz? _quiz;
|
private LocalQuiz? _quiz;
|
||||||
|
|
||||||
|
private LocalModule? _module;
|
||||||
private readonly MyLogger<CanvasAssignmentService> logger;
|
private readonly MyLogger<CanvasAssignmentService> logger;
|
||||||
|
|
||||||
public LocalQuiz? Quiz
|
public LocalQuiz? Quiz
|
||||||
@@ -26,6 +28,10 @@ public class QuizEditorContext
|
|||||||
get => _quiz;
|
get => _quiz;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
if(_quiz == null)
|
||||||
|
{
|
||||||
|
_module = getCurrentModule(value, planner.LocalCourse);
|
||||||
|
}
|
||||||
_quiz = value;
|
_quiz = value;
|
||||||
StateHasChanged?.Invoke();
|
StateHasChanged?.Invoke();
|
||||||
}
|
}
|
||||||
@@ -33,18 +39,18 @@ public class QuizEditorContext
|
|||||||
|
|
||||||
public void SaveQuiz(LocalQuiz newQuiz)
|
public void SaveQuiz(LocalQuiz newQuiz)
|
||||||
{
|
{
|
||||||
if (planner.LocalCourse != null)
|
if (planner.LocalCourse != null && _module != null && Quiz != null)
|
||||||
{
|
{
|
||||||
var currentModule = getCurrentModule(newQuiz, planner.LocalCourse);
|
// use Quiz not newQuiz because it is the version that was last stored
|
||||||
|
|
||||||
var updatedModules = planner.LocalCourse.Modules
|
var updatedModules = planner.LocalCourse.Modules
|
||||||
.Select(
|
.Select(
|
||||||
m =>
|
m =>
|
||||||
m.Name == currentModule.Name
|
m.Name == _module.Name
|
||||||
? currentModule with
|
? m with
|
||||||
{
|
{
|
||||||
Quizzes = currentModule.Quizzes
|
Quizzes = m.Quizzes
|
||||||
.Select(q => q.Name + q.Description == newQuiz.Name + newQuiz.Description ? newQuiz : q)
|
.Select(q => q.Name + q.Description == Quiz.Name + Quiz.Description ? newQuiz : q)
|
||||||
.ToArray()
|
.ToArray()
|
||||||
}
|
}
|
||||||
: m
|
: m
|
||||||
@@ -58,12 +64,11 @@ public class QuizEditorContext
|
|||||||
|
|
||||||
public void DeleteQuiz()
|
public void DeleteQuiz()
|
||||||
{
|
{
|
||||||
if (planner.LocalCourse != null && Quiz != null)
|
if (planner.LocalCourse != null && Quiz != null && _module != null)
|
||||||
{
|
{
|
||||||
var currentModule = getCurrentModule(Quiz, planner.LocalCourse);
|
|
||||||
|
|
||||||
var updatedModules = planner.LocalCourse.Modules
|
var updatedModules = planner.LocalCourse.Modules
|
||||||
.Select(m => m.Name != currentModule.Name
|
.Select(m => m.Name != _module.Name
|
||||||
? m
|
? m
|
||||||
: m with {
|
: m with {
|
||||||
Quizzes = m.Quizzes.Where(q => q.Name + q.Description != Quiz.Name + Quiz.Description).ToArray()
|
Quizzes = m.Quizzes.Where(q => q.Name + q.Description != Quiz.Name + Quiz.Description).ToArray()
|
||||||
@@ -132,7 +137,9 @@ public class QuizEditorContext
|
|||||||
|
|
||||||
private static LocalModule getCurrentModule(LocalQuiz newQuiz, LocalCourse course)
|
private static LocalModule getCurrentModule(LocalQuiz newQuiz, LocalCourse course)
|
||||||
{
|
{
|
||||||
return course.Modules.FirstOrDefault(m => m.Quizzes.Select(q => q.Name + q.Description).Contains(newQuiz.Name + newQuiz.Description))
|
return course.Modules.FirstOrDefault(
|
||||||
|
m => m.Quizzes.Select(q => q.Name + q.Description).Contains(newQuiz.Name + newQuiz.Description)
|
||||||
|
)
|
||||||
?? throw new Exception("could not find current module in quiz editor context");
|
?? throw new Exception("could not find current module in quiz editor context");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,16 +76,33 @@ Description: {Description}
|
|||||||
|
|
||||||
var name = extractLabelValue(settings, "Name");
|
var name = extractLabelValue(settings, "Name");
|
||||||
|
|
||||||
var shuffleAnswers = bool.Parse(extractLabelValue(settings, "ShuffleAnswers"));
|
var rawShuffleAnswers = extractLabelValue(settings, "ShuffleAnswers");
|
||||||
var oneQuestionAtATime = bool.Parse(extractLabelValue(settings, "OneQuestionAtATime"));
|
var shuffleAnswers = bool.TryParse(rawShuffleAnswers, out bool parsedShuffleAnswers)
|
||||||
var allowedAttempts = int.Parse(extractLabelValue(settings, "AllowedAttempts"));
|
? parsedShuffleAnswers
|
||||||
var dueAt = DateTime.Parse(extractLabelValue(settings, "DueAt"));
|
: throw new QuizMarkdownParseException($"Error with ShuffleAnswers: {rawShuffleAnswers}");
|
||||||
|
|
||||||
|
|
||||||
|
var rawOneQuestionAtATime = extractLabelValue(settings, "OneQuestionAtATime");
|
||||||
|
var oneQuestionAtATime = bool.TryParse(rawOneQuestionAtATime, out bool parsedOneQuestion)
|
||||||
|
? parsedOneQuestion
|
||||||
|
: throw new QuizMarkdownParseException($"Error with oneQuestionAtATime: {rawOneQuestionAtATime}");
|
||||||
|
|
||||||
|
var rawAllowedAttempts = extractLabelValue(settings, "AllowedAttempts");
|
||||||
|
var allowedAttempts = int.TryParse(rawAllowedAttempts, out int parsedAllowedAttempts)
|
||||||
|
? parsedAllowedAttempts
|
||||||
|
: throw new QuizMarkdownParseException($"Error with AllowedAttempts: {rawAllowedAttempts}");
|
||||||
|
|
||||||
|
|
||||||
|
var rawDueAt = extractLabelValue(settings, "DueAt");
|
||||||
|
var dueAt = DateTime.TryParse(rawDueAt, out DateTime parsedDueAt)
|
||||||
|
? parsedDueAt
|
||||||
|
: throw new QuizMarkdownParseException($"Error with DueAt: {rawDueAt}");
|
||||||
|
|
||||||
|
|
||||||
var rawLockAt = extractLabelValue(settings, "LockAt");
|
var rawLockAt = extractLabelValue(settings, "LockAt");
|
||||||
DateTime? lockAt = DateTime.TryParse(rawLockAt, out DateTime parsedLockAt)
|
DateTime? lockAt = DateTime.TryParse(rawLockAt, out DateTime parsedLockAt)
|
||||||
? parsedLockAt
|
? parsedLockAt
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
|
|
||||||
var description = extractDescription(settings);
|
var description = extractDescription(settings);
|
||||||
|
|||||||
Reference in New Issue
Block a user