mirror of
https://github.com/karma-riuk/crab-webapp.git
synced 2025-07-05 06:08:13 +02:00
moved the modal logic to it's own file to
declutter index.js
This commit is contained in:
@ -11,6 +11,7 @@
|
|||||||
<script src="https://cdn.socket.io/4.5.4/socket.io.min.js"></script>
|
<script src="https://cdn.socket.io/4.5.4/socket.io.min.js"></script>
|
||||||
<script defer src="js/index.js"></script>
|
<script defer src="js/index.js"></script>
|
||||||
<script defer src="js/sorttable.js"></script>
|
<script defer src="js/sorttable.js"></script>
|
||||||
|
<script defer src="js/modal.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -152,49 +152,6 @@ socket.on("successful-upload", () => {
|
|||||||
uploadStatusEl.textContent = "Upload succeeded!";
|
uploadStatusEl.textContent = "Upload succeeded!";
|
||||||
});
|
});
|
||||||
|
|
||||||
// INFO-MODAL LOGIC
|
|
||||||
const aboutButton = document.getElementById("about-button");
|
|
||||||
const modalOverlay = document.getElementById("modal-overlay");
|
|
||||||
const modalContent = document.getElementById("modal-content");
|
|
||||||
const modalClose = document.getElementById("modal-close");
|
|
||||||
|
|
||||||
function show_modal_with(content) {
|
|
||||||
modalOverlay.classList.remove("hidden");
|
|
||||||
modalContent.innerHTML = "";
|
|
||||||
modalContent.appendChild(content);
|
|
||||||
modalOverlay.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
// open modal
|
|
||||||
aboutButton.addEventListener("click", () => {
|
|
||||||
show_modal_with(about.content.cloneNode(true));
|
|
||||||
});
|
|
||||||
|
|
||||||
// close modal via “×” button
|
|
||||||
modalClose.addEventListener("click", () => {
|
|
||||||
modalOverlay.classList.add("hidden");
|
|
||||||
});
|
|
||||||
|
|
||||||
// also close if you click outside the white box
|
|
||||||
modalOverlay.addEventListener("click", (e) => {
|
|
||||||
if (e.target === modalOverlay) {
|
|
||||||
modalOverlay.classList.add("hidden");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
modalOverlay.addEventListener("keydown", (e) => {
|
|
||||||
if (e.key === "Escape") {
|
|
||||||
modalOverlay.classList.add("hidden");
|
|
||||||
console.log("hiding");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
["download", "upload", "results"].forEach((section) => {
|
|
||||||
window[`info-${section}-btn`].addEventListener("click", () => {
|
|
||||||
show_modal_with(window[`info-${section}`].content.cloneNode(true));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
document.getElementById("request-status").onclick = async () => {
|
document.getElementById("request-status").onclick = async () => {
|
||||||
if (!uuid.reportValidity()) return;
|
if (!uuid.reportValidity()) return;
|
||||||
const res = await fetch(`/answers/status/${uuid.value}`, {
|
const res = await fetch(`/answers/status/${uuid.value}`, {
|
||||||
|
42
public/js/modal.js
Normal file
42
public/js/modal.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// INFO-MODAL LOGIC
|
||||||
|
const aboutButton = document.getElementById("about-button");
|
||||||
|
const modalOverlay = document.getElementById("modal-overlay");
|
||||||
|
const modalContent = document.getElementById("modal-content");
|
||||||
|
const modalClose = document.getElementById("modal-close");
|
||||||
|
|
||||||
|
function show_modal_with(content) {
|
||||||
|
modalOverlay.classList.remove("hidden");
|
||||||
|
modalContent.innerHTML = "";
|
||||||
|
modalContent.appendChild(content);
|
||||||
|
modalOverlay.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
// open modal
|
||||||
|
aboutButton.addEventListener("click", () => {
|
||||||
|
show_modal_with(about.content.cloneNode(true));
|
||||||
|
});
|
||||||
|
|
||||||
|
// close modal via “×” button
|
||||||
|
modalClose.addEventListener("click", () => {
|
||||||
|
modalOverlay.classList.add("hidden");
|
||||||
|
});
|
||||||
|
|
||||||
|
// also close if you click outside the white box
|
||||||
|
modalOverlay.addEventListener("click", (e) => {
|
||||||
|
if (e.target === modalOverlay) {
|
||||||
|
modalOverlay.classList.add("hidden");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
modalOverlay.addEventListener("keydown", (e) => {
|
||||||
|
if (e.key === "Escape") {
|
||||||
|
modalOverlay.classList.add("hidden");
|
||||||
|
console.log("hiding");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
["download", "upload", "results"].forEach((section) => {
|
||||||
|
window[`info-${section}-btn`].addEventListener("click", () => {
|
||||||
|
show_modal_with(window[`info-${section}`].content.cloneNode(true));
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user