Untitled

mail@pastecode.io avatar
unknown
javascript
7 months ago
4.7 kB
2
Indexable
Never
function setHoverColorTable(quantity = 'no'){

	// remove all colors from table
	$('.b2bking_has_color').removeClass('b2bking_has_color');

	// STEP 1: Determine which product ID the tiered price table belongs to, based on the classes of the table
	// get product id from table
	if ($('.b2bking_shop_table').attr('class') !== undefined){
		var classList = $('.b2bking_shop_table').attr('class').split(/\s+/);
		var productid = 0;
		$.each(classList, function(index, item) {
			// foreach line if it has selected class, get selected product ID 
		    if (item.includes('b2bking_productid_')) {
		    	productid = parseInt(item.split('_')[2]);
		    }
		});

		// STEP 2: Determine the total quantity (input qty + qty already in cart) of the item

		// get input quantity
		if ($('input[name=quantity]').val() !== undefined){
			var inputQuantity = parseInt($('input[name=quantity]').val());
		} else if ($('select[name=quantity]').val() !== undefined){
			var inputQuantity = parseInt($('select[name=quantity]').val());
		}
		if (quantity !== 'no'){
			if (typeof inputQuantity !== 'undefined') {
				inputQuantity = parseInt(quantity);
			} else {
				var inputQuantity = parseInt(quantity);
			}
		}

		// get cart item quantity
		var cartQuantity = 0;
		if (parseInt(b2bking_display_settings.add_cart_quantity_tiered_table) === 1){

			if (b2bking_display_settings.cart_quantities[productid] !== undefined){
				cartQuantity = parseInt(b2bking_display_settings.cart_quantities[productid]);
			}
			if (parseInt(b2bking_display_settings.cart_quantities_cartqty) !== 0){
				cartQuantity = parseInt(b2bking_display_settings.cart_quantities_cartqty);
			}
		}


		// calculate total quantity of the item
		var totalQuantity = inputQuantity + cartQuantity;


		// STEP 3: Go through all tiered price table rows and determine which one matches the total quantity (active quantity).

		// first set the price to the basic standard price - we get the original price as the last element y (highest price) in the range (x - y)
		$('.b2bking_tiered_active_price').text($('.summary .b2bking_tiered_range_replaced:first').text().split(' – ')[1]);
		// if can't be found,
		if ($('.summary .b2bking_tiered_range_replaced:first').text().split(' – ')[1] === undefined){
			$('.b2bking_tiered_active_price').text($('.b2bking_tiered_range_replaced:first').text().split(' – ')[1]);
		}

		// if exists a specific productid of the page
		if (parseInt(b2bking_display_settings.productid) !== 0){
			var rangereplaced = jQuery('.b2bking_tiered_price_range_replaced_' + b2bking_display_settings.productid + ':first').text();
			if (rangereplaced !== ''){
				$('.b2bking_tiered_active_price').text(rangereplaced.split(' – ')[1]);
			}
		}

		// Go through all tiered price table rows and see which one matches the current active quantity.
		$('.b2bking_shop_table.b2bking_productid_'+productid+' tr td:nth-child(1)').each(function(){
			let rangeText = $(this).data('range');
			let values = rangeText.split(' - ');

			if (values.length === 2){
				// is of form 123 - 456
				let first = parseInt(values[0]);
				let second = parseInt(values[1]);
				if (totalQuantity >= first && totalQuantity <= second){
					// set color
					$(this).parent().find('td').addClass('b2bking_has_color');
					if (parseInt(b2bking_display_settings.is_enabled_discount_table) === 1){
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(3)').text());
					} else {
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(2)').text());

					}
				}
			} else if (!rangeText.includes('+')){
				// exception if the user enters 1 as a quantity in the table
				if (totalQuantity === parseInt(rangeText)){
					$(this).parent().find('td').addClass('b2bking_has_color');
					if (parseInt(b2bking_display_settings.is_enabled_discount_table) === 1){
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(3)').text());
					} else {
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(2)').text());
					}
				}
			} else {
				// is of form 456+
				let valuePlus = parseInt(rangeText.split('+')[0]);
				if (totalQuantity >= valuePlus){
					// set color
					$(this).parent().find('td').addClass('b2bking_has_color');
					if (parseInt(b2bking_display_settings.is_enabled_discount_table) === 1){
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(3)').text());
					} else {
						$('.b2bking_tiered_active_price').text($(this).parent().find('td:nth-child(2)').text());
					}
				}
			}
		});

		$( document.body ).trigger( 'b2bking_set_hover_finish' ); 
	}
}