const blogpostsUrl = "/blog/posts.json"; function bindImageView (id, url) { document.getElementById(id).onclick = () => { const imageModal = new bootstrap.Modal(document.getElementById('imageModal'), {}); imageModal.show(); document.getElementById('image-viewer-url').src = url; }; } function testBlock () { return; // uncomment this at realese bindImageView('blog-img-0:0', 'https://warhammerart.com/wp-content/uploads/2021/08/Adeptus-Mechanicus.jpg'); bindImageView('blog-img-0:1', 'https://warzonestudio.com/image/catalog/blog/Admech-review/Admech-codex-review-02.jpg'); bindImageView('blog-img-0:2', 'https://i.pinimg.com/originals/7a/5c/0a/7a5c0a3a91db6011a49781c4016124a2.jpg'); } function dateFormater (value) { value = value.toString(); if (value.length === 1) value = '0' + value; return value; } function imagesDisplay (item, index) { const items = item.attachments.images.map((imageUrl, imageId) => { setTimeout(() => bindImageView(`blog-img-${index}:${imageId}`, imageUrl), 0); return `
...
` }); const buttons = items.map((_, id) => ``); return { items, buttons }; } function generateItem (item, index) { const date = new Date(item.date * 1000); const images = item.attachments.images.length === 0 ? { buttons : [], items : [] } : imagesDisplay(item, index); // console.log(date); const page = `

${item.title}

Опубликовано: ${dateFormater(date.getDate())}.${dateFormater(date.getMonth())}.${date.getFullYear()} в ${date.getHours()}:${dateFormater(date.getMinutes())}

${item.data.replace(/\n/g, "
")}

`; return page; } export function blog () { //testBlock(); const xhr = new XMLHttpRequest(); xhr.open('GET', blogpostsUrl, true); xhr.onerror = () => { document.getElementById('blog-posts').innerHTML = `

Упс..

Во время работы произошла ошибка, повторите запрос позже

`; } xhr.onload = () => { try { if (xhr.status === 200) { // console.log(xhr.response); const data = JSON.parse(xhr.response); // console.log(data); document.getElementById('blog-posts').innerHTML = '
'; data.posts.sort((a, b) => b.date - a.date).forEach((item, index) => { document.getElementById('blog-posts').innerHTML += generateItem(item, index); }); } else { xhr.onerror(); } } catch (err) { console.log(err); return xhr.onerror(); } }; xhr.send(); }