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 7e7e5b0f5621d68dfd68d324522481b4bdba6338 Author: Yannick Martel <martel@©odelutin.com> Date: Mon Dec 15 18:16:06 2014 +0100 review document creation page --- .../src/main/webapp/js/coselmar-controllers.js | 16 +- .../main/webapp/views/documents/newdocument.html | 252 ++++++++++++--------- 2 files changed, 157 insertions(+), 111 deletions(-) diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index 7a15b4c..4b5cece 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -97,7 +97,7 @@ coselmarControllers.controller("DocumentsCtrl", ['$scope', '$route', '$routePara // Controller for new document View coselmarControllers.controller("NewDocumentCtrl", ['$scope', '$location', 'documentService', function($scope, $location, documentService){ - $scope.document = {'privacy': 'PUBLIC'}; + $scope.document = {'privacy': 'PUBLIC', 'keywords': []}; $scope.upload = {}; $scope.existing = {'types' : [], 'keywords' : []}; @@ -129,6 +129,20 @@ coselmarControllers.controller("NewDocumentCtrl", ['$scope', '$location', 'docum } }; + + $scope.addKeyword = function(keyword) { + if (keyword && $scope.document.keywords.indexOf(keyword) == -1) { + $scope.document.keywords.push(keyword); + } + } + + $scope.removeKeyword = function(keyword) { + var position = $scope.document.keywords.indexOf(keyword); + if (keyword && position != -1) { + $scope.document.keywords.splice(position, 1); + } + } + }]); // Controller for single document View diff --git a/coselmar-ui/src/main/webapp/views/documents/newdocument.html b/coselmar-ui/src/main/webapp/views/documents/newdocument.html index 3996a14..8b42df5 100644 --- a/coselmar-ui/src/main/webapp/views/documents/newdocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/newdocument.html @@ -45,162 +45,193 @@ <form class="form-horizontal" name="documentForm" role="form" ng-submit="createNewDocument(documentForm.$valid)"> - <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> + <!-- Line with Title, type and privacy --> + <div class="form-group row"> + <div class="" + ng-class="{'has-error' : documentForm.name.$invalid && !documentForm.name.$pristine}"> + <label class="col-md-2 control-label">Name *</label> + + <div class="col-md-4"> + <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> - <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="" + ng-class="{'has-error' : documentForm.type.$invalid && !documentForm.type.$pristine}"> + <label class="col-md-1 control-label">Type *</label> - <div class="col-md-5"> - <input type="text" class="form-control" name="type" - data-ng-model="document.type" list="existingTypes" required/> + <div class="col-md-2"> + <input type="text" class="form-control" name="type" + data-ng-model="document.type" list="existingTypes" required/> - <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" - class="help-block">Document type is required.</p> + <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" + class="help-block">Document type is required.</p> + </div> + <datalist id="existingTypes"> + <option data-ng-repeat="type in existing.types" value="{{type}}"> + </datalist> </div> - <datalist id="existingTypes"> - <option data-ng-repeat="type in existing.types" value="{{type}}"> - </datalist> - </div> - <div class="form-group"> - <label class="col-md-4 control-label">Attach File ?</label> + <div> - <div class="col-md-5"> - <input type="checkbox" ng-model="document.withFile" - ng-init="document.withFile = false"/> - </div> - </div> + <label class="col-md-1 control-label">Privacy</label> - <div class="form-group" ng-if="document.withFile"> - <label class="col-md-4 control-label">File</label> + <div class="col-md-2"> + <select class="form-control" name="privacy" + ng-model="document.privacy"> + <option value="PRIVATE">private</option> + <option value="PUBLIC">public</option> + <option value="RESTRICTED">restricted</option> + </select> - <div class="col-md-5"> - <input type="file" class="form-control" name="uploadFile" - ng-file-model="upload.file" required/> + <div ng-if="document.privacy == 'RESTRICTED'"> + Not Yet available + </div> + </div> </div> </div> - <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> + <!-- Line with Data : file or External URL --> + <div class="form-group" + ng-class="{'has-error' : documentForm.externalUrl.$invalid + && !documentForm.externalUrl.$pristine && !upload.file}"> - <div class="col-md-5"> - <input type="input" class="form-control" name="externalUrl" - ng-model="document.externalUrl" required/> + <div> + <label class="col-md-2 control-label">File</label> - <p ng-show="documentForm.externalUrl.$invalid && !documentForm.externalUrl.$pristine" - class="help-block">External URL is required if chosen.</p> + <div class="col-md-4"> + <input type="file" class="form-control" name="uploadFile" + ng-file-model="upload.file"/> + </div> </div> - </div> - <div class="form-group" - ng-class="{'has-error' : documentForm.keywords.$invalid && !documentForm.keywords.$pristine}"> - <label class="col-md-4 control-label">keywords *</label> + <div> + <label class="col-md-2 control-label">External URL</label> - <div class="col-md-5"> - <input type="text" class="form-control" name="keywords" - ng-model="document.keywords" ng-list required - placeholder="keyword 1, keyword2"/> + <div class="col-md-4"> + <input type="input" class="form-control" name="externalUrl" + ng-model="document.externalUrl" /> - <p ng-show="documentForm.keywords.$invalid && !documentForm.keywords.$pristine" - class="help-block">At least one keyword is required.</p> + </div> </div> + <p ng-show="!document.externalUrl && !file.upload" + class="help-block text-center">A File or an external URL is + required.</p> </div> + <!-- Line with Keywords --> <div class="form-group"> - <label class="col-md-4 control-label">Privacy</label> - - <div class="col-md-5"> - <select class="form-control" name="privacy" - ng-model="document.privacy"> - <option value="PRIVATE">private</option> - <option value="PUBLIC">public</option> - <option value="RESTRICTED">restricted</option> - </select> - - <div ng-if="privacy == 'RESTRICTED'"> - Not Yet available + <div ng-class="{'has-error' : documentForm.keywords.$invalid + && !documentForm.keywords.$pristine}"> + + <label class="col-md-2 control-label">keywords *</label> + + <div class="col-md-2"> + <input type="text" class="form-control" name="keywords" + ng-model="toAddKeyword" list="existingKeywords" /> + + <p ng-show="document.keywords.length < 1 && !documentForm.keywords.$pristine" + class="help-block">At least one keyword is required.</p> </div> + <datalist id="existingKeywords"> + <option data-ng-repeat="keyword in existing.keywords" value="{{keyword}}"> + </datalist> </div> - </div> + <div class="col-md-1"> + <button class="btn btn-primary" value="add" + ng-click="addKeyword(toAddKeyword); toAddKeyword=''">add</button> + </div> + + + <div class="col-md-7"> + <span ng-repeat="keyword in document.keywords" class="" aria-hidden="true"> + {{keyword}} + <button type="button" class="close" title="remove" ng-click="removeKeyword(keyword);"> + × + </button> + </span> - <div class="form-group"> - <label class="col-md-4 control-label">Publication date</label> - - <div class="col-md-5"> - <div class="input-group"> - <input type="text" class="form-control" name="publicationDate" - ng-model="document.publicationDate" - datepicker-popup="dd/MM/yyyy" is-open="publicationDateOpened" - ng-click="publicationDateOpened = true"/> - <span class="input-group-addon"><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span></span> - </div> </div> </div> - <div class="form-group" - ng-class="{'has-error' : documentForm.authors.$invalid && !documentForm.authors.$pristine}"> - <label class="col-md-4 control-label">Authors *</label> + <!-- Line with Authors and copyright--> + <div class="form-group"> + <div ng-class="{'has-error' : documentForm.authors.$invalid + && !documentForm.authors.$pristine}"> + <label class="col-md-2 control-label">Authors *</label> - <div class="col-md-5"> - <input type="text" class="form-control" name="authors" - ng-model="document.authors" required/> + <div class="col-md-4"> + <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> + <p ng-show="documentForm.authors.$invalid && !documentForm.authors.$pristine" + class="help-block">Document authors is required.</p> + </div> </div> - </div> - <div class="form-group" - ng-class="{'has-error' : documentForm.copyright.$invalid && !documentForm.copyright.$pristine}"> - <label class="col-md-4 control-label">Copyright *</label> + <div ng-class="{'has-error' : documentForm.copyright.$invalid + && !documentForm.copyright.$pristine}"> - <div class="col-md-5"> - <input type="text" class="form-control" name="copyright" - ng-model="document.copyright" required/> + <label class="col-md-2 control-label">Copyright *</label> - <p ng-show="documentForm.copyright.$invalid && !documentForm.copyright.$pristine" - class="help-block">Copyright is required.</p> + <div class="col-md-4"> + <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> </div> + <!-- Line with License, publication date and language --> <div class="form-group"> - <label class="col-md-4 control-label">Licence</label> + <div > + <label class="col-md-2 control-label">Licence</label> - <div class="col-md-5"> - <input type="text" class="form-control" name="licence" - ng-model="document.licence"/> + <div class="col-md-4"> + <input type="text" class="form-control" name="licence" + ng-model="document.licence"/> + </div> </div> - </div> - <div class="form-group"> - <label class="col-md-4 control-label">Language</label> + <div> + <label class="col-md-1 control-label">Language</label> + + <div class="col-md-1"> + <input type="text" class="form-control" name="language" + ng-model="document.language"/> + </div> + </div> + + <div> + <label class="col-md-2 control-label">Publication date</label> + + <div class="col-md-2"> + <div class="input-group"> + <input type="text" class="form-control" name="publicationDate" + ng-model="document.publicationDate" + datepicker-popup="dd/MM/yyyy" is-open="publicationDateOpened" + ng-click="publicationDateOpened = true"/> + <span class="input-group-addon"><span class="glyphicon glyphicon-calendar" aria-hidden="true"></span></span> + </div> + </div> - <div class="col-md-5"> - <input type="text" class="form-control" name="language" - ng-model="document.language"/> </div> </div> + <!-- Summary --> <div class="form-group" ng-class="{'has-error' : documentForm.summary.$invalid && !documentForm.summary.$pristine}"> - <label class="col-md-4 control-label">Summary *</label> + <label class="col-md-2 control-label">Summary *</label> - <div class="col-md-5"> - <textarea type="text" class="form-control" name="summary" + <div class="col-md-10"> + <textarea type="text" class="form-control" name="summary" rows="5" ng-model="document.summary" required/> <p ng-show="documentForm.summary.$invalid && !documentForm.summary.$pristine" @@ -208,11 +239,12 @@ </div> </div> + <!-- Comment --> <div class="form-group" > - <label class="col-md-4 control-label">Comment</label> + <label class="col-md-2 control-label">Comment</label> - <div class="col-md-5"> - <textarea type="text" class="form-control" name="comment" + <div class="col-md-10"> + <textarea type="text" class="form-control" name="comment" rows="5" ng-model="document.comment" /> </div> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.