@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; } = null; public string? TemplateId { get; set; } public Dictionary VariableValues { get; set; } = new Dictionary(); protected override void OnParametersSet() { Description = Assignment.Description; Preview = Markdown.ToHtml(Assignment.Description); if (currentDescription == null) currentDescription = Description; TemplateId = Assignment.TemplateId; if (UseTemplate == null) { UseTemplate = Assignment.TemplateId != null && Assignment.TemplateId != ""; } } private AssignmentTemplate? selectedTemplate => planner .LocalCourse? .AssignmentTemplates .FirstOrDefault(t => t.Id == Assignment.TemplateId); public string Preview { get; set; } 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 }; } } private string? currentDescription { get; set; } = null; }
@if (UseTemplate ?? false) { @if (planner.LocalCourse != null) {
VARIABLES: @if (selectedTemplate != null) { var variables = AssignmentTemplate.GetVariables(selectedTemplate.Markdown); @foreach (var variable in variables) {
} }
} } else {
HTML Preview