diff options
Diffstat (limited to 'ishtar_common/static/js')
| -rw-r--r-- | ishtar_common/static/js/ishtar.js | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 704547347..fde903ac3 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -860,6 +860,9 @@ function clear_search_field(){ $("#id_search_vector").val(""); add_message("-", 'info', "#advanced-search-info", true, false); enable_save(); + $("#advanced-search-info-add").addClass("disabled"); + $("#advanced-search-info-or").addClass("disabled"); + $("#advanced-search-info-parenthesis").addClass("disabled"); } function _clear_search_criteria_fields(query){ @@ -925,7 +928,13 @@ function update_search_field(){ if (v == "") return; var term = get_label_from_input(item_for_label); if(!term || typeof term == "undefined") return; - if (query) query += " "; + if (query) { + if (query.endsWith(" )) ")) { + query += " && "; + } else { + query += " "; + } + } query += term + '="' + v + '"'; } ).get(); @@ -939,7 +948,13 @@ function update_search_field(){ } var term = get_label_from_input(item_for_label); if(!term || typeof term == "undefined") return; - if (query) query += " "; + if (query) { + if (query.endsWith(" )) ")) { + query += " && "; + } else { + query += " "; + } + } query += get_label_from_input(item_for_label) + '="' + $(this).text() + '"'; }); @@ -948,8 +963,11 @@ function update_search_field(){ _clear_search_criteria_fields(query); if (query){ add_message(query, 'secondary', "#advanced-search-info", true, false); + $("#advanced-search-info-add").removeClass("disabled"); + $("#advanced-search-info-or").removeClass("disabled"); + $("#advanced-search-info-parenthesis").removeClass("disabled"); } else { - add_message("-", 'secondary', "#advanced-search-info", true, false); + clear_search_field(); } enable_save(); } @@ -1054,6 +1072,30 @@ function register_advanced_search(){ $(".advanced-search-valid").click(update_search_field); $(".advanced-search-clear").click(clear_search_field); + + $("#advanced-search-info-add").click(function(){ + let query = $("#id_search_vector").val(); + if (query.endsWith(" && ") || query.endsWith(" || ")) return; + query += " && "; + $("#id_search_vector").val(query); + add_message(query, 'secondary', "#advanced-search-info", true, false); + }); + $("#advanced-search-info-or").click(function(){ + let query = $("#id_search_vector").val(); + if (query.endsWith(" && ") || query.endsWith(" || ")) return; + query += " || "; + $("#id_search_vector").val(query); + add_message(query, 'secondary', "#advanced-search-info", true, false); + }); + $("#advanced-search-info-parenthesis").click(function(){ + let query = $("#id_search_vector").val(); + if ((query.startsWith(" (( ") && query.endsWith(" )) ")) || + query.endsWith(" && ") || query.endsWith(" || ")) return; + query = " (( " + query + " )) "; + $("#id_search_vector").val(query); + add_message(query, 'secondary', "#advanced-search-info", true, false); + }); + $('#modal-advanced-search').on('hidden.bs.modal', function (e) { var base_query = $("#id_search_vector").val(); // reset all criteria |
