use monaco editor for quizzes

This commit is contained in:
2023-11-09 15:15:22 -07:00
parent ea6271428a
commit 4a113fc8ca
11 changed files with 87 additions and 26 deletions

View File

@@ -124,7 +124,7 @@
var newAssignment = assignmentContext.Assignment with
{
LocalAssignmentGroupId = group?.Id
LocalAssignmentGroupName = group?.Name
};
assignmentContext.SaveAssignment(newAssignment);
@@ -135,7 +135,7 @@
.LocalCourse?
.Settings
.AssignmentGroups
.FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId);
.FirstOrDefault(g => g.Name == assignmentContext.Assignment?.LocalAssignmentGroupName);
private async Task addToCanvas()
{

View File

@@ -0,0 +1,46 @@
@using BlazorMonaco
@using BlazorMonaco.Editor
@code {
[Parameter, EditorRequired]
public string Value { get; set; }
[Parameter, EditorRequired]
public Action<string> OnChange { get; set; }
private StandaloneCodeEditor _editor = null!;
private StandaloneEditorConstructionOptions EditorConstructionOptions(StandaloneCodeEditor editor)
{
return new StandaloneEditorConstructionOptions
{
Language = "markdown",
Theme = "vs-dark",
TabSize = 2,
Value = Value,
Minimap = new EditorMinimapOptions { Enabled = false },
LineNumbers = "off",
LineDecorationsWidth = 0,
WordWrap = "on",
AutomaticLayout = true,
FontFamily = "DM Mono, monospace",
FontSize = 16,
};
}
private async Task OnDidChangeModelContent()
{
var newValue = await _editor.GetValue();
OnChange(newValue);
}
}
<StandaloneCodeEditor
@ref="_editor"
Id="sample-code-editor-123"
ConstructionOptions="EditorConstructionOptions"
OnDidChangeModelContent="OnDidChangeModelContent"
/>

View File

@@ -15,6 +15,7 @@
get => _quizMarkdownInput;
set
{
Console.WriteLine("setting");
_quizMarkdownInput = value;
try
@@ -102,11 +103,16 @@ short answer";
}
<div class="row flex-grow-1">
<div class="col-6">
<textarea
@* <textarea
class="form-control h-100"
@bind="quizMarkdownInput"
@bind:event="oninput"
/> *@
<MonacoTextArea
Value="@quizMarkdownInput"
OnChange="@((v) => quizMarkdownInput = v)"
/>
</div>
<div class="col-6">
@if (error != null)

View File

@@ -141,7 +141,7 @@
if(!isSyncedWithCanvas)
{
<button
class="btn btn-outline-primary"
class="btn btn-outline-primarycanvasCourseId"
@onclick="Publish"
disabled="@publishing"
>

View File

@@ -28,7 +28,7 @@
LockAt = null,
DueAt = DateTime.Now,
SubmissionTypes = new string[] { SubmissionType.ONLINE_TEXT_ENTRY },
LocalAssignmentGroupId = selectedAssignmentGroup?.Id,
LocalAssignmentGroupName = selectedAssignmentGroup?.Name,
};
if(planner.LocalCourse != null)

View File

@@ -16,11 +16,9 @@
{
var newModule = new LocalModule
{
Name=Name,
Id=Guid.NewGuid().ToString()
Name=Name
};
planner.LocalCourse = planner.LocalCourse with
{
Modules = planner.LocalCourse.Modules.Append(newModule)

View File

@@ -22,20 +22,21 @@
return;
var newModule = Module with
{
Name = Name
};
{
Name = Name
};
// Module is the not renamed version
var newModules = planner.LocalCourse.Modules.Select(
m => m.Id == Module.Id
? newModule
: m
m => m.Name == Module.Name
? newModule
: m
).ToArray();
planner.LocalCourse = planner.LocalCourse with
{
Modules = newModules
};
{
Modules = newModules
};
Name = "";
modal?.Hide();
}