website/scripts/topnav.js

131 lines
3.2 KiB
JavaScript

/* menu dropdown (mobile) */
function myFunction() {
var x = document.getElementById("Topnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
/* Topnav */
function changeLinks() {
var links = document.getElementById('Topnav').getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
if (links[i].className == 'icon') continue;
links[i].addEventListener('click', load, false);
}
};
function load(e) {
if (e.which != 1) return;
var target = e.target;
while (target.nodeName != 'A') {
target = target.parentNode;
}
e.preventDefault();
url = target.href
var siblings = target.parentNode.childNodes
for (i = 0; i < siblings.length; i++) {
if (siblings[i].className != '' && siblings[i].className != 'active') continue;
siblings[i].className="";
if (siblings[i].href == url) {
siblings[i].className="active";
}
}
fetch(url, {credentials: 'same-origin'}).then(function(response) {
return response.text()})
.then(function(text){
document.getElementById("content").innerHTML=text;
changeLinks_headernav();
document.getElementById('home_header').click();
});
}
/* Headernav */
function changeLinks_headernav() {
var links = document.getElementById('headernav').getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', load_headernav, false);
}
};
function load_headernav(e) {
if (e.which != 1) return;
var target = e.target;
while (target.nodeName != 'A') {
target = target.parentNode;
}
e.preventDefault();
url = target.href
var siblings = target.parentNode.childNodes
for (i = 0; i < siblings.length; i++) {
if (siblings[i].className != '' && siblings[i].className != 'active') continue;
siblings[i].className="";
if (siblings[i].href == url) {
siblings[i].className="active";
}
}
destroyChart()
fetch(url, {credentials: 'same-origin'}).then(function(response) {
return response.text()})
.then(function(text){
document.getElementById("page").innerHTML=text;
if (target.innerText == "API"){change_api();}
loadMeters()
loadPowerQualityOptions()
loadSmiley()
history.pushState(null, null,"#" + document.querySelector('.topnav .active').innerText + "/" + target.innerText);
});
}
function change_api() {
var links = document.getElementById('api').getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', load_api, false);
}
};
function load_api(e) {
if (e.which != 1) return;
var target = e.target;
while (target.nodeName != 'A') {
target = target.parentNode;
}
e.preventDefault();
url = target.href
fetch(url).then(function(response) {
return response.text()})
.then(function(text){
document.getElementById("content_api").innerHTML='<h2>'+ url +'</h2><iframe src="'+ url +'"></iframe>';
});
}
/* History */
window.onpopstate = function () {
var list = window.location.hash.substr(1).split('/');
document.querySelectorAll('.topnav a').forEach(function(e) {
if (e.innerText == list[0]) e.click();
});
document.querySelectorAll('.headernav a').forEach(function(e) {
if (e.innerText == list[1]) e.click();
});
}