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

131 lines
3.2 KiB
JavaScript

(function(context,$) {
"use strict";
context.JK = context.JK || {};
context.JK.CheckoutSignInScreen = function(app) {
var logger = context.JK.logger;
var $screen = null;
var $navigation = null;
var $signinForm = null;
var $self = $(this);
var $email = null;
var $password = null;
var $signinBtn = null;
var $signupBtn = null;
var $inputElements = null;
var $contentHolder = null;
var $btnNext = null;
function beforeShow(data) {
renderNavigation();
renderLoggedInState();
}
function afterShow(data) {
}
function renderLoggedInState(){
if(isLoggedIn()) {
$contentHolder.removeClass('not-signed-in').addClass('signed-in')
}
else {
$contentHolder.removeClass('signed-in').addClass('not-signed-in')
}
}
function isLoggedIn() {
return !!context.JK.currentUserId;
}
function events() {
$signinForm.on('submit', login);
$signinBtn.on('click', login);
$btnNext.on('click', moveNext);
}
function reset() {
$inputElements.removeClass('login-error');
}
function moveNext() {
window.location = '/client#/checkoutPayment';
return false;
}
function login() {
if($signinBtn.is('.disabled')) {
return false;
}
var email = $email.val();
var password = $password.val();
reset();
$signinBtn.text('TRYING...').addClass('disabled')
rest.login({email: email, password: password, remember_me: true})
.done(function() {
window.location = '/client#/checkoutPayment'
window.location.reload();
})
.fail(function(jqXHR) {
if(jqXHR.status == 422) {
$inputElements.addClass('login-error')
}
else {
app.notifyServerError(jqXHR, "Unable to log in")
}
})
.always(function() {
$signinBtn.text('SIGN IN').removeClass('disabled')
})
return false;
}
function renderNavigation() {
$navigation.html("");
var navigationHtml = $(
context._.template(
$('#template-checkout-navigation').html(),
{current: 1},
{variable: 'data'}
)
);
$navigation.append(navigationHtml);
}
function initialize() {
var screenBindings = {
'beforeShow': beforeShow,
'afterShow': afterShow
};
app.bindScreen('checkoutSignin', screenBindings);
$screen = $("#checkoutSignInScreen");
$navigation = $screen.find(".checkout-navigation-bar");
$signinForm = $screen.find(".signin-form");
$signinBtn = $signinForm.find('.signin-submit');
$email = $signinForm.find('input[name="email"]');
$password = $signinForm.find('input[name="password"]');
$inputElements = $signinForm.find('.input-elements');
$contentHolder = $screen.find('.content-holder');
$btnNext = $screen.find('.btnNext');
if($screen.length == 0) throw "$screen must be specified";
if($navigation.length == 0) throw "$navigation must be specified";
events();
}
this.initialize = initialize;
return this;
}
})(window,jQuery);