mirror of https://github.com/lumapu/ahoy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.5 KiB
154 lines
3.5 KiB
/**
|
|
* GENERIC FUNCTIONS
|
|
*/
|
|
|
|
function topnav() {
|
|
toggle("topnav");
|
|
}
|
|
|
|
function parseMenu(obj) {
|
|
var e = document.getElementById("topnav");
|
|
e.innerHTML = "";
|
|
for(var i = 0; i < obj["name"].length; i ++) {
|
|
if(obj["name"][i] == "-")
|
|
e.appendChild(span("", ["seperator"]));
|
|
else {
|
|
var l = link(obj["link"][i], obj["name"][i], obj["trgt"][i]);
|
|
if(obj["link"][i] == window.location.pathname)
|
|
l.classList.add("active");
|
|
e.appendChild(l);
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseVersion(obj) {
|
|
document.getElementById("version").appendChild(
|
|
link("https://github.com/lumapu/ahoy/commits/" + obj["build"], "Git SHA: " + obj["build"] + " :: " + obj["version"], "_blank")
|
|
);
|
|
}
|
|
|
|
function setHide(id, hide) {
|
|
var elm = document.getElementById(id);
|
|
if(hide) {
|
|
if(!elm.classList.contains("hide"))
|
|
elm.classList.add("hide");
|
|
}
|
|
else
|
|
elm.classList.remove('hide');
|
|
}
|
|
|
|
|
|
function toggle(id) {
|
|
var e = document.getElementById(id);
|
|
if(!e.classList.contains("hide"))
|
|
e.classList.add("hide");
|
|
else
|
|
e.classList.remove('hide');
|
|
}
|
|
|
|
function getAjax(url, ptr, method="GET", json=null) {
|
|
var xhr = new XMLHttpRequest();
|
|
if(xhr != null) {
|
|
xhr.open(method, url, true);
|
|
xhr.onreadystatechange = p;
|
|
if("POST" == method)
|
|
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
|
|
xhr.send(json);
|
|
}
|
|
function p() {
|
|
if(xhr.readyState == 4) {
|
|
if(null != xhr.responseText) {
|
|
if(null != ptr)
|
|
ptr(JSON.parse(xhr.responseText));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* CREATE DOM FUNCTIONS
|
|
*/
|
|
|
|
function des(val) {
|
|
e = document.createElement('p');
|
|
e.classList.add("subdes");
|
|
e.innerHTML = val;
|
|
return e;
|
|
}
|
|
|
|
function lbl(htmlfor, val, cl=null, id=null) {
|
|
e = document.createElement('label');
|
|
e.htmlFor = htmlfor;
|
|
e.innerHTML = val;
|
|
if(null != cl) e.classList.add(...cl);
|
|
if(null != id) e.id = id;
|
|
return e;
|
|
}
|
|
|
|
function inp(name, val, max=32, cl=["text"], id=null, type=null) {
|
|
e = document.createElement('input');
|
|
e.classList.add(...cl);
|
|
e.name = name;
|
|
e.value = val;
|
|
if(null != type) e.maxLength = max;
|
|
if(null != id) e.id = id;
|
|
if(null != type) e.type = type;
|
|
return e;
|
|
}
|
|
|
|
function sel(name, opt, selId) {
|
|
e = document.createElement('select');
|
|
e.name = name;
|
|
for(it of opt) {
|
|
o = document.createElement('option');
|
|
o.value = it[0];
|
|
o.innerHTML = it[1];
|
|
if(it[0] == selId)
|
|
o.selected = true;
|
|
e.appendChild(o);
|
|
}
|
|
return e;
|
|
}
|
|
|
|
function selDelAllOpt(sel) {
|
|
var i, l = sel.options.length - 1;
|
|
for(i = l; i >= 0; i--) {
|
|
sel.remove(i);
|
|
}
|
|
}
|
|
|
|
function opt(val, html) {
|
|
o = document.createElement('option');
|
|
o.value = val;
|
|
o.innerHTML = html;
|
|
e.appendChild(o);
|
|
return o;
|
|
}
|
|
|
|
function div(cl) {
|
|
e = document.createElement('div');
|
|
e.classList.add(...cl);
|
|
return e;
|
|
}
|
|
|
|
function span(val, cl=null, id=null) {
|
|
e = document.createElement('span');
|
|
e.innerHTML = val;
|
|
if(null != cl) e.classList.add(...cl);
|
|
if(null != id) e.id = id;
|
|
return e;
|
|
}
|
|
|
|
function br() {
|
|
return document.createElement('br');
|
|
}
|
|
|
|
function link(dst, text, target=null) {
|
|
var a = document.createElement('a');
|
|
var t = document.createTextNode(text);
|
|
a.href = dst;
|
|
if(null != target)
|
|
a.target = target;
|
|
a.appendChild(t);
|
|
return a;
|
|
}
|
|
|