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
