Merge branch 'master' of bitbucket.org:jamkazam/jam-web

This commit is contained in:
Brian Smith 2013-06-01 20:19:25 -04:00
commit ee2f891619
7 changed files with 105 additions and 21 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -71,13 +71,21 @@
}
self.updatingAvatar = true;
renderAvatarSpinner();
rest.deleteAvatar()
.done(deleteAvatarSuccess)
.done(function() {
removeAvatarSpinner({ delete:true });
deleteAvatarSuccess(arguments);
})
.fail(function() {
app.ajaxError(arguments);
$.cookie('original_fpfile', null);
self.updatingAvatar = false;
})
.always(function() {
})
}
function deleteAvatarSuccess(response) {
@ -96,26 +104,30 @@
}
function handleFilePick() {
rest.getFilepickerPolicy()
.done(function(filepickerPolicy) {
renderAvatarSpinner();
filepicker.setKey(gon.fp_apikey);
filepicker.pickAndStore({
mimetype: 'image/*',
maxSize: 10000*1024,
policy: filepickerPolicy.policy,
signature: filepickerPolicy.signature
}, { path: createStorePath(self.userDetail), access: 'public' },
function(fpfiles) {
afterImageUpload(fpfiles[0]);
}, function(fperror) {
if(fperror.code != 101) { // 101 just means the user closed the dialog
alert("unable to upload file: " + JSON.stringify(fperror))
}
})
mimetype: 'image/*',
maxSize: 10000*1024,
policy: filepickerPolicy.policy,
signature: filepickerPolicy.signature
}, { path: createStorePath(self.userDetail), access: 'public' },
function(fpfiles) {
removeAvatarSpinner();
afterImageUpload(fpfiles[0]);
}, function(fperror) {
removeAvatarSpinner();
if(fperror.code != 101) { // 101 just means the user closed the dialog
alert("unable to upload file: " + JSON.stringify(fperror))
}
})
})
.fail(app.ajaxError);
}
function renderAvatarScreen() {
@ -129,11 +141,50 @@
window.location = '#/account/profile'
}
function renderAvatarSpinner() {
var avatarSpace = $('#account-profile-avatar-content-scroller .account-profile-avatar .avatar-space');
// if there is already an image tag, we only obscure it.
var avatar = $('img.preview_profile_avatar', avatarSpace);
var spinner = $('<div class="spinner spinner-large"></div>')
if(avatar.length == 0) {
avatarSpace.prepend(spinner);
}
else {
// in this case, just style the spinner to obscure using opacity, and center it
var jcropHolder = $('.jcrop-holder', avatarSpace);
spinner.width(jcropHolder.width());
spinner.height(jcropHolder.height());
spinner.addClass('op50');
var jcrop = avatar.data('Jcrop');
if(jcrop) {
jcrop.disable();
}
avatarSpace.append(spinner);
}
}
function removeAvatarSpinner(options) {
var avatarSpace = $('#account-profile-avatar-content-scroller .account-profile-avatar .avatar-space');
if(options && options.delete) {
avatarSpace.children().remove();
}
var spinner = $('.spinner-large', avatarSpace);
spinner.remove();
var avatar = $('img.preview_profile_avatar', avatarSpace);
var jcrop = avatar.data('Jcrop')
if(jcrop) {
jcrop.enable();
}
}
function renderAvatar(fpfile, storedSelection) {
// clear out
var avatarSpace = $('#account-profile-avatar-content-scroller .account-profile-avatar .avatar-space');
avatarSpace.children().remove();
if(!fpfile) {
renderNoAvatar(avatarSpace);
@ -142,10 +193,15 @@
rest.getFilepickerPolicy({handle: fpfile.url})
.done(function(filepickerPolicy) {
avatarSpace.children().remove();
renderAvatarSpinner();
var photo_url = fpfile.url + '?signature=' + filepickerPolicy.signature + '&policy=' + filepickerPolicy.policy;
avatar = new Image();
$(avatar)
.load(function(e) {
removeAvatarSpinner();
avatar = $(this);
avatarSpace.append(avatar);
var width = avatar.naturalWidth();
@ -209,6 +265,9 @@
function renderNoAvatar(avatarSpace) {
// no avatar found for account
removeAvatarSpinner();
var noAvatarSpace = $('<div></div>');
noAvatarSpace.addClass('no-avatar-space');
noAvatarSpace.text('Please upload a photo');
@ -225,6 +284,7 @@
if(selection) {
var currentSelection = selection;
self.updatingAvatar = true;
renderAvatarSpinner();
console.log("Converting...");
@ -266,10 +326,11 @@
})
.done(updateAvatarSuccess)
.fail(app.ajaxError)
.always(function() { self.updatingAvatar = false;})
.always(function() { removeAvatarSpinner(); self.updatingAvatar = false;})
},
function(fperror) {
alert("unable to scale selection. error code: " + fperror.code);
removeAvatarSpinner();
self.updatingAvatar = false;
})
})
@ -277,6 +338,7 @@
},
function(fperror) {
alert("unable to crop selection. error code: " + fperror.code);
removeAvatarSpinner();
self.updatingAvatar = false;
}
);
@ -291,7 +353,8 @@
self.userDetail = response;
// notify any listeners that the avatar changed
$('.avatar_large img').trigger('avatar_changed', [self.userDetail.photo_url]);
JK.Header.loadMe();
// $('.avatar_large img').trigger('avatar_changed', [self.userDetail.photo_url]);
app.notify(
{ title: "Avatar Changed",

View File

@ -40,7 +40,7 @@
};
context.JK.resolveAvatarUrl = function(photo_url) {
return photo_url ? photo_url : "/assets/shared/avatar_default.jpg";
return photo_url ? photo_url : "/assets/shared/avatar_generic.png";
};
context.JK.getInstrumentIconMap24 = function() {

View File

@ -81,11 +81,24 @@
.avatar-space {
color: $color2;
margin-bottom: 20px;
position:relative;
min-height:300px;
img.preview_profile_avatar {
}
}
.spinner-large {
width:300px;
height:300px;
line-height: 300px;
position:absolute;
top:0;
left:0;
z-index: 2000; // to win over jcrop
}
.no-avatar-space {
border:1px dotted $color2;
@ -98,10 +111,7 @@
background-color:$ColorTextBoxBackground;
}
}
}

View File

@ -425,3 +425,11 @@ input[type="text"], input[type="password"]{
/* Following is a style adjustment for the sign-in table spacing */
#sign-in td { padding: 4px; }
.spinner-large {
background-image: url('/assets/shared/spinner.gif');
background-repeat:no-repeat;
background-position:center;
width:128px;
height:128px;
}

View File

@ -76,6 +76,9 @@ SampleApp::Application.configure do
# run websocket-gateway embedded
config.websocket_gateway_enable = false
config.aws_bucket = 'jamkazam'
config.aws_bucket_public = 'jamkazam-public'
# filepicker app configured to use S3 bucket jamkazam
config.filepicker_rails.api_key = "AhUoVoBZSLirP3esyCl7Zz"
config.fp_secret = 'HZBIMSOI5VAQ5LXT4XLG6XA7IE'