diff options
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 43 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 22 |
2 files changed, 64 insertions, 1 deletions
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 891234915..6ab1fe732 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -753,6 +753,7 @@ function _clear_search_criteria_fields(query){ $('.dataTables_length select option[value="' + datatables_length + '"]' ).prop('selected', true); if(query) $("#id_search_vector").val(query); + filter_search_fields(); } function update_search_field(){ @@ -843,6 +844,41 @@ var register_qa_on_sheet = function(){ }; +var search_field_list; + +var register_search_field_list = function(){ + search_field_list = new Object(); + $(".search-fields .form-group").each(function(){ + var key_val = $(this).attr('data-alt-name'); + if (key_val) { + search_field_list[key_val] = $(this).children('label').html(); + } + }); +}; + +var filter_search_fields = function(){ + var current_filter = $("#search-input-filter").val(); + if (!current_filter){ + $(".search-fields .form-group").show(); + $("#clear-filter-button").addClass('disabled'); + return + } + $("#clear-filter-button").removeClass('disabled'); + $.each(search_field_list, function(key, value) { + if ( + !key.match( new RegExp(current_filter) ) && + !value.match( new RegExp(current_filter) ) + ) { + $("[data-alt-name=" + key + "]").hide(); + } else { + $("[data-alt-name=" + key + "]").show(); + } + } + + ); +}; + + function register_advanced_search(){ $(".advanced-search-reset").click( function(){ @@ -857,6 +893,13 @@ function register_advanced_search(){ return false; } }); + register_search_field_list(); + $("#search-input-filter").on('input', filter_search_fields); + $("#clear-filter-button").click(function(){ + $("#search-input-filter").val(""); + filter_search_fields(); + }); + $(".advanced-search-valid").click(update_search_field); $(".advanced-search-clear").click(clear_search_field); $('#modal-advanced-search').on('hidden.bs.modal', function (e) { diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html index 0f5f9d83d..caa20b016 100644 --- a/ishtar_common/templates/blocks/bs_form_snippet.html +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -51,8 +51,28 @@ </button> <div class="form-group col-12" id="advanced-search-info"></div> </div> - <div class="modal-body body-scroll"> + <div class="modal-body body-scroll search-fields"> + <div class="form-row justify-content-md-center"> + <div class="form-row col-md-6"> + <div class="input-group search-widget"> + <span class="input-group-prepend"> + <span class="input-group-text" title="{% trans 'Filter...' %}"> + <i class="fa fa-filter" aria-hidden="true"></i> + </span> + </span> + <input type="text" id="search-input-filter" + class="form-control" + placeholder="{% trans 'Begin to type to filter search fields' %}" /> + <span class="input-group-append"> + <span class="input-group-text input-link disabled" id="clear-filter-button" title="Clear"> + <i class="fa fa-times" aria-hidden="true"></i> + </span> + </span> + </div> + </div> + </div> <hr> + {% endif %} {% if field.name in form.HEADERS %} {% if forloop.counter0 %} |