summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-07-03 18:26:38 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-13 18:26:03 +0200
commit6e443ef21bfa9eea67e7f983727c41d00405a816 (patch)
treee81d672360a437db08de785b35d831c8b8759833
parent71432db3cbf135225fdb432c380db402a3eeffe7 (diff)
downloadIshtar-6e443ef21bfa9eea67e7f983727c41d00405a816.tar.bz2
Ishtar-6e443ef21bfa9eea67e7f983727c41d00405a816.zip
Change criteria search UI to put criteria in the search text (refs #4180)
-rw-r--r--archaeological_operations/models.py25
-rw-r--r--ishtar_common/forms.py2
-rw-r--r--ishtar_common/static/js/ishtar.js29
-rw-r--r--ishtar_common/templates/blocks/bs_field_snippet.html3
-rw-r--r--ishtar_common/templates/blocks/bs_form_snippet.html25
-rw-r--r--ishtar_common/templates/widgets/search_input.html8
6 files changed, 51 insertions, 41 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 688c12bea..912351f9b 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -364,14 +364,25 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
# alternative names of fields for searches
ALT_NAMES = {
- 'periods__pk': pgettext_lazy(
- "key for text search (no accent, no spaces)", u"period"),
- 'operation_type__pk': pgettext_lazy(
- "key for text search (no accent, no spaces)", u"operation-type"),
- 'remains__pk': pgettext_lazy(
- "key for text search (no accent, no spaces)", u"remain"),
+ 'periods': (
+ pgettext_lazy(
+ "key for text search (no accent, no spaces)", u"period"),
+ 'periods__pk'
+ ),
+ 'operation_type': (
+ pgettext_lazy(
+ "key for text search (no accent, no spaces)", u"operation-type"
+ ),
+ 'operation_type__pk'
+ ),
+ 'remains': (
+ pgettext_lazy(
+ "key for text search (no accent, no spaces)", u"remain"),
+ 'remains__pk'
+ ),
}
- EXTRA_REQUEST_KEYS.update(dict([(v, k) for k, v in ALT_NAMES.items()]))
+ for v in ALT_NAMES.values():
+ EXTRA_REQUEST_KEYS[v[0]] = v[1]
# fields definition
creation_date = models.DateField(_(u"Creation date"),
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index bb468eff1..c1e699ab5 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -471,7 +471,7 @@ class TableSelect(IshtarForm):
cls += " search-vector"
self.fields[k].widget.attrs['class'] = cls
if k in ALT_NAMES:
- self.fields[k].alt_name = ALT_NAMES[k]
+ self.fields[k].alt_name = ALT_NAMES[k][0]
else:
self.fields[k].alt_name = k
key = self.fields.keys()[0]
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index b5d701528..2f04775c5 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -529,12 +529,12 @@ function get_label_from_input(input){
if (input.parent().filter('.input-group').length){
input = input.parent();
}
- return "<strong>" + input.prev().html() + "</strong>";
+ return input.parent().attr('data-alt-name');
}
-function update_search_resume(){
- var summary = "";
+function update_search_field(){
+ var query = "";
var inputs = $('#wizard-form input').map(
function(){
var v = "";
@@ -555,8 +555,8 @@ function update_search_resume(){
v = $(this).val();
}
if (v == "") return;
- if (summary) summary += " ; ";
- summary += get_label_from_input(item_for_label) + " " + v;
+ if (query) query += " ";
+ query += get_label_from_input(item_for_label) + '="' + v + '"';
}
).get();
var selects = $('#wizard-form select').each(
@@ -567,18 +567,20 @@ function update_search_resume(){
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 (query) query += " ";
+ query += 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();
+ var value = $("#id_search_vector").val();
+ if (value){
+ value += " ";
}
+ value += query;
+ document.getElementById('wizard-form').reset();
+ value = $("#id_search_vector").val(value);
}
var sheet_list = new Array();
@@ -610,10 +612,9 @@ function register_advanced_search(){
$(".advanced-search-reset").click(
function(){
document.getElementById('wizard-form').reset();
- $('#advanced-search-resume').hide();
}
);
- $(".advanced-search-valid").click(update_search_resume);
+ $(".advanced-search-valid").click(update_search_field);
}
diff --git a/ishtar_common/templates/blocks/bs_field_snippet.html b/ishtar_common/templates/blocks/bs_field_snippet.html
index 4c4e17bf1..a164c81d8 100644
--- a/ishtar_common/templates/blocks/bs_field_snippet.html
+++ b/ishtar_common/templates/blocks/bs_field_snippet.html
@@ -1,5 +1,6 @@
{% load i18n %}
- <div class="form-group {% if field.field.widget.attrs.cols %}col-lg-12{% else %}col-lg-6{% endif %}{% if field.errors %} is-invalid{% endif %}{% if field.field.required %} required{% endif %}">
+ <div class="form-group {% if field.field.widget.attrs.cols %}col-lg-12{% else %}col-lg-6{% endif %}{% if field.errors %} is-invalid{% endif %}{% if field.field.required %} required{% endif %}"
+ data-alt-name="{{field.field.alt_name}}">
{{ field.label_tag }}
{% if field.help_text %}
<div class="input-group">
diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html
index 74dbadf5c..820ef8c99 100644
--- a/ishtar_common/templates/blocks/bs_form_snippet.html
+++ b/ishtar_common/templates/blocks/bs_form_snippet.html
@@ -17,7 +17,7 @@
{{field}}
{% elif field.name == 'search_vector' and forloop.counter0 == 0 %}
<div class="form-row">
- <div class="form-group col-lg-10">
+ <div class="form-group col-lg-12">
{{field|safe}}
{% if field.help_text %}
<small><a data-toggle="collapse" href="#{{field.auto_id}}_help"
@@ -28,14 +28,6 @@
{{ field.errors }}
</div>{% endif %}
</div>
- <div class="form-group col-lg">
- <p class="text-right">
- <button type="button" class="btn btn-secondary" data-toggle="modal"
- data-target="#modal-advanced-search">
- {% trans "Advanced search" %} <i class="fa fa-cogs" aria-hidden="true"></i>
- </button>
- </p>
- </div>
{% if field.help_text %}
<div class="collapse" id="{{field.auto_id}}_help">
@@ -45,10 +37,6 @@
</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 ":" %}&nbsp;</strong>
- <span id="advanced-search-resume-content"></span>
-</div>
{% else %}
{% if search and forloop.counter0 == 1 %}
<div class="modal" id="modal-advanced-search" tabindex="-1" role="dialog"
@@ -56,7 +44,10 @@
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
- <h5>{% trans "Advanced search" %}</h5>
+ <h5>{% trans "Criteria search" %}</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
</div>
<div class="modal-body form-row">
{% endif %}
@@ -86,10 +77,10 @@
{% 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-secondary"
+ data-dismiss="modal">{% trans 'Close' %}</button>
<button type="button" class="btn btn-primary advanced-search-valid"
- data-dismiss="modal">{% trans "Validate" %}</button>
+ data-dismiss="modal">{% trans "Add" %}</button>
</div>
</div>
</div>
diff --git a/ishtar_common/templates/widgets/search_input.html b/ishtar_common/templates/widgets/search_input.html
index c68d2347d..1d7521a2a 100644
--- a/ishtar_common/templates/widgets/search_input.html
+++ b/ishtar_common/templates/widgets/search_input.html
@@ -1,4 +1,4 @@
-<div class="input-group search-widget">
+{% load i18n %}<div class="input-group search-widget">
<span class="input-group-prepend">
<span class="input-group-text">
<i class="fa fa-search" aria-hidden="true"></i>
@@ -6,6 +6,12 @@
</span>
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
<span class="input-group-append">
+ <button type="button" class="btn btn-secondary" data-toggle="modal"
+ data-target="#modal-advanced-search">
+ <i class="fa fa-cogs" aria-hidden="true"></i>
+ </button>
+ </span>
+ <span class="input-group-append">
<span class="input-group-text clear-search">
<i class="fa fa-times" aria-hidden="true"></i>
</span>