diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-11 21:38:20 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-11 21:38:20 +0200 |
commit | eda8fec5874ebd2ba48b458497cb315eb871105c (patch) | |
tree | b801eee009361a7e965d205de9d792498eb8d1fa /js | |
parent | b06fc20ddbadbc7522cd23a83a20975f43889890 (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.coffee | 8 | ||||
-rw-r--r-- | js/app/services/bl/feedbl.coffee | 1 | ||||
-rw-r--r-- | js/app/services/bl/folderbl.coffee | 13 | ||||
-rw-r--r-- | js/public/app.js | 35 | ||||
-rw-r--r-- | js/tests/services/bl/feedblSpec.coffee | 1 | ||||
-rw-r--r-- | js/tests/services/bl/folderblSpec.coffee | 23 |
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) + |