From 9cedf69432bf6e4d87dd9a599b16b224c6f0d574 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Mon, 8 Aug 2016 21:46:05 +0800 Subject: [PATCH] fetch siblings & center topic keyboard shortcuts - fixes #466 (#588) * fetch siblings & center topic keyboard shortcuts - fixes #466 * add keyboard shortcut labels * update keyboard shortcuts to Ctrl+E, Ctrl+R, and Ctrl+T, and update docs * zoom extents back to Ctrl+E and use e.preventDefault --- app/assets/javascripts/src/Metamaps.JIT.js | 6 +- .../javascripts/src/Metamaps.Listeners.js | 67 ++++++++++++++----- app/assets/javascripts/src/Metamaps.Map.js | 2 + app/assets/stylesheets/application.css.erb | 3 +- app/views/shared/_cheatsheet.html.erb | 5 +- 5 files changed, 61 insertions(+), 22 deletions(-) diff --git a/app/assets/javascripts/src/Metamaps.JIT.js b/app/assets/javascripts/src/Metamaps.JIT.js index 4fc1506e..63c89b67 100644 --- a/app/assets/javascripts/src/Metamaps.JIT.js +++ b/app/assets/javascripts/src/Metamaps.JIT.js @@ -1335,7 +1335,7 @@ Metamaps.JIT = { if (Metamaps.Active.Map && Metamaps.Active.Mapper) menustring += '
  • Delete
    Ctrl+D
  • ' if (Metamaps.Active.Topic) { - menustring += '
  • Center this topic
  • ' + menustring += '
  • Center this topic
    Ctrl+E
  • ' } menustring += '
  • Open in new tab
  • ' if (Metamaps.Active.Mapper) { @@ -1360,10 +1360,10 @@ Metamaps.JIT = { // set up the get sibling menu as a "lazy load" // only fill in the submenu when they hover over the get siblings list item var siblingMenu = '' - menustring += '
  • Get siblings' + siblingMenu + '
  • ' + menustring += '
  • Reveal siblings' + siblingMenu + '
  • ' } menustring += '' diff --git a/app/assets/javascripts/src/Metamaps.Listeners.js b/app/assets/javascripts/src/Metamaps.Listeners.js index 83204eee..32f4c418 100644 --- a/app/assets/javascripts/src/Metamaps.Listeners.js +++ b/app/assets/javascripts/src/Metamaps.Listeners.js @@ -11,6 +11,7 @@ */ Metamaps.Listeners = { init: function () { + var self = this $(document).on('keydown', function (e) { if (!(Metamaps.Active.Map || Metamaps.Active.Topic)) return @@ -35,21 +36,6 @@ Metamaps.Listeners = { Metamaps.Visualize.mGraph.plot() } - break - case 69: // if e or E is pressed - if (e.ctrlKey) { - e.preventDefault() - if (Metamaps.Active.Map) { - Metamaps.JIT.zoomExtents(null, Metamaps.Visualize.mGraph.canvas) - } - } - break - case 77: // if m or M is pressed - if (e.ctrlKey) { - e.preventDefault() - Metamaps.Control.removeSelectedNodes() - Metamaps.Control.removeSelectedEdges() - } break case 68: // if d or D is pressed if (e.ctrlKey) { @@ -57,6 +43,19 @@ Metamaps.Listeners = { Metamaps.Control.deleteSelected() } break + case 69: // if e or E is pressed + if (e.ctrlKey) { + e.preventDefault() + if (Metamaps.Active.Topic) { + self.centerAndReveal(Metamaps.Selected.Nodes, { + center: true, + reveal: false + }) + } else if (Metamaps.Active.Map) { + Metamaps.JIT.zoomExtents(null, Metamaps.Visualize.mGraph.canvas) + } + } + break case 72: // if h or H is pressed if (e.ctrlKey) { e.preventDefault() @@ -64,8 +63,34 @@ Metamaps.Listeners = { Metamaps.Control.hideSelectedEdges() } break + case 77: // if m or M is pressed + if (e.ctrlKey) { + e.preventDefault() + Metamaps.Control.removeSelectedNodes() + Metamaps.Control.removeSelectedEdges() + } + break + case 82: // if r or R is pressed + if (e.ctrlKey && Metamaps.Active.Topic) { + e.preventDefault() + self.centerAndReveal(Metamaps.Selected.Nodes, { + center: false, + reveal: true + }) + } + break + case 84: // if t or T is pressed + if (e.ctrlKey && Metamaps.Active.Topic) { + e.preventDefault() + self.centerAndReveal(Metamaps.Selected.Nodes, { + center: true, + reveal: true + }) + } + break default: - break; // alert(e.which) + // console.log(e.which) + break } }) @@ -74,5 +99,15 @@ Metamaps.Listeners = { if ((Metamaps.Active.Map || Metamaps.Active.Topic) && Metamaps.Famous && Metamaps.Famous.maps.surf) Metamaps.Famous.maps.reposition() if (Metamaps.Active.Map && Metamaps.Realtime.inConversation) Metamaps.Realtime.positionVideos() }) + }, + centerAndReveal: function(nodes, opts) { + if (nodes.length < 1) return + var node = nodes[nodes.length - 1] + if (opts.center) { + Metamaps.Topic.centerOn(node.id) + } + if (opts.reveal) { + Metamaps.Topic.fetchRelatives(node) + } } }; // end Metamaps.Listeners diff --git a/app/assets/javascripts/src/Metamaps.Map.js b/app/assets/javascripts/src/Metamaps.Map.js index 34374614..ec3b946f 100644 --- a/app/assets/javascripts/src/Metamaps.Map.js +++ b/app/assets/javascripts/src/Metamaps.Map.js @@ -673,6 +673,8 @@ Metamaps.Map.InfoBox = { return string }, updateNumbers: function () { + if (!Metamaps.Active.Map) return + var self = Metamaps.Map.InfoBox var mapper = Metamaps.Active.Mapper var relevantPeople = Metamaps.Active.Map.get('permission') === 'commons' ? Metamaps.Mappers : Metamaps.Collaborators diff --git a/app/assets/stylesheets/application.css.erb b/app/assets/stylesheets/application.css.erb index 6c76dd9e..d1f866bc 100644 --- a/app/assets/stylesheets/application.css.erb +++ b/app/assets/stylesheets/application.css.erb @@ -1249,8 +1249,9 @@ h3.filterBox { .rightclickmenu .rc-metacode > ul > li, .rightclickmenu .rc-siblings > ul > li { padding: 6px 24px 6px 8px; - width: auto; white-space: nowrap; + width: auto; + min-width: 5em; } .rightclickmenu .rc-metacode ul ul, .rightclickmenu .rc-siblings ul ul { diff --git a/app/views/shared/_cheatsheet.html.erb b/app/views/shared/_cheatsheet.html.erb index c02246ac..6468ccb6 100644 --- a/app/views/shared/_cheatsheet.html.erb +++ b/app/views/shared/_cheatsheet.html.erb @@ -26,8 +26,9 @@
    -
    Recenter Topics around chosen Topic: Alt + click on the topic OR Right-click + 'center this topic'
    - +
    Recenter Topics around chosen Topic: Alt + click on the topic OR Ctrl + E
    +
    Reveal the siblings for a Topic: Right-click and choose 'Reveal siblings' OR Ctrl + R
    +
    Center topic and reveal siblings: Ctrl + T