(function(context,$) { "use strict"; context.JK = context.JK || {}; context.JK.SessionHoverBubble = function(sessionId, x, y) { var logger = context.JK.logger; var rest = context.JK.Rest(); var hoverSelector = "#session-hover"; this.showBubble = function() { var mouseLeft = x < (document.body.clientWidth / 2); var mouseTop = y < (document.body.clientHeight / 2); var css = {}; if (mouseLeft) css.left = x + 20 + 'px'; else css.left = x - (25 + $(hoverSelector).width()) + 'px'; if (mouseTop) css.top = y + 10 + 'px'; else css.top = y - (7 + $(hoverSelector).height()) + 'px'; $(hoverSelector).css(css); $(hoverSelector).fadeIn(500); rest.getSessionHistory(sessionId) .done(function(response) { $(hoverSelector).html(''); // musicians var musicianHtml = ''; $.each(response.users, function(index, val) { var instrumentHtml = ''; musicianHtml += ''; musicianHtml += '' + val.user.name + ''; instrumentHtml = '
'; var instruments = val.instruments.split("|"); $.each(instruments, function(index, instrument) { instrumentHtml += ' '; }); instrumentHtml += '
'; musicianHtml += instrumentHtml; musicianHtml += ''; }); var template = $('#template-hover-session').html(); var sessionPageUrl = "/sessions/" + response.id; var sessionPageLinkText = "WEB PAGE"; // if session hasn't begun, it must be a scheduled session so link to SESSION INFO page if (!response.active_music_session && !response.session_removed_at) { sessionPageUrl += "/details"; sessionPageLinkText = "SESSION DETAILS"; } var sessionHtml = context.JK.fillTemplate(template, { musicSessionId: response.id, name: response.name, description: response.description, genre: response.genre_id.toUpperCase(), comment_count: response.comment_count, like_count: response.like_count, created_at: $.timeago(response.created_at), musicians: musicianHtml, url: sessionPageUrl, externalLinkText: sessionPageLinkText, start_time: response.scheduled_start, recurrence: response.recurring_mode === 'weekly' ? 'Recurs weekly on this day at this time' : '' }); $(hoverSelector).append('

Session Detail

' + sessionHtml); toggleActionButtons(); }) .fail(function(xhr) { if(xhr.status >= 500) { context.JK.fetchUserNetworkOrServerFailure(); } else if(xhr.status == 404) { context.JK.entityNotFound("Session"); } else { context.JK.app.ajaxError(arguments); } }); }; function toggleActionButtons() { if (!context.JK.currentUserId) { $("#btnLike", hoverSelector).hide(); $("#btnShare", hoverSelector).hide(); } } this.hideBubble = function() { $(hoverSelector).hide(); }; this.id = function() { return hoverSelector; }; } })(window,jQuery);