mivita/public/js/iq-homeparty-cart.js
2020-12-16 20:03:51 +01:00

284 lines
No EOL
9.5 KiB
JavaScript
Executable file

var IqHomepartyCart = {
form: "#homeparty-order-form",
btn_modal_add: '.add-product-basket',
btn_add: '.add-from-basket',
btn_remove: '.remove-from-basket',
table_input: '.table-input-event-onchange',
oTable: null,
cart_holder: '#insert_show_products_order_',
cart_holders: '.insert_show_products_order',
modal: '#modals-load-content',
remove_item_cart: '.remove_item_form_cart',
insert_show_total_order: '#insert_show_total_order',
insert_show_bonus: '#insert_show_bonus',
insert_show_bonus_host: '#insert_show_bonus_host',
/*
comp_holder: '#holder_html_view_comp_product',
is_for: null,
url: null,
btn_clear: '#clear-products-basket',
cart_input: '.cart-input-event-onchange',
remove_item: '.remove_item_form_cart',
shipping_state: '#change_shipping_state',
comp_products: 'switchers-comp-product',
count_comp_products: 'count_comp_products',
shipping_is_for: 'shipping_is_for',*/
_log: function ($msg){
console.log($msg);
},
init: function () {
var _self = this;
_self.url = $(_self.form).attr('action');
_self._log(_self.url);
$(_self.cart_holders).each(function (key, obj){
_self.reInit($(obj));
});
//_self.showInit();
/*$(_self.shipping_state).on('change', function(){
_self.update_shipping_state($(this));
});*/
return _self;
},
setDatabase: function (oTable){
var _self = this;
_self._log($(oTable));
_self.oTable = oTable;
},
reInitModal: function (){
var _self = this;
$(_self.oTable).find(_self.btn_modal_add).on('click', function(){
_self.add_product_modal($(this))
});
},
add_product_modal: function (_obj){
var _self = this;
_self.performRequest({
product_id: _obj.data('product-id'),
homeparty_id: $(_self.oTable).data('homeparty-id'),
homeparty_user_id: $(_self.oTable).data('homeparty-user-id'),
qty: 1,
action: 'addProduct'
}).done(_self.refreshView);
},
reInit: function (obj){
var _self = this;
var _obj = obj;
obj.find(_self.btn_add).off('click').on('click', function(){
_self.add_product($(this), _obj)
});
obj.find(_self.btn_remove).off('click').on('click', function(){
_self.remove_product($(this), _obj)
});
obj.find(_self.table_input).off('change').on('change', function(){
_self._log($(this));
_self.update_input_table($(this), _obj);
});
obj.find(_self.remove_item_cart).off('click').on('click', function(){
_self.remove_from_cart($(this), _obj);
});
},
add_product: function (_obj, _holder){
var _self = this;
var input = _holder.find('input[name="product_qty_'+_obj.data('order-item-id')+'"]');
var qty = parseInt(input.val()) + 1;
qty = _self.checkNumber(qty);
input.val(qty);
_self.update_cart(_holder, _obj, qty);
},
remove_product: function (_obj, _holder){
var _self = this;
var input = _holder.find('input[name="product_qty_'+_obj.data('order-item-id')+'"]');
var qty = parseInt(input.val()) - 1;
qty = _self.checkNumber(qty);
input.val(qty);
_self.update_cart(_holder, _obj, qty);
},
update_input_table: function (_obj, _holder){
var _self = this;
var qty = parseInt(_obj.val());
qty = _self.checkNumber(qty);
_obj.val(qty);
_self.update_cart(_holder, _obj, qty);
},
update_cart: function (_holder, _obj, qty){
var _self = this;
_self.performRequest({
product_id: _obj.data('product-id'),
order_item_id: _obj.data('order-item-id'),
homeparty_id: _holder.data('homeparty-id'),
homeparty_user_id: _holder.data('homeparty-user-id'),
qty: qty,
action: 'updateCart'
}).done(_self.refreshView);
},
remove_from_cart: function (_obj, _holder){
var _self = this;
_self.performRequest({
product_id: _obj.data('product-id'),
order_item_id: _obj.data('order-item-id'),
homeparty_id: _holder.data('homeparty-id'),
homeparty_user_id: _holder.data('homeparty-user-id'),
action: 'removeFromCart'
}).done(_self.refreshView);
},
refreshView: function (data) {
var _self = IqHomepartyCart;
var obj = $(_self.cart_holder+data.data.homeparty_user_id)
obj.html(data.html_user_cart);
$(_self.insert_show_total_order).html(data.html_total);
$(_self.insert_show_bonus).html(data.html_bonus);
$(_self.insert_show_bonus_host).html(data.html_host_bonus);
$(_self.modal).modal('hide');
_self.reInit(obj);
//$(_self.comp_holder).html(data.html_comp);
// var input = $(_self.table).find('input[name="product_qty_'+data.data.product_id+'"]');
// input.val(data.data.qty);
// _self.showInit();
},
performRequest : function(data) {
var _self = this;
var url = _self.url,
contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
console.log(data);
console.log(url);
return $.ajax({
url: url,
data: data,
type: "POST",
dataType: "json",
cache: false,
contentType: contentType,
encode: true,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
})
.done(function (data) {
console.log('performRequest');
console.log(data);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(jqXHR.responseText);
console.log(textStatus);
console.log(errorThrown);
console.log("Sorry, there was a problem!");
});
},
checkNumber : function(number){
if(number < 1 || isNaN(number)){
return 1;
}
if(number >= 100){
return 100;
}
return number;
},
/*
showInit: function (){
var _self = this;
$(_self.btn_clear).on('click', function (){
_self.performRequest({action: 'clearCart'})
.done(_self.refreshDatabaseRefreshAndView)
});
$(_self.cart_input).on('change', function(){
_self.update_input_cart($(this));
});
$(_self.remove_item).on('click', function(event){
event.preventDefault();
_self.update_cart_database($(this).data('product-id'), 0);
});
if(_self.is_for === 'me'){
$('input[name^="'+_self.comp_products+'"]').on('change', function(){
_self.update_comp_product($(this));
});
}
},
update_shipping_state : function (_obj){
var _self = this;
var id = parseInt(_obj.val());
var is_for = _obj.data('is-for');
_self.performRequest({shipping_country_id: id, shipping_is_for: is_for, action: 'updateShippingCountry'})
.done(_self.refreshItemsAndView);
},
update_input_table: function (_obj){
var _self = this;
var qty = parseInt(_obj.val());
qty = _self.checkNumber(qty);
_obj.val(qty);
_self.update_cart(_obj.data('product-id'), qty);
},
update_input_cart: function (_obj){
var _self = this;
var qty = parseInt(_obj.val());
qty = _self.checkNumber(qty);
_obj.val(qty);
_self.update_cart_database(_obj.data('product-id'), qty);
},
update_comp_product: function (_obj){
var _self = this;
_self.performRequest({comp_product_id: _obj.val(), comp_num: _obj.data('comp_num'), count_comp_products: $('input[name="'+_self.count_comp_products+'"]').val(), action: 'updateCompProduct'})
.done(_self.refreshItemsAndView);
},
update_cart_database: function (product_id, qty){
var _self = this;
_self.performRequest({product_id: product_id, qty: qty, action: 'updateCart'})
.done(_self.refreshDatabaseAndView);
},
update_cart: function (product_id, qty){
var _self = this;
_self.performRequest({product_id: product_id, qty: qty, action: 'updateCart'})
.done(_self.refreshItemsAndView);
},
refreshItemsAndView: function (data){
var _self = IqShoppingCart;
$(_self.cart_holder).html(data.html_cart);
$(_self.comp_holder).html(data.html_comp);
_self.showInit();
},
refreshDatabaseAndView: function (data) {
var _self = IqShoppingCart;
$(_self.cart_holder).html(data.html_cart);
$(_self.comp_holder).html(data.html_comp);
var input = $(_self.table).find('input[name="product_qty_'+data.data.product_id+'"]');
input.val(data.data.qty);
_self.showInit();
},
refreshDatabaseRefreshAndView : function (data){
var _self = IqShoppingCart;
$(_self.cart_holder).html(data.html_cart);
$(_self.comp_holder).html(data.html_comp);
_self.showInit();
_self.oTable.draw();
},
checkNumber : function(number){
if(number < 0 || isNaN(number)){
return 0;
}
if(number >= 100){
return 100;
}
return number;
},
*/
};