summaryrefslogtreecommitdiffstats
path: root/js/app/services/models
diff options
context:
space:
mode:
Diffstat (limited to 'js/app/services/models')
-rw-r--r--js/app/services/models/feedmodel.coffee174
-rw-r--r--js/app/services/models/foldermodel.coffee142
-rw-r--r--js/app/services/models/itemmodel.coffee123
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