Fill queryBuiler with fields and filters
This commit is contained in:
parent
6b0a72ba46
commit
23543cee5c
5 changed files with 125 additions and 92 deletions
|
@ -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));
|
||||
}
|
||||
});
|
|
@ -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 -->
|
||||
|
|
81
webapp/src/main/webapp/themes/iph/templates/queryBuilder.ftl
Normal file
81
webapp/src/main/webapp/themes/iph/templates/queryBuilder.ftl
Normal 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>
|
Loading…
Add table
Add a link
Reference in a new issue