working on canvas sync

This commit is contained in:
2023-07-29 20:33:00 -06:00
parent 7c857a3887
commit 2cca727b4d
26 changed files with 362 additions and 83 deletions

View File

@@ -70,13 +70,20 @@
{
<div class="mb-3">
<button
@onclick="@(() => planner.LocalCourse = null)"
@onclick="planner.Clear"
class="btn btn-primary"
>
Select New Course
</button>
<CourseSettings />
<AssignmentTemplateManagement />
<button
class="btn btn-outline-primary"
@onclick="planner.SyncWithCanvas"
>
Sync With Canvas
</button>
</div>
<CourseDetails />
}

View File

@@ -21,9 +21,9 @@ builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddScoped<IWebRequestor, WebRequestor>();
builder.Services.AddScoped<CanvasService, CanvasService>();
builder.Services.AddSingleton<YamlManager>();
builder.Services.AddSingleton<CoursePlanner>();
builder.Services.AddSingleton<AssignmentDragContainer>();
builder.Services.AddScoped<YamlManager>();
builder.Services.AddScoped<CoursePlanner>();
builder.Services.AddScoped<AssignmentDragContainer>();
var app = builder.Build();

View File

@@ -3,6 +3,7 @@
@using Management.Web.Shared.Module
@using Management.Web.Shared.Semester
@inject CanvasService canvas
@inject CoursePlanner planner
@code
@@ -11,6 +12,22 @@
{
planner.StateHasChanged += reload;
}
protected override async Task OnInitializedAsync()
{
if(
planner.CanvasAssignments == null
&& planner.LocalCourse != null
&& planner.LocalCourse.CanvasId != null
)
{
var canvasId = planner.LocalCourse.CanvasId ?? throw new Exception("no canvas id found for selected course");
planner.CanvasAssignments = await canvas.GetAssignments(canvasId);
planner.CanvasModules = await canvas.GetModules(canvasId);
System.Console.WriteLine(JsonSerializer.Serialize(planner.CanvasAssignments));
}
await base.OnInitializedAsync();
}
private void reload()
{
this.InvokeAsync(this.StateHasChanged);
@@ -21,8 +38,6 @@
}
}
<div class="row">
<div class="col overflow-y-auto border rounded " style="max-height: 95vh;">
@if (planner.LocalCourse != null)

View File

@@ -48,6 +48,7 @@
minute: planner.LocalCourse.DefaultDueTime.Minute,
second: 0
);
var moduleWithUpdatedAssignment = currentModule with
{
Assignments = currentModule.Assignments.Select(a =>
@@ -114,6 +115,13 @@
dragContainer.DropCallback = null;
}
private bool isSyncedWithCanvas =>
planner
.CanvasAssignments?
.FirstOrDefault(
a => a.Id == Assignment.canvasId
) != null;
}
<div
@@ -130,7 +138,15 @@
<h4 class="text-center">
@Assignment.name
</h4>
</div>
@if(isSyncedWithCanvas)
{
<div>Synced With Canvas</div>
}
else
{
<div>Not Synced with Canvas</div>
}
</div>
<div class="card-text">
<div class="row">
<div class="col">

View File

@@ -44,6 +44,12 @@
}
dragContainer.DropCallback?.Invoke(null, Module);
}
private bool isSyncedWithCanvas => planner
.CanvasModules?
.FirstOrDefault(
cm => cm.Id == Module.CanvasId
) != null;
}
<div
@@ -53,18 +59,29 @@
@ondragleave="OnDragLeave"
ondragover="event.preventDefault();"
>
<h2 class="@("accordion-header ")">
<h2 class="accordion-header">
<button
class="accordion-button"
type="button"
data-bs-toggle="collapse"
data-bs-target="@("#" + accordionId)"
aria-expanded="true"
aria-controls="@accordionId"
>
@Module.Name
<div class="w-100 d-flex justify-content-between pe-3">
<div>
@Module.Name
</div>
@if(isSyncedWithCanvas)
{
<div>in canvas</div>
}
else
{
<div>not in canvas</div>
}
</div>
</button>
</h2>
<div
id="@accordionId"