query builder first try

This commit is contained in:
Georgy Litvinov 2020-08-21 09:14:06 +02:00
parent 2871ab815f
commit 2d55e44575

View file

@ -1,5 +1,6 @@
<div id="builder"></div>
<div class="btn-group">
<button id="btn-search" class="btn btn-warning reset" data-target="basic">Search</button>
<button id="btn-reset" class="btn btn-warning reset" data-target="basic">Reset</button>
<button id="btn-set" class="btn btn-success set-json" data-target="basic">Set rules</button>
<button id="btn-get" class="btn btn-primary parse-json" data-target="basic">Get rules</button>
@ -50,7 +51,44 @@
if (!$.isEmptyObject(result)) {
alert(JSON.stringify(result, null, 2));
}
});
$('#btn-search').on('click', function() {
var json_result = $('#builder').queryBuilder('getRules');
var query_string = format_query_string(json_result,"");
if (!$.isEmptyObject(query_string)) {
window.open("${urls.base}/customsearch?querytext=" + query_string,"_self")
}
//if (!$.isEmptyObject(json_result)) {
// alert(JSON.stringify(json_result, null, 2));
// alert(query_string);
//}
});
function format_query_string(json_query, string_query){
if ('condition' in json_query && 'rules' in json_query ){
if (json_query.rules.length > 1 ) {
string_query +=" ( ";
var i;
for (i = 0; i < json_query.rules.length; i++) {
string_query = format_query_string(json_query.rules[i], string_query);
if (i + 1 < json_query.rules.length){
string_query += " " + json_query.condition + " ";
}
}
string_query +=" ) ";
} else {
string_query = format_query_string(json_query.rules[0], string_query);
}
} else if ( 'field' in json_query && 'value' in json_query ){
if ('operator' in json_query && json_query.operator.startsWith("not_")){
string_query += "NOT ";
}
string_query += json_query.field + ":\"" + json_query.value.toString().replace(/['"]+/g, '') + "\"";
}
return string_query;
}
</script>
<#macro freeField field >
{
@ -75,6 +113,6 @@
</#list>
},
operators: ['equal', 'not_equal']
operators: ['contains', 'not_contains']
},
</#macro>