armandofox/audience1st

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

Summary

Maintainability
A
1 hr
Test Coverage
A1.getSeatingOptionsForAddComps = function() {
  // triggered when a new perf is selected during Add Comps flow
  var showdateID = $('#comp_order_showdate_id').val();
  var resetAfter = function() {
    $('#seating-charts-wrapper').addClass('d-none');
    $('#comp_order_howmany').prop('readonly', false); // allow changing ticket count
    $('.seat-display').addClass('d-none');
    $('.confirm-seats').prop('disabled', false);
  };
  // if it's not a valid showdate, do nothing:
  if (showdateID == '' ||  isNaN(showdateID) )  {
    resetAfter();
    return;
  }
  $.getJSON('/ajax/seatmap/' + showdateID, function(jsonData) {
    if (jsonData.map == null) { 
      resetAfter();
    } else {
      $('.seat-display').removeClass('d-none');
      $('.confirm-seats').prop('disabled', true);
      A1.seatmap.resetAfterCancel = function() {
        // only if Cancel Seat Selection pressed: reset "reserve for..." menu to "Leave Open"
        $('#comp_order_showdate_id').prop('selectedIndex', 0);
        resetAfter;
      };
      A1.seatmap.onSelect = function() {
        $('.confirm-seats').prop('disabled', true);
        $('.seat-display').val(A1.seatmap.selectedSeatsAsString);
      };
      A1.seatmap.allSeatsSelected = function() {
        $('.confirm-seats').prop('disabled', false);
      }
      A1.seatmap.configureFrom(jsonData); // setup unavailable seats, etc
      A1.seatmap.max = Number($('#comp_order_howmany').val());
      $('#comp_order_howmany').prop('readonly', true); // still submits as part of form, but can't change
      A1.seatmap.seats = $('#seatmap').seatCharts(A1.seatmap.settings);
      $('#seating-charts-wrapper').removeClass('d-none').slideDown();
      A1.seatmap.setupMap();
    }
  });
}
A1.setupAddComps = function() {
  if ($('body#vouchers_new').length) { // only do these bindings on "Add Comps" page
    $('#add_comps_form').on('change', '#comp_order_showdate_id', A1.getSeatingOptionsForAddComps);
  }
}

$(A1.setupAddComps);