diff --git a/Management.Web/Pages/Index.razor b/Management.Web/Pages/Index.razor index 604451d..0901d06 100644 --- a/Management.Web/Pages/Index.razor +++ b/Management.Web/Pages/Index.razor @@ -55,10 +55,8 @@ protected override void OnInitialized() -
-
- -
+
+
} } @@ -75,3 +73,4 @@ protected override void OnInitialized()
} +
\ No newline at end of file diff --git a/Management.Web/Program.cs b/Management.Web/Program.cs index b01d772..2994758 100644 --- a/Management.Web/Program.cs +++ b/Management.Web/Program.cs @@ -5,6 +5,7 @@ global using CanvasModel.EnrollmentTerms; global using CanvasModel.Courses; global using CanvasModel; global using LocalModels; +global using Management.Web.Shared.Components; global using Management.Web.Shared.Course; using Microsoft.AspNetCore.Components; diff --git a/Management.Web/Shared/Components/TimePicker.razor b/Management.Web/Shared/Components/TimePicker.razor new file mode 100644 index 0000000..ebf2250 --- /dev/null +++ b/Management.Web/Shared/Components/TimePicker.razor @@ -0,0 +1,120 @@ + +@code { + [Parameter] + [EditorRequired] + public SimpleTimeOnly Time { get; set; } = default!; + + [Parameter] + [EditorRequired] + public Action UpdateTime { get; set; }= default!; + + private string AmPm + { + get => Time.Hour < 12 ? "AM" : "PM"; + } + private int AdjustedHour + { + get => convert24to12Hour(Time.Hour); + } + private int convert24to12Hour(int hour) + { + if (hour == 0) + { + // 12 AM + return 12; + } + else if (hour <= 12) + { + // AM hours + return hour; + } + else + { + // PM hours + return hour - 12; + } + } + private int convert12To24Hour(int hour, string? amPm) + { + if (amPm == null) return -1; + if (amPm.ToUpper() == "PM" && hour < 12) + { + return hour + 12; + } + else if (amPm.ToUpper() == "AM" && hour == 12) + { + return 0; + } + else + { + return hour; + } + } +} +
+ +: + + + +
\ No newline at end of file diff --git a/Management.Web/Shared/Course/CourseDetails.razor b/Management.Web/Shared/Course/CourseDetails.razor index d89b337..415b95e 100644 --- a/Management.Web/Shared/Course/CourseDetails.razor +++ b/Management.Web/Shared/Course/CourseDetails.razor @@ -40,17 +40,20 @@ else
-
+
@if (planner.LocalCourse != null) { - @foreach (var month in SemesterPlanner.GetMonthsBetweenDates(planner.LocalCourse.StartDate, planner.LocalCourse.EndDate)) - { - -
- } +
+ + @foreach (var month in SemesterPlanner.GetMonthsBetweenDates(planner.LocalCourse.StartDate, planner.LocalCourse.EndDate)) + { + +
+ } +
}
-
+
\ No newline at end of file diff --git a/Management.Web/Shared/Course/CourseSettings.razor b/Management.Web/Shared/Course/CourseSettings.razor index 387f4b2..8288eb0 100644 --- a/Management.Web/Shared/Course/CourseSettings.razor +++ b/Management.Web/Shared/Course/CourseSettings.razor @@ -1,3 +1,4 @@ +@using Management.Web.Shared.Components @inject CanvasService canvas @inject CoursePlanner planner @@ -85,11 +86,11 @@ @if (terms != null) {
-
-
- Select Term for Start and End Date: - + @foreach (var term in terms) { } @@ -97,4 +98,24 @@
-} \ No newline at end of file +} + + +@if(planner.LocalCourse != null) +{ +
+
+
Default Assignment Due Time
+ +
+
+} + +
\ No newline at end of file diff --git a/Management.Web/Shared/InitializeYamlFromCanvas.razor b/Management.Web/Shared/InitializeYamlFromCanvas.razor index 249ed2a..4bc31e4 100644 --- a/Management.Web/Shared/InitializeYamlFromCanvas.razor +++ b/Management.Web/Shared/InitializeYamlFromCanvas.razor @@ -20,10 +20,8 @@ set { _selectedTermId = value; + this.InvokeAsync(updateCourses); @* updateCourses(); *@ - var task = Task.Run(async () => await updateCourses()); - task.Wait(); - StateHasChanged(); } } private EnrollmentTermModel? selectedTerm diff --git a/Management.Web/Shared/Module/ModuleDetail.razor b/Management.Web/Shared/Module/ModuleDetail.razor index ec78f33..c634a96 100644 --- a/Management.Web/Shared/Module/ModuleDetail.razor +++ b/Management.Web/Shared/Module/ModuleDetail.razor @@ -45,8 +45,8 @@
+ @* data-bs-parent="#modulesAccordion" include to limit expanded sections *@
diff --git a/Management.Web/Shared/Semester/AssignmentInDay.razor b/Management.Web/Shared/Semester/AssignmentInDay.razor new file mode 100644 index 0000000..7188dbe --- /dev/null +++ b/Management.Web/Shared/Semester/AssignmentInDay.razor @@ -0,0 +1,64 @@ + +@inject AssignmentDragContainer dragContainer +@inject CoursePlanner planner + +@code { + [Parameter] + [EditorRequired] + public LocalAssignment Assignment { get; set; } = new(); + + private void HandleDragStart() + { + dragContainer.DropCallback = (DateTime dropDate) => { + var module = planner + .LocalCourse? + .Modules + .First(m => + m.Assignments + .Select(a => a.id) + .Contains(Assignment.id) + ); + if (module == null) + { + Console.WriteLine("module is null"); + return; + } + if (planner.LocalCourse != null) + { + var newCourse = planner.LocalCourse with + { + Modules = planner.LocalCourse.Modules.Select(m => + m.Name != module.Name + ? m + : m with + { + Assignments = module.Assignments.Select(a => + a.id != Assignment.id + ? a + : a with + { + due_at=dropDate + } + ) + } + ) + }; + planner.LocalCourse = newCourse; + } + }; + } + + private void HandleDragEnd() + { + dragContainer.DropCallback = null; + } +} + +
+ @Assignment.name +
\ No newline at end of file diff --git a/Management.Web/Shared/Semester/Day.razor b/Management.Web/Shared/Semester/Day.razor index 4e8c2a6..c3e8b17 100644 --- a/Management.Web/Shared/Semester/Day.razor +++ b/Management.Web/Shared/Semester/Day.razor @@ -56,7 +56,9 @@ && date < planner.LocalCourse.EndDate && date > planner.LocalCourse.StartDate; - var totalClasses = dayInSemester ? $"bg-light-subtle text-light " + baseClasses : baseClasses; + var totalClasses = dayInSemester + ? "bg-light-subtle text-light " + baseClasses + : " " + baseClasses; return totalClasses; } @@ -97,10 +99,10 @@ ondragover="event.preventDefault();" > @(isWeekDay ? date?.Day : "") -
    +
    @foreach (var assignment in TodaysAssignments) { -
  • @assignment.name
  • + } -
+
\ No newline at end of file diff --git a/Management.Web/Shared/Semester/MonthDetail.razor b/Management.Web/Shared/Semester/MonthDetail.razor index e2e30ed..bd5e2d6 100644 --- a/Management.Web/Shared/Semester/MonthDetail.razor +++ b/Management.Web/Shared/Semester/MonthDetail.razor @@ -35,20 +35,6 @@
@foreach (var day in week) { - - @* var baseClasses = "col border rounded rounded-3 pb-5 m-1"; - DayOfWeek? weekDay = day?.DayOfWeek; - if (weekDay != null) - { - DayOfWeek notNullDay = weekDay ?? default; - var dayInSemester = Semester.Days.Contains(notNullDay) && day < Semester.LastDay && day > Semester.FirstDay; - var totalClasses = dayInSemester ? $"bg-light {baseClasses}" : baseClasses; -
@day?.Day
- } - else - { -
- } *@ }
diff --git a/Management/Models/Local/LocalCourse.cs b/Management/Models/Local/LocalCourse.cs index 170fbf5..f9c58da 100644 --- a/Management/Models/Local/LocalCourse.cs +++ b/Management/Models/Local/LocalCourse.cs @@ -8,4 +8,11 @@ public record LocalCourse public ulong? CanvasId { get; init; } public DateTime StartDate { get; init; } public DateTime EndDate { get; init; } + public SimpleTimeOnly DefaultDueTime { get; init; } = new SimpleTimeOnly(); +} + +public record SimpleTimeOnly +{ + public int Hour { get; init; } = 1; + public int Minute { get; init; } = 0; }