Store additional criterias in advanced search #32781

- text
- date(s)
- multiple selections
- folder
This commit is contained in:
Nicolas Demonte 2020-04-14 09:25:25 +02:00
parent 46a76a1fa0
commit 957199c000
1 changed files with 86 additions and 2 deletions

View File

@ -264,8 +264,14 @@ function get_history_parameter(name, default_value) {
$(window).find('.contentTreeAdd').unbind('click').click(function() {
var contenttree_window = $(this).parents(".contenttreeWindow");
contenttree_window.find('.navTreeCurrentItem > a').each(function () {
$(initial_input).val($(this).data('intid'));
$(input).val($.trim($(this).text()));
var folder_intid = $(this).data('intid');
var folder_label = $.trim($(this).text());
$(initial_input).val(folder_intid);
$(input).val(folder_label);
var multi = get_history_parameter('multi', {});
multi[index].value = folder_intid;
multi[index].label = folder_label;
store_history_parameter('multi', multi);
});
$(this).contentTreeCancel();
$.querywidget.updateSearch();
@ -467,6 +473,10 @@ function select_metatype(elem)
$('option[data-index]').parents('select').change(function() {
index = $(this).find('option[data-index]:selected').data('index');
if ($('.addIndex option[value="' + index + '"]:selected').length == 0) {
var multi = get_history_parameter('multi', {});
multi[index] = {};
store_history_parameter('multi', multi);
console.log("option[data-index] change (L493), storing fresh multi index: " + index);
$('.addIndex option[value="' + index + '"]').prop('selected', true);
$('.addIndex').trigger('change');
var criteria_div = $('#formfield-form-widgets-query div.criteria option[value="' + index + '"]:selected').parents('select').parent().detach();
@ -601,6 +611,80 @@ function select_metatype(elem)
$('fieldset.text-fieldset div.criteria-content').show();
$('fieldset.text-fieldset legend').addClass('expanded');
}
var multi = get_history_parameter('multi', {});
var index_name;
for (index_name in multi) { // hack to emulate (.length > 0) for an object
$('fieldset.more-fieldset div.criteria-content').show();
$('fieldset.more-fieldset legend').addClass('expanded');
break;
}
// create criteria line
console.log("restore_ppfwbged_search, adding new criteria lines");
for (index_name in multi) {
if ($('.addIndex option[value="' + index_name + '"]:selected').length == 0) {
console.log("restore_ppfwbged_search, adding new criteria line for " + index_name);
$('.addIndex option[value="' + index_name + '"]').prop('selected', true);
$('.addIndex').trigger('change');
var criteria_div = $('#formfield-form-widgets-query div.criteria option[value="' + index_name + '"]:selected').parents('select').parent().detach();
criteria_div.appendTo('.more-fieldset .criteria-content');
criteria_div.find('select.queryindex').prop('disabled', true);
$($(this).find('option[data-index]').parents('select').find('option')[0]).prop('selected', true);
}
}
// set operator, if needed
console.log("restore_ppfwbged_search, setting operators");
for (index_name in multi) {
var index_params = multi[index_name];
if (index_params.hasOwnProperty("operator")) {
var operator = $('option[value="' + index_name + '"]:selected').parents('select').parent().find(".queryoperator");
if (operator.find("option:selected").val() != index_params.operator) {
console.log("restore_ppfwbged_search, setting operator " + index_params.operator);
operator.find("option[value='" + index_params.operator + "']").prop('selected', true);
operator.trigger("change");
}
}
}
// set values, if needed
console.log("restore_ppfwbged_search, setting values");
for (index_name in multi) {
var index_params = multi[index_name];
if (index_params.hasOwnProperty("value")) {
console.log("restore_ppfwbged_search, setting value for " + index_params.value.toString());
var stored_value = index_params.value;
var criteria = $('option[value="' + index_name + '"]:selected').parents('select').parent();
var querywidget = criteria.find(".querywidget");
var operator_value = criteria.find(".queryoperator").val();
var widget_type = $.querywidget.config.indexes[index_name].operators[operator_value].widget;
switch (widget_type) {
case 'DateRangeWidget':
$(querywidget.children('input')[0]).val(stored_value[0]);
$(querywidget.children('input')[1]).val(stored_value[1]);
break;
case 'MultipleSelectionWidget':
var selected_titles = [];
$.each(stored_value, function(i, element_value) {
var input = querywidget.find('input[value="' + element_value + '"]');
input.prop('checked', true);
selected_titles.push(input.parent().children('span').html());
});
querywidget.find('.multipleSelectionWidgetTitle')
.attr('title', selected_titles.join(', '))
.html(selected_titles.join(', '));
break;
default:
querywidget.val(stored_value);
if (index_name === 'object_folders') {
querywidget.next("input").val(index_params.label);
}
break;
}
$.querywidget.updateSearch();
}
}
}
}
};