Files
locutus/www/res/js/locutus.js

74 lines
1.9 KiB
JavaScript

"use strict";
let main, windows;
let defaultLocation = '/welcome';
function createWelcomeWindow() {
let win = document.createElement("div");
win.id = "welcome-win";
win.innerHTML = `
<h1>Welcome to Locutus!</h1>
<a href="#/login">Login</a>`;
while (windows.lastChild) windows.removeChild(windows.lastChild);
windows.appendChild(win);
}
function createLoginWindow() {
let win = document.createElement("div");
win.id = "login-win";
win.innerHTML = `
<h1>Login to USIMP Account</h1>
<form>
<input name="account" placeholder="Account name" type="text"/>
<input name="domain" placeholder="Domain" type="text"/>
<input name="password" placeholder="Password" type="password"/>
</form>`;
while (windows.lastChild) windows.removeChild(windows.lastChild);
windows.appendChild(win);
}
function handleHash(hash) {
if (hash[0] === '#') hash = hash.substr(1);
if (hash === '') hash = defaultLocation;
switch (hash) {
case "/welcome": createWelcomeWindow(); break;
case "/login": createLoginWindow(); break;
default:
console.error(`Invalid url hash "${hash}"`);
hash = "/welcome";
break;
}
let url = new URL(document.URL);
url.hash = hash;
location.href = url.toString();
}
function handleUrl(url) {
let hash = new URL(url).hash;
if (hash === '') {
history.replaceState(null, null, `#${defaultLocation}`);
} else {
handleHash(hash);
}
}
window.addEventListener("load", function () {
main = document.getElementsByTagName("main")[0];
windows = document.getElementById("windows");
// Remove <noscript> tag
document.getElementsByTagName("noscript")[0].remove();
handleUrl(document.URL)
});
window.addEventListener("hashchange", function (evt) {
handleUrl(evt.newURL);
});