3

Is there any way to create a querybuilder without operators?.

Example

let filters= [];
let filter;
        filter= {
            id: 'id',
            label: 'id',
            type: 'string'
        };
        filter.input = 'select';
        filter.operators = ['equal']; //add the 'equal' operator to override the default operators that are added if not given


let v = ['id1', 'id2'].reduce(function(o, val) { o[val] = val; return o; }, {});
filter.values = v;
filters.push(filter);


$('#queryBuilderDiv').queryBuilder({

    filters: filters,
    select_placeholder: '--Select ID--',
});

This creates the below shown query builder

query builder

I would like to discard the operators and just let the user select an id as shown in the image below.

query builder without operators to select

I tried to set filter.operators = [] but no luck since the query builder does not allow me to select a value without selecting an operator before.

Any ideas? Thanks beforehand :)

NickAth
  • 1,089
  • 1
  • 14
  • 35

1 Answers1

0

You can hide filter's operator like that:

$('#builder').queryBuilder({
  filters: [
    {
      id: 'name',
      label: 'Name',
      type: 'string',
      operators: ['equal'],
      input: 'text'
    },
    {
      id: 'age',
      label: 'Age',
      type: 'integer',
      operators: ['equal', 'less', 'greater'],
      input: 'number'
    }
  ],
  afterCreateRuleOperators: function(e, rule) {
    if(rule.filter.id === 'name') {
      $(rule.$el).find('.rule-operator-container').hide();
    }
  }

});

Konrad G
  • 419
  • 7
  • 14