calblueprint/ashby-village

View on GitHub
app/assets/javascripts/events_new.js

Summary

Maintainability
C
1 day
Test Coverage
function getDateTime(date, time) {
  if (date.length != 0 && time.length != 0) {
    if ( time.indexOf(".") != -1 ) {
      time = time.slice(0, -7);
    }
    var datetime = date + "T" + time + ":00-07:00";
    return datetime
  } else {
    return false;
  }
}

function validateEventStart() {
  var date = document.getElementById("event_startdate").value;
  var time = document.getElementById("event_starttime").value;
  var datetime = getDateTime(date, time);
  if (datetime && Date.parse(Date()) >= Date.parse(datetime)) {
    $("#event_starttime").addClass("form-error");
    $("#event_startdate").addClass("form-error");
    $(".startdate_errors").show();
    return true
  } else {
    $("#event_starttime").removeClass("form-error");
    $("#event_startdate").removeClass("form-error");
    $(".startdate_errors").hide();
    return false
  }
}

function validateEventEnd() {
  var enddate = document.getElementById("event_enddate").value;
  var endtime = document.getElementById("event_endtime").value;
  var startdate = document.getElementById("event_startdate").value;
  var starttime = document.getElementById("event_starttime").value;

  startDateTime = getDateTime(startdate, starttime);
  endDateTime = getDateTime(enddate, endtime);

  if (startDateTime
    &&  endDateTime
    && (Date.parse(endDateTime) < Date.parse(startDateTime) || Date.parse(endDateTime) < Date.parse(Date()))
    ) {
    $("#event_endtime").addClass("form-error");
    $("#event_enddate").addClass("form-error");
    $(".enddate_errors").show();
    return true
  } else {
    $("#event_endtime").removeClass("form-error");
    $("#event_enddate").removeClass("form-error");
    $(".enddate_errors").hide();
    return false
  }
}

function remove_selected_organizer(button) {
  if($(".title").text().indexOf("Edit") > -1 && event_organizer_ids.length == 0 && confirm("Are you sure you want to remove all organizers?")){
    return false;
  }
  var id = button.parentElement.id;
  button.parentElement.remove();
  index = event_organizer_ids.indexOf(id);
  if(index > -1) {
    event_organizer_ids.splice(index, 1);
  }
  $("#selected_organizers")[0].value = event_organizer_ids;
};

function add_selected_organizer(name, id) {
  var div = document.createElement('div');
  div.innerHTML = name + '<div type="button" class="x-leader" onclick="remove_selected_organizer(this)"><i class="fa fa-times fa-lg"></i></div>';
  div.id = id;
  div.className = " selected-leader";
  return div;
}

var event_organizer_ids = [];

var ready_events_new = function() {
  if($("#event_startdate").length > 0) {
    $("#event_startdate")[0].onchange = function() {
      if($("#event_enddate").val() == ""){
        $("#event_enddate").val($("#event_startdate").val());
      }
    };
    event_organizer_ids = []; 

    // Function called when autocomplete has been selected
    $("#organizers").bind('railsAutocomplete.select', function(event, data){
      // Add id's to array to pass to rails
      event_organizer_ids.push(data.item.id);
      // Set hidden field
      $("#selected_organizers")[0].value = event_organizer_ids;
      // Blank autocomplete field
      $("#organizers")[0].value = "";
      // Add Selected Name to new visible field
      $("#selected-event-organizers")[0].appendChild(add_selected_organizer(data.item.value, data.item.id));
    });
    $("#organizers").keyup(function(){
      if($(".ui-helper-hidden-accessible").find("div:last").text() == "No search results."){
        $("#organizerError").show();
      } else {
        $("#organizerError").hide();
      }
    });
  }
};