const startDate = new Date(); const endDate = new Date(); const ids = []; let id = 0; const apiKEY = "1gI9G84ZafKDEnrbydviGknReOGiVK9jqrQBE3et"; function wallpaperLoad(data) { $(".preloader").hide(); for (let i = 0; i < data.length; i++, id++) { ids.push(data[i]); if (ids.filter((item) => item['url'] === data[i]['url']).length > 1) { continue; } let image = new Image(); image.src = ids[id]['media_type'] === "video" ? `https://img.youtube.com/vi/${ids[id]['url'].slice(30, 41)}/maxresdefault.jpg` : ids[id]['url']; image.onload = function() { if(image.width+image.height !== 210) { $(`img[data-src="${image.src}"]`).attr("src", `${image.src}`); } } if (ids[id]['media_type'] === "image") { $(".header-row").append(`
${ids[id]['title']}
`); } else { $(".header-row").append(`
${ids[id]['title']}
`); } } $(".card-img-top").on("load", function() { $(this).removeClass("shimmer"); }); const button_modal = document.querySelector(".header-row"); button_modal.addEventListener("click", function (event) { if (event.target === button_modal) { return; } let id = event.target.getAttribute("id"); let img = document.querySelector(".modal-body"); let title = document.querySelector(".w-modal-title"); let button = document.querySelector(".modal-footer"); if($(`img#${id}.card-img-top`).attr("src") !== "http://localhost:3000/static/image/placeholder.png") { button.innerHTML = ` `; } else { button.innerHTML = ` `; } const setWallpaper = document.querySelector("#setWallpaper"); const favorite = document.querySelector("#favorite"); $.ajax({ url: "http://localhost:3000/api/get/favorites", type: "GET", data: { title: ids[id]['title'], }, success: function (data) { if (data !== "No favorites found") { favorite.setDirection(1); favorite.play(); } }, }) ids[id]['copyright'] = ids[id]['copyright'] === undefined ? "NASA" : ids[id]['copyright']; const explanation = ids[id]['explanation'].length > 200 ? ids[id]['explanation'].slice(0, 200) + "..." : ids[id]['explanation']; if (ids[id]['media_type'] === "image") { title.innerHTML = ``; img.innerHTML = ` ${ids[id]['title']}

Author: ${ids[id]['copyright']}

Date of publication: ${ids[id]['date']}

Explanation: ${explanation}

`; setWallpaper.addEventListener("click", function () { wallpaperUpdate(ids[id]['hdurl']); }); } else { title.innerHTML = ``; img.innerHTML = `

Author: ${ids[id]['copyright']}

Date of publication: ${ids[id]['date']}

Explanation: ${explanation}

`; setWallpaper.addEventListener("click", function () { wallpaperUpdate(`https://img.youtube.com/vi/${ids[id]['url'].slice(30, 41)}/maxresdefault.jpg`); }); } favorite.addEventListener("click", function() { $.ajax({ url: "http://localhost:3000/api/get/favorites", type: "GET", data: { title: ids[id]['title'], }, success: function(data) { if (data === "No favorites found") { if (ids[id]['media_type'] === "image") { favoriteAdd(ids[id]['title'], ids[id]['explanation'], ids[id]['copyright'], ids[id]['date'], ids[id]['url'], ids[id]['hdurl'], ids[id]['media_type'], ); } else { favoriteAdd(ids[id]['title'], ids[id]['explanation'], ids[id]['copyright'], ids[id]['date'], `https://img.youtube.com/vi/${ids[id]['url'].slice(30, 41)}/0.jpg`, `https://img.youtube.com/vi/${ids[id]['url'].slice(30, 41)}/maxresdefault.jpg`, ids[id]['media_type'], ); } favorite.setDirection(1); favorite.play() } else { favoriteRemove(ids[id]['title']); favorite.setDirection(-1); favorite.play(); } } }); }); let showMore = document.querySelector("#show-more"); showMore.addEventListener("click", function () { let explanation = document.querySelector(".modal-body p:nth-child(4)"); if(showMore.innerHTML === "Show more") { explanation.innerHTML = `Explanation: ${ids[id]['explanation']}`; showMore.innerHTML = "Show less"; } else { explanation.innerHTML = `Explanation: ${ids[id]['explanation'].length > 200 ? ids[id]['explanation'].slice(0, 200) + "..." : ids[id]['explanation']}`; showMore.innerHTML = "Show more"; } }); }); $(window).scroll(function () { if (($(window).scrollTop() > $(document).height() - $(window).height() - 100)) { $(".preloader").show(); $(window).off("scroll"); startDate.setDate(startDate.getDate() - 1); endDate.setDate(endDate.getDate() - 15); endDate.setMonth(endDate.getMonth() - 1); $.ajax({ url: "https://api.nasa.gov/planetary/apod", data: { api_key: apiKEY, start_date: `${endDate.getUTCFullYear()}-${endDate.getUTCMonth() + 1}-${endDate.getUTCDate()}`, end_date: `${startDate.getUTCFullYear()}-${startDate.getUTCMonth() + 1}-${startDate.getUTCDate()}`, }, success: function (data) { wallpaperLoad(data); $(window).on("scroll"); }, }); } }); } /** * @param url {String} Url of the image to be set as wallpaper */ function wallpaperUpdate(url) { $.ajax({ url: "http://localhost:3000/api/update/wallpaper", type: "POST", data: { url: url, }, success: function (data) { $(".toast-body").text(data.message); let toastLiveExample = document.getElementById('liveToast'); let toast = new bootstrap.Toast(toastLiveExample); toast.show(); }, }); } /** * @param title {String} Title of the image * @param explanation {String} Explanation of the image * @param copyright {String} Author of the image * @param date {String} Date of publication * @param url {String} Url of the image * @param hdurl {String} Url of the image in high definition * @param media_type {String} Type of media */ function favoriteAdd(title, explanation, copyright, date, url, hdurl, media_type) { $.ajax({ url: "http://localhost:3000/api/add/favorite", type: "POST", data: { title: title, explanation: explanation, date: date, url: url, hdurl: hdurl, media_type: media_type, }, success: function (data) { $(".toast-body").text(data.message); let toastLiveExample = document.getElementById('liveToast'); let toast = new bootstrap.Toast(toastLiveExample); toast.show(); }, }); } /** * @param title {String} Title of the image */ function favoriteRemove(title) { $.ajax({ url: "http://localhost:3000/api/del/favorite", type: "POST", data: { title: title, }, success: function (data) { $(".toast-body").text(data.message); let toastLiveExample = document.getElementById('liveToast'); let toast = new bootstrap.Toast(toastLiveExample); toast.show(); }, }); }