HLRTest/render/utils.js
NightFox 25faf8b0e1 new design for rendertest (#8)
Что сделано:
* Удалёны gif, тесты заметно ускорились из-за этого, даже не смотря что делаются png из tga форсировано теперь.
* Добавлены темы, но светлой уделялось мало внимания. С костылём на автотёмную тему не знаю как будет тёмная тема работать, не проверял.
* Изменён дизайн, теперь таблица-список картинок вынесена в отдельную боковую панель.
* Появились разные режимы и настройки (лень перечислять там и так всё видно).
* Исправлена ошибка сортировки которая проявлялась на chrome-подобных браузерах.
* Исправлена ошибка с ориентацией картинок (поймал у себя что они оказались перевёрнутые).
* Произошла некоторая реорганизация кодовой базы, некоторые функции были расширены, а что-то исправлено по мелочи.

Reviewed-on: #8
Co-authored-by: NightFox <nightfox@dev.null>
Co-committed-by: NightFox <nightfox@dev.null>
2024-02-15 23:35:40 +01:00

70 lines
1.6 KiB
JavaScript

"use strict";
function $(name) { return document.getElementById(name); }
function Tag(name, attrs, body, children, eventName, eventHandler) {
let elem = document.createElement(name);
if (body) {
// elem.innerHTML = body; // innerHTML is ugly (slow, overwrite childNodes)
let textNode = document.createTextNode(body);
elem.appendChild(textNode);
}
for (let k in attrs) {
elem.setAttribute(k, attrs[k]);
}
for (let i in children) {
elem.appendChild(children[i]);
}
if (eventName && eventHandler) {
elem.addEventListener(eventName, eventHandler);
}
return elem;
}
function Text(text) {
return document.createTextNode(text);
}
function debounce(func, cancelFunc = ()=>{}, timeout = 500) {
let timer;
return (...args) => {
cancelFunc();
clearTimeout(timer);
timer = setTimeout(() => { func.apply(this, args); }, timeout);
}
}
function sendRequest(method, path, query, body, funcDone, funcError) {
let req = new XMLHttpRequest();
if (query) {
let params = new URLSearchParams(query);
path = path + "?" + params.toString();
}
req.open(method, path, true);
req.onreadystatechange = function () {
if (req.readyState == XMLHttpRequest.DONE) {
let status = req.status;
if (status === 0 || (status >= 200 && status < 400)) {
if (funcDone)
funcDone(req.responseText, status);
} else {
if (funcError)
funcError(req.responseText, status);
}
}
}
if (body) {
req.setRequestHeader("Content-Type", "application/json");
console.log("SENDING", body)
req.send(JSON.stringify(body));
} else {
req.send();
}
return req;
}