1/** 2 * alg-variations-frontend. 3 * 4 * @version 2.9.1 5 * @todo [dev] add "clear" button 6 * @todo [dev] maybe rename `alg_variations` (for compatibility with "Variations Radio Buttons" plugin) 7 * @todo [dev] check JS coding standards 8 */ 9 10/** 11 * maybe_hide_unavailable. 12 * 13 * @version 2.9.1 14 * @since 2.9.1 15 */ 16function maybe_hide_unavailable(variation) { 17 if ( ! variation.is_purchasable || ! variation.is_in_stock || ! variation.variation_is_visible ) { 18 jQuery(".single_add_to_cart_button").removeClass("wc-variation-selection-needed").addClass("disabled wc-variation-is-unavailable"); 19 jQuery(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled"); 20 } 21} 22 23/** 24 * process_variations. 25 * 26 * @version 2.9.1 27 * @since 2.9.1 28 */ 29function process_variations(variation_id) { 30 var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr("data-product_variations")); 31 data_product_variations.forEach(function(variation){ 32 if(variation_id == variation.variation_id){ 33 maybe_hide_unavailable(variation); 34 jQuery("form.variations_form.cart").wc_variations_image_update(variation); 35 jQuery("div.woocommerce-variation-price").html(variation.price_html); 36 jQuery("div.woocommerce-variation-description").html(variation.variation_description); 37 jQuery("div.woocommerce-variation-availability").html(variation.availability_html); 38 } 39 }); 40} 41 42/** 43 * hide_all. 44 * 45 * @version 2.9.1 46 * @since 2.9.1 47 */ 48function hide_all() { 49 jQuery("div.woocommerce-variation-availability").hide(); 50 jQuery("div.woocommerce-variation-price").hide(); 51 jQuery("div.woocommerce-variation-description").hide(); 52 jQuery(".single_add_to_cart_button").removeClass("wc-variation-is-unavailable").addClass("disabled wc-variation-selection-needed"); 53 jQuery(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled"); 54} 55 56/** 57 * show_all. 58 * 59 * @version 2.9.1 60 * @since 2.9.1 61 */ 62function show_all() { 63 jQuery("div.woocommerce-variation-availability").show(); 64 jQuery("div.woocommerce-variation-price").show(); 65 jQuery("div.woocommerce-variation-description").show(); 66 jQuery(".single_add_to_cart_button").removeClass("disabled wc-variation-selection-needed wc-variation-is-unavailable"); 67 jQuery(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-disabled").addClass("woocommerce-variation-add-to-cart-enabled"); 68} 69 70/** 71 * fill_values. 72 * 73 * @version 2.9.1 74 * @since 2.9.1 75 */ 76function fill_values(variation_id,radio_element) { 77 jQuery("input:hidden[name='variation_id']").val(variation_id); 78 jQuery(radio_element.attributes).each( 79 function(i, attribute){ 80 if(attribute.name.match("^attribute_")){ 81 jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value); 82 } 83 } 84 ); 85} 86 87/** 88 * document ready. 89 * 90 * @version 2.9.1 91 */ 92jQuery(document).ready(function() { 93 // Initial display 94 jQuery("form.variations_form.cart").on('wc_variation_form',function(){ 95 if(jQuery("input:radio[name='alg_variations']").is(":checked")){ 96 show_all(); 97 var checked_radio = jQuery("input:radio[name='alg_variations']:checked"); 98 var variation_id = checked_radio.attr("variation_id"); 99 fill_values(variation_id, checked_radio[0]); 100 process_variations(variation_id); 101 } else { 102 hide_all(); 103 } 104 }); 105 // On change 106 jQuery("input:radio[name='alg_variations']").change( 107 function(){ 108 show_all(); 109 var variation_id = jQuery(this).attr("variation_id"); 110 fill_values(variation_id, this); 111 process_variations(variation_id); 112 } 113 ); 114});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.