From 868ca0b47606dd5110281e235d046fc99271cb49 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Wed, 3 Dec 2014 07:08:26 +0000 Subject: [PATCH] VRFS-1442 sessions band selection --- ruby/lib/jam_ruby/models/music_session.rb | 2 +- web/app/assets/javascripts/inviteMusicians.js | 2 + .../javascripts/scheduled_session.js.erb | 37 ++++++++++++++++++- .../stylesheets/client/createSession.css.scss | 9 ++++- .../views/clients/_scheduledSession.html.erb | 11 ++++++ 5 files changed, 57 insertions(+), 4 deletions(-) diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 5194517c8..095a8035a 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -319,7 +319,7 @@ module JamRuby end def self.create user, options - band = Band.find(options[:band]) unless options[:band].nil? + band = Band.where(id: options[:band]).first if options[:band].present? ms = MusicSession.new ms.name = options[:name] diff --git a/web/app/assets/javascripts/inviteMusicians.js b/web/app/assets/javascripts/inviteMusicians.js index d7f6b933c..30df7e05b 100644 --- a/web/app/assets/javascripts/inviteMusicians.js +++ b/web/app/assets/javascripts/inviteMusicians.js @@ -138,6 +138,8 @@ } } + this.addInvitationIfAbsent = addInvitation; + function getInvitedFriends() { return invitedFriends; } diff --git a/web/app/assets/javascripts/scheduled_session.js.erb b/web/app/assets/javascripts/scheduled_session.js.erb index 1fc4d1156..9aa6dc04a 100644 --- a/web/app/assets/javascripts/scheduled_session.js.erb +++ b/web/app/assets/javascripts/scheduled_session.js.erb @@ -21,6 +21,7 @@ timezone: {}, recurring_mode: {}, language: {}, + band: {}, musician_access: {}, fans_access: {}, open_rsvps: false @@ -40,6 +41,7 @@ var $timezoneList = null; var $recurringModeList = null; var $languageList = null; + var $bandList = null; var $sessionPlusMusiciansLabel = null; var $editScheduledSessions = null; var $inputFiles = $screen.find('#session-select-files'); @@ -256,6 +258,7 @@ } $('#session-language-disp').html(createSessionSettings.language.label); + $('#session-band-disp').html(createSessionSettings.band.label); var plusMusicians = $('#session-plus-musicians')[0].checked; @@ -538,6 +541,12 @@ createSessionSettings.language.value = $languageList.val(); createSessionSettings.language.label = $languageList.get(0).options[$languageList.get(0).selectedIndex].text; + createSessionSettings.band.value = $bandList.val(); + if (createSessionSettings.band.value === '0') + createSessionSettings.band.label = ''; + else + createSessionSettings.band.label = $bandList.get(0).options[$bandList.get(0).selectedIndex].text; + createSessionSettings.open_rsvps = $('#session-plus-musicians')[0].checked; return true; } @@ -637,6 +646,7 @@ data.legal_policy = createSessionSettings.session_policy; data.legal_terms = true; data.language = createSessionSettings.language.value; + data.band = createSessionSettings.band.value; if (createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_QUICK_START %>' || createSessionSettings.createType == '<%= MusicSession::CREATE_TYPE_IMMEDIATE %>') { data.start = new Date().toDateString() + ' ' + context.JK.formatUtcTime(new Date(), false); data.duration = "60"; @@ -1026,6 +1036,7 @@ context.JK.dropdown($timezoneList); context.JK.dropdown($recurringModeList); context.JK.dropdown($languageList); + context.JK.dropdown($bandList); context.JK.helpBubble($sessionPlusMusiciansLabel, 'session-plus-musicians', {}, {offsetParent: $sessionPlusMusiciansLabel.closest('.content-wrapper')}); @@ -1132,6 +1143,7 @@ createSessionSettings.recurring_mode = {}; createSessionSettings.timezone = {}; createSessionSettings.language = {}; + createSessionSettings.band = {}; createSessionSettings.musician_access = {}; createSessionSettings.fans_access = {}; } @@ -1171,6 +1183,27 @@ $('#session-fans-access-info .info-box[fans-access-type="' + $(event.target).val() + '"]').removeClass('hidden'); } + function selectBand() { + var bandId = $bandList.get(0).options[$bandList.get(0).selectedIndex].value; + if (bandId != '') { + var url = "/api/bands/" + bandId + "/musicians"; + return $.ajax({ + type: "GET", + dataType: "json", + url: url, + processData:false, + error: app.ajaxError + }) + .done(function(response) { + $.each(response, function(index, val) { + if (val.id !== context.JK.currentUserId) { + inviteMusiciansUtil.addInvitationIfAbsent(val.name, val.id); + } + }); + }) + } + } + // asks the instrument selector for the creator's specified instruments, and defaults to Other/Beginner if none were selected function getCreatorInstruments() { var instruments = instrumentSelector.getSelectedInstruments(); @@ -1202,7 +1235,8 @@ invitationDialog.showFacebookDialog(e); }); - $(friendInput).focus(function() { $(this).val(''); }) + $(friendInput).focus(function() { $(this).val(''); }); + $bandList.on('change', function() { selectBand() } ); $inputFiles.on('change', changeSelectedFiles); $btnSelectFiles.on('click', toggleSelectFiles); @@ -1235,6 +1269,7 @@ $createTypeHelpers = $screen.find('.session-when-info div'); $scheduledSessions = $screenStep1.find("#scheduled-session-list"); $languageList = $screen.find('#session-language-list'); + $bandList = $screen.find('#session-band-list'); $sessionPlusMusiciansLabel = $screen.find('label[for="session-plus-musicians"]'); $editScheduledSessions = $screen.find('#edit_scheduled_sessions'); $btnSelectFiles = $screen.find('#session-notation-file-selection'); diff --git a/web/app/assets/stylesheets/client/createSession.css.scss b/web/app/assets/stylesheets/client/createSession.css.scss index 83eeba993..55376f41b 100644 --- a/web/app/assets/stylesheets/client/createSession.css.scss +++ b/web/app/assets/stylesheets/client/createSession.css.scss @@ -321,8 +321,13 @@ } .session-language-list-header { - margin-top:25px; - margin-bottom:20px; + margin-top:20px; + margin-bottom:10px; + } + + .session-band-list-header { + margin-top:20px; + margin-bottom:10px; } diff --git a/web/app/views/clients/_scheduledSession.html.erb b/web/app/views/clients/_scheduledSession.html.erb index 89a98df01..4e06c077a 100644 --- a/web/app/views/clients/_scheduledSession.html.erb +++ b/web/app/views/clients/_scheduledSession.html.erb @@ -239,6 +239,14 @@ just start typing your friends' names and select them from the popup menu. If you choose to let other interested musicians join you, you will have the opportunity to approve them when they RSVP. +

Is this a band session?

+ +

What language will be spoken?