2025-01-01 17:03:09 -05:00

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();
});
});