@using Management.Web.Shared.Components @inject CoursePlanner planner @inject AssignmentEditorContext assignmentContext @code { private IEnumerable rubric { get; set; } = Array.Empty(); protected override void OnInitialized() { assignmentContext.StateHasChanged += reload; reload(); } private void reload() { if (assignmentContext.Assignment != null) { rubric = assignmentContext.Assignment.Rubric; } this.InvokeAsync(this.StateHasChanged); } public void Dispose() { assignmentContext.StateHasChanged -= reload; } private void save() { if (assignmentContext.Assignment != null) { var totalRubricPoints = rubric .Where(r => !r.Label.Contains(RubricItem.extraCredit)) .Select(s => s.Points) .Sum(); var newAssignment = assignmentContext.Assignment with { Rubric = rubric, PointsPossible = totalRubricPoints, }; assignmentContext.SaveAssignment(newAssignment); StateHasChanged(); } } private void addItem() { if (assignmentContext.Assignment != null) { rubric = rubric.Append(new RubricItem { Id = Guid.NewGuid().ToString(), Label = "", Points = 0 }); } } private void removeItem() { if (assignmentContext.Assignment != null) { rubric = rubric.Take(rubric.Count() - 1); save(); } } private void editItem(RubricItem newItem) { if (assignmentContext.Assignment != null) { rubric = rubric.Select(i => i.Id == newItem.Id ? newItem : i); save(); } } private void MoveUp(RubricItem item) { if (assignmentContext.Assignment != null) { var rubricList = rubric.ToList(); var index = rubricList.IndexOf(item); if (index > 0) { var previous = rubricList[index - 1]; rubricList[index - 1] = item; rubricList[index] = previous; rubric = rubricList; save(); } } } private void MoveDown(RubricItem item) { if (assignmentContext.Assignment != null) { var rubricList = rubric.ToList(); var index = rubricList.IndexOf(item); if (index < rubricList.Count()) { var next = rubricList[index + 1]; rubricList[index + 1] = item; rubricList[index] = next; rubric = rubricList; save(); } } } }
Rubric