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.
265 lines
8.9 KiB
265 lines
8.9 KiB
/**
|
|
* SVG ICONS
|
|
*/
|
|
|
|
iconWifi1 = [
|
|
"M11.046 10.454c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091l.015-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.708-.707z"
|
|
];
|
|
|
|
iconWifi2 = [
|
|
"M13.229 8.271c.216-.216.194-.578-.063-.745A9.456 9.456 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.577 1.336c.205.132.48.108.652-.065zm-2.183 2.183c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.408.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.611-.091l.015-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .708 0l.707-.707z"
|
|
];
|
|
|
|
iconWifi3 = [
|
|
"M15.384 6.115a.485.485 0 0 0-.047-.736A12.444 12.444 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c2.507 0 4.827.802 6.716 2.164.205.148.49.13.668-.049z",
|
|
"M13.229 8.271a.482.482 0 0 0-.063-.745A9.455 9.455 0 0 0 8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065A8.46 8.46 0 0 1 8 7a8.46 8.46 0 0 1 4.576 1.336c.206.132.48.108.653-.065zm-2.183 2.183c.226-.226.185-.605-.1-.75A6.473 6.473 0 0 0 8 9c-1.06 0-2.062.254-2.946.704-.285.145-.326.524-.1.75l.015.015c.16.16.407.19.611.09A5.478 5.478 0 0 1 8 10c.868 0 1.69.201 2.42.56.203.1.45.07.61-.091l.016-.015zM9.06 12.44c.196-.196.198-.52-.04-.66A1.99 1.99 0 0 0 8 11.5a1.99 1.99 0 0 0-1.02.28c-.238.14-.236.464-.04.66l.706.706a.5.5 0 0 0 .707 0l.707-.707z"
|
|
];
|
|
|
|
iconWarn = [
|
|
"M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z",
|
|
"M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z"
|
|
];
|
|
|
|
iconInfo = [
|
|
"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z",
|
|
"m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"
|
|
];
|
|
|
|
iconSuccess = [
|
|
"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z",
|
|
"M10.97 4.97a.235.235 0 0 0-.02.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05z"
|
|
];
|
|
|
|
/**
|
|
* GENERIC FUNCTIONS
|
|
*/
|
|
function ml(tagName, ...args) {
|
|
var el = document.createElement(tagName);
|
|
if(args[0]) {
|
|
for(var name in args[0]) {
|
|
if(name.indexOf("on") === 0) {
|
|
el.addEventListener(name.substr(2).toLowerCase(), args[0][name], false)
|
|
} else {
|
|
el.setAttribute(name, args[0][name]);
|
|
}
|
|
}
|
|
}
|
|
if (!args[1]) {
|
|
return el;
|
|
}
|
|
return nester(el, args[1])
|
|
}
|
|
|
|
function nester(el, n) {
|
|
if (typeof n === "string") {
|
|
var t = document.createTextNode(n);
|
|
el.appendChild(t);
|
|
} else if (n instanceof Array) {
|
|
for(var i = 0; i < n.length; i++) {
|
|
if (typeof n[i] === "string") {
|
|
var t = document.createTextNode(n[i]);
|
|
el.appendChild(t);
|
|
} else if (n[i] instanceof Node){
|
|
el.appendChild(n[i]);
|
|
}
|
|
}
|
|
} else if (n instanceof Node){
|
|
el.appendChild(n)
|
|
}
|
|
return el;
|
|
}
|
|
|
|
function topnav() {
|
|
toggle("topnav", "mobile");
|
|
}
|
|
|
|
function parseNav(obj) {
|
|
for(i = 0; i < 11; i++) {
|
|
if(i == 2)
|
|
continue;
|
|
var l = document.getElementById("nav"+i);
|
|
if(window.location.pathname == "/" + l.href.split('/').pop())
|
|
l.classList.add("active");
|
|
|
|
if(obj["menu_protEn"]) {
|
|
if(obj["menu_prot"]) {
|
|
if(0 == i)
|
|
l.classList.remove("hide");
|
|
else if(i > 2) {
|
|
if(((obj["menu_mask"] >> (i-2)) & 0x01) == 0x00)
|
|
l.classList.remove("hide");
|
|
}
|
|
} else if(0 != i)
|
|
l.classList.remove("hide");
|
|
} else if(i > 1)
|
|
l.classList.remove("hide");
|
|
}
|
|
}
|
|
|
|
function parseVersion(obj) {
|
|
document.getElementById("version").appendChild(
|
|
link("https://github.com/lumapu/ahoy/commits/" + obj["build"], "Git SHA: " + obj["build"] + " :: " + obj["version"], "_blank")
|
|
);
|
|
}
|
|
|
|
function parseESP(obj) {
|
|
document.getElementById("esp_type").replaceChildren(
|
|
document.createTextNode("Board: " + obj["esp_type"])
|
|
);
|
|
}
|
|
|
|
function parseRssi(obj) {
|
|
var icon = iconWifi3;
|
|
if(obj["wifi_rssi"] <= -80)
|
|
icon = iconWifi1;
|
|
else if(obj["wifi_rssi"] <= -70)
|
|
icon = iconWifi2;
|
|
document.getElementById("wifiicon").replaceChildren(svg(icon, 32, 32, "wifi", obj["wifi_rssi"]));
|
|
}
|
|
|
|
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, cl="hide") {
|
|
var e = document.getElementById(id);
|
|
if(!e.classList.contains(cl))
|
|
e.classList.add(cl);
|
|
else
|
|
e.classList.remove(cl);
|
|
}
|
|
|
|
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, pattern=null, title=null, checked=null) {
|
|
e = document.createElement('input');
|
|
e.classList.add(...cl);
|
|
e.name = name;
|
|
if(null != val) e.value = val;
|
|
if(null != max) e.maxLength = max;
|
|
if(null != id) e.id = id;
|
|
if(null != type) e.type = type;
|
|
if(null != pattern) e.pattern = pattern;
|
|
if(null != title) e.title = title;
|
|
if(null != checked) e.checked = checked;
|
|
return e;
|
|
}
|
|
|
|
function sel(name, options, selId) {
|
|
e = document.createElement('select');
|
|
e.name = name;
|
|
for(it of options) {
|
|
o = opt(it[0], it[1], (it[0] == selId));
|
|
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, sel=false) {
|
|
o = document.createElement('option');
|
|
o.value = val;
|
|
o.innerHTML = html;
|
|
if(sel)
|
|
o.selected = true;
|
|
return o;
|
|
}
|
|
|
|
function div(cl, h=null) {
|
|
e = document.createElement('div');
|
|
e.classList.add(...cl);
|
|
if(null != h) e.innerHTML = h;
|
|
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;
|
|
}
|
|
|
|
function svg(data=null, w=24, h=24, cl=null, tooltip=null) {
|
|
var s = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
s.setAttribute('width', w);
|
|
s.setAttribute('height', h);
|
|
s.setAttribute('viewBox', '0 0 16 16');
|
|
if(null != cl) s.setAttribute('class', cl);
|
|
if(null != data) {
|
|
for(const e of data) {
|
|
const i = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
i.setAttribute('d', e);
|
|
s.appendChild(i);
|
|
}
|
|
}
|
|
if(null != tooltip) {
|
|
const t = document.createElement("title");
|
|
t.appendChild(document.createTextNode(tooltip));
|
|
s.appendChild(t);
|
|
}
|
|
return s;
|
|
}
|
|
|