Fill queryBuiler with fields and filters

This commit is contained in:
Georgy Litvinov 2020-08-20 17:03:44 +02:00
parent 6b0a72ba46
commit 23543cee5c
5 changed files with 125 additions and 92 deletions

View file

@ -1,80 +0,0 @@
var rules_basic = {
condition: 'AND',
rules: [{
id: 'text',
operator: 'contains',
value: 2
}, {
id: 'keywords',
operator: 'contains',
value: 1
}]
};
$('#builder').queryBuilder({
filters: [{
id: 'text',
label: 'Текст',
type: 'string',
operators: ['contains', 'not_contains']
}, {
id: 'keywords',
label: 'Ключевые слова',
type: 'string',
operators: ['contains', 'not_contains']
}, {
id: 'title',
label: 'Название',
type: 'string',
operators: ['contains', 'not_contains']
}, {
id: 'bibliography',
label: 'Библиография',
type: 'string',
operators: ['contains', 'not_contains']
}, {
id: 'classgroup',
label: 'Тип документа',
type: 'integer',
input: 'select',
values: {
1: 'Статья',
2: 'Отрывок'
},
operators: ['contains']
}, {
id: 'rubrics',
label: 'Рубрикация',
type: 'integer',
input: 'select',
values: {
1: 'История философии',
2: 'Логика',
3: 'Философия языка',
4: 'Этика',
5: 'Эстетика',
6: 'Философия техники'
},
operators: ['contains', 'not_contains']
} ],
lang_code: 'ru',
rules: rules_basic
});
$('#btn-reset').on('click', function() {
$('#builder').queryBuilder('reset');
});
$('#btn-set').on('click', function() {
$('#builder').queryBuilder('setRules', rules_basic);
});
$('#btn-get').on('click', function() {
var result = $('#builder').queryBuilder('getRules');
if (!$.isEmptyObject(result)) {
alert(JSON.stringify(result, null, 2));
}
});

View file

@ -59,16 +59,7 @@
</ul>
</form>
</fieldset>
<div id="builder"></div>
<div class="btn-group">
<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>
</div>
<script src="themes/iph/js/query-builder.standalone.min.js"></script>
<script src="themes/iph/js/query-builder.ru.js"></script>
<script src="themes/iph/js/query-builder-config.js"></script>
<#include "queryBuilder.ftl">
</section> <!-- #search-home -->
</section> <!-- #intro -->

View file

@ -0,0 +1,81 @@
<div id="builder"></div>
<div class="btn-group">
<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>
</div>
<script src="themes/iph/js/query-builder.standalone.min.js"></script>
<script src="themes/iph/js/query-builder.ru.js"></script>
<script src="themes/iph/js/query-builder-config.js"></script>
<script>
var rules_basic = {
condition: 'AND',
rules: [{
id: 'ALLTEXT',
operator: 'contains',
value: 2
}, {
id: 'keywords',
operator: 'contains',
value: 1
}]
};
$('#builder').queryBuilder({
filters: [
<#list searchFields as field>
<#if field.hasFilters == "true">
<@multivalueField field=field />
<#else>
<@freeField field=field />
</#if>
</#list>
],
lang_code: 'ru',
rules: rules_basic
});
$('#btn-reset').on('click', function() {
$('#builder').queryBuilder('reset');
});
$('#btn-set').on('click', function() {
$('#builder').queryBuilder('setRules', rules_basic);
});
$('#btn-get').on('click', function() {
var result = $('#builder').queryBuilder('getRules');
if (!$.isEmptyObject(result)) {
alert(JSON.stringify(result, null, 2));
}
});
</script>
<#macro freeField field >
{
id: '${field.field}',
label: '${field.name}',
type: 'string',
operators: ['contains', 'not_contains']
},
</#macro>
<#macro multivalueField field >
{
id: '${field.field}',
label: '${field.name}',
type: 'string',
input: 'select',
values: {
<#list searchFilters as filter>
<#if filter.field == field.field>
'${filter.id}':'${filter.name}',
</#if>
</#list>
},
operators: ['equal', 'not_equal']
},
</#macro>