@inject DragContainer dragContainer @inject CoursePlanner configurationManagement @inject CoursePlanner planner @code { [Parameter, EditorRequired] public DateTime? date { get; set; } = default!; private bool isWeekDay { get => date?.DayOfWeek != null; } private bool dragging {get; set;} = false; protected override void OnInitialized() { planner.StateHasChanged += reload; } private void reload() { this.InvokeAsync(this.StateHasChanged); } public void Dispose() { planner.StateHasChanged -= reload; } private IEnumerable TodaysAssignments { get { if(planner.LocalCourse == null || date == null) return Enumerable.Empty(); else return planner.LocalCourse.Modules .SelectMany(m => m.Assignments) .Where(a => a.DueAt.Date == date?.Date); } } private IEnumerable todaysQuizzes { get { if(planner.LocalCourse == null || date == null) return Enumerable.Empty(); else return planner.LocalCourse.Modules .SelectMany(m => m.Quizzes) .Where(q => q.DueAt.Date == date?.Date); } } private IEnumerable todaysPages { get { if(planner.LocalCourse == null || date == null) return Enumerable.Empty(); else return planner.LocalCourse.Modules .SelectMany(m => m.Pages) .Where(q => q.DueAt.Date == date?.Date); } } private string calculatedClass { get { var baseClasses = "col border rounded rounded-3 p-2 pb-4 m-1 "; if(dragging) return baseClasses + " bg-secondary text-light "; if(date?.Date == DateTime.Today) baseClasses += " border-1 border-primary-subtle "; if (isWeekDay) { DayOfWeek? weekDay = date?.DayOfWeek; DayOfWeek notNullDay = weekDay ?? default; var isClassDay = planner.LocalCourse?.Settings.DaysOfWeek.Contains(notNullDay) ?? false; var dayInSemester = isClassDay && date <= planner.LocalCourse?.Settings.EndDate && date >= planner.LocalCourse?.Settings.StartDate; var totalClasses = dayInSemester ? "bg-light-subtle text-light " + baseClasses : " " + baseClasses; return totalClasses; } else { return baseClasses; } } } void OnDragEnter() { dragging = true; } void OnDragLeave() { dragging = false; } void OnDrop() { dragging = false; if(dragContainer.DropCallback == null){ System.Console.WriteLine("no drop callback set"); return; } if(date != null) { DateTime d = date ?? throw new Exception("should not get here, error converting date from nullable"); dragContainer.DropCallback?.Invoke(d, null); } } }
@(isWeekDay ? date?.Day : "")
    @foreach (var assignment in TodaysAssignments) { } @foreach(var quiz in todaysQuizzes) { } @foreach(var page in todaysPages) { }