diff --git a/db/manifest b/db/manifest index 7f3451da3..5c93932dc 100755 --- a/db/manifest +++ b/db/manifest @@ -277,4 +277,5 @@ sales.sql show_whats_next_count.sql recurly_adjustments.sql signup_hints.sql -packaging_notices.sql \ No newline at end of file +packaging_notices.sql +first_played_jamtrack_at.sql \ No newline at end of file diff --git a/db/up/first_played_jamtrack_at.sql b/db/up/first_played_jamtrack_at.sql new file mode 100644 index 000000000..aeddf7757 --- /dev/null +++ b/db/up/first_played_jamtrack_at.sql @@ -0,0 +1 @@ +ALTER TABLE users ADD COLUMN first_played_jamtrack_at TIMESTAMP; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/track.rb b/ruby/lib/jam_ruby/models/track.rb index e430edb2d..1a8db2047 100644 --- a/ruby/lib/jam_ruby/models/track.rb +++ b/ruby/lib/jam_ruby/models/track.rb @@ -113,6 +113,7 @@ module JamRuby result = {} backing_tracks = [] unless backing_tracks + tracks = [] unless tracks Track.transaction do connection = Connection.find_by_client_id!(clientId) diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index be020d4b3..084be7323 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -204,7 +204,7 @@ module JamRuby scope :email_opt_in, where(:subscribe_email => true) def user_progression_fields - @user_progression_fields ||= Set.new ["first_downloaded_client_at", "first_ran_client_at", "first_music_session_at", "first_real_music_session_at", "first_good_music_session_at", "first_certified_gear_at", "first_invited_at", "first_friended_at", "first_recording_at", "first_social_promoted_at" ] + @user_progression_fields ||= Set.new ["first_downloaded_client_at", "first_ran_client_at", "first_music_session_at", "first_real_music_session_at", "first_good_music_session_at", "first_certified_gear_at", "first_invited_at", "first_friended_at", "first_recording_at", "first_social_promoted_at", "first_played_jamtrack_at" ] end def update_progression_field(field_name, time = DateTime.now) diff --git a/web/app/assets/javascripts/everywhere/everywhere.js b/web/app/assets/javascripts/everywhere/everywhere.js index c5e6e742a..741f70b3b 100644 --- a/web/app/assets/javascripts/everywhere/everywhere.js +++ b/web/app/assets/javascripts/everywhere/everywhere.js @@ -207,7 +207,7 @@ var user = app.user() if(user) { user.done(function(userProfile) { - if (userProfile.show_whats_next && userProfile.show_whats_next_count < 10 && + if (!userProfile.show_jamtrack_guide && userProfile.show_whats_next && userProfile.show_whats_next_count < 10 && window.location.pathname.indexOf(gon.client_path) == 0 && window.location.hash.indexOf('/checkout') == -1 && !app.layout.isDialogShowing('getting-started')) diff --git a/web/app/assets/javascripts/helpBubbleHelper.js b/web/app/assets/javascripts/helpBubbleHelper.js index 9c9a05bd5..a43800e0e 100644 --- a/web/app/assets/javascripts/helpBubbleHelper.js +++ b/web/app/assets/javascripts/helpBubbleHelper.js @@ -26,4 +26,49 @@ } } + function bigHelpOptions(options) { + return {positions: options.positions, offsetParent: options.offsetParent, + spikeGirth: 15, + spikeLength: 20, + fill: 'white', + cornerRadius:4, + strokeWidth: 2, + cssStyles: { + fontWeight:'bold', + fontSize: '20px', + backgroundColor:'transparent', + color:'#ed3618'}} + } + + function jamTrackGuide(callback) { + if(gon.isNativeClient) { + context.JK.app.user().done(function(user) { + if(user.show_jamtrack_guide) { + setTimeout(function() { + callback() + }, 1000) + + } + }) + } + } + + helpBubble.jamtrackGuideTile = function ($element, $offsetParent) { + jamTrackGuide(function() { + context.JK.prodBubble($element, 'jamtrack-guide-tile', {}, bigHelpOptions({positions:['top'], offsetParent: $offsetParent})) + }) + } + + helpBubble.jamtrackGuidePrivate = function ($element, $offsetParent) { + jamTrackGuide(function() { + context.JK.prodBubble($element, 'jamtrack-guide-private', {}, bigHelpOptions({positions:['right'], offsetParent: $offsetParent})) + }) + } + + helpBubble.jamtrackGuideSession = function ($element, $offsetParent) { + jamTrackGuide(function() { + context.JK.prodBubble($element, 'jamtrack-guide-session', {}, bigHelpOptions({positions:['left'], offsetParent: $offsetParent})) + }) + } + })(window, jQuery); \ No newline at end of file diff --git a/web/app/assets/javascripts/homeScreen.js b/web/app/assets/javascripts/homeScreen.js index ec7b86d50..aeb191fb4 100644 --- a/web/app/assets/javascripts/homeScreen.js +++ b/web/app/assets/javascripts/homeScreen.js @@ -11,6 +11,12 @@ function beforeShow(data) { } + function afterShow(data) { + + context.JK.HelpBubbleHelper.jamtrackGuideTile($('.homecard.createsession'), $screen); + + } + function mouseenterTile() { $(this).addClass('hover'); } @@ -84,7 +90,7 @@ } this.initialize = function() { - var screenBindings = { 'beforeShow': beforeShow }; + var screenBindings = { 'beforeShow': beforeShow, 'afterShow': afterShow }; app.bindScreen('home', screenBindings); events(); $screen = $('.screen[layout-id="home"]') diff --git a/web/app/assets/javascripts/jam_track_screen.js.coffee b/web/app/assets/javascripts/jam_track_screen.js.coffee index 9ab9bf2fb..4009743fb 100644 --- a/web/app/assets/javascripts/jam_track_screen.js.coffee +++ b/web/app/assets/javascripts/jam_track_screen.js.coffee @@ -117,7 +117,7 @@ context.JK.JamTrackScreen=class JamTrackScreen # if we less results than asked for, end searching @scroller.infinitescroll 'pause' if @currentPage == 0 and response.jamtracks.length == 0 - @content.append '