Added fade transition between pages

This commit is contained in:
Pax1601
2024-01-28 15:14:30 +01:00
parent f0ab43d320
commit 4f5023b45c
5 changed files with 60 additions and 23 deletions

View File

@@ -34,7 +34,7 @@
<img class="link" onClick="signal('onLinkClicked', 'https://discord.gg/pCfCykAdrw')" src="./icons/discord.svg" /> <img class="link" onClick="signal('onLinkClicked', 'https://discord.gg/pCfCykAdrw')" src="./icons/discord.svg" />
<img class="link" onClick="signal('onLinkClicked', 'https://www.youtube.com/@DCSOlympus')" src="./icons/youtube.svg" /> <img class="link" onClick="signal('onLinkClicked', 'https://www.youtube.com/@DCSOlympus')" src="./icons/youtube.svg" />
</div> </div>
<div id="loader" class="manager-page hide"> <div id="loader" class="manager-page hide" style="opacity: 100%;">
<div style="font-weight: bold;">Loading, please wait...</div> <div style="font-weight: bold;">Loading, please wait...</div>
<div class="loading-bar" style="width: 400px; height: 15px;"></div> <div class="loading-bar" style="width: 400px; height: 15px;"></div>
<div class="loading-message" style="font-size: 14px; color: var(--lightgray)"></div> <div class="loading-message" style="font-size: 14px; color: var(--lightgray)"></div>

View File

@@ -61,8 +61,7 @@ class Manager {
} }
if (!this.options.configLoaded) { if (!this.options.configLoaded) {
/* Hide the loading page */ this.hideLoadingPage();
document.getElementById("loader").classList.add("hide");
/* Show page to select basic vs expert mode */ /* Show page to select basic vs expert mode */
this.welcomePage = new ManagerPage(this, "./ejs/welcome.ejs"); this.welcomePage = new ManagerPage(this, "./ejs/welcome.ejs");
@@ -115,7 +114,7 @@ class Manager {
this.options.editEnabled = this.options.instances.find(instance => instance.installed); this.options.editEnabled = this.options.instances.find(instance => instance.installed);
/* Hide the loading page */ /* Hide the loading page */
document.getElementById("loader").classList.add("hide"); this.hideLoadingPage();
this.options.singleInstance = this.options.instances.length === 1; this.options.singleInstance = this.options.instances.length === 1;
@@ -363,7 +362,12 @@ class Manager {
} }
onCancelClicked() { onCancelClicked() {
location.reload(); this.activePage.hide();
if (this.options.mode === "basic")
this.menuPage.show(true);
else
this.instancesPage.show(true);
this.updateInstances();
} }
onGameMasterPasswordChanged(value) { onGameMasterPasswordChanged(value) {
@@ -594,6 +598,14 @@ class Manager {
style.setProperty('--percent', `${percent}%`); style.setProperty('--percent', `${percent}%`);
} }
} }
hideLoadingPage() {
/* Hide the loading page */
document.getElementById("loader").style.opacity = "0%";
window.setTimeout(() => {
document.getElementById("loader").classList.add("hide");
}, 200);
}
} }
module.exports = Manager; module.exports = Manager;

View File

@@ -29,8 +29,6 @@ class ManagerPage {
} }
}); });
this.element.classList.remove("hide");
this.previousPage = ignorePreviousPage ? this.previousPage : this.manager.activePage; this.previousPage = ignorePreviousPage ? this.previousPage : this.manager.activePage;
this.manager.activePage = this; this.manager.activePage = this;
@@ -39,11 +37,23 @@ class ManagerPage {
} }
hide() { hide() {
this.element.classList.add("hide"); this.element.style.opacity = "0%";
window.setTimeout(() => {
this.element.classList.add("hide");
}, 200);
} }
render(str) { render(str) {
this.element.innerHTML = str; this.element.innerHTML = str;
this.element.style.opacity = "0%";
window.setTimeout(() => {
this.element.classList.remove("hide");
}, 200)
window.setTimeout(() => {
this.element.style.opacity = "100%";
}, 300)
/* Connect all the collapsable buttons */ /* Connect all the collapsable buttons */
let buttons = document.querySelectorAll(".button.collapse"); let buttons = document.querySelectorAll(".button.collapse");

View File

@@ -1,8 +1,7 @@
// TODO: we can probably refactor this to be a bit cleaner // TODO: we can probably refactor this to be a bit cleaner
function showInfoPopup(message, onCloseCallback) { function showInfoPopup(message, onCloseCallback) {
document.getElementById("grayout").classList.remove("hide"); showPopup();
document.getElementById("popup").classList.remove("hide");
document.getElementById("popup").querySelector(".error").classList.add("hide"); document.getElementById("popup").querySelector(".error").classList.add("hide");
document.getElementById("popup").querySelector(".wait").classList.add("hide"); document.getElementById("popup").querySelector(".wait").classList.add("hide");
document.getElementById("popup").querySelector(".confirm").classList.remove("hide"); document.getElementById("popup").querySelector(".confirm").classList.remove("hide");
@@ -20,8 +19,7 @@ function showInfoPopup(message, onCloseCallback) {
function showErrorPopup(message, onCloseCallback) { function showErrorPopup(message, onCloseCallback) {
document.getElementById("grayout").classList.remove("hide"); showPopup();
document.getElementById("popup").classList.remove("hide");
document.getElementById("popup").querySelector(".error").classList.remove("hide"); document.getElementById("popup").querySelector(".error").classList.remove("hide");
document.getElementById("popup").querySelector(".wait").classList.add("hide"); document.getElementById("popup").querySelector(".wait").classList.add("hide");
document.getElementById("popup").querySelector(".confirm").classList.add("hide"); document.getElementById("popup").querySelector(".confirm").classList.add("hide");
@@ -38,8 +36,7 @@ function showErrorPopup(message, onCloseCallback) {
} }
function showWaitPopup(message) { function showWaitPopup(message) {
document.getElementById("grayout").classList.remove("hide"); showPopup();
document.getElementById("popup").classList.remove("hide");
document.getElementById("popup").querySelector(".error").classList.add("hide"); document.getElementById("popup").querySelector(".error").classList.add("hide");
document.getElementById("popup").querySelector(".wait").classList.remove("hide"); document.getElementById("popup").querySelector(".wait").classList.remove("hide");
document.getElementById("popup").querySelector(".confirm").classList.add("hide"); document.getElementById("popup").querySelector(".confirm").classList.add("hide");
@@ -49,8 +46,7 @@ function showWaitPopup(message) {
} }
function showWaitLoadingPopup(message) { function showWaitLoadingPopup(message) {
document.getElementById("grayout").classList.remove("hide"); showPopup();
document.getElementById("popup").classList.remove("hide");
document.getElementById("popup").querySelector(".error").classList.add("hide"); document.getElementById("popup").querySelector(".error").classList.add("hide");
document.getElementById("popup").querySelector(".wait").classList.remove("hide"); document.getElementById("popup").querySelector(".wait").classList.remove("hide");
document.getElementById("popup").querySelector(".confirm").classList.add("hide"); document.getElementById("popup").querySelector(".confirm").classList.add("hide");
@@ -60,8 +56,7 @@ function showWaitLoadingPopup(message) {
} }
function showConfirmPopup(message, onAcceptCallback, onCloseCallback) { function showConfirmPopup(message, onAcceptCallback, onCloseCallback) {
document.getElementById("grayout").classList.remove("hide"); showPopup();
document.getElementById("popup").classList.remove("hide");
document.getElementById("popup").querySelector(".error").classList.add("hide"); document.getElementById("popup").querySelector(".error").classList.add("hide");
document.getElementById("popup").querySelector(".wait").classList.add("hide"); document.getElementById("popup").querySelector(".wait").classList.add("hide");
document.getElementById("popup").querySelector(".confirm").classList.remove("hide"); document.getElementById("popup").querySelector(".confirm").classList.remove("hide");
@@ -85,9 +80,24 @@ function showConfirmPopup(message, onAcceptCallback, onCloseCallback) {
document.getElementById("popup").querySelector(".content").innerHTML = message; document.getElementById("popup").querySelector(".content").innerHTML = message;
} }
function showPopup() {
document.getElementById("grayout").classList.remove("hide");
document.getElementById("popup").classList.remove("hide");
window.setTimeout(() => {
document.getElementById("grayout").style.opacity = "100%";
document.getElementById("popup").style.opacity = "100%";
}, 100);
}
function hidePopup() { function hidePopup() {
document.getElementById("grayout").classList.add("hide"); document.getElementById("grayout").style.opacity = "0%";
document.getElementById("popup").classList.add("hide"); document.getElementById("popup").style.opacity = "0%";
window.setTimeout(() => {
document.getElementById("grayout").classList.add("hide");
document.getElementById("popup").classList.add("hide");
}, 200);
} }
function setPopupLoadingProgress(message, percent) { function setPopupLoadingProgress(message, percent) {

View File

@@ -275,9 +275,10 @@ input {
left: 0px; left: 0px;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: black; background-color: rgba(0, 0, 0, 0.30);
opacity: 30%;
z-index: 999; z-index: 999;
transition: opacity 0.2s linear;
opacity: 0%; /* By default has 0% opacity to allow for fade transition */
} }
#popup { #popup {
@@ -295,6 +296,8 @@ input {
padding: 20px 40px; padding: 20px 40px;
align-items: start; align-items: start;
z-index: 999; z-index: 999;
transition: opacity 0.2s linear;
opacity: 0%; /* By default has 0% opacity to allow for fade transition */
} }
#popup img { #popup img {
@@ -331,6 +334,8 @@ input {
.manager-page { .manager-page {
min-width: 1200px; min-width: 1200px;
overflow-y: auto; overflow-y: auto;
transition: opacity 0.2s linear;
opacity: 0%; /* By default has 0% opacity to allow for fade transition */
} }
.input-group { .input-group {