UNPKG

6.29 kBJavaScriptView Raw
1/**
2 * Allowed types and their internal representation
3 * @type {object.<string, string>}
4 * @readonly
5 * @private
6 */
7QueryBuilder.types = {
8 'string': 'string',
9 'integer': 'number',
10 'double': 'number',
11 'date': 'datetime',
12 'time': 'datetime',
13 'datetime': 'datetime',
14 'boolean': 'boolean'
15};
16
17/**
18 * Allowed inputs
19 * @type {string[]}
20 * @readonly
21 * @private
22 */
23QueryBuilder.inputs = [
24 'text',
25 'number',
26 'textarea',
27 'radio',
28 'checkbox',
29 'select'
30];
31
32/**
33 * Runtime modifiable options with `setOptions` method
34 * @type {string[]}
35 * @readonly
36 * @private
37 */
38QueryBuilder.modifiable_options = [
39 'display_errors',
40 'allow_groups',
41 'allow_empty',
42 'default_condition',
43 'default_filter'
44];
45
46/**
47 * CSS selectors for common components
48 * @type {object.<string, string>}
49 * @readonly
50 */
51QueryBuilder.selectors = {
52 group_container: '.rules-group-container',
53 rule_container: '.rule-container',
54 filter_container: '.rule-filter-container',
55 operator_container: '.rule-operator-container',
56 value_container: '.rule-value-container',
57 error_container: '.error-container',
58 condition_container: '.rules-group-header .group-conditions',
59
60 rule_header: '.rule-header',
61 group_header: '.rules-group-header',
62 group_actions: '.group-actions',
63 rule_actions: '.rule-actions',
64
65 rules_list: '.rules-group-body>.rules-list',
66
67 group_condition: '.rules-group-header [name$=_cond]',
68 rule_filter: '.rule-filter-container [name$=_filter]',
69 rule_operator: '.rule-operator-container [name$=_operator]',
70 rule_value: '.rule-value-container [name*=_value_]',
71
72 add_rule: '[data-add=rule]',
73 delete_rule: '[data-delete=rule]',
74 add_group: '[data-add=group]',
75 delete_group: '[data-delete=group]'
76};
77
78/**
79 * Template strings (see template.js)
80 * @type {object.<string, string>}
81 * @readonly
82 */
83QueryBuilder.templates = {};
84
85/**
86 * Localized strings (see i18n/)
87 * @type {object.<string, object>}
88 * @readonly
89 */
90QueryBuilder.regional = {};
91
92/**
93 * Default operators
94 * @type {object.<string, object>}
95 * @readonly
96 */
97QueryBuilder.OPERATORS = {
98 equal: { type: 'equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
99 not_equal: { type: 'not_equal', nb_inputs: 1, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
100 in: { type: 'in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] },
101 not_in: { type: 'not_in', nb_inputs: 1, multiple: true, apply_to: ['string', 'number', 'datetime'] },
102 less: { type: 'less', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
103 less_or_equal: { type: 'less_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
104 greater: { type: 'greater', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
105 greater_or_equal: { type: 'greater_or_equal', nb_inputs: 1, multiple: false, apply_to: ['number', 'datetime'] },
106 between: { type: 'between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] },
107 not_between: { type: 'not_between', nb_inputs: 2, multiple: false, apply_to: ['number', 'datetime'] },
108 begins_with: { type: 'begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
109 not_begins_with: { type: 'not_begins_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
110 contains: { type: 'contains', nb_inputs: 1, multiple: false, apply_to: ['string'] },
111 not_contains: { type: 'not_contains', nb_inputs: 1, multiple: false, apply_to: ['string'] },
112 ends_with: { type: 'ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
113 not_ends_with: { type: 'not_ends_with', nb_inputs: 1, multiple: false, apply_to: ['string'] },
114 is_empty: { type: 'is_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] },
115 is_not_empty: { type: 'is_not_empty', nb_inputs: 0, multiple: false, apply_to: ['string'] },
116 is_null: { type: 'is_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] },
117 is_not_null: { type: 'is_not_null', nb_inputs: 0, multiple: false, apply_to: ['string', 'number', 'datetime', 'boolean'] }
118};
119
120/**
121 * Default configuration
122 * @type {object}
123 * @readonly
124 */
125QueryBuilder.DEFAULTS = {
126 filters: [],
127 plugins: [],
128
129 sort_filters: false,
130 display_errors: true,
131 allow_groups: -1,
132 allow_empty: false,
133 conditions: ['AND', 'OR'],
134 default_condition: 'AND',
135 inputs_separator: ' , ',
136 select_placeholder: '------',
137 display_empty_filter: true,
138 default_filter: null,
139 optgroups: {},
140
141 default_rule_flags: {
142 filter_readonly: false,
143 operator_readonly: false,
144 value_readonly: false,
145 no_delete: false
146 },
147
148 default_group_flags: {
149 condition_readonly: false,
150 no_add_rule: false,
151 no_add_group: false,
152 no_delete: false
153 },
154
155 templates: {
156 group: null,
157 rule: null,
158 filterSelect: null,
159 operatorSelect: null
160 },
161
162 lang_code: 'en',
163 lang: {},
164
165 operators: [
166 'equal',
167 'not_equal',
168 'in',
169 'not_in',
170 'less',
171 'less_or_equal',
172 'greater',
173 'greater_or_equal',
174 'between',
175 'not_between',
176 'begins_with',
177 'not_begins_with',
178 'contains',
179 'not_contains',
180 'ends_with',
181 'not_ends_with',
182 'is_empty',
183 'is_not_empty',
184 'is_null',
185 'is_not_null'
186 ],
187
188 icons: {
189 add_group: 'glyphicon glyphicon-plus-sign',
190 add_rule: 'glyphicon glyphicon-plus',
191 remove_group: 'glyphicon glyphicon-remove',
192 remove_rule: 'glyphicon glyphicon-remove',
193 error: 'glyphicon glyphicon-warning-sign'
194 }
195};