File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/admin/assets/js/min/rules.min.js.map
{"version":3,"sources":["rules.js"],"names":["$","data","AW","Rules","Backbone","Model","extend","initialize","app","this","ruleOptions","get","_","each","rawRuleGroup","group","RuleGroup","rules","rawRule","rule","Rule","set","name","resetOptions","compare","value","selected","push","resetAvailableRules","defaults","allRules","availableRules","trigger","workflow","filter","supplied_data_items","indexOf","data_item","groupedRules","isRuleAvailable","rule_name","names","pluck","clearIncompatibleRules","rulesToRemove","ruleGroup","clear","createGroup","groups","createRule","removeGroup","id","index","map","destroy","splice","uniqueId","getRuleObject","ruleObject","loadSelectOptions","self","type","select_choices","getJSON","ajaxurl","action","response","success","removeRule","length","RuleView","View","className","template","wp","events","change .js-rule-select","change .js-rule-compare-field","change .js-rule-value-field","click .js-remove-rule","change .js-rule-value-from","listenTo","model","render","remove","$el","html","toJSON","fieldNameBase","getFieldNameBase","setName","setCompare","setValue","maybeToggleValueDisplay","initDatepicker","document","body","find","val","$compareField","$option","optionValue","prop","$value_field","selected_title","selected_id","is","isArray","i","append","text","attr","$fields","thisModel","hasMultipleValueFields","el","isObject","Object","keys","forEach","key","updatedName","e","target","updatedCompare","updatedValue","object","has_multiple_value_fields","$valueFields","addClass","removeClass","datepicker","dateFormat","showButtonPanel","updateMinFromValueDate","$from","$to","RuleGroupView","click .js-add-rule","refreshRules","empty","view","addRule","undelegateEvents","RulesView","$meta_box","click .js-add-rule-group","maybeShowEmptyMessage","$groups","addEmptyMessage","addGroup","removeEmptyMessage","rawRuleOptions","rulesView","jQuery","automatewooWorkflowLocalizeScript"],"mappings":"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","file":"rules.min.js","sourcesContent":["(function( $, data ) {\n\n // MODELS\n\n AW.Rules = Backbone.Model.extend({\n\n\n initialize: function() {\n\n var app = this;\n var ruleOptions = [];\n\n if ( this.get( 'rawRuleOptions' ) ) {\n\n // convert rule options from json to models\n\n _.each( this.get( 'rawRuleOptions' ), function( rawRuleGroup ) {\n\n var group = new AW.RuleGroup( app );\n var rules = [];\n\n _.each( rawRuleGroup, function( rawRule ) {\n\n var rule = new AW.Rule( group );\n\n rule.set('name', rawRule.name );\n rule.resetOptions();\n rule.set('compare', rawRule.compare );\n rule.set('value', rawRule.value );\n\n // for objects\n if ( rawRule.selected ) {\n rule.set( 'selected', rawRule.selected );\n }\n\n rules.push( rule );\n });\n\n group.set( 'rules', rules );\n ruleOptions.push( group );\n\n });\n\n }\n\n this.set('ruleOptions', ruleOptions );\n\n this.resetAvailableRules();\n },\n\n\n defaults: function() {\n return {\n\n allRules: {},\n availableRules: {},\n\n // array of condition group models\n ruleOptions: []\n\n };\n },\n\n\n resetAvailableRules: function(){\n // calculate available conditions based on the selected trigger\n\n var trigger = AW.workflow.get('trigger');\n\n this.set('availableRules', _.filter( this.get('allRules'), function(rule) {\n return trigger && trigger.supplied_data_items.indexOf(rule.data_item) !== -1;\n }));\n\n\n // put rules into groups for select\n var groupedRules = {};\n\n _.each( this.get('availableRules'), function( rule ){\n\n if ( ! groupedRules[rule.group] ) groupedRules[rule.group] = [];\n groupedRules[rule.group].push(rule);\n\n });\n\n this.set( 'groupedRules', groupedRules );\n },\n\n\n isRuleAvailable: function( rule_name ) {\n var availableRules = AW.rules.get('availableRules');\n var names = _.pluck( availableRules, 'name' );\n return _.indexOf( names, rule_name ) !== -1;\n },\n\n\n clearIncompatibleRules: function() {\n\n var rulesToRemove = [];\n\n _.each( AW.rules.get( 'ruleOptions' ), function( ruleGroup ) {\n _.each( ruleGroup.get( 'rules' ), function( rule ) {\n if ( rule && ! AW.rules.isRuleAvailable( rule.get('name') ) ) {\n rulesToRemove.push( rule );\n }\n });\n });\n\n // clear out of initial loop to avoid index changing issues, when rules are cleared\n _.each( rulesToRemove, function( rule ) {\n rule.clear();\n });\n },\n\n\n\n createGroup: function() {\n\n var groups = this.get('ruleOptions');\n\n var group = new AW.RuleGroup( this );\n group.createRule();\n groups.push( group );\n\n this.set( 'ruleOptions', groups );\n this.trigger('ruleGroupChange');\n\n return group;\n },\n\n\n removeGroup: function( id ) {\n\n var groups = this.get('ruleOptions');\n\n // find index - note we cant use _.findIndex due to backwards compatibility\n var index = groups.map( function( group ) {\n return group.id;\n }).indexOf( id );\n\n groups[index].destroy();\n groups.splice( index, 1 );\n this.set( 'ruleOptions', groups );\n this.trigger('ruleGroupChange');\n }\n\n });\n\n\n\n AW.Rule = Backbone.Model.extend({\n\n initialize: function( group ) {\n this.set( 'id', _.uniqueId( 'rule_' ) );\n this.set( 'group', group );\n\n this.resetOptions();\n },\n\n\n getRuleObject: function() {\n return data.allRules[ this.get('name') ];\n },\n\n\n resetOptions: function() {\n\n var name = this.get('name');\n var ruleObject = this.getRuleObject();\n\n if ( name ) {\n this.set( 'object', ruleObject );\n }\n else {\n this.set( 'object', {} );\n }\n\n this.set( 'compare', false );\n this.set( 'value', false );\n\n this.loadSelectOptions();\n\n return this;\n },\n\n\n\n /**\n * async gather rule select choices, if not already loaded\n */\n loadSelectOptions: function() {\n\n var self = this;\n var ruleObject = this.getRuleObject();\n\n if ( ! ruleObject || ruleObject.type !== 'select' || ruleObject.select_choices ) {\n return this;\n }\n\n self.set( 'isValueLoading', true );\n\n $.getJSON( ajaxurl, {\n action: 'aw_get_rule_select_choices',\n rule_name: ruleObject.name\n }, function( response ) {\n\n if ( ! response.success )\n return;\n\n ruleObject.select_choices = response.data.select_choices;\n\n self.set( 'isValueLoading', false );\n self.set( 'object', ruleObject );\n self.trigger('optionsLoaded');\n });\n\n return this;\n },\n\n\n clear: function() {\n var group = this.get('group');\n group.removeRule( this.id );\n },\n\n\n destroy: function() {\n this.trigger('destroy');\n }\n\n });\n\n\n\n AW.RuleGroup = Backbone.Model.extend({\n\n initialize: function( app ) {\n this.set( 'id', _.uniqueId('rule_group_') );\n this.set( 'app', app );\n this.set( 'rules', [] );\n },\n\n\n createRule: function() {\n var rules = this.get('rules');\n var rule = new AW.Rule( this );\n rules.push( rule );\n this.set( 'rules', rules );\n return rule;\n },\n\n\n removeRule: function( id ) {\n\n var rules = this.get('rules');\n\n // find rule index - note we cant use _.findIndex due to backwards compatibility\n var index = rules.map( function( rule ) {\n return rule.id;\n }).indexOf( id );\n\n // if only 1 rule left delete the whole group object\n if ( rules.length > 1 ) {\n rules[index].destroy();\n rules.splice( index, 1 );\n this.set( 'rules', rules );\n }\n else {\n rules[index].destroy(); // destroy the last rule\n this.clear();\n }\n },\n\n\n clear: function() {\n var app = this.get('app');\n app.removeGroup( this.id );\n },\n\n\n destroy: function() {\n this.trigger('destroy');\n }\n\n });\n\n\n // VIEWS\n\n\n AW.RuleView = Backbone.View.extend({\n\n className: 'automatewoo-rule-container',\n\n template: wp.template( 'aw-rule' ),\n\n events: {\n 'change .js-rule-select': 'updatedName',\n 'change .js-rule-compare-field': 'updatedCompare',\n 'change .js-rule-value-field': 'updatedValue',\n 'click .js-remove-rule': 'clear',\n 'change .js-rule-value-from': 'updateMinFromValueDate',\n },\n\n\n initialize: function() {\n this.listenTo( this.model, 'change:id', this.render );\n this.listenTo( this.model, 'change:group', this.render );\n this.listenTo( this.model, 'optionsLoaded', this.render );\n this.listenTo( this.model, 'destroy', this.remove );\n },\n\n\n render: function() {\n\n var self = this;\n\n self.$el.html( self.template({\n rule: self.model.toJSON(),\n groupedRules: AW.rules.get('groupedRules'),\n fieldNameBase: self.getFieldNameBase()\n }));\n\n self.setName();\n self.setCompare();\n self.setValue();\n self.maybeToggleValueDisplay();\n self.initDatepicker();\n\n $(document.body).trigger('wc-enhanced-select-init');\n\n return this;\n },\n\n\n setName: function() {\n this.$el.find('.js-rule-select').val( this.model.get('name') );\n },\n\n\n setCompare: function() {\n var $compareField = this.$el.find( '.js-rule-compare-field' );\n var compare = this.model.get( 'compare' );\n\n // Default selected value to first option.\n if ( $compareField.filter( 'select' ).length && ! compare ) {\n var $option = $compareField.find( 'option:first-child' );\n var optionValue = $compareField.find( 'option:first-child' ).prop( 'value' );\n\n $option.prop( 'selected', true );\n $compareField.val( optionValue );\n this.model.set( 'compare', optionValue );\n }\n\n if ( compare ) {\n $compareField.val( compare );\n $compareField.find( 'option[value~=\"' + compare + '\"]' ).prop( 'selected', true );\n }\n },\n\n\n setValue: function() {\n var selected_title = this.model.get('selected');\n var selected_id = this.model.get('value');\n var $value_field;\n\n if ( selected_title ) {\n\n $value_field = this.$el.find('.js-rule-value-field');\n\n if ( $value_field.is('select') ) {\n\n if ( _.isArray( selected_id ) ) {\n _.each( selected_id, function( id, i ){\n $value_field.append( $('<option>', {\n value: id,\n text: selected_title[i],\n }) );\n });\n } else {\n $value_field.append( $('<option>', {\n value: selected_id,\n text: selected_title\n }) );\n }\n }\n else {\n // wc 3.0\n $value_field.attr( 'data-selected', selected_title );\n }\n }\n\n if ( selected_id ) {\n\n var $fields = this.$el.find('.js-rule-value-field');\n var thisModel = this;\n\n if ( this.hasMultipleValueFields() ) {\n if ( _.isArray( selected_id ) ) {\n $fields.each(function( i, el ){\n $(el).val( selected_id[i] );\n });\n }\n\n if ( _.isObject( selected_id ) ) {\n Object.keys( selected_id ).forEach( function (key) {\n $( '.js-rule-value-' + key, thisModel.$el ).val( selected_id[key] );\n } );\n }\n }\n else {\n $fields.val( selected_id );\n }\n }\n },\n\n\n updatedName: function(e) {\n this.model.set( 'name', e.target.value ).resetOptions();\n this.render();\n },\n\n\n updatedCompare: function(e) {\n this.model.set( 'compare', e.target.value );\n this.render();\n },\n\n\n /**\n * there can be more than one value field\n */\n updatedValue: function(e) {\n\n var value;\n\n if ( this.hasMultipleValueFields() ) {\n value = [];\n\n this.$el.find('.js-rule-value-field').each(function() {\n value.push( $(this).val() );\n });\n }\n else {\n value = e.target.value;\n }\n\n this.model.set( 'value', value );\n },\n\n\n getFieldNameBase: function() {\n var id = this.model.get( 'id' );\n var group = this.model.get( 'group' );\n return 'aw_workflow_data[rule_options]['+group.id+']['+id+']';\n },\n\n\n clear: function() {\n this.model.clear();\n },\n\n\n /**\n * @return boolean\n */\n hasMultipleValueFields: function() {\n var object = this.model.get('object');\n return object && object.has_multiple_value_fields;\n },\n\n\n maybeToggleValueDisplay: function () {\n var compare = this.model.get( 'compare' );\n var $valueFields = this.$el.find( '[data-aw-compare]' );\n\n if ( $valueFields.length ) {\n // Hide value fields.\n $valueFields.addClass( 'aw-hidden' ).prop( 'required', false ).find( 'select, input' ).prop( 'required', false );\n\n // Show our selected rules.\n $valueFields.filter( '[data-aw-compare~=\"' + compare + '\"]' ).removeClass( 'aw-hidden' ).prop( 'required', true ).find( 'select, input' ).prop( 'required', true );\n }\n },\n\n initDatepicker: function() {\n this.$el.find( '.js-date-picker' ).datepicker( {\n dateFormat: 'yy-mm-dd',\n showButtonPanel: true,\n } );\n },\n\n updateMinFromValueDate: function () {\n var $from = this.$el.find( '.js-rule-value-from' );\n var $to = this.$el.find( '.js-rule-value-to' );\n\n if ( $from.length && $to.length ) {\n $to.datepicker( 'option', 'minDate', $from.val() );\n }\n }\n });\n\n\n\n\n AW.RuleGroupView = Backbone.View.extend({\n\n className: 'aw-rule-group',\n\n template: wp.template( 'aw-rule-group' ),\n\n events: {\n 'click .js-add-rule': 'addRule'\n },\n\n\n initialize: function() {\n this.listenTo( this.model, 'refreshRules', this.refreshRules );\n this.listenTo( this.model, 'change:id', this.refreshRules );\n this.listenTo( this.model, 'destroy', this.remove );\n },\n\n\n render: function() {\n\n var self = this;\n\n if ( self.model.get('rules').length ) {\n self.$el.html( self.template( self.model.toJSON() ) );\n\n self.$el.find('.rules').empty();\n\n _.each( self.model.get('rules'), function( rule ) {\n var view = new AW.RuleView({ model: rule } );\n self.$el.find( '.rules' ).append( view.render().el );\n });\n }\n\n $(document.body).trigger('wc-enhanced-select-init');\n\n return this;\n },\n\n\n addRule: function() {\n var model = this.model.createRule();\n var view = new AW.RuleView({ model: model } );\n\n this.$el.find( '.rules').append( view.render().el );\n\n $(document.body).trigger('wc-enhanced-select-init');\n\n return this;\n },\n\n\n refreshRules: function() {\n _.each(this.model.get('rules'), function( rule ) {\n rule.trigger('change:group');\n });\n },\n\n\n clear: function() {\n this.undelegateEvents();\n this.model.clear();\n }\n\n });\n\n\n\n AW.RulesView = Backbone.View.extend({\n\n /**\n * Element\n */\n el: $( '#aw-rules-container' ),\n\n $meta_box: $( '#aw_rules_box' ),\n\n template: wp.template( 'aw-rules-container' ),\n\n events: {\n 'click .js-add-rule-group': 'addGroup'\n },\n\n\n initialize: function(){\n this.listenTo( this.model, 'ruleGroupChange', this.maybeShowEmptyMessage );\n this.listenTo( this.model, 'change:groupedRules', this.refreshRules );\n\n this.render();\n },\n\n\n render: function() {\n\n var self = this,\n trigger = AW.workflow.get('trigger');\n\n self.$el.html( self.template({\n app: self,\n trigger: trigger\n }));\n\n var $groups = self.$el.find( '.aw-rule-groups' );\n var groups = self.model.get('ruleOptions');\n\n if ( groups.length ) {\n _.each( groups, function( group ){\n var view = new AW.RuleGroupView({ model: group } );\n $groups.append( view.render().el );\n });\n }\n else {\n this.addEmptyMessage();\n }\n\n\n $(document.body).trigger('wc-enhanced-select-init');\n\n return this;\n },\n\n\n addGroup: function() {\n var model = this.model.createGroup();\n var view = new AW.RuleGroupView({ model: model } );\n\n this.$el.find( '.aw-rule-groups').append( view.render().el );\n\n $(document.body).trigger('wc-enhanced-select-init');\n\n return this;\n },\n\n\n maybeShowEmptyMessage: function() {\n if ( this.model.get('ruleOptions').length ) {\n this.removeEmptyMessage();\n }\n else {\n this.addEmptyMessage();\n }\n },\n\n addEmptyMessage: function() {\n this.$el.find( '.aw-rule-groups' ).html( wp.template( 'aw-rule-groups-empty' ) );\n },\n\n\n removeEmptyMessage: function() {\n this.$el.find('.aw-rules-empty-message').remove();\n },\n\n\n refreshRules: function() {\n _.each( this.model.get('ruleOptions'), function( group ) {\n group.trigger('refreshRules');\n });\n },\n\n\n });\n\n\n $(function(){\n\n AW.rules = new AW.Rules({\n allRules: data.allRules,\n rawRuleOptions: data.ruleOptions\n });\n\n AW.rulesView = new AW.RulesView({\n model: AW.rules\n });\n\n });\n\n\n\n})( jQuery, automatewooWorkflowLocalizeScript );\n"]}