artbox_basket.js 2.83 KB
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('<div id="top-cart-info"><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><div id="in_cart_a"><a class="btn" href="/order">оформить покупку</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