Repository: ambari Updated Branches: refs/heads/trunk b7f9612b5 -> 64ed974ae
AMBARI-6823. Admin View: various 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/64ed974a Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/64ed974a Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/64ed974a Branch: refs/heads/trunk Commit: 64ed974aea6a67ee9a2d95d5a7bdea38ed19236d Parents: b7f9612b Author: Yusaku Sako <[email protected]> Authored: Mon Aug 11 14:33:30 2014 -0700 Committer: Yusaku Sako <[email protected]> Committed: Mon Aug 11 14:33:30 2014 -0700 ---------------------------------------------------------------------- .../main/resources/ui/admin-web/app/index.html | 2 +- .../app/scripts/controllers/NavbarCtrl.js | 4 +- .../controllers/ambariViews/ViewsEditCtrl.js | 1 - .../clusters/ClustersManageAccessCtrl.js | 1 - .../controllers/groups/GroupsListCtrl.js | 2 +- .../controllers/users/UsersCreateCtrl.js | 3 +- .../scripts/controllers/users/UsersShowCtrl.js | 9 +- .../ui/admin-web/app/scripts/services/Auth.js | 4 + .../admin-web/app/scripts/services/Cluster.js | 7 ++ .../app/scripts/services/PermissionsSaver.js | 40 ++++++++- .../ui/admin-web/app/scripts/services/User.js | 5 -- .../ui/admin-web/app/scripts/services/View.js | 10 +++ .../resources/ui/admin-web/app/styles/main.css | 47 +++++++++- .../admin-web/app/views/ambariViews/create.html | 16 ++-- .../admin-web/app/views/ambariViews/edit.html | 28 +++--- .../admin-web/app/views/ambariViews/list.html | 9 +- .../app/views/clusters/manageAccess.html | 8 +- .../ui/admin-web/app/views/groups/create.html | 12 ++- .../ui/admin-web/app/views/groups/edit.html | 11 +-- .../ui/admin-web/app/views/groups/list.html | 18 ++-- .../ui/admin-web/app/views/leftNavbar.html | 90 ++++++++++---------- .../ui/admin-web/app/views/users/create.html | 17 ++-- .../ui/admin-web/app/views/users/list.html | 13 +-- .../ui/admin-web/app/views/users/show.html | 13 +-- .../src/main/resources/ui/admin-web/gulpfile.js | 12 --- .../main/resources/ui/admin-web/package.json | 4 +- 26 files changed, 241 insertions(+), 145 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/index.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/index.html b/ambari-admin/src/main/resources/ui/admin-web/app/index.html index cccd914..c957f8d 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/index.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/index.html @@ -89,7 +89,7 @@ <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script> <script src="bower_components/lodash/dist/lodash.compat.js"></script> <script src="bower_components/restangular/dist/restangular.js"></script> - <script src="bower_components/angular-bootstrap-toggle-switch/angular-toggle-switch.js"></script> + <script src="bower_components/angular-bootstrap-toggle-switch/angular-toggle-switch.min.js"></script> <!-- endbower --> <!-- endbuild --> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js index 1255f3b..fee4a6b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js @@ -38,8 +38,8 @@ angular.module('ambariAdminConsole') $scope.isLDAPConfigured = false; $scope.ldapData = {}; LDAP.get().then(function(data) { - $scope.ldapData = data; - $scope.isLDAPConfigured = data['LDAP']['configured']; + $scope.ldapData = data.data; + $scope.isLDAPConfigured = data.data['LDAP']['configured']; }); $scope.syncLDAP = function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 b55e157..82d2b8c 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 @@ -114,7 +114,6 @@ angular.module('ambariAdminConsole') $scope.savePermissions = function() { PermissionSaver.saveViewPermissions( - $scope.permissions, $scope.permissionsEdit, { view_name: $routeParams.viewId, http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js index c880052..5c13d5d 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js @@ -49,7 +49,6 @@ angular.module('ambariAdminConsole') $scope.save = function() { PermissionSaver.saveClusterPermissions( - $scope.permissions, $scope.permissionsEdit, { clusterId: $routeParams.id, http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js index dea8b3c..39ae55b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js @@ -35,7 +35,7 @@ angular.module('ambariAdminConsole') }; Group.all().then(function(groups) { - $scope.groups = groups; + $scope.groups = groups; }) .catch(function(data) { console.error('Get groups list error'); http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js index e41115a..f46d45b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js @@ -26,7 +26,8 @@ angular.module('ambariAdminConsole') if ($scope.form.$valid){ User.create({ 'Users/user_name': $scope.user.user_name, - 'Users/password': $scope.user.password + 'Users/password': $scope.user.password, + 'Users/active': !!$scope.user.active }).then(function() { $location.path('/users'); }).catch(function(data) {; http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 ad6a7e3..3285b13 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 @@ -18,8 +18,9 @@ 'use strict'; angular.module('ambariAdminConsole') -.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'uiAlert', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, uiAlert) { +.controller('UsersShowCtrl', ['$scope', '$routeParams', 'User', '$modal', '$location', 'ConfirmationModal', 'uiAlert', 'Auth', function($scope, $routeParams, User, $modal, $location, ConfirmationModal, uiAlert, Auth) { $scope.user = {}; + $scope.isCurrentUser = true; $scope.isGroupEditing = false; $scope.enableGroupEditing = function() { @@ -32,6 +33,11 @@ angular.module('ambariAdminConsole') $scope.isGroupEditing = false; }; + $scope.cancelUpdate = function() { + $scope.isGroupEditing = false; + $scope.editingGroupsList = ''; + }; + $scope.openChangePwdDialog = function() { var modalInstance = $modal.open({ templateUrl: 'views/users/modals/changePassword.html', @@ -74,6 +80,7 @@ angular.module('ambariAdminConsole') User.get($routeParams.id).then(function(data) { $scope.user = data.Users; + $scope.isCurrentUser = $scope.user.user_name === Auth.getCurrentUser(); }); $scope.deleteUser = function() { http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Auth.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Auth.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Auth.js index bffd5c7..93377b9 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Auth.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Auth.js @@ -19,12 +19,16 @@ angular.module('ambariAdminConsole') .factory('Auth',['$http', 'Settings', function($http, Settings) { + var currentUserName = JSON.parse(localStorage.ambari).app.loginName; return { signout: function() { return $http({ method: 'GET', url: Settings.baseUrl + '/logout' }); + }, + getCurrentUser: function() { + return currentUserName; } }; }]); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js index bfc983e..4435dda 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js @@ -86,6 +86,13 @@ angular.module('ambariAdminConsole') data: data }); }, + updatePrivileges: function(params, privileges) { + return $http({ + method: 'PUT', + url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges', + data: privileges + }); + }, deletePrivilege: function(clusterId, permissionName, principalType, principalName) { return $http({ method: 'DELETE', http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js index e9aeec5..51b96e4 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/PermissionsSaver.js @@ -37,8 +37,42 @@ angular.module('ambariAdminConsole') return result; }; + function savePermissionsFor(resource, permissions, params){ + var deferred = $q.defer(); + var arr = []; + + angular.forEach(permissions, function(permission) { + // Sanitaize input + var users = permission.USER.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()}); + var groups = permission.GROUP.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()}); + // Build array + arr = arr.concat(users.map(function(user) { + return { + 'PrivilegeInfo':{ + 'permission_name': permission.PermissionInfo.permission_name, + 'principal_name': user, + 'principal_type': 'USER' + } + } + })); + + arr = arr.concat(groups.map(function(group) { + return { + 'PrivilegeInfo':{ + 'permission_name': permission.PermissionInfo.permission_name, + 'principal_name': group, + 'principal_type': 'GROUP' + } + } + })); + }); + + resource.updatePrivileges(params, arr); + + return deferred.promise; + } - function savePermissionsFor(resource, oldPermissions, newPermissions, params){ + function savePermissionsForOld(resource, oldPermissions, newPermissions, params){ var deferred = $q.defer(); var addArr = []; @@ -119,8 +153,8 @@ angular.module('ambariAdminConsole') saveClusterPermissions: function(oldPermissions, newPermissions, params) { return savePermissionsFor(Cluster, oldPermissions, newPermissions, params); }, - saveViewPermissions: function(oldPermissions, newPermissions, params) { - return savePermissionsFor(View, oldPermissions, newPermissions, params); + saveViewPermissions: function(permissions, params) { + return savePermissionsFor(View, permissions, params); } }; }]); http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 47afce5..e36f1a6 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 @@ -57,11 +57,6 @@ angular.module('ambariAdminConsole') 'Users/roles': user.roles[0] || 'user' } }); - // return Restangular.one('users', user.user_name).customPUT({ - // 'Users/password': password, - // 'Users/old_password': currentUserPassword, - // 'Users/roles': user.roles[0] || 'user' - // }); }, delete: function(userId) { return Restangular.one('users', userId).remove(); http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js index f0f6011..9e45df0 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js @@ -128,6 +128,8 @@ angular.module('ambariAdminConsole') return deferred.promise; }; + + View.getVersions = function(viewName) { var deferred = $q.defer(); @@ -195,6 +197,14 @@ angular.module('ambariAdminConsole') }); }; + View.updatePrivileges = function(params, privileges) { + return $http({ + method: 'PUT', + url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges', + data: privileges + }); + }; + View.deletePrivilege = function(params) { return $http({ method: 'DELETE', http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 42da202..5ee2457 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 @@ -37,7 +37,7 @@ } .btn.disabled.syncldapbtn{ pointer-events: auto; - background-color: #0044cc; + background-color: #e6e6e6; } .about .logo{ @@ -59,7 +59,7 @@ padding: 0; } -.user-edit-panel .ats-switch span.switch-right{ +.user-edit-panel .ats-switch span.switch-right , .create-user-form .ats-switch span.switch-right{ background-color: #da4f49; color: white; } @@ -109,6 +109,9 @@ text-decoration: none; } +#top-nav .navbar.navbar-static-top .brand.cluster-name{ + margin-left: 10px; +} .create-view-form{ padding-bottom: 50px; @@ -123,14 +126,52 @@ margin-bottom: 20px; } +.left-navbar .panel{ + border-radius: 0; +} +.left-navbar .panel-body li{ + margin: 0 -15px; +} +.left-navbar .panel-body li a{ + border-radius: 0; + padding-left: 30px; +} +.left-navbar .panel-body li.active a{ + background: #666; + +} + +.search-container{ + position: relative; +} +.search-container .close{ + position: absolute; + right: 10px; + top: 30px; +} +.groups-pane .search-container .close{ + top: 5px; +} +.views-list-pane .search-container .close{ + right: 50px; + top: 5px; + z-index: 100; +} + + .container{ padding-left: 0; width: 940px; } + + @media (min-width: 1200px) { - .container{ + .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container{ width: 1130px; } + .container{ + width: 1170px; + } } ul.nav li > a{ http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 ce5c5f7..99277dc 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 @@ -26,7 +26,7 @@ <img src="http://placehold.it/32x32" alt="" class="icon-small"> <div class="description"> <h3>{{view.ViewVersionInfo.view_name}}</h3> - <span>{{view.ViewVersionInfo.label}} | Version: <select ng-model="version" ng-change="versionChanged()" ng-options="o as o for o in versions"></select></span> + <span>{{view.ViewVersionInfo.label}} | Version: <select ng-model="version" class="instanceversion-input" ng-change="versionChanged()" ng-options="o as o for o in versions"></select></span> </div> </div> @@ -40,7 +40,7 @@ > <label for="" class="control-labe col-sm-2">Instance name</label> <div class="col-sm-10"> - <input type="text" class="form-control" name="instanceNameInput" ng-pattern="nameValidationPattern" required ng-model="instance.instance_name"> + <input type="text" class="form-control instancename-input" name="instanceNameInput" ng-pattern="nameValidationPattern" required ng-model="instance.instance_name"> <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm.instanceNameInput.$error.required && form.isntanceCreateForm.submitted'> Field requried! @@ -57,7 +57,7 @@ ng-class="{'has-error' : ( (form.isntanceCreateForm.displayLabel.$error.required || form.isntanceCreateForm.displayLabel.$error.pattern) && form.isntanceCreateForm.submitted)}"> <label for="" class="control-labe col-sm-2">Display label</label> <div class="col-sm-10"> - <input type="text" class="form-control" name="displayLabel" ng-model="instance.label" required ng-pattern="nameValidationPattern"> + <input type="text" class="form-control instancelabel-input" name="displayLabel" ng-model="instance.label" required ng-pattern="nameValidationPattern"> <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm.displayLabel.$error.required && form.isntanceCreateForm.submitted'> Field requried! @@ -70,7 +70,7 @@ </div> <div class="form-group"> <div class="col-sm-10 col-sm-offset-2"> - <button class="btn btn-default" ng-click="isAdvancedClosed = !isAdvancedClosed">Advanced</button> + <button class="btn btn-default showAdvanced-btn" ng-click="isAdvancedClosed = !isAdvancedClosed">Advanced</button> </div> </div> <div collapse="isAdvancedClosed"> @@ -78,7 +78,7 @@ <div class="col-sm-10 col-sm-offset-2"> <div class="checkbox"> <label> - <input type="checkbox" ng-model='instance.visible'> Visible + <input type="checkbox" ng-model='instance.visible' class="visibilityCheckbox"> Visible </label> </div> </div> @@ -111,7 +111,7 @@ ng-class="{'has-error' : (form.isntanceCreateForm[parameter.name].$error.required && form.isntanceCreateForm.submitted)}" > <label for="" class="col-sm-3 control-label">{{parameter.description}}</label> <div class="col-sm-9"> - <input type="text" class="form-control" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value"> + <input type="text" class="form-control viewproperty-input" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value"> <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.isntanceCreateForm[parameter.name].$error.required && form.isntanceCreateForm.submitted'> Field requried! </div> @@ -124,8 +124,8 @@ </div> <div class="col-sm-12 "> - <button class="btn btn-primary pull-right left-margin" ng-click="save()" type="submit">Save</button> - <a href="#/views/" class="btn btn-default pull-right">Cancel</a> + <button class="btn btn-primary pull-right left-margin save-button" ng-click="save()" type="submit">Save</button> + <a href="#/views/" class="btn btn-default pull-right cancel-button">Cancel</a> </div> </form> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 20e26fd..807b3fa 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 @@ -29,7 +29,7 @@ <div class="panel-heading clearfix"> <h3 class="panel-title pull-left">Settings</h3> <div class="pull-right"> - <a href ng-click="editSettingsDisabled = !editSettingsDisabled" ng-show="editSettingsDisabled"> <span class="glyphicon glyphicon-cog"></span> Edit</a> + <a href ng-click="editSettingsDisabled = !editSettingsDisabled" ng-show="editSettingsDisabled" class="settings-edit-toggle"> <span class="glyphicon glyphicon-cog"></span> Edit</a> </div> </div> <div class="panel-body"> @@ -41,21 +41,21 @@ </div> <div class="form-group"> <label for="" class="col-sm-2 control-label">Display Name</label> - <div class="col-sm-10"><input type="text" class="form-control" placeholder="Display Name" ng-model="settings.label"></div> + <div class="col-sm-10"><input type="text" class="form-control instancename-input" placeholder="Display Name" ng-model="settings.label"></div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <div class="checkbox"> <label> - <input type="checkbox" ng-model="settings.visible"> Visible + <input type="checkbox" ng-model="settings.visible" ng-class="instancevisibility-input"> Visible </label> </div> </div> </div> <div class="form-group" ng-hide="editSettingsDisabled"> <div class="col-sm-offset-2 col-sm-10"> - <button class="btn btn-primary pull-right left-margin" ng-click="saveSettings()">Save</button> - <button class="btn btn-default pull-right" ng-click="cancelSettings()">Cancel</button> + <button class="btn btn-primary pull-right left-margin settingssave-btn" ng-click="saveSettings()">Save</button> + <button class="btn btn-default pull-right settingscancel-btn" ng-click="cancelSettings()">Cancel</button> </div> </div> </fieldset> @@ -67,7 +67,7 @@ <div class="panel-heading clearfix"> <h3 class="panel-title pull-left">Permissions</h3> <div class="pull-right" > - <a ng-hide="isPermissionsEmpty" href ng-click="editPermissionDisabled = !editPermissionDisabled" ng-show="editPermissionDisabled"> <span class="glyphicon glyphicon-cog"></span> Edit</a> + <a ng-hide="isPermissionsEmpty" href class="permissions-edit-toggle" ng-click="editPermissionDisabled = !editPermissionDisabled" ng-show="editPermissionDisabled"> <span class="glyphicon glyphicon-cog"></span> Edit</a> </div> </div> <div class="panel-body"> @@ -80,7 +80,7 @@ <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" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER" ng-switch-when="false"></textarea> + <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> @@ -91,7 +91,7 @@ </div> </div> <div class="col-sm-5" ng-switch="editPermissionDisabled"> - <textarea name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" ng-switch-when="false"></textarea> + <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> @@ -105,8 +105,8 @@ <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" ng-click="savePermissions()">Save</button> - <button class="btn btn-default pull-right" ng-click="cancelPermissions()">Cancel</button> + <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> </div> </form> @@ -120,7 +120,7 @@ <div class="panel-heading clearfix"> <h3 class="panel-title pull-left">Properties</h3> <div class="pull-right"> - <a href ng-hide="isConfigurationEmpty" ng-click="editConfigurationDisabled = !editConfigurationDisabled" ng-show="editConfigurationDisabled"> <span class="glyphicon glyphicon-cog"></span> Edit</a> + <a href ng-hide="isConfigurationEmpty" ng-click="editConfigurationDisabled = !editConfigurationDisabled" ng-show="editConfigurationDisabled" class="properties-toggle"> <span class="glyphicon glyphicon-cog"></span> Edit</a> </div> </div> <div class="panel-body"> @@ -128,12 +128,12 @@ <fieldset ng-disabled="editConfigurationDisabled"> <div class="form-group" ng-repeat="(propertyName, propertyValue) in configuration"> <label for="" class="control-label col-sm-3">{{propertyName}}</label> - <div class="col-sm-9"><input type="text" class="form-control" ng-model="configuration[propertyName]"></div> + <div class="col-sm-9"><input type="text" class="form-control propertie-input" ng-model="configuration[propertyName]"></div> </div> <div class="form-group" ng-hide="editConfigurationDisabled"> <div class="col-sm-offset-2 col-sm-10"> - <button class="btn btn-primary pull-right left-margin" ng-click="saveConfiguration()">Save</button> - <button class="btn btn-default pull-right" ng-click="cancelConfiguration()">Cancel</button> + <button class="btn btn-primary pull-right left-margin propertie-save" ng-click="saveConfiguration()">Save</button> + <button class="btn btn-default pull-right propertie-cancel" ng-click="cancelConfiguration()">Cancel</button> </div> </div> </fieldset> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 index 3da2823..8ee5343 100644 --- 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 @@ -22,8 +22,9 @@ <li class="active">Views</li> </ol> <div class="pull-right col-sm-4"> - <div class="input-group"> - <input type="text" class="form-control" placeholder="Search" ng-model="viewsFilter" ng-change="getFilteredViews()"> + <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> @@ -56,7 +57,7 @@ <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.ViewInstanceInfo.label}}</a> + <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> @@ -67,7 +68,7 @@ <td class="col-sm-3"></td> <td class="col-sm-3"></td> <td class="col-sm-3"> - <a class="btn btn-default" href="#/views/{{view.view_name}}/versions/{{view.versionsList[view.versionsList.length-1].ViewVersionInfo.version}}/new"><span class="glyphicon glyphicon-plus" ></span> Create Instance</a> + <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> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 790d73d..1faec22 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 @@ -35,7 +35,7 @@ <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" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER"></textarea> + <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> @@ -46,7 +46,7 @@ </div> </div> <div class="col-sm-5" ng-switch="isEditMode"> - <textarea ng-switch-when="true" name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP"></textarea> + <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> @@ -59,8 +59,8 @@ </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" ng-click="cancel()">Cancel</button> - <button class="btn btn-primary pull-right" ng-click="save()">Save</button> + <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> </div> </div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html index 070fd95..0bc80fe 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html @@ -17,22 +17,26 @@ --> <ol class="breadcrumb"> <li><a href="#/groups">Groups</a></li> - <li class="active">Create local group</li> + <li class="active">Create Local Group</li> </ol> <hr> <form class="form-horizontal" role="form" novalidate name="form"> - <div class="form-group" ng-class="{'has-error' : form.user_name.$error.required && form.submitted}"> + <div class="form-group" ng-class="{'has-error' : (form.user_name.$error.required || form.group_name.$error.pattern) && form.submitted}"> <label for="groupname" class="col-sm-2 control-label">Group name</label> <div class="col-sm-10"> - <input type="text" id="groupname" class="form-control" name="group_name" placeholder="Group name" ng-model="group.group_name" required> + <input type="text" id="groupname" class="form-control groupname-input" name="group_name" placeholder="Group name" ng-model="group.group_name" required ng-pattern="/^([a-zA-Z0-9._\s]+)$/"> <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.required && form.submitted"> Required </div> + <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.pattern && form.submitted"> + Must contain only simple characters. + </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> - <button class="btn btn-primary" ng-click="createGroup()">Create</button> + <button class="btn btn-primary groupcreate-btn pull-right left-margin" ng-click="createGroup()">Save</button> + <a href="#/groups/" class="btn btn-default pull-right cancel-button">Cancel</a> </div> </div> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html index 1df0739..ac5beae 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html @@ -22,17 +22,11 @@ <li class="active">{{group.group_name}}</li> </ol> <div class="pull-right top-margin-4"> - <button class="btn btn-danger" ng-click="deleteGroup(group)">Delete Group</button> + <button class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)">Delete Group</button> </div> </div> <hr> <form class="form-horizontal group-edit" role="form" novalidate name="form"> - <div class="form-group" ng-class="{'has-error' : form.user_name.$error.required && form.submitted}"> - <label for="groupname" class="col-sm-2 control-label">Group name</label> - <div class="col-sm-10"> - <input type="text" id="groupname" class="form-control" disabled="disabled" name="group_name" placeholder="User name" ng-model="group.group_name" required> - </div> - </div> <div class="form-group"> <label for="" class="col-sm-2 control-label">Type</label> <div class="col-sm-10"> @@ -55,10 +49,7 @@ <div ng-switch-when="true"> <textarea class="form-control bottom-margin" id="" ng-model="group.editingUsers"></textarea> </div> - </div> - - <button ng-show="!group.ldap_group" class="btn btn-primary pull-right" ng-click="toggleEditMode()"><span class="glyphicon {{editMode ? 'glyphicon-save' : 'glyphicon-pencil'}}"></span> {{editMode ? 'Save': 'Edit'}}</button> </div> </div> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 43493dd..7715588 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 @@ -21,7 +21,7 @@ <li class="active">Groups</li> </ol> <div class="pull-right top-margin-4"> - <link-to route="groups.create" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Create Local Group</link-to> + <link-to route="groups.create" class="btn btn-primary creategroup-btn"><span class="glyphicon glyphicon-plus"></span> Create Local Group</link-to> </div> </div> <hr> @@ -30,19 +30,22 @@ <tr> <th> <label for="">Group name</label> - </th> <th> <label for="">Type</label> </th> <th>Members</th> - <th></th> </tr> <tr> - <th><input type="text" class="form-control" ng-model="currentNameFilter"></th> <th> - <select class="form-control" + <div class="search-container"> + <input type="text" class="form-control namefilter" ng-model="currentNameFilter"> + <button type="button" class="close" ng-show="currentNameFilter" ng-click="currentNameFilter=''"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> + </div> + </th> + <th> + <select class="form-control typefilter" ng-model="currentTypeFilter" ng-options="item for item in typeFilterOptions"> </select> @@ -53,11 +56,14 @@ <tbody> <tr ng-repeat="group in groups | filter:typeFilter | filter:currentNameFilter"> <td> - <link-to route="groups.edit" id="{{group.group_name}}">{{group.group_name}}</link-to> + <link-to route="groups.edit" class="link-to-group" id="{{group.group_name}}">{{group.group_name}}</link-to> </td> <td>{{group.ldap_group ? 'LDAP' : 'Local'}}</td> <td>{{group.members.length}} {{group.members.length === 1 ? 'member' : 'members'}}</td> </tr> </tbody> </table> + <div class="alert alert-info" ng-show="!groups.length"> + No groups to display. + </div> </div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html index 9f5b116..f8973b7 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html @@ -15,54 +15,58 @@ * See the License for the specific language governing permissions and * limitations under the License. --> -<div class="panel panel-default"> - <div class="panel-heading"><span class="glyphicon glyphicon-cloud"></span> Clusters</div> - <div class="panel-body"> - <div ng-show="cluster"> - <h5>{{cluster.Clusters.cluster_name}}</h5> - <ul class="nav nav-pills nav-stacked"> - <li ng-class="{active: isActive('clusters.manageAccess')}"> - <a href="#/clusters/{{cluster.Clusters.cluster_name}}/manageAccess">Permissions</a> - </li> - <li><a href="/#/main/dashboard">Go to Dashboard</a></li> - </ul> - </div> - - <div ng-hide="cluster"> - <a href="/" class="btn btn-primary btn-block"> - <span class="glyphicon glyphicon-plus"></span> - Create a Cluster - </a> +<div class="left-navbar"> + <div class="panel panel-default"> + <div class="panel-heading"><span class="glyphicon glyphicon-cloud"></span> Clusters</div> + <div class="panel-body"> + <div ng-show="cluster"> + <h5>{{cluster.Clusters.cluster_name}}</h5> + <ul class="nav nav-pills nav-stacked"> + <li ng-class="{active: isActive('clusters.manageAccess')}"> + <a href="#/clusters/{{cluster.Clusters.cluster_name}}/manageAccess" class="permissions">Permissions</a> + </li> + <li><a href="/#/main/dashboard" class="gotodashboard">Go to Dashboard</a></li> + </ul> + </div> + + <div ng-hide="cluster"> + <a href="/" class="btn btn-primary btn-block createcluster-btn"> + <span class="glyphicon glyphicon-plus"></span> + Create a Cluster + </a> + </div> + </div> - </div> -</div> -<div class="panel panel-default"> - <div class="panel-heading"><span class="glyphicon glyphicon-th"></span> Views</div> - <div class="panel-body"> - <ul class="nav nav-pills nav-stacked"> - <li ng-class="{active: isActive('views.list')}"><link-to route="views.list">Views</link-to></li> - </ul> + <div class="panel panel-default"> + <div class="panel-heading"><span class="glyphicon glyphicon-th"></span> Views</div> + <div class="panel-body"> + <ul class="nav nav-pills nav-stacked"> + <li ng-class="{active: isActive('views.list')}"><link-to route="views.list" class="viewslist-link">Views</link-to></li> + </ul> + </div> </div> -</div> -<div class="panel panel-default"> - <div class="panel-heading"><span class="glyphicon glyphicon-user"></span> Users + Groups</div> - <div class="panel-body"> - <ul class="nav nav-pills nav-stacked"> - <li ng-class="{active: isActive('users.list')}"><link-to route="users.list">Users</link-to></li> - <li ng-class="{active: isActive('groups.list')}"><link-to route="groups.list">Groups</link-to></li> - </ul> - <hr> - <div ng-switch="isLDAPConfigured"> - <a ng-switch-when="true" href class="btn btn-primary btn-block syncldapbtn" ng-click="syncLDAP()"> - <span class="glyphicon glyphicon-transfer pulldown2"></span> Sync LDAP - </a> - <a ng-switch-default href class="btn btn-primary btn-block syncldapbtn disabled" popover="LDAP is not configured. To configure LDAP, run ambari-server setup-ldap from the command line." popover-trigger="mouseenter"> - <span class="glyphicon glyphicon-transfer pulldown2"></span> Sync LDAP - </a> + <div class="panel panel-default"> + <div class="panel-heading"><span class="glyphicon glyphicon-user"></span> User + Group Management</div> + <div class="panel-body"> + <ul class="nav nav-pills nav-stacked"> + <li ng-class="{active: isActive('users.list')}"><link-to route="users.list" class="userslist-link">Users</link-to></li> + <li ng-class="{active: isActive('groups.list')}"><link-to route="groups.list" class="groupslist-link">Groups</link-to></li> + </ul> + <hr> + <div ng-switch="isLDAPConfigured"> + <a ng-switch-when="true" href class="btn btn-primary btn-block syncldapbtn" ng-click="syncLDAP()"> + <span class="glyphicon glyphicon-transfer pulldown2"></span> Sync LDAP + </a> + <a ng-switch-default href class="btn btn-default btn-block syncldapbtn disabled" popover="LDAP is not configured. To configure LDAP, run ambari-server setup-ldap from the command line." popover-trigger="mouseenter"> + <span class="glyphicon glyphicon-transfer pulldown2"></span> Sync LDAP + </a> + </div> + </div> - </div> + </div> + \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html index b37e54b..4c48c53 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html @@ -17,14 +17,14 @@ --> <ol class="breadcrumb"> <li><a href="#/users">Users</a></li> - <li class="active">Create local user</li> + <li class="active">Create Local User</li> </ol> <hr> -<form class="form-horizontal" role="form" novalidate name="form"> +<form class="form-horizontal create-user-form" role="form" novalidate name="form"> <div class="form-group" ng-class="{'has-error' : form.user_name.$error.required && form.submitted}"> - <label for="username" class="col-sm-2 control-label">User name</label> + <label for="username" class="col-sm-2 control-label">Username</label> <div class="col-sm-10"> - <input type="text" id="username" class="form-control" name="user_name" placeholder="User name" ng-model="user.user_name" required> + <input type="text" id="username" class="form-control username-input" name="user_name" placeholder="User name" ng-model="user.user_name" required> <div class="alert alert-danger top-margin" ng-show="form.user_name.$error.required && form.submitted"> Required </div> @@ -39,14 +39,14 @@ <div class="form-group"> <label for="" class="col-sm-2 control-label">Status</label> <div class="col-sm-10"> - <div class="btn btn-success">Active</div> + <toggle-switch model="user.active" on-label="Active" off-label="Inactive" class="switch-primary userstatus" data-off-color="danger"></toggle-switch> </div> </div> <div class="form-group" ng-class="{'has-error' : (form.password.$error.required && form.submitted) || form.confirmPassword.$error.passwordVerify}"> <label for="password" class="col-sm-2 control-label">Password</label> <div class="col-sm-10"> - <input type="password" class="form-control bottom-margin" name="password" placeholder="Password" required ng-model="user.password"> - <input type="password" class="form-control bottom-margin" name="confirmPassword" placeholder="Password confirmation" required ng-model="user.passwordConfirmation" + <input type="password" class="form-control bottom-margin userpassword" name="password" placeholder="Password" required ng-model="user.password"> + <input type="password" class="form-control bottom-margin userpasswordconfirm" name="confirmPassword" placeholder="Password confirmation" required ng-model="user.passwordConfirmation" password-verify="user.password"> <div class="alert alert-danger" ng-show='form.confirmPassword.$error.passwordVerify'> @@ -60,7 +60,8 @@ </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> - <button class="btn btn-primary" ng-click="createUser()">Create</button> + <button class="btn btn-primary pull-right left-margin saveuser" ng-click="createUser()">Save</button> + <a class="btn btn-default pull-right cancel" href="#/users">Cancel</a> </div> </div> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html index 1ee21d4..55eb6e7 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html @@ -22,7 +22,7 @@ <li class="active">Users</li> </ol> <div class="pull-right top-margin-4"> - <link-to route="users.create" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Create Local User</link-to> + <link-to route="users.create" class="btn btn-primary createuser-btn"><span class="glyphicon glyphicon-plus"></span> Create Local User</link-to> </div> </div> <hr> @@ -30,12 +30,15 @@ <thead> <tr> <th> - <label for="">Username</label> - <input type="text" class="form-control" ng-model="currentNameFilter"> + <div class="search-container"> + <label for="">Username</label> + <input type="text" class="form-control namefilter" ng-model="currentNameFilter"> + <button type="button" class="close clearfilter" ng-show="currentNameFilter" ng-click="currentNameFilter=''"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> + </div> </th> <th> <label for="">Type</label> - <select class="form-control" + <select class="form-control typefilter" ng-model="currentTypeFilter" ng-options="item for item in typeFilterOptions"> </select> @@ -43,7 +46,7 @@ </th> <th> <label for="">Status</label> - <select class="form-control" + <select class="form-control statusfilter" ng-model="currentActiveFilter" ng-options="item for item in actvieFilterOptions"> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/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 e577b97..8100e83 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 @@ -23,7 +23,7 @@ <li class="active">{{user.user_name}}</li> </ol> <div class="pull-right top-margin-4"> - <button class="btn btn-danger" ng-click="deleteUser()">Delete User</button> + <button class="btn deleteuser-btn" ng-class="{'btn-danger': !isCurrentUser, 'btn-default' : isCurrentUser}" ng-click="deleteUser()" ng-disabled="isCurrentUser">Delete User</button> </div> </div> <hr> @@ -37,13 +37,13 @@ <div class="form-group"> <label for="" class="col-sm-2 control-label">Status</label> <div class="col-sm-10"> - <toggle-switch on-change="toggleUserActive()" model="user.active" on-label="Active" off-label="Inactive" class="switch-primary" data-off-color="danger"></toggle-switch> + <toggle-switch on-change="toggleUserActive()" ng-disabled="isCurrentUser" model="user.active" on-label="Active" off-label="Inactive" class="switch-primary userstatus" data-off-color="danger"></toggle-switch> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">Password</label> <div class="col-sm-10"> - <a href ng-click="openChangePwdDialog()" class="btn btn-default">Change Password</a> + <a href ng-click="openChangePwdDialog()" class="btn btn-default changepassword">Change Password</a> </div> </div> <div class="form-group"> @@ -56,13 +56,14 @@ </div> </div> <div class="col-sm-2"> - <a href ng-click="enableGroupEditing()" ng-hide="user.ldap_user"><span class="glyphicon glyphicon-cog"></span> Edit</a> + <a href ng-click="enableGroupEditing()" ng-hide="user.ldap_user"><span class="glyphicon glyphicon-pencil"></span> Edit</a> </div> </div> <div class="row" ng-show="isGroupEditing"> <div class="col-sm-12"> - <textarea name="groups" id="" cols="30" rows="5" class="form-control bottom-margin" ng-model="editingGroupsList"></textarea> - <a href class="btn btn-primary pull-right" ng-click="updateGroups()">Update</a> + <textarea name="groups" id="" cols="30" rows="5" class="form-control bottom-margin usergroups" ng-model="editingGroupsList"></textarea> + <a href class="btn btn-primary pull-right left-margin updategroups" ng-click="updateGroups()">Save</a> + <button class="btn btn-default pull-right cancel-groups-update" ng-click="cancelUpdate()">Cancel</button> </div> </div> http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/gulpfile.js ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/gulpfile.js b/ambari-admin/src/main/resources/ui/admin-web/gulpfile.js index 3655d6b..4cc129c 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/gulpfile.js +++ b/ambari-admin/src/main/resources/ui/admin-web/gulpfile.js @@ -114,17 +114,6 @@ gulp.task('serve', ['connect'], function () { require('opn')('http://localhost:9000'); }); -// inject bower components -gulp.task('wiredep', function () { - var wiredep = require('wiredep').stream; - - gulp.src('app/*.html') - .pipe(wiredep({ - directory: 'app/bower_components' - })) - .pipe(gulp.dest('app')); -}); - gulp.task('watch', ['connect', 'serve'], function () { var server = $.livereload(); @@ -142,5 +131,4 @@ gulp.task('watch', ['connect', 'serve'], function () { gulp.watch('app/styles/**/*.css', ['styles']); gulp.watch('app/scripts/**/*.js', ['scripts']); gulp.watch('app/images/**/*', ['images']); - gulp.watch('bower.json', ['wiredep']); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/64ed974a/ambari-admin/src/main/resources/ui/admin-web/package.json ---------------------------------------------------------------------- diff --git a/ambari-admin/src/main/resources/ui/admin-web/package.json b/ambari-admin/src/main/resources/ui/admin-web/package.json index a091584..e8fa7f0 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/package.json +++ b/ambari-admin/src/main/resources/ui/admin-web/package.json @@ -1,7 +1,8 @@ { "name": "adminconsole", "version": "0.0.0", - "dependencies": {}, + "dependencies": { + }, "devDependencies": { "bower": "1.3.8", "connect": "^2.14.4", @@ -24,7 +25,6 @@ "gulp-useref": "^0.4.2", "jshint-stylish": "^0.2.0", "opn": "^0.1.1", - "wiredep": "^1.4.3", "gulp-plumber": "*" }, "engines": {
