drag and drop working on assignmets

This commit is contained in:
2023-07-15 19:51:25 -06:00
parent 4dc155b344
commit 5ece8b9d36
3 changed files with 83 additions and 3 deletions

View File

@@ -7,12 +7,13 @@
private async Task HandleDragStart() private async Task HandleDragStart()
{ {
dragContainer.AssignmentBeingDragged = assignment; dragContainer.AssignmentBeingDragged = assignment;
System.Console.WriteLine("assignment set");
} }
} }
<div <div
draggable="true" draggable="true"
ondragstart="HandleDragStart" ondragstart="@HandleDragStart"
class="col-2" class="col-2"
> >
<div class="card"> <div class="card">

View File

@@ -0,0 +1,78 @@
@inject AssignmentDragContainer dragContainer
@code
{
[Parameter, EditorRequired]
public DateTime? date { get; set; } =
default!;
[Parameter, EditorRequired]
public SemesterPlanner Semester { get; set; } = default!;
private bool isWeekDay {
get => date?.DayOfWeek != null;
}
private bool dragging {get; set;} = false;
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 (isWeekDay)
{
DayOfWeek? weekDay = date?.DayOfWeek;
DayOfWeek notNullDay = weekDay ?? default;
var dayInSemester =
Semester.Days.Contains(notNullDay)
&& date < Semester.LastDay
&& date > Semester.FirstDay;
var totalClasses = dayInSemester ? $"bg-light {baseClasses}" : baseClasses;
return totalClasses;
}
else
{
return baseClasses;
}
}
}
void OnDragStart()
{
Console.WriteLine("on drag start");
}
async Task OnDrop()
{
Console.WriteLine("on drop");
dragging = false;
if(dragContainer.AssignmentBeingDragged == null){
System.Console.WriteLine("no assignment in drop event");
return;
}
Console.WriteLine(JsonSerializer.Serialize(dragContainer.AssignmentBeingDragged));
dragContainer.AssignmentBeingDragged = null;
}
async Task OnDragEnter() {
dragging = true;
}
async Task OnDragLeave() {
dragging = false;
}
}
<div
class="@calculatedClass"
@ondrop="@(() => OnDrop())"
@ondragenter="OnDragEnter"
@ondragleave="OnDragLeave"
ondragover="event.preventDefault();"
ondragstart="event.dataTransfer.setData('', event.target.id);"
>
@(isWeekDay ? date?.Day : "")
</div>

View File

@@ -28,7 +28,7 @@
@foreach (var day in week) @foreach (var day in week)
{ {
var baseClasses = "col border rounded rounded-3 pb-5 m-1"; @* var baseClasses = "col border rounded rounded-3 pb-5 m-1";
DayOfWeek? weekDay = day?.DayOfWeek; DayOfWeek? weekDay = day?.DayOfWeek;
if (weekDay != null) if (weekDay != null)
{ {
@@ -40,7 +40,8 @@
else else
{ {
<div class="@baseClasses"></div> <div class="@baseClasses"></div>
} } *@
<Day date="day" Semester="Semester"></Day>
} }
</div> </div>
} }