This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 20128c49143b7d320bc3f96d87e91feb19a1ccd3 Author: Yannick Martel <martel@©odelutin.com> Date: Mon Dec 1 10:50:56 2014 +0100 add some validation indicator in user and document form --- coselmar-ui/pom.xml | 7 +++ coselmar-ui/src/main/webapp/index.html | 1 + .../src/main/webapp/js/coselmar-controllers.js | 65 +++++++++++----------- coselmar-ui/src/main/webapp/version.txt | 2 +- .../main/webapp/views/documents/newdocument.html | 31 +++++++---- coselmar-ui/src/main/webapp/views/home.html | 4 +- .../src/main/webapp/views/users/edituser.html | 35 +++++++----- coselmar-ui/src/main/webapp/views/users/users.html | 6 +- 8 files changed, 90 insertions(+), 61 deletions(-) diff --git a/coselmar-ui/pom.xml b/coselmar-ui/pom.xml index b1b9b6e..3b21d3e 100644 --- a/coselmar-ui/pom.xml +++ b/coselmar-ui/pom.xml @@ -72,6 +72,13 @@ <version>2.1.1-1</version> <scope>runtime</scope> </dependency> + + <dependency> + <groupId>org.nuiton.js</groupId> + <artifactId>nuiton-js-font-awesome</artifactId> + <version>4.2.0-1</version> + <scope>runtime</scope> + </dependency> </dependencies> <build> diff --git a/coselmar-ui/src/main/webapp/index.html b/coselmar-ui/src/main/webapp/index.html index d277fe7..b3f9405 100644 --- a/coselmar-ui/src/main/webapp/index.html +++ b/coselmar-ui/src/main/webapp/index.html @@ -25,6 +25,7 @@ <head> <link rel="stylesheet" href="nuiton-js/bootstrap.css"> + <link rel="stylesheet" href="nuiton-js/font-awesome.css"> <link rel="stylesheet" href="css/coselmar.css"> <script src="nuiton-js/jquery.js"></script> <script src="nuiton-js/angular.js"></script> diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index 26040d2..c8eb358 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -100,18 +100,20 @@ coselmarControllers.controller("NewDocumentCtrl", ['$scope', '$location', 'docum $scope.document = {'privacy': 'PUBLIC'}; $scope.upload = {}; - $scope.createNewDocument = function(){ + $scope.createNewDocument = function(isValidForm){ // Call service to create a new document - documentService.createDocument( - $scope.document, $scope.upload.file, function() { - $location.path("/documents"); - - },function(error) { - //TODO ymartel 20141118 : deal with error.status or statusText - console.log("error occurs"); - console.log(error.s); + if (isValidForm) { + documentService.createDocument( + $scope.document, $scope.upload.file, function() { + $location.path("/documents"); + + },function(error) { + //TODO ymartel 20141118 : deal with error.status or statusText + console.log("error occurs"); + console.log(error.s); }); + } }; }]); @@ -200,19 +202,19 @@ coselmarControllers.controller("NewUserCtrl", ['$scope', '$route', '$location', $scope.user = {'role' : 'expert'}; - $scope.saveUser = function(){ + $scope.saveUser = function(isValidForm){ // Call service to create a new user - userService.saveUser($scope.user, function() { - $location.path("/users"); - },function(error) { - //TODO ymartel 20141118 : deal with error.status or statusText - console.log("error occurs"); - console.log(error.s); - }); + if(isValidForm) { + userService.saveUser($scope.user, function() { + $location.path("/users"); + },function(error) { + //TODO ymartel 20141118 : deal with error.status or statusText + console.log("error occurs"); + console.log(error.s); + }); + } - // Reload the page - $route.reload(); }; }]); @@ -240,20 +242,21 @@ coselmarControllers.controller("UserViewCtrl", $location.search("edit"); }; - $scope.saveUser = function(){ + $scope.saveUser = function(isValidForm){ // Call service to create a new user - userService.saveUser($scope.user, - function() { - // On success, reload the view page - $location.search(""); - - },function(error) { - //TODO ymartel 20141118 : deal with error.status or statusText - console.log("error occurs"); - console.log(error.s); - }); - + if(isValidForm) { + userService.saveUser($scope.user, + function() { + // On success, reload the view page + $location.search(""); + + },function(error) { + //TODO ymartel 20141118 : deal with error.status or statusText + console.log("error occurs"); + console.log(error.s); + }); + } }; } ]); \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/version.txt b/coselmar-ui/src/main/webapp/version.txt index 7dff5b8..3f82886 100644 --- a/coselmar-ui/src/main/webapp/version.txt +++ b/coselmar-ui/src/main/webapp/version.txt @@ -1 +1 @@ -0.2.1 \ No newline at end of file +0.3-SNAPSHOT \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/documents/newdocument.html b/coselmar-ui/src/main/webapp/views/documents/newdocument.html index f98ad7e..4ebb935 100644 --- a/coselmar-ui/src/main/webapp/views/documents/newdocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/newdocument.html @@ -41,21 +41,23 @@ <div class=""> - <form class="form-horizontal" name="documentForm" role="form" ng-submit="createNewDocument()"> + <form class="form-horizontal" name="documentForm" role="form" ng-submit="createNewDocument(documentForm.$valid)"> - <div class="form-group"> - <label class="col-md-4 control-label">Name</label> + <div class="form-group" ng-class="{'has-error' : documentForm.name.$invalid && !documentForm.name.$pristine}"> + <label class="col-md-4 control-label">Name *</label> <div class="col-md-5"> <input type="text" class="form-control" name="name" ng-model="document.name" required/> + <p ng-show="documentForm.name.$invalid && !documentForm.name.$pristine" class="help-block">Document name is required.</p> </div> </div> - <div class="form-group"> - <label class="col-md-4 control-label">Type</label> + <div class="form-group" ng-class="{'has-error' : documentForm.type.$invalid && !documentForm.type.$pristine}"> + <label class="col-md-4 control-label">Type *</label> <div class="col-md-5"> <input type="text" class="form-control" name="type" ng-model="document.type" required/> + <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" class="help-block">Document type is required.</p> </div> </div> @@ -67,7 +69,7 @@ </div> </div> - <div class="form-group" ng-if="document.withFile"> + <div class="form-group" ng-if="document.withFile" > <label class="col-md-4 control-label">File</label> <div class="col-md-5"> @@ -75,22 +77,24 @@ </div> </div> - <div class="form-group" ng-if="!document.withFile"> + <div class="form-group" ng-if="!document.withFile" ng-class="{'has-error' : documentForm.externalUrl.$invalid && !documentForm.externalUrl.$pristine}"> <label class="col-md-4 control-label">External URL</label> <div class="col-md-5"> <input type="input" class="form-control" name="externalUrl" ng-model="document.externalUrl" required /> + <p ng-show="documentForm.externalUrl.$invalid && !documentForm.externalUrl.$pristine" class="help-block">External URL is required if chosen.</p> </div> </div> - <div class="form-group"> + <div class="form-group" ng-class="{'has-error' : documentForm.keywords.$invalid && !documentForm.keywords.$pristine}"> <label class="col-md-4 control-label">keywords</label> <div class="col-md-5"> - <input type="text" class="form-control" name="keyword" + <input type="text" class="form-control" name="keywords" ng-model="document.keywords" ng-list required placeholder="keyword 1, keyword2" /> + <p ng-show="documentForm.keywords.$invalid && !documentForm.keywords.$pristine" class="help-block">At least one keyword is required.</p> </div> </div> @@ -119,19 +123,21 @@ </div> </div> - <div class="form-group"> + <div class="form-group" ng-class="{'has-error' : documentForm.authors.$invalid && !documentForm.authors.$pristine}"> <label class="col-md-4 control-label">Authors</label> <div class="col-md-5"> <input type="text" class="form-control" name="authors" ng-model="document.authors" required/> + <p ng-show="documentForm.authors.$invalid && !documentForm.authors.$pristine" class="help-block">Document authors is required.</p> </div> </div> - <div class="form-group"> + <div class="form-group" ng-class="{'has-error' : documentForm.copyright.$invalid && !documentForm.copyright.$pristine}"> <label class="col-md-4 control-label">Copyright</label> <div class="col-md-5"> <input type="text" class="form-control" name="copyright" ng-model="document.copyright" required/> + <p ng-show="documentForm.copyright.$invalid && !documentForm.copyright.$pristine" class="help-block">Copyright is required.</p> </div> </div> @@ -151,11 +157,12 @@ </div> </div> - <div class="form-group"> + <div class="form-group" ng-class="{'has-error' : documentForm.summary.$invalid && !documentForm.summary.$pristine}"> <label class="col-md-4 control-label">Summary</label> <div class="col-md-5"> <textarea type="text" class="form-control" name="summary" ng-model="document.summary" required /> + <p ng-show="documentForm.summary.$invalid && !documentForm.summary.$pristine" class="help-block">A summary is required.</p> </div> </div> diff --git a/coselmar-ui/src/main/webapp/views/home.html b/coselmar-ui/src/main/webapp/views/home.html index 2447252..8aac4d3 100644 --- a/coselmar-ui/src/main/webapp/views/home.html +++ b/coselmar-ui/src/main/webapp/views/home.html @@ -34,14 +34,14 @@ Actuellement, l'application permet de : <ul> <li>ajouter et consulter des documents ;</li> + <li>avoir une gestion d'utilisateurs suivant 5 profils : admin, responsable, expert, membre, client ;</li> + <li>limiter la visibilité d'un document.</li> </ul> À terme, elle permettra de : <ul> <li>déposer une demande d'expertise ;</li> <li>mettre en relation les experts scientifiques pour répondre à une demande ;</li> <li>apporter une réponse avec compte-rendu et documents à une demande d'expertise ;</li> - <li>avoir une gestion d'utilisateurs suivant 5 profils : admin, responsable, expert, membre, client ;</li> - <li>limiter la visibilité d'un document.</li> </ul> </p> </div> diff --git a/coselmar-ui/src/main/webapp/views/users/edituser.html b/coselmar-ui/src/main/webapp/views/users/edituser.html index 882d43e..a471184 100644 --- a/coselmar-ui/src/main/webapp/views/users/edituser.html +++ b/coselmar-ui/src/main/webapp/views/users/edituser.html @@ -23,31 +23,33 @@ --> <div class=""> - <form name="userForm" class="form-horizontal" role="form" ng-submit="saveUser()"> + <form name="userForm" class="form-horizontal" role="form" ng-submit="saveUser(userForm.$valid)"> - <div class="form-group"> - <label class="col-md-4 control-label">FirstName</label> + <div class="form-group" ng-class="{'has-error' : userForm.firstName.$invalid && !userForm.firstName.$pristine }"> + <label class="col-md-4 control-label">First Name *</label> <div class="col-md-5"> <input type="text" class="form-control" name="firstName" ng-model="user.firstName" required/> + <p ng-show="userForm.firstName.$invalid && !userForm.firstName.$pristine" class="help-block">First name is required.</p> </div> </div> - <div class="form-group"> - <label class="col-md-4 control-label">Name</label> + <div class="form-group" ng-class="{'has-error' : userForm.name.$invalid && !userForm.name.$pristine}"> + <label class="col-md-4 control-label">Name *</label> <div class="col-md-5"> <input type="text" class="form-control" name="name" ng-model="user.name" required/> + <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">Name is required.</p> </div> </div> <div class="form-group" ng-if="currentUser.role == 'ADMIN'"> - <label class="col-md-4 control-label">Role</label> + <label class="col-md-4 control-label">Role *</label> <div class="col-md-5"> - <select class="form-control" name="role" ng-model="user.role"> + <select class="form-control" name="role" ng-model="user.role" required> <option value="ADMIN">Admin</option> <option value="SUPERVISOR">Supervisor</option> <option value="EXPERT">Expert</option> @@ -58,12 +60,13 @@ </div> - <div class="form-group"> - <label class="col-md-4 control-label">Mail</label> + <div class="form-group" ng-class="{'has-error' : userForm.mail.$invalid && !userForm.mail.$pristine}"> + <label class="col-md-4 control-label">Mail *</label> <div class="col-md-5"> - <input type="email" class="form-control" name="mail" - ng-model="user.mail" required/> + <input type="email" class="form-control" name="mail" + ng-model="user.mail" required/> + <p ng-show="userForm.mail.$invalid && !userForm.mail.$pristine" class="help-block">Enter a valid mail.</p> </div> </div> @@ -78,22 +81,26 @@ </div> - <div class="form-group"> - <label class="col-md-4 control-label">Qualification</label> + <div class="form-group" ng-class="{'has-error' : userForm.qualification.$invalid && !userForm.qualification.$pristine}"> + <label class="col-md-4 control-label">Qualification *</label> <div class="col-md-5"> <input type="text" class="form-control" name="qualification" ng-model="user.qualification" required/> + <p ng-show="userForm.qualification.$invalid && !userForm.qualification.$pristine" class="help-block">Qualification is required.</p> </div> </div> - <div class="form-group" ng-if="currentUser && currentUser.userId == user.id"> + <div class="form-group" ng-if="currentUser && currentUser.userId == user.id" + ng-class="{'has-error' : userForm.password.$invalid && !userForm.password.$pristine}"> + <label class="col-md-4 control-label">Tape your current password to validate</label> <div class="col-md-5"> <input type="password" class="form-control" name="password" ng-model="user.password" required/> + <p ng-show="userForm.password.$invalid && !userForm.password.$pristine" class="help-block">Password is required to validate modification.</p> </div> </div> diff --git a/coselmar-ui/src/main/webapp/views/users/users.html b/coselmar-ui/src/main/webapp/views/users/users.html index 7b059db..9646be8 100644 --- a/coselmar-ui/src/main/webapp/views/users/users.html +++ b/coselmar-ui/src/main/webapp/views/users/users.html @@ -67,7 +67,11 @@ <td>{{user.role}}</td> <td ng-if="user.active">Active</td> <td ng-if="!user.active">Deleted</td> - <td><a class="btn btn-warning" href="users/{{user.id}}?edit">Modify</a><a class="btn btn-danger" ng-click="deleteUser(user.id)">Delete</a></td> + <td> + <a class="btn btn-warning" href="#/users/{{user.id}}?edit">Modify</a> + <a class="btn btn-danger" ng-if="user.active" ng-click="deleteUser(user.id)">Disable</a> + <!--<a class="btn btn-primary" ng-if="!user.active" ng-click="enableUser(user.id)">Enable</a>--> + </td> </tr> </table> </div> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.