diff --git a/resources/texts/_contentManager.html b/resources/texts/_contentManager.html index 32df1bc..819e04d 100644 --- a/resources/texts/_contentManager.html +++ b/resources/texts/_contentManager.html @@ -81,6 +81,24 @@ function init() { var a = books.slice(0, nb); return a; }, + getBookFromMousePosition : function() { + var elements = document.elementsFromPoint(mouseX, mouseY); + var bookId = null; + for(var i = 0; i < elements.length; i++) { + if (elements[i].localName == "summary" && elements[i].classList.contains("book-summary")) { + bookId = elements[i].id; + break; + } + } + var book = null; + for(var i = 0; i < app.books.length; i++) { + if (app.books[i]["id"] == bookId) { + book = app.books[i]; + break; + } + } + return book; + }, niceBytes : niceBytes } }); @@ -100,6 +118,39 @@ function scrolled(e) { app.displayedBooksNb = Math.min(app.displayedBooksNb+20, app.books.length); } } + +window.addEventListener("click", e => { + if (menuVisible) + displayMenu(null); +}); + +var mouseX, mouseY = 0; +window.addEventListener("contextmenu", e => { + e.preventDefault(); + mouseX = e.pageX; + mouseY = e.pageY; + setContextMenuPosition(); + var book = app.getBookFromMousePosition(); + displayMenu(book); +}); + +var menuVisible = false; +function displayMenu(book) { + var menu = document.getElementById("menu"); + menu.style.display = (book) ? "block" : "none"; + menuVisible = (book) ? true : false; + if (!book) + return; + var localElement = document.getElementsByClassName("local-option")[0]; + localElement.style.display = (book.path) ? "block" : "none"; +}; + +function setContextMenuPosition() { + var menu = document.getElementById("menu"); + menu.style.left = `${mouseX}px`; + menu.style.top = `${mouseY}px`; +}; +
@@ -218,7 +296,6 @@ details:hover {