🐍 Agenda Adder 📋


$(function () {
  prepareLocalStorage();
  showAgenda(getLocalStorage());

  $("#agendaCount").text(`CURRENT AGENDA (${getAgendaCount()})`);
});

let agendaArray = [];

function prepareLocalStorage() {
  if (getLocalStorage() == null) {
    setLocalStorage(new Array());
  }
}

function getLocalStorage() {
  let agendaList = JSON.parse(localStorage.getItem("agendaArray")) || [];
  if (agendaList.length == 0) {
    agendaList = agendaArray;
    localStorage.setItem("agendaArray", JSON.stringify(agendaList));
  }

  return JSON.parse(localStorage.getItem("agendaArray"));
}

function setLocalStorage(data) {
  localStorage.setItem("agendaArray", JSON.stringify(data));
}

function getAgendumId(element) {
  let agendumId = $(element).parent().attr("data-id");
  return agendumId;
}

function getIndex(element) {
  let agendumIndex = $(element).parent().attr("data-id");
  return agendumIndex
}

function getAgendaCount() {
  return getLocalStorage().length;
}

function createAgendum(formData) {
    let agenda = getLocalStorage();
    let agendum = {
        id: generateAgendumId(),
        created: new Date(),
        completed: false,
        title: formData[1].value,
        dueDate: new Date(`${formData[2].value} 00:00`)
    }

    agenda.push(agendum);
    setLocalStorage(agenda);
    showAgenda();
}

function generateAgendumId() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
  return v.toString(16);
  });
}

function editAgendum(formData) {
    let agenda = getLocalStorage();
    let agendumId = formData[1].value;
    let agendum = agenda.find(t => t.id == agendumId);
    agendum.title = formData[2].value;
    agendum.dueDate = new Date(formData[3].value);
    setLocalStorage(agenda);
    showAgenda();
}

function abolishAgendum(element) {

  let agendumId = getAgendumId(element);
  let agenda = getLocalStorage();
  let index = agenda.findIndex(t => t.id == agendumId);

  agenda.splice(index, 1);
  setLocalStorage(agenda);
  showAgenda();
}

function accomplishAgendum(element) {

  let agenda = getLocalStorage();
  let agendumId = getAgendumId(element);
  let agendum = agenda.find(t => t.id == agendumId);
  agendum.completed = true;
  setLocalStorage(agenda);
  showAgenda();
}

function popEditModal(element) {
  let agenda = getLocalStorage();
  let agendumId = getAgendumId(element);
  let agendum = agenda.find(t => t.id == agendumId);

  document.getElementById("editId").value = agendum.id;
  document.getElementById("editTitle").value = agendum.title;
  document.getElementById("editDueDate").value = displayDate(agendum.dueDate);
}