diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/app/directives/itemshortcuts.coffee | 31 | ||||
-rw-r--r-- | js/public/app.js | 31 |
2 files changed, 61 insertions, 1 deletions
diff --git a/js/app/directives/itemshortcuts.coffee b/js/app/directives/itemshortcuts.coffee index f80045d42..7c27b281a 100644 --- a/js/app/directives/itemshortcuts.coffee +++ b/js/app/directives/itemshortcuts.coffee @@ -59,6 +59,27 @@ angular.module('News').directive 'itemShortcuts', ['$window', ($window) -> break + getCurrentItem = (scrollArea) -> + $scrollArea = $(scrollArea) + $items = $scrollArea.find('.feed_item') + for item in $items + $item = $(item) + # 130px of the item should be visible + if ($item.height() + $item.position().top) > 110 + return $item + + + keepUnreadCurrentItem = (scrollArea) -> + $item = getCurrentItem(scrollArea) + $item.find('.keep_unread').trigger('click') + + + starCurrentItem = (scrollArea) -> + $item = getCurrentItem(scrollArea) + $item.find('.star').trigger('click') + + + $($window.document).keydown (e) -> # only activate if no input elements is focused focused = $(':focus') @@ -78,5 +99,15 @@ angular.module('News').directive 'itemShortcuts', ['$window', ($window) -> else if e.keyCode == 75 or e.keyCode == 37 or e.keyCode == 80 jumpToPreviousItem(scrollArea) + # u + else if e.keyCode == 85 + keepUnreadCurrentItem(scrollArea) + + # s or i + else if e.keyCode == 73 or e.keyCode == 83 + starCurrentItem(scrollArea) + + + ]
\ No newline at end of file diff --git a/js/public/app.js b/js/public/app.js index 2962731f3..18aadc4c7 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -147,7 +147,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. angular.module('News').directive('itemShortcuts', [ '$window', function($window) { return function(scope, elm, attr) { - var jumpTo, jumpToNextItem, jumpToPreviousItem; + var getCurrentItem, jumpTo, jumpToNextItem, jumpToPreviousItem, keepUnreadCurrentItem, starCurrentItem; jumpTo = function($scrollArea, $item) { var position; @@ -195,6 +195,31 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. } return _results; }; + getCurrentItem = function(scrollArea) { + var $item, $items, $scrollArea, item, _i, _len; + + $scrollArea = $(scrollArea); + $items = $scrollArea.find('.feed_item'); + for (_i = 0, _len = $items.length; _i < _len; _i++) { + item = $items[_i]; + $item = $(item); + if (($item.height() + $item.position().top) > 110) { + return $item; + } + } + }; + keepUnreadCurrentItem = function(scrollArea) { + var $item; + + $item = getCurrentItem(scrollArea); + return $item.find('.keep_unread').trigger('click'); + }; + starCurrentItem = function(scrollArea) { + var $item; + + $item = getCurrentItem(scrollArea); + return $item.find('.star').trigger('click'); + }; return $($window.document).keydown(function(e) { var focused, scrollArea; @@ -205,6 +230,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return jumpToNextItem(scrollArea); } else if (e.keyCode === 75 || e.keyCode === 37 || e.keyCode === 80) { return jumpToPreviousItem(scrollArea); + } else if (e.keyCode === 85) { + return keepUnreadCurrentItem(scrollArea); + } else if (e.keyCode === 73 || e.keyCode === 83) { + return starCurrentItem(scrollArea); } } }); |