Код
'use strict';
(function () {
var dataLoad = [];
var onSuccess = function (data) {
data.forEach(function (item, i) {
if (item.offer) {
item.id = i;
item.name = i;
dataLoad.push(item);
}
});
return dataLoad;
};
window.backend.load(onSuccess);
window.dataLoad = {
dataLoad: dataLoad
};
})();
Еще:
'use strict';
(function () {
var Url = {
DOWNLOAD: 'https://js.dump.academy/keksobooking/data',
UPLOAD: 'https://js.dump.academy/keksobooking'
};
var CODE_SUCCESS = 200;
var TIMEOUT = 5000;
var mapElement = document.querySelector('.map');
var xhrSetup = function (onLoad) {
var xhr = new XMLHttpRequest();
xhr.responseType = 'json';
xhr.addEventListener('load', function () {
if (xhr.status === CODE_SUCCESS) {
onLoad(xhr.response);
} else {
window.backend.loadError();
}
});
xhr.addEventListener('error', function () {
window.backend.loadError();
});
xhr.addEventListener('timeout', function () {
window.backend.loadError();
});
return xhr;
};
var fragment = document.createDocumentFragment();
var loadError = function () {
var errorBlock = document.querySelector('#error').content.querySelector('.error');
errorBlock.cloneNode(true);
var errorButton = errorBlock.querySelector('.error__button');
var onErrorClose = function () {
errorBlock.parentNode.removeChild(errorBlock);
document.removeEventListener('click', onErrorClose);
window.map.inactivateMap();
window.form.inputClean();
window.map.mapPinMainElement.addEventListener('mouseup', window.map.activateMap);
window.map.mapPinMainElement.addEventListener('keydown', window.map.keydownActivateMap);
};
errorButton.addEventListener('click', onErrorClose);
document.addEventListener('click', onErrorClose);
errorBlock.addEventListener('keydown', function (evt) {
if (evt.keyCode === window.backend.escCode) {
onErrorClose();
}
});
fragment.appendChild(errorBlock);
mapElement.appendChild(fragment);
};
window.backend = {
save: function (data, onLoad, onError) {
var xhr = xhrSetup(onLoad, onError);
xhr.timeout = TIMEOUT;
xhr.open('POST', Url.UPLOAD);
xhr.send(data);
},
load: function (onLoad, onError) {
var xhr = xhrSetup(onLoad, onError);
xhr.timeout = TIMEOUT;
xhr.open('GET', Url.DOWNLOAD);
xhr.send(xhr.timeout);
},
loadError: loadError,
escCode: 27
};
})();