/**
* Базовый класс приложения
*
* @class Base
* @author Ihor Bielchenko
*/
class Base {
state = {
body: document.getElementById('root')
}
/**
* Отправка запроса через XMLHttpRequest
* @param {String} query Адрес запроса
* @param {String} method Метод запроса
* @param {Function} callback Функция обратного вызова
* @async
*/
sendXHR(query = '', method = 'GET', callback = () => {}) {
this.state.body.style.opacity = .5;
setTimeout(() => {
callback({success: 1, data: []});
this.state.body.style.opacity = 1;
}, (Math.random() * (2000 - 120) + 120));
/*let XHR = ('onload' in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
let xhr = new XHR();
xhr.open(method, query, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send();
xhr.onreadystatechange = () => {
if(xhr.status === 200 && xhr.readyState === 4) {
callback(xhr.response);
}
}*/
}
/**
* Отправка данных на сервер через соккет
* @param {String} query Строка запроса
* @param {Function} callback
* @param {Number} opacity Засветлять страницу при загрузке
*/
serverSEND(query = '', callback = () => {}, opacity = 1) {
//window.conn.send(query);
if(opacity === 1) {
this.state.body.style.opacity = .5;
}
setTimeout(() => {
callback({success: 1, data: []});
if(opacity === 1) {
this.state.body.style.opacity = 1;
}
}, (Math.random() * (2000 - 120) + 120));
}
/**
* Получение сообщений с сервера через соккет
* @fires onmessage
* @param {Object} e
*/
serverGET(e) {
}
/**
* Обновление адресной строки
* @param {String} ресурс
*/
changeURL(resource = '#') {
window.history.pushState({}, null, resource);
var event = new CustomEvent('change-page', {
detail: {
resource: resource
}
});
document.dispatchEvent(event);
}
};
export default new Base();