diff options
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 |
commit | 4690678da7f93dbab70b7736e3f87ec559e3e909 (patch) | |
tree | 5439929272c54cf22b99219af45a530d8a9cc8c6 | |
parent | fff82488942f2653ba87816b52597fc9e7d57734 (diff) | |
download | Ishtar-4690678da7f93dbab70b7736e3f87ec559e3e909.tar.bz2 Ishtar-4690678da7f93dbab70b7736e3f87ec559e3e909.zip |
Search input: add a clear field button
-rw-r--r-- | archaeological_context_records/forms.py | 3 | ||||
-rw-r--r-- | archaeological_files/forms.py | 9 | ||||
-rw-r--r-- | archaeological_finds/forms.py | 3 | ||||
-rw-r--r-- | archaeological_finds/forms_treatments.py | 12 | ||||
-rw-r--r-- | archaeological_operations/forms.py | 9 | ||||
-rw-r--r-- | archaeological_warehouse/forms.py | 6 | ||||
-rw-r--r-- | ishtar_common/forms_common.py | 12 | ||||
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 3 | ||||
-rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 8 | ||||
-rw-r--r-- | ishtar_common/templates/widgets/search_input.html | 13 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 4 | ||||
-rw-r--r-- | scss/custom.scss | 9 |
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 */ |