added project delete + changed to list template

This commit is contained in:
2025-02-02 23:01:17 +01:00
parent 35d5a81e6f
commit 092812b9b7
8 changed files with 74 additions and 44 deletions

View File

@ -82,6 +82,7 @@ main {
display: flex;
flex-direction: column;
padding: 2em;
overflow-y: auto;
}
button, input, select {

View File

@ -5,6 +5,7 @@
display: flex;
flex-direction: column;
gap: 1em;
overflow-y: auto;
}
.list-header {
@ -22,6 +23,7 @@
gap: 0.8em;
flex-direction: column;
padding: 0;
overflow-y: auto;
}
.list li {

View File

@ -33,7 +33,7 @@ window.addEventListener("load", () => {
document.querySelectorAll(".list li").forEach(row => {
let id = row.dataset.id
row.querySelector("button.edit").addEventListener("click", () => {
row.querySelector("button.edit")?.addEventListener("click", () => {
window.location.href = `${id}/`
})

View File

@ -1,4 +1,8 @@
.productive {
box-shadow: 0.2em 0 0 var(--accent) inset;
}
/*
.projects {
width: 100%;
max-width: 40em;
@ -21,4 +25,5 @@
.projects tbody tr:nth-child(even) {
background-color: var(--dark2);
}
}
*/

View File

@ -1,5 +1,16 @@
onBeforeDelete = async row => {
await req(`${row.dataset.id}/on_delete/`).then(res => {
return res.json()
}).then(res => {
if (res.status === "success") {
let popup = document.getElementById("delete-popup")
popup.querySelector(".task-count").innerText = res.tasks
}
})
}
window.addEventListener("load", () => {
document.querySelectorAll(".projects tbody tr").forEach(row => {
document.querySelectorAll(".list li").forEach(row => {
let id = row.dataset.id
let selector = row.querySelector(".parent-sel")
selector.addEventListener("change", () => {
@ -10,9 +21,5 @@ window.addEventListener("load", () => {
body: fd
})
})
row.querySelector("button.edit").addEventListener("click", () => {
window.location.href = `${id}/`
})
})
})

View File

@ -59,6 +59,15 @@ def parent_on_delete_view(request, id):
"tasks": tasks
})
def project_on_delete_view(request, id):
project = get_object_or_404(Project, id=id)
tasks = project.task_set.count()
return JsonResponse({
"status": "success",
"tasks": tasks
})
def new_parent_view(request):
context = {
"class": "parent"
@ -72,6 +81,11 @@ def new_parent_view(request):
def project_view(request, id):
project = get_object_or_404(Project, id=id)
if request.method == "DELETE":
project.delete()
return JsonResponse({"status": "success"})
context = {
"class": "project",
"id": id
@ -88,7 +102,7 @@ def table_view(request):
@require_POST
def set_parent(request, id):
project = get_object_or_404(Project, id=id)
parent_id = request.POST.get("parent_id")
parent_id = request.POST.get("parent_id") or None
try:
parent = Parent.objects.get(id=parent_id)
except Parent.DoesNotExist:
@ -181,6 +195,16 @@ class ParentsView(generic.ListView):
template_name = "parents.html"
context_object_name = "elements"
class ProjectsView(generic.ListView):
model = Project
template_name = "projects.html"
context_object_name = "elements"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["parents"] = Parent.objects.all()
return context
def get_table_data(request, start_date: datetime.date, end_date: datetime.date):
end_date = end_date + timedelta(days=1)