summaryrefslogtreecommitdiffstats
path: root/js/build/app.js
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-05-30 00:06:49 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-05-30 00:06:49 +0200
commit79032a17fb1f458aae723098ddc1a96c28daad05 (patch)
treeb7e7a7f99e6e334d9058de7445280da6624ec3e3 /js/build/app.js
parent320304c909dc12c14b53335a7f32550809c06178 (diff)
add autopaging
Diffstat (limited to 'js/build/app.js')
-rw-r--r--js/build/app.js106
1 files changed, 87 insertions, 19 deletions
diff --git a/js/build/app.js b/js/build/app.js
index eb16bafb3..b7d44526e 100644
--- a/js/build/app.js
+++ b/js/build/app.js
@@ -68,19 +68,23 @@ var $__build_47_app__ = function () {
$routeProvider.when('/items', {
controller: 'ContentController as Content',
templateUrl: 'content.html',
- resolve: getResolve(feedType.SUBSCRIPTIONS)
+ resolve: getResolve(feedType.SUBSCRIPTIONS),
+ type: feedType.SUBSCRIPTIONS
}).when('/items/starred', {
controller: 'ContentController as Content',
templateUrl: 'content.html',
- resolve: getResolve(feedType.STARRED)
+ resolve: getResolve(feedType.STARRED),
+ type: feedType.STARRED
}).when('/items/feeds/:id', {
controller: 'ContentController as Content',
templateUrl: 'content.html',
- resolve: getResolve(feedType.FEED)
+ resolve: getResolve(feedType.FEED),
+ type: feedType.FEED
}).when('/items/folders/:id', {
controller: 'ContentController as Content',
templateUrl: 'content.html',
- resolve: getResolve(feedType.FOLDER)
+ resolve: getResolve(feedType.FOLDER),
+ type: feedType.FOLDER
}).otherwise({ redirectTo: '/items' });
}
]);
@@ -181,7 +185,9 @@ var $__build_47_app__ = function () {
'ItemResource',
'SettingsResource',
'data',
- function (Publisher, FeedResource, ItemResource, SettingsResource, data) {
+ '$route',
+ '$routeParams',
+ function (Publisher, FeedResource, ItemResource, SettingsResource, data, $route, $routeParams) {
'use strict';
var $__0 = this;
this.isAutoPagingEnabled = true;
@@ -194,9 +200,11 @@ var $__build_47_app__ = function () {
ItemResource.toggleStar(itemId);
};
this.markRead = function (itemId) {
- ItemResource.markItemRead(itemId);
var item = ItemResource.get(itemId);
- FeedResource.markItemOfFeedRead(item.feedId);
+ if (!item.keepUnread) {
+ ItemResource.markItemRead(itemId);
+ FeedResource.markItemOfFeedRead(item.feedId);
+ }
};
this.getFeed = function (feedId) {
return FeedResource.getById(feedId);
@@ -219,21 +227,50 @@ var $__build_47_app__ = function () {
this.isCompactView = function () {
return SettingsResource.get('compact');
};
- this.getRelativeDate = function (timestamp) {
- console.log(timestamp);
- };
- this.autoPage = function () {
- console.log('hi');
- };
- this.scrollRead = function (itemIds) {
- console.log(itemIds);
- };
this.autoPagingEnabled = function () {
return $__0.isAutoPagingEnabled;
};
this.markReadEnabled = function () {
return !SettingsResource.get('preventReadOnScroll');
};
+ this.scrollRead = function (itemIds) {
+ var ids = [];
+ for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
+ try {
+ throw undefined;
+ } catch (itemId) {
+ itemId = $__4.value;
+ {
+ try {
+ throw undefined;
+ } catch (item) {
+ item = ItemResource.get(itemId);
+ if (!item.keepUnread) {
+ ids.push(itemId);
+ FeedResource.markItemOfFeedRead(item.feedId);
+ }
+ }
+ }
+ }
+ }
+ ItemResource.markItemsRead(ids);
+ };
+ this.autoPage = function () {
+ $__0.isAutoPagingEnabled = false;
+ var type = $route.current.$$route.type;
+ var id = $routeParams.id;
+ ItemResource.autoPage(type, id).success(function (data) {
+ Publisher.publishAll(data);
+ if (data.items.length > 0) {
+ $__0.isAutoPagingEnabled = true;
+ }
+ }).error(function () {
+ $__0.isAutoPagingEnabled = true;
+ });
+ };
+ this.getRelativeDate = function (timestamp) {
+ console.log(timestamp);
+ };
}
]);
app.controller('NavigationController', [
@@ -473,14 +510,16 @@ var $__build_47_app__ = function () {
'Resource',
'$http',
'BASE_URL',
- function (Resource, $http, BASE_URL) {
+ 'ITEM_BATCH_SIZE',
+ function (Resource, $http, BASE_URL, ITEM_BATCH_SIZE) {
'use strict';
- var ItemResource = function ItemResource($http, BASE_URL) {
+ var ItemResource = function ItemResource($http, BASE_URL, ITEM_BATCH_SIZE) {
$traceurRuntime.superCall(this, $ItemResource.prototype, 'constructor', [
$http,
BASE_URL
]);
this.starredCount = 0;
+ this.batchSize = ITEM_BATCH_SIZE;
};
var $ItemResource = ItemResource;
$traceurRuntime.createClass(ItemResource, {
@@ -537,6 +576,23 @@ var $__build_47_app__ = function () {
data: { isRead: isRead }
});
},
+ markItemsRead: function (itemIds) {
+ for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
+ try {
+ throw undefined;
+ } catch (itemId) {
+ itemId = $__4.value;
+ {
+ this.get(itemId).unread = false;
+ }
+ }
+ }
+ return this.http({
+ url: this.BASE_URL + '/items/read/multiple',
+ method: 'POST',
+ data: { itemIds: itemIds }
+ });
+ },
markFeedRead: function (feedId) {
var read = arguments[1] !== void 0 ? arguments[1] : true;
for (var $__3 = this.values.filter(function (i) {
@@ -568,9 +624,21 @@ var $__build_47_app__ = function () {
},
clear: function () {
$traceurRuntime.superCall(this, $ItemResource.prototype, 'clear', []);
+ },
+ autoPage: function (type, id) {
+ return this.http({
+ url: this.BASE_URL + '/items',
+ method: 'GET',
+ params: {
+ type: type,
+ id: id,
+ offset: this.size(),
+ limit: this.batchSize
+ }
+ });
}
}, {}, Resource);
- return new ItemResource($http, BASE_URL);
+ return new ItemResource($http, BASE_URL, ITEM_BATCH_SIZE);
}
]);
app.service('Loading', function () {