/**
* Contains the wdr_rulebuilding logic, clone wdr-rules.
*
* @summary Contains rule building logic
*
* @requires jQuery
*/
/**
* @namespace wdr_buildrule
*
* @type {Object}
*/
var wdr_buildrule;
(function ($) {
wdr_buildrule = {
/**
* @summary Handles a click on product filter button.
*
* Adds the rule row while click the element.
*
* @returns {void}
*/
wdr_clone_field: function (selector) {
var settings = $.extend({
addFilterType: null,
addFilterMethod: null,
ruleAppendTo: null,
addConditionType: null,
addRemoveIcon: null,
addDiscountElement: null,
addDiscountType: null,
newIndex: null
}, selector);
var remove_icon = $(settings.addRemoveIcon).html();
var filter_method = $(settings.addFilterMethod).html();
if (settings.addDiscountElement === null && settings.addFilterType !== null && settings.addFilterMethod !== null && settings.ruleAppendTo !== null) {
var filter_type = $(settings.addFilterType).html();
filter_type = filter_type.replace(new RegExp('{i}', 'g'), settings.newIndex);
filter_method = filter_method.replace(new RegExp('{i}', 'g'), settings.newIndex);
$(settings.ruleAppendTo).append('
' + filter_type + filter_method + remove_icon + '
');
} else if (settings.addDiscountType === null && settings.addDiscountElement === null && settings.addFilterType === null && settings.addFilterMethod !== null && settings.ruleAppendTo !== null && settings.addConditionType === null) {
filter_method = filter_method.replace(new RegExp('{i}', 'g'), settings.newIndex);
$(settings.ruleAppendTo).append(filter_method + remove_icon);
} else if (settings.addDiscountElement === null && settings.addConditionType !== null && settings.addFilterMethod !== null && settings.ruleAppendTo !== null) {
var condition_type = $(settings.addConditionType).html();
let style_inline = "";
let class_inline = "";
var condition_method = $(settings.addFilterMethod).html();
condition_method = condition_method.replace(new RegExp('{i}', 'g'), settings.newIndex);
if(!condition_type || condition_type == 'undefined'){
condition_type = '';
style_inline = "display:none";
class_inline = "promo_show_hide_"+settings.newIndex;
remove_icon = '';
$(settings.ruleAppendTo +" [data-index='"+ settings.newIndex +"']").after('' + condition_type + condition_method + remove_icon + '
');
}else{
condition_type = condition_type.replace(new RegExp('{i}', 'g'), settings.newIndex);
$(settings.ruleAppendTo).append('' + condition_type + condition_method + remove_icon + '
');
}
} else if (settings.addDiscountType == null && settings.addDiscountElement !== null && settings.addFilterMethod !== null && settings.ruleAppendTo !== null) {
filter_method = filter_method.replace(new RegExp('{i}', 'g'), settings.newIndex);
$(settings.ruleAppendTo).append(filter_method);
} else if (settings.addDiscountType !== null && settings.ruleAppendTo !== null) {
$(settings.ruleAppendTo).html(filter_method);
}
},
/**
* @summary Handles a click on product rule row remove button.
*
* Remove the rule row while click the element.
*
* @returns {void}
*/
remove_wdr_field_group: function (selector) {
var settings = $.extend({
parentRow: null,
parentsRow: null,
siblingElements: null,
thisObject: null,
}, selector);
if (settings.parentsRow !== null && settings.thisObject !== null) {
$(settings.thisObject).parents(settings.parentsRow).remove();
}
if (settings.parentRow !== null && settings.siblingElements === null) {
$(settings.parentRow).siblings().remove();
}
},
/**
* change the discount range Bulk discount, Bundle set discount, Buy x get x && Buy x get y.
*/
re_index_ranges : function (){
let i = 1;
let all_discount_range = $('#bulk_adjustment_sortable > .wdr-discount-group')
all_discount_range.each(function (range_index, value){
let row_index = $(this).attr('data-index');
let input_data = $(this).find('input');
let select_data = $(this).find('select');
if (select_data){
select_data.each(function (index, value){
let option = $(this).attr('name');
if (typeof option !== 'undefined' && option !== false) {
$(this).attr('name', option.replace('['+row_index+']', '['+ (range_index + 1) +']'));
}
})
}
if (input_data) {
input_data.each(function (index, value) {
let input = $(this).attr('name');
if (typeof input !== 'undefined' && input !== false) {
$(this).attr('name', input.replace('[' + row_index + ']', '[' + (range_index + 1) + ']'));
}
})
}
$(this).attr('data-index', i++);
})
},
/**
* @summary Handles show & hide rule groups.
*
* show tab group if click button.
*
* @returns {void}
*/
show_hide_rule_block: function (selector) {
var settings = $.extend({
showBlockId: null,
hideBlockId: null,
thisObject: null,
discountTab: null,
showTabId: null
}, selector);
//Show Only
if (settings.showBlockId !== null && settings.hideBlockId === null) {
$(settings.showBlockId).show();
}
//Show And Hide
if (settings.showBlockId !== null && settings.hideBlockId !== null) {
$(settings.showBlockId).show();
$(settings.hideBlockId).hide();
$(settings.thisObject).siblings('.wdr-active').removeClass('wdr-active wdr-inactive').prop('disabled', false).addClass('wdr-inactive');
$(settings.thisObject).removeClass('wdr-inactive').addClass('wdr-active');
}
//Show And Hide Discount Tab
if (settings.showBlockId !== null && settings.hideBlockId !== null) {
$(settings.showBlockId).show();
$(settings.hideBlockId).hide();
$(settings.thisObject).siblings('.wdr-active').removeClass('wdr-active').prop('disabled', false);
$(settings.thisObject).addClass('wdr-active');
}
}
};
}(jQuery));