diff options
| -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 | 
