/** * Allowed types and their internal representation */ QueryBuilder.types = { 'string': 'string', 'integer': 'number', 'double': 'number', 'date': 'datetime', 'time': 'datetime', 'datetime': 'datetime', 'boolean': 'boolean' }; /** * Allowed inputs */ QueryBuilder.inputs = [ 'text', 'textarea', 'radio', 'checkbox', 'select' ]; /** * Runtime modifiable options with `setOptions` method */ QueryBuilder.modifiable_options = [ 'display_errors', 'allow_groups', 'allow_empty' ]; /** * CSS selectors for common components */ var Selectors = QueryBuilder.selectors = { group_container: '.rules-group-container', rule_container: '.rule-container', filter_container: '.rule-filter-container', operator_container: '.rule-operator-container', value_container: '.rule-value-container', error_container: '.error-container', condition_container: '.group-conditions', rule_header: '.rule-header', group_header: '.rules-group-header', group_actions: '.group-actions', rule_actions: '.rule-actions', rules_list: '.rules-group-body>.rules-list', group_condition: '.rules-group-header [name$=_cond]', rule_filter: '.rule-filter-container [name$=_filter]', rule_operator: '.rule-operator-container [name$=_operator]', rule_value: '.rule-value-container [name*=_value_]', add_rule: '[data-add=rule]', delete_rule: '[data-delete=rule]', add_group: '[data-add=group]', delete_group: '[data-delete=group]' }; /** * Template strings (see `template.js`) */ QueryBuilder.templates = {}; /** * Localized strings (see `i18n/`) */ QueryBuilder.regional = {}; /** * Default configuration */ QueryBuilder.DEFAULTS = { filters: [], plugins: [], display_errors: true, allow_groups: -1, allow_empty: false, conditions: ['AND', 'OR'], default_condition: 'AND', inputs_separator: ' , ', select_placeholder: '------', display_empty_filter: true, default_filter: null, optgroups: {}, default_rule_flags: { filter_readonly: false, operator_readonly: false, value_readonly: false, no_delete: false }, templates: { group: null, rule: null, filterSelect: null, operatorSelect: null }, lang_code: 'en', lang: {}, operators: [ {type: 'equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean']}, {type: 'not_equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean']}, {type: 'in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime']}, {type: 'not_in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime']}, {type: 'less', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime']}, {type: 'less_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime']}, {type: 'greater', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime']}, {type: 'greater_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime']}, {type: 'between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime']}, {type: 'not_between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime']}, {type: 'begins_with', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'not_begins_with', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'contains', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'not_contains', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'ends_with', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'not_ends_with', nb_inputs: 1, multiple: false, apply_to: ['string']}, {type: 'is_empty', nb_inputs: 0, multiple: false, apply_to: ['string']}, {type: 'is_not_empty', nb_inputs: 0, multiple: false, apply_to: ['string']}, {type: 'is_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean']}, {type: 'is_not_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean']} ], icons: { add_group: 'glyphicon glyphicon-plus-sign', add_rule: 'glyphicon glyphicon-plus', remove_group: 'glyphicon glyphicon-remove', remove_rule: 'glyphicon glyphicon-remove', error: 'glyphicon glyphicon-warning-sign' } };