mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
moved settings into their own object
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
private AssignmentTemplate? selectedTemplate =>
|
||||
planner
|
||||
.LocalCourse?
|
||||
.Settings
|
||||
.AssignmentTemplates
|
||||
.FirstOrDefault(t => t.Id == TemplateId);
|
||||
|
||||
@@ -133,7 +134,7 @@
|
||||
@oninput="saveTemplateId"
|
||||
>
|
||||
<option value=""></option>
|
||||
@foreach (var template in planner.LocalCourse.AssignmentTemplates)
|
||||
@foreach (var template in planner.LocalCourse.Settings.AssignmentTemplates)
|
||||
{
|
||||
<option value="@template.Id">@template.Name</option>
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
private LocalAssignmentGroup? selectedAssignmentGroup =>
|
||||
planner
|
||||
.LocalCourse?
|
||||
.Settings
|
||||
.AssignmentGroups
|
||||
.FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId);
|
||||
}
|
||||
@@ -148,7 +149,7 @@
|
||||
</div>
|
||||
<ButtonSelect
|
||||
Label="Assignment Group"
|
||||
Options="planner.LocalCourse.AssignmentGroups"
|
||||
Options="planner.LocalCourse?.Settings.AssignmentGroups"
|
||||
GetId="(g) => g.Id"
|
||||
GetName="(g) => g.Name"
|
||||
OnSelect="(g) => setAssignmentGroup(g)"
|
||||
|
||||
@@ -35,8 +35,8 @@ public class DroppableQuiz : ComponentBase
|
||||
year: dropDate.Year,
|
||||
month: dropDate.Month,
|
||||
day: dropDate.Day,
|
||||
hour: planner.LocalCourse.DefaultDueTime.Hour,
|
||||
minute: planner.LocalCourse.DefaultDueTime.Minute,
|
||||
hour: planner.LocalCourse.Settings.DefaultDueTime.Hour,
|
||||
minute: planner.LocalCourse.Settings.DefaultDueTime.Minute,
|
||||
second: 0
|
||||
);
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
private LocalAssignmentGroup? selectedAssignmentGroup =>
|
||||
planner
|
||||
.LocalCourse?
|
||||
.Settings
|
||||
.AssignmentGroups
|
||||
.FirstOrDefault(g => g.Id == quizContext.Quiz?.LocalAssignmentGroupId);
|
||||
}
|
||||
@@ -95,9 +96,9 @@
|
||||
</div>
|
||||
<ButtonSelect
|
||||
Label="Assignment Group"
|
||||
Options="planner.LocalCourse.AssignmentGroups"
|
||||
GetId="(g) => g.Id"
|
||||
GetName="(g) => g.Name"
|
||||
Options="planner.LocalCourse.Settings.AssignmentGroups"
|
||||
GetId="(g) => g?.Id"
|
||||
GetName="(g) => g?.Name"
|
||||
OnSelect="(g) => setAssignmentGroup(g)"
|
||||
SelectedOption="selectedAssignmentGroup"
|
||||
/>
|
||||
|
||||
@@ -28,10 +28,13 @@
|
||||
Id = Guid.NewGuid().ToString()
|
||||
};
|
||||
|
||||
var updatedGroups = planner.LocalCourse.AssignmentGroups.Append(newGroup);
|
||||
var updatedGroups = planner.LocalCourse.Settings.AssignmentGroups.Append(newGroup);
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
AssignmentGroups = updatedGroups
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -43,14 +46,17 @@
|
||||
if(planner.LocalCourse != null)
|
||||
{
|
||||
var newName = e.Value?.ToString() ?? "";
|
||||
var newGroups = planner.LocalCourse.AssignmentGroups.Select(
|
||||
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
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -62,14 +68,17 @@
|
||||
if(planner.LocalCourse != null)
|
||||
{
|
||||
var newWeight = double.Parse(e.Value?.ToString() ?? "0");
|
||||
var newGroups = planner.LocalCourse.AssignmentGroups.Select(
|
||||
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
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -79,7 +88,7 @@
|
||||
@if(planner.LocalCourse != null)
|
||||
{
|
||||
<h4 class="text-center">Assignment Groups</h4>
|
||||
@foreach (var group in planner.LocalCourse.AssignmentGroups)
|
||||
@foreach (var group in planner.LocalCourse.Settings.AssignmentGroups)
|
||||
{
|
||||
var groupName = group.Name;
|
||||
var nameInputCallback = saveGroupName(group.Id);
|
||||
|
||||
@@ -78,17 +78,20 @@
|
||||
<div class="col">
|
||||
<button
|
||||
class="@(
|
||||
planner.LocalCourse?.DaysOfWeek.Contains(day) ?? false
|
||||
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
|
||||
? "btn btn-secondary"
|
||||
: "btn btn-outline-secondary"
|
||||
)"
|
||||
@onclick="() =>
|
||||
{
|
||||
if(planner.LocalCourse?.DaysOfWeek.Contains(day) ?? false)
|
||||
if(planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false)
|
||||
{
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
DaysOfWeek = planner.LocalCourse.DaysOfWeek.Where((d) => d != day)
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Where((d) => d != day)
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
@@ -97,7 +100,10 @@
|
||||
{
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
DaysOfWeek = planner.LocalCourse.DaysOfWeek.Append(day)
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Append(day)
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -137,12 +143,10 @@
|
||||
<div class="row justify-content-center m-3 text-center">
|
||||
<div class="col-auto">
|
||||
<div>Default Assignment Due Time</div>
|
||||
<TimePicker
|
||||
Time="planner.LocalCourse.DefaultDueTime"
|
||||
UpdateTime="@((newTime) =>
|
||||
<TimePicker Time="planner.LocalCourse.Settings.DefaultDueTime" UpdateTime="@((newTime) =>
|
||||
planner.LocalCourse =
|
||||
planner.LocalCourse with
|
||||
{ DefaultDueTime=newTime }
|
||||
{ Settings = planner.LocalCourse.Settings with { DefaultDueTime=newTime } }
|
||||
)"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -61,12 +61,12 @@
|
||||
var course = new LocalCourse
|
||||
{
|
||||
Modules = new LocalModule[] {},
|
||||
DaysOfWeek = days,
|
||||
Settings = new LocalCourseSettings() {
|
||||
Name = selectedCourse.Name,
|
||||
CanvasId = selectedCourse.Id,
|
||||
StartDate = selectedTerm?.StartAt ?? new DateTime(),
|
||||
EndDate = selectedTerm?.EndAt ?? new DateTime(),
|
||||
DaysOfWeek = days,
|
||||
}
|
||||
};
|
||||
await yamlManager.SaveCourseAsync(course);
|
||||
|
||||
@@ -78,8 +78,8 @@
|
||||
&& planner.CanvasModules != null
|
||||
&& Assignment.NeedsUpdates(
|
||||
planner.CanvasAssignments,
|
||||
planner.LocalCourse.AssignmentTemplates,
|
||||
Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.AssignmentGroups)
|
||||
planner.LocalCourse.Settings.AssignmentTemplates,
|
||||
Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.Settings.AssignmentGroups)
|
||||
)
|
||||
)
|
||||
{
|
||||
@@ -110,7 +110,7 @@
|
||||
<div class="card-text">
|
||||
<div class="px-3 py-1 bg-dark-subtle my-1">
|
||||
|
||||
@((MarkupString) @Assignment.GetDescriptionHtml(planner.LocalCourse?.AssignmentTemplates))
|
||||
@((MarkupString) @Assignment.GetDescriptionHtml(planner.LocalCourse?.Settings.AssignmentTemplates))
|
||||
</div>
|
||||
|
||||
<section class="px-3">
|
||||
|
||||
@@ -25,8 +25,8 @@ public class DroppableAssignment : ComponentBase
|
||||
year: dropDate.Year,
|
||||
month: dropDate.Month,
|
||||
day: dropDate.Day,
|
||||
hour: planner.LocalCourse.DefaultDueTime.Hour,
|
||||
minute: planner.LocalCourse.DefaultDueTime.Minute,
|
||||
hour: planner.LocalCourse.Settings.DefaultDueTime.Hour,
|
||||
minute: planner.LocalCourse.Settings.DefaultDueTime.Minute,
|
||||
second: 0
|
||||
);
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
private AssignmentTemplate? selectedTemplate =>
|
||||
planner
|
||||
.LocalCourse?
|
||||
.Settings
|
||||
.AssignmentTemplates
|
||||
.FirstOrDefault(t => t.Id == selectedTemplateId);
|
||||
|
||||
@@ -44,7 +45,10 @@
|
||||
};
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
AssignmentTemplates = planner.LocalCourse.AssignmentTemplates.Append(newOne)
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
AssignmentTemplates = planner.LocalCourse.Settings.AssignmentTemplates.Append(newOne)
|
||||
}
|
||||
};
|
||||
newTemplateName = "";
|
||||
}
|
||||
@@ -71,7 +75,7 @@
|
||||
<label for="termselect">Templates</label>
|
||||
<select id="termselect" class="form-select" @bind="selectedTemplateId">
|
||||
<option></option>
|
||||
@foreach (var template in planner.LocalCourse.AssignmentTemplates)
|
||||
@foreach (var template in planner.LocalCourse.Settings.AssignmentTemplates)
|
||||
{
|
||||
<option value="@template.Id">@template.Name</option>
|
||||
}
|
||||
|
||||
@@ -17,14 +17,17 @@
|
||||
{
|
||||
if(planner.LocalCourse != null)
|
||||
{
|
||||
var newTemplates = planner.LocalCourse.AssignmentTemplates.Select(t =>
|
||||
var newTemplates = planner.LocalCourse.Settings.AssignmentTemplates.Select(t =>
|
||||
t.Id == Template.Id
|
||||
? t with { Name=newName }
|
||||
: t
|
||||
);
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
AssignmentTemplates=newTemplates
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -32,14 +35,17 @@
|
||||
{
|
||||
if(planner.LocalCourse != null)
|
||||
{
|
||||
var newTemplates = planner.LocalCourse.AssignmentTemplates.Select(t =>
|
||||
var newTemplates = planner.LocalCourse.Settings.AssignmentTemplates.Select(t =>
|
||||
t.Id == Template.Id
|
||||
? t with { Markdown=newMarkdown }
|
||||
: t
|
||||
);
|
||||
planner.LocalCourse = planner.LocalCourse with
|
||||
{
|
||||
Settings = planner.LocalCourse.Settings with
|
||||
{
|
||||
AssignmentTemplates=newTemplates
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
DayOfWeek? weekDay = date?.DayOfWeek;
|
||||
DayOfWeek notNullDay = weekDay ?? default;
|
||||
|
||||
var isClassDay = planner.LocalCourse?.DaysOfWeek.Contains(notNullDay) ?? false;
|
||||
var isClassDay = planner.LocalCourse?.Settings.DaysOfWeek.Contains(notNullDay) ?? false;
|
||||
var dayInSemester =
|
||||
isClassDay
|
||||
&& date <= planner.LocalCourse?.Settings.EndDate
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
@foreach (DayOfWeek day in WeekDaysList)
|
||||
{
|
||||
<div class="@(
|
||||
planner.LocalCourse?.DaysOfWeek.Contains(day) ?? false
|
||||
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
|
||||
? "col"
|
||||
: "col text-secondary"
|
||||
)">
|
||||
|
||||
@@ -9,8 +9,6 @@ public class SemesterPlanner
|
||||
{
|
||||
var monthsInTerm = 1 + ((endDate.Year - startDate.Year) * 12) + endDate.Month - startDate.Month;
|
||||
|
||||
Console.WriteLine(monthsInTerm);
|
||||
|
||||
return Enumerable
|
||||
.Range(0, monthsInTerm)
|
||||
.Select(monthDiff =>
|
||||
|
||||
@@ -38,25 +38,11 @@ public class CoursePlanner
|
||||
return;
|
||||
}
|
||||
|
||||
var courseWithSettings = value with
|
||||
{
|
||||
Settings = value.Settings with
|
||||
{
|
||||
AssignmentGroups = value.AssignmentGroups,
|
||||
Name = value.Settings.Name,
|
||||
DaysOfWeek = value.DaysOfWeek,
|
||||
CanvasId = value.Settings.CanvasId,
|
||||
StartDate = value.Settings.StartDate,
|
||||
DefaultDueTime = value.DefaultDueTime,
|
||||
AssignmentTemplates = value.AssignmentTemplates,
|
||||
}
|
||||
};
|
||||
|
||||
var verifiedCourse = courseWithSettings.GeneralCourseCleanup();
|
||||
var verifiedCourse = value.GeneralCourseCleanup();
|
||||
|
||||
_debounceTimer?.Dispose();
|
||||
_debounceTimer = new Timer(
|
||||
async (_) => await saveCourseToFile(courseWithSettings),
|
||||
async (_) => await saveCourseToFile(verifiedCourse),
|
||||
null,
|
||||
_debounceInterval,
|
||||
Timeout.Infinite
|
||||
@@ -160,7 +146,13 @@ public class CoursePlanner
|
||||
|
||||
var newAssignmentGroups = await LocalCourse.EnsureAllAssignmentGroupsExistInCanvas(
|
||||
canvasId, canvasAssignmentGroups, canvas);
|
||||
LocalCourse = LocalCourse with { AssignmentGroups = newAssignmentGroups };
|
||||
LocalCourse = LocalCourse with
|
||||
{
|
||||
Settings = LocalCourse.Settings with
|
||||
{
|
||||
AssignmentGroups = newAssignmentGroups
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var newModules = await LocalCourse.EnsureAllModulesExistInCanvas(
|
||||
|
||||
@@ -61,7 +61,7 @@ public static class CoursePlannerExtensions
|
||||
.ToArray();
|
||||
|
||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
||||
var correctAssignmentGroups = localCourse.AssignmentGroups.Select(
|
||||
var correctAssignmentGroups = localCourse.Settings.AssignmentGroups.Select(
|
||||
g =>
|
||||
{
|
||||
var groupCanvasId = g.CanvasId ?? 0;
|
||||
@@ -74,7 +74,10 @@ public static class CoursePlannerExtensions
|
||||
return localCourse with
|
||||
{
|
||||
Modules = correctedModules,
|
||||
Settings = localCourse.Settings with
|
||||
{
|
||||
AssignmentGroups = correctAssignmentGroups,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public static partial class AssignmentGroupSyncronizationExtensions
|
||||
)
|
||||
{
|
||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
||||
var assignmentGroups = await Task.WhenAll((Task<LocalAssignmentGroup>[])localCourse.AssignmentGroups.Select(
|
||||
var assignmentGroups = await Task.WhenAll((Task<LocalAssignmentGroup>[])localCourse.Settings.AssignmentGroups.Select(
|
||||
async assignmentGroup =>
|
||||
{
|
||||
var canvasGroupWithSameName = canvasAssignmentGroups.FirstOrDefault(
|
||||
|
||||
@@ -25,10 +25,10 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
ca => ca.Id == localAssignment.CanvasId
|
||||
);
|
||||
string localHtmlDescription = localAssignment.GetDescriptionHtml(
|
||||
localCourse.AssignmentTemplates
|
||||
localCourse.Settings.AssignmentTemplates
|
||||
);
|
||||
|
||||
var canvasAssignmentGroupId = localAssignment.GetCanvasAssignmentGroupId(localCourse.AssignmentGroups);
|
||||
var canvasAssignmentGroupId = localAssignment.GetCanvasAssignmentGroupId(localCourse.Settings.AssignmentGroups);
|
||||
|
||||
return canvasAssignment != null
|
||||
? await updateAssignmentIfNeeded(
|
||||
@@ -55,7 +55,7 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
{
|
||||
var assignmentNeedsUpdates = localAssignment.NeedsUpdates(
|
||||
canvasAssignments,
|
||||
localCourse.AssignmentTemplates,
|
||||
localCourse.Settings.AssignmentTemplates,
|
||||
canvasAssignmentGroupId,
|
||||
quiet: false
|
||||
);
|
||||
|
||||
@@ -43,7 +43,7 @@ public static partial class QuizSyncronizationExtensions
|
||||
)
|
||||
{
|
||||
var isCreated = localQuiz.QuizIsCreated(canvasQuizzes);
|
||||
var canvasAssignmentGroupId = localQuiz.GetCanvasAssignmentGroupId(localCourse.AssignmentGroups);
|
||||
var canvasAssignmentGroupId = localQuiz.GetCanvasAssignmentGroupId(localCourse.Settings.AssignmentGroups);
|
||||
if (isCreated)
|
||||
{
|
||||
// TODO write update
|
||||
|
||||
@@ -3,14 +3,6 @@ namespace LocalModels;
|
||||
public record LocalCourse
|
||||
{
|
||||
public IEnumerable<LocalModule> Modules { get; init; } = Enumerable.Empty<LocalModule>();
|
||||
|
||||
public IEnumerable<LocalAssignmentGroup> AssignmentGroups { get; init; } =
|
||||
Enumerable.Empty<LocalAssignmentGroup>();
|
||||
public IEnumerable<DayOfWeek> DaysOfWeek { get; init; } = Enumerable.Empty<DayOfWeek>();
|
||||
public SimpleTimeOnly DefaultDueTime { get; init; } = new SimpleTimeOnly();
|
||||
public IEnumerable<AssignmentTemplate> AssignmentTemplates { get; init; } =
|
||||
Enumerable.Empty<AssignmentTemplate>();
|
||||
|
||||
public LocalCourseSettings Settings { get; set; }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user