@using Management.Web.Shared.Components @inject ICanvasService canvas @inject CoursePlanner planner @code { protected override void OnInitialized() { planner.StateHasChanged += reload; } private void reload() { this.InvokeAsync(this.StateHasChanged); } public void Dispose() { planner.StateHasChanged -= reload; } private bool syncingAssignmentGroups { get; set; } = false; private void AddAssignmentGroup() { if(planner.LocalCourse != null) { var newGroup = new LocalAssignmentGroup { Name = "", Weight = 0, Id = Guid.NewGuid().ToString() }; var updatedGroups = planner.LocalCourse.Settings.AssignmentGroups.Append(newGroup); planner.LocalCourse = planner.LocalCourse with { Settings = planner.LocalCourse.Settings with { AssignmentGroups = updatedGroups } }; } } private Action saveGroupName(string groupId) { return (e) => { if(planner.LocalCourse != null) { var newName = e.Value?.ToString() ?? ""; var newGroups = planner.LocalCourse.Settings.AssignmentGroups.Select( g => g.Id == groupId ? g with { Name = newName } : g ); planner.LocalCourse = planner.LocalCourse with { Settings = planner.LocalCourse.Settings with { AssignmentGroups = newGroups } }; } }; } private Action saveGroupWeight(string groupId) { return (e) => { if(planner.LocalCourse != null) { var newWeight = double.Parse(e.Value?.ToString() ?? "0"); var newGroups = planner.LocalCourse.Settings.AssignmentGroups.Select( g => g.Id == groupId ? g with { Weight = newWeight } : g ); planner.LocalCourse = planner.LocalCourse with { Settings = planner.LocalCourse.Settings with { AssignmentGroups = newGroups } }; } }; } private async Task SyncAssignmentGroupsWithCanvas() { syncingAssignmentGroups = true; await planner.SyncAssignmentGroups(); syncingAssignmentGroups = false; } } @if(planner.LocalCourse != null) {

Assignment Groups

@foreach (var group in planner.LocalCourse.Settings.AssignmentGroups) { var groupName = group.Name; var nameInputCallback = saveGroupName(group.Id); var weight = group.Weight; var weightInputCallback = saveGroupWeight(group.Id);
}
@if(syncingAssignmentGroups) { } }