76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
"use strict";
|
|
|
|
import { getDateString, getPicture } from "./lib_apod.js";
|
|
|
|
function getElement(selector) {
|
|
return document.querySelector(selector);
|
|
}
|
|
|
|
function clear() {
|
|
getElement("#title").textContent = "";
|
|
getElement("#display").textContent = "";
|
|
getElement("#explanation").textContent = "";
|
|
getElement("#msg").textContent = "";
|
|
}
|
|
|
|
function displayPicture(data) {
|
|
|
|
if (data.error) { // error
|
|
getElement("#msg").textContent = data.error.message;
|
|
}
|
|
else if (data.code) { // problem
|
|
getElement("#msg").textContent = data.msg;
|
|
}
|
|
else { // success
|
|
// header
|
|
getElement("#title").textContent = data.title;
|
|
|
|
// image or video
|
|
const displayDiv = getElement("#display");
|
|
if (data.media_type === "image") {
|
|
const img = document.createElement("img");
|
|
img.src = data.url;
|
|
img.alt = "NASA photo";
|
|
img.width = 700;
|
|
displayDiv.appendChild(img);
|
|
}
|
|
else if (data.media_type === "video") {
|
|
const iframe = document.createElement("iframe");
|
|
iframe.src = data.url;
|
|
iframe.allowFullscreen = true;
|
|
iframe.setAttribute("frameborder", "0");
|
|
displayDiv.appendChild(iframe);
|
|
}
|
|
|
|
// text
|
|
getElement("#explanation").textContent = data.explanation;
|
|
}
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
// set textbox to today's date in YYYY-MM-DD format
|
|
const dateTextbox = getElement("#date");
|
|
dateTextbox.value = getDateString();
|
|
dateTextbox.focus();
|
|
|
|
getElement("#view_button").addEventListener("click", async () => {
|
|
clear(); // clear any previous display
|
|
|
|
const dateString = getElement("#date").value;
|
|
const date = new Date(dateString);
|
|
|
|
if (date == "Invalid Date") {
|
|
const msg = "Please enter a valid date in YYYY-MM-DD format.";
|
|
getElement("#msg").textContent = msg;
|
|
} else {
|
|
try {
|
|
const data = await getPicture(date);
|
|
displayPicture(data);
|
|
} catch(e) {
|
|
getElement("#msg").textContent = e.message;
|
|
}
|
|
}
|
|
|
|
getElement("#date").focus();
|
|
});
|
|
}); |