@using Markdig @inject CoursePlanner planner @inject AssignmentEditorContext assignmentContext @code { protected override void OnInitialized() { assignmentContext.StateHasChanged += reload; reload(); } private void reload() { if (assignmentContext.Assignment != null) { if(description == string.Empty) { description = assignmentContext.Assignment.Description; descriptionForPreview = description; this.InvokeAsync(this.StateHasChanged); } if(TemplateId == string.Empty || TemplateId == null) { UseTemplate = TemplateId != null && TemplateId != ""; TemplateId = assignmentContext.Assignment.TemplateId; VariableValues = assignmentContext.Assignment.TemplateVariables; this.InvokeAsync(this.StateHasChanged); } } } public void Dispose() { assignmentContext.StateHasChanged -= reload; } private string description { get; set; } = string.Empty; private string descriptionForPreview { get; set; } = string.Empty; public bool? UseTemplate { get; set; } = null; public string? TemplateId { get; set; } public Dictionary VariableValues { get; set; } = new Dictionary(); private AssignmentTemplate? selectedTemplate => planner .LocalCourse? .Settings .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); } private void handleTemplateChange(ChangeEventArgs e) { if (assignmentContext.Assignment != null) { Console.WriteLine("input"); var newValue = bool.Parse(e.Value?.ToString() ?? "false"); UseTemplate = newValue; StateHasChanged(); if(!newValue) { TemplateId = string.Empty; VariableValues = new Dictionary(); assignmentContext.SaveAssignment( assignmentContext.Assignment with { TemplateId = TemplateId, TemplateVariables = VariableValues } ); } } } } @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