Quantity Adding/removing

We can add , remove or change the quantity of the item in the cart or mini cart by applying a data-actions

events: {
	'click [data-action="addQuantity"]': 'addQuantity',
	'click [data-action="removeQuantity"]': 'removeQuantity',
	'change [data-type="quantity-input"]': 'changeQuantity',
	},
addQuantity: function addQuantity(e) {
	e.preventDefault();
	var value = parseInt(this.$(e.currentTarget).data('value'), 10);
	var currentitemid = this.$(e.target).data('internalid');
	var array = this.model.get('lines').models;
	var foundIndex = array.findIndex((el) => (el.cartitemid ===  currentitemid));
	var item_quantity = this.model.get('lines').models[foundIndex]
	var $element = this.$(e.target);
	var $input_quantity = $element.parent().find('input');
	var old_value = parseInt($input_quantity.val(), 10);
	var new_quantity = old_value + value;
	item_quantity.set('quantity', new_quantity);
	var update_promise = this.model.updateLine(item_quantity, true);
	this.render();
	return update_promise;
              },
removeQuantity: function removeQuantity(e) {
	e.preventDefault();
	var currentitemid = this.$(e.target).data('internalid');
	var array = this.model.get('lines').models;
	var foundIndex = array.findIndex((el) => (el.cartitemid === currentitemid));
	var item_quantity = this.model.get('lines').models[foundIndex];
	var value = parseInt(this.$(e.currentTarget).data('value'), 10);
	var $element = this.$(e.target);
	var $input_quantity = $element.parent().find('input');
	var old_value = parseInt($input_quantity.val(), 10);
	if (old_value == 1) {
	var new_quantity = old_value + 0;
	} else {
	var new_quantity = old_value + value;
	}
        item_quantity.set('quantity', new_quantity);
	var update_promise = this.model.updateLine(item_quantity, true);
	this.render();
	return update_promise;
},
changeQuantity: function changeQuantity(e) {
	e.preventDefault();
	var currentitemid = this.$(e.target).data('internalid');
	var array = this.model.get('lines').models;
	var foundIndex = array.findIndex((el) => (el.cartitemid === currentitemid));
	var item_quantity = this.model.get('lines').models[foundIndex];
        var $element = this.$(e.target);
	var $input_quantity = $element.parent().find('input');
	var new_value = parseInt($input_quantity.val(), 10);
	item_quantity.set('quantity', new_value);
	var update_promise = this.model.updateLine(item_quantity, true);
	this.render();
	return update_promise;
	},

Leave a comment

Your email address will not be published. Required fields are marked *