added kanban and reporting
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
var board = document.querySelector("[data-board]");
|
||||
if (!board) {
|
||||
return;
|
||||
}
|
||||
|
||||
var dragged = null;
|
||||
var csrf = board.dataset.csrf;
|
||||
|
||||
board.querySelectorAll("[data-task-id]").forEach(function (card) {
|
||||
card.addEventListener("dragstart", function (event) {
|
||||
dragged = card;
|
||||
card.classList.add("dragging");
|
||||
event.dataTransfer.effectAllowed = "move";
|
||||
event.dataTransfer.setData("text/plain", card.dataset.taskId);
|
||||
});
|
||||
card.addEventListener("dragend", function () {
|
||||
card.classList.remove("dragging");
|
||||
board.querySelectorAll(".drag-over").forEach(function (zone) {
|
||||
zone.classList.remove("drag-over");
|
||||
});
|
||||
dragged = null;
|
||||
});
|
||||
});
|
||||
|
||||
board.querySelectorAll("[data-drop-zone]").forEach(function (zone) {
|
||||
zone.addEventListener("dragover", function (event) {
|
||||
event.preventDefault();
|
||||
event.dataTransfer.dropEffect = "move";
|
||||
zone.classList.add("drag-over");
|
||||
});
|
||||
zone.addEventListener("dragleave", function (event) {
|
||||
if (!zone.contains(event.relatedTarget)) {
|
||||
zone.classList.remove("drag-over");
|
||||
}
|
||||
});
|
||||
zone.addEventListener("drop", function (event) {
|
||||
event.preventDefault();
|
||||
zone.classList.remove("drag-over");
|
||||
var taskID = event.dataTransfer.getData("text/plain");
|
||||
var status = zone.dataset.dropZone;
|
||||
if (!taskID || !dragged || dragged.closest("[data-board-column]").dataset.boardColumn === status) {
|
||||
return;
|
||||
}
|
||||
|
||||
var body = new URLSearchParams({ csrf: csrf, status: status });
|
||||
dragged.classList.add("moving");
|
||||
fetch("/board/tasks/" + encodeURIComponent(taskID) + "/move", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
||||
body: body.toString(),
|
||||
credentials: "same-origin"
|
||||
}).then(function (response) {
|
||||
if (!response.ok) {
|
||||
throw new Error("Could not move task");
|
||||
}
|
||||
window.location.assign("/board?flash=Task+moved");
|
||||
}).catch(function () {
|
||||
dragged.classList.remove("moving");
|
||||
window.alert("The task could not be moved. Please reload and try again.");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user