jam-cloud/web/app/assets/javascripts/helpBubbleHelper.js

134 lines
5.0 KiB
JavaScript

/**
* HelpBubble helper functions, for help bubbles with lots of arguments or logic
*/
(function (context, $) {
"use strict";
context.JK = context.JK || {};
var helpBubble = {};
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) {
options = options || {};
options = $.extend({}, defaultScoreBreakDownOptions, options)
if(isCurrentUser) {
context.JK.helpBubble($element, 'musician-score-self',
{full_score: full_score ? Math.round(full_score / 2) : null, my_gear_latency: myAudioLatency, their_gear_latency: otherAudioLatency, internet_latency: internetScore},
options);
} else {
context.JK.helpBubble($element, 'musician-score-count',
{full_score: full_score ? Math.round(full_score / 2) : null, my_gear_latency: myAudioLatency, their_gear_latency: otherAudioLatency, internet_latency: internetScore},
options);
}
}
function bigHelpOptions(options) {
return {positions: options.positions, offsetParent: options.offsetParent,
width:options.width,
spikeGirth: 15,
spikeLength: 20,
fill: 'white',
cornerRadius:8,
strokeWidth: 2,
cssStyles: {
fontWeight:'bold',
fontSize: '20px',
backgroundColor:'transparent',
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) {
clearJamTrackGuideTimeout();
jamTrackGuideTimeout = setTimeout(function() {
callback()
}, 1000)
}
})
}
}
helpBubble.rotateJamTrackLandingBubbles = function($preview, $video, $ctaButton, $alternativeCta) {
$(window).on('load', function() {
setTimeout(function() {
helpBubble.jamtrackLandingPreview($preview, $preview.offsetParent())
setTimeout(function() {
helpBubble.jamtrackLandingVideo($video, $video.closest('.row'))
setTimeout(function() {
helpBubble.jamtrackLandingCta($ctaButton, $alternativeCta)
}, 11000); // 5 seconds on top of 6 second show time of bubbles
}, 11000); // 5 seconds on top of 6 second show time of bubbles
}, 1500)
})
}
helpBubble.clearJamTrackGuide = clearJamTrackGuideTimeout;
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}))
})
}
helpBubble.jamtrackLandingPreview = function($element, $offsetParent) {
console.log("SHOWING THE PREVIEW BUBBLE")
context.JK.prodBubble($element, 'jamtrack-landing-preview', {}, bigHelpOptions({positions:['right', 'top'], offsetParent: $offsetParent, width:250}))
}
helpBubble.jamtrackLandingVideo = function($element, $offsetParent) {
context.JK.prodBubble($element, 'jamtrack-landing-video', {}, bigHelpOptions({positions:['top', 'right'], offsetParent: $offsetParent}))
}
helpBubble.jamtrackLandingCta = function($element, $alternativeElement) {
if (!$alternativeElement || $element.visible()) {
context.JK.prodBubble($element, 'jamtrack-landing-cta', {}, bigHelpOptions({positions:['top', 'right'], width:240}))
}
else if($alternativeElement) {
context.JK.prodBubble($alternativeElement, 'jamtrack-landing-cta', {}, bigHelpOptions({positions:['right']}))
}
}
helpBubble.jamtrackBrowseBand = function($element, $offsetParent) {
return context.JK.prodBubble($element, 'jamtrack-browse-band', {}, bigHelpOptions({positions:['top'], offsetParent: $offsetParent}))
}
helpBubble.jamtrackBrowseMasterMix = function($element, $offsetParent) {
return context.JK.prodBubble($element, 'jamtrack-browse-master-mix', {}, bigHelpOptions({positions:['top'], offsetParent: $offsetParent}))
}
helpBubble.jamtrackBrowseCta = function($element, $offsetParent) {
return context.JK.prodBubble($element, 'jamtrack-browse-cta', {}, bigHelpOptions({positions:['top'], offsetParent: $offsetParent}))
}
})(window, jQuery);