diff --git a/web/app/assets/javascripts/helpBubbleHelper.js b/web/app/assets/javascripts/helpBubbleHelper.js index 47d2c4efb..eb68a4a6c 100644 --- a/web/app/assets/javascripts/helpBubbleHelper.js +++ b/web/app/assets/javascripts/helpBubbleHelper.js @@ -10,6 +10,7 @@ var rest = new context.JK.Rest(); context.JK.HelpBubbleHelper = helpBubble; var logger = context.JK.logger; + var jamTrackGuideTimeout = null; var defaultScoreBreakDownOptions = {positions: ['right', 'top', 'bottom', 'left'], width:'600px', closeWhenOthersOpen: true }; helpBubble.scoreBreakdown = function($element, isCurrentUser, full_score, myAudioLatency, otherAudioLatency, internetScore, options) { @@ -40,11 +41,19 @@ color:'#ed3618'}} } + function clearJamTrackGuideTimeout() { + if(jamTrackGuideTimeout) { + clearTimeout(jamTrackGuideTimeout); + jamTrackGuideTimeout = null; + } + } + function jamTrackGuide(callback) { if(gon.isNativeClient) { context.JK.app.user().done(function(user) { if(user.show_jamtrack_guide) { - setTimeout(function() { + clearJamTrackGuideTimeout(); + jamTrackGuideTimeout = setTimeout(function() { callback() }, 1000) @@ -53,6 +62,8 @@ } } + helpBubble.clearJamTrackGuide = clearJamTrackGuideTimeout; + helpBubble.jamtrackGuideTile = function ($element, $offsetParent) { jamTrackGuide(function() { context.JK.prodBubble($element, 'jamtrack-guide-tile', {}, bigHelpOptions({positions:['top'], offsetParent: $offsetParent})) diff --git a/web/app/assets/javascripts/homeScreen.js b/web/app/assets/javascripts/homeScreen.js index aeb191fb4..a96075b47 100644 --- a/web/app/assets/javascripts/homeScreen.js +++ b/web/app/assets/javascripts/homeScreen.js @@ -12,9 +12,11 @@ } function afterShow(data) { + context.JK.HelpBubbleHelper.jamtrackGuideTile($('.homecard.createsession'), $screen.find('.createsession')); + } - context.JK.HelpBubbleHelper.jamtrackGuideTile($('.homecard.createsession'), $screen); - + function beforeHide() { + context.JK.HelpBubbleHelper.clearJamTrackGuide(); } function mouseenterTile() { @@ -90,7 +92,7 @@ } this.initialize = function() { - var screenBindings = { 'beforeShow': beforeShow, 'afterShow': afterShow }; + var screenBindings = { 'beforeShow': beforeShow, 'afterShow': afterShow, 'beforeHide' : beforeHide }; app.bindScreen('home', screenBindings); events(); $screen = $('.screen[layout-id="home"]') diff --git a/web/app/assets/javascripts/scheduled_session.js.erb b/web/app/assets/javascripts/scheduled_session.js.erb index 3cdc9f84b..f2c07b7bc 100644 --- a/web/app/assets/javascripts/scheduled_session.js.erb +++ b/web/app/assets/javascripts/scheduled_session.js.erb @@ -999,7 +999,11 @@ } function afterShow() { - context.JK.HelpBubbleHelper.jamtrackGuidePrivate($screen.find('li[create-type="quick-start"] label'), $screen) + context.JK.HelpBubbleHelper.jamtrackGuidePrivate($screen.find('li[create-type="quick-start"] label'), $screen.find('.content-body-scroller')) + } + + function beforeHide() { + context.JK.HelpBubbleHelper.clearJamTrackGuide(); } function toggleDate(dontRebuildDropdowns) { @@ -1306,7 +1310,7 @@ instrumentSelector = instrumentSelectorInstance; instrumentRSVP = instrumentRSVPSelectorInstance; - var screenBindings = {'beforeShow': beforeShow, 'afterShow': afterShow}; + var screenBindings = {'beforeShow': beforeShow, 'afterShow': afterShow, 'beforeHide' : beforeHide}; app.bindScreen('createSession', screenBindings); $wizardSteps = $screen.find('.create-session-wizard'); diff --git a/web/app/assets/javascripts/session.js b/web/app/assets/javascripts/session.js index 49e5a1cb1..8ce8422e6 100644 --- a/web/app/assets/javascripts/session.js +++ b/web/app/assets/javascripts/session.js @@ -506,6 +506,9 @@ } function beforeHide(data) { + + context.JK.HelpBubbleHelper.clearJamTrackGuide(); + if(gon.global.video_available && gon.global.video_available!="none") { webcamViewer.setVideoOff() }