diff options
Diffstat (limited to 'js/build/app.js')
-rw-r--r-- | js/build/app.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/js/build/app.js b/js/build/app.js index a9b8cff35..6baf70439 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -1803,6 +1803,65 @@ app.service('SettingsResource', ["$http", "BASE_URL", function ($http, BASE_URL) } }; + var getParentFolder = function (current) { + return current.parent().parent('.folder'); + }; + + var selectFirstOrLastFolder = function (navigationArea, isLast) { + var folders = navigationArea.find('.folder:visible'); + + var index; + if (isLast) { + index = folders.length - 1; + } else { + index = 0; + } + + if (folders.length > 0) { + $(folders[index]).children('a').trigger('click'); + } + }; + + var previousFolder = function (navigationArea) { + var current = navigationArea.find('.active'); + + // cases: folder active, subfeed active, feed active, none active + if (current.hasClass('folder')) { + current.prevAll('.folder:visible').first() + .children('a').trigger('click'); + } else if (current.hasClass('feed')) { + var parentFolder = getParentFolder(current); + if (parentFolder.length > 0) { + // first go to previous folder should select the parent folder + parentFolder.children('a').trigger('click'); + } else { + selectFirstOrLastFolder(navigationArea, true); + } + } else { + selectFirstOrLastFolder(navigationArea, true); + } + }; + + var nextFolder = function (navigationArea) { + var current = navigationArea.find('.active'); + + // cases: folder active, subfeed active, feed active, none active + if (current.hasClass('folder')) { + current.nextAll('.folder:visible').first() + .children('a').trigger('click'); + } else if (current.hasClass('feed')) { + var parentFolder = getParentFolder(current); + if (parentFolder.length > 0) { + parentFolder.nextAll('.folder:visible').first() + .children('a').trigger('click'); + } else { + selectFirstOrLastFolder(navigationArea); + } + } else { + selectFirstOrLastFolder(navigationArea); + } + }; + var previousFeed = function (navigationArea) { var current = navigationArea.find('.active'); var elements = navigationArea.find('.subscriptions-feed:visible,' + @@ -2032,6 +2091,18 @@ app.service('SettingsResource', ["$http", "BASE_URL", function ($http, BASE_URL) event.preventDefault(); previousFeed(navigationArea); + // c + } else if ([67].indexOf(keyCode) >= 0) { + + event.preventDefault(); + previousFolder(navigationArea); + + // v + } else if ([86].indexOf(keyCode) >= 0) { + + event.preventDefault(); + nextFolder(navigationArea); + } } |