File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/admin/assets/js/variables.js
/**
 * AutomateWoo Variables
 */
jQuery(function($) {
    AutomateWoo.Variables = {
        $meta_box: $('#aw_variables_box'),
        init: function(){
            this.init_clipboard();
            $(document.body).on( 'change keyup', '.aw-workflow-variable-parameter', this.update_preview_field );
            $(document.body).on( 'keypress', 'input.aw-workflow-variable-parameter', this.restrict_parameter_chars );
            this.$meta_box.on( 'click', '.aw-workflow-variable', this.open_modal );
        },
        /**
         *
         */
        init_clipboard: function() {
            var clipboard = new ClipboardJS('.aw-clipboard-btn', {
                text: function(trigger) {
                    return $('#aw_workflow_variable_preview_field').text();
                }
            });
            clipboard.on('success', function(e) {
                $('.aw-clipboard-btn').html('Copied!');
                setTimeout(function(){
                    AutomateWoo.Modal.close();
                }, 500 );
            });
        },
        open_modal: function(){
            AutomateWoo.Modal.open( 'ajax' );
            AutomateWoo.Modal.loading();
            var ajax_data = {
                action: 'aw_modal_variable_info',
                variable: $(this).text()
            };
            $.post( ajaxurl, ajax_data, function( response ){
                AutomateWoo.Modal.contents( response );
                AutomateWoo.Variables.update_preview_field();
            });
        },
        /**
         * Updates the variable preview text field
         */
        update_preview_field: function() {
            var $preview_field = $('#aw_workflow_variable_preview_field');
            var variable = $preview_field.data('variable');
            var parameters = [];
            $('.aw-workflow-variable-parameter').each(function(){
                var $param_row = $(this).parents('.aw-workflow-variables-parameter-row:first');
                // Check 'show' logic
                if ( $param_row.data('parameter-show') ) {
                    var show_logic = $param_row.data('parameter-show').split('=');
                    var $condition_field = $('.aw-workflow-variable-parameter[name="' + show_logic[0] + '"]');
                    if ( $condition_field.length && $condition_field.val() == show_logic[1] ) {
                        $param_row.show();
                    } else {
                        $param_row.hide();
                        return; // don't add parameter to preview
                    }
                }
                var param = {
                    name: $(this).attr('name'),
                    required: $param_row.data('is-required'),
                    value: $(this).val()
                };
                parameters.push( param );
            });
            var string = AutomateWoo.Variables.generate_variable_string( variable, parameters );
            $preview_field.text( string );
            AutomateWoo.Modal.position();
        },
        /**
         *
         * @param variable
         * @param parameters
         */
        generate_variable_string: function( variable, parameters ) {
            var string = '{{ ' + variable;
            if ( parameters.length ) {
                var param_parts = [];
                $.each( parameters, function( i, param ) {
                    if ( param.value ) {
                        param_parts.push( param.name + ": '" + param.value + "'" );
                    }
                    else if ( param.required ) {
                        param_parts.push( param.name + ": '...'" );
                    }
                });
                if ( param_parts.length > 0 ) {
                    string += ' | ';
                    string += param_parts.join( ', ' );
                }
            }
            return string + ' }}';
        },
        /**
         *
         * @param e
         */
        restrict_parameter_chars: function(e) {
            var restricted = [ 39, 123, 124, 125 ];
            if ( $.inArray( e.which, restricted ) !== -1 )
                return false;
        }
    };
    AutomateWoo.Variables.init();
});