diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-01-22 12:58:56 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-01-22 12:58:56 +0100 |
commit | bcadb6adc502f8c2aeacd4fae8aca34fc748f354 (patch) | |
tree | 8f29d4bf447d9df8bf03c628701eaf6147eab703 | |
parent | fd84316057731b7930ce2efcbed15d6a4aba81a5 (diff) | |
download | Ishtar-bcadb6adc502f8c2aeacd4fae8aca34fc748f354.tar.bz2 Ishtar-bcadb6adc502f8c2aeacd4fae8aca34fc748f354.zip |
Put advanced search inside a modal - get a text summary of advanced search
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 67 | ||||
-rw-r--r-- | ishtar_common/static/media/styles.css | 1 | ||||
-rw-r--r-- | ishtar_common/templates/base.html | 2 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 38 |
4 files changed, 101 insertions, 7 deletions
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 00a9b66a0..0f8b0cba2 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -417,3 +417,70 @@ function activate_own_search(){ }); return false; } + +function get_label_from_input(input){ + if (input.parent().filter('.input-group').length){ + input = input.parent(); + } + return "<strong>" + input.prev().html() + "</strong>"; +} + + +function update_search_resume(){ + var summary = ""; + var inputs = $('#advanced-search-form input').map( + function(){ + var v = ""; + var item_for_label = $(this); + if ($(this).filter(":checkbox:checked").length){ + var check = $(this).val(); + if (check == "on"){ + v = YES; + } else { + v = $(this).parent().first().contents().filter(function() { + return this.nodeType == 3; + }).text(); + item_for_label = $(this).parent().parent().parent(); + } + } else if ($(this).filter(":text").length){ + v = $(this).val(); + } else if ($(this).filter('input[type="number"]').length){ + v = $(this).val(); + } + if (v == "") return; + if (summary) summary += " ; "; + summary += get_label_from_input(item_for_label) + " " + v; + } + ).get(); + var selects = $('#advanced-search-form select').each( + function(){ + $(this).find('option').not(':first').filter(':selected').map( + function(){ + var item_for_label = $(this).parent(); + if(item_for_label.filter('optgroup').length){ + item_for_label = item_for_label.parent(); + } + if (summary) summary += " ; "; + summary += get_label_from_input(item_for_label) + " " + $(this).text(); + }); + } + ); + + if (summary != ""){ + $('#advanced-search-resume-content').html(summary); + $('#advanced-search-resume').show(); + } else { + $('#advanced-search-resume').hide(); + } +} + + +function register_advanced_search(){ + $(".advanced-search-reset").click( + function(){ + document.getElementById('advanced-search-form').reset(); + $('#advanced-search-resume').hide(); + } + ); + $(".advanced-search-valid").click(update_search_resume); +} diff --git a/ishtar_common/static/media/styles.css b/ishtar_common/static/media/styles.css index 0526ee49e..7a1534ff5 100644 --- a/ishtar_common/static/media/styles.css +++ b/ishtar_common/static/media/styles.css @@ -1,3 +1,4 @@ +#advanced-search-resume, #language-form{ display: none; } diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index fa62acdd2..d5d138bd2 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -32,6 +32,8 @@ var activate_own_search_url = '{% url "activate-own-search" %}'; var activate_all_search_msg = "{% trans 'Searches in the shortcut menu deal with all items.' %}"; var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}"; + var YES = "{% trans 'yes' %}"; + var NO = "{% trans 'no' %}"; </script> {% endcompress %} {% compress css %} diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html index c636465f3..c9716794c 100644 --- a/ishtar_common/templates/blocks/bs_form_snippet.html +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -36,9 +36,10 @@ </div> <div class="form-group col-lg"> <p class="text-right"> - <a class="btn btn-secondary btn-sm" data-toggle="collapse" href="#tail-form" - aria-expanded="false" aria-controls="tail-form"> - {% trans "Advanced search" %}</a> + <button class="btn btn-secondary btn-sm" data-toggle="modal" + data-target="#modal-advanced-search"> + {% trans "Advanced search" %} <i class="fa fa-cogs" aria-hidden="true"></i> + </button> </p> </div> @@ -50,11 +51,21 @@ </div> {% endif %} </div> +<div class="alert alert-info" role="alert" id="advanced-search-resume"> + <strong><i class="fa fa-cogs" aria-hidden="true"></i>{% trans ":" %} </strong> + <span id="advanced-search-resume-content"></span> +</div> {% else %} {% if search and forloop.counter0 == 1 %} -<div class="collapse" id="tail-form"> - <div class="card card-body"> - <div class="form-row"> +<div class="modal" id="modal-advanced-search" tabindex="-1" role="dialog" + data-backdrop="static" data-keyboard="false" aria-hidden="true"> + <div class="modal-dialog modal-lg"> + <div class="modal-content"> + <div class="modal-header"> + <h5>{% trans "Advanced search" %}</h5> + </div> + <form id="advanced-search-form"> + <div class="modal-body form-row"> {% endif %} {% if not search and forloop.counter0|divisibleby:2 or search and forloop.counter1|divisibleby:2 %} @@ -65,10 +76,23 @@ {% include "blocks/bs_field_snippet.html" %} {% if forloop.last %} {% if search and forloop.counter0 >= 1 %} + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary advanced-search-reset" + data-dismiss="modal">{% trans 'Reset' %}</button> + <button type="button" class="btn btn-primary advanced-search-valid" + data-dismiss="modal">{% trans "Validate" %}</button> + </div> + </form> + </div> </div> - </div> {% endif %} </div> {% endif %} {% endif %} {% endfor %} + +{% if search %} +<script type="text/javascript"> +$(register_advanced_search);</script> +{% endif %} |