From 02869fdc16bcec5ce142a597c3d203dadd7d2067 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Wed, 27 Mar 2013 17:19:50 +0100 Subject: adding folders works --- js/app/controllers/feedcontroller.coffee | 13 ++++++++----- js/app/directives/addfolderselect.coffee | 12 ++++++++---- js/app/services/models/foldermodel.coffee | 9 ++++++++- 3 files changed, 24 insertions(+), 10 deletions(-) (limited to 'js/app') diff --git a/js/app/controllers/feedcontroller.coffee b/js/app/controllers/feedcontroller.coffee index 14e1aea5b..33d23d935 100644 --- a/js/app/controllers/feedcontroller.coffee +++ b/js/app/controllers/feedcontroller.coffee @@ -103,14 +103,13 @@ angular.module('News').factory '_FeedController', -> @$scope.addFolder = (folderName) => @$scope.folderEmptyError = false @$scope.folderExistsError = false + folderName = folderName.trim() - if angular.isUndefined(folderName) or folderName.trim() == '' + if angular.isUndefined(folderName) or folderName == '' @$scope.folderEmptyError = true else - folderName = folderName.trim() - for folder in @_folderModel.getAll() - if folderName.toLowerCase() == folder.name.toLowerCase() - @$scope.folderExistsError = true + if @_folderModel.nameExists(folderName) + @$scope.folderExistsError = true if not (@$scope.folderEmptyError or @$scope.folderExistsError) @_isAddingFolder = true @@ -119,6 +118,10 @@ angular.module('News').factory '_FeedController', -> @_isAddingFolder = false + @$scope.$on 'createFolder', (scope, folderName) => + $scope.addFolder(folderName) + + toggleFolder: (folderId) -> folder = @_folderModel.getById(folderId) diff --git a/js/app/directives/addfolderselect.coffee b/js/app/directives/addfolderselect.coffee index 1c3f39f04..41a111823 100644 --- a/js/app/directives/addfolderselect.coffee +++ b/js/app/directives/addfolderselect.coffee @@ -25,7 +25,8 @@ License along with this library. If not, see . Turns a normal select into a folder select with the ability to create new folders ### -angular.module('News').directive 'addFolderSelect', ['$rootScope', -> +angular.module('News').directive 'addFolderSelect', +['$rootScope', 'FolderModel', ($rootScope, FolderModel) -> return (scope, elm, attr) -> @@ -33,9 +34,12 @@ angular.module('News').directive 'addFolderSelect', ['$rootScope', -> singleSelect: true selectedFirst: true createText: $(elm).data('create') - createdCallback: (selected, value) -> - console.log selected - console.log value + createCallback: (selected, value) -> + if FolderModel.nameExists(value) + return false + else + $rootScope.$broadcast 'createFolder', value + $(elm).multiSelect(options) diff --git a/js/app/services/models/foldermodel.coffee b/js/app/services/models/foldermodel.coffee index 208bd2f4b..56997e603 100644 --- a/js/app/services/models/foldermodel.coffee +++ b/js/app/services/models/foldermodel.coffee @@ -20,9 +20,16 @@ License along with this library. If not, see . ### -angular.module('News').factory '_FolderModel', ['_Model', (_Model) -> +angular.module('News').factory '_FolderModel', +['_Model', '_EqualQuery', (_Model, _EqualQuery) -> class FolderModel extends _Model + + nameExists: (folderName) -> + query = new _EqualQuery('name', folderName.trim(), true) + return @get(query).length > 0 + + return FolderModel ] \ No newline at end of file -- cgit v1.2.3