let newEvent = true; //false if editing exisiting event let currentURL = new URL(window.location.href); let id = currentURL.searchParams.get("id"); //id of event being edited /** load event data **/ /** * Checks if we are editing event, and sets up page for it if so */ function editEvent() { if (id) { fetchEventData(id, populateData); newEvent = false; indicateEditing(); } } /** * requests data from server about an event with specified id * @param {number} id - id of event * @param {function} callback * @returns {Object} eventData - data about requested event */ function fetchEventData(id, callback) { fetchFile("event.json", "json", undefined, { "id": id }).then((eventData) => { //If server replies with requested data, return it. Else, alert user if (eventData) { callback(eventData); } else { alert("Could not retrieve event data"); window.location.replace("./index.html"); } }); } /** * populates data about the event into the form's fields * @param {Object} eventData - data about requested event */ function populateData(eventData) { document.getElementById("event-id").value = id; for (let item in eventData) { //the key for each item should equal the id of the field let itemElem = document.getElementById(item); if (itemElem) { //map data to expected value for that field type switch (itemElem.type) { case "datetime-local": let datetime = new Date(Date.parse(eventData[item])); datetime = datetime.toISOString().slice(0, 16); itemElem.defaultValue = datetime; break; default: itemElem.defaultValue = eventData[item]; } } else console.log("Could not find field " + item); } //set section radio button in included if (eventData["section"]) document.getElementById(eventData["section"]).checked = true; } /** * Adds an item on the navigation bar to show the user is editing an event instead of adding one */ function indicateEditing() { document.querySelector(".current-page").classList.remove('current-page'); //creates html element: //