const events = [{
event: "ComicCon",
city: "New York",
state: "New York",
attendance: 240000,
date: "06/01/2020",
},
{
event: "ComicCon",
city: "New York",
state: "New York",
attendance: 250000,
date: "06/01/2021",
},
{
event: "ComicCon",
city: "New York",
state: "New York",
attendance: 257000,
date: "06/01/2022",
},
{
event: "ComicCon",
city: "San Diego",
state: "California",
attendance: 130000,
date: "06/01/2020",
},
{
event: "ComicCon",
city: "San Diego",
state: "California",
attendance: 140000,
date: "06/01/2021",
},
{
event: "ComicCon",
city: "San Diego",
state: "California",
attendance: 150000,
date: "06/01/2022",
},
{
event: "HeroesCon",
city: "Charlotte",
state: "North Carolina",
attendance: 40000,
date: "06/01/2020",
},
{
event: "HeroesCon",
city: "Charlotte",
state: "North Carolina",
attendance: 45000,
date: "06/01/2021",
},
{
event: "HeroesCon",
city: "Charlotte",
state: "North Carolina",
attendance: 50000,
date: "06/01/2022",
},
];
function buildDropDown() {
let eventDD = document.getElementById("eventDropDownList");
eventDD.innerHTML = "";
let ddTemplate = document.getElementById("dropDown-template");
let ddItem = document.importNode(ddTemplate.content, true);
let ddLink = ddItem.querySelector("a");
ddLink.setAttribute("data-city", "All");
ddLink.textContent = "All";
eventDD.appendChild(ddItem);
let currentEvents = getEvents();
let distinctCities = [...new Set(currentEvents.map((event) => event.city))];
for (let index = 0; index < distinctCities.length; index++) {
let ddItem = document.importNode(ddTemplate.content, true);
let ddLink = ddItem.querySelector("a");
ddLink.setAttribute("data-city", distinctCities[index]);
ddLink.textContent = distinctCities[index];
eventDD.appendChild(ddItem);
}
let statsHeader = document.getElementById("statsHeader");
statsHeader.innerHTML = `Stats For All Events:`;
displayStats(currentEvents);
displayEventData(currentEvents);
}
function getEventData(element) {
let city = element.getAttribute("data-city");
let currentEvents = getEvents();
let filteredEvents = currentEvents;
if (city != "All") {
filteredEvents = currentEvents.filter(function (event) {
if (event.city == city) {
return event;
}
});
}
let statsHeader = document.getElementById("statsHeader");
statsHeader.innerHTML = `Statistics for ${city}:`;
displayStats(filteredEvents);
}
function getEvents() {
let currentEvents = JSON.parse(localStorage.getItem("eventData"));
if (currentEvents === null) {
currentEvents = events;
localStorage.setItem("eventData", JSON.stringify(currentEvents));
}
return currentEvents;
}
function displayStats(filteredEvents) {
let total = 0;
let average = 0;
let most = 0;
let least = -1;
let currentAttendance = 0;
for (let index = 0; index < filteredEvents.length; index++) {
currentAttendance = filteredEvents[index].attendance;
total += currentAttendance;
if (most < currentAttendance) {
most = currentAttendance;
}
if (least > currentAttendance || least < 0) {
least = currentAttendance;
}
}
average = total / filteredEvents.length;
document.getElementById("total").innerHTML = total.toLocaleString();
document.getElementById("most").innerHTML = most.toLocaleString();
document.getElementById("least").innerHTML = least.toLocaleString();
document.getElementById("average").innerHTML = average.toLocaleString(
undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 0
}
);
}
function displayEventData(currentEvents) {
let template = document.getElementById("eventData-template");
let eventBody = document.getElementById("eventBody");
eventBody.innerHTML = "";
for (let index = 0; index < currentEvents.length; index++) {
let eventRow = document.importNode(template.content, true)
let eventCols = eventRow.querySelectorAll("td");
eventCols[0].textContent = currentEvents[index].event;
eventCols[1].textContent = currentEvents[index].city;
eventCols[2].textContent = currentEvents[index].state;
eventCols[3].textContent = currentEvents[index].attendance;
eventCols[4].textContent = new Date(currentEvents[index].date).toLocaleDateString();
eventBody.appendChild(eventRow);
}
}
function saveEventData() {
let currentEvents = getEvents();
let eventObj = {
event: "name",
city: "city",
state: "state",
attendance: 0,
date: "01/01/2001",
}
eventObj.event = document.getElementById("newEventName").value;
eventObj.city = document.getElementById("newEventCity").value;
let stateSel = document.getElementById("newEventState");
eventObj.state = stateSel.options[stateSel.selectedIndex].text;
let attendanceNmbr = parseInt(document.getElementById("newEventAttendance").value, 10);
eventObj.attendance = attendanceNmbr;
let eventDate = document.getElementById("newEventDate").value;
let eventDateFormatted = `${eventDate} 00:00`;
eventObj.date = new Date(eventDateFormatted).toLocaleDateString();
currentEvents.push(eventObj);
localStorage.setItem("eventData", JSON.stringify(currentEvents));
buildDropDown();
}