Repository: ranger
Updated Branches:
  refs/heads/master 97b927f93 -> d2073e774


RANGER-2030: Improvement to UI updates to accommodate policy effective dates.


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

Branch: refs/heads/master
Commit: d2073e774f458079d9e92a610fec2ae22d63cf12
Parents: 97b927f
Author: ni3galave <nitin.gal...@gmail.com>
Authored: Thu Mar 22 18:07:14 2018 +0530
Committer: pradeep <prad...@apache.org>
Committed: Thu Mar 22 19:22:13 2018 +0530

----------------------------------------------------------------------
 .../src/main/webapp/scripts/utils/XAUtils.js    | 12 ++++--
 .../scripts/views/policies/PolicyTimeList.js    | 15 ++++++--
 .../views/policies/RangerPolicyCreate.js        |  6 +--
 .../scripts/views/policies/RangerPolicyForm.js  | 20 ++++++++--
 .../views/policies/RangerPolicyTableLayout.js   | 39 ++++++++++++--------
 security-admin/src/main/webapp/styles/xa.css    | 11 ++++++
 .../policies/RangerPolicyCreate_tmpl.html       |  4 +-
 7 files changed, 75 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/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 9e17951..8a0302d 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1389,10 +1389,16 @@ define(function(require) {
     XAUtils.isAuditorOrKMSAuditor = function(SessionMgr){
         return (SessionMgr.isAuditor() || SessionMgr.isKMSAuditor()) ? true : 
false ;
     };
-    XAUtils.policyExpierd = function(model){
-        return _.some(model.get('validitySchedules') , function(m){
+    XAUtils.isPolicyExpierd = function(model){
+        return !_.some(model.get('validitySchedules') , function(m){
+            if(!m.endTime){
+                return true;
+            } else if(_.isEmpty(m.timeZone)){
                 return new Date().valueOf() > new Date(m.endTime).valueOf() ? 
false : true;
-
+            }else{
+                return new Date(new Date().toLocaleString('en-US', { timeZone: 
m.timeZone }).valueOf()).valueOf() >
+                new Date(m.endTime.toLocaleString('en-US', { timeZone: 
m.timeZone }).valueOf()).valueOf() ? false : true;
+            }
         });
     };
        return XAUtils;

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/security-admin/src/main/webapp/scripts/views/policies/PolicyTimeList.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/PolicyTimeList.js 
b/security-admin/src/main/webapp/scripts/views/policies/PolicyTimeList.js
index 0d88072..74b9b4d 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/PolicyTimeList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/PolicyTimeList.js
@@ -58,9 +58,14 @@ define(function(require) {
 
                 onRender : function() {
               var that = this;
-              var startTime = 
this.$el.find(this.ui.startTime).datetimepicker({autoclose:true}),
-              endTime = 
this.$el.find(this.ui.endTime).datetimepicker({autoclose:true});;
-
+              var startTime = this.$el.find(this.ui.startTime).datetimepicker({
+                  autoclose: true,
+                  minuteStep: 1,
+              }),
+              endTime = this.$el.find(this.ui.endTime).datetimepicker({
+                  autoclose: true,
+                  minuteStep: 1
+              });
               startTime.on('changeDate', function(ev){
                   
that.$el.find(that.ui.endTime).datetimepicker('setStartDate', ev.date);
               });
@@ -99,6 +104,7 @@ define(function(require) {
                 evDelete : function(){
                         var that = this;
                         this.collection.remove(this.model);
+                        $('[data-js="policyTimeBtn"]').addClass('dirtyField');
                 },
         });
 
@@ -134,6 +140,7 @@ define(function(require) {
                         this.bind("ok", this.onSave);
                 },
                 onRender : function(){
+                    
XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavPolicyForm'),this.$el);
                 },
                 addNew : function(){
                         var that =this;
@@ -141,7 +148,7 @@ define(function(require) {
                         this.collection.add(new Backbone.Model());
                 },
                 onSave: function (modal) {
-                    var self = this
+                    var self = this;
                     if(! _.isUndefined(this.collection.models)){
                        var error = _.some(this.collection.models, function(m){
                             var startTime = new Date(m.get('startTime')), 
endTime = new Date(m.get('endTime'));

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
index 1b82128..4158309 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
@@ -55,10 +55,10 @@ define(function(require){
                        infoMsg = 
localization.tt('msg.rowFilterPolicyInfoMsg'), displayClass = 'show';
                }
         if(this.editPolicy && !_.isEmpty(this.model.get('validitySchedules'))){
-            if(XAUtil.policyExpierd(this.model)){
-                expiredClass = 'hide';
-            }else{
+            if(XAUtil.isPolicyExpierd(this.model)){
                 policyTimeStatus = localization.tt('msg.policyExpired'), 
expiredClass = 'show';
+            }else{
+                expiredClass = 'hide';
             }
                 }
                return {

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
index 6d511e1..1c3dc85 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -149,9 +149,13 @@ define(function(require){
             setPolicyValidityTime : function(){
               var that = this;
               this.$el.find(this.ui.policyTimeBtn).on('click', function(e){
-                var view = new vPolicyTimeList({
-                 collection: that.model.has('validitySchedules') ? new 
Backbone.Collection(that.model.get('validitySchedules')) : new 
Backbone.Collection(),
-                 model : that.model
+                  var policyDirtyField = that.model.has('validitySchedules') ? 
new Backbone.Collection(that.model.get('validitySchedules')) : new 
Backbone.Collection();
+                  policyDirtyField.on('change',function(){
+                      
that.$el.find('[data-js="policyTimeBtn"]').addClass('dirtyField');
+                  });
+                  var view = new vPolicyTimeList({
+                      collection: policyDirtyField,
+                      model : that.model
                 });
                 var modal = new Backbone.BootstrapModal({
                   content      : view,
@@ -167,9 +171,17 @@ define(function(require){
                 }).open();
 
                 modal.$el.addClass('modal-policy-time');
+                $('body').addClass('hideBodyScroll')
                 //To prevent modal being close by click out of modal
-                modal.$el.find('.cancel, .close, .ok').on('click', function(e){
+                modal.$el.find('.cancel, .close').on('click', function(e){
                   modal._preventClose = false;
+                  $('body').removeClass('hideBodyScroll');
+                  $('[data-js="policyTimeBtn"]').addClass('dirtyField');
+                  $(".datetimepicker").remove();
+                });
+                modal.$el.find('.ok').on('click', function(e){
+                    modal._preventClose = false;
+                    $('body').removeClass('hideBodyScroll');
                 });
                 modal.on('shown', function(a){
                   this.preventClose();

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
index b849799..1afd92e 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
@@ -101,10 +101,7 @@ define(function(require){
                */
                initialize: function(options) {
                        console.log("initialized a RangerPolicyTableLayout 
Layout");
-
                        _.extend(this, _.pick(options,'rangerService'));
-                       
-                       
                        this.bindEvents();
                        this.initializeServiceDef();
                },
@@ -203,19 +200,32 @@ define(function(require){
                        var that = this;
                        var cols = {
                                id : {
-                                        cell : 'html',
+                    cell : 'html',
                                        label   : 
localization.tt("lbl.policyId"),
-                                        formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
                         fromRaw: function (rawValue, model) {
-                            if(!_.isEmpty(model.attributes.validitySchedules) 
&& !XAUtil.policyExpierd(model)){
-                                return '<div class="" style="position: 
relative; text-align: center;">\
-                                            <!--<i 
class="icon-exclamation-sign backgrigModelId" title="Policy expired"></i>-->\
-                                            <a class="" 
href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit">'+model.id+'</a>\
-                                         </div>';
+                            if(XAUtil.isAuditorOrKMSAuditor(SessionMgr)){
+                                if(!_.isEmpty(model.get('validitySchedules')) 
&& XAUtil.isPolicyExpierd(model)){
+                                    return '<div class="expiredIconPosition">\
+                                                <i 
class="icon-exclamation-sign backgrigModelId" title="Policy expired"></i>\
+                                                '+model.id+'\
+                                             </div>';
+                                }else{
+                                    return '<div class="expiredIconPosition">\
+                                                '+model.id+'\
+                                            </div>';
+                                }
                             }else{
-                                return '<div class="" style="position: 
relative; text-align: center;">\
-                                            <a class="" 
href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit">'+model.id+'</a>\
-                                        </div>';
+                                if(!_.isEmpty(model.get('validitySchedules')) 
&& XAUtil.isPolicyExpierd(model)){
+                                    return '<div class="expiredIconPosition">\
+                                                <i 
class="icon-exclamation-sign backgrigModelId" title="Policy expired"></i>\
+                                                <a class="" 
href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit">'+model.id+'</a>\
+                                             </div>';
+                                }else{
+                                    return '<div class="expiredIconPosition">\
+                                                <a class="" 
href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit">'+model.id+'</a>\
+                                            </div>';
+                                }
                             }
                         }
                     }),
@@ -317,9 +327,6 @@ define(function(require){
                                sortable : false
 
                        };
-                        if(XAUtil.isAuditorOrKMSAuditor(SessionMgr)){
-                            cols.id.cell = 'string';
-                        }
                        return this.collection.constructor.getTableCols(cols, 
this.collection);
                },
                onDelete :function(e){

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/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 ebb6284..0ea0ac2 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -2333,3 +2333,14 @@ textarea:read-only{
   top: 3px;
   color:#bd362f;
 }
+.hideBodyScroll{
+    overflow : hidden;
+}
+.datetimepicker-minutes{
+    overflow-y: scroll !important;
+    height: 210px !important;
+}
+.expiredIconPosition{
+    position: relative;
+    text-align: center;
+}

http://git-wip-us.apache.org/repos/asf/ranger/blob/d2073e77/security-admin/src/main/webapp/templates/policies/RangerPolicyCreate_tmpl.html
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/templates/policies/RangerPolicyCreate_tmpl.html
 
b/security-admin/src/main/webapp/templates/policies/RangerPolicyCreate_tmpl.html
index e85faa8..0151e7c 100644
--- 
a/security-admin/src/main/webapp/templates/policies/RangerPolicyCreate_tmpl.html
+++ 
b/security-admin/src/main/webapp/templates/policies/RangerPolicyCreate_tmpl.html
@@ -28,10 +28,10 @@
           <button type="button" class="close" 
data-dismiss="alert">&times;</button>
           <i class="icon-info-sign searchInfoUserAccess 
padding-right-10"></i>{{{infoMsg}}}
         </div>
-        <!-- <div class="alert alert-danger {{expiredClass}}" 
data-id="policyInfoAlert">
+        <div class="alert alert-danger {{expiredClass}}" 
data-id="policyInfoAlert">
           <button type="button" class="close" 
data-dismiss="alert">&times;</button>
           <i class="icon-time icon-3 padding-right-10 
timeClock"></i>{{{policyTimeStatus}}}
-        </div> -->
+        </div>
        <div data-id="r_form"></div>
         <div class="form-actions form-policy">
        {{#if editPolicy}}

Reply via email to