diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-25 21:13:09 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-25 21:13:09 +0100 |
commit | 7ade1165ddd0aa2d650ea28ae2f38a412375f9cc (patch) | |
tree | d2afa45ede7e721e2e0c0efdc0106bc3e049db17 /js/app | |
parent | 29b4fc15528cd88ab1b7b77aa7b9b4632042dd0c (diff) |
added feedcontroller methods and tests
Diffstat (limited to 'js/app')
-rw-r--r-- | js/app/controllers/controllers.coffee | 15 | ||||
-rw-r--r-- | js/app/controllers/feedcontroller.coffee | 35 | ||||
-rw-r--r-- | js/app/services/models/feedmodel.coffee | 33 | ||||
-rw-r--r-- | js/app/services/models/itemmodel.coffee | 15 | ||||
-rw-r--r-- | js/app/services/showall.coffee | 3 | ||||
-rw-r--r-- | js/app/services/starredcount.coffee | 4 |
6 files changed, 94 insertions, 11 deletions
diff --git a/js/app/controllers/controllers.coffee b/js/app/controllers/controllers.coffee index 59f2db39e..a302b1033 100644 --- a/js/app/controllers/controllers.coffee +++ b/js/app/controllers/controllers.coffee @@ -29,13 +29,14 @@ angular.module('News').controller 'SettingsController', angular.module('News').controller 'FeedController', -['$scope', '_FeedController', 'FolderModel', 'FeedModel', 'ActiveFeed', -'ShowAll', 'FeedType', 'StarredCount', -($scope, _FeedController, FolderModel, FeedModel, ActiveFeed, -ShowAll, FeedType, StarredCount)-> - - return new _FeedController($scope, FolderModel, FeedModel, ActiveFeed, - ShowAll, FeedType, StarredCount) +['$scope', '_FeedController', 'FolderModel', 'FeedModel', 'ActiveFeed', +'ShowAll', 'FeedType', 'StarredCount', 'Persistence', 'ItemModel', +($scope, _FeedController, FolderModel, FeedModel, ActiveFeed, +ShowAll, FeedType, StarredCount, Persistence, ItemModel)-> + + return new _FeedController($scope, FolderModel, FeedModel, ActiveFeed, + ShowAll, FeedType, StarredCount, Persistence, + ItemModel) ] angular.module('News').controller 'ItemController', diff --git a/js/app/controllers/feedcontroller.coffee b/js/app/controllers/feedcontroller.coffee index 535ed00ac..ddd35d2f8 100644 --- a/js/app/controllers/feedcontroller.coffee +++ b/js/app/controllers/feedcontroller.coffee @@ -25,8 +25,9 @@ angular.module('News').factory '_FeedController', -> class FeedController - constructor: (@$scope, @_folderModel, @_feedModel, @_active, - @_showAll, @_feedType, @_starredCount) -> + constructor: (@$scope, @_folderModel, @_feedModel, @_active, + @_showAll, @_feedType, @_starredCount, @_persistence, + @_itemModel) -> # bind internal stuff to scope @$scope.feeds = @_feedModel.getAll() @@ -80,12 +81,34 @@ angular.module('News').factory '_FeedController', -> getUnreadCount: (type, id) -> + switch type + when @_feedType.Subscriptions + count = @_feedModel.getUnreadCount() + when @_feedType.Starred + count = @_starredCount.getStarredCount() + when @_feedType.Feed + count = @_feedModel.getFeedUnreadCount(id) + when @_feedType.Folder + count = @_feedModel.getFolderUnreadCount(id) + + if count > 999 + count = '999+' + + return count loadFeed: (type, id) -> + if type != @_active.getType() or id != @_active.getId() + @_itemModel.clear() + @_persistence.getItems(type, id, 0) + @_active.handle({id: id, type: type}) + else + lastModified = @_itemModel.getLastModified() + @_persistence.getItems(type, id, 0, null, lastModified) hasFeeds: (folderId) -> + return @_feedModel.getAllOfFolder(folderId).length delete: (type, id) -> @@ -95,7 +118,15 @@ angular.module('News').factory '_FeedController', -> getFeedsOfFolder: (folderId) -> + return @_feedModel.getAllOfFolder(folderId) + setShowAll: (showAll) -> + @_showAll.setShowAll(showAll) + if showAll + @_persistence.userSettingsReadShow() + else + @_persistence.userSettingsReadHide() + return FeedController
\ No newline at end of file diff --git a/js/app/services/models/feedmodel.coffee b/js/app/services/models/feedmodel.coffee index 25cc48d88..838f240c1 100644 --- a/js/app/services/models/feedmodel.coffee +++ b/js/app/services/models/feedmodel.coffee @@ -21,7 +21,9 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### -angular.module('News').factory '_FeedModel', ['_Model', (_Model) -> +angular.module('News').factory '_FeedModel', +['_Model', '_EqualQuery', +(_Model, _EqualQuery) -> class FeedModel extends _Model @@ -35,6 +37,35 @@ angular.module('News').factory '_FeedModel', ['_Model', (_Model) -> super(item) + getUnreadCount: -> + count = 0 + for feed in @getAll() + count += feed.unreadCount + + return count + + + getFeedUnreadCount: (feedId) -> + feed = @getById(feedId) + if angular.isDefined(feed) + return feed.unreadCount + else + return 0 + + + getFolderUnreadCount: (folderId) -> + query = new _EqualQuery('folderId', folderId) + count = 0 + for feed in @get(query) + count += feed.unreadCount + + return count + + + getAllOfFolder: (folderId) -> + query = new _EqualQuery('folderId', folderId) + return @get(query) + return FeedModel ]
\ No newline at end of file diff --git a/js/app/services/models/itemmodel.coffee b/js/app/services/models/itemmodel.coffee index d53f17f15..a2191fdbf 100644 --- a/js/app/services/models/itemmodel.coffee +++ b/js/app/services/models/itemmodel.coffee @@ -20,9 +20,22 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### -angular.module('News').factory '_ItemModel', ['_Model', (_Model) -> +angular.module('News').factory '_ItemModel', +['_Model', '_MaximumQuery', '_MinimumQuery', +(_Model, _MaximumQuery, _MinimumQuery) -> class ItemModel extends _Model + + getLastModified: -> + query = new _MaximumQuery('lastModified') + lastModified = @get(query) + + if angular.isDefined(lastModified) + return lastModified.lastModified + else + return null + + return ItemModel ]
\ No newline at end of file diff --git a/js/app/services/showall.coffee b/js/app/services/showall.coffee index 25b093735..a40f176bc 100644 --- a/js/app/services/showall.coffee +++ b/js/app/services/showall.coffee @@ -37,5 +37,8 @@ angular.module('News').factory '_ShowAll', -> return @_showAll + setShowAll: (showAll) -> + @_showAll = showAll + return ShowAll diff --git a/js/app/services/starredcount.coffee b/js/app/services/starredcount.coffee index aaa8fdaff..9d3d9deb5 100644 --- a/js/app/services/starredcount.coffee +++ b/js/app/services/starredcount.coffee @@ -33,6 +33,10 @@ angular.module('News').factory '_StarredCount', -> @_count = data + setStarredCount: (count) -> + @_count = count + + getStarredCount: -> return @_count |