127 lines
2.8 KiB
JavaScript
127 lines
2.8 KiB
JavaScript
(function(context,$) {
|
|
|
|
"use strict";
|
|
context.JK = context.JK || {};
|
|
context.JK.ShoppingCartScreen = function(app) {
|
|
|
|
var logger = context.JK.logger;
|
|
var jamTrackUtils = context.JK.JamTrackUtils;
|
|
|
|
var $screen = null;
|
|
var $content = null;
|
|
|
|
function beforeShow(data) {
|
|
loadShoppingCarts();
|
|
}
|
|
|
|
function afterShow(data) {
|
|
}
|
|
|
|
function afterHide() {
|
|
jamTrackUtils.checkShoppingCart();
|
|
}
|
|
|
|
function events() {
|
|
$screen.find("a.remove-cart").on('click', removeCart);
|
|
$screen.find("a.proceed-checkout").on('click', proceedCheckout);
|
|
}
|
|
|
|
function proceedCheckout(e) {
|
|
e.preventDefault();
|
|
|
|
if (!context.JK.currentUserId) {
|
|
window.location = '/client#/checkoutSignin';
|
|
}
|
|
else {
|
|
app.user().done(function(user) {
|
|
if(user.reuse_card) {
|
|
window.location = '/client#/checkoutOrder';
|
|
}
|
|
else {
|
|
window.location = '/client#/checkoutPayment';
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
function removeCart(e) {
|
|
e.preventDefault();
|
|
|
|
var options = {};
|
|
options.id = $(e.target).attr("cart-id");
|
|
|
|
rest.removeShoppingCart(options)
|
|
.done(loadShoppingCarts)
|
|
.fail(app.ajaxError);
|
|
}
|
|
|
|
function clearContent() {
|
|
$content.empty();
|
|
}
|
|
|
|
function loadShoppingCarts() {
|
|
clearContent();
|
|
|
|
rest.getShoppingCarts()
|
|
.done(renderShoppingCarts)
|
|
.fail(app.ajaxError);
|
|
}
|
|
|
|
function renderShoppingCarts(carts) {
|
|
var data = {};
|
|
var latest_cart = carts[carts.length - 1];
|
|
|
|
var $latestCartHtml = "";
|
|
|
|
if (latest_cart) {
|
|
$latestCartHtml = $(
|
|
context._.template(
|
|
$('#template-shopping-cart-header').html(),
|
|
latest_cart,
|
|
{variable: 'data'}
|
|
)
|
|
);
|
|
}
|
|
|
|
var sub_total = 0;
|
|
$.each(carts, function(index, cart) {
|
|
sub_total += parseFloat(cart.product_info.price) * parseFloat(cart.quantity);
|
|
});
|
|
data.sub_total = sub_total.toFixed(2);
|
|
|
|
data.carts = carts;
|
|
var $cartsHtml = $(
|
|
context._.template(
|
|
$('#template-shopping-cart-body').html(),
|
|
data,
|
|
{variable: 'data'}
|
|
)
|
|
);
|
|
|
|
$content.append($latestCartHtml).append($cartsHtml);
|
|
|
|
events();
|
|
}
|
|
|
|
function initialize() {
|
|
var screenBindings = {
|
|
'beforeShow': beforeShow,
|
|
'afterShow': afterShow,
|
|
'afterHide' : afterHide
|
|
};
|
|
app.bindScreen('shoppingCart', screenBindings);
|
|
|
|
$screen = $("#shoppingCartScreen");
|
|
$content = $screen.find(".shopping-cart-content");
|
|
|
|
if($screen.length == 0) throw "$screen must be specified";
|
|
if($content.length == 0) throw "$content must be specified";
|
|
}
|
|
|
|
this.initialize = initialize;
|
|
|
|
return this;
|
|
}
|
|
})(window,jQuery); |