summaryrefslogtreecommitdiffstats
path: root/js/app
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-04 19:58:51 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-04 19:59:06 +0200
commit346346e01c5c61e61b522520248de90e0ede3f17 (patch)
tree9d38239274db7e26eac9eda9f1853113e655857b /js/app
parent2d8b635796ba117619063792b0a00c50dc91d2a6 (diff)
added most of the bl functionality
Diffstat (limited to 'js/app')
-rw-r--r--js/app/services/bl/bl.coffee45
-rw-r--r--js/app/services/bl/feedbl.coffee30
-rw-r--r--js/app/services/bl/folderbl.coffee45
-rw-r--r--js/app/services/bl/itembl.coffee10
-rw-r--r--js/app/services/bl/starredbl.coffee47
-rw-r--r--js/app/services/bl/subscriptionsbl.coffee57
-rw-r--r--js/app/services/services.coffee21
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()