artbox_basket.ts
1.75 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
class ArtboxBasket {
private _items;
get items() {
return this._items;
}
constructor() {
$.get('/basket/main', function (data) {
this._items = data.basket;
this.updateModal(data.modal, data.cart);
}.bind(this), 'json').fail(function() {
console.error('Basket cannot be init');
});
}
public add(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, data.cart, true);
}.bind(this), 'json').fail(function (xhr, status, error) {
console.error(error);
});
}
public set(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, data.cart);
}.bind(this), 'json').fail(function (xhr, status, error) {
console.error(error);
});
}
public updateModal(modal, cart_html, show = false)
{
var modalBox = $('#buyForm');
modalBox.html(modal);
if(this.count < 1) {
modalBox.modal('hide');
} else if(show) {
modalBox.modal('show');
}
this.updateCart(cart_html);
}
public updateCart(cart_html) {
var cart = $('#top-cart-content');
cart.html(cart_html);
}
get count(): number {
return Object.keys(this._items).length;
}
get sum(): number {
var sum = 0;
$.each(this._items, function(index, value) {
sum += value.price * value.count;
});
return sum.toFixed(2);
}
}