More work on new manager design

This commit is contained in:
Pax1601
2024-01-16 17:45:52 +01:00
parent d56a95cfa3
commit a0de159234
15 changed files with 318 additions and 460 deletions

View File

@@ -1,14 +1,19 @@
const { logger } = require("./filesystem");
const ejs = require('ejs')
class ManagerPage {
manager;
ejsFile;
element;
options;
options = {};
previousPage;
constructor(manager, options) {
constructor(manager, ejsFile) {
this.manager = manager;
this.options = options ?? {};
this.element = document.createElement('div');
this.element.classList.add("manager-page", "hide");
this.ejsFile = ejsFile;
document.body.appendChild(this.element);
}
getElement() {
@@ -16,6 +21,14 @@ class ManagerPage {
}
show(previousPage) {
ejs.renderFile(this.ejsFile, {...this.options, ...this.manager.options}, {}, (err, str) => {
if (!err) {
this.render(str);
} else {
logger.error(err);
}
});
this.element.classList.remove("hide");
if (previousPage !== undefined)
@@ -26,29 +39,16 @@ class ManagerPage {
this.element.classList.add("hide");
}
render() {
render(str) {
this.element.innerHTML = str;
/* Connect all the collapsable buttons */
let buttons = document.querySelectorAll(".button.collapse");
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", () => {
buttons[i].classList.toggle("open");
})
}
/* Connect the back, next and cancel buttons */
if (this.element.querySelector(".back"))
this.element.querySelector(".back").addEventListener("click", (e) => this.onBackClicked(e));
if (this.element.querySelector(".next"))
this.element.querySelector(".next").addEventListener("click", (e) => this.onNextClicked(e));
if (this.element.querySelector(".cancel"))
this.element.querySelector(".cancel").addEventListener("click", (e) => this.onCancelClicked(e));
}
onBackClicked() {
this.hide();
this.previousPage.show()
}
}
}