summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit4473e91231794ba9082795df9441d49e461b10db (patch)
treef765507272d16ad73ada0198fc30f8afc1b97319 /ishtar_common
parent4eff275ae272752b91f1c87b2085689923bb1366 (diff)
downloadIshtar-4473e91231794ba9082795df9441d49e461b10db.tar.bz2
Ishtar-4473e91231794ba9082795df9441d49e461b10db.zip
WIP: ajaxify shortcut menu
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/static/js/ishtar.js76
-rw-r--r--ishtar_common/static/media/style.css18
-rw-r--r--ishtar_common/templates/base.html2
-rw-r--r--ishtar_common/templates/ishtar/blocks/shortcut_menu.html8
-rw-r--r--ishtar_common/views.py2
5 files changed, 98 insertions, 8 deletions
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