From 53f0606ac105c3292a6bab2ded84d229a6bfdf11 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Sun, 14 Jun 2015 22:28:33 +0300 Subject: [PATCH] Rework bootstrapSwitch --- app/assets/javascripts/osem-switch.js | 18 ++++---- app/views/admin/events/_proposal.html.haml | 46 ++++++++++++------- app/views/admin/events/index.html.haml | 22 +++++++-- .../admin/events/index.html.haml_spec.rb | 35 ++++++++++++++ 4 files changed, 89 insertions(+), 32 deletions(-) create mode 100644 spec/views/admin/events/index.html.haml_spec.rb diff --git a/app/assets/javascripts/osem-switch.js b/app/assets/javascripts/osem-switch.js index 314f9e3f..35393625 100644 --- a/app/assets/javascripts/osem-switch.js +++ b/app/assets/javascripts/osem-switch.js @@ -1,16 +1,14 @@ $(function () { - $(document).ready(function() { - $("[class='switch-checkbox']").bootstrapSwitch(); + $("[class='switch-checkbox']").bootstrapSwitch(); - $('input[class="switch-checkbox"]').on('switchChange.bootstrapSwitch', function(event, state) { - url = "/admin/conference/" + this.name + "/events/" + this.value + $('input[class="switch-checkbox"]').on('switchChange.bootstrapSwitch', function(event, state) { + var url = $(this).attr('url') + state; + var method = $(this).attr('method'); - $.ajax({ - url: url, - type: 'PATCH', - data: { event: { is_highlight: state } }, - dataType: 'script' - }); + $.ajax({ + url: url, + type: method, + dataType: 'script' }); }); }); diff --git a/app/views/admin/events/_proposal.html.haml b/app/views/admin/events/_proposal.html.haml index d6349ab1..a29282a4 100644 --- a/app/views/admin/events/_proposal.html.haml +++ b/app/views/admin/events/_proposal.html.haml @@ -5,7 +5,7 @@ %br %small = @event.subtitle - = link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-default pull-right" + = link_to 'Edit', edit_admin_conference_event_path(@conference.short_title, @event), class: 'btn btn-mini btn-primary pull-right' .row .col-md-12 @@ -15,12 +15,12 @@ %b Type %td .dropdown - = link_to "#", :class => "dropdown-toggle", :id => "type-dropdown" do + = link_to '#', class: 'dropdown-toggle', id: 'type-dropdown' do - if @event.event_type.nil? Event Type - else = @event.event_type.title - + %ul.dropdown-menu - @event_types.each do |type| %li= link_to type.title, @@ -32,20 +32,21 @@ %td %b Highlight %td - = check_box_tag @conference.short_title, @event.id, @event.is_highlight, class: 'switch-checkbox', - data: { size: "small", - off_color: 'warning', - on_text: 'Yes', - off_text: 'No' } + = check_box_tag @conference.short_title, @event.id, @event.is_highlight, + method: :patch, url: "/admin/conference/#{@conference.short_title}/events/#{@event.id}?event[is_highlight]=", + class: 'switch-checkbox', data: { size: 'small', + off_color: 'warning', + on_text: 'Yes', + off_text: 'No' } %tr %td %b State %td .dropdown - = link_to "#", :class => "dropdown-toggle" do + = link_to '#', class: 'dropdown-toggle' do = @event.state.humanize - + %ul.dropdown-menu = render 'change_state_dropdown', event: @event %tr @@ -53,7 +54,7 @@ %b Track %td .dropdown - = link_to "#", :class => "dropdown-toggle", :id => "track-dropdown" do + = link_to '#', class: 'dropdown-toggle', id: 'track-dropdown' do - if @event.track.nil? Track - else @@ -71,7 +72,7 @@ %b Difficulty %td .dropdown - = link_to "#", :class => "dropdown-toggle", :id => "difficulty-dropdown" do + = link_to '#', class: 'dropdown-toggle', id: 'difficulty-dropdown' do - if @event.difficulty_level.nil? Difficulty Level - else @@ -83,6 +84,17 @@ @event, event: { difficulty_level_id: difficulty.id }), method: :patch + %tr + %td + %b Requires Registration + %td + = check_box_tag @conference.short_title, @event.id, @event.require_registration, + method: :patch, url: "/admin/conference/#{@conference.short_title}/events/#{@event.id}?event[require_registration]=", + class: 'switch-checkbox', data: { size: 'small', + off_color: 'warning', + on_text: 'Yes', + off_text: 'No' } + - if !@event.room.nil? %tr %td @@ -126,18 +138,18 @@ %td= simple_format(@event.description) - if @conference.call_for_paper && @conference.call_for_paper.rating && @conference.call_for_paper.rating > 0 - = render :partial => "voting" + = render partial: 'voting' .row - = link_to "Comments (#{@comment_count})", "#", :id => "event-comment-link" + = link_to "Comments (#{@comment_count})", '#', id: 'event-comment-link' #comments-div %hr %ul.media %div .row-fluid - = form_tag(comment_admin_conference_event_path(@conference.short_title, @event.id), :method => :post) do - = text_area_tag(:comment, "") - = submit_tag "Add Comment", :class => "btn btn-primary pull-right" + = form_tag(comment_admin_conference_event_path(@conference.short_title, @event.id), method: :post) do + = text_area_tag(:comment, '') + = submit_tag 'Add Comment', class: 'btn btn-primary pull-right' %br - @comments.each do |comment| %div diff --git a/app/views/admin/events/index.html.haml b/app/views/admin/events/index.html.haml index 137d5a15..b796da61 100644 --- a/app/views/admin/events/index.html.haml +++ b/app/views/admin/events/index.html.haml @@ -22,6 +22,8 @@ %b Submitter %th %b Speaker + %th + %b Pre-registration %th %b Highlight %th @@ -72,12 +74,22 @@ = link_to speaker.name, admin_user_path(speaker) - else Unknown speaker + + %td{'data-order' => "#{event.require_registration}"} + = check_box_tag @conference.short_title, event.id, event.require_registration, + method: :patch, url: "/admin/conference/#{@conference.short_title}/events/#{event.id}?event[require_registration]=", + class: 'switch-checkbox', data: { size: 'small', + off_color: 'warning', + on_text: 'Yes', + off_text: 'No' } + %td{'data-order' => "#{event.is_highlight}"} - = check_box_tag @conference.short_title, event.id, event.is_highlight, class: 'switch-checkbox', - data: { size: "small", - off_color: 'warning', - on_text: 'Yes', - off_text: 'No' } + = check_box_tag @conference.short_title, event.id, event.is_highlight, + method: :patch, url: "/admin/conference/#{@conference.short_title}/events/#{event.id}?event[is_highlight]=", + class: 'switch-checkbox', data: { size: 'small', + off_color: 'warning', + on_text: 'Yes', + off_text: 'No' } %td .btn-group diff --git a/spec/views/admin/events/index.html.haml_spec.rb b/spec/views/admin/events/index.html.haml_spec.rb new file mode 100644 index 00000000..f9e06dad --- /dev/null +++ b/spec/views/admin/events/index.html.haml_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' + +describe 'admin/events/index' do + let!(:conference) { create(:conference) } + let!(:event1) { create(:event, conference: conference, title: 'event1') } + let!(:event2) { create(:event, conference: conference, title: 'event2') } + + it 'renders all conference events' do + assign(:conference, conference) + assign(:events, [ event1, event2 ]) + assign(:event_types, [ create(:event_type, conference: conference), create(:event_type, conference: conference) ]) + assign(:tracks, [ create(:track, conference: conference), create(:track, conference: conference) ]) + assign(:difficulty_levels, [ create(:difficulty_level, conference: conference), create(:difficulty_level, conference: conference) ]) + + render + + expect(rendered).to have_selector('table thead th:nth-of-type(1)', text: 'ID') + expect(rendered).to have_selector('table thead th:nth-of-type(2)', text: 'Title') + expect(rendered).to have_selector('table thead th:nth-of-type(3)', text: 'Submitter') + expect(rendered).to have_selector('table thead th:nth-of-type(4)', text: 'Speaker') + expect(rendered).to have_selector('table thead th:nth-of-type(5)', text: 'Pre-registration') + expect(rendered).to have_selector('table thead th:nth-of-type(6)', text: 'Highlight') + expect(rendered).to have_selector('table thead th:nth-of-type(7)', text: 'Type') + expect(rendered).to have_selector('table thead th:nth-of-type(8)', text: 'Track') + expect(rendered).to have_selector('table thead th:nth-of-type(9)', text: 'Difficulty') + expect(rendered).to have_selector('table thead th:nth-of-type(10)', text: 'State') + + expect(conference.events.count).to eq 2 + expect(rendered).to have_selector('table tr:nth-of-type(1) td:nth-of-type(1)', text: event1.id) + expect(rendered).to have_selector('table tr:nth-of-type(1) td:nth-of-type(2)', text: 'event1') + + expect(rendered).to have_selector('table tr:nth-of-type(2) td:nth-of-type(1)', text: event2.id) + expect(rendered).to have_selector('table tr:nth-of-type(2) td:nth-of-type(2)', text: 'event2') + end +end