diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-04 19:58:51 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-04 19:59:06 +0200 |
commit | 346346e01c5c61e61b522520248de90e0ede3f17 (patch) | |
tree | 9d38239274db7e26eac9eda9f1853113e655857b /js/app | |
parent | 2d8b635796ba117619063792b0a00c50dc91d2a6 (diff) |
added most of the bl functionality
Diffstat (limited to 'js/app')
-rw-r--r-- | js/app/services/bl/bl.coffee | 45 | ||||
-rw-r--r-- | js/app/services/bl/feedbl.coffee | 30 | ||||
-rw-r--r-- | js/app/services/bl/folderbl.coffee | 45 | ||||
-rw-r--r-- | js/app/services/bl/itembl.coffee | 10 | ||||
-rw-r--r-- | js/app/services/bl/starredbl.coffee | 47 | ||||
-rw-r--r-- | js/app/services/bl/subscriptionsbl.coffee | 57 | ||||
-rw-r--r-- | js/app/services/services.coffee | 21 |
7 files changed, 210 insertions, 45 deletions
diff --git a/js/app/services/bl/bl.coffee b/js/app/services/bl/bl.coffee new file mode 100644 index 000000000..27e4d321a --- /dev/null +++ b/js/app/services/bl/bl.coffee @@ -0,0 +1,45 @@ +### + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt nukeawhale@gmail.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. + +### + + +angular.module('News').factory '_Bl', -> + + class Bl + + constructor: (@_activeFeed, @_persistence, @_itemModel, @_type) -> + + + load: (id) -> + if @_type != @_activeFeed.getType() or id != @_activeFeed.getId() + @_itemModel.clear() + @_persistence.getItems(@_type, id, 0) + @_activeFeed.handle({id: id, type: @_type}) + else + lastModified = @_itemModel.getHighestId() + @_persistence.getItems(@_type, id, 0, null, lastModified) + + + isActive: (id) -> + return @_activeFeed.getType() == @_type && @_activeFeed.getId() == id + + + return Bl
\ No newline at end of file diff --git a/js/app/services/bl/feedbl.coffee b/js/app/services/bl/feedbl.coffee index ffbc6e51c..d9524ae37 100644 --- a/js/app/services/bl/feedbl.coffee +++ b/js/app/services/bl/feedbl.coffee @@ -21,14 +21,19 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### -angular.module('News').factory '_FeedBl', -> +angular.module('News').factory 'FeedBl', +['_Bl', 'ShowAll', 'Persistence', 'ActiveFeed', 'FeedType', 'ItemModel', +'FeedModel', +(_Bl, ShowAll, Persistence, ActiveFeed, FeedType, ItemModel, FeedModel) -> - class FeedBl + class FeedBl extends _Bl - constructor: (@_feedModel, @_itemBl, @_persistence) -> + constructor: (@_showAll, @_feedModel, persistence, activeFeed, feedType, + itemModel) -> + super(activeFeed, persistence, itemModel, feedType.Feed) - getFeedUnreadCount: (feedId) -> + getUnreadCount: (feedId) -> @_feedModel.getFeedUnreadCount(feedId) @@ -40,7 +45,7 @@ angular.module('News').factory '_FeedBl', -> @_feedModel.getFolderUnreadCount(folderId) - getUnreadCount: -> + getAllUnreadCount: -> return @_feedModel.getUnreadCount() @@ -53,7 +58,10 @@ angular.module('News').factory '_FeedBl', -> feed = @_feedModel.getById(feedId) if angular.isDefined(feed) feed.unreadCount = 0 - @_itemBl.markAllRead(feedId) + highestItemId = @_itemModel.getHighestId() + @_persistence.setFeedRead(feedId, highestItemId) + for item in @_itemModel.getAll() + item.setRead() markAllRead: -> @@ -61,5 +69,13 @@ angular.module('News').factory '_FeedBl', -> @markFeedRead(feed.id) + getNumberOfFeeds: -> + return @_feedModel.size() - return FeedBl + + # todo isvisible, move + + return new FeedBl(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType, + ItemModel) + +]
\ No newline at end of file diff --git a/js/app/services/bl/folderbl.coffee b/js/app/services/bl/folderbl.coffee index e869453f2..16e020063 100644 --- a/js/app/services/bl/folderbl.coffee +++ b/js/app/services/bl/folderbl.coffee @@ -21,11 +21,17 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### -angular.module('News').factory '_FolderBl', -> +angular.module('News').factory 'FolderBl', +['_Bl', 'FolderModel', 'FeedBl', 'Persistence', 'FeedType', 'ActiveFeed', +'ItemModel', 'ShowAll', +(_Bl, FolderModel, FeedBl, Persistence, FeedType, ActiveFeed, +ItemModel, ShowAll)-> - class FolderBl + class FolderBl extends _Bl - constructor: (@_folderModel, @_feedBl, @_persistence) -> + constructor: (@_folderModel, @_feedBl, @_showAll, activeFeed, + persistence, @_feedType, itemModel) -> + super(activeFeed, persistence, itemModel, @_feedType.Folder) delete: (folderId) -> @@ -37,11 +43,6 @@ angular.module('News').factory '_FolderBl', -> return @_feedBl.getFeedsOfFolder(folderId).length - markFolderRead: (folderId) -> - for feed in @_feedBl.getFeedsOfFolder(folderId) - @_feedBl.markFeedRead(feed.id) - - toggleFolder: (folderId) -> folder = @_folderModel.getById(folderId) @@ -53,4 +54,30 @@ angular.module('News').factory '_FolderBl', -> @_persistence.collapseFolder(folder.id) - return FolderBl + markFolderRead: (folderId) -> + for feed in @_feedBl.getFeedsOfFolder(folderId) + @_feedBl.markFeedRead(feed.id) + + + getUnreadCount: (folderId) -> + return @_feedBl.getFolderUnreadCount(folderId) + + + isVisible: (folderId) -> + if @_showAll.getShowAll() + return true + else + if @isActive(folderId) or + @_feedBl.getFolderUnreadCount(folderId) > 0 + return true + if @_activeFeed.getType() == @_feedType.Feed + for feed in @_feedBl.getFeedsOfFolder(folderId) + if feed.id == @_activeFeed.getId() + return true + return false + + + return new FolderBl(FolderModel, FeedBl, ShowAll, ActiveFeed, Persistence, + FeedType, ItemModel) + +]
\ No newline at end of file diff --git a/js/app/services/bl/itembl.coffee b/js/app/services/bl/itembl.coffee index ee4d9049a..5b34aa4f4 100644 --- a/js/app/services/bl/itembl.coffee +++ b/js/app/services/bl/itembl.coffee @@ -21,18 +21,12 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### -angular.module('News').factory '_ItemBl', -> +angular.module('News').factory 'ItemBl', -> class ItemBl constructor: (@_itemModel, @_persistence) -> - markAllRead: (feedId) -> - highestItemId = @_itemModel.getHighestId() - @_persistence.setFeedRead(feedId, highestItemId) - for item in @_itemModel.getAll() - item.setRead() - - return ItemBl + return new ItemBl() diff --git a/js/app/services/bl/starredbl.coffee b/js/app/services/bl/starredbl.coffee new file mode 100644 index 000000000..0b1d45500 --- /dev/null +++ b/js/app/services/bl/starredbl.coffee @@ -0,0 +1,47 @@ +### + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt nukeawhale@gmail.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. + +### + + +angular.module('News').factory 'StarredBl', +['_Bl', 'StarredCount', 'Persistence', 'ActiveFeed', 'FeedType', 'ItemModel', +(_Bl, StarredCount, Persistence, ActiveFeed, FeedType, ItemModel) -> + + class StarredBl extends _Bl + + constructor: (@_starredCount, feedType, + persistence, activeFeed, itemModel) -> + super(activeFeed, persistence, itemModel, feedType.Starred) + + isVisible: -> + if @isActive(0) + return true + else + return @_starredCount.getStarredCount() > 0 + + + getUnreadCount: -> + return @_starredCount.getStarredCount() + + + return new StarredBl(StarredCount, FeedType, Persistence, + ActiveFeed, ItemModel) +] diff --git a/js/app/services/bl/subscriptionsbl.coffee b/js/app/services/bl/subscriptionsbl.coffee new file mode 100644 index 000000000..102ae8c44 --- /dev/null +++ b/js/app/services/bl/subscriptionsbl.coffee @@ -0,0 +1,57 @@ +### + +ownCloud - News + +@author Bernhard Posselt +@copyright 2012 Bernhard Posselt nukeawhale@gmail.com + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +License as published by the Free Software Foundation; either +version 3 of the License, or any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU AFFERO GENERAL PUBLIC LICENSE for more details. + +You should have received a copy of the GNU Affero General Public +License along with this library. If not, see <http://www.gnu.org/licenses/>. + +### + + +angular.module('News').factory 'SubscriptionsBl', +['_Bl', 'FeedBl', 'Persistence', 'ShowAll', 'ActiveFeed', 'FeedType', +'ItemModel', +(_Bl, FeedBl, Persistence, ShowAll, ActiveFeed, FeedType, ItemModel) -> + + class SubscriptionsBl extends _Bl + + constructor: (@_feedBl, @_showAll, feedType, + persistence, activeFeed, itemModel) -> + super(activeFeed, persistence, itemModel, feedType.Subscriptions) + + isVisible: -> + if @isActive(0) + return true + + if @_showAll.getShowAll() + return @_feedBl.getNumberOfFeeds() > 0 + else + visible = @_feedBl.getNumberOfFeeds() > 0 && + @_feedBl.getAllUnreadCount() > 0 + return visible + + + markAllRead: -> + @_feedBl.markAllRead() + + + getUnreadCount: -> + return @_feedBl.getAllUnreadCount() + + + return new SubscriptionsBl(FeedBl, ShowAll, FeedType, Persistence, + ActiveFeed, ItemModel) +] diff --git a/js/app/services/services.coffee b/js/app/services/services.coffee index 6e27ece9d..837e2004c 100644 --- a/js/app/services/services.coffee +++ b/js/app/services/services.coffee @@ -51,27 +51,6 @@ angular.module('News').factory 'NewLoading', return new _Loading() ] - -# business layer -angular.module('News').factory 'ItemBl', -['_ItemBl', 'ItemModel', 'Persistence', -(_ItemBl, ItemModel, Persistence) -> - return new _ItemBl(ItemModel, Persistence) -] - -angular.module('News').factory 'FeedBl', -['_FeedBl', 'FeedModel', 'ItemBl', 'Persistence', -(_FeedBl, FeedModel, ItemBl, Persistence) -> - return new _FeedBl(FeedModel, ItemBl, Persistence) -] - -angular.module('News').factory 'FolderBl', -['_FolderBl', 'FolderModel', 'FeedBl', 'Persistence', -(_FolderBl, FolderModel, FeedBl, Persistence) -> - return new _FolderBl(FolderModel, FeedBl, Persistence) -] - - # models angular.module('News').factory 'ActiveFeed', ['_ActiveFeed', (_ActiveFeed) -> return new _ActiveFeed() |