summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2013-01-16 15:52:16 +0100
committerJochen Topf <jochen@topf.org>2013-01-16 15:52:16 +0100
commit8a3beaa29c1e16a4f230a414734de33d402c1c51 (patch)
treefe5dcbeaff93ea6314698e159ef4889169948885 /web
parentf10f0d7e7e36ed7d621a45dfc1d24119e42fd4b9 (diff)
downloadtaginfo-8a3beaa29c1e16a4f230a414734de33d402c1c51.tar
taginfo-8a3beaa29c1e16a4f230a414734de33d402c1c51.tar.gz
Add keyboard shortcuts
Diffstat (limited to 'web')
-rw-r--r--web/public/js/taginfo.js79
-rw-r--r--web/views/tag.erb1
-rw-r--r--web/viewsjs/index.js.erb2
-rw-r--r--web/viewsjs/key.js.erb2
-rw-r--r--web/viewsjs/relation.js.erb1
-rw-r--r--web/viewsjs/reports/characters_in_keys.js.erb1
-rw-r--r--web/viewsjs/reports/frequently_used_keys_without_wiki_page.js.erb1
-rw-r--r--web/viewsjs/reports/josm_styles.js.erb1
-rw-r--r--web/viewsjs/reports/key_lengths.js.erb1
-rw-r--r--web/viewsjs/reports/language_comparison_table_for_keys_in_the_wiki.js.erb1
-rw-r--r--web/viewsjs/reports/languages.js.erb1
-rw-r--r--web/viewsjs/reports/name_tags.js.erb1
-rw-r--r--web/viewsjs/reports/wiki_pages_about_non_existing_keys.js.erb1
13 files changed, 90 insertions, 3 deletions
diff --git a/web/public/js/taginfo.js b/web/public/js/taginfo.js
index 8846898..f9bcb06 100644
--- a/web/public/js/taginfo.js
+++ b/web/public/js/taginfo.js
@@ -13,7 +13,8 @@ Number.prototype.print_as_percent = function() {
/* ============================ */
var grids = {},
- current_grid = '';
+ current_grid = '',
+ up = function() { window.location = '/'; };
/* ============================ */
@@ -302,7 +303,7 @@ function pp_rtype(rtype) {
function pp_role(role) {
if (role == '') {
- return span(texts.misc.empty_string, 'badchar empty');
+ return span(texts.misc.empty_string, 'empty');
}
var result = '',
@@ -401,6 +402,16 @@ function create_flexigrid(domid, options) {
grids[domid] = me.flexigrid(jQuery.extend({}, flexigrid_defaults, texts.flexigrid, options, { rp: rp }));
jQuery('th *[title]').tipsy({ opacity: 1, delayIn: 500, gravity: 's', offset: 3 });
jQuery('.sDiv input[title]').tipsy({ opacity: 1, delayIn: 500, gravity: 'e' });
+ jQuery('input.qsbox').bind('keydown', function(event) {
+ if (event.which == 27) { // esc
+ this.blur();
+ return false;
+ }
+ if (event.which == 9) { // tab
+ jQuery('input#search').focus();
+ return false;
+ }
+ });
} else {
// grid does exist, make sure it has the right size
resize_grid(domid);
@@ -469,7 +480,69 @@ jQuery(document).ready(function() {
window.location = '/keys/' + ui.item.value;
}
}
- }).focus();
+ });
+
+ jQuery(document).bind('keyup', function(event) {
+ if (event.target == document.body) {
+ if (event.which >= 49 && event.which <= 57) { // digit
+ jQuery("#tabs").tabs("select", event.which - 49);
+ } else {
+ switch (event.which) {
+ /* case 63: // ?
+ window.location = '/help';
+ break;*/
+ case 70: // f
+ jQuery('input.qsbox').focus();
+ break;
+ case 72: // h
+ window.location = '/';
+ break;
+ case 75: // k
+ window.location = '/keys';
+ break;
+ case 83: // s
+ jQuery('input#search').focus();
+ break;
+ case 84: // t
+ window.location = '/tags';
+ break;
+ case 8: // backspace
+ up();
+ break;
+ case 36: // home
+ jQuery('div.pFirst:visible').click();
+ break;
+ case 33: // page up
+ jQuery('div.pPrev:visible').click();
+ break;
+ case 34: // page down
+ jQuery('div.pNext:visible').click();
+ break;
+ case 35: // end
+ jQuery('div.pLast:visible').click();
+ break;
+ }
+ }
+ }
+ });
+
+ jQuery(document).bind('keydown', function(event) {
+ if (event.target == document.body && event.which == 9) {
+ jQuery('input#search').focus();
+ return false;
+ }
+ });
+
+ jQuery('input#search').bind('keydown', function(event) {
+ if (event.which == 27) { // esc
+ this.blur();
+ return false;
+ }
+ if (event.which == 9) { // tab
+ jQuery('input.qsbox:visible').focus();
+ return false;
+ }
+ });
jQuery(window).resize(function() {
resize_box();
diff --git a/web/views/tag.erb b/web/views/tag.erb
index d9ef5a2..0ad61c7 100644
--- a/web/views/tag.erb
+++ b/web/views/tag.erb
@@ -76,6 +76,7 @@
function page_init2() {
var key = #{ @key.to_json },
value = #{ @value.to_json };
+ up = function() { window.location = url_for_key(key); };
jQuery('h1').html(link_to_key(key) + '=' + pp_value(value));
jQuery('span#keylink').html(link_to_key(key));
init_tabs([key, value, #{ @filter_type.to_json }]);
diff --git a/web/viewsjs/index.js.erb b/web/viewsjs/index.js.erb
index 59a7806..2d11329 100644
--- a/web/viewsjs/index.js.erb
+++ b/web/viewsjs/index.js.erb
@@ -14,6 +14,8 @@ var tags_data = <%= tags.map{ |entry| [ entry['skey'], entry['svalue'] ] }.to_js
var width, height, font_family = 'Impact', font_weight = 'normal';
+up = function() {};
+
function draw(words) {
var fill = d3.scale.category20b();
diff --git a/web/viewsjs/key.js.erb b/web/viewsjs/key.js.erb
index aceef99..b0a67e4 100644
--- a/web/viewsjs/key.js.erb
+++ b/web/viewsjs/key.js.erb
@@ -183,6 +183,8 @@ function create_chart(params) {
}
function page_init() {
+ up = function() { window.location = '/keys'; }
+
jQuery('#josm_button').bind('click', function() {
jQuery('#josmiframe')[0].src = jQuery('#josm_button')[0].href;
return false;
diff --git a/web/viewsjs/relation.js.erb b/web/viewsjs/relation.js.erb
index c33073e..f4713be 100644
--- a/web/viewsjs/relation.js.erb
+++ b/web/viewsjs/relation.js.erb
@@ -35,5 +35,6 @@ var create_flexigrid_for = {
};
function page_init() {
+ up = function() { window.location = '/relations'; };
page_init2();
}
diff --git a/web/viewsjs/reports/characters_in_keys.js.erb b/web/viewsjs/reports/characters_in_keys.js.erb
index a36f7b4..900b155 100644
--- a/web/viewsjs/reports/characters_in_keys.js.erb
+++ b/web/viewsjs/reports/characters_in_keys.js.erb
@@ -72,6 +72,7 @@ var create_flexigrid_for = {
};
function page_init() {
+ up = function() { window.location = '/reports'; };
init_tabs([]);
var w = 968,
diff --git a/web/viewsjs/reports/frequently_used_keys_without_wiki_page.js.erb b/web/viewsjs/reports/frequently_used_keys_without_wiki_page.js.erb
index 680ba5d..d405fe5 100644
--- a/web/viewsjs/reports/frequently_used_keys_without_wiki_page.js.erb
+++ b/web/viewsjs/reports/frequently_used_keys_without_wiki_page.js.erb
@@ -36,6 +36,7 @@ function create_flexigrid_with_option(english) {
}
function page_init() {
+ up = function() { window.location = '/reports'; };
page_init2();
jQuery('#english').bind('click', function() {
jQuery('#grid-keys').flexOptions({
diff --git a/web/viewsjs/reports/josm_styles.js.erb b/web/viewsjs/reports/josm_styles.js.erb
index ea3b365..157f223 100644
--- a/web/viewsjs/reports/josm_styles.js.erb
+++ b/web/viewsjs/reports/josm_styles.js.erb
@@ -33,5 +33,6 @@ function create_flexigrid_with_option(stylename) {
}
function page_init() {
+ up = function() { window.location = '/reports'; };
page_init2();
}
diff --git a/web/viewsjs/reports/key_lengths.js.erb b/web/viewsjs/reports/key_lengths.js.erb
index 63652ca..af13615 100644
--- a/web/viewsjs/reports/key_lengths.js.erb
+++ b/web/viewsjs/reports/key_lengths.js.erb
@@ -47,6 +47,7 @@ end
hist = hist.map{ |item| item.nil? ? 0 : item } %>
function page_init() {
+ up = function() { window.location = '/reports'; };
init_tabs([]);
var bar_width = 6,
diff --git a/web/viewsjs/reports/language_comparison_table_for_keys_in_the_wiki.js.erb b/web/viewsjs/reports/language_comparison_table_for_keys_in_the_wiki.js.erb
index f4f99cd..85184a8 100644
--- a/web/viewsjs/reports/language_comparison_table_for_keys_in_the_wiki.js.erb
+++ b/web/viewsjs/reports/language_comparison_table_for_keys_in_the_wiki.js.erb
@@ -12,6 +12,7 @@
@languages_lookup = @languages.map{ |lang| "'#{lang}': #{lang_lookup[lang]}" }.join(', ')
%>
function page_init() {
+ up = function() { window.location = '/reports'; };
var lang_to_idx = {
<%= @languages_lookup %>
};
diff --git a/web/viewsjs/reports/languages.js.erb b/web/viewsjs/reports/languages.js.erb
index 2cb8a8f..9d8bd04 100644
--- a/web/viewsjs/reports/languages.js.erb
+++ b/web/viewsjs/reports/languages.js.erb
@@ -1,5 +1,6 @@
<% page = @trans.t.reports.languages %>
function page_init() {
+ up = function() { window.location = '/reports'; };
create_flexigrid('grid-langs', {
url: '/api/4/wiki/languages',
colModel: [
diff --git a/web/viewsjs/reports/name_tags.js.erb b/web/viewsjs/reports/name_tags.js.erb
index 241bdc3..07b78cc 100644
--- a/web/viewsjs/reports/name_tags.js.erb
+++ b/web/viewsjs/reports/name_tags.js.erb
@@ -74,6 +74,7 @@ var create_flexigrid_for = {
};
function page_init() {
+ up = function() { window.location = '/reports'; };
jQuery('#subtag-filter').bind('change', function() {
var value = this.value;
diff --git a/web/viewsjs/reports/wiki_pages_about_non_existing_keys.js.erb b/web/viewsjs/reports/wiki_pages_about_non_existing_keys.js.erb
index a0addf6..54d1d14 100644
--- a/web/viewsjs/reports/wiki_pages_about_non_existing_keys.js.erb
+++ b/web/viewsjs/reports/wiki_pages_about_non_existing_keys.js.erb
@@ -3,6 +3,7 @@
page = @trans.t.reports.wiki_pages_about_non_existing_keys
%>
function page_init() {
+ up = function() { window.location = '/reports'; };
create_flexigrid('grid-keys', {
url: '/api/4/keys/all?filters=in_wiki,not_in_db&include=wikipages',
colModel: [