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

115 lines
2.9 KiB
JavaScript

(function (context, $) {
/** Javascript for managing the (account dropdown) */
"use strict";
context.JK = context.JK || {};
context.JK.UserDropdown = function (app) {
var EVENTS = context.JK.EVENTS;
var logger = context.JK.logger;
var rest = new JK.Rest();
var userMe = null;
var invitationDialog = null;
var nowYetShownGettingStarted = true;
function menuHoverIn() {
$('ul.shortcuts', this).show();
}
function menuHoverOut() {
$('ul.shortcuts', this).hide();
}
function events() {
$('.userinfo').hoverIntent({
over: function () {
$('ul.shortcuts', this).fadeIn(100);
},
out: function () {
$('ul.shortcuts', this).fadeOut(100);
},
timeout: 500
});
$('.userinfo .invite-friends .menuheader').on('click', function (e) {
$(this).closest('li').css('height', 'auto').find('ul').toggle();
e.stopPropagation();
return false;
});
$('.invite-friends .google-invite a').on('click', function (e) {
invitationDialog.showGoogleDialog();
});
$('.invite-friends .email-invite a').on('click', function (e) {
invitationDialog.showEmailDialog();
});
$('.invite-friends .facebook-invite a').on('click', function (e) {
invitationDialog.showFacebookDialog(e);
});
$('.shortcuts .test-network').on('click', function(e) {
app.layout.showDialog('network-test');
return false;
});
$('#header-avatar').on('avatar_changed', function (event, newAvatarUrl) {
updateAvatar(newAvatarUrl);
event.preventDefault();
return false;
});
$(document).on(EVENTS.USER_UPDATED, function(e, data) {
userMe = data;
updateHeader();
})
}
function loadMe() {
if (!context.JK.currentUserId) {
return;
}
app.user()
.done(function(r) {
userMe = r;
// TODO - Setting global variable for local user.
context.JK.userMe = r;
updateHeader();
});
}
function updateHeader() {
$('#user').html(userMe.name);
showAvatar();
}
// initially show avatar
function showAvatar() {
var photoUrl = context.JK.resolveAvatarUrl(userMe.photo_url);
$('#header-avatar').attr('src', photoUrl);
}
// handle update avatar event
function updateAvatar(avatar_url) {
var photoUrl = context.JK.resolveAvatarUrl(avatar_url);
var avatar = $(new Image());
avatar.attr('src', photoUrl + '?cache_bust=' + new Date().getTime());
avatar.attr('alt', "Avatar");
avatar.attr('id', 'header-avatar');
$('#header-avatar').replaceWith(avatar);
}
this.initialize = function (invitationDialogInstance) {
events();
invitationDialog = invitationDialogInstance;
loadMe();
}
this.loadMe = loadMe;
}
})(window, jQuery);