File "bulkoperations.js"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woo-bulk-editor/ext/bulkoperations/assets/js/bulkoperations.js
File size: 12.45 KB
MIME-type: text/html
Charset: utf-8
"use strict";
var bulkoperations_selected_attributes = [];
var woobe_bulkoperations_xhr = null;//current ajax request (for cancel)
var woobe_bulkoperations_user_cancel = false;//current ajax request (for cancel)
jQuery(function ($) {
jQuery('.woobe_tools_panel_newvars_btn').on('click', function () {
var popup = jQuery('#bulkoperations_popup');
jQuery(popup).show();
jQuery('.woobe-modal-close-bulkoperations').off('click');
jQuery('.woobe-modal-close-bulkoperations').on('click', function () {
jQuery(popup).hide();
});
//***
jQuery('#bulkoperations_attributes').chosen({
width: '100%'
}).trigger("chosen:updated");
jQuery('#bulkoperations_attributes').off('change');
jQuery('#bulkoperations_attributes').on('change',function () {
if (jQuery(this).val() && bulkoperations_selected_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_selected_attributes).get();
bulkoperations_selected_attributes = jQuery(this).val();
var new_attribute = diff[0];
var new_attribute_label = jQuery(this).find('option[value="' + new_attribute + '"]').text();
jQuery('.bulkoperations_generate_combinations_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_t_' + new_attribute;
jQuery('#bulkoperations_attributes_terms').append('<li><select multiple="" id="' + select_id + '" data-attribute="' + new_attribute + '" data-placeholder="' + new_attribute_label + '"></select><a href="#" class="button '+ select_id + '_select">' + lang.select_all + '</a> <a href="#" class="button '+ select_id + '_remove">'+lang.deselect_all+'</a></li>');
__woobe_fill_select(select_id, JSON.parse(terms));
jQuery('#' + select_id).chosen({
width: '100%'
});
jQuery('.' + select_id + '_select').on('click', function(evt){
evt.preventDefault();
jQuery('#' + select_id + ' option').prop('selected', true);
jQuery('#' + select_id).trigger("chosen:updated");;
return false;
});
jQuery('.' + select_id + '_remove').on('click', function(evt){
evt.preventDefault();
jQuery('#' + select_id + ' option').prop('selected', false);
jQuery('#' + select_id).trigger("chosen:updated");;
return false;
});
}
});
} else {
//remove
if (jQuery(this).val()) {
bulkoperations_selected_attributes = jQuery(this).val();
} else {
bulkoperations_selected_attributes = [];
}
//***
if (bulkoperations_selected_attributes.length === 0) {
jQuery('#bulkoperations_attributes_terms').html('');
jQuery('.bulkoperations_generate_combinations_btn').hide();
jQuery('#bulkoperations_step_3').hide();
} else {
jQuery('#bulkoperations_attributes_terms select').each(function (i, s) {
var tax = jQuery(this).data('attribute');
if (jQuery.inArray(tax, bulkoperations_selected_attributes) === -1) {
jQuery(this).chosen("destroy").parent().remove();
}
});
}
}
});
return false;
});
//***
});
function bulkoperations_generate_combinations() {
//console.log(lang);
woobe_message(lang.bulkoperations.generating, 'warning', 30000);
var data = [];
var labels = [];
jQuery('#bulkoperations_attributes_combos').empty();
//bulkoperations_attributes_terms
jQuery('#bulkoperations_attributes_terms select').each(function (i, sel) {
var vals = jQuery(sel).val();
if (!vals) {
return;
}
vals = vals.map(function (x) {
return parseInt(x, 10);
});
data[jQuery(sel).data('attribute')] = vals;
jQuery.each(jQuery(sel).find('option'), function (i, o) {
if (jQuery.inArray(parseInt(jQuery(o).val(), 10), vals) > -1) {
labels[parseInt(jQuery(o).val(), 10)] = jQuery(o).text();
}
});
});
//***
var variants = [];
//lets generate possible variants
Object.keys(data).map(function (objectKey, index) {
variants.push(data[objectKey]);
});
const nonce = jQuery('#woobe_bulkoperations_nonce').val();
jQuery.ajax({
method: "POST",
url: ajaxurl,
data: {
action: 'woobe_bulkoperations_get_possible_combos',
arrays: variants,
bulkoperations_nonce: nonce
},
success: function (combinations) {
combinations = JSON.parse(combinations);
if (combinations.length > 0) {
var li_tpl = jQuery('#bulkoperations_attributes_combo_tpl').html();
for (var i = 0; i < combinations.length; i++) {
if (combinations[i].length) {
var st1 = '';
var st2 = '';
for (var y = 0; y < combinations[i].length; y++) {
if (y > 0) {
st1 += ' | ';
st2 += ',';
}
st1 += labels[combinations[i][y]];
st2 += combinations[i][y];
}
var li = li_tpl;
li = li.replace(/__LABEL__/gi, st1);
li = li.replace(/__DATA_TERMS__/gi, st2);
li = li.replace(/__ID__/gi, woobe_get_random_string(8));
jQuery('#bulkoperations_attributes_combos').append(li);
}
}
}
jQuery('#bulkoperations_attributes_combos').parent().find('h4 span').html(jQuery('#bulkoperations_attributes_combos li').length);
jQuery("#bulkoperations_attributes_combos").sortable({
items: "li:not(.unsortable)",
update: function (event, ui) {},
opacity: 0.8,
cursor: "crosshair",
handle: '.woobe_drag_and_drope',
placeholder: 'woobe-options-highlight'
});
//***
woobe_message(lang.bulkoperations.generated, 'notice');
jQuery('#bulkoperations_step_3').show();
}
});
return false;
}
function bulkoperations_generate_variations() {
if (confirm(lang.sure)) {
var checked = jQuery('#bulkoperations_attributes_combos').find('input:checked');
var combinations = [];
if (checked.length > 0) {
woobe_bulkoperations_is_going();
jQuery('.bulkoperations_generate_variations_btn').hide();
jQuery('.woobe_bulkoperations_terminate_btn').show();
woobe_set_progress('woobe_bulkoperations_progress', 0);
//***
jQuery(checked).each(function (i, o) {
var tmp = jQuery(o).data('terms') + '';
tmp = tmp.split(',');
tmp = tmp.map(function (x) {
return parseInt(x, 10);
});
combinations.push(tmp);
});
//***
if (woobe_checked_products.length > 0) {
__woobe_bulkoperations_products(woobe_checked_products, 0, combinations);
} 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_products(products_ids, 0, combinations);
}
},
error: function () {
if (!woobe_bulkoperations_user_cancel) {
alert(lang.error);
woobe_bulkoperations_terminate();
}
woobe_bulkoperations_is_going(false);
}
});
}
} else {
woobe_message(lang.bulkoperations.no_combinations, 'warning', 3000);
}
}
return false;
}
//***
//service
function __woobe_bulkoperations_products(products, start, combinations) {
var step = 2;
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_combinations',
products_ids: products_ids,
combinations: combinations,
bulkoperations_nonce: nonce
},
success: function (e) {
//console.log(JSON.parse(e));
if ((start + step) > products.length) {
woobe_message(lang.bulkoperations.finished, 'notice', 10000);
//https://datatables.net/reference/api/draw()
data_table.draw('page');
jQuery('.bulkoperations_generate_variations_btn').show();
jQuery('.woobe_bulkoperations_terminate_btn').hide();
woobe_set_progress('woobe_bulkoperations_progress', 100);
jQuery(document).trigger('woobe_bulkoperations_completed');
woobe_bulkoperations_is_going(false);
} else {
//show %
woobe_set_progress('woobe_bulkoperations_progress', (start + step) * 100 / products.length);
__woobe_bulkoperations_products(products, start + step, combinations);
}
},
error: function () {
if (!woobe_bulkoperations_user_cancel) {
alert(lang.error);
woobe_bulkoperations_terminate();
}
woobe_bulkoperations_is_going(false);
}
});
}
function woobe_bulkoperations_terminate() {
if (confirm(lang.sure)) {
woobe_bulkoperations_user_cancel = true;
woobe_bulkoperations_xhr.abort();
woobe_hide_progress('woobe_bulkoperations_progress');
jQuery('.bulkoperations_generate_variations_btn').show();
jQuery('.woobe_bulkoperations_terminate_btn').hide();
woobe_message(lang.canceled, 'error');
woobe_bulkoperations_user_cancel = false;
woobe_bulkoperations_is_going(false);
}
}
function woobe_bulkoperations_is_going(go = true) {
if (go) {
jQuery('#wp-admin-bar-root-default').append("<li id='woobe_bulkoperations_is_going'>" + lang.bulkoperations.going + "</li>");
} else {
jQuery('#woobe_bulkoperations_is_going').remove();
}
//any way some operations been done
jQuery(document).trigger('woobe_page_field_updated', [0, 0, 0]);
}