mirror of
https://github.com/SpacehuhnTech/esp8266_deauther.git
synced 2025-12-11 17:19:58 +01:00
114 lines
2.4 KiB
JavaScript
114 lines
2.4 KiB
JavaScript
let langJson = {};
|
|
|
|
const getE = (name) => document.getElementById(name);
|
|
|
|
const esc = str => {
|
|
if (str) {
|
|
return str.toString()
|
|
.replace(/&/g, "&")
|
|
.replace(/</g, "<")
|
|
.replace(/>/g, ">")
|
|
.replace(/\"/g, """)
|
|
.replace(/\'/g, "'")
|
|
.replace(/\//g, "/");
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
const convertLineBreaks = str => {
|
|
if (str) {
|
|
str = str.toString();
|
|
str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');
|
|
return str;
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
const showMessage = (msg, closeAfter) => {
|
|
const elmt = getE("error");
|
|
elmt.innerHTML = `${esc(msg)}<a onclick='closeMessage()' id='closeError'>x</a>`;
|
|
|
|
elmt.classList.remove("hide");
|
|
elmt.classList.add("show");
|
|
|
|
if(closeAfter !== undefined){
|
|
setTimeout(closeMessage, closeAfter);
|
|
}
|
|
}
|
|
|
|
const closeMessage = () => {
|
|
const elmt = getE("error");
|
|
|
|
elmt.innerHTML = "";
|
|
elmt.classList.remove("show");
|
|
elmt.classList.add("hide");
|
|
}
|
|
|
|
const getFile = (
|
|
adr,
|
|
callback = () => undefined,
|
|
timeout = 8000,
|
|
method = "GET",
|
|
onTimeout = showMessage(`ERROR: timeout loading file ${adr}`),
|
|
onError = showMessage(`ERROR: loading file: ${adr}`)
|
|
) => {
|
|
/* fallback stuff */
|
|
if(adr === undefined) return;
|
|
|
|
/* create request */
|
|
const request = new XMLHttpRequest();
|
|
|
|
/* set parameter for request */
|
|
request.open(method, encodeURI(adr), true);
|
|
request.timeout = timeout;
|
|
request.ontimeout = onTimeout;
|
|
request.onerror = onError;
|
|
request.overrideMimeType("application/json");
|
|
|
|
request.onreadystatechange = () => {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
callback(this.responseText);
|
|
}
|
|
};
|
|
|
|
/* send request */
|
|
request.send();
|
|
|
|
console.log(adr);
|
|
}
|
|
|
|
const lang = key => convertLineBreaks(esc(langJson[key]));
|
|
|
|
const parseLang = fileStr => {
|
|
langJson = JSON.parse(fileStr);
|
|
|
|
if (langJson["lang"] !== "en") {
|
|
// no need to update the HTML
|
|
const elements = document.querySelectorAll("[data-translate]");
|
|
|
|
[...elements].forEach(item => {
|
|
item.innerHTML = lang(element.getAttribute("data-translate"));
|
|
})
|
|
}
|
|
|
|
document.querySelector('html').setAttribute("lang", langJson["lang"]);
|
|
|
|
if(typeof load !== 'undefined') load();
|
|
}
|
|
|
|
const loadLang = () => {
|
|
const language = "default"; //navigator.language.slice(0, 2);
|
|
const langFunc = () => getFile("lang/en.lang", parseLang);
|
|
|
|
getFile(
|
|
`lang/${language}.lang`,
|
|
parseLang,
|
|
2000,
|
|
"GET",
|
|
langFunc,
|
|
langFunc
|
|
);
|
|
}
|