diff --git a/db/manifest b/db/manifest index 4d691b123..0b432c342 100755 --- a/db/manifest +++ b/db/manifest @@ -145,4 +145,5 @@ user_progress_tracking2.sql bands_did_session.sql email_change_default_sender.sql affiliate_partners.sql -chat_messages.sql \ No newline at end of file +chat_messages.sql +session_ratings.sql diff --git a/db/up/session_ratings.sql b/db/up/session_ratings.sql new file mode 100644 index 000000000..68223a849 --- /dev/null +++ b/db/up/session_ratings.sql @@ -0,0 +1 @@ +ALTER TABLE music_sessions_user_history ADD COLUMN rating_comment TEXT; diff --git a/ruby/lib/jam_ruby/models/music_session_user_history.rb b/ruby/lib/jam_ruby/models/music_session_user_history.rb index 5939f8bff..8fda4aaf5 100644 --- a/ruby/lib/jam_ruby/models/music_session_user_history.rb +++ b/ruby/lib/jam_ruby/models/music_session_user_history.rb @@ -6,6 +6,7 @@ module JamRuby self.primary_key = 'id' attr_accessible :max_concurrent_connections, :session_removed_at, :rating + validates_inclusion_of :rating, :in => -1..1, :allow_nil => true belongs_to(:user, :class_name => "JamRuby::User", @@ -16,9 +17,6 @@ module JamRuby :class_name => "MusicSessionHistory", :foreign_key => "music_session_id") - validates_inclusion_of :rating, :in => 0..2, :allow_nil => true - after_save :track_user_progression - def music_session_history @msh ||= JamRuby::MusicSessionHistory.find_by_music_session_id(self.music_session_id) end @@ -104,10 +102,13 @@ module JamRuby self.perf_data.try(:uri) end - def track_user_progression - if self.rating == 0 - user.update_progression_field(:first_good_music_session_at) + def add_rating(rval, comment='') + rval = rval.to_i + if 0 != rval + self.rating += rval + self.rating_comment = comment end end + end end diff --git a/ruby/spec/jam_ruby/models/music_sessions_user_history_spec.rb b/ruby/spec/jam_ruby/models/music_sessions_user_history_spec.rb index 3d7713b86..2ae1f6aec 100644 --- a/ruby/spec/jam_ruby/models/music_sessions_user_history_spec.rb +++ b/ruby/spec/jam_ruby/models/music_sessions_user_history_spec.rb @@ -26,7 +26,7 @@ describe MusicSessionUserHistory do describe "out of range" do before(:each) do - user_history1.update_attribute(:rating, 3) + user_history1.update_attribute(:rating, 2) user_history1.save end diff --git a/web/app/assets/images/content/icon_thumbsdown_big_off.png b/web/app/assets/images/content/icon_thumbsdown_big_off.png new file mode 100644 index 000000000..bd7e0261b Binary files /dev/null and b/web/app/assets/images/content/icon_thumbsdown_big_off.png differ diff --git a/web/app/assets/images/content/icon_thumbsdown_big_on.png b/web/app/assets/images/content/icon_thumbsdown_big_on.png new file mode 100644 index 000000000..69438d595 Binary files /dev/null and b/web/app/assets/images/content/icon_thumbsdown_big_on.png differ diff --git a/web/app/assets/images/content/icon_thumbsup_big_off.png b/web/app/assets/images/content/icon_thumbsup_big_off.png new file mode 100644 index 000000000..00ecd4f00 Binary files /dev/null and b/web/app/assets/images/content/icon_thumbsup_big_off.png differ diff --git a/web/app/assets/images/content/icon_thumbsup_big_on.png b/web/app/assets/images/content/icon_thumbsup_big_on.png new file mode 100644 index 000000000..39bcc1a8a Binary files /dev/null and b/web/app/assets/images/content/icon_thumbsup_big_on.png differ diff --git a/web/app/assets/javascripts/session.js b/web/app/assets/javascripts/session.js index e667e27c0..9b9b3b01d 100644 --- a/web/app/assets/javascripts/session.js +++ b/web/app/assets/javascripts/session.js @@ -1309,7 +1309,8 @@ evt.preventDefault(); promptLeave = false; - context.window.location = '/client#/home'; + app.layout.showDialog('leavingSession'); + //context.window.location = '/client#/home'; return false; } diff --git a/web/app/assets/stylesheets/client/session.css.scss b/web/app/assets/stylesheets/client/session.css.scss index cd389c60f..387352b0d 100644 --- a/web/app/assets/stylesheets/client/session.css.scss +++ b/web/app/assets/stylesheets/client/session.css.scss @@ -727,4 +727,26 @@ table.vu td { #update-session-invite-musicians { margin: 10px; -} \ No newline at end of file +} + +.rate-thumbsup { + width:64px; + height:64px; + display:inline-block; + background-image:url('/assets/content/icon_thumbsup_big_off.png'); +} + +.rate-thumbsup.selected { + background-image:url('/assets/content/icon_thumbsup_big_on.png'); +} + +.rate-thumbsdown { + width:64px; + height:64px; + display:inline-block; + background-image:url('/assets/content/icon_thumbsdown_big_off.png'); +} + +.rate-thumbsdown.selected { + background-image:url('/assets/content/icon_thumbsdown_big_on.png'); +} diff --git a/web/app/controllers/api_music_sessions_controller.rb b/web/app/controllers/api_music_sessions_controller.rb index a7d96b3d1..cb2e266ba 100644 --- a/web/app/controllers/api_music_sessions_controller.rb +++ b/web/app/controllers/api_music_sessions_controller.rb @@ -151,8 +151,8 @@ class ApiMusicSessionsController < ApiController end def participant_rating - @history = MusicSessionUserHistory.find(params[:id]) - @history.rating = params[:rating] + if @history = MusicSessionUserHistory.find(params[:id]) + @history.add_rating(params[:rating]) @history.save if @history.errors.any? @@ -161,6 +161,9 @@ class ApiMusicSessionsController < ApiController else render :json => {}, :status => :ok end + else + render :json => { :message => ValidationMessages::SESSION_NOT_FOUND }, :status => 404 + end end def track_index diff --git a/web/app/views/clients/_rateSession.html.erb b/web/app/views/clients/_rateSession.html.erb new file mode 100644 index 000000000..adc56146d --- /dev/null +++ b/web/app/views/clients/_rateSession.html.erb @@ -0,0 +1,18 @@ +
+
+ +
+

please rate your session

+
+
+
+       +

+ +

+ SEND FEEDBACK   NOT NOW, THANKS +
+
+ +
+
diff --git a/web/spec/requests/music_sessions_api_spec.rb b/web/spec/requests/music_sessions_api_spec.rb index bc453960d..d0b25948b 100755 --- a/web/spec/requests/music_sessions_api_spec.rb +++ b/web/spec/requests/music_sessions_api_spec.rb @@ -659,7 +659,7 @@ describe "Music Session API ", :type => :api do post "/api/participant_histories/#{msuh.id}/rating.json", { :rating => 0 }.to_json, "CONTENT_TYPE" => "application/json" last_response.status.should == 200 msuh.reload - msuh.rating.should == 0 + msuh.rating.to_i.should == 0 end it "track sync" do