Repository: ranger
Updated Branches:
  refs/heads/master 2b9f76e81 -> 6c6ec75db


RANGER-1889-Improvement : Show users in group (Users/Groups -> Group Tab).

Signed-off-by: Mehul Parikh <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/6c6ec75d
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/6c6ec75d
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/6c6ec75d

Branch: refs/heads/master
Commit: 6c6ec75db0c3871ff76fc072e64fbc778d58625c
Parents: 2b9f76e
Author: ni3galave <[email protected]>
Authored: Thu Apr 26 23:22:36 2018 +0530
Committer: Mehul Parikh <[email protected]>
Committed: Mon Apr 30 19:32:32 2018 +0530

----------------------------------------------------------------------
 .../src/main/webapp/scripts/utils/XAUtils.js    |  9 ++++
 .../main/webapp/scripts/utils/XAViewUtils.js    |  9 +---
 .../scripts/views/users/UserTableLayout.js      | 43 +++++++++++++-------
 security-admin/src/main/webapp/styles/xa.css    | 20 ++++++++-
 4 files changed, 58 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/6c6ec75d/security-admin/src/main/webapp/scripts/utils/XAUtils.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js 
b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index 8a0302d..ed83669 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1401,5 +1401,14 @@ define(function(require) {
             }
         });
     };
+    XAUtils.copyToClipboard = function(e , copyText ){
+        var input = document.createElement('input');
+        input.setAttribute('value', copyText.join(' | '));
+        document.body.appendChild(input);
+        input.select();
+        document.execCommand('copy');
+        document.body.removeChild(input);
+        e.currentTarget.title="Copied!";
+    };
        return XAUtils;
 });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ranger/blob/6c6ec75d/security-admin/src/main/webapp/scripts/utils/XAViewUtils.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAViewUtils.js 
b/security-admin/src/main/webapp/scripts/utils/XAViewUtils.js
index a7abd1e..a9f7df3 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAViewUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAViewUtils.js
@@ -24,6 +24,7 @@ define(function(require) {
        
     var XAEnums = require('utils/XAEnums');
     var localization = require('utils/XALangSupport');
+    var XAUtils = require('utils/XAUtils');
     var XAViewUtil = {};
     require('Backbone.BootstrapModal');
 
@@ -80,13 +81,7 @@ define(function(require) {
                 if($(e.target).data('toggle') !== 'popover' && 
$(e.target).parents('.popover.in').length === 0){
                     $('.queryInfo').not(this).popover('hide');
                     $('.copyQuery').on("click", function(e){
-                        var input = document.createElement('input');
-                        input.setAttribute('value', model.get('requestData'));
-                        document.body.appendChild(input);
-                        input.select();
-                        document.execCommand('copy');
-                        document.body.removeChild(input);
-                        e.currentTarget.title="Copied!";
+                        XAUtils.copyToClipboard(e , model.get('requestData'));
                     })
                 }
             });

http://git-wip-us.apache.org/repos/asf/ranger/blob/6c6ec75d/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js 
b/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
index 886b789..840374f 100644
--- a/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/users/UserTableLayout.js
@@ -496,7 +496,7 @@ define(function(require){
 
         showUserList :function(e){
             XAUtil.blockUI();
-            var that = this , name , msg = "", content = "" , totalRecords, 
infoMsg = "";
+            var that = this , name , msg = "", content = "" , totalRecords, 
infoMsg = ""; this.copyUserLists = [];
             var anchor = $(e.currentTarget);
             this.groupId = anchor.attr('data-id');
             name = anchor.attr('data-name');
@@ -512,10 +512,14 @@ define(function(require){
                 totalRecords = this.state.totalRecords;
                 var title =  "<h4>User's List: " + name + "</h4>";
                     _.each(that.grpUserList.models , function(model){
-                        msg +='<span class="label label-info userLists 
span-margin" >'+ model.get('name') + '</span>';
+                        msg +='<span class="link-tag userLists span-margin 
setEllipsis" title="'+ model.get('name') +'"><a href="#!/user/'+ model.id+'">'+ 
model.get('name') + '</a></span>';
+                        that.copyUserLists.push(model.get('name'));
                     });
                     var html = '<div class="row-fluid">\
-                                    <div class="span12"><input type="text" 
data-id="userInput" placeholder="Search Users" class= 
"users-list-search"></div>\
+                                    <div class="span12">\
+                                        <input type="text" data-id="userInput" 
placeholder="Search Users" class= "users-list-search">\
+                                        <div class="pull-right link-tag 
copyUsers btn btn-mini" title="Copy All Users Name"><i 
class="icon-copy"></i></div>\
+                                    </div>\
                                 </div>';
                     if(totalRecords > 100){
                         var showAllUserbtn = '<button class="btn btn-mini 
showMore" data-id="'+ that.groupId +'" data-id="showMore" title="Show All 
Users">Show All Users</button>'
@@ -534,13 +538,19 @@ define(function(require){
                         allowCancel : true,
                     }).open();
                     modal.$el.find('.cancel').hide();
+                    modal.$el.find('.copyUsers').on("click", function(e){
+                        XAUtil.copyToClipboard(e , that.copyUserLists);
+                    })
                     that.showAllUser(modal, totalRecords, msg);
             })
         },
 
         showAllUser : function(modal, totalRecords, msg){
-            var that = this;
+            var that = this; that.copyUserLists = [];
             var filterUserLists = _.clone(modal.$content.find('span'));
+            _.each(filterUserLists , function(model){
+                that.copyUserLists.push(model.innerText);
+            });
             modal.$content.find('.showMore').on("click" ,function(){
                 modal.$el.find('.modal-body').scrollTop(0);
                 modal.$el.find('.modal-body').addClass('pointer-event');
@@ -553,12 +563,13 @@ define(function(require){
                     cache : false,
                     reset : true,
                 }).then(function(){
-                    var tag ="";
+                    var tag =""; that.copyUserLists = [];
                     modal.$content.find('.showMore').attr('disabled',true);
                     modal.$el.find('.modal-body').removeClass('pointer-event');
                     modal.$el.find('.loaderForModal').remove();
                     _.each(this.models, function(m){
-                        tag +='<span class="label label-info userLists 
span-margin" >'+ m.get('name') + '</span>';
+                        tag +='<span class="link-tag userLists span-margin 
setEllipsis" title="'+ m.get('name') +'" ><a href="#!/user/'+ m.get('id')+'" 
>'+ m.get('name') + '</a></span>';
+                        that.copyUserLists.push(m.get('name'));
                     });
                     modal.$el.find(".usernames").empty();
                     modal.$el.find(".usernames").append(tag);
@@ -566,23 +577,27 @@ define(function(require){
                     msg = tag;
                 })
             });
-            modal.$el.find('[data-id="userInput"]').on("keyup" ,function(){
-                var input, users;
-                input = $('input[data-id="userInput"]');
+            modal.$el.find('[data-id="userInput"]').on("keyup" ,function(e){
+                var input, users= [];
+                modal.$el.find('.copyUsers').show()
+                var value = e.currentTarget.value;
                 users = msg;
-                if(!_.isEmpty(input.val())){
+                if(!_.isEmpty(value)){
+                    that.copyUserLists=[];
                     users = _.filter(filterUserLists, function(v) {
-                        
if(v.innerText.toLowerCase().indexOf(input.val().toLowerCase()) > -1){
-                            return v;
+                       
if(v.innerText.toLowerCase().indexOf(value.toLowerCase()) > -1){
+                           that.copyUserLists.push(v.innerText);
+                           return v;
                         }
                     });
                 }
                 modal.$el.find(".usernames").empty();
                 if(_.isEmpty(users)){
-                    users = "No users found."
+                    users = "No users found.";
+                    modal.$el.find('.copyUsers').hide()
                 }
                 modal.$el.find(".usernames").append(users);
-                if(_.isEmpty(input.val())){
+                if(_.isEmpty(value)){
                     that.showAllUser(modal, totalRecords, msg);
                 }
             })

http://git-wip-us.apache.org/repos/asf/ranger/blob/6c6ec75d/security-admin/src/main/webapp/styles/xa.css
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/styles/xa.css 
b/security-admin/src/main/webapp/styles/xa.css
index da3433f..00809bc 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -2288,11 +2288,20 @@ textarea:read-only{
     line-height: 12px;
 }
 .users-list-search{
-    width : 500px;
+    width : 90%;
     padding : 10px;
 }
 .span-margin{
     margin: 2px;
+    border: 1px solid #bbbbbb;
+    background-color: white;
+}
+.span-margin a{
+    color:#444444;
+}
+.span-margin:hover a{
+    text-decoration:none;
+    color:#4e7b86;
 }
 .loaderForModal{
   background: url(../images/loading.gif) no-repeat center center 
rgba(0,0,0,0.3);
@@ -2308,7 +2317,7 @@ textarea:read-only{
 .infoWidth{
   width: 475px;
 }
-.query-icon{
+.query-icon, .copyUsers{
   padding: 0 4px;
   float: right;
   margin-top: -3px;
@@ -2358,3 +2367,10 @@ textarea:read-only{
     position: relative;
     text-align: center;
 }
+.setEllipsis {
+    max-width: 180px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+    display: block;
+}
\ No newline at end of file

Reply via email to