diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-05-05 16:11:59 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-05-05 21:53:46 +0200 |
| commit | d24b923a9bf53842ba372a9967a36afb80b4f01c (patch) | |
| tree | eaf4ce07f640b1f009fff64f3010b5454e88e7d1 /ishtar_common/static/js | |
| parent | 18078c8500033cc0b41a79fd803fae870728350c (diff) | |
| download | Ishtar-d24b923a9bf53842ba372a9967a36afb80b4f01c.tar.bz2 Ishtar-d24b923a9bf53842ba372a9967a36afb80b4f01c.zip | |
✨ search UI: add AND, OR and PARENTHESIS button in query
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 |
