diff options
Diffstat (limited to 'js/app/services/models')
-rw-r--r-- | js/app/services/models/feedmodel.coffee | 174 | ||||
-rw-r--r-- | js/app/services/models/foldermodel.coffee | 142 | ||||
-rw-r--r-- | js/app/services/models/itemmodel.coffee | 123 |
3 files changed, 0 insertions, 439 deletions
diff --git a/js/app/services/models/feedmodel.coffee b/js/app/services/models/feedmodel.coffee deleted file mode 100644 index 66b7dfe9f..000000000 --- a/js/app/services/models/feedmodel.coffee +++ /dev/null @@ -1,174 +0,0 @@ -### - -ownCloud - News - -@author Bernhard Posselt -@copyright 2012 Bernhard Posselt dev@bernhard-posselt.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 'FeedModel', -['_Model', '_EqualQuery', 'Utils', -(_Model, _EqualQuery, Utils) -> - - class FeedModel extends _Model - - constructor: (@_utils) -> - @_url = {} - super() - - - clear: -> - @_url = {} - super() - - - add: (data, clearCache=true) -> - if data.faviconLink == null - data.faviconLink = 'url(' + - @_utils.imagePath('news', 'rss.svg') + ')' - else if angular.isDefined(data.faviconLink) and - data.faviconLink.indexOf('url(') != 0 - data.faviconLink = 'url(' + data.faviconLink + ')' - ### - We want to add a feed on the client side before - we have an id from the server. Once the server returns - an id, we have to update the existing item without id - ### - - item = @_url[data.url] - - # update in the following cases: - # * the id is defined and the item exists - # * the id is not defined and the name exists in the cache - updateById = angular.isDefined(data.id) and - angular.isDefined(@getById(data.id)) - - updateByUrl = angular.isDefined(item) and - angular.isUndefined(item.id) - - if updateById or updateByUrl - @update(data, clearCache) - else - if angular.isDefined(data.url) - # if the item is not yet in the name cache it must be added - @_url[data.url] = data - - # in case there is an id it can go through the normal add method - if angular.isDefined(data.id) - super(data, clearCache) - - # if there is no id we just want it to appear in the list - else - @_data.push(data) - if clearCache - @_invalidateCache() - - - update: (data, clearCache=true) -> - # only when the id on the updated item does not exist we wish - # to update by name, otherwise we always update by id - if angular.isDefined(data.url) - item = @_url[data.url] - - # update by name - if angular.isUndefined(data.id) and angular.isDefined(item) - angular.extend(item, data) - - else - # this case happens when there exists an element with the same - # name but it has no id yet - if angular.isDefined(data.id) and - angular.isDefined(item) and - angular.isUndefined(item.id) - item.id = data.id - @_dataMap[data.id] = item - - # if an update comes in and we update because of the id - # we need to fix the name cache if the name was changed - itemWithId = @getById(data.id) - if angular.isDefined(itemWithId) and - itemWithId.url != data.url - delete @_url[itemWithId.url] - @_url[data.url] = itemWithId - - super(data, clearCache) - - - removeById: (id) -> - item = @getById(id) - delete @_url[item.url] - super(id) - - - getByUrl: (url) -> - return @_url[url] - - - getUnreadCount: -> - count = 0 - for feed in @getAll() - count += feed.unreadCount - - return count - - - getFeedUnreadCount: (feedId) -> - feed = @getById(feedId) - count = 0 - if angular.isDefined(feed) - return count += feed.unreadCount - else - return 0 - - - getFolderUnreadCount: (folderId) -> - query = new _EqualQuery('folderId', parseInt(folderId)) - count = 0 - for feed in @get(query) - count += feed.unreadCount - - return count - - - getAllOfFolder: (folderId) -> - query = new _EqualQuery('folderId', parseInt(folderId)) - return @get(query) - - - removeByUrl: (url, clearCache=true) -> - ### - Remove an entry by id - ### - - # remove from data map - for key, value of @_dataMap - if @_dataMap[key].url == url - delete @_dataMap[key] - break - - for entry, counter in @_data - if entry.url == url - @_data.splice(counter, 1) - delete @_url[url] - - if clearCache - @_invalidateCache() - break - - - return new FeedModel(Utils) -]
\ No newline at end of file diff --git a/js/app/services/models/foldermodel.coffee b/js/app/services/models/foldermodel.coffee deleted file mode 100644 index f7616f260..000000000 --- a/js/app/services/models/foldermodel.coffee +++ /dev/null @@ -1,142 +0,0 @@ -### - -ownCloud - News - -@author Bernhard Posselt -@copyright 2012 Bernhard Posselt dev@bernhard-posselt.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 'FolderModel', -['_Model', '_EqualQuery', (_Model, _EqualQuery) -> - - class FolderModel extends _Model - - constructor: -> - @_nameCache = {} - super() - - - add: (data, clearCache=true) -> - ### - We want to add a folder on the client side before - we have an id from the server. Once the server returns - an id, we have to update the existing item without id - ### - data.name = @_transformName(data.name) - - item = @_nameCache[data.name] - - # update in the following cases: - # * the id is defined and the item exists - # * the id is not defined and the name exists in the cache - updateById = angular.isDefined(data.id) and - angular.isDefined(@getById(data.id)) - - updateByName = angular.isDefined(item) and - angular.isUndefined(item.id) - - if updateById or updateByName - @update(data, clearCache) - else - # if the item is not yet in the name cache it must be added - @_nameCache[data.name] = data - - # in case there is an id it can go through the normal add method - if angular.isDefined(data.id) - super(data, clearCache) - - # if there is no id we just want it to appear in the list - else - @_data.push(data) - if clearCache - @_invalidateCache() - - - update: (data, clearCache=true) -> - # only when the id on the updated item does not exist we wish - # to update by name, otherwise we always update by id - data.name = @_transformName(data.name) - - item = @_nameCache[data.name] - # update by name - if angular.isUndefined(data.id) and angular.isDefined(item) - angular.extend(item, data) - - else - # this case happens when there exists an element with the same - # name but it has no id yet - if angular.isDefined(data.id) and - angular.isDefined(item) and - angular.isUndefined(item.id) - item.id = data.id - @_dataMap[data.id] = item - - # if an update comes in and we update because of the id - # we need to fix the name cache if the name was changed - itemWithId = @getById(data.id) - if angular.isDefined(itemWithId) and itemWithId.name != data.name - delete @_nameCache[itemWithId.name] - @_nameCache[data.name] = itemWithId - - super(data, clearCache) - - - - getByName: (folderName) -> - folderName = @_transformName(folderName) - return @_nameCache[folderName] - - - clear: -> - @_nameCache = {} - super() - - - removeById: (id, clearCache=true) -> - item = @getById(id) - delete @_nameCache[@_transformName(item.name)] - super(id, clearCache) - - - _transformName: (folderName) -> - return folderName.trim().toLowerCase() - - - removeByName: (name, clearCache=true) -> - ### - Remove an entry by id - ### - name = name.toLowerCase() - - # remove from data map - for key, value of @_dataMap - if @_dataMap[key].name == name - delete @_dataMap[key] - break - - for entry, counter in @_data - if entry.name == name - @_data.splice(counter, 1) - delete @_nameCache[name] - - if clearCache - @_invalidateCache() - break - - - return new FolderModel() -]
\ No newline at end of file diff --git a/js/app/services/models/itemmodel.coffee b/js/app/services/models/itemmodel.coffee deleted file mode 100644 index 7da924be3..000000000 --- a/js/app/services/models/itemmodel.coffee +++ /dev/null @@ -1,123 +0,0 @@ -### - -ownCloud - News - -@author Bernhard Posselt -@copyright 2012 Bernhard Posselt dev@bernhard-posselt.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 'ItemModel', -['_Model', '_MinimumQuery', '_MaximumQuery', 'StatusFlag', -(_Model, _MinimumQuery, _MaximumQuery, StatusFlag) -> - - class ItemModel extends _Model - - - constructor: -> - @_guidFeedIdHash = {} - super() - - - clear: -> - @_guidFeedIdHash = {} - super() - - - # items have two unique fields: feed_id and guidhash - # in case we get updated items with the same two fields we - # also need to update the field - add: (data, clearCache=true) -> - @_bindMethods(data) - - hash = data.feedId + '_' + data.guidHash - entry = @_guidFeedIdHash[hash] - - # update entry if exists with same feedid and guidhash - if angular.isDefined(entry) - @update(data, clearCache) - else - @_guidFeedIdHash[hash] = data - super(data, clearCache) - - - _bindMethods: (data) -> - data.isRead = -> - return !((@status & StatusFlag.UNREAD) == StatusFlag.UNREAD) - data.setRead = -> - @status &= ~StatusFlag.UNREAD - data.setUnread = -> - @status |= StatusFlag.UNREAD - data.isStarred = -> - return (@status & StatusFlag.STARRED) == StatusFlag.STARRED - data.setStarred = -> - @status |= StatusFlag.STARRED - data.setUnstarred = -> - @status &= ~StatusFlag.STARRED - - - update: (data, clearCache=true) -> - hash = data.feedId + '_' + data.guidHash - entry = @_guidFeedIdHash[hash] - - # first update id that could have changed - delete @_dataMap[entry.id] - @_dataMap[data.id] = entry - - # now copy over the elements data attrs - for key, value of data - if key == 'feedId' or key == 'guidHash' - continue - else - entry[key] = value - - super(entry, clearCache) - - - getByGuidHashAndFeedId: (guidHash, feedId) -> - hash = feedId + '_' + guidHash - return @_guidFeedIdHash[hash] - - - removeById: (id) -> - item = @getById(id) - hash = item.feedId + '_' + item.guidHash - delete @_guidFeedIdHash[hash] - super(id) - - - getLowestId: -> - query = new _MinimumQuery('id') - lowestId = @get(query) - - if angular.isDefined(lowestId) - return lowestId.id - else - return 0 - - - getLastModified: -> - query = new _MaximumQuery('lastModified') - lastModified = @get(query) - - if angular.isDefined(lastModified) - return lastModified.lastModified - else - return 0 - - - return new ItemModel() -]
\ No newline at end of file |