summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-11 21:38:20 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-11 21:38:20 +0200
commiteda8fec5874ebd2ba48b458497cb315eb871105c (patch)
treeb801eee009361a7e965d205de9d792498eb8d1fa /js
parentb06fc20ddbadbc7522cd23a83a20975f43889890 (diff)
autoselect folder when it was created and open folder if a feed gets added to it
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/feedcontroller.coffee8
-rw-r--r--js/app/services/bl/feedbl.coffee1
-rw-r--r--js/app/services/bl/folderbl.coffee13
-rw-r--r--js/public/app.js35
-rw-r--r--js/tests/services/bl/feedblSpec.coffee1
-rw-r--r--js/tests/services/bl/folderblSpec.coffee23
6 files changed, 71 insertions, 10 deletions
diff --git a/js/app/controllers/feedcontroller.coffee b/js/app/controllers/feedcontroller.coffee
index 27432e33f..8f9f4e7b6 100644
--- a/js/app/controllers/feedcontroller.coffee
+++ b/js/app/controllers/feedcontroller.coffee
@@ -53,6 +53,9 @@ angular.module('News').factory '_FeedController',
try
@_isAddingFeed = true
+ # set folder to open
+ if parentFolderId != 0
+ @_folderBl.open(parentFolderId)
@_feedBl.create feedUrl, parentFolderId
# on success
, (data) =>
@@ -80,10 +83,12 @@ angular.module('News').factory '_FeedController',
@_folderBl.create folderName
# on success
- , =>
+ , (data) =>
@_$scope.folderName = ''
@_$scope.addNewFolder = false
@_isAddingFolder = false
+ activeId = data['folders'][0].id
+ @_$scope.folderId = @_folderBl.getById(activeId)
# on error
, =>
@_isAddingFolder = false
@@ -94,6 +99,7 @@ angular.module('News').factory '_FeedController',
else
@_$scope.folderEmptyError = true
@_isAddingFolder = false
+ @_$scope.addNewFolder = true
@_$scope.$on 'moveFeedToFolder', (scope, data) =>
diff --git a/js/app/services/bl/feedbl.coffee b/js/app/services/bl/feedbl.coffee
index 6ab3c54e5..4c9ff7c99 100644
--- a/js/app/services/bl/feedbl.coffee
+++ b/js/app/services/bl/feedbl.coffee
@@ -146,6 +146,7 @@ NewLoading, _ExistsError) ->
url: url
urlHash: urlHash
folderId: parentId
+ unreadCount: 0
@_feedModel.add(feed)
diff --git a/js/app/services/bl/folderbl.coffee b/js/app/services/bl/folderbl.coffee
index 1084dd5b7..ddb1f88c4 100644
--- a/js/app/services/bl/folderbl.coffee
+++ b/js/app/services/bl/folderbl.coffee
@@ -34,6 +34,9 @@ ItemModel, ShowAll, _ExistsError)->
super(activeFeed, persistence, itemModel, @_feedType.Folder)
+ getById: (folderId) ->
+ return @_folderModel.getById(folderId)
+
delete: (folderId) ->
@_folderModel.removeById(folderId)
@_persistence.deleteFolder(folderId)
@@ -43,6 +46,14 @@ ItemModel, ShowAll, _ExistsError)->
return @_feedBl.getFeedsOfFolder(folderId).length
+ open: (folderId) ->
+ folder = @_folderModel.getById(folderId)
+ if angular.isDefined(folder)
+ if not folder.opened
+ folder.opened = true
+ @_persistence.openFolder(folder.id)
+
+
toggleFolder: (folderId) ->
folder = @_folderModel.getById(folderId)
@@ -103,7 +114,7 @@ ItemModel, ShowAll, _ExistsError)->
folder.error = response.msg
onFailure()
else
- onSuccess()
+ onSuccess(response.data)
@_persistence.createFolder folderName, 0, success
diff --git a/js/public/app.js b/js/public/app.js
index 994624a6f..13dd1d7dc 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -296,6 +296,9 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
_this._$scope.feedExistsError = false;
try {
_this._isAddingFeed = true;
+ if (parentFolderId !== 0) {
+ _this._folderBl.open(parentFolderId);
+ }
return _this._feedBl.create(feedUrl, parentFolderId, function(data) {
_this._$scope.feedUrl = '';
_this._isAddingFeed = false;
@@ -320,10 +323,14 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
_this._$scope.folderExistsError = false;
try {
_this._isAddingFolder = true;
- return _this._folderBl.create(folderName, function() {
+ return _this._folderBl.create(folderName, function(data) {
+ var activeId;
+
_this._$scope.folderName = '';
_this._$scope.addNewFolder = false;
- return _this._isAddingFolder = false;
+ _this._isAddingFolder = false;
+ activeId = data['folders'][0].id;
+ return _this._$scope.folderId = _this._folderBl.getById(activeId);
}, function() {
return _this._isAddingFolder = false;
});
@@ -334,7 +341,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
} else {
_this._$scope.folderEmptyError = true;
}
- return _this._isAddingFolder = false;
+ _this._isAddingFolder = false;
+ return _this._$scope.addNewFolder = true;
}
};
this._$scope.$on('moveFeedToFolder', function(scope, data) {
@@ -760,7 +768,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
title: url.replace(/^(?:https?:\/\/)?(?:www\.)?([a-z0-9_\-\.]+)(?:\/.*)?$/gi, '$1'),
url: url,
urlHash: urlHash,
- folderId: parentId
+ folderId: parentId,
+ unreadCount: 0
};
this._feedModel.add(feed);
success = function(response) {
@@ -829,6 +838,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
FolderBl.__super__.constructor.call(this, activeFeed, persistence, itemModel, this._feedType.Folder);
}
+ FolderBl.prototype.getById = function(folderId) {
+ return this._folderModel.getById(folderId);
+ };
+
FolderBl.prototype["delete"] = function(folderId) {
this._folderModel.removeById(folderId);
return this._persistence.deleteFolder(folderId);
@@ -838,6 +851,18 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this._feedBl.getFeedsOfFolder(folderId).length;
};
+ FolderBl.prototype.open = function(folderId) {
+ var folder;
+
+ folder = this._folderModel.getById(folderId);
+ if (angular.isDefined(folder)) {
+ if (!folder.opened) {
+ folder.opened = true;
+ return this._persistence.openFolder(folder.id);
+ }
+ }
+ };
+
FolderBl.prototype.toggleFolder = function(folderId) {
var folder;
@@ -922,7 +947,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
folder.error = response.msg;
return onFailure();
} else {
- return onSuccess();
+ return onSuccess(response.data);
}
};
return this._persistence.createFolder(folderName, 0, success);
diff --git a/js/tests/services/bl/feedblSpec.coffee b/js/tests/services/bl/feedblSpec.coffee
index 01ed7c18d..c77922574 100644
--- a/js/tests/services/bl/feedblSpec.coffee
+++ b/js/tests/services/bl/feedblSpec.coffee
@@ -253,6 +253,7 @@ describe 'FeedBl', ->
expect(feed.url).toBe(url)
expect(feed.urlHash).toBe(hash)
expect(feed.folderId).toBe(0)
+ expect(feed.unreadCount).toBe(0)
it 'should transform urls correctly', =>
diff --git a/js/tests/services/bl/folderblSpec.coffee b/js/tests/services/bl/folderblSpec.coffee
index 6fd35f73e..3ca761f7d 100644
--- a/js/tests/services/bl/folderblSpec.coffee
+++ b/js/tests/services/bl/folderblSpec.coffee
@@ -168,13 +168,14 @@ describe 'FolderBl', ->
onSuccess = jasmine.createSpy('Success')
@persistence.createFolder = jasmine.createSpy('add folder')
@persistence.createFolder.andCallFake (folderName, parentId, success) =>
- response =
+ @response =
status: 'ok'
- success(response)
+ data: 'jooo'
+ success(@response)
@FolderBl.create(' johns ', onSuccess)
- expect(onSuccess).toHaveBeenCalled()
+ expect(onSuccess).toHaveBeenCalledWith(@response.data)
it 'should call the handle a response error when creating a folder', =>
@@ -203,3 +204,19 @@ describe 'FolderBl', ->
expect(@FolderModel.size()).toBe(0)
expect(@FolderModel.getByName('john')).toBe(undefined)
+
+ it 'should return the corret folder for id', =>
+ item = {id: 3, name: 'john'}
+ @FolderModel.add(item)
+
+ expect(@FolderBl.getById(3)).toBe(item)
+
+
+ it 'should open a folder', =>
+ @persistence.openFolder = jasmine.createSpy('open')
+
+ @FolderModel.add({id: 3, opened: false, name: 'ho'})
+ @FolderBl.open(3)
+ expect(@FolderModel.getById(3).opened).toBeTruthy()
+ expect(@persistence.openFolder).toHaveBeenCalledWith(3)
+