@using Markdig @inject CoursePlanner planner @inject AssignmentEditorContext assignmentContext @code { protected override void OnInitialized() { assignmentContext.StateHasChanged += reload; reload(); } private void reload() { if (assignmentContext.Assignment != null) { description = assignmentContext.Assignment.Description; descriptionForPreview = description; TemplateId = assignmentContext.Assignment.TemplateId; UseTemplate = TemplateId != null && TemplateId != ""; VariableValues = assignmentContext.Assignment.TemplateVariables; this.InvokeAsync(this.StateHasChanged); } } public void Dispose() { assignmentContext.StateHasChanged -= reload; } private string description { get; set; } = default!; private string descriptionForPreview { get; set; } = default!; public bool? UseTemplate { get; set; } = null; public string? TemplateId { get; set; } public Dictionary VariableValues { get; set; } = new Dictionary(); private AssignmentTemplate? selectedTemplate => planner .LocalCourse? .AssignmentTemplates .FirstOrDefault(t => t.Id == TemplateId); private void handleNewDescription(ChangeEventArgs e) { var newDescription = e.Value?.ToString(); if (newDescription != string.Empty) { descriptionForPreview = newDescription; if (assignmentContext.Assignment != null) { var newAssignment = assignmentContext.Assignment with { Description = newDescription }; assignmentContext.SaveAssignment(newAssignment); } } } private void saveTemplateId(ChangeEventArgs e) { if(assignmentContext.Assignment != null) { var newTemplateId = e.Value?.ToString(); var newAssignment = assignmentContext.Assignment with { TemplateId = newTemplateId }; assignmentContext.SaveAssignment(newAssignment); } } private MarkupString preview { get => (MarkupString)Markdown.ToHtml(descriptionForPreview); } } @if(assignmentContext.Assignment != null && planner.LocalCourse != null) {
@if (UseTemplate ?? false) {
VARIABLES: @if (selectedTemplate != null) { var variables = AssignmentTemplate.GetVariables(selectedTemplate.Markdown); @foreach (var variable in variables) {
} }
} else {
HTML Preview