Current File : /home/mdkeenpw/shafqattraders.com/wp-content/plugins/wgl-extensions/admin/js/metaboxes.js |
"use strict";
( function( $ ) {
$(document).ready( function() {
window.wgl_metabox_addon = new wgl_metabox_addon({});
});
function wgl_metabox_addon() {
var that = this;
that.set_tabs = wgl_metabox_tab;
that.set_dependancy = wgl_metaboxio_dependancy;
that.set_tabs();
that.set_dependancy(this);
$( ':input.rwmb-select_icon' ).each( update_icon );
$( '.rwmb-input' ).on( 'clone', ':input.rwmb-select_icon', update_icon );
}
function wgl_metabox_tab() {
var $item = $('#advanced-sortables');
$item.removeClass("meta-box-sortables ui-sortable");
var item_children = $('#advanced-sortables .postbox');
$item.wrapInner( "<div class='tabs-container'></div>");
$item.append('<div class="tabs__caption"></div>');
$(item_children).each( function() {
var clone = $(this).find('h2').clone().attr('data-item', $(this).attr('id'));
$('.tabs__caption').append(clone);
});
$(item_children).first().css( "display", "block" );
$('.tabs__caption h2').first().addClass('active');
$('.tabs__caption h2').on('click',function() {
var active = $(this).data('item');
$('.tabs__caption h2').removeClass('active');
$(this).addClass('active');
$(this).closest('#advanced-sortables').find('.postbox').css({'display' : 'none'});
$(this).closest('#advanced-sortables').find('.postbox').filter(function( index ) {
return $( this ).attr( "id" ) === active;
}).fadeIn('slow');
})
}
/**
* Gets the value either from the parent data
*/
function get_value(depend, item = null) {
if (!depend) {
return;
}
depend = $(depend)[0];
if (depend) {
if (depend.tagName == 'SELECT') {
return depend.value
} else if ( depend.tagName == 'DIV' ) {
if ($(depend).attr('id') == 'formatdiv') {
return $(depend).find('input[type=radio]:checked').val()
};
}
else if ( depend.tagName == 'INPUT' ) {
if ($(depend).hasClass('rwmb-image_select')) {
return $( depend ).val();
} else if ($(depend).hasClass('rwmb-button_group')) {
return $( depend ).val();
} else {
return $(depend).is(":checked");
}
}
} else {
return $( "input[name='"+item+"']:checked" ).val();
}
}
function wgl_metaboxio_dependancy($a) {
$('.rwmb-field').each( function() {
if (jQuery(this).find('.rwmb-input').is(':empty')) {
jQuery(this).closest('.rwmb-field').css({'display' : 'none'});
}
})
var rwmb_item = $('.rwmb-input').find('[data-conditional-logic]');
$(rwmb_item).each( function() {
var container = $(this).closest('.rwmb-field');
var depArray = $(this).data('conditionalLogic');
var $output = true;
var element = {};
for (var i = 0; i < depArray[0].length; i++) {
var $selector = depArray[0][i][0];
var depend = depArray[0][i][1];
var logicApply = depArray[0][i][2];
var $logicValue = get_value ($('#'+ $selector), $selector);
$output = $output && get_compare ($logicValue ,depend, logicApply);
if (typeof(element[$selector]) == 'undefined') {
var val = [depend, logicApply]
var metabox = [];
//Add properties to the element
metabox['properties'] = [val];
element[$selector] = metabox;
} else {
var val = [depend, logicApply];
Array.prototype.push.apply(element[$selector]['properties'], [val]);
}
};
for (var i = 0; i < Object.keys(element).length; i++) {
var item = $('#'+ Object.keys(element)[i]);
var event = 'change';
if (item.length === 0) {
if ($("input[name='"+Object.keys(element)[i]+"']").hasClass( "rwmb-image_select" )) {
item = $("input[name='"+Object.keys(element)[i]+"']").closest('.rwmb-image-select');
event = 'click';
}
if ($("input[name='"+Object.keys(element)[i]+"']").hasClass( "rwmb-button_group" )) {
item = $("input[name='"+Object.keys(element)[i]+"']").closest('label');
event = 'click';
}
}
item.on(event,function() {
var id = $(this).attr('id');
var scope = this;
if (!id) {
id = $(this).find('input').attr( "name" );
scope = $(this).find('input');
}
var $logicValue = get_value (scope);
var obj = element[id]['properties'];
var $return = true;
for (var i = 0; i < obj.length; i++) {
$return = $return && get_compare ($logicValue ,obj[i][0], obj[i][1]);
}
for (var i = 0; i < Object.keys(element).length; i++ ) {
id = Object.keys(element)[i];
$logicValue = get_value ('#'+id, id);
obj = element[id]['properties'];
$return = $return && get_compare ($logicValue ,obj[0][0], obj[0][1]);
}
visible_item($return, container);
});
}
visible_item($output, container);
})
}
function visible_item($output, container) {
//If return true show container
if ($output) {
container.fadeIn(400);
} else {
container.fadeOut(400);
}
}
/**
* Determines and validates what comparison operator to use.
*/
function get_compare ($logicValue, depend, logicApply) {
if (depend == '=') {
return $logicValue == logicApply;
} else if (depend == '!=') {
return $logicValue != logicApply;
}
}
function update_icon() {
/**
* Update select with icon element
* Used for static & dynamic added elements (when clone)
*/
var self = $( this ),
obj = self.data( 'options' );
function formatState (result) {
if (!result.id) {
return result.text;
}
var $result = $(
'<span><i class="'+ result.element.value.toLowerCase() + '"/> ' + result.text + '</span>'
);
return $result;
};
function formatStateSelection (result) {
if (!result.id || 'function' === typeof jQuery().selectWoo) {
return result.text;
}
var $result = $(
'<span><i class="'+ result.element.value.toLowerCase() + '"/> ' + result.text + '</span>'
);
return $result;
};
//Customizes the way that search results are rendered.
obj['templateResult'] = formatState;
//Customizes the way that selections are rendered.
obj['templateSelection'] = formatStateSelection;
self.siblings( '.select2-container' ).remove();
self.select2( obj );
}
} )( jQuery );