You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/08/25 14:32:34 UTC
[09/22] git commit: AMBARI-6996. Admin View: misc UI improvements.
(yusaku)
AMBARI-6996. Admin View: misc UI improvements. (yusaku)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3b64d3f7
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3b64d3f7
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3b64d3f7
Branch: refs/heads/branch-alerts-dev
Commit: 3b64d3f7c9c850492e99208f364d924051e72286
Parents: a1ab301
Author: Yusaku Sako <yu...@hortonworks.com>
Authored: Fri Aug 22 12:26:56 2014 -0700
Committer: Yusaku Sako <yu...@hortonworks.com>
Committed: Fri Aug 22 13:16:04 2014 -0700
----------------------------------------------------------------------
.../scripts/controllers/users/UsersShowCtrl.js | 65 ++++++++------
.../ui/admin-web/app/scripts/services/User.js | 3 +-
.../resources/ui/admin-web/app/styles/main.css | 12 ++-
.../admin-web/app/views/ambariViews/create.html | 6 +-
.../admin-web/app/views/ambariViews/edit.html | 95 +++++++++++---------
.../admin-web/app/views/ambariViews/list.html | 81 -----------------
.../app/views/ambariViews/listTable.html | 2 +-
.../app/views/clusters/manageAccess.html | 75 +++++++++-------
.../ui/admin-web/app/views/groups/list.html | 10 ++-
.../ui/admin-web/app/views/users/show.html | 2 +-
.../controllers/global/cluster_controller.js | 4 +-
11 files changed, 162 insertions(+), 193 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
index f5fa89f..ee61cb1 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
+++ b/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();
+
+
}]);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js
index b49a2ce..9c2e36a 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js
+++ b/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
}
});
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css b/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
index fd85def..4cfe0bd 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
+++ b/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;
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/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 d63a267..ba01520 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
@@ -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'>
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/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 63bbcb2..857957d 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
@@ -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>
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/list.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/list.html
deleted file mode 100644
index 2c26791..0000000
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/list.html
+++ /dev/null
@@ -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">×</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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html
index e5963ef..a166c10 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html
+++ b/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">
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
index 47ae621..c6954ca 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
+++ b/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>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
index ed8de4a..b809b7b 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html
+++ b/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">×</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>
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html
index b87da82..1ba09d3 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html
+++ b/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>
http://git-wip-us.apache.org/repos/asf/ambari/blob/3b64d3f7/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index 31d9901..6a6cdd2 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/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);