RANGER-974 : Allow users to move policy items in create / edit Policy screen
Signed-off-by: Gautam Borad <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/f4a7037d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/f4a7037d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/f4a7037d Branch: refs/heads/master Commit: f4a7037dba4e9714535990dc619db5c0b445d90f Parents: d4fd012 Author: Mehul Parikh <[email protected]> Authored: Fri May 6 15:57:08 2016 +0530 Committer: Gautam Borad <[email protected]> Committed: Tue May 10 17:23:38 2016 +0530 ---------------------------------------------------------------------- .../scripts/views/policies/PermissionList.js | 68 ++++++-------------- .../views/policymanager/ServiceLayout.js | 1 + .../webapp/scripts/views/reports/AuditLayout.js | 1 + security-admin/src/main/webapp/styles/xa.css | 19 ++++++ .../templates/policies/PermissionList.html | 2 +- 5 files changed, 40 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f4a7037d/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js index 326c84c..45d4d15 100644 --- a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js +++ b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js @@ -173,13 +173,11 @@ define(function(require) { } else { that.model.unset(name+'Name'); } - that.toggleAddButton(e); return; } if(!_.isUndefined(e.added)){ var nameList = _.map($(e.currentTarget).select2("data"), function(obj){return obj.text}); that.model.set(name+'Name',nameList.toString()); - that.toggleAddButton(e); } }); }, @@ -520,7 +518,6 @@ define(function(require) { evDelete : function(){ var that = this; this.collection.remove(this.model); - this.toggleAddButton(); }, evClickTD : function(e){ var $el = $(e.currentTarget); @@ -552,34 +549,6 @@ define(function(require) { perms = _.map(perms,function(obj){return obj.permType;}); XAUtil.checkDirtyField(permList, perms, this.$el); }, - toggleAddButton : function(e){ - var grpTemp = [], usrTemp = []; - this.collection.each(function(m){ - if(!_.isUndefined(m.get('groupName')) && !_.isNull(m.get('groupName'))){ - grpTemp.push.apply(grpTemp, m.get('groupName').split(',')); - } - if(!_.isUndefined(m.get('userName')) && !_.isNull(m.get('userName'))){ - usrTemp.push.apply(usrTemp, m.get('userName').split(',')); - } - }); - if(!_.isUndefined(e)){ - if( !_.isUndefined(e.added)){ - if((grpTemp.length ) == this.groupList.length && ((usrTemp.length) == this.userList.length)){ - $('[data-action="addGroup"]').hide(); - } else { - $('[data-action="addGroup"]').show(); - } - } - if(!_.isUndefined(e.removed)) - $('[data-action="addGroup"]').show(); - } else { - if((grpTemp.length ) == this.groupList.length && ((usrTemp.length) == this.userList.length)){ - $('[data-action="addGroup"]').hide(); - } else { - $('[data-action="addGroup"]').show(); - } - } - }, policyCondtionChange :function(e){ if(!_.isEmpty($(e.currentTarget).val()) && !_.isEmpty(this.policyConditions)){ var policyCond = { 'type' : $(e.currentTarget).attr('data-js'), 'value' : $(e.currentTarget).val() } ; @@ -717,30 +686,13 @@ define(function(require) { this.collection.add(new Backbone.Model()); }, onRender : function(){ + this.makePolicyItemSortable(); }, addNew : function(){ var that =this; this.collection.add(new Backbone.Model()); }, - toggleAddButton : function(){ - var groupNames=[], userNames=[]; - this.collection.each(function(m){ - if(!_.isUndefined(m.get('groupName'))){ - var temp = m.get('groupName').split(','); - groupNames.push.apply(groupNames,temp); - } - if(!_.isUndefined(m.get('userName'))){ - var temp = m.get('userName').split(','); - userNames.push.apply(userNames,temp); - } - }); - if(groupNames.length == this.groupList.length && userNames.length == this.userList.length ){ - this.$('button[data-action="addGroup"]').hide(); - } else { - this.$('button[data-action="addGroup"]').show(); - } - }, getPermHeaders : function(){ var permList = []; if(this.rangerServiceDefModel.get('name') != XAEnums.ServiceType.SERVICE_TAG.label){ @@ -780,7 +732,23 @@ define(function(require) { this.accessTypes = _.map(rowFilterDef.accessTypes, function(m){return _.findWhere(this.accessTypes, {'name' : m.name });}, this); } } + }, + makePolicyItemSortable : function(){ + var that = this, draggedModel; + this.$el.find(".js-formInput" ).sortable({ + placeholder: "ui-state-highlight", + start : function(event, ui){ + var row = ui.item[0].rowIndex - 1; + draggedModel = that.collection.at(row); + }, + stop : function(event, ui){ + var row = ui.item[0].rowIndex -1; + that.collection.remove(draggedModel, { silent : true}); + that.collection.add(draggedModel ,{ at: row, silent : true }); + that.$el.find(ui.item[0]).addClass("dirtyField"); + }, + }); } }); -}); +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f4a7037d/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js index bac6c34..aae7543 100644 --- a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js +++ b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js @@ -98,6 +98,7 @@ define(function(require){ }, initializeServices : function(){ + this.services.setPageSize(100); this.services.fetch({ cache : false, async : false http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f4a7037d/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js index 623ae03..23e8b54 100644 --- a/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js +++ b/security-admin/src/main/webapp/scripts/views/reports/AuditLayout.js @@ -293,6 +293,7 @@ define(function(require) { switch (facet) { case 'Service Name': var serviceList = new RangerServiceList(); + serviceList.setPageSize(100); serviceList.fetch().done(function(){ callback(serviceList.map(function(model){return model.get('name');})); }); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f4a7037d/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 1613015..f8e7273 100644 --- a/security-admin/src/main/webapp/styles/xa.css +++ b/security-admin/src/main/webapp/styles/xa.css @@ -1918,3 +1918,22 @@ input[type="radio"], input[type="checkbox"] {margin-top: 0;} .controls-margin { margin-left: 90px !important; } +.permissionItemSortable > tr > td:first-child { + padding-left: 20px; + position: relative; +} +.permissionItemSortable > tr:not(.ui-state-highlight) > td:first-child:after { + content: ''; + position: absolute; + box-sizing: border-box; + left: 5px; + top: 10%; + height: 80%; + width: 6px; + border: 2px dotted rgba(0,0,0,0.25); + background: transparent; + cursor: move; +} +.permissionItemSortable > tr:hover > td:first-child:after { + border-color: rgba(0,0,0,0.5); +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f4a7037d/security-admin/src/main/webapp/templates/policies/PermissionList.html ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/templates/policies/PermissionList.html b/security-admin/src/main/webapp/templates/policies/PermissionList.html index 68c7931..9216376 100644 --- a/security-admin/src/main/webapp/templates/policies/PermissionList.html +++ b/security-admin/src/main/webapp/templates/policies/PermissionList.html @@ -35,7 +35,7 @@ </tr> </thead> - <tbody class="js-formInput"> + <tbody class="js-formInput permissionItemSortable"> </tbody> </table>
