@using Markdig @inject CoursePlanner planner @code { protected override void OnInitialized() { planner.StateHasChanged += reload; } private void reload() { this.InvokeAsync(this.StateHasChanged); } public void Dispose() { planner.StateHasChanged -= reload; } [Parameter, EditorRequired] public LocalAssignment Assignment { get; set; } = default!; public string Description { get; set; } = default!; public bool UseTemplate { get; set; } public string? TemplateId { get; set; } public Dictionary VariableValues { get; set; } = new Dictionary(); protected override void OnParametersSet() { Description = Assignment.Description; TemplateId = Assignment.TemplateId; UseTemplate = Assignment.TemplateId != null && Assignment.TemplateId != ""; } private AssignmentTemplate? selectedTemplate => planner .LocalCourse? .AssignmentTemplates .FirstOrDefault(t => t.Id == Assignment.TemplateId); public string Preview => Markdown.ToHtml(Assignment.Description); private void SaveAssignment(LocalAssignment newAssignment) { if(planner.LocalCourse != null) { var currentModule = planner .LocalCourse .Modules .First(m => m.Assignments .Select(a => a.Id) .Contains(Assignment.Id) ) ?? throw new Exception("could not find current module in assignment description form"); var updatedModules = planner.LocalCourse.Modules.Select(m => m.Name == currentModule.Name ? currentModule with { Assignments=currentModule.Assignments.Select(a => a.Id == newAssignment.Id ? newAssignment : a ).ToArray() } : m ).ToArray(); planner.LocalCourse = planner.LocalCourse with { Modules=updatedModules }; } } }
use template for description
@if (UseTemplate) { @if (planner.LocalCourse != null) {
VARIABLES: @if (selectedTemplate != null) { var variables = AssignmentTemplate.GetVariables(selectedTemplate.Markdown); @foreach (var variable in variables) {
} }
} } else {
HTML Preview