"use strict"; var bulkoperations_default_attributes = []; jQuery(function ($) { jQuery(document).on("do_tabs-bulkoperations-default-values", {}, function () { jQuery('#bulkoperations_attributes_default').chosen({ width: '100%' }).trigger("chosen:updated"); jQuery('#bulkoperations_attributes_default').off('change'); jQuery('#bulkoperations_attributes_default').on('change',function () { if (jQuery(this).val() && bulkoperations_default_attributes.length < jQuery(this).val().length) { //add //https://stackoverflow.com/questions/1187518/how-to-get-the-difference-between-two-arrays-in-javascript var diff = jQuery(jQuery(this).val()).not(bulkoperations_default_attributes).get(); bulkoperations_default_attributes = jQuery(this).val(); var new_attribute = diff[0]; var new_attribute_label = jQuery(this).find('option[value="' + new_attribute + '"]').text(); jQuery('.bulkoperations_apply_combination_btn').show(); //*** woobe_message(lang.loading, 'warning'); const nonce = jQuery('#woobe_bulkoperations_nonce').val(); jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_bulkoperations_get_att_terms', attribute: new_attribute, bulkoperations_nonce: nonce }, success: function (terms) { woobe_message(lang.loaded, 'notice'); var select_id = 'bulkoperations_def_t_' + new_attribute; jQuery('#bulkoperations_attributes_terms_default').append('<li><select id="' + select_id + '" data-attribute="' + new_attribute + '" data-placeholder="' + new_attribute_label + '"></select><a href="#" class="help_tip woobe_drag_and_drope" title="'+lang.move+'"><img src="' + woobe_assets_link + 'images/move.png" width="18" alt="'+lang.move+'" /></a></li>'); __woobe_fill_select(select_id, JSON.parse(terms), [], 0, true); jQuery('#' + select_id).chosen({ width: '100%' }); //*** jQuery("#bulkoperations_attributes_terms_default").sortable({ items: "li:not(.unsortable)", update: function (event, ui) {}, opacity: 0.8, cursor: "crosshair", handle: '.woobe_drag_and_drope', placeholder: 'woobe-options-highlight' }); } }); } else { //remove if (jQuery(this).val()) { bulkoperations_default_attributes = jQuery(this).val(); } else { bulkoperations_default_attributes = []; } //*** if (bulkoperations_default_attributes.length === 0) { jQuery('#bulkoperations_attributes_terms_default').html(''); jQuery('.bulkoperations_apply_combination_btn').hide(); } else { jQuery('#bulkoperations_attributes_terms_default select').each(function (i, s) { var tax = jQuery(this).data('attribute'); if (jQuery.inArray(tax, bulkoperations_default_attributes) === -1) { jQuery(this).chosen("destroy").parent().remove(); } }); } } }); return true; }); }); function bulkoperations_apply_combination() { if (confirm(lang.sure)) { if (bulkoperations_default_attributes.length > 0) { woobe_bulkoperations_is_going(); jQuery('.bulkoperations_apply_combination_btn').hide(); jQuery('.woobe_bulkoperations_terminate_btn').show(); woobe_set_progress('woobe_bulkoperations_progress_default', 0); //*** var combination = {}; jQuery('#bulkoperations_attributes_terms_default select').each(function (i, sel) { combination[jQuery(sel).data('attribute')] = jQuery(sel).val(); }); //*** if (woobe_checked_products.length > 0) { __woobe_bulkoperations_products2(woobe_checked_products, 0, combination); } else { const nonce = jQuery('#woobe_bulkoperations_nonce').val(); woobe_bulkoperations_xhr = jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_bulkoperations_get_prod_count', filter_current_key: woobe_filter_current_key, bulkoperations_nonce: nonce }, success: function (products_ids) { products_ids = JSON.parse(products_ids); if (products_ids.length) { __woobe_bulkoperations_products2(products_ids, 0, combination); } }, error: function () { if (!woobe_bulkoperations_user_cancel) { alert(lang.error); woobe_bulkoperations_terminate2(); } woobe_bulkoperations_is_going(false); } }); } } else { woobe_message(lang.bulkoperations.no_combinations, 'warning', 3000); } } return false; } //*** //service function __woobe_bulkoperations_products2(products, start, combination) { var step = 10; var products_ids = products.slice(start, start + step); const nonce = jQuery('#woobe_bulkoperations_nonce').val(); woobe_bulkoperations_xhr = jQuery.ajax({ method: "POST", url: ajaxurl, data: { action: 'woobe_bulkoperations_apply_default_combination', products_ids: products_ids, combination: combination, bulkoperations_nonce: nonce }, success: function () { if ((start + step) > products.length) { woobe_message(lang.bulkoperations.finished2, 'notice'); //https://datatables.net/reference/api/draw() //data_table.draw('page'); - we not need it here jQuery('.bulkoperations_apply_combination_btn').show(); jQuery('.woobe_bulkoperations_terminate_btn').hide(); woobe_set_progress('woobe_bulkoperations_progress_default', 100); jQuery(document).trigger('woobe_bulkoperations_completed_default'); woobe_bulkoperations_is_going(false); } else { //show % woobe_set_progress('woobe_bulkoperations_progress_default', (start + step) * 100 / products.length); __woobe_bulkoperations_products2(products, start + step, combination); } }, error: function () { if (!woobe_bulkoperations_user_cancel) { alert(lang.error); woobe_bulkoperations_terminate2(); } woobe_bulkoperations_is_going(false); } }); } function woobe_bulkoperations_terminate2() { if (confirm(lang.sure)) { woobe_bulkoperations_user_cancel = true; woobe_bulkoperations_xhr.abort(); woobe_hide_progress('woobe_bulkoperations_progress_default'); jQuery('.bulkoperations_apply_combination_btn').show(); jQuery('.woobe_bulkoperations_terminate_btn').hide(); woobe_message(lang.canceled, 'error'); woobe_bulkoperations_user_cancel = false; woobe_bulkoperations_is_going(false); } }