summaryrefslogtreecommitdiffstats
path: root/js/build/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/build/app.js')
-rw-r--r--js/build/app.js2746
1 files changed, 1509 insertions, 1237 deletions
diff --git a/js/build/app.js b/js/build/app.js
index 3cfe28892..34dea4dec 100644
--- a/js/build/app.js
+++ b/js/build/app.js
@@ -1,1420 +1,1692 @@
-(function(window, document, angular, $, OC, csrfToken, undefined) {
- 'use strict';
- var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngAnimate']);
- app.config(["$routeProvider", "$provide", "$httpProvider", function($routeProvider, $provide, $httpProvider) {
+(function(window, document, angular, $, OC, csrfToken, undefined){
+
+'use strict';
+
+
+var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngAnimate']);
+app.config(["$routeProvider", "$provide", "$httpProvider", function ($routeProvider, $provide, $httpProvider) {
'use strict';
+
var feedType = {
- FEED: 0,
- FOLDER: 1,
- STARRED: 2,
- SUBSCRIPTIONS: 3,
- SHARED: 4
- };
- $provide.constant('REFRESH_RATE', 60);
- $provide.constant('ITEM_BATCH_SIZE', 50);
+ FEED: 0,
+ FOLDER: 1,
+ STARRED: 2,
+ SUBSCRIPTIONS: 3,
+ SHARED: 4
+ };
+
+ // constants
+ $provide.constant('REFRESH_RATE', 60); // seconds
+ $provide.constant('ITEM_BATCH_SIZE', 50); // how many items to autopage by
$provide.constant('BASE_URL', OC.generateUrl('/apps/news'));
$provide.constant('FEED_TYPE', feedType);
- $provide.factory('CSRFInterceptor', (["$q", "BASE_URL", function($q, BASE_URL) {
- return {request: (function(config) {
- if (config.url.indexOf(BASE_URL) === 0) {
- config.headers.requesttoken = csrfToken;
- }
- return config || $q.when(config);
- })};
- }]));
+
+ // make sure that the CSRF header is only sent to the ownCloud domain
+ $provide.factory('CSRFInterceptor', ["$q", "BASE_URL", function ($q, BASE_URL) {
+ return {
+ request: function (config) {
+ if (config.url.indexOf(BASE_URL) === 0) {
+ config.headers.requesttoken = csrfToken;
+ }
+
+ return config || $q.when(config);
+ }
+ };
+ }]);
$httpProvider.interceptors.push('CSRFInterceptor');
- var getResolve = (function(type) {
- return {data: ['$http', '$route', '$q', 'BASE_URL', 'ITEM_BATCH_SIZE', (function($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) {
- var parameters = {
- type: type,
- limit: ITEM_BATCH_SIZE
- };
- if ($route.current.params.id !== undefined) {
- parameters.id = $route.current.params.id;
- }
- var deferred = $q.defer();
- $http({
- url: (BASE_URL + "/items"),
- method: 'GET',
- params: parameters
- }).success((function(data) {
- deferred.resolve(data);
- }));
- return deferred.promise;
- })]};
- });
- $routeProvider.when('/items', {
- controller: 'ContentController as Content',
- templateUrl: 'content.html',
- resolve: getResolve(feedType.SUBSCRIPTIONS),
- type: feedType.SUBSCRIPTIONS
- }).when('/items/starred', {
- controller: 'ContentController as Content',
- templateUrl: 'content.html',
- resolve: getResolve(feedType.STARRED),
- type: feedType.STARRED
- }).when('/items/feeds/:id', {
- controller: 'ContentController as Content',
- templateUrl: 'content.html',
- resolve: getResolve(feedType.FEED),
- type: feedType.FEED
- }).when('/items/folders/:id', {
- controller: 'ContentController as Content',
- templateUrl: 'content.html',
- resolve: getResolve(feedType.FOLDER),
- type: feedType.FOLDER
- });
- }]);
- app.run((["$rootScope", "$location", "$http", "$q", "$interval", "Loading", "ItemResource", "FeedResource", "FolderResource", "SettingsResource", "Publisher", "BASE_URL", "FEED_TYPE", "REFRESH_RATE", function($rootScope, $location, $http, $q, $interval, Loading, ItemResource, FeedResource, FolderResource, SettingsResource, Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) {
+
+ // routing
+ var getResolve = function (type) {
+ return {
+ // request to items also returns feeds
+ data: [
+ '$http',
+ '$route',
+ '$q',
+ 'BASE_URL',
+ 'ITEM_BATCH_SIZE',
+ function ($http, $route, $q, BASE_URL, ITEM_BATCH_SIZE) {
+
+ var parameters = {
+ type: type,
+ limit: ITEM_BATCH_SIZE
+ };
+
+ if ($route.current.params.id !== undefined) {
+ parameters.id = $route.current.params.id;
+ }
+
+ var deferred = $q.defer();
+
+ $http({
+ url: BASE_URL + '/items',
+ method: 'GET',
+ params: parameters
+ }).success(function (data) {
+ deferred.resolve(data);
+ });
+
+ return deferred.promise;
+ }
+ ]
+ };
+ };
+
+ $routeProvider
+ .when('/items', {
+ controller: 'ContentController as Content',
+ templateUrl: 'content.html',
+ resolve: getResolve(feedType.SUBSCRIPTIONS),
+ type: feedType.SUBSCRIPTIONS
+ })
+ .when('/items/starred', {
+ controller: 'ContentController as Content',
+ templateUrl: 'content.html',
+ resolve: getResolve(feedType.STARRED),
+ type: feedType.STARRED
+ })
+ .when('/items/feeds/:id', {
+ controller: 'ContentController as Content',
+ templateUrl: 'content.html',
+ resolve: getResolve(feedType.FEED),
+ type: feedType.FEED
+ })
+ .when('/items/folders/:id', {
+ controller: 'ContentController as Content',
+ templateUrl: 'content.html',
+ resolve: getResolve(feedType.FOLDER),
+ type: feedType.FOLDER
+ });
+
+}]);
+
+
+app.run(["$rootScope", "$location", "$http", "$q", "$interval", "Loading", "ItemResource", "FeedResource", "FolderResource", "SettingsResource", "Publisher", "BASE_URL", "FEED_TYPE", "REFRESH_RATE", function ($rootScope, $location, $http, $q, $interval, Loading,
+ ItemResource, FeedResource, FolderResource, SettingsResource,
+ Publisher, BASE_URL, FEED_TYPE, REFRESH_RATE) {
'use strict';
+
+ // show Loading screen
Loading.setLoading('global', true);
- Publisher.subscribe(ItemResource).toChannels('items', 'newestItemId', 'starred');
- Publisher.subscribe(FolderResource).toChannels('folders');
- Publisher.subscribe(FeedResource).toChannels('feeds');
- Publisher.subscribe(SettingsResource).toChannels('settings');
+
+ // listen to keys in returned queries to automatically distribute the
+ // incoming values to models
+ Publisher.subscribe(ItemResource).toChannels(['items', 'newestItemId',
+ 'starred']);
+ Publisher.subscribe(FolderResource).toChannels(['folders']);
+ Publisher.subscribe(FeedResource).toChannels(['feeds']);
+ Publisher.subscribe(SettingsResource).toChannels(['settings']);
+
+ // load feeds, settings and last read feed
var settingsDeferred = $q.defer();
- $http.get((BASE_URL + "/settings")).success((function(data) {
- Publisher.publishAll(data);
- settingsDeferred.resolve();
- }));
+ $http.get(BASE_URL + '/settings').success(function (data) {
+ Publisher.publishAll(data);
+ settingsDeferred.resolve();
+ });
+
var activeFeedDeferred = $q.defer();
var path = $location.path();
- $http.get((BASE_URL + "/feeds/active")).success((function(data) {
- var url;
- switch (data.activeFeed.type) {
+ $http.get(BASE_URL + '/feeds/active').success(function (data) {
+ var url;
+
+ switch (data.activeFeed.type) {
+
case FEED_TYPE.FEED:
- url = ("/items/feeds/" + data.activeFeed.id);
- break;
+ url = '/items/feeds/' + data.activeFeed.id;
+ break;
+
case FEED_TYPE.FOLDER:
- url = ("/items/folders/" + data.activeFeed.id);
- break;
+ url = '/items/folders/' + data.activeFeed.id;
+ break;
+
case FEED_TYPE.STARRED:
- url = '/items/starred';
- break;
+ url = '/items/starred';
+ break;
+
default:
- url = '/items';
- }
- if (!/^\/items(\/(starred|feeds\/\d+|folders\/\d+))?\/?$/.test(path)) {
- $location.path(url);
- }
- activeFeedDeferred.resolve();
- }));
+ url = '/items';
+ }
+
+ // only redirect if url is empty or faulty
+ if (!/^\/items(\/(starred|feeds\/\d+|folders\/\d+))?\/?$/.test(path)) {
+ $location.path(url);
+ }
+
+ activeFeedDeferred.resolve();
+ });
+
var folderDeferred = $q.defer();
- $http.get((BASE_URL + "/folders")).success((function(data) {
- Publisher.publishAll(data);
- folderDeferred.resolve();
- }));
+ $http.get(BASE_URL + '/folders').success(function (data) {
+ Publisher.publishAll(data);
+ folderDeferred.resolve();
+ });
+
var feedDeferred = $q.defer();
- $http.get((BASE_URL + "/feeds")).success((function(data) {
- Publisher.publishAll(data);
- feedDeferred.resolve();
- }));
- $q.all([settingsDeferred.promise, activeFeedDeferred.promise, feedDeferred.promise, folderDeferred.promise]).then((function() {
- Loading.setLoading('global', false);
- }));
- $interval((function() {
- $http.get((BASE_URL + "/feeds"));
- $http.get((BASE_URL + "/folders"));
- }), REFRESH_RATE * 1000);
- $rootScope.$on('$routeChangeStart', (function() {
- Loading.setLoading('content', true);
- }));
- $rootScope.$on('$routeChangeSuccess', (function() {
- Loading.setLoading('content', false);
- }));
- $rootScope.$on('$routeChangeError', (function() {
- $location.path('/items');
- }));
- }]));
- app.controller('AppController', ["Loading", "FeedResource", "FolderResource", function(Loading, FeedResource, FolderResource) {
+ $http.get(BASE_URL + '/feeds').success(function (data) {
+ Publisher.publishAll(data);
+ feedDeferred.resolve();
+ });
+
+ // disable loading if all initial requests finished
+ $q.all(
+ [
+ settingsDeferred.promise,
+ activeFeedDeferred.promise,
+ feedDeferred.promise,
+ folderDeferred.promise
+ ]
+ )
+ .then(function () {
+ Loading.setLoading('global', false);
+ });
+
+ // refresh feeds and folders
+ $interval(function () {
+ $http.get(BASE_URL + '/feeds');
+ $http.get(BASE_URL + '/folders');
+ }, REFRESH_RATE * 1000);
+
+
+ $rootScope.$on('$routeChangeStart', function () {
+ Loading.setLoading('content', true);
+ });
+
+ $rootScope.$on('$routeChangeSuccess', function () {
+ Loading.setLoading('content', false);
+ });
+
+ // in case of wrong id etc show all items
+ $rootScope.$on('$routeChangeError', function () {
+ $location.path('/items');
+ });
+
+}]);
+app.controller('AppController',
+["Loading", "FeedResource", "FolderResource", function (Loading, FeedResource, FolderResource) {
'use strict';
+
this.loading = Loading;
- this.isFirstRun = (function() {
- return FeedResource.size() === 0 && FolderResource.size() === 0;
- });
- }]);
- app.controller('ContentController', ["Publisher", "FeedResource", "ItemResource", "SettingsResource", "data", "$route", "$routeParams", function(Publisher, FeedResource, ItemResource, SettingsResource, data, $route, $routeParams) {
+
+ this.isFirstRun = function () {
+ return FeedResource.size() === 0 && FolderResource.size() === 0;
+ };
+
+}]);
+app.controller('ContentController',
+["Publisher", "FeedResource", "ItemResource", "SettingsResource", "data", "$route", "$routeParams", function (Publisher, FeedResource, ItemResource, SettingsResource, data,
+ $route, $routeParams) {
'use strict';
- var $__0 = this;
+
+ // dont cache items across multiple route changes
ItemResource.clear();
+
+ // distribute data to models based on key
Publisher.publishAll(data);
+
+
this.isAutoPagingEnabled = true;
- this.getItems = (function() {
- return ItemResource.getAll();
- });
- this.toggleStar = (function(itemId) {
- ItemResource.toggleStar(itemId);
- });
- this.toggleItem = (function(item) {
- if ($__0.isCompactView()) {
- item.show = !item.show;
- }
- });
- this.markRead = (function(itemId) {
- var item = ItemResource.get(itemId);
- if (!item.keepUnread) {
- ItemResource.markItemRead(itemId);
- FeedResource.markItemOfFeedRead(item.feedId);
- }
- });
- this.getFeed = (function(feedId) {
- return FeedResource.getById(feedId);
- });
- this.toggleKeepUnread = (function(itemId) {
- var item = ItemResource.get(itemId);
- if (!item.unread) {
- FeedResource.markItemOfFeedUnread(item.feedId);
- ItemResource.markItemRead(itemId, false);
- }
- item.keepUnread = !item.keepUnread;
- });
- this.orderBy = (function() {
- if (SettingsResource.get('oldestFirst')) {
- return 'id';
- } else {
- return '-id';
- }
- });
- this.isCompactView = (function() {
- return SettingsResource.get('compact');
- });
- this.autoPagingEnabled = (function() {
- return $__0.isAutoPagingEnabled;
- });
- this.markReadEnabled = (function() {
- return !SettingsResource.get('preventReadOnScroll');
- });
- this.scrollRead = (function(itemIds) {
- var itemId$__9;
- var item$__10;
- var ids = [];
- var feedIds = [];
- for (var $__3 = itemIds[$traceurRuntime.toProperty(Symbol.iterator)](),
- $__4; !($__4 = $__3.next()).done; ) {
- itemId$__9 = $__4.value;
- {
- item$__10 = ItemResource.get(itemId$__9);
- if (!item$__10.keepUnread) {
- ids.push(itemId$__9);
- feedIds.push(item$__10.feedId);
- }
+
+ this.getItems = function () {
+ return ItemResource.getAll();
+ };
+
+ this.toggleStar = function (itemId) {
+ ItemResource.toggleStar(itemId);
+ };
+
+ this.toggleItem = function (item) {
+ // TODO: unittest
+ if (this.isCompactView()) {
+ item.show = !item.show;
}
- }
- FeedResource.markItemsOfFeedsRead(feedIds);
- 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;
+ };
+
+ this.markRead = function (itemId) {
+ var item = ItemResource.get(itemId);
+
+ if (!item.keepUnread) {
+ ItemResource.markItemRead(itemId);
+ FeedResource.markItemOfFeedRead(item.feedId);
}
- })).error((function() {
- $__0.isAutoPagingEnabled = true;
- }));
- });
- this.getRelativeDate = (function(timestamp) {
- var languageCode$__11;
- var date$__12;
- if (timestamp !== undefined && timestamp !== '') {
- languageCode$__11 = SettingsResource.get('language');
- date$__12 = moment.unix(timestamp).locale(languageCode$__11).fromNow() + '';
- return date$__12;
- } else {
- return '';
- }
- });
- }]);
- app.controller('NavigationController', ["$route", "FEED_TYPE", "FeedResource", "FolderResource", "ItemResource", "SettingsResource", function($route, FEED_TYPE, FeedResource, FolderResource, ItemResource, SettingsResource) {
+ };
+
+ this.getFeed = function (feedId) {
+ return FeedResource.getById(feedId);
+ };
+
+ this.toggleKeepUnread = function (itemId) {
+ var item = ItemResource.get(itemId);
+ if (!item.unread) {
+ FeedResource.markItemOfFeedUnread(item.feedId);
+ ItemResource.markItemRead(itemId, false);
+ }
+
+ item.keepUnread = !item.keepUnread;
+ };
+
+ this.orderBy = function () {
+ if (SettingsResource.get('oldestFirst')) {
+ return 'id';
+ } else {
+ return '-id';
+ }
+ };
+
+ this.isCompactView = function () {
+ return SettingsResource.get('compact');
+ };
+
+ this.autoPagingEnabled = function () {
+ return this.isAutoPagingEnabled;
+ };
+
+ this.markReadEnabled = function () {
+ return !SettingsResource.get('preventReadOnScroll');
+ };
+
+ this.scrollRead = function (itemIds) {
+ var ids = [];
+ var feedIds = [];
+
+ itemIds.forEach(function (itemId) {
+ var item = ItemResource.get(itemId);
+ if (!item.keepUnread) {
+ ids.push(itemId);
+ feedIds.push(item.feedId);
+ }
+ });
+
+ FeedResource.markItemsOfFeedsRead(feedIds);
+ ItemResource.markItemsRead(ids);
+ };
+
+ this.autoPage = function () {
+ this.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) {
+ this.isAutoPagingEnabled = true;
+ }
+ }).error(function () {
+ this.isAutoPagingEnabled = true;
+ });
+ };
+
+ this.getRelativeDate = function (timestamp) {
+ if (timestamp !== undefined && timestamp !== '') {
+ var languageCode = SettingsResource.get('language');
+ var date =
+ moment.unix(timestamp).locale(languageCode).fromNow() + '';
+ return date;
+ } else {
+ return '';
+ }
+ };
+
+}]);
+app.controller('NavigationController',
+["$route", "FEED_TYPE", "FeedResource", "FolderResource", "ItemResource", "SettingsResource", function ($route, FEED_TYPE, FeedResource, FolderResource, ItemResource,
+ SettingsResource) {
'use strict';
- var $__0 = this;
+
this.feedError = '';
this.folderError = '';
- this.getFeeds = (function() {
- return FeedResource.getAll();
- });
- this.getFolders = (function() {
- return FolderResource.getAll();
- });
- this.markFolderRead = (function(folderId) {
- var feed$__13;
- FeedResource.markFolderRead(folderId);
- for (var $__3 = FeedResource.getByFolderId(folderId)[$traceurRuntime.toProperty(Symbol.iterator)](),
- $__4; !($__4 = $__3.next()).done; ) {
- feed$__13 = $__4.value;
- {
- ItemResource.markFeedRead(feed$__13.id);
- }
- }
- });
- this.markFeedRead = (function(feedId) {
- ItemResource.markFeedRead(feedId);
- FeedResource.markFeedRead(feedId);
- });
- this.markRead = (function() {
- ItemResource.markRead();
- FeedResource.markRead();
- });
- this.isShowAll = (function() {
- return SettingsResource.get('showAll');
- });
- this.getFeedsOfFolder = (function(folderId) {
- return FeedResource.getByFolderId(folderId);
- });
- this.getUnreadCount = (function() {
- return FeedResource.getUnreadCount();
- });
- this.getFeedUnreadCount = (function(feedId) {
- return FeedResource.getById(feedId).unreadCount;
- });
- this.getFolderUnreadCount = (function(folderId) {
- return FeedResource.getFolderUnreadCount(folderId);
- });
- this.getStarredCount = (function() {
- return ItemResource.getStarredCount();
- });
- this.toggleFolder = (function(folderName) {
- FolderResource.toggleOpen(folderName);
- });
- this.hasFeeds = (function(folderId) {
- return FeedResource.getFolderUnreadCount(folderId) !== undefined;
- });
- this.subFeedActive = (function(folderId) {
- var feed$__14;
- var type = $route.current.$$route.type;
- if (type === FEED_TYPE.FEED) {
- feed$__14 = FeedResource.getById($route.current.params.id);
- if (feed$__14.folderId === folderId) {
- return true;
+
+ this.getFeeds = function () {
+ return FeedResource.getAll();
+ };
+
+ this.getFolders = function () {
+ return FolderResource.getAll();
+ };
+
+ this.markFolderRead = function (folderId) {
+ FeedResource.markFolderRead(folderId);
+
+ FeedResource.getByFolderId(folderId).forEach(function (feed) {
+ ItemResource.markFeedRead(feed.id);
+ });
+ };
+
+ this.markFeedRead = function (feedId) {
+ ItemResource.markFeedRead(feedId);
+ FeedResource.markFeedRead(feedId);
+ };
+
+ this.markRead = function () {
+ ItemResource.markRead();
+ FeedResource.markRead();
+ };
+
+ this.isShowAll = function () {
+ return SettingsResource.get('showAll');
+ };
+
+ this.getFeedsOfFolder = function (folderId) {
+ return FeedResource.getByFolderId(folderId);
+ };
+
+ this.getUnreadCount = function () {
+ return FeedResource.getUnreadCount();
+ };
+
+ this.getFeedUnreadCount = function (feedId) {
+ return FeedResource.getById(feedId).unreadCount;
+ };
+
+ this.getFolderUnreadCount= function (folderId) {
+ return FeedResource.getFolderUnreadCount(folderId);
+ };
+
+ this.getStarredCount = function () {
+ return ItemResource.getStarredCount();
+ };
+
+ this.toggleFolder = function (folderName) {
+ FolderResource.toggleOpen(folderName);
+ };
+
+ this.hasFeeds = function (folderId) {
+ return FeedResource.getFolderUnreadCount(folderId) !== undefined;
+ };
+
+ this.subFeedActive = function (folderId) {
+ var type = $route.current.$$route.type;
+
+ if (type === FEED_TYPE.FEED) {
+ var feed = FeedResource.getById($route.current.params.id);
+
+ if (feed.folderId === folderId) {
+ return true;
+ }
}
- }
- return false;
- });
- this.isSubscriptionsActive = (function() {
- return $route.current && $route.current.$$route.type === FEED_TYPE.SUBSCRIPTIONS;
- });
- this.isStarredActive = (function() {
- return $route.current && $route.current.$$route.type === FEED_TYPE.STARRED;
- });
- this.isFolderActive = (function(folderId) {
- var currentId = parseInt($route.current.params.id, 10);
- return $route.current && $route.current.$$route.type === FEED_TYPE.FOLDER && currentId === folderId;
- });
- this.isFeedActive = (function(feedId) {
- var currentId = parseInt($route.current.params.id, 10);
- return $route.current && $route.current.$$route.type === FEED_TYPE.FEED && currentId === feedId;
- });
- this.folderNameExists = (function(folderName) {
- return FolderResource.get(folderName) !== undefined;
- });
- this.isAddingFolder = (function() {
- return true;
- });
- this.createFolder = (function(folder) {
- console.log(folder.name);
- folder.name = '';
- });
- this.createFeed = (function(feed) {
- $__0.newFolder = false;
- console.log(feed.url + feed.folder);
- feed.url = '';
- });
- this.renameFeed = (function(feed) {
- feed.editing = false;
- });
- this.renameFolder = (function() {
- console.log('TBD');
- });
- this.deleteFeed = (function(feed) {
- feed.deleted = true;
- });
- this.undeleteFeed = (function(feed) {
- feed.deleted = false;
- });
- this.removeFeed = (function(feed) {
- console.log('remove ' + feed);
- });
- this.deleteFolder = (function(folderName) {
- console.log(folderName);
- });
- this.moveFeed = (function(feedId, folderId) {
- console.log(feedId + folderId);
- });
- }]);
- app.controller('SettingsController', ["$route", "SettingsResource", "FeedResource", function($route, SettingsResource, FeedResource) {
+
+ return false;
+ };
+
+ this.isSubscriptionsActive = function () {
+ return $route.current &&
+ $route.current.$$route.type === FEED_TYPE.SUBSCRIPTIONS;
+ };
+
+ this.isStarredActive = function () {
+ return $route.current &&
+ $route.current.$$route.type === FEED_TYPE.STARRED;
+ };
+
+ this.isFolderActive = function (folderId) {
+ var currentId = parseInt($route.current.params.id, 10);
+ return $route.current &&
+ $route.current.$$route.type === FEED_TYPE.FOLDER &&
+ currentId === folderId;
+ };
+
+ this.isFeedActive = function (feedId) {
+ var currentId = parseInt($route.current.params.id, 10);
+ return $route.current &&
+ $route.current.$$route.type === FEED_TYPE.FEED &&
+ currentId === feedId;
+ };
+
+ this.folderNameExists = function (folderName) {
+ return FolderResource.get(folderName) !== undefined;
+ };
+
+ // TBD
+ this.isAddingFolder = function () {
+ return true;
+ };
+
+ this.createFolder = function (folder) {
+ console.log(folder.name);
+ folder.name = '';
+ };
+
+ this.createFeed = function (feed) {
+ this.newFolder = false;
+ console.log(feed.url + feed.folder);
+ feed.url = '';
+ };
+
+ this.renameFeed = function (feed) {
+ feed.editing = false;
+ // todo remote stuff
+ };
+
+ this.renameFolder = function () {
+ console.log('TBD');
+ };
+
+ this.deleteFeed = function (feed) {
+ feed.deleted = true;
+ // todo remote stuff
+ };
+
+ this.undeleteFeed = function (feed) {
+ feed.deleted = false;
+ // todo remote stuff
+ };
+
+ this.removeFeed = function (feed) {
+ console.log('remove ' + feed);
+ };
+
+ this.deleteFolder = function (folderName) {
+ console.log(folderName);
+ };
+
+ this.moveFeed = function (feedId, folderId) {
+ console.log(feedId + folderId);
+ };
+
+}]);
+app.controller('SettingsController',
+["$route", "SettingsResource", "FeedResource", function ($route, SettingsResource, FeedResource) {
'use strict';
- var $__0 = this;
+
this.importing = false;
this.opmlImportError = false;
this.articleImportError = false;
- var set = (function(key, value) {
- SettingsResource.set(key, value);
- if (['showAll', 'oldestFirst'].indexOf(key) >= 0) {
- $route.reload();
- }
- });
- this.toggleSetting = (function(key) {
- set(key, !$__0.getSetting(key));
- });
- this.getSetting = (function(key) {
- return SettingsResource.get(key);
- });
- this.feedSize = (function() {
- return FeedResource.size();
- });
- this.importOpml = (function(content) {
- console.log(content);
- });
- this.importArticles = (function(content) {
- console.log(content);
- });
- }]);
- app.filter('trustUrl', (["$sce", function($sce) {
+
+ var set = function (key, value) {
+ SettingsResource.set(key, value);
+
+ if (['showAll', 'oldestFirst'].indexOf(key) >= 0) {
+ $route.reload();
+ }
+ };
+
+
+ this.toggleSetting = function (key) {
+ set(key, !this.getSetting(key));
+ };
+
+
+ this.getSetting = function (key) {
+ return SettingsResource.get(key);
+ };
+
+
+ this.feedSize = function () {
+ return FeedResource.size();
+ };
+
+
+ // TBD
+ this.importOpml = function (content) {
+ console.log(content);
+ };
+
+
+ this.importArticles = function (content) {
+ console.log(content);
+ };
+
+}]);
+app.filter('trustUrl', ["$sce", function ($sce) {
'use strict';
- return (function(url) {
- return $sce.trustAsResourceUrl(url);
- });
- }]));
- app.filter('unreadCountFormatter', (function() {
+
+ return function (url) {
+ return $sce.trustAsResourceUrl(url);
+ };
+}]);
+app.filter('unreadCountFormatter', function () {
'use strict';
- return (function(unreadCount) {
- if (unreadCount > 999) {
- return '999+';
- }
- return unreadCount;
- });
- }));
- app.factory('FeedResource', (["Resource", "$http", "BASE_URL", function(Resource, $http, BASE_URL) {
+
+ return function (unreadCount) {
+ if (unreadCount > 999) {
+ return '999+';
+ }
+ return unreadCount;
+ };
+});
+app.factory('FeedResource', ["Resource", "$http", "BASE_URL", function (Resource, $http, BASE_URL) {
'use strict';
- var FeedResource = function FeedResource($http, BASE_URL) {
- $traceurRuntime.superCall(this, $FeedResource.prototype, "constructor", [$http, BASE_URL, 'url']);
- this.ids = {};
- this.unreadCount = 0;
- this.folderUnreadCount = {};
- this.folderIds = {};
- this.deleted = null;
- };
- var $FeedResource = FeedResource;
- ($traceurRuntime.createClass)(FeedResource, {
- receive: function(data) {
- $traceurRuntime.superCall(this, $FeedResource.prototype, "receive", [data]);
+
+ var FeedResource = function ($http, BASE_URL) {
+ Resource.call(this, $http, BASE_URL, 'url');
+ this.ids = {};
+ this.unreadCount = 0;
+ this.folderUnreadCount = {};
+ this.folderIds = {};
+ this.deleted = null;
+ };
+
+ FeedResource.prototype = Object.create(Resource.prototype);
+
+ FeedResource.prototype.receive = function (data) {
+ Resource.prototype.receive.call(this, data);
this.updateUnreadCache();
this.updateFolderCache();
- },
- updateUnreadCache: function() {
- var $__57,
- $__58,
- $__59,
- $__60,
- $__61;
- var value$__15;
+ };
+
+
+ FeedResource.prototype.updateUnreadCache = function () {
this.unreadCount = 0;
this.folderUnreadCount = {};
- for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](),
- $__4; !($__4 = $__3.next()).done; ) {
- value$__15 = $__4.value;
- {
- if (value$__15.unreadCount) {
- this.unreadCount += value$__15.unreadCount;
+
+ var self = this;
+ this.values.forEach(function (feed) {
+ if (feed.unreadCount) {
+ self.unreadCount += feed.unreadCount;
}
- if (value$__15.folderId !== undefined) {
- $traceurRuntime.setProperty(this.folderUnreadCount, value$__15.folderId, this.folderUnreadCount[$traceurRuntime.toProperty(value$__15.folderId)] || 0);
- ($__57 = this.folderUnreadCount, $__58 = value$__15.folderId, $__59 = value$__15.unreadCount, $__60 = $__57[$traceurRuntime.toProperty($__58)], $__61 = $__60 + $__59, $traceurRuntime.setProperty($__57, $__58, $__61), $__61);
+ if (feed.folderId !== undefined) {
+ self.folderUnreadCount[feed.folderId] =
+ self.folderUnreadCount[feed.folderId] || 0;
+ self.folderUnreadCount[feed.folderId] += feed.unreadCount;
}
- }
- }
- },
- updateFolderCache: function() {
- var feed$__16;
+ });
+ };
+
+
+ FeedResource.prototype.updateFolderCache = function () {
this.folderIds = {};
- for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](),
- $__4; !($__4 = $__3.next()).done; ) {
- feed$__16 = $__4.value;
- {
- $traceurRuntime.setProperty(this.folderIds, feed$__16.folderId, this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)] || []);
- this.folderIds[$traceurRuntime.toProperty(feed$__16.folderId)].push(feed$__16);
- }
- }
- },
- add: function(value) {
- $traceurRuntime.superCall(this, $FeedResource.prototype, "add", [value]);
+
+ var self = this;
+ this.values.forEach(function (feed) {
+ self.folderIds[feed.folderId] =
+ self.folderIds[feed.folderId] || [];
+ self.folderIds[feed.folderId].push(feed);
+ });
+ };
+
+
+ FeedResource.prototype.add = function (value) {
+ Resource.prototype.add.call(this, value);
if (value.id !== undefined) {
- $traceurRuntime.setProperty(this.ids, value.id, this.hashMap[$traceurRuntime.toProperty(value.url)]);
+ this.ids[value.id] = this.hashMap[value.url];
}
- },
- delete: function(url) {
+ };
+
+
+ FeedResource.prototype.delete = function (url) {
var feed = this.get(url);
this.deleted = feed;
- delete this.ids[$traceurRuntime.toProperty(feed.id)];
- $traceurRuntime.superCall(this, $FeedResource.prototype, "delete", [url]);
+ delete this.ids[feed.id];
+
+ Resource.prototype.delete.call(this, url);
+
this.updateUnreadCache();
this.updateFolderCache();
- return this.http.delete((this.BASE_URL + "/feeds/" + feed.id));
- },
- ma