summaryrefslogtreecommitdiffstats
path: root/js/app
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-09-14 02:22:36 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-09-14 02:22:44 +0200
commitdf8f6b5fee643c5b2af8e8d33a7865e898518485 (patch)
tree7100d25d814d5f4b4cf502c9e2b9e6dd5f562ab3 /js/app
parent67d7754c364147c274790a76dab7cbfedd352645 (diff)
implement pull to refresh, fix #44
Diffstat (limited to 'js/app')
-rw-r--r--js/app/controllers/itemcontroller.coffee5
-rw-r--r--js/app/directives/pulltorefresh.coffee30
-rw-r--r--js/app/services/businesslayer/itembusinesslayer.coffee8
-rw-r--r--js/app/services/models/itemmodel.coffee14
-rw-r--r--js/app/services/persistence.coffee13
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