Skip to content

Commit ef0b829

Browse files
committed
Fix #543 use "default_value" in setRules method
1 parent 6331d3e commit ef0b829

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

examples/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ <h3>Output</h3>
546546
}, {
547547
id: 'coord',
548548
operator: 'equal',
549-
value: 'B.3'
549+
value: undefined // will use filter's default value
550550
}]
551551
}, {
552552
id: 'name',

src/core.js

+1-7
Original file line numberDiff line numberDiff line change
@@ -618,13 +618,7 @@ QueryBuilder.prototype.createRuleOperators = function(rule) {
618618

619619
// set the operator without triggering update event
620620
if (rule.filter.default_operator) {
621-
rule.__.operator = operators.filter(function(operator) {
622-
return operator.type === rule.filter.default_operator;
623-
})[0];
624-
625-
if (!rule.__.operator) {
626-
Utils.error('Config', 'Invalid operator {0}', rule.filter.default_operator);
627-
}
621+
rule.__.operator = this.getOperatorByType(rule.filter.default_operator);
628622
}
629623
else {
630624
rule.__.operator = operators[0];

src/public.js

+13-8
Original file line numberDiff line numberDiff line change
@@ -410,17 +410,22 @@ QueryBuilder.prototype.setRules = function(data, options) {
410410

411411
if (!item.empty) {
412412
model.filter = self.getFilterById(item.id, !options.allow_invalid);
413+
}
413414

414-
if (model.filter) {
415-
model.operator = self.getOperatorByType(item.operator, !options.allow_invalid);
415+
if (model.filter) {
416+
model.operator = self.getOperatorByType(item.operator, !options.allow_invalid);
416417

417-
if (!model.operator) {
418-
model.operator = self.getOperators(model.filter)[0];
419-
}
418+
if (!model.operator) {
419+
model.operator = self.getOperators(model.filter)[0];
420+
}
421+
}
420422

421-
if (model.operator && model.operator.nb_inputs !== 0 && item.value !== undefined) {
422-
model.value = item.value;
423-
}
423+
if (model.operator && model.operator.nb_inputs !== 0) {
424+
if (item.value !== undefined) {
425+
model.value = item.value;
426+
}
427+
else if (model.filter.default_value !== undefined) {
428+
model.value = model.filter.default_value;
424429
}
425430
}
426431

tests/data.module.js

+29
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,35 @@ $(function() {
517517
);
518518
});
519519

520+
QUnit.test('apply default value', function(assert) {
521+
$b.queryBuilder({
522+
filters: [
523+
{
524+
id: 'name',
525+
default_value: 'Mistic'
526+
}
527+
],
528+
rules: [
529+
{
530+
id: 'name'
531+
}
532+
]
533+
});
534+
535+
assert.rulesMatch(
536+
$b.queryBuilder('getRules'),
537+
{
538+
condition: 'AND',
539+
rules: [{
540+
id: 'name',
541+
operator: 'equal',
542+
value: 'Mistic'
543+
}]
544+
},
545+
'Should have used the filter default value'
546+
);
547+
});
548+
520549
/**
521550
* Test allow_empty_value option
522551
*/

0 commit comments

Comments
 (0)