diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-22 09:46:06 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-24 16:48:04 +0200 |
commit | 4473e91231794ba9082795df9441d49e461b10db (patch) | |
tree | f765507272d16ad73ada0198fc30f8afc1b97319 | |
parent | 4eff275ae272752b91f1c87b2085689923bb1366 (diff) | |
download | Ishtar-4473e91231794ba9082795df9441d49e461b10db.tar.bz2 Ishtar-4473e91231794ba9082795df9441d49e461b10db.zip |
WIP: ajaxify shortcut menu
-rw-r--r-- | archaeological_operations/urls.py | 6 | ||||
-rw-r--r-- | archaeological_operations/views.py | 1 | ||||
-rw-r--r-- | ishtar_common/static/js/ishtar.js | 76 | ||||
-rw-r--r-- | ishtar_common/static/media/style.css | 18 | ||||
-rw-r--r-- | ishtar_common/templates/base.html | 2 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/blocks/shortcut_menu.html | 8 | ||||
-rw-r--r-- | ishtar_common/views.py | 2 |
7 files changed, 105 insertions, 8 deletions
diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 7d494f973..a20eccfe5 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -105,6 +105,12 @@ urlpatterns += patterns( url(r'get-operation-full/own/(?P<type>.+)?$', 'get_operation', name='get-own-operation-full', kwargs={'full': True, 'force_own': True}), + url(r'get-operation-cached/(?P<type>.+)?$', + 'get_operation', name='get-own-operation-cached', + kwargs={'full': 'cached'}), + url(r'get-operation-cached/own/(?P<type>.+)?$', + 'get_operation', name='get-own-operation-cached', + kwargs={'full': 'cached', 'force_own': True}), url(r'get-available-operation-code/(?P<year>.+)?$', 'get_available_operation_code', name='get_available_operation_code'), url(r'revert-operation/(?P<pk>.+)/(?P<date>.+)$', diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 84e98010e..ae82e9e89 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -148,6 +148,7 @@ get_operation = get_item( relative_session_names=[('file', 'associated_file__pk')], extra_request_keys={ 'common_name': 'common_name__icontains', + 'cached_label': 'cached_label__icontains', 'comment': 'comment__icontains', 'scientific_documentation_comment': 'scientific_documentation_comment__icontains', diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index fecefe0a9..70b056c63 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -38,22 +38,25 @@ function manage_async_link(event){ function get_next_table_id(){} function get_previous_table_id(){} +var current_operation_change = function(){ + $.post('/' + url_path + 'update-current-item/', + {item:'operation', value:$("#current_operation").val()}, + load_shortcut_menu + ); +}; + function init_shortcut_menu(html){ $("#progress").hide(); $("#context_menu").html(html); $(".chosen-select").chosen(); + chosen_ajaxify("current_operation", '/get-operation-cached/?cached_label=', + current_operation_change); $("#current_file").change(function(){ $.post('/' + url_path + 'update-current-item/', {item:'file', value:$("#current_file").val()}, load_shortcut_menu ); }); - $("#current_operation").change(function(){ - $.post('/' + url_path + 'update-current-item/', - {item:'operation', value:$("#current_operation").val()}, - load_shortcut_menu - ); - }); $("#current_contextrecord").change(function(){ $.post('/' + url_path + 'update-current-item/', {item:'contextrecord', value:$("#current_contextrecord").val()}, @@ -267,3 +270,64 @@ function show_hide_flex(id){ $(id).hide(); } } + +var delay = (function(){ + var timer = 0; + return function(callback, ms){ + clearTimeout (timer); + timer = setTimeout(callback, ms); + }; +})(); + + +function chosen_ajaxify(id, ajax_url, current_change_callback){ + $('div#' + id + '_chosen .chosen-search input').keyup(function(){ + var keyword = $('div#' + id + '_chosen .chosen-search input').val(); + var keyword_pattern = new RegExp(keyword, 'gi'); + $('div#' + id + '_chosen ul.chosen-results').empty(); + $("#"+id).empty(); + delay(function(){ + $.ajax({ + url: ajax_url + keyword, + dataType: "json", + success: function(response){ + $('#'+id).append('<option value="">--</option>'); + $.map(response['rows'], function(item){ + $('#'+id).append('<option value="' + item['id'] + '">' + item['cached_label'] + '</option>'); + }); + $("#"+id).trigger("chosen:updated"); + $('div#' + id + '_chosen .chosen-search input').val(keyword); + $('div#' + id + '_chosen').removeClass('chosen-container-single-nosearch'); + $('div#' + id + '_chosen .chosen-search input').removeAttr('readonly'); + $('div#' + id + '_chosen .chosen-search input').focus(); + /* + $('div#' + id + '_chosen .active-result').each(function(){ + var html = $('div#' + id + '_chosen ul.chosen-results').html(); + $('div#' + id + '_chosen ul.chosen-results').html(html.replace(keyword_pattern, function(matched){ + return '<em>' + matched + '</em>'; + })); + });*/ + $("#" + id).change(current_change_callback); + } + }); + }, 1000); + }); +} + + +var activate_all_search_msg = "Searches in the shortcut menu deals with all items."; +var activate_own_search_msg = "Searches in the shortcut menu deals with only your items."; + +function activate_all_search(){ + $('.activate_all_search').removeClass('disabled'); + $('.activate_own_search').addClass('disabled'); + display_info(activate_all_search_msg); + return false; +} + +function activate_own_search(){ + $('.activate_own_search').removeClass('disabled'); + $('.activate_all_search').addClass('disabled'); + display_info(activate_own_search_msg); + return false; +} diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index aab5063e4..2ef0ab8ac 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -29,6 +29,10 @@ a, a.remove { color:#D14; } +a.disabled { + color:#ccc; +} + .badge, a.add-button, #reset_wizards, @@ -425,13 +429,25 @@ div#context_menu fieldset{ border-radius: 0; } +div#action_current_items{ + display: inline-block; + vertical-align: top; + width: 70px; +} + +div#action_current_items p{ + padding: 0; + margin: 0; + text-align: center; +} + div#context_menu table{ display: inline; vertical-align: top; } div#context_menu .icon{ - padding: 0.6em 0.5em; + padding: 0.2em 0.3em; } div#context_menu ul{ diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index 695edd758..a0cf154ac 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -32,6 +32,8 @@ {% endblock %} <script type='text/javascript'> var shortcut_url = '{% url "shortcut-menu" %}'; + var activate_all_search_msg = "{% trans 'Searches in the shortcut menu deals with all items.' %}"; + var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deals with only your items.' %}"; </script> </head> <body{% if current_theme%} id='{{current_theme}}'{%endif%}> diff --git a/ishtar_common/templates/ishtar/blocks/shortcut_menu.html b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html index c1100ae01..520218083 100644 --- a/ishtar_common/templates/ishtar/blocks/shortcut_menu.html +++ b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html @@ -3,7 +3,13 @@ {% if current_menu %} <form method="post" action="{% url 'update-current-item' %}"> <fieldset> -<i class="icon fa fa-thumb-tack fa-2x" aria-hidden="true" title="{% trans 'Pin an item in order to constrain default searches with this item. By default only your items are displayed. New created and modified items are auto-pin.' %}"></i> +<div id='action_current_items'> +<p><i class="icon fa fa-thumb-tack fa-2x" aria-hidden="true" title="{% trans 'Pin an item in order to constrain default searches with this item. By default only your items are displayed. New created and modified items are auto-pin.' %}"></i></p> +<p> +<a href='' onclick='return activate_own_search();' class='activate_own_search'><i class="icon fa fa-user" aria-hidden="true" title="{% trans 'Search within my items' %}"></i></a> +<a href='' class='activate_all_search disabled' onclick='return activate_all_search();'><i class="icon fa fa-users" aria-hidden="true" title="{% trans 'Search within all items' %}"></i></a> +</p> +</div> <table id='current_items'> {% for lbl, model_name, main_cls, items in current_menu %} <tr> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 5f3e80c77..eb557bb51 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -731,6 +731,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[], for idx, col in enumerate(table_cols): if col in model.CONTEXTUAL_TABLE_COLS[contxt]: table_cols[idx] = model.CONTEXTUAL_TABLE_COLS[contxt][col] + if full == 'cached': + table_cols = ['cached_label'] # manage sort tables manual_sort_key = None |