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.js181
1 files changed, 173 insertions, 8 deletions
diff --git a/js/build/app.js b/js/build/app.js
index d6355a108..c482c3fb4 100644
--- a/js/build/app.js
+++ b/js/build/app.js
@@ -132,7 +132,7 @@ var $__build_47_app__ = function () {
default:
url = '/items';
}
- if (path === '') {
+ if (!/^\/items(\/(starred|feeds\/\d+|folders\/\d+))?$/.test(path)) {
$location.path(url);
}
activeFeedDeferred.resolve();
@@ -299,6 +299,8 @@ var $__build_47_app__ = function () {
'SettingsResource',
function (FeedResource, FolderResource, ItemResource, SettingsResource) {
'use strict';
+ this.feedError = '';
+ this.folderError = '';
this.getFeeds = function () {
return FeedResource.getAll();
};
@@ -329,6 +331,9 @@ var $__build_47_app__ = function () {
this.isShowAll = function () {
return SettingsResource.get('showAll');
};
+ this.getFeedsOfFolder = function (folderId) {
+ return FeedResource.getByFolderId(folderId);
+ };
this.createFeed = function () {
console.log('TBD');
};
@@ -418,12 +423,15 @@ var $__build_47_app__ = function () {
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]);
this.updateUnreadCache();
+ this.updateFolderCache();
},
updateUnreadCache: function () {
var $__14, $__15, $__16, $__17, $__18;
@@ -446,16 +454,34 @@ var $__build_47_app__ = function () {
}
}
},
+ updateFolderCache: function () {
+ this.folderIds = {};
+ for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
+ try {
+ throw undefined;
+ } catch (feed) {
+ feed = $__4.value;
+ {
+ $traceurRuntime.setProperty(this.folderIds, feed.folderId, this.folderIds[$traceurRuntime.toProperty(feed.folderId)] || []);
+ this.folderIds[$traceurRuntime.toProperty(feed.folderId)].push(feed);
+ }
+ }
+ }
+ },
add: function (value) {
$traceurRuntime.superCall(this, $FeedResource.prototype, 'add', [value]);
if (value.id !== undefined) {
$traceurRuntime.setProperty(this.ids, value.id, this.hashMap[$traceurRuntime.toProperty(value.url)]);
}
},
- delete: function (id) {
- var feed = this.get(id);
+ delete: function (url) {
+ var feed = this.get(url);
+ this.deleted = feed;
delete this.ids[$traceurRuntime.toProperty(feed.id)];
- $traceurRuntime.superCall(this, $FeedResource.prototype, 'delete', [id]);
+ $traceurRuntime.superCall(this, $FeedResource.prototype, 'delete', [url]);
+ this.updateUnreadCache();
+ this.updateFolderCache();
+ return this.http.delete(this.BASE_URL + '/feeds/' + feed.id);
},
markRead: function () {
for (var $__3 = this.values[$traceurRuntime.toProperty(Symbol.iterator)](), $__4; !($__4 = $__3.next()).done;) {
@@ -518,12 +544,61 @@ var $__build_47_app__ = function () {
return this.folderUnreadCount[$traceurRuntime.toProperty(folderId)] || 0;
},
getByFolderId: function (folderId) {
- return this.values.filter(function (v) {
- return v.folderId === folderId;
- });
+ return this.folderIds[$traceurRuntime.toProperty(folderId)] || [];
},
getById: function (feedId) {
return this.ids[$traceurRuntime.toProperty(feedId)];
+ },
+ rename: function (url, name) {
+ var feed = this.get(url);
+ feed.title = name;
+ return this.http({
+ method: 'POST',
+ url: this.BASE_URL + '/feeds/' + feed.id + '/rename',
+ data: { feedTitle: name }
+ });
+ },
+ move: function (url, folderId) {
+ var feed = this.get(url);
+ feed.folderId = folderId;
+ this.updateFolderCache();
+ return this.http({
+ method: 'POST',
+ url: this.BASE_URL + '/feeds/' + feed.id + '/move',
+ data: { parentFolderId: folderId }
+ });
+ },
+ create: function (url, folderId) {
+ var title = arguments[2] !== void 0 ? arguments[2] : null;
+ if (title) {
+ title = title.toUpperCase();
+ }
+ var feed = {
+ url: url,
+ folderId: folderId,
+ title: title
+ };
+ if (!this.get(url)) {
+ this.add(feed);
+ }
+ this.updateFolderCache();
+ return this.http({
+ method: 'POST',
+ url: this.BASE_URL + '/feeds',
+ data: {
+ url: url,
+ parentFolderId: folderId,
+ title: title
+ }
+ });
+ },
+ undoDelete: function () {
+ if (this.deleted) {
+ this.add(this.deleted);
+ return this.http.post(this.BASE_URL + '/feeds/' + this.deleted.id + '/restore');
+ }
+ this.updateFolderCache();
+ this.updateUnreadCache();
}
}, {}, Resource);
return new FeedResource($http, BASE_URL);
@@ -541,9 +616,65 @@ var $__build_47_app__ = function () {
BASE_URL,
'name'
]);
+ this.deleted = null;
};
var $FolderResource = FolderResource;
- $traceurRuntime.createClass(FolderResource, {}, {}, Resource);
+ $traceurRuntime.createClass(FolderResource, {
+ delete: function (folderName) {
+ var folder = this.get(folderName);
+ this.deleted = folder;
+ $traceurRuntime.superCall(this, $FolderResource.prototype, 'delete', [folderName]);
+ return this.http.delete(this.BASE_URL + '/folders/' + folder.id);
+ },
+ toggleOpen: function (folderName) {
+ var folder = this.get(folderName);
+ folder.opened = !folder.opened;
+ return this.http({
+ url: this.BASE_URL + '/folders/' + folder.id + '/open',
+ method: 'POST',
+ data: {
+ folderId: folder.id,
+ open: folder.opened
+ }
+ });
+ },
+ rename: function (folderName, toFolderName) {
+ toFolderName = toFolderName.toUpperCase();
+ var folder = this.get(folderName);
+ if (!this.get(toFolderName)) {
+ folder.name = toFolderName;
+ delete this.hashMap[$traceurRuntime.toProperty(folderName)];
+ $traceurRuntime.setProperty(this.hashMap, toFolderName, folder);
+ }
+ return this.http({
+ url: this.BASE_URL + '/folders/' + folder.id + '/rename',
+ method: 'POST',
+ data: { folderName: toFolderName }
+ });
+ },
+ create: function (folderName) {
+ folderName = folderName.toUpperCase();
+ if (!this.get(folderName)) {
+ try {
+ throw undefined;
+ } catch (folder) {
+ folder = { name: folderName };
+ this.add(folder);
+ }
+ }
+ return this.http({
+ url: this.BASE_URL + '/folders',
+ method: 'POST',
+ data: { folderName: folderName }
+ });
+ },
+ undoDelete: function () {
+ if (this.deleted) {
+ this.add(this.deleted);
+ return this.http.post(this.BASE_URL + '/folders/' + this.deleted.id + '/restore');
+ }
+ }
+ }, {}, Resource);
return new FolderResource($http, BASE_URL);
}
]);
@@ -1383,6 +1514,40 @@ var $__build_47_app__ = function () {
});
};
});
+ app.directive('newsDraggable', function () {
+ 'use strict';
+ return function (scope, elem, attr) {
+ var options = scope.$eval(attr.newsDraggable);
+ if (angular.isDefined(options)) {
+ elem.draggable(options);
+ } else {
+ elem.draggable();
+ }
+ };
+ });
+ app.directive('newsDroppable', [
+ '$rootScope',
+ function ($rootScope) {
+ 'use strict';
+ return function (scope, elem, attr) {
+ var details = {
+ accept: '.feed',
+ hoverClass: 'drag-and-drop',
+ greedy: true,
+ drop: function (event, ui) {
+ $('.drag-and-drop').removeClass('drag-and-drop');
+ var data = {
+ folderId: parseInt(elem.data('id'), 10),
+ feedId: parseInt($(ui.draggable).data('id'), 10)
+ };
+ $rootScope.$broadcast('moveFeedToFolder', data);
+ scope.$apply(attr.droppable);
+ }
+ };
+ elem.droppable(details);
+ };
+ }
+ ]);
app.directive('newsReadFile', function () {
'use strict';
return function (scope, elem, attr) {