mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
working on canvas sync
This commit is contained in:
@@ -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 />
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user