Skip to content
This repository has been archived by the owner on Jul 6, 2020. It is now read-only.

Commit

Permalink
order by pubdate on the client side fix #115
Browse files Browse the repository at this point in the history
  • Loading branch information
BernhardPosselt committed Apr 26, 2013
1 parent d947c35 commit f987751
Show file tree
Hide file tree
Showing 17 changed files with 201 additions and 150 deletions.
2 changes: 1 addition & 1 deletion db/itemmapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ public function getNewestItemId($userId) {

$result = $this->findOneQuery($sql, $params);

return $result['max_id'];
return (int) $result['max_id'];
}

}
2 changes: 1 addition & 1 deletion js/app/services/businesslayer/businesslayer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ angular.module('News').factory '_BusinessLayer', ->

class BusinessLayer

constructor: (@_activeFeed, @_persistence, @_itemModel, @_type) ->
constructor: (@_activeFeed, @_persistence, @_itemModel, @_type, @_newest) ->


load: (id) ->
Expand Down
10 changes: 5 additions & 5 deletions js/app/services/businesslayer/feedbusinesslayer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
angular.module('News').factory 'FeedBusinessLayer',
['_BusinessLayer', 'ShowAll', 'Persistence', 'ActiveFeed', 'FeedType',
'ItemModel', 'FeedModel', 'NewLoading', '_ExistsError', 'Utils', '$rootScope',
'UndoQueue',
'UndoQueue', 'NewestItem',
(_BusinessLayer, ShowAll, Persistence, ActiveFeed, FeedType, ItemModel,
FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->
FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue, NewestItem) ->

class FeedBusinessLayer extends _BusinessLayer

constructor: (@_showAll, @_feedModel, persistence, activeFeed, feedType,
itemModel, @_newLoading, @_utils, @_$rootScope,
@_undoQueue) ->
@_undoQueue, @_newestItem) ->
super(activeFeed, persistence, itemModel, feedType.Feed)
@_feedType = feedType

Expand Down Expand Up @@ -70,7 +70,7 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->
feed.unreadCount = 0
if @_activeFeed.getId() == feedId and
@_activeFeed.getType() == @_feedType.Feed
highestItemId = @_itemModel.getHighestId()
highestItemId = @_newestItem.getId()
else
highestItemId = 0
@_persistence.setFeedRead(feedId, highestItemId)
Expand Down Expand Up @@ -198,6 +198,6 @@ FeedModel, NewLoading, _ExistsError, Utils, $rootScope, UndoQueue) ->

return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed,
FeedType, ItemModel, NewLoading, Utils,
$rootScope, UndoQueue)
$rootScope, UndoQueue, NewestItem)

]
16 changes: 9 additions & 7 deletions js/app/services/businesslayer/itembusinesslayer.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.

angular.module('News').factory 'ItemBusinessLayer',
['ItemModel', 'FeedModel', 'Persistence', 'ActiveFeed', 'FeedType',
'StarredBusinessLayer',
'StarredBusinessLayer', 'NewestItem',
(ItemModel, FeedModel, Persistence, ActiveFeed, FeedType,
StarredBusinessLayer) ->
StarredBusinessLayer, NewestItem) ->

class ItemBusinessLayer

constructor: (@_itemModel, @_feedModel, @_persistence, @_activeFeed,
@_feedType, @_starredBusinessLayer) ->
@_feedType, @_starredBusinessLayer, @_newestItem) ->

getAll: ->
return @_itemModel.getAll()
Expand Down Expand Up @@ -106,10 +106,12 @@ StarredBusinessLayer) ->


loadNext: (callback) ->
lowestItemId = @_itemModel.getLowestId()
if lowestItemId != 0
size = @_itemModel.size()
if size != 0
@_persistence.getItems @_activeFeed.getType(),
@_activeFeed.getId(), lowestItemId,
@_activeFeed.getId(),
size,
@_newestItem.getId(),
callback
else
callback()
Expand All @@ -121,6 +123,6 @@ StarredBusinessLayer) ->


return new ItemBusinessLayer(ItemModel, FeedModel, Persistence, ActiveFeed,
FeedType, StarredBusinessLayer)
FeedType, StarredBusinessLayer, NewestItem)

]
21 changes: 0 additions & 21 deletions js/app/services/models/itemmodel.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -99,26 +99,5 @@ angular.module('News').factory 'ItemModel',
super(id)


getHighestId: ->
query = new _MaximumQuery('id')
highestId = @get(query)

if angular.isDefined(highestId)
return highestId.id
else
return 0


getLowestId: ->
query = new _MinimumQuery('id')
lowestId = @get(query)

if angular.isDefined(lowestId)
return lowestId.id
else
return 0



return new ItemModel()
]
39 changes: 39 additions & 0 deletions js/app/services/newestitem.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
###
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 'NewestItem', ->

class NewestItem

constructor: ->
@_id = 0


handle: (data) ->
@_id = data


getId: ->
return @_id


return new NewestItem()
15 changes: 4 additions & 11 deletions js/app/services/persistence.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ $rootScope) ->
###
ITEM CONTROLLER
###
getItems: (type, id, offset, onSuccess=null, updatedSince=null) ->
getItems: (type, id, offset, newestItemId=0, onSuccess=null) ->
onSuccess or= ->

# show different loading signs
Expand All @@ -68,20 +68,13 @@ $rootScope) ->
failureCallbackWrapper = (data) =>
loading.decrease()

if updatedSince != null
data =
updatedSince: updatedSince
type: type
id: id
else
data =
params =
data:
limit: @_config.itemBatchSize
offset: offset
id: id
type: type

params =
data: data
newestItemId: newestItemId
onSuccess: successCallbackWrapper
onFailure: failureCallbackWrapper

Expand Down
5 changes: 3 additions & 2 deletions js/app/services/services.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ angular.module('News').factory 'NewLoading', ['_Loading', (_Loading) ->

angular.module('News').factory 'Publisher',
['_Publisher', 'ActiveFeed', 'ShowAll', 'StarredCount', 'ItemModel',
'FolderModel', 'FeedModel', 'Language',
'FolderModel', 'FeedModel', 'Language', 'NewestItem',
(_Publisher, ActiveFeed, ShowAll, StarredCount, ItemModel,
FolderModel, FeedModel, Language) ->
FolderModel, FeedModel, Language, NewestItem) ->

# register items at publisher to automatically add incoming items
publisher = new _Publisher()
Expand All @@ -58,6 +58,7 @@ FolderModel, FeedModel, Language) ->
publisher.subscribeObjectTo(FolderModel, 'folders')
publisher.subscribeObjectTo(FeedModel, 'feeds')
publisher.subscribeObjectTo(ItemModel, 'items')
publisher.subscribeObjectTo(NewestItem, 'newestItemId')

return publisher
]
Expand Down
Loading

0 comments on commit f987751

Please sign in to comment.