summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-28 19:39:41 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-02-28 19:39:41 +0100
commit566fa67f16c94586a56d773b477c3322abb8d032 (patch)
treeef64a215dde2c0d04dbe6743e23c8ad3f0710b32
parent3dc0e91a4b8e363065f674d277d78f214d13378c (diff)
downloadIshtar-566fa67f16c94586a56d773b477c3322abb8d032.tar.bz2
Ishtar-566fa67f16c94586a56d773b477c3322abb8d032.zip
UI: explicitly remind the current pinned search above the result table (refs #3485)
-rw-r--r--ishtar_common/templates/blocks/JQueryJqGrid.html19
-rw-r--r--ishtar_common/views.py51
2 files changed, 57 insertions, 13 deletions
diff --git a/ishtar_common/templates/blocks/JQueryJqGrid.html b/ishtar_common/templates/blocks/JQueryJqGrid.html
index 607f81f7d..258082877 100644
--- a/ishtar_common/templates/blocks/JQueryJqGrid.html
+++ b/ishtar_common/templates/blocks/JQueryJqGrid.html
@@ -8,6 +8,12 @@
<h4>{% trans "Search and select an item" %}</h4>
+<h5 id="pinned_search_{{name}}">
+ <i class="fa fa-thumb-tack"></i> &nbsp;
+ <strong>{% trans "Pinned search:" %}</strong>
+ <em><span id="pinned_search_content_{{name}}"></span></em>
+</h5>
+
<table id='grid_{{name}}' class='jqgrid'></table>
<div id='pager_{{name}}'></div>
@@ -97,6 +103,19 @@ jQuery(document).ready(function(){
jsonReader : {repeatitems: false},
loadError: function (jqXHR, textStatus, errorThrown) {
alert("{% trans "An error as occured during search. Check your query fields." %}");
+ },
+ beforeProcessing: function(data, status, xhr){
+ $('#pinned_search_content_{{name}}').html('');
+ for (idx in data){
+ if (idx == 'pinned-search' && data[idx] != ''){
+ $('#pinned_search_content_{{name}}').html(data[idx]);
+ }
+ }
+ if ($('#pinned_search_content_{{name}}').html()){
+ $('#pinned_search_{{name}}').show();
+ } else {
+ $('#pinned_search_{{name}}').hide();
+ }
}
});
{% if multiple %}
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index c9eb9fec8..a4ad130be 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -58,7 +58,8 @@ from menus import menu
from archaeological_files.models import File
from archaeological_operations.models import Operation
from archaeological_context_records.models import ContextRecord
-from archaeological_finds.models import Find, Treatment, TreatmentFile
+from archaeological_finds.models import Find, Treatment, TreatmentFile, \
+ FindBasket
from archaeological_operations.forms import DashboardForm as DashboardFormOpe
from archaeological_files.forms import DashboardForm as DashboardFormFile
@@ -307,15 +308,18 @@ def shortcut_menu(request):
return render_to_response('ishtar/blocks/shortcut_menu.html', dct,
context_instance=RequestContext(request))
+CURRENT_ITEM_KEYS = (('file', File),
+ ('operation', Operation),
+ ('contextrecord', ContextRecord),
+ ('find', Find),
+ ('treatmentfile', TreatmentFile),
+ ('treatment', Treatment))
+CURRENT_ITEM_KEYS_DICT = dict(CURRENT_ITEM_KEYS)
+
def get_current_items(request):
currents = {}
- for key, model in (('file', File),
- ('operation', Operation),
- ('contextrecord', ContextRecord),
- ('find', Find),
- ('treatmentfile', TreatmentFile),
- ('treatment', Treatment)):
+ for key, model in CURRENT_ITEM_KEYS:
currents[key] = None
if key in request.session and request.session[key]:
try:
@@ -693,6 +697,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
q = Q(**{req_key: val})
reqs |= q
and_reqs.append(reqs)
+ pinned_search = ""
if 'submited' not in request_items and full != 'shortcut':
# default search
# an item is selected in the default menu
@@ -700,17 +705,36 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
request.session[default_name]:
value = request.session[default_name]
if 'basket-' in value:
- dct = {"basket__pk":
- request.session[default_name].split('-')[-1]}
+ try:
+ dct = {"basket__pk":
+ request.session[default_name].split('-')[-1]}
+ pinned_search = unicode(FindBasket.objects.get(
+ pk=dct["basket__pk"]))
+ except FindBasket.DoesNotExist:
+ pass
else:
- dct = {"pk": request.session[default_name]}
+ try:
+ dct = {"pk": request.session[default_name]}
+ pinned_search = unicode(model._meta.verbose_name)\
+ + u" - " + unicode(
+ model.objects.get(pk=dct["pk"]))
+ except model.DoesNotExist:
+ pass
elif dct == (base_request or {}):
# a parent item may be selected in the default menu
for name, key in my_relative_session_names:
if name in request.session and request.session[name] \
- and 'basket-' not in request.session[name]:
- dct.update({key: request.session[name]})
- break
+ and 'basket-' not in request.session[name] \
+ and name in CURRENT_ITEM_KEYS_DICT:
+ up_model = CURRENT_ITEM_KEYS_DICT[name]
+ try:
+ dct.update({key: request.session[name]})
+ pinned_search = unicode(up_model._meta.verbose_name)\
+ + u" - " + unicode(
+ up_model.objects.get(pk=dct[key]))
+ break
+ except up_model.DoesNotExist:
+ pass
if (not dct or data_type == 'csv') \
and func_name in request.session:
dct = request.session[func_name]
@@ -1053,6 +1077,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
data = json.dumps({
"records": items_nb,
"rows": rows,
+ "pinned-search": pinned_search,
"page": page_nb,
"total": (items_nb / row_nb + 1) if row_nb else items_nb,
})