diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-09-14 02:22:36 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-09-14 02:22:44 +0200 |
commit | df8f6b5fee643c5b2af8e8d33a7865e898518485 (patch) | |
tree | 7100d25d814d5f4b4cf502c9e2b9e6dd5f562ab3 /js/app | |
parent | 67d7754c364147c274790a76dab7cbfedd352645 (diff) |
implement pull to refresh, fix #44
Diffstat (limited to 'js/app')
-rw-r--r-- | js/app/controllers/itemcontroller.coffee | 5 | ||||
-rw-r--r-- | js/app/directives/pulltorefresh.coffee | 30 | ||||
-rw-r--r-- | js/app/services/businesslayer/itembusinesslayer.coffee | 8 | ||||
-rw-r--r-- | js/app/services/models/itemmodel.coffee | 14 | ||||
-rw-r--r-- | js/app/services/persistence.coffee | 13 |
5 files changed, 66 insertions, 4 deletions
diff --git a/js/app/controllers/itemcontroller.coffee b/js/app/controllers/itemcontroller.coffee index eac508e18..c9a97285f 100644 --- a/js/app/controllers/itemcontroller.coffee +++ b/js/app/controllers/itemcontroller.coffee @@ -58,6 +58,11 @@ Language, AutoPageLoading) -> else return '' + @_$scope.loadNew = => + @_$scope.refresh = true + @_itemBusinessLayer.loadNew => + @_$scope.refresh = false + @_$scope.$on 'readItem', (scope, data) => @_itemBusinessLayer.setRead(data) diff --git a/js/app/directives/pulltorefresh.coffee b/js/app/directives/pulltorefresh.coffee new file mode 100644 index 000000000..436280793 --- /dev/null +++ b/js/app/directives/pulltorefresh.coffee @@ -0,0 +1,30 @@ +### + +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').directive 'newsPullToRefresh', -> + directive = + restrict: 'A' + link: (scope, elm, attrs) -> + scrollTop = 0 + elm.scroll -> + if @scrollTop == 0 + scope.$apply attrs.newsPullToRefresh
\ No newline at end of file diff --git a/js/app/services/businesslayer/itembusinesslayer.coffee b/js/app/services/businesslayer/itembusinesslayer.coffee index 0563ff096..1382df190 100644 --- a/js/app/services/businesslayer/itembusinesslayer.coffee +++ b/js/app/services/businesslayer/itembusinesslayer.coffee @@ -116,8 +116,12 @@ StarredBusinessLayer, NewestItem) -> callback() - - loadNew: -> + loadNew: (onSuccess) -> + lastModified = @_itemModel.getLastModified() + @_persistence.getNewItems(@_activeFeed.getType(), + @_activeFeed.getId(), + lastModified, + onSuccess) diff --git a/js/app/services/models/itemmodel.coffee b/js/app/services/models/itemmodel.coffee index 349147ca5..7da924be3 100644 --- a/js/app/services/models/itemmodel.coffee +++ b/js/app/services/models/itemmodel.coffee @@ -21,8 +21,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. ### angular.module('News').factory 'ItemModel', -['_Model', '_MinimumQuery', 'StatusFlag', -(_Model, _MinimumQuery, StatusFlag) -> +['_Model', '_MinimumQuery', '_MaximumQuery', 'StatusFlag', +(_Model, _MinimumQuery, _MaximumQuery, StatusFlag) -> class ItemModel extends _Model @@ -109,5 +109,15 @@ angular.module('News').factory 'ItemModel', 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 diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee index 559601f69..d51c7acb1 100644 --- a/js/app/services/persistence.coffee +++ b/js/app/services/persistence.coffee @@ -86,6 +86,19 @@ $rootScope, $q) -> @_request.get 'news_items', params + getNewItems: (type, id, lastModified, onSuccess) -> + onSuccess or= -> + params = + data: + type: type + id: id + lastModified: lastModified + onSuccess: onSuccess + onFailure: onSuccess + + @_request.get 'news_items_new', params + + starItem: (feedId, guidHash) -> ### Stars an item |