diff --git a/WebApp/Components/Pages/MeetingSchedulePages/Scheduler.razor b/WebApp/Components/Pages/MeetingSchedulePages/Scheduler.razor index 3a1aed9..105aeb5 100644 --- a/WebApp/Components/Pages/MeetingSchedulePages/Scheduler.razor +++ b/WebApp/Components/Pages/MeetingSchedulePages/Scheduler.razor @@ -1,5 +1,6 @@ @using Core.Calculation @using Microsoft.EntityFrameworkCore +@using NuGet.Packaging @page "/meeting-schedule/scheduler" @inject IConfiguration Configuration @inject AppDbContext Context @@ -10,56 +11,77 @@ + Include: @string.Join(", ", _requiredTeams) - + + + Add Regionals + Remove Individual + + + @foreach (var team in _teams.OrderBy(e => e.Event.Name)) + { + + } + + + + - - Require Regionals - - - Solve - + @* *@ + + Time Slots + Solve + + - -Time Slots - - - - - - - @{ - var ol = TeamSchedulerSolution.GetStudentTeamOverlaps(context);} - @foreach (var t in context) - { - - @t.ToString() - - @string.Join(", ", t.Students.Select(s => s.FirstName + " " + (ol.Any(o => o.Item1.Equals(s)) ? "*" : "" )) ) - - } - @* @foreach (var overlap in ol) + + + + @{ + var ol = TeamSchedulerSolution.GetStudentTeamOverlaps(context); + } + @foreach (var t in context) + { + + @t.ToString() - + @string.Join(", ", t.Students.Select(s => s.FirstName + " " + (ol.Any(o => o.Item1.Equals(s)) ? "*" : ""))) + + } + @* @foreach (var overlap in ol) { @string.Join(", ", overlap.Item1) } *@ - - @{ var notInTimeSLot = TeamSchedulerSolution.GetStudentsNotInTimSlot(context, _students); } - @if (notInTimeSLot.Any()) { - - - Not scheduled: @string.Join(", ", notInTimeSLot.Select(s => s.FirstName)) - - - } - - - - + @{ var notInTimeSLot = TeamSchedulerSolution.GetStudentsNotInTimSlot(context, _students); } + @if (notInTimeSLot.Any()) + { + + + Not scheduled: @string.Join(", ", notInTimeSLot.Select(s => s.FirstName)) + + + } + + + + + + + + + + + @code { private Team[]? _teams; @@ -68,14 +90,24 @@ private TeamSchedulerSolution _solution; private TeamSchedulerOptions _parameters; bool _isSolving = false; - private HashSet _requiredTeams = []; + private IEnumerable _requiredTeams = []; + //private Team[] _requiredTeams = []; - private void RequireRegionals() + private void OnSelectedValuesChanged(IEnumerable obj) { - foreach (var team in _teams.Where(e => e.Event.RegionalEvent)) - { - _requiredTeams.Add(team); - } + _requiredTeams = obj.ToList(); + } + + private void AddRegionals() + { + _requiredTeams + = _teams.Where(e => e.Event.RegionalEvent).Concat(_requiredTeams).Distinct(); + } + + private void RemoveIndividual() + { + _requiredTeams + = _requiredTeams.Where(t => t.Event.EventFormat != EventFormat.Individual); } protected override async Task OnInitializedAsync() @@ -129,10 +161,6 @@ private async Task> SolveSchedule(TableState arg1, CancellationToken arg2) { - //_isSolving = true; - - - var requiredTeams = _teams; var teamScheduler = new TeamScheduler(_requiredTeams, _parameters.TimeSlots); @@ -155,4 +183,5 @@ { _solutionData.ReloadServerData(); } + }