AMBARI-10250. Views: Property validation not fully works during editing (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/59c24852 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/59c24852 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/59c24852 Branch: refs/heads/trunk Commit: 59c248521169e9752596eb78e76f52a411567b7a Parents: 6ef5786 Author: Alex Antonenko <[email protected]> Authored: Fri Mar 27 19:33:46 2015 +0200 Committer: Alex Antonenko <[email protected]> Committed: Fri Mar 27 21:51:59 2015 +0200 ---------------------------------------------------------------------- .../controllers/ambariViews/ViewsEditCtrl.js | 17 ++++++++++------- .../ui/admin-web/app/views/ambariViews/create.html | 2 +- .../ui/admin-web/app/views/ambariViews/edit.html | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/59c24852/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js index 8e720a6..cbf3b0c 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js @@ -77,7 +77,7 @@ angular.module('ambariAdminConsole') } $scope.permissions = []; - + reloadViewPrivileges(); $scope.editSettingsDisabled = true; @@ -118,7 +118,7 @@ angular.module('ambariAdminConsole') $scope.settingsForm.$setPristine(); }; - + $scope.editConfigurationDisabled = true; $scope.togglePropertiesEditing = function () { $scope.editConfigurationDisabled = !$scope.editConfigurationDisabled; @@ -132,7 +132,7 @@ angular.module('ambariAdminConsole') } }; $scope.saveConfiguration = function() { - if( $scope.propertiesForm.$valid ){ + return View.updateInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId, { 'ViewInstanceInfo':{ 'properties': $scope.configuration @@ -143,7 +143,11 @@ angular.module('ambariAdminConsole') $scope.propertiesForm.$setPristine(); }) .catch(function(data) { - var errorMessage = data.statusText; + var errorMessage = data.data.message; + + //TODO: maybe the BackEnd should sanitize the string beforehand? + errorMessage = errorMessage.substr(errorMessage.indexOf("\{")); + if (data.status >= 400) { try { var errorObject = JSON.parse(errorMessage); @@ -160,8 +164,7 @@ angular.module('ambariAdminConsole') } Alert.error('Cannot save properties', errorMessage); }); - } - }; + }; $scope.cancelConfiguration = function() { $scope.configuration = angular.copy($scope.configurationBeforeEdit); $scope.editConfigurationDisabled = true; @@ -198,7 +201,7 @@ angular.module('ambariAdminConsole') if(newValue){ $scope.savePermissions(); } - }, true); + }, true); $scope.deleteInstance = function(instance) { ConfirmationModal.show('Delete View Instance', 'Are you sure you want to delete View Instance '+ instance.ViewInstanceInfo.label +'?').then(function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/59c24852/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html index 4d0b87a..772abae 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html @@ -109,7 +109,7 @@ <input type="checkbox" class="viewproperty-input" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter"> </div> <div class="col-sm-9" ng-switch-default> - <input type="{{parameter.masked ? 'password' : 'text'}}" class="form-control viewproperty-input" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value" autocomplete="off" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter" placeholder="{{parameter.placeholder}}"> + <input type="{{parameter.masked ? 'password' : 'text'}}" class="form-control viewproperty-input" name="{{parameter.name}}" ng-change="form.instanceCreateForm[parameter.name].validationError=''" ng-required="parameter.required" ng-model="parameter.value" autocomplete="off" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter" placeholder="{{parameter.placeholder}}"> <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'> This field is required. </div> http://git-wip-us.apache.org/repos/asf/ambari/blob/59c24852/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html index bf14adf..910b2ad 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html @@ -95,7 +95,7 @@ <h3 class="panel-title pull-left">Permissions</h3> </div> <div class="panel-body"> - + <table class="table" ng-show="!isPermissionsEmpty"> <thead> @@ -143,7 +143,7 @@ <input type="checkbox" class="propertie-input" ng-disabled="editConfigurationDisabled" name="{{property.name}}" ng-model="configuration[property.name]" ng-true-value="true" ng-false-value="false" popover="{{property.description}}" popover-title="{{property.name}}" popover-trigger="mouseenter"> </div> <div class="col-sm-9" ng-switch-default> - <input type="{{property.masked ? 'password' : 'text'}}" class="form-control propertie-input" ng-required="property.required" ng-disabled="editConfigurationDisabled" name="{{property.name}}" ng-model="configuration[property.name]" popover="{{property.description}}" popover-title="{{property.name}}" popover-trigger="mouseenter" placeholder="{{property.placeholder}}"> + <input type="{{property.masked ? 'password' : 'text'}}" class="form-control propertie-input" ng-required="property.required" ng-change="propertiesForm[property.name].validationError=''" ng-disabled="editConfigurationDisabled" name="{{property.name}}" ng-model="configuration[property.name]" popover="{{property.description}}" popover-title="{{property.name}}" popover-trigger="mouseenter" placeholder="{{property.placeholder}}"> <div class="alert alert-danger no-margin-bottom top-margin" ng-show='property.required && propertiesForm[property.name].$error.required && !editConfigurationDisabled'> This field is required. </div>
