Files
old-new-wiaas/backend/app/plugins/wiaas/assets/js/wiaas-template-admin-write-panels.js

266 lines
9.0 KiB
JavaScript

jQuery(function ($) {
var $template_categories_container_hardware = $('.wiaas-template-items_hardware'),
$template_categories_container_software = $('.wiaas-template-items_software'),
$template_categories_container_services = $('.wiaas-template-items_services'),
$template_categories_container_isntallation = $('.wiaas-template-items_installation'),
$template_categories = $('.wc-bundled-item',
$template_categories_container_services,
$template_categories_container_software,
$template_categories_container_hardware,
$template_categories_container_isntallation),
$template_search_hardware = $('#wiaastemplate_products_hardware'),
$template_search_software = $('#wiaastemplate_products_software'),
$template_search_services = $('#wiaastemplate_products_services'),
$template_search_installation = $('#wiaastemplate_products_installation'),
template_category_objects = {},
template_category_add_count = $template_categories.length;
init_event_handlers();
function init_event_handlers() {
$template_search_hardware
.on('change', function () {
addSearchedTemplateCategory('hardware', $template_search_hardware, $template_categories_container_hardware)
});
$template_search_software
.on('change', function () {
addSearchedTemplateCategory('software', $template_search_software, $template_categories_container_software)
});
$template_search_installation
.on('change', function () {
addSearchedTemplateCategory('installation', $template_search_installation, $template_categories_container_isntallation)
});
$template_search_services
.on('change', function () {
addSearchedTemplateCategory('services', $template_search_services, $template_categories_container_services)
});
function addSearchedTemplateCategory(options, search, container) {
var template_category_ids = search.val(),
template_category_id = template_category_ids && template_category_ids.length > 0 ? template_category_ids.shift() : false;
var template_category_title =search.text();
if (!template_category_id) {
return false;
}
search.val([]).change();
template_category_add_count++;
var data = {
action: 'wiaas_add_template_product',
post_id: woocommerce_admin_meta_boxes.post_id,
id: template_category_add_count,
title: template_category_title,
template_category_id: template_category_id,
security: wc_bundles_admin_params.add_bundled_product_nonce,
options: options,
};
setTimeout(function () {
$.post(woocommerce_admin_meta_boxes.ajax_url, data, function (response) {
if ('' !== response.markup) {
container.append(response.markup);
var $added = $('.wiaas-template-item', container).last(),
added_id = 'bundled_item_' + template_category_add_count;
$added.data('bundled_item_id', added_id);
$added.wc_bundles_select2();
} else if (response.message !== '') {
window.alert(response.message);
}
// Open and close to resolve "sticky" modal issue.
if ('yes' === wc_bundles_admin_params.is_wc_version_gte_3_2) {
search.selectWoo('open');
search.selectWoo('close');
} else {
search.select2('open');
search.select2('close');
}
search.text('');
});
}, 250);
return false;
}
$template_categories_container_isntallation
// Remove Item.
.on('click', 'a.remove_row', function (e) {
var $el = $(this).closest('.wc-bundled-item'),
el_id = $el.data('bundled_item_id');
$el.find('*').off();
$el.remove();
delete template_category_objects[el_id];
e.preventDefault();
});
$template_categories_container_hardware
// Remove Item.
.on('click', 'a.remove_row', function (e) {
var $el = $(this).closest('.wc-bundled-item'),
el_id = $el.data('bundled_item_id');
$el.find('*').off();
$el.remove();
delete template_category_objects[el_id];
e.preventDefault();
});
$template_categories_container_software
// Remove Item.
.on('click', 'a.remove_row', function (e) {
var $el = $(this).closest('.wc-bundled-item'),
el_id = $el.data('bundled_item_id');
$el.find('*').off();
$el.remove();
delete template_category_objects[el_id];
e.preventDefault();
});
$template_categories_container_services
// Remove Item.
.on('click', 'a.remove_row', function (e) {
var $el = $(this).closest('.wc-bundled-item'),
el_id = $el.data('bundled_item_id');
$el.find('*').off();
$el.remove();
delete template_category_objects[el_id];
e.preventDefault();
})
}
// Ajax product search box
$( ':input.wiaas-term-search' ).filter( ':not(.enhanced)' ).each( function() {
var select2_args = {
allowClear: $( this ).data( 'allow_clear' ) ? true : false,
placeholder: $( this ).data( 'placeholder' ),
minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3',
escapeMarkup: function( m ) {
return m;
},
ajax: {
url: wc_enhanced_select_params.ajax_url,
dataType: 'json',
delay: 250,
data: function( params ) {
return {
term: params.term,
action: 'wiaas_template_category_search',
security: wc_enhanced_select_params.search_products_nonce,
exclude: $( this ).data( 'exclude' ),
include: $( this ).data( 'include' ),
limit: $( this ).data( 'limit' )
};
},
processResults: function( data ) {
var terms = [];
if ( data ) {
$.each( data, function( id, text ) {
terms.push( { id: id, text: text } );
});
}
return {
results: terms
};
},
cache: true
}
};
// select2_args = $.extend( select2_args, getEnhancedSelectFormatString() );
$( this ).selectWoo( select2_args ).addClass( 'enhanced' );
if ( $( this ).data( 'sortable' ) ) {
var $select = $(this);
var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' );
$list.sortable({
placeholder : 'ui-state-highlight select2-selection__choice',
forcePlaceholderSize: true,
items : 'li:not(.select2-search__field)',
tolerance : 'pointer',
stop: function() {
$( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function() {
var id = $( this ).data( 'data' ).id;
var option = $select.find( 'option[value="' + id + '"]' )[0];
$select.prepend( option );
} );
}
});
// Keep multiselects ordered alphabetically if they are not sortable.
} else if ( $( this ).prop( 'multiple' ) ) {
$( this ).on( 'change', function(){
var $children = $( this ).children();
$children.sort(function(a, b){
var atext = a.text.toLowerCase();
var btext = b.text.toLowerCase();
if ( atext > btext ) {
return 1;
}
if ( atext < btext ) {
return -1;
}
return 0;
});
$( this ).html( $children );
});
}
});
});