Store additional criterias in advanced search #32781

- text
- date(s)
- multiple selections
This commit is contained in:
Nicolas Demonte 2020-04-14 09:25:18 +02:00
parent 11dc2f1216
commit 66311179e9
1 changed files with 42 additions and 8 deletions

View File

@ -185,16 +185,34 @@
};
$.querywidget.updateWidget = function (node) {
if (typeof(node) === "undefined") {
node = $('.querywidget');
}
if ($().dateinput) {
if (typeof (node) === "undefined") {
node = $('.querywidget');
}
if ($().dateinput) {
jQuery.tools.dateinput.conf.format = 'dd/mm/yyyy';
$(node).parents('.criteria').find('.date').dateinput({change: function() { $.querywidget.updateSearch();}, firstDay: 1,selectors: true, trigger: false, yearRange: [-10, 10]}).unbind('change')
$(node).parents('.criteria').find('.date').dateinput({
change: function () {
var multi = get_history_parameter('multi', {});
var input = this.getInput();
var index = input.parents(".criteria").find(".queryindex option:selected").val();
if (input.hasClass("querywidget")) { // 1 date input, .querywidget itself
multi[index].value = input.val();
} else { // 2 date inputs, contained inside .querywidget
var dates = input.parent().children(".date");
multi[index].value = [dates.get(0).value, dates.get(1).value];
}
store_history_parameter('multi', multi);
$.querywidget.updateSearch();
},
firstDay: 1,
selectors: true,
trigger: false,
yearRange: [-10, 10]
}).unbind('change')
.bind('onShow', function (event) {
var trigger_offset = $(this).next().offset();
$(this).data('dateinput').getCalendar().offset(
{top: trigger_offset.top+20, left: trigger_offset.left}
{top: trigger_offset.top + 20, left: trigger_offset.left}
);
});
}
@ -386,7 +404,7 @@
var querywidget = $(this).parent(".criteria").children('.querywidget');
if ((widget !== $.querywidget.getCurrentWidget(querywidget)) || (widget === 'MultipleSelectionWidget')) {
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
$.querywidget.updateWidget($(this).parent(".criteria").children('.querywidget'));
$.querywidget.updateWidget($(this).parent(".criteria").children('.querywidget'));
}
$.querywidget.updateSearch();
});
@ -395,11 +413,14 @@
var fname = $(this).closest('.QueryWidget').attr('data-fieldname');
var index = $(this).parents('.criteria').children('.queryindex').val();
var operatorvalue = $(this).children(':selected')[0].value;
var multi = get_history_parameter('multi', {});
multi[index]["operator"] = operatorvalue;
store_history_parameter('multi', multi);
var widget = $.querywidget.config.indexes[index].operators[operatorvalue].widget;
var querywidget = $(this).parent().children('.querywidget');
if (widget !== $.querywidget.getCurrentWidget(querywidget)) {
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
$.querywidget.updateWidget($(this).parent().children('.querywidget'));
$.querywidget.updateWidget($(this).parent().children('.querywidget'));
}
$.querywidget.updateSearch();
@ -412,9 +433,14 @@
$('.multipleSelectionWidget input').live('change', function () {
var widget = $(this).parents('.multipleSelectionWidget');
var selected_values = [];
var multi = get_history_parameter('multi', {});
var input_values = [];
widget.find('input:checked').each(function () {
selected_values.push($(this).parent().children('span').html());
input_values.push($(this).val());
});
multi[index].value = input_values;
store_history_parameter('multi', multi);
widget.find('.multipleSelectionWidgetTitle')
.attr('title', selected_values.join(', '))
.html(selected_values.join(', '));
@ -422,6 +448,10 @@
});
$('.queryvalue').live('keyup', function () {
var index = $(this).parents('.criteria').children('.queryindex').val();
var multi = get_history_parameter('multi', {});
multi[index].value = $(this).val();
store_history_parameter('multi', multi);
$.querywidget.updateSearch();
});
@ -466,6 +496,10 @@
});
$('.removecriteria').live('click', function () {
var multi = get_history_parameter('multi', {});
var index = $(this).parents(".criteria").find(".queryindex option:selected").val();
delete multi[index];
store_history_parameter('multi', multi);
$(this).parents('.criteria').remove();
$.querywidget.updateSearch();
return false;