@using Management.Web.Shared.Components @inject CoursePlanner planner @inject AssignmentEditorContext assignmentContext @code { private IEnumerable displayRubric { get; set; } = new RubricItem[] { }; private string _rubricText = ""; private string rubricText { get => _rubricText; set { _rubricText = value; try { var parsedRubric = LocalAssignment.ParseRubricMarkdown(value); displayRubric = parsedRubric; error = null; if (assignmentContext.Assignment != null) { var newAssignment = assignmentContext.Assignment with { Rubric = parsedRubric, }; assignmentContext.SaveAssignment(newAssignment); } } catch (RubricMarkdownParseException parseError) { error = parseError.Message; } StateHasChanged(); } } private int rubricReloadKey = 0; private string? error { get; set; } = null; protected override void OnInitialized() { assignmentContext.StateHasChanged += reload; reload(); } private void reload() { if (assignmentContext.Assignment != null) { if (rubricText == string.Empty) { rubricText = assignmentContext.Assignment.RubricToMarkdown(); } } this.InvokeAsync(this.StateHasChanged); } public void Dispose() { assignmentContext.StateHasChanged -= reload; } private int requiredPoints => displayRubric.Where(r => !r.IsExtraCredit).Select(r => r.Points).Sum(); private int extraCreditPoints => displayRubric.Where(r => r.IsExtraCredit).Select(r => r.Points).Sum(); }

Rubric

@*