Преглед изворни кода

AMBARI-6996. Admin View: misc UI improvements. (yusaku)

Yusaku Sako пре 10 година
родитељ
комит
3b64d3f7c9

+ 39 - 26
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js

@@ -108,10 +108,17 @@ angular.module('ambariAdminConsole')
   };
 
   $scope.toggleUserActive = function() {
-    User.setActive($scope.user.user_name, !$scope.user.active);
+    if(!$scope.isCurrentUser){
+      User.setActive($scope.user.user_name, !$scope.user.active);
+    }
   };    
   $scope.toggleUserAdmin = function() {
-    User.setAdmin($scope.user.user_name, !$scope.user.admin);
+    if(!$scope.isCurrentUser){
+      User.setAdmin($scope.user.user_name, !$scope.user.admin)
+      .then(function() {
+        loadPrivilegies();
+      });
+    }
   };    
 
   $scope.deleteUser = function() {
@@ -123,30 +130,36 @@ angular.module('ambariAdminConsole')
   };
 
   // Load privilegies
-  User.getPrivilegies($routeParams.id).then(function(data) {
-    var privilegies = {
-      clusters: {},
-      views: {}
-    };
-    angular.forEach(data.data.items, function(privilegie) {
-      privilegie = privilegie.PrivilegeInfo;
-      if(privilegie.type === 'CLUSTER'){
-        // This is cluster
-        privilegies.clusters[privilegie.cluster_name] = privilegies.clusters[privilegie.cluster_name] || '';
-        privilegies.clusters[privilegie.cluster_name] += privilegies.clusters[privilegie.cluster_name] ? ', ' + privilegie.permission_name : privilegie.permission_name;
-      } else if ( privilegie.type === 'VIEW'){
-        privilegies.views[privilegie.instance_name] = privilegies.views[privilegie.instance_name] || { privileges:''};
-        privilegies.views[privilegie.instance_name].version = privilegie.version;
-        privilegies.views[privilegie.instance_name].view_name = privilegie.view_name;
-        privilegies.views[privilegie.instance_name].privileges += privilegies.views[privilegie.instance_name].privileges ? ', ' + privilegie.permission_name : privilegie.permission_name;
-
-      }
-    });
+  function loadPrivilegies(){
+    User.getPrivilegies($routeParams.id).then(function(data) {
+      var privilegies = {
+        clusters: {},
+        views: {}
+      };
+      angular.forEach(data.data.items, function(privilegie) {
+        privilegie = privilegie.PrivilegeInfo;
+        if(privilegie.type === 'CLUSTER'){
+          // This is cluster
+          privilegies.clusters[privilegie.cluster_name] = privilegies.clusters[privilegie.cluster_name] || '';
+          privilegies.clusters[privilegie.cluster_name] += privilegies.clusters[privilegie.cluster_name] ? ', ' + privilegie.permission_name : privilegie.permission_name;
+        } else if ( privilegie.type === 'VIEW'){
+          privilegies.views[privilegie.instance_name] = privilegies.views[privilegie.instance_name] || { privileges:''};
+          privilegies.views[privilegie.instance_name].version = privilegie.version;
+          privilegies.views[privilegie.instance_name].view_name = privilegie.view_name;
+          privilegies.views[privilegie.instance_name].privileges += privilegies.views[privilegie.instance_name].privileges ? ', ' + privilegie.permission_name : privilegie.permission_name;
+
+        }
+      });
+
+      $scope.privileges = data.data.items.length ? privilegies : null;
+      $scope.dataLoaded = true;
 
-    $scope.privileges = data.data.items.length ? privilegies : null;
-    $scope.dataLoaded = true;
+    }).catch(function(data) {
+      uiAlert.danger(data.data.status, data.data.message);
+    });
+  }
 
-  }).catch(function(data) {
-    uiAlert.danger(data.data.status, data.data.message);
-  });
+  loadPrivilegies();
+  
+    
 }]);

+ 1 - 2
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js

@@ -64,8 +64,7 @@ angular.module('ambariAdminConsole')
         url: Settings.baseUrl + '/users/' + user.user_name,
         data: {
           'Users/password': password,
-          'Users/old_password': currentUserPassword,
-          'Users/roles': user.roles[0] || 'user'
+          'Users/old_password': currentUserPassword
         }
       });
     },

+ 10 - 2
ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css

@@ -133,7 +133,7 @@
   background-color: #e6e6e6;
   cursor: not-allowed;
 }
-.btn.deleteuser-btn.disabled, .btn.deleteuser-btn[disabled]{
+.btn.deleteuser-btn.disabled, .btn.deleteuser-btn[disabled], .btn.btn-delete-instance.disabled{
   pointer-events: auto;
   cursor: not-allowed;
   background-color: #e6e6e6;
@@ -251,8 +251,13 @@
   top: 30px;
 }
 .groups-pane .search-container .close{
-  top: 5px;
+  top: 30px;
 }
+.views-list-table .search-container .close{
+  top: 5px;
+  right: 50px;
+  z-index: 10;
+} 
 .views-list-pane .search-container .close{
   right: 50px;
   top: 5px;
@@ -337,6 +342,9 @@ table.no-border tr td{
 .top-margin-4{
   margin-top: 4px;
 }
+.table > thead > tr > th.vertical-top{
+  vertical-align: top;
+}
 
 .groups-pane table ul{
   list-style-type: none;

+ 3 - 3
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html

@@ -63,18 +63,18 @@
       ng-class="{'has-error' : ( (form.isntanceCreateForm.displayLabel.$error.required || form.isntanceCreateForm.displayLabel.$error.pattern) && form.isntanceCreateForm.submitted)}">
         <label for="" class="control-label col-sm-2">Display Label</label>
         <div class="col-sm-10">
-          <input type="text" class="form-control instancelabel-input" name="displayLabel" ng-model="instance.label" required ng-pattern="nameValidationPattern" autocomplete="off">
+          <input type="text" class="form-control instancelabel-input" name="displayLabel" ng-model="instance.label" required ng-pattern="/^([a-zA-Z0-9._\s]+)$/" autocomplete="off">
 
           <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm.displayLabel.$error.required && form.isntanceCreateForm.submitted'>
             This field is required.
           </div>
           <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm.displayLabel.$error.pattern && form.isntanceCreateForm.submitted'>
-            Must not contain any special characters or spaces.
+            Must not contain any special characters.
           </div>
         </div>
       </div>
       <div class="form-group" ng-class="{'has-error' : form.isntanceCreateForm.description.$error.required && form.isntanceCreateForm.submitted }">
-        <label for="" class="control-label col-sm-2">Instance Description</label>
+        <label for="" class="control-label col-sm-2">Description</label>
         <div class="col-sm-10">
           <input type="text" class="form-control" name="description" ng-model="instance.description" maxlength="140" required>
           <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm.description.$error.required && form.isntanceCreateForm.submitted'>

+ 55 - 40
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html

@@ -20,8 +20,9 @@
     <li><a href="#/views">Views</a></li>
     <li class="active">{{instance.ViewInstanceInfo.label}}</li>
   </ol>
-  <div class="pull-right top-margin-4">
-    <button class="btn btn-danger" ng-click="deleteInstance(instance)">Delete Instance</button>
+  <div class="pull-right top-margin-4" ng-switch="instance.ViewInstanceInfo.static">
+    <button ng-switch-when="true" class="btn disabled btn-default btn-delete-instance" tooltip="Cannot Delete Static Instances">Delete Instance</button>
+    <button ng-switch-when="false" class="btn btn-danger" ng-click="deleteInstance(instance)">Delete Instance</button>
   </div>
 </div>
 <hr>
@@ -30,7 +31,7 @@
     <h3 class="panel-title pull-left">Settings</h3>
     <div class="pull-right" ng-switch="instance.ViewInstanceInfo.static">
       <a href ng-switch-when="false" ng-click="toggleSettingsEdit()" ng-show="editSettingsDisabled" class="settings-edit-toggle"> <span class="glyphicon glyphicon-pencil" ></span> Edit</a>
-      <a href ng-switch-when="true" class="settings-edit-toggle disabled" tooltip="You can`t edit XML driven instances"> <span class="glyphicon glyphicon-pencil" ></span> Edit</a>
+      <a href ng-switch-when="true" class="settings-edit-toggle disabled" tooltip="Cannot Edit Static Instances"> <span class="glyphicon glyphicon-pencil" ></span> Edit</a>
     </div>
   </div>
   <div class="panel-body">
@@ -48,17 +49,20 @@
           <label for="" class="col-sm-2 control-label">Instance Name</label>
           <div class="col-sm-10"><input disabled="disabled" type="text" class="form-control instancename-input" placeholder="Display Name" value="{{instance.ViewInstanceInfo.instance_name}}"></div>
         </div>
-        <div class="form-group" ng-class="{'has-error' : settingsForm.displayName.$error.required && !editSettingsDisabled}">
+        <div class="form-group" ng-class="{'has-error' : (settingsForm.displayName.$error.required || settingsForm.displayName.$error.pattern) && !editSettingsDisabled}">
           <label for="" class="col-sm-2 control-label">Display Name</label>
           <div class="col-sm-10">
-            <input type="text" class="form-control instancename-input" placeholder="Display Name" name="displayName" required ng-model="settings.label">
+            <input type="text" class="form-control instancename-input" placeholder="Display Name" name="displayName" required ng-model="settings.label" ng-pattern="/^([a-zA-Z0-9._\s]+)$/">
             <div class="alert alert-danger no-margin-bottom top-margin" ng-show='settingsForm.displayName.$error.required  && !editSettingsDisabled'>
               This field is required.
             </div>
+            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='settingsForm.displayName.$error.pattern && !editSettingsDisabled'>
+              Must not contain any special characters.
+            </div>
           </div>
         </div>
         <div class="form-group" ng-class="{'has-error' : settingsForm.description.$error.required  && !editSettingsDisabled}">
-          <label for="" class="control-label col-sm-2">Instance Description</label>
+          <label for="" class="control-label col-sm-2">Description</label>
           <div class="col-sm-10">
             <input type="text" class="form-control" ng-model="settings.description" name="description" placeholder="Instance Description" required>
             <div class="alert alert-danger no-margin-bottom top-margin" ng-show='settingsForm.description.$error.required  && !editSettingsDisabled'>
@@ -94,41 +98,52 @@
     </div>
   </div>
   <div class="panel-body">
-    <form class="form-horizontal" ng-show="!isPermissionsEmpty">
-      <div class="form-group">
-        <div class="col-sm-2"></div>
-        <label class="col-sm-5 control-label text-left">Users</label>
-        <label class="col-sm-5 control-label text-left">Groups</label>
-      </div>
-      <div class="form-group" ng-repeat="permission in permissions">
-        <label class="col-sm-2 control-label">{{permission.PermissionInfo.permission_name}}</label>
-        <div class="col-sm-5" ng-switch="editPermissionDisabled">
-          <textarea name="" id="" cols="30" rows="4" class="form-control permission-textarea-user" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER" ng-switch-when="false"></textarea>
-          <div class="well" ng-switch-when="true">
-            <span ng-repeat="user in permission.USER">
-              <link-to route="users.show" id="{{user}}">{{user}}</link-to>
-              {{$last ? '' :', '}}
-            </span>
-          </div>
-        </div>
-        <div class="col-sm-5" ng-switch="editPermissionDisabled">
-          <textarea name="" id="" cols="30" rows="4" class="form-control permission-textarea-group" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" ng-switch-when="false"></textarea>
-          <div class="well" ng-switch-when="true">
-            <span ng-repeat="group in permission.GROUP">
-              <link-to route="groups.edit" id="{{group}}" >{{group}}</link-to>
-              {{$last ? '' :', '}}
-            </span>
-          </div>
-        </div>
-      </div>
-      
-      <div class="form-group" ng-hide="editPermissionDisabled">
-        <div class="col-sm-offset-2 col-sm-10">
-          <button class="btn btn-primary pull-right left-margin permissions-save" ng-click="savePermissions()">Save</button>
-          <button class="btn btn-default pull-right permissions-cancel" ng-click="cancelPermissions()">Cancel</button>
-        </div>
+    
+
+    <table class="table" ng-show="!isPermissionsEmpty">
+      <thead>
+        <tr>
+          <th class="col-sm-2"><label>Permission</label></th>
+          <th><label>Grant permission to these users</label></th>
+          <th><label>Grant permission to these groups</label></th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr ng-repeat="permission in permissions">
+          <td>
+            <label class="">{{permission.PermissionInfo.permission_name}}</label>
+          </td>
+          <td>
+            <div class="" ng-switch="editPermissionDisabled">
+              <textarea name="" id="" cols="30" rows="4" class="form-control permission-textarea-user" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER" ng-switch-when="false"></textarea>
+              <div class="well" ng-switch-when="true">
+                <span ng-repeat="user in permission.USER">
+                  <link-to route="users.show" id="{{user}}">{{user}}</link-to>
+                  {{$last ? '' :', '}}
+                </span>
+              </div>
+            </div>
+          </td>
+          <td>
+            <div class="" ng-switch="editPermissionDisabled">
+              <textarea name="" id="" cols="30" rows="4" class="form-control permission-textarea-group" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" ng-switch-when="false"></textarea>
+              <div class="well" ng-switch-when="true">
+                <span ng-repeat="group in permission.GROUP">
+                  <link-to route="groups.edit" id="{{group}}" >{{group}}</link-to>
+                  {{$last ? '' :', '}}
+                </span>
+              </div>
+            </div>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <div class="form-group" ng-hide="editPermissionDisabled">
+      <div class="col-sm-offset-2 col-sm-10">
+        <button class="btn btn-primary pull-right left-margin permissions-save" ng-click="savePermissions()">Save</button>
+        <button class="btn btn-default pull-right permissions-cancel" ng-click="cancelPermissions()">Cancel</button>
       </div>
-    </form>
+    </div>
     <div ng-show="isPermissionsEmpty">
       <div class="alert alert-info">There are no permissions defined for this view.</div>
     </div>

+ 0 - 81
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/list.html

@@ -1,81 +0,0 @@
-<!--
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
--->
-    
-<div class="views-list-pane">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">Views</li>
-    </ol>
-    <div class="pull-right col-sm-4">
-      <div class="input-group search-container">
-        <input type="text" class="form-control search-input" placeholder="Search" ng-model="viewsFilter" ng-change="getFilteredViews()">
-        <button type="button" class="close clear-search" ng-show="viewsFilter" ng-click="viewsFilter=''; getFilteredViews()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
-        <span class="input-group-addon">
-          <span class="glyphicon glyphicon-search"></span>
-        </span>
-      </div>
-    </div>
-  </div>
-  <hr>
-  <div class="row">
-    <div class="col-sm-3 padding-left-30"><h4>View Name</h4></div>
-    <div class="col-sm-3"><h4>Versions</h4></div>
-    <div class="col-sm-3"><h4>Instances</h4></div>
-    <div class="col-sm-3"><h4>Description</h4></div>
-  </div>
-  <accordion>
-    <accordion-group ng-repeat="view in filteredViews" is-open="open">
-      <accordion-heading>
-        <div class="row">
-          <div class="col-sm-3">
-            <i class="glyphicon glyphicon-chevron-right" ng-class="{'opened': open}"></i>
-            {{view.view_name}}
-          </div>
-          <div class="col-sm-3">{{view.versions}}</div>
-          <div class="col-sm-3">{{view.instances.length ? view.instances.length : 'No'}} instances</div>
-          <div class="col-sm-3">This is a description</div>
-        </div>
-      </accordion-heading>
-      <table class="table">
-        <tbody>
-          <tr ng-repeat="instance in view.instances">
-            <td class="col-sm-3"></td>
-            <td class="col-sm-3">{{instance.ViewInstanceInfo.version}}</td>
-            <td class="col-sm-3">
-              <a href="#/views/{{view.view_name}}/versions/{{instance.ViewInstanceInfo.version}}/instances/{{instance.ViewInstanceInfo.instance_name}}/edit" class="instance-link">{{instance.ViewInstanceInfo.label}}</a>
-            </td>
-            <td class="col-sm-3">
-            </td>
-          </tr>
-        </tbody>
-        <tfoot>
-          <tr>
-            <td class="col-sm-3"></td>
-            <td class="col-sm-3"></td>
-            <td class="col-sm-3">
-              <a class="btn btn-default createisntance-btn" href="#/views/{{view.view_name}}/versions/{{view.versionsList[view.versionsList.length-1].ViewVersionInfo.version}}/new"><span class="glyphicon glyphicon-plus" ></span> Create Instance</a>
-            </td>
-            <td class="col-sm-3">
-            </td>
-          </tr>
-        </tfoot>
-      </table>
-    </accordion-group>
-
-  </accordion>
-</div>

+ 1 - 1
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html

@@ -35,7 +35,7 @@
   <div class="row">
     <div class="col-sm-3 padding-left-30"><h4>View Name</h4></div>
     <div class="col-sm-3"><h4>Instances</h4></div>
-    <div class="col-sm-6"><h4>Description</h4></div>
+    <div class="col-sm-6"><h4></h4></div>
   </div>
   <accordion close-others="false">
     <accordion-group ng-repeat="view in filteredViews" is-open="view.isOpened">

+ 42 - 33
ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html

@@ -22,41 +22,50 @@
       <li class="active">{{clusterName}} Permissions</li>
     </ol>
     <div class="pull-right top-margin-4">
-      <a href class="btn btn-primary"  ng-click="toggleEditMode()"><span class="glyphicon glyphicon-pencil"></span> Edit</a>
+      <a href class="btn btn-primary"  ng-hide="isEditMode" ng-click="toggleEditMode()"><span class="glyphicon glyphicon-pencil"></span> Edit</a>
     </div>
   </div>
   <hr>
-  <form class="form-horizontal">
-    <div class="form-group">
-      <div class="col-sm-2"></div>
-      <label class="col-sm-5 control-label text-left">Users</label>
-      <label class="col-sm-5 control-label text-left">Groups</label>
-    </div>
-    <div class="form-group" ng-repeat="permission in permissions">
-      <label class="col-sm-2 control-label">{{permission.PermissionInfo.permission_name}}</label>
-      <div class="col-sm-5" ng-switch="isEditMode">
-        <textarea ng-switch-when="true" name="" id="" cols="30" rows="4" class="form-control permission-user-input" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER"></textarea>
-        <div class="well" ng-switch-default>
-          <span ng-repeat="user in permission.USER">
-            <link-to route="users.show" id="{{user}}" >{{user}}</link-to>
-            {{$last ? '' :', '}}
-          </span>
-        </div>
-      </div>
-      <div class="col-sm-5" ng-switch="isEditMode">
-        <textarea ng-switch-when="true" name="" id="" cols="30" rows="4" class="form-control permission-group-input" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP"></textarea>
-        <div class="well" ng-switch-default>
-          <span ng-repeat="group in permission.GROUP">
-            <link-to route="groups.edit" id="{{group}}">{{group}}</link-to>
-            {{$last ? '' :', '}}
-          </span>
-        </div>
-      </div>
-    </div>
-    <div class="form-group" ng-show="isEditMode">
-      <div class="col-sm-offset-2 col-sm-10">
-        <button class="btn btn-default pull-right left-margin permissions-cancel" ng-click="cancel()">Cancel</button>
-        <button class="btn btn-primary pull-right permission-save" ng-click="save()">Save</button>
-      </div>
+  <table class="table">
+    <thead>
+      <tr>
+        <th class="col-sm-2"><label>Permission</label></th>
+        <th><label>Grant permission to these users</label></th>
+        <th><label>Grant permission to these groups</label></th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr ng-repeat="permission in permissions">
+        <td><label class="">{{permission.PermissionInfo.permission_name}}</label></td>
+        <td>
+          <div class="" ng-switch="isEditMode">
+            <textarea ng-switch-when="true" name="" id="" cols="30" rows="4" class="form-control permission-user-input" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER"></textarea>
+            <div class="well" ng-switch-default>
+              <span ng-repeat="user in permission.USER">
+                <link-to route="users.show" id="{{user}}" >{{user}}</link-to>
+                {{$last ? '' :', '}}
+              </span>
+            </div>
+          </div>
+        </td>
+        <td>
+          <div class="" ng-switch="isEditMode">
+            <textarea ng-switch-when="true" name="" id="" cols="30" rows="4" class="form-control permission-group-input" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP"></textarea>
+            <div class="well" ng-switch-default>
+              <span ng-repeat="group in permission.GROUP">
+                <link-to route="groups.edit" id="{{group}}">{{group}}</link-to>
+                {{$last ? '' :', '}}
+              </span>
+            </div>
+          </div>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+  <div class="form-group" ng-show="isEditMode">
+    <div class="col-sm-offset-2 col-sm-10">
+      <button class="btn btn-primary pull-right permission-save left-margin" ng-click="save()">Save</button>
+      <button class="btn btn-default pull-right permissions-cancel" ng-click="cancel()">Cancel</button>
     </div>
+  </div>
 </div>

+ 7 - 3
ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html

@@ -27,7 +27,7 @@
   <hr>
   <table class="table table-striped table-hover col-sm-12">
     <thead>
-      <tr>
+      <!-- <tr>
         <th>
           <label for="">Group Name</label>
         </th>
@@ -35,22 +35,26 @@
           <label for="">Type</label>
         </th>
         <th><label for="">Members</label></th>
-      </tr>
+      </tr> -->
       <tr>
         <th class="col-sm-8">
           <div class="search-container">
+            <label for="">Group Name</label>
             <input type="text" class="form-control namefilter" ng-model="currentNameFilter" ng-change="resetPagination()">
             <button type="button" class="close" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
           </div>
         </th>
         <th class="col-sm-2">
+          <label for="">Type</label>
           <select class="form-control typefilter"
             ng-model="currentTypeFilter"
             ng-options="item.label for item in typeFilterOptions"
             ng-change="resetPagination();">
           </select>
         </th>
-        <th class="col-sm-2"></th>
+        <th class="col-sm-2 vertical-top">
+          <label for="">Members</label>
+        </th>
       </tr>
     </thead>
     <tbody>

+ 1 - 1
ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html

@@ -117,7 +117,7 @@
             </tr>
           </tbody>
         </table>
-        <div class="alert alert-info" ng-show="!privileges">This user does not have any privileges.</div>
+        <div class="alert alert-info" ng-show="!privileges && !user.admin">This user does not have any privileges.</div>
         <div class="alert alert-info" ng-show="user.admin">This user is an Ambari Admin and has all privileges.</div>
       </div>
     </div>

+ 3 - 1
ambari-web/app/controllers/global/cluster_controller.js

@@ -385,7 +385,9 @@ App.ClusterController = Em.Controller.extend({
             instanceName: instance.ViewInstanceInfo.instance_name,
             href: instance.ViewInstanceInfo.context_path
           });
-          self.get('ambariViews').pushObject(current_instance);
+          if( current_instance.visible){
+            self.get('ambariViews').pushObject(current_instance);
+          }
         }, this);
       }, this);
     }, this);