summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-03-27 12:52:19 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-03-27 12:52:19 +0200
commit4690678da7f93dbab70b7736e3f87ec559e3e909 (patch)
tree5439929272c54cf22b99219af45a530d8a9cc8c6
parentfff82488942f2653ba87816b52597fc9e7d57734 (diff)
downloadIshtar-4690678da7f93dbab70b7736e3f87ec559e3e909.tar.bz2
Ishtar-4690678da7f93dbab70b7736e3f87ec559e3e909.zip
Search input: add a clear field button
-rw-r--r--archaeological_context_records/forms.py3
-rw-r--r--archaeological_files/forms.py9
-rw-r--r--archaeological_finds/forms.py3
-rw-r--r--archaeological_finds/forms_treatments.py12
-rw-r--r--archaeological_operations/forms.py9
-rw-r--r--archaeological_warehouse/forms.py6
-rw-r--r--ishtar_common/forms_common.py12
-rw-r--r--ishtar_common/static/js/ishtar.js3
-rw-r--r--ishtar_common/templates/blocks/bs_form_snippet.html8
-rw-r--r--ishtar_common/templates/widgets/search_input.html13
-rw-r--r--ishtar_common/widgets.py4
-rw-r--r--scss/custom.scss9
12 files changed, 66 insertions, 25 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index 6e7c3602e..481ec3353 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -61,7 +61,8 @@ class OperationFormSelection(CustomForm, forms.Form):
class RecordSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
label = forms.CharField(label=_(u"ID"), max_length=100)
parcel__town = get_town_field()
if settings.COUNTRY == 'fr':
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index b87ef9ba5..5583e7277 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -47,7 +47,8 @@ from bootstrap_datepicker.widgets import DatePicker
class FileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
numeric_reference = forms.IntegerField(label=_("Numeric reference"))
internal_reference = forms.CharField(max_length=200,
@@ -406,7 +407,8 @@ class FinalFileDeleteForm(FinalForm):
class AdministrativeActFileModifySelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
@@ -434,7 +436,8 @@ class AdministrativeActFileModifySelect(TableSelect):
class AdministrativeActFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 6a72aa590..6811f7773 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -392,7 +392,8 @@ DatingFormSet.form_slug = "find-040-dating"
class FindSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
base_finds__cache_short_id = forms.CharField(label=_(u"Short ID"))
base_finds__cache_complete_id = forms.CharField(label=_(u"Complete ID"))
label = forms.CharField(label=_(u"Free ID"))
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index 86f00a834..e4fa2def7 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -49,7 +49,8 @@ logger = logging.getLogger(__name__)
class TreatmentSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
label = forms.CharField(label=_(u"Label"))
other_reference = forms.CharField(label=_(u"Other ref."))
year = forms.IntegerField(label=_(u"Year"))
@@ -329,7 +330,8 @@ class DashboardForm(IshtarForm):
class AdministrativeActTreatmentSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
act_type = forms.ChoiceField(label=_("Act type"), choices=[])
@@ -399,7 +401,8 @@ class AdministrativeActTreatmentModifForm(
class TreatmentFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
name = forms.CharField(label=_(u"Name"))
internal_reference = forms.CharField(label=_(u"Internal ref."))
year = forms.IntegerField(label=_(u"Year"))
@@ -585,7 +588,8 @@ class DashboardTreatmentFileForm(IshtarForm):
class AdministrativeActTreatmentFileSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
act_type = forms.ChoiceField(label=_("Act type"), choices=[])
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 91d421541..9906709d9 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -479,7 +479,8 @@ RecordRelationsFormSet.form_slug = "operation-080-relations"
class OperationSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
operation_code = forms.IntegerField(label=_(u"Numeric reference"))
if settings.COUNTRY == 'fr':
@@ -1247,7 +1248,8 @@ class OperationDeletionForm(FinalForm):
class SiteSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
reference = forms.CharField(label=_(u"Reference"), max_length=200,
required=False)
name = forms.CharField(label=_(u"Name"), max_length=200, required=False)
@@ -1428,7 +1430,8 @@ OperationSourceFormSelection = get_form_selection(
class AdministrativeActOpeSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
year = forms.IntegerField(label=_("Year"))
index = forms.IntegerField(label=_("Index"))
if settings.COUNTRY == 'fr':
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index fc8ba056e..15cfead74 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -79,7 +79,8 @@ SelectedDivisionFormset.form_slug = "warehouse-020-divisions"
class WarehouseSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
name = forms.CharField(label=_(u"Name"))
warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), choices=[])
towns = forms.CharField(label=_(u"Town"))
@@ -244,7 +245,8 @@ class ContainerModifyForm(ContainerForm):
class ContainerSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
location = get_warehouse_field()
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
reference = forms.CharField(label=_(u"Ref."))
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 94dd7b8ee..c7cea9bdc 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -297,7 +297,8 @@ class OrganizationForm(ManageOldType, NewItemForm):
class OrganizationSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
name = forms.CharField(label=_(u"Name"), max_length=300)
organization_type = forms.ChoiceField(label=_(u"Type"), choices=[])
@@ -411,7 +412,8 @@ class BaseOrganizationForm(forms.ModelForm):
class PersonSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
name = forms.CharField(label=_(u"Name"), max_length=200)
surname = forms.CharField(label=_(u"Surname"), max_length=50)
email = forms.CharField(label=_(u"Email"), max_length=75)
@@ -538,7 +540,8 @@ class PersonUserFormSelection(PersonFormSelection):
class IshtarUserSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
username = forms.CharField(label=_(u"Username"), max_length=200)
name = forms.CharField(label=_(u"Name"), max_length=200)
surname = forms.CharField(label=_(u"Surname"), max_length=50)
@@ -927,7 +930,8 @@ class SourceForm(CustomForm, ManageOldType):
class SourceSelect(TableSelect):
- search_vector = forms.CharField(label=_(u"Full text search"))
+ search_vector = forms.CharField(label=_(u"Full text search"),
+ widget=widgets.SearchWidget)
authors = forms.IntegerField(
widget=widgets.JQueryAutoComplete(
"/" + settings.URL_PATH + 'autocomplete-author',
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 126373b94..b5d701528 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -262,6 +262,9 @@ $(document).ready(function(){
});
$("a.async-link").click(manage_async_link);
$(".chosen-select").chosen();
+ $(".clear-search").click(function(){
+ $(this).parent().parent().children('input').prop("value", "");
+ });
});
$(document).on("click", '#to_bottom_arrow', function(){
diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html
index 7c7d4175a..818c654d1 100644
--- a/ishtar_common/templates/blocks/bs_form_snippet.html
+++ b/ishtar_common/templates/blocks/bs_form_snippet.html
@@ -18,13 +18,7 @@
{% elif field.name == 'search_vector' and forloop.counter0 == 0 %}
<div class="form-row">
<div class="form-group col-lg-10">
- <div class="input-group">
- <span class="input-group-prepend">
- <span class="input-group-text">
- <i class="fa fa-search" aria-hidden="true"></i></span>
- </span>
- {{field|safe}}
- </div>
+ {{field|safe}}
{% if field.help_text %}
<small><a data-toggle="collapse" href="#{{field.auto_id}}_help"
aria-expanded="false" aria-controls="{{field.auto_id}}_help">
diff --git a/ishtar_common/templates/widgets/search_input.html b/ishtar_common/templates/widgets/search_input.html
new file mode 100644
index 000000000..c68d2347d
--- /dev/null
+++ b/ishtar_common/templates/widgets/search_input.html
@@ -0,0 +1,13 @@
+<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>
+ </span>
+ </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">
+ <span class="input-group-text clear-search">
+ <i class="fa fa-times" aria-hidden="true"></i>
+ </span>
+ </span>
+</div>
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index a9fcdf798..ca4036f4c 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -286,6 +286,10 @@ if settings.SURFACE_UNIT == 'square-metre':
AreaWidget = SquareMeterWidget
+class SearchWidget(forms.TextInput):
+ template_name = 'widgets/search_input.html'
+
+
class JQueryAutoComplete(forms.TextInput):
def __init__(self, source, associated_model=None, options=None, attrs=None,
new=False, url_new='', multiple=False, limit=None,
diff --git a/scss/custom.scss b/scss/custom.scss
index 38b36d69a..d77beef27 100644
--- a/scss/custom.scss
+++ b/scss/custom.scss
@@ -324,6 +324,15 @@ div#foot a:hover {
overflow: auto;
}
+.clear-search{
+ color: $gray-500;
+}
+
+.clear-search:hover{
+ color: $gray-800;
+ cursor: pointer;
+}
+
/* ui-autocomplete - start */