artbox_basket.js
2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
var ArtboxBasket = (function () {
function ArtboxBasket() {
$.get('/basket', function (data) {
this._items = data.basket;
this.updateModal(data.modal);
}.bind(this), 'json').fail(function () {
console.error('Basket cannot be init');
});
}
Object.defineProperty(ArtboxBasket.prototype, "items", {
get: function () {
return this._items;
},
enumerable: true,
configurable: true
});
ArtboxBasket.prototype.add = function (product_variant_id, count) {
$.post('/basket/add?product_variant_id=' + product_variant_id + '&count=' + count, function (data) {
this._items = data.basket;
this.updateModal(data.modal, true);
}.bind(this), 'json').fail(function (xhr, status, error) {
console.error(error);
});
};
ArtboxBasket.prototype.set = function (product_variant_id, count) {
$.post('/basket/set?product_variant_id=' + product_variant_id + '&count=' + count, function (data) {
this._items = data.basket;
this.updateModal(data.modal);
}.bind(this), 'json').fail(function (xhr, status, error) {
console.error(error);
});
};
ArtboxBasket.prototype.updateModal = function (modal, show) {
if (show === void 0) { show = false; }
var modalBox = $('#buyForm');
modalBox.html(modal);
if (this.count < 1) {
modalBox.modal('hide');
}
else if (show) {
modalBox.modal('show');
}
this.updateCart();
};
ArtboxBasket.prototype.updateCart = function () {
var cart = $('#top-cart-content');
var count = this.count;
if (count > 0) {
$(cart).html('<span class="in_the_cart">В корзине</span><span id="in_cart_col">' + count + ' товар' + ((count > 4) ? 'ов' : ((count > 1) ? 'а' : '')) + '</span><br/><span id="in_cart_sum">на ' + this.sum + ' </span><br/><div id="in_cart_a"><a class="btn" href="ordering.htm">оформить покупку</a></div>');
}
else {
$(cart).html('<p class="empty-cart">Корзина пуста</p>');
}
};
Object.defineProperty(ArtboxBasket.prototype, "count", {
get: function () {
return Object.keys(this._items).length;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ArtboxBasket.prototype, "sum", {
get: function () {
var sum = 0;
$.each(this._items, function (index, value) {
sum += value.price * value.count;
});
return sum;
},
enumerable: true,
configurable: true
});
return ArtboxBasket;
}());
//# sourceMappingURL=artbox_basket.js.map