From 968dff2829635eb935fefebdd6e4308f84913674 Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Wed, 30 Apr 2014 16:44:37 +0000 Subject: [PATCH] VRFS-1577 VRFS-736 --- .../assets/javascripts/rateSessionDialog.js | 69 +++++++++++++++++++ web/app/assets/javascripts/session.js | 20 ++++-- .../api_music_sessions_controller.rb | 2 +- web/app/views/clients/_rateSession.html.erb | 8 +-- web/app/views/clients/index.html.erb | 1 + web/config/routes.rb | 2 +- 6 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 web/app/assets/javascripts/rateSessionDialog.js diff --git a/web/app/assets/javascripts/rateSessionDialog.js b/web/app/assets/javascripts/rateSessionDialog.js new file mode 100644 index 000000000..00d11d126 --- /dev/null +++ b/web/app/assets/javascripts/rateSessionDialog.js @@ -0,0 +1,69 @@ +(function(context,$) { + + "use strict"; + + context.JK = context.JK || {}; + context.JK.RateSessionDialog = function(app, finishedCallback) { + var logger = context.JK.logger; + var dialogId = 'rate-session-dialog'; + var $scopeSelector = "[layout-id='rate-session-dialog']"; + + function showDialog() { + app.layout.showDialog(dialogId); + return true; // false if should not show dialog + } + + function closeDialog() { + app.layout.closeDialog(dialogId); + if (finishedCallback) { + setTimeout(finishedCallback, 100); + } + } + + function events() { + $('#btn-rate-session-cancel', $scopeSelector).click(function(evt) { + closeDialog(); + }); + $('#btn-rate-session-up', $scopeSelector).click(function(evt) { + $(this).hasClass('selected') ? $(this).removeClass('selected') : $(this).addClass('selected'); + if ($('#btn-rate-session-down').hasClass('selected')) { + $('#btn-rate-session-down').removeClass('selected') + } + }); + $('#btn-rate-session-down', $scopeSelector).click(function(evt) { + $(this).hasClass('selected') ? $(this).removeClass('selected') : $(this).addClass('selected'); + if ($('#btn-rate-session-up').hasClass('selected')) { + $('#btn-rate-session-up').removeClass('selected') + } + }); + $('#btn-rate-session-send', $scopeSelector).click(function(evt) { + var url = "/api/participant_histories/"+context.JK.JamServer.clientID+"/rating"; + $.ajax({ + type: "POST", + url: url + }).done(function (response) { + closeDialog(); + }); + }); + } + + function beforeShow(data) { + // confirm user should see dialog + } + + function afterShow(data) { + } + + function initialize() { + var dialogBindings = { + 'beforeShow' : beforeShow, + 'afterShow' : afterShow + }; + app.bindDialog(dialogId, dialogBindings); + events(); + } + + this.initialize = initialize; + this.showDialog = showDialog; + }; +})(window,jQuery); diff --git a/web/app/assets/javascripts/session.js b/web/app/assets/javascripts/session.js index 9b9b3b01d..2819b780a 100644 --- a/web/app/assets/javascripts/session.js +++ b/web/app/assets/javascripts/session.js @@ -1307,14 +1307,24 @@ function sessionLeave(evt) { evt.preventDefault(); - - promptLeave = false; - app.layout.showDialog('leavingSession'); - //context.window.location = '/client#/home'; - + rateSession(); return false; } + function bailOut() { + promptLeave = false; + context.window.location = '/client#/home'; + } + + function rateSession() { + var dialog = new context.JK.RateSessionDialog(context.JK.app, bailOut); + dialog.initialize(); + if (dialog.showDialog() === false) { + bailOut(); + } + return true; + } + function sessionResync(evt) { evt.preventDefault(); var response = context.jamClient.SessionAudioResync(); diff --git a/web/app/controllers/api_music_sessions_controller.rb b/web/app/controllers/api_music_sessions_controller.rb index cb2e266ba..aec1719d3 100644 --- a/web/app/controllers/api_music_sessions_controller.rb +++ b/web/app/controllers/api_music_sessions_controller.rb @@ -151,7 +151,7 @@ class ApiMusicSessionsController < ApiController end def participant_rating - if @history = MusicSessionUserHistory.find(params[:id]) + if @history = MusicSessionUserHistory.find_by_client_id(params[:client_id]) @history.add_rating(params[:rating]) @history.save diff --git a/web/app/views/clients/_rateSession.html.erb b/web/app/views/clients/_rateSession.html.erb index adc56146d..5bb43602e 100644 --- a/web/app/views/clients/_rateSession.html.erb +++ b/web/app/views/clients/_rateSession.html.erb @@ -1,16 +1,16 @@ -
+
-

please rate your session

+

please rate your session

-       +      



- SEND FEEDBACK   NOT NOW, THANKS + SEND FEEDBACK   NOT NOW, THANKS
diff --git a/web/app/views/clients/index.html.erb b/web/app/views/clients/index.html.erb index dd8d91baa..b2865f935 100644 --- a/web/app/views/clients/index.html.erb +++ b/web/app/views/clients/index.html.erb @@ -21,6 +21,7 @@ <%= render "clients/gear/gear_wizard" %> <%= render "terms" %> <%= render "leaveSessionWarning" %> +<%= render "rateSession" %> <%= render "alert" %> <%= render "sidebar" %> <%= render "createSession" %> diff --git a/web/config/routes.rb b/web/config/routes.rb index 6c6fd2a42..aa10f42ff 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -167,7 +167,7 @@ SampleApp::Application.routes.draw do match '/sessions/:id/claimed_recording/:claimed_recording_id/start' => 'api_music_sessions#claimed_recording_start', :via => :post match '/sessions/:id/claimed_recording/:claimed_recording_id/stop' => 'api_music_sessions#claimed_recording_stop', :via => :post - match '/participant_histories/:id/rating' => 'api_music_sessions#participant_rating', :via => :post + match '/participant_histories/:client_id/rating' => 'api_music_sessions#participant_rating', :via => :post # genres match '/genres' => 'api_genres#index', :via => :get