| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 | 
							- define([ "require", "backbone", "hbs!tmpl/search/QueryBuilder_tmpl", "hbs!tmpl/search/UserDefine_tmpl", "utils/Utils", "utils/CommonViewFunction", "utils/Enums", "utils/Globals", "moment", "query-builder", "daterangepicker" ], function(require, Backbone, QueryBuilderTmpl, UserDefineTmpl, Utils, CommonViewFunction, Enums, Globals, moment) {
 
-     var QueryBuilderView = Backbone.Marionette.LayoutView.extend({
 
-         _viewName: "QueryBuilderView",
 
-         template: QueryBuilderTmpl,
 
-         regions: {},
 
-         ui: {
 
-             builder: "#builder"
 
-         },
 
-         events: function() {
 
-             var events = {};
 
-             return events;
 
-         },
 
-         initialize: function(options) {
 
-             _.extend(this, _.pick(options, "attrObj", "value", "typeHeaders", "entityDefCollection", "enumDefCollection", "classificationDefCollection", "businessMetadataDefCollection", "tag", "type", "searchTableFilters", "systemAttrArr", "adminAttrFilters")), 
 
-             this.attrObj = _.sortBy(this.attrObj, "name"), this.filterType = this.tag ? "tagFilters" : "entityFilters", 
 
-             this.defaultRange = "Last 7 Days", this.dateRangesMap = {
 
-                 Today: [ moment(), moment() ],
 
-                 Yesterday: [ moment().subtract(1, "days"), moment().subtract(1, "days") ],
 
-                 "Last 7 Days": [ moment().subtract(6, "days"), moment() ],
 
-                 "Last 30 Days": [ moment().subtract(29, "days"), moment() ],
 
-                 "This Month": [ moment().startOf("month"), moment().endOf("month") ],
 
-                 "Last Month": [ moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month") ],
 
-                 "Last 3 Months": [ moment().subtract(3, "month").startOf("month"), moment().subtract(1, "month").endOf("month") ],
 
-                 "Last 6 Months": [ moment().subtract(6, "month").startOf("month"), moment().subtract(1, "month").endOf("month") ],
 
-                 "Last 12 Months": [ moment().subtract(12, "month").startOf("month"), moment().subtract(1, "month").endOf("month") ],
 
-                 "This Quarter": [ moment().startOf("quarter"), moment().endOf("quarter") ],
 
-                 "Last Quarter": [ moment().subtract(1, "quarter").startOf("quarter"), moment().subtract(1, "quarter").endOf("quarter") ],
 
-                 "This Year": [ moment().startOf("year"), moment().endOf("year") ],
 
-                 "Last Year": [ moment().subtract(1, "year").startOf("year"), moment().subtract(1, "year").endOf("year") ]
 
-             };
 
-         },
 
-         bindEvents: function() {},
 
-         getOperator: function(type, skipDefault) {
 
-             var obj = {
 
-                 operators: null
 
-             };
 
-             return "string" === type && (obj.operators = [ "=", "!=", "contains", "begins_with", "ends_with" ], 
 
-             this.adminAttrFilters && (obj.operators = obj.operators.concat([ "like", "in" ]))), 
 
-             "date" === type && (obj.operators = [ "=", "!=", ">", "<", ">=", "<=", "TIME_RANGE" ]), 
 
-             "int" !== type && "byte" !== type && "short" !== type && "long" !== type && "float" !== type && "double" !== type || (obj.operators = [ "=", "!=", ">", "<", ">=", "<=" ]), 
 
-             "enum" !== type && "boolean" !== type || (obj.operators = [ "=", "!=" ]), _.isEmpty(skipDefault) && obj.operators && (obj.operators = obj.operators.concat([ "is_null", "not_null" ])), 
 
-             obj;
 
-         },
 
-         isPrimitive: function(type) {
 
-             return "int" === type || "byte" === type || "short" === type || "long" === type || "float" === type || "double" === type || "string" === type || "boolean" === type || "date" === type;
 
-         },
 
-         getUserDefineInput: function() {
 
-             return UserDefineTmpl();
 
-         },
 
-         getObjDef: function(attrObj, rules, isGroup, groupType, isSystemAttr) {
 
-             var that = this;
 
-             if ("__classificationsText" !== attrObj.name && "__historicalGuids" !== attrObj.name) {
 
-                 var getLableWithType = function(label, name) {
 
-                     return "__classificationNames" === name || "__customAttributes" === name || "__labels" === name || "__propagatedClassificationNames" === name ? label : label + " (" + attrObj.typeName + ")";
 
-                 }, label = Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name.capitalize()), obj = {
 
-                     id: attrObj.name,
 
-                     label: getLableWithType(label, attrObj.name),
 
-                     plainLabel: label,
 
-                     type: _.escape(attrObj.typeName),
 
-                     validation: {
 
-                         callback: function(value, rule) {
 
-                             return rule.operator.nb_inputs === !1 || !_.isEmpty(value) || !value instanceof Error || (value instanceof Error ? value.message : rule.filter.plainLabel + " is required");
 
-                         }
 
-                     }
 
-                 };
 
-                 if (isGroup && (obj.optgroup = groupType), isSystemAttr && "__isIncomplete" === attrObj.name || isSystemAttr && "IsIncomplete" === attrObj.name) return obj.type = "boolean", 
 
-                 obj.label = (Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name.capitalize())) + " (boolean)", 
 
-                 obj.input = "select", obj.values = [ {
 
-                     1: "true"
 
-                 }, {
 
-                     0: "false"
 
-                 } ], _.extend(obj, this.getOperator("boolean")), obj;
 
-                 if (isSystemAttr && "Status" === attrObj.name || isSystemAttr && "__state" === attrObj.name || isSystemAttr && "__entityStatus" === attrObj.name) return obj.label = (Enums.systemAttributes[attrObj.name] ? Enums.systemAttributes[attrObj.name] : _.escape(attrObj.name.capitalize())) + " (enum)", 
 
-                 obj.input = "select", obj.values = [ "ACTIVE", "DELETED" ], _.extend(obj, this.getOperator("boolean", !0)), 
 
-                 obj;
 
-                 if (isSystemAttr && "__classificationNames" === attrObj.name || "__propagatedClassificationNames" === attrObj.name) return obj.plugin = "select2", 
 
-                 obj.input = "select", obj.plugin_config = {
 
-                     placeholder: "Select classfication",
 
-                     tags: !0,
 
-                     multiple: !1,
 
-                     data: this.classificationDefCollection.fullCollection.models.map(function(o) {
 
-                         return {
 
-                             id: o.get("name"),
 
-                             text: o.get("name")
 
-                         };
 
-                     })
 
-                 }, obj.valueSetter = function(rule) {
 
-                     if (rule && !_.isEmpty(rule.value)) {
 
-                         var selectEl = rule.$el.find(".rule-value-container select"), valFound = that.classificationDefCollection.fullCollection.find(function(o) {
 
-                             return o.get("name") === rule.value;
 
-                         });
 
-                         if (valFound) selectEl.val(rule.value).trigger("change"); else {
 
-                             var newOption = new Option(rule.value, rule.value, !1, !1);
 
-                             selectEl.append(newOption).val(rule.value);
 
-                         }
 
-                     }
 
-                 }, _.extend(obj, this.getOperator("string")), obj;
 
-                 if (isSystemAttr && "__customAttributes" === attrObj.name) return obj.input = function(rule) {
 
-                     return rule && rule.operator && rule.operator.nb_inputs ? that.getUserDefineInput() : null;
 
-                 }, obj.valueGetter = function(rule) {
 
-                     if (rule && rule.operator && "contains" === rule.operator.type) {
 
-                         var $el = rule.$el.find(".rule-value-container"), key = $el.find("[data-type='key']").val(), val = $el.find("[data-type='value']").val();
 
-                         return _.isEmpty(key) || _.isEmpty(val) ? new Error("Key & Value is Required") : key + "=" + val;
 
-                     }
 
-                     return [];
 
-                 }, obj.valueSetter = function(rule) {
 
-                     if (rule && !rule.$el.hasClass("user-define") && rule.$el.addClass("user-define"), 
 
-                     rule && rule.value && rule.value.length && !(rule.value instanceof Error)) {
 
-                         var $el = rule.$el.find(".rule-value-container"), value = rule.value.split("=");
 
-                         value && ($el.find("[data-type='key']").val(value[0]), $el.find("[data-type='value']").val(value[1]));
 
-                     }
 
-                 }, obj.operators = [ "contains", "is_null", "not_null" ], obj;
 
-                 if (isSystemAttr && "__typeName" === attrObj.name) {
 
-                     var entityType = [];
 
-                     return that.typeHeaders.fullCollection.each(function(model) {
 
-                         (1 == that.type && "ENTITY" == model.get("category") || 1 == that.tag && "CLASSIFICATION" == model.get("category")) && entityType.push({
 
-                             id: model.get("name"),
 
-                             text: model.get("name")
 
-                         });
 
-                     }), obj.plugin = "select2", obj.input = "select", obj.plugin_config = {
 
-                         placeholder: "请选择类型",
 
-                         tags: !0,
 
-                         multiple: !1,
 
-                         data: entityType
 
-                     }, obj.valueSetter = function(rule) {
 
-                         if (rule && !_.isEmpty(rule.value)) {
 
-                             var selectEl = rule.$el.find(".rule-value-container select"), valFound = that.typeHeaders.fullCollection.find(function(o) {
 
-                                 return o.get("name") === rule.value;
 
-                             });
 
-                             if (valFound) selectEl.val(rule.value).trigger("change"); else {
 
-                                 var newOption = new Option(rule.value, rule.value, !1, !1);
 
-                                 selectEl.append(newOption).val(rule.value);
 
-                             }
 
-                         }
 
-                     }, _.extend(obj, this.getOperator("string")), obj;
 
-                 }
 
-                 if ("date" === obj.type) return obj.plugin = "daterangepicker", obj.plugin_config = this.getDateConfig(rules, obj.id), 
 
-                 _.extend(obj, this.getOperator(obj.type)), obj;
 
-                 if (this.isPrimitive(obj.type)) return "boolean" === obj.type && (obj.input = "select", 
 
-                 obj.values = [ "true", "false" ]), _.extend(obj, this.getOperator(obj.type, !1)), 
 
-                 _.has(Enums.regex.RANGE_CHECK, obj.type) && (obj.validation = {
 
-                     min: Enums.regex.RANGE_CHECK[obj.type].min,
 
-                     max: Enums.regex.RANGE_CHECK[obj.type].max
 
-                 }, "double" === obj.type || "float" === obj.type ? obj.type = "double" : "int" !== obj.type && "byte" !== obj.type && "short" !== obj.type && "long" !== obj.type || (obj.type = "integer")), 
 
-                 obj;
 
-                 var enumObj = this.enumDefCollection.fullCollection.find({
 
-                     name: obj.type
 
-                 });
 
-                 if (enumObj) {
 
-                     obj.type = "string", obj.input = "select";
 
-                     var value = [];
 
-                     return _.each(enumObj.get("elementDefs"), function(o) {
 
-                         value.push(o.value);
 
-                     }), obj.values = value, _.extend(obj, this.getOperator("enum")), obj;
 
-                 }
 
-             }
 
-         },
 
-         getDateConfig: function(ruleObj, id, operator) {
 
-             var valueObj = ruleObj ? _.find(ruleObj.rules, {
 
-                 id: id
 
-             }) || {} : {}, isTimeRange = valueObj.operator && "TIME_RANGE" === valueObj.operator && "TIME_RANGE" === operator || "TIME_RANGE" === operator, obj = {
 
-                 opens: "center",
 
-                 autoApply: !0,
 
-                 autoUpdateInput: !1,
 
-                 timePickerSeconds: !0,
 
-                 timePicker: !0,
 
-                 locale: {
 
-                     format: Globals.dateTimeFormat
 
-                 }
 
-             };
 
-             if (isTimeRange) {
 
-                 var defaultRangeDate = this.dateRangesMap[this.defaultRange];
 
-                 obj.startDate = defaultRangeDate[0], obj.endDate = defaultRangeDate[1], obj.singleDatePicker = !1, 
 
-                 obj.ranges = this.dateRangesMap;
 
-             } else obj.singleDatePicker = !0, obj.startDate = moment(), obj.endDate = obj.startDate;
 
-             if (!_.isEmpty(valueObj) && operator === valueObj.operator) if (isTimeRange) {
 
-                 if (valueObj.value.indexOf("-") > -1) {
 
-                     var dates = valueObj.value.split("-");
 
-                     obj.startDate = dates[0].trim(), obj.endDate = dates[1].trim();
 
-                 } else {
 
-                     var dates = this.dateRangesMap[valueObj.value];
 
-                     obj.startDate = dates[0], obj.endDate = dates[1];
 
-                 }
 
-                 obj.singleDatePicker = !1;
 
-             } else obj.startDate = moment(Date.parse(valueObj.value)), obj.endDate = obj.startDate, 
 
-             obj.singleDatePicker = !0;
 
-             return obj;
 
-         },
 
-         setDateValue: function(rule, rules_widgets) {
 
-             if ("date" === rule.filter.type && rule.operator.nb_inputs) {
 
-                 var inputEl = rule.$el.find(".rule-value-container").find("input"), datepickerEl = rule.$el.find(".rule-value-container").find("input").data("daterangepicker");
 
-                 if (inputEl.attr("readonly", !0), datepickerEl) {
 
-                     datepickerEl.remove();
 
-                     var configObj = this.getDateConfig(rules_widgets, rule.filter.id, rule.operator.type);
 
-                     inputEl.daterangepicker(configObj), "TIME_RANGE" === rule.operator.type ? rule.value = this.defaultRange : rule.value = configObj.startDate.format(Globals.dateTimeFormat), 
 
-                     inputEl.on("apply.daterangepicker", function(ev, picker) {
 
-                         picker.setStartDate(picker.startDate), picker.setEndDate(picker.endDate);
 
-                         var valueString = "";
 
-                         valueString = picker.chosenLabel ? "Custom Range" === picker.chosenLabel ? picker.startDate.format(Globals.dateTimeFormat) + " - " + picker.endDate.format(Globals.dateTimeFormat) : picker.chosenLabel : picker.startDate.format(Globals.dateTimeFormat), 
 
-                         picker.element.val(valueString), rule.value = valueString;
 
-                     });
 
-                 }
 
-             }
 
-         },
 
-         onRender: function() {
 
-             var that = this, filters = [], isGroupView = !0, placeHolder = "--Select Attribute--", rules_widgets = null;
 
-             if (this.adminAttrFilters) {
 
-                 var entityDef = this.entityDefCollection.fullCollection.find({
 
-                     name: "__AtlasAuditEntry"
 
-                 }), auditEntryAttributeDefs = null;
 
-                 entityDef && (auditEntryAttributeDefs = $.extend(!0, {}, entityDef.get("attributeDefs")) || null), 
 
-                 auditEntryAttributeDefs && _.each(auditEntryAttributeDefs, function(attributes) {
 
-                     var returnObj = that.getObjDef(attributes, rules_widgets);
 
-                     returnObj && filters.push(returnObj);
 
-                 }), rules_widgets = CommonViewFunction.attributeFilter.extractUrl({
 
-                     value: this.searchTableFilters ? this.searchTableFilters.adminAttrFilters : null,
 
-                     formatDate: !0
 
-                 });
 
-             } else {
 
-                 this.value && (rules_widgets = CommonViewFunction.attributeFilter.extractUrl({
 
-                     value: this.searchTableFilters[this.filterType][this.tag ? this.value.tag : this.value.type],
 
-                     formatDate: !0
 
-                 })), _.each(this.attrObj, function(obj) {
 
-                     var type = that.tag ? that.value.tag : that.value.type, returnObj = that.getObjDef(obj, rules_widgets, isGroupView, type + " Attribute");
 
-                     returnObj && filters.push(returnObj);
 
-                 });
 
-                 var sortMap = {
 
-                     __guid: 1,
 
-                     __typeName: 2,
 
-                     __timestamp: 3,
 
-                     __modificationTimestamp: 4,
 
-                     __createdBy: 5,
 
-                     __modifiedBy: 6,
 
-                     __isIncomplete: 7,
 
-                     __classificationNames: 9,
 
-                     __propagatedClassificationNames: 10,
 
-                     __labels: 11,
 
-                     __customAttributes: 12
 
-                 };
 
-                 if (that.type ? sortMap.__state = 8 : sortMap.__entityStatus = 8, this.systemAttrArr = _.sortBy(this.systemAttrArr, function(obj) {
 
-                     return sortMap[obj.name];
 
-                 }), _.each(this.systemAttrArr, function(obj) {
 
-                     var returnObj = that.getObjDef(obj, rules_widgets, isGroupView, "System Attribute", !0);
 
-                     returnObj && filters.push(returnObj);
 
-                 }), this.type) {
 
-                     var pushBusinessMetadataFilter = function(sortedAttributes, businessMetadataKey) {
 
-                         _.each(sortedAttributes, function(attrDetails) {
 
-                             var returnObj = that.getObjDef(attrDetails, rules_widgets, isGroupView, "Business Attributes: " + businessMetadataKey);
 
-                             returnObj && (returnObj.id = businessMetadataKey + "." + returnObj.id, returnObj.label = returnObj.label, 
 
-                             returnObj.data = {
 
-                                 entityType: "businessMetadata"
 
-                             }, filters.push(returnObj));
 
-                         });
 
-                     };
 
-                     if ("_ALL_ENTITY_TYPES" == this.value.type) this.businessMetadataDefCollection.each(function(model) {
 
-                         var sortedAttributes = model.get("attributeDefs");
 
-                         sortedAttributes = _.sortBy(sortedAttributes, function(obj) {
 
-                             return obj.name;
 
-                         }), pushBusinessMetadataFilter(sortedAttributes, model.get("name"));
 
-                     }); else {
 
-                         var entityDef = this.entityDefCollection.fullCollection.find({
 
-                             name: this.value.type
 
-                         }), businessMetadataAttributeDefs = null;
 
-                         entityDef && (businessMetadataAttributeDefs = entityDef.get("businessAttributeDefs")), 
 
-                         businessMetadataAttributeDefs && _.each(businessMetadataAttributeDefs, function(attributes, key) {
 
-                             var sortedAttributes = _.sortBy(attributes, function(obj) {
 
-                                 return obj.name;
 
-                             });
 
-                             pushBusinessMetadataFilter(sortedAttributes, key);
 
-                         });
 
-                     }
 
-                 }
 
-             }
 
-             if (filters = _.uniq(filters, "id"), filters && !_.isEmpty(filters)) {
 
-                 this.ui.builder.off().on("afterUpdateRuleOperator.queryBuilder", function(e, rule) {
 
-                     that.setDateValue(rule, rules_widgets);
 
-                 }).queryBuilder({
 
-                     plugins: [ "bt-tooltip-errors" ],
 
-                     filters: filters,
 
-                     select_placeholder: placeHolder,
 
-                     allow_empty: !0,
 
-                     conditions: [ "AND", "OR" ],
 
-                     allow_groups: !0,
 
-                     allow_empty: !0,
 
-                     templates: {
 
-                         rule: '<div id="{{= it.rule_id }}" class="rule-container">                                       <div class="values-box"><div class="rule-filter-container"></div>                                       <div class="rule-operator-container"></div>                                       <div class="rule-value-container"></div></div>                                       <div class="action-box"><div class="rule-header">                                         <div class="btn-group rule-actions">                                           <button type="button" class="btn btn-xs btn-danger" data-delete="rule">                                             <i class="{{= it.icons.remove_rule }}"></i>                                           </button>                                         </div>                                       </div> </div>                                      {{? it.settings.display_errors }}                                         <div class="error-container"><i class="{{= it.icons.error }}"></i> <span></span></div>                                       {{?}}                                 </div>'
 
-                     },
 
-                     operators: [ {
 
-                         type: "=",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean", "enum" ]
 
-                     }, {
 
-                         type: "!=",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean", "enum" ]
 
-                     }, {
 
-                         type: ">",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean" ]
 
-                     }, {
 
-                         type: "<",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean" ]
 
-                     }, {
 
-                         type: ">=",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean" ]
 
-                     }, {
 
-                         type: "<=",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean" ]
 
-                     }, {
 
-                         type: "contains",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "string" ]
 
-                     }, {
 
-                         type: "like",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "string" ]
 
-                     }, {
 
-                         type: "in",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "string" ]
 
-                     }, {
 
-                         type: "begins_with",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "string" ]
 
-                     }, {
 
-                         type: "ends_with",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "string" ]
 
-                     }, {
 
-                         type: "is_null",
 
-                         nb_inputs: !1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean", "enum" ]
 
-                     }, {
 
-                         type: "not_null",
 
-                         nb_inputs: !1,
 
-                         multiple: !1,
 
-                         apply_to: [ "number", "string", "boolean", "enum" ]
 
-                     }, {
 
-                         type: "TIME_RANGE",
 
-                         nb_inputs: 1,
 
-                         multiple: !1,
 
-                         apply_to: [ "date" ]
 
-                     } ],
 
-                     lang: {
 
-                         add_rule: "Add filter",
 
-                         add_group: "Add filter group",
 
-                         operators: {
 
-                             not_null: "is not null",
 
-                             TIME_RANGE: "Time Range"
 
-                         }
 
-                     },
 
-                     icons: {
 
-                         add_rule: "fa fa-plus",
 
-                         remove_rule: "fa fa-times",
 
-                         error: "fa fa-exclamation-triangle"
 
-                     },
 
-                     rules: rules_widgets
 
-                 }).on("afterCreateRuleInput.queryBuilder", function(e, rule) {
 
-                     rule.error = null, rule.operator.nb_inputs && "__customAttributes" === rule.filter.id ? rule.$el.addClass("user-define") : rule.$el.hasClass("user-define") && rule.$el.removeClass("user-define"), 
 
-                     "date" === rule.filter.type && rule.$el.find(".rule-value-container >input").attr("readonly", !0), 
 
-                     that.setDateValue(rule, rules_widgets);
 
-                 }).on("validationError.queryBuilder", function(e, rule, error, value) {
 
-                     var errorMsg = error[0];
 
-                     that.queryBuilderLang && that.queryBuilderLang.errors && that.queryBuilderLang.errors[errorMsg] && (errorMsg = that.queryBuilderLang.errors[errorMsg]), 
 
-                     rule.$el.find(".error-container span").html(errorMsg);
 
-                 });
 
-                 var queryBuilderEl = that.ui.builder.data("queryBuilder");
 
-                 queryBuilderEl && queryBuilderEl.lang && (this.queryBuilderLang = queryBuilderEl.lang), 
 
-                 this.$(".rules-group-header .btn-group.pull-right.group-actions").toggleClass("pull-left");
 
-             } else this.ui.builder.html("<h4>No Attributes are available !</h4>");
 
-         }
 
-     });
 
-     return QueryBuilderView;
 
- });
 
 
  |