armandofox/audience1st

View on GitHub
app/views/valid_vouchers/new.html.haml

Summary

Maintainability
Test Coverage
= set_active_tab '#t_shows_index'

%h2 Add ticket type(s) for #{@show.name}

= form_tag valid_vouchers_path do
  = hidden_field_tag :show_id, @show.id
  .form-group.form-row
    %label.col-form-label.col-md-5.text-right Add/modify which ticket types:
    .col-md-6#t-vouchertypes
      - @vouchertypes.each do |v|
        .form-check
          - field_id = "vouchertypes[#{v.id}]"
          .form-check-input= check_box_tag "vouchertypes[]", v.id, false, :id => field_id, :class => 'vouchertype'
          %label.form-check-label.col-form-label{:for => field_id}= v.name_with_season_and_price
          %br

  .alert.alert-info.Tl.Tt= t('season_setup.options_apply_to_all_selected_performances')

  - if @show.showdates.any?(&:stream?)
    .form-row.py-1.border-bottom
      .col-5.text-right
        %label.col-form-label{:for => :showdate_type} Add/change redemptions for performances that are
      .col-2
        = select_tag 'showdate_type', showdate_type_choices(@show), :class => 'form-control showdate-type'
  - else
    = hidden_field_tag 'showdate_type', 'Tt', :class => 'showdate-type'

  #adjust-max-sales
    .form-group.form-row.pb-0.mb-0
      .col-md-5.text-right
        = popup_help_for :valid_voucher_max_sales_for_type
        %label.col-form-label{:for=>:valid_voucher_max_sales_for_type} Max sales for type
      = number_field_tag 'valid_voucher_max_sales_for_type', '', :name => 'valid_voucher[max_sales_for_type]', :class => 'form-control col-md-2'

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[max_sales_for_type]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_max_sales_for_type'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'

  #adjust-promo-code
    .form-group.form-row.pb-0.mb-0
      .col-md-5.text-right
        = popup_help_for :valid_voucher_promo_code
        %label.col-form-label{:for=>:valid_voucher_promo_code} Redemption (promo) code, if any
      = text_field 'valid_voucher', 'promo_code', :class => 'form-control col-md-2'

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[promo_code]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_promo_code'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'

  #adjust-min-sales-per-txn
    .form-group.form-row.pb-0.mb-0
      .col-md-5.text-right
        = popup_help_for :valid_voucher_min_sales_per_txn
        %label.col-form-label{:for=>:valid_voucher_min_sales_per_txn} Min purchase per transaction
      = number_field_tag 'valid_voucher_min_sales_per_txn', '', :name => 'valid_voucher[min_sales_per_txn]', :class => 'form-control col-md-2'

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[min_sales_per_txn]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_min_sales_per_txn'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'
    
  #adjust-max-sales-per-txn
    .form-group.form-row.pb-0.mb-0
      .col-md-5.text-right
        = popup_help_for :valid_voucher_max_sales_per_txn
        %label.col-form-label{:for=>:valid_voucher_max_sales_per_txn} Max purchase per transaction
      = number_field_tag 'valid_voucher_max_sales_per_txn', '', :name => 'valid_voucher[max_sales_per_txn]', :class => 'form-control col-md-2'

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[max_sales_per_txn]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_max_sales_per_txn'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'
    
  #adjust-start-sales
    .form-group.form-row.pb-0.mb-0
      .col-md-5.text-right
        = popup_help_for :valid_voucher_sales_dates
        %label.col-form-label{:for=>:valid_voucher_start_sales}
          Start sales for each performance
      .col-md-6.form-inline= datetime_select 'valid_voucher', 'start_sales', {:minute_step => 15}, {:class => 'form-control'}

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[start_sales]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_start_sales'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'
    
  #adjust-end-sales
    .form-row.pb-0.mb-0.Tt.Tl
      .col-md-5.text-right
        = popup_help_for :valid_voucher_sales_dates
        %label.col-form-label End sales for each performance
      .col-md-1= number_field_tag 'minutes_before', @minutes_before.abs, :class => 'form-control'
      .col-md-3= select_tag 'before_or_after', options_for_before_or_after_curtain(@minutes_before), :class => 'form-control'
    .form-row.pb-0.mb-0.Ts
      .col-md-5.text-right
        = popup_help_for :valid_voucher_sales_dates
        %label.col-form-label End sales
      .col-md-5.form-inline= datetime_select 'valid_voucher', 'end_sales', {:minute_step => 15}, {:class => 'form-control'}

    .form-group.form-row.pt-0.mt-0.border-bottom
      .form-check.form-check-inline.col-md-5.offset-md-5
        = check_box_tag 'preserve[end_sales]', 1, true
        %label.px-1.col-form-label{:for => 'preserve_end_sales'} Keep as-is on existing redemptions
        = popup_help_for 'keep_existing_redemptions_as_is'
    
  .alert.alert-info= t('season_setup.apply_to_which_performances')

  .pb-2.Tt.Tl#select-performances
    .form-row.pl-4.pb-3
      .col-md-2.text-center
        Select Dates:
        %br
        = link_to 'All', '#',  :onclick => %Q{$('.showdate.'+($('#showdate_type').val()+'d')).prop('checked', true).change(); return(false);}, :class => 'btn btn-outline-secondary btn-sm px-1'
        = link_to 'None', '#', :onclick => %Q{$('.showdate').prop('checked', false).change(); return(false);}, :class => 'btn btn-outline-secondary btn-sm px-1'
      .col-md-5.text-center
        Or Select Every:
        %br
        - %w(Mon Tue Wed Thu Fri Sat Sun).each do |wday|
          = link_to wday, '#', :onclick => %Q{$('.showdate.#{wday}.' + ($('#showdate_type').val()+'d')).prop('checked', true).change(); return(false);}, :class => 'btn btn-outline-secondary btn-sm px-1'
      .col-md-5.text-center
        Or Un-select Every:
        %br
        - %w(Mon Tue Wed Thu Fri Sat Sun).each do |wday|
          = link_to wday, '#', :onclick => %Q{$('.showdate.#{wday}').prop('checked', false).change(); return(false);}, :class => 'btn btn-outline-secondary btn-sm px-1'


  .mx-2.pb-2
    - @show.showdates.each_with_index do |showdate,idx|  
      - if idx % 3 == 0
        <div class="form-row">
      - klass = class_for_showdate_type(showdate) + 'd'
      .col-3.form-check.form-check-inline{:class => klass}
        - wkday = showdate.thedate.strftime('%a')
        - field_id = "showdates[#{showdate.id}]"
        = check_box_tag('showdates[]', showdate.id, false, :class => "form-check-input showdate #{wkday} #{klass}", :id => field_id)
        %label.form-check-label{:for => field_id}
          = "Stream until" if klass=='Tsd'
          = showdate.printable_date_brief
      - if idx % 3 == 2
        </div>
    - if @show.showdates.size % 3 != 0
      </div>

  .form-group.form-row
    .col-md-3.offset-md-2= submit_tag "Apply Changes", :class => 'btn btn-success btn-block', :id => 'submit'
    .col-md-1
    .col-md-4= link_to "Don't Apply Changes", edit_show_path(@show), {:class => 'btn btn-secondary btn-block' }

:javascript
  A1.valid_vouchers_change = function() {
    if ($('.showdate').is(':checked')  &&  $('.vouchertype').is(':checked')) {
      $('#submit').attr('disabled', false);
    } else {
      $('#submit').attr('disabled', true);
    }
  }
  A1.setup_valid_vouchers_editing = function() {
    $('#submit').attr('disabled', true);
    $('.showdate, .vouchertype').change(A1.valid_vouchers_change);
  }
  $(A1.setup_valid_vouchers_editing);