RANGER-203: UI - policy delete implemented; policy permissions selection updated; landing page layout fixes
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/286acf6d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/286acf6d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/286acf6d Branch: refs/heads/stack Commit: 286acf6d27be73a2993e5f8ff0b1347b13f11840 Parents: 4130d7a Author: Gautam Borad <[email protected]> Authored: Wed Jan 28 08:56:24 2015 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Wed Jan 28 08:56:24 2015 -0800 ---------------------------------------------------------------------- .../webapp/scripts/controllers/Controller.js | 19 - .../src/main/webapp/scripts/modules/XALinks.js | 5 + .../scripts/modules/globalize/message/en.js | 1 + .../src/main/webapp/scripts/utils/XAUtils.js | 25 + .../webapp/scripts/views/asset/AssetCreate.js | 285 ------- .../webapp/scripts/views/asset/AssetForm.js | 369 --------- .../scripts/views/asset/AssetTableLayout.js | 164 ---- .../scripts/views/hbase/HbasePolicyCreate.js | 300 ------- .../scripts/views/hbase/HbasePolicyForm.js | 574 -------------- .../scripts/views/hbase/HbaseTableLayout.js | 393 ---------- .../scripts/views/hdfs/HDFSTableLayout.js | 402 ---------- .../scripts/views/hive/HivePolicyCreate.js | 314 -------- .../webapp/scripts/views/hive/HivePolicyForm.js | 774 ------------------- .../scripts/views/hive/HiveTableLayout.js | 462 ----------- .../scripts/views/knox/KnoxPolicyCreate.js | 301 -------- .../webapp/scripts/views/knox/KnoxPolicyForm.js | 524 ------------- .../scripts/views/knox/KnoxTableLayout.js | 351 --------- .../scripts/views/policies/PermissionList.js | 57 +- .../views/policies/RangerPolicyCreate.js | 28 +- .../views/policies/RangerPolicyTableLayout.js | 89 ++- .../webapp/scripts/views/policy/PolicyCreate.js | 308 -------- .../webapp/scripts/views/policy/PolicyForm.js | 501 ------------ .../views/policymanager/PolicyManagerLayout.js | 123 --- .../views/policymanager/ServiceLayout.js | 29 +- .../scripts/views/service/ServiceCreate.js | 9 +- .../scripts/views/storm/StormPolicyCreate.js | 301 -------- .../scripts/views/storm/StormPolicyForm.js | 510 ------------ .../scripts/views/storm/StormTableLayout.js | 351 --------- security-admin/src/main/webapp/styles/xa.css | 20 + .../common/ServiceManagerLayout_tmpl.html | 2 +- .../main/webapp/templates/helpers/XAHelpers.js | 2 +- .../templates/policies/PermissionItem.html | 10 +- .../service/ServiceTableLayout_tmpl.html | 2 +- 33 files changed, 230 insertions(+), 7375 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/controllers/Controller.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/controllers/Controller.js b/security-admin/src/main/webapp/scripts/controllers/Controller.js index f056d15..71910a9 100644 --- a/security-admin/src/main/webapp/scripts/controllers/Controller.js +++ b/security-admin/src/main/webapp/scripts/controllers/Controller.js @@ -53,25 +53,6 @@ define(function(require) { App.rContent.show(new vDashboardLayout({})); }, - - //************** Policy Related *********************/ - policyManagerAction :function(){ - MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value }); - console.log('Policy Manager action called..'); - var view = require('views/policymanager/PolicyManagerLayout'); - var VXAssetList = require('collections/VXAssetList'); - var collection = new VXAssetList(); - - collection.fetch({ - cache : false, - async:false - }).done(function(){ - if(App.rContent.currentView) App.rContent.currentView.close(); - App.rContent.show(new view({ - collection : collection - })); - }); - }, //************** Analytics(reports) Related *********************/ userAccessReportAction : function(){ http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/modules/XALinks.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/modules/XALinks.js b/security-admin/src/main/webapp/scripts/modules/XALinks.js index 52e6c01..00267b3 100644 --- a/security-admin/src/main/webapp/scripts/modules/XALinks.js +++ b/security-admin/src/main/webapp/scripts/modules/XALinks.js @@ -49,6 +49,11 @@ define(function(require) { text : 'h.repositoryManager', title: 'h.repositoryManager' }, + ServiceManager :{ + href : '#!/policymanager', + text : 'h.serviceManager', + title: 'h.serviceManager' + }, Users : { href : '#!/users/usertab', text : 'h.usersOrGroups', http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js index fa39365..94f1444 100644 --- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js +++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js @@ -235,6 +235,7 @@ define(function(require) { analytics : 'Analytics', audit : 'Audit', repositoryManager : 'Manage Repository', + serviceManager : 'Service Manager', hdfs : 'HDFS', hive : 'Hive', createPolicy : 'Create Policy', http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/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 4ff308f..f90a3e6 100644 --- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js +++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js @@ -356,6 +356,31 @@ define(function(require) { }else return '--'; }; + XAUtils.showGroupsOrUsersForPolicy = function(rawValue, model, showGroups){ + var showMoreLess = false, groupArr = []; + var type = _.isUndefined(showGroups) ? 'groups' : 'users'; + if(!_.isArray(rawValue) && !_.isUndefined(rawValue[type])) + return '--'; + _.each(rawValue,function(perm){ + groupArr = _.union(groupArr, perm[type]) + }); + + var newGroupArr = _.map(groupArr, function(name, i){ + if(i >= 4){ + return '<span class="label label-info" policy-'+type+'-id="'+model.id+'" style="display:none;">' + name + '</span>'; + }else if(i == 3 && groupArr.length > 4){ + showMoreLess = true; + return '<span class="label label-info" policy-'+type+'-id="'+model.id+'">' + name + '</span>'; + }else{ + return '<span class="label label-info" policy-'+type+'-id="'+model.id+'">' + name + '</span>'; + } + }); + if(showMoreLess){ + newGroupArr.push('<span class="pull-left"><a href="javascript:void(0);" data-id="showMore" class="" policy-'+type+'-id="'+model.id+'"><code style=""> + More..</code></a></span><span class="pull-left" ><a href="javascript:void(0);" data-id="showLess" class="" policy-'+type+'-id="'+model.id+'" style="display:none;"><code> - Less..</code></a></span>'); + } + return newGroupArr.length ? newGroupArr.join(' ') : '--'; + + }; XAUtils.defaultErrorHandler = function(model, error) { var App = require('App'); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/asset/AssetCreate.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/asset/AssetCreate.js b/security-admin/src/main/webapp/scripts/views/asset/AssetCreate.js deleted file mode 100644 index 3a7e06f..0000000 --- a/security-admin/src/main/webapp/scripts/views/asset/AssetCreate.js +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -/* - * Repository/Asset create view - */ - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - var App = require('App'); - - var XAUtil = require('utils/XAUtils'); - var XAEnums = require('utils/XAEnums'); - var XALinks = require('modules/XALinks'); - var localization = require('utils/XALangSupport'); - - var AssetForm = require('views/asset/AssetForm'); - var AssetcreateTmpl = require('hbs!tmpl/asset/AssetCreate_tmpl'); - - var AssetCreate = Backbone.Marionette.Layout.extend( - /** @lends AssetCreate */ - { - _viewName : 'AssetCreate', - - template: AssetcreateTmpl, - - templateHelpers : function(){ - return { editAsset : this.editAsset}; - }, - - breadCrumbs :function(){ - if(this.model.isNew()) - return [XALinks.get('RepositoryManager'), XALinks.get('AssetCreate', {model:this.model})]; - else - return [XALinks.get('RepositoryManager'), XALinks.get('AssetEdit',{model:this.model})]; - }, - - /** Layout sub regions */ - regions: { - 'rForm' :'div[data-id="r_form"]' - }, - - /** ui selector cache */ - ui: { - 'btnSave' : '[data-id="save"]', - 'btnCancel' : '[data-id="cancel"]', - 'btnDelete' : '[data-id="delete"]', - 'btnTestConn' : '[data-id="testConn"]' - }, - - /** ui events hash */ - events: function() { - var events = {}; - events['click ' + this.ui.btnSave] = 'onSave'; - events['click ' + this.ui.btnCancel] = 'onCancel'; - events['click ' + this.ui.btnDelete] = 'onDelete'; - events['click ' + this.ui.btnTestConn] = 'onTestConnection'; - return events; - }, - - /** - * intialize a new AssetCreate Layout - * @constructs - */ - initialize: function(options) { - console.log("initialized a AssetCreate Layout"); - - _.extend(this, _.pick(options, 'repositoryName')); - if(! this.model.isNew()){ - this.setupModel(); - } - this.form = new AssetForm({ - model : this.model, - template : require('hbs!tmpl/asset/AssetForm_tmpl') - }); - this.editAsset = this.model.has('id') ? true : false; - - this.bindEvents(); - }, - setupModel : function(){ - var that = this; - //var obj = _.pick(this.model.attributes,['username','password','fsDefaultName' ,'authorization', 'authentication', 'auth_to_local', 'datanode', 'namenode', 'secNamenode']); - if(this.model.get('config')){ - var configObj = $.parseJSON(this.model.get('config')); - _.each(configObj,function(val,prop){ - _.each(that.model.propertiesNameMap,function(v,p){ - if(prop == v){ - that.model.set(p,val); - } - }); - }); - } - - //this.model.set('config',JSON.stringify(obj)); - }, - - /** all events binding here */ - bindEvents : function(){ - /*this.listenTo(this.model, "change:foo", this.modelChanged, this);*/ - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - if(!this.editAsset){ - this.ui.btnDelete.hide(); - this.ui.btnSave.html('Add'); - }else{ - - // XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavRepositoryForm')); - } - this.rForm.show(this.form); - this.rForm.$el.dirtyFields(); - XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavRepositoryForm'),this.rForm.$el); - this.initializePlugins(); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - - onSave: function(){ - var errors = this.form.commit({validate : false}); - if(! _.isEmpty(errors)){ - return; - } - this.form.formValidation(); - this.saveAsset(); - - }, - saveAsset : function(){ - var that = this; - this.form.beforeSave(); - XAUtil.blockUI(); - this.model.save({},{ - wait: true, - success: function () { - XAUtil.blockUI('unblock'); - XAUtil.allowNavigation(); - var msg = that.editAsset ? 'Repository updated successfully' :'Repository created successfully'; - XAUtil.notifySuccess('Success', msg); - - if(that.editAsset){ - App.appRouter.navigate("#!/policymanager",{trigger: true}); - return; - } - - App.appRouter.navigate("#!/policymanager",{trigger: true}); - - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - if(response.responseJSON.msgDesc == "serverMsg.fsDefaultNameValidationError"){ - that.form.fields.fsDefaultName.setError(localization.tt(response.responseJSON.msgDesc)); - XAUtil.scrollToField(that.form.fields.fsDefaultName.$el); - }else if(response.responseJSON.msgDesc == "Repository Name already exists"){ - response.responseJSON.msgDesc = "serverMsg.repositoryNameAlreadyExistsError"; - that.form.fields.name.setError(localization.tt(response.responseJSON.msgDesc)); - XAUtil.scrollToField(that.form.fields.name.$el); - }else if(response.responseJSON.msgDesc == "XUser already exists"){ - response.responseJSON.msgDesc = "serverMsg.userAlreadyExistsError"; - that.form.fields.userName.setError(localization.tt(response.responseJSON.msgDesc)); - XAUtil.scrollToField(that.form.fields.userName.$el); - }else - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error creating Asset!'); - console.log("error"); - } - }); - }, - onDelete :function(){ - var that = this; - XAUtil.confirmPopup({ - //msg :localize.tt('msg.confirmDelete'), - msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - - that.model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - XAUtil.allowNavigation(); - XAUtil.notifySuccess('Success', 'Repository delete successfully'); - App.appRouter.navigate("#!/policymanager",{trigger: true}); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error occured while deleting asset!'); - } - }); - - } - }); - }, - onTestConnection : function(){ - var errors = this.form.commit({validate : false}); - if(! _.isEmpty(errors)){ - return; - } - this.form.beforeSave(); - this.model.testConfig(this.model,{ - //wait: true, - success: function (msResponse, options) { - if(msResponse.statusCode){ - if(!_.isUndefined(msResponse) && !_.isUndefined(msResponse.msgDesc)){ - var popupBtnOpts; - if(!_.isEmpty(msResponse.msgDesc)){ - if(_.isArray(msResponse.messageList) && !_.isUndefined(msResponse.messageList[0].message) - && !_.isEmpty(msResponse.messageList[0].message)){ - popupBtnOpts = [{ - label: "Show More..", - callback:function(e){ - console.log(e) - if($(e.currentTarget).text() == 'Show More..'){ - var div = '<div class="showMore connection-error-font"><br>'+msResponse.messageList[0].message.split('\n').join('<br>')+'</div>' - $(e.delegateTarget).find('.modal-body').append(div) - $(e.currentTarget).html('Show Less..') - }else{ - $(e.delegateTarget).find('.showMore').remove(); - $(e.currentTarget).html('Show More..') - } - return false; - } - }, { - label: "OK", - callback:function(){} - }]; - }else{ - popupBtnOpts = [{label: "OK", - callback:function(){} - }]; - } - var msgHtml = '<b>Connection Failed.</b></br>'+msResponse.msgDesc; - bootbox.dialog(msgHtml, popupBtnOpts); - }else{ - bootbox.alert("Connection Failed."); - } - }else{ - bootbox.alert("Connection Failed."); - } - } - else - bootbox.alert("Connected Successfully."); - }, - error: function (msResponse, options) { - bootbox.alert("Connection Failed."); - } - }); - }, - onCancel : function(){ - XAUtil.allowNavigation(); - App.appRouter.navigate("#!/policymanager",{trigger: true}); - }, - /** on close */ - onClose: function(){ - XAUtil.allowNavigation(); - } - }); - - return AssetCreate; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/asset/AssetForm.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/asset/AssetForm.js b/security-admin/src/main/webapp/scripts/views/asset/AssetForm.js deleted file mode 100644 index 0db1aa3..0000000 --- a/security-admin/src/main/webapp/scripts/views/asset/AssetForm.js +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); - - require('backbone-forms'); - require('backbone-forms.list'); - require('backbone-forms.templates'); - require('backbone-forms.XAOverrides'); - - var AssetForm = Backbone.Form.extend( - /** @lends AssetForm */ - { - _viewName : 'AssetForm', - - /** - * intialize a new AssetForm Form View - * @constructs - */ - initialize: function(options) { - console.log("initialized a AssetForm Form View"); - Backbone.Form.prototype.initialize.call(this, options); - - _.extend(this, _.pick(options, '')); - - this.bindEvents(); - }, - - /** all events binding here */ - bindEvents : function(){ - this.on('assetType:change', function(form, fieldEditor){ - this.evFieldChange(form, fieldEditor); - }); - }, - - /** schema for the form - * If you see that a field should behave similarly in all the forms, its - * better to make the change in this.model.schema itself - * - * Override here ONLY if special case!! - */ - - fields: ['name', 'description', 'activeStatus', 'assetType','config', '_vPassword'], - - schema : function(){ - - var attrs = _.pick(_.result(this.model,'schemaBase'), 'name', 'description', 'activeStatus', 'assetType', 'config'); - - attrs._vPassword = { - type : 'Password', - title : localization.tt("lbl.assetConfigPass") - }; - $.extend(attrs,{ - userName : { - type : 'Text', -// fieldClass : "hdfs hive knox", - title : this.model.propertiesNameMap.userName+" *",//'xalogin.username' - validators : ['required'],//{type:'regexp',regexp:/^[a-z][a-z0-9,._'-]+$/i,message :'Please enter valid username'}], - editorAttrs :{'class':'stretchTextInput'}//,'maxlength': 48} - }, - passwordKeytabfile : { - type : 'Password', -// fieldClass : "hdfs hive knox", - title : this.model.propertiesNameMap.passwordKeytabfile+" *",//'xalogin.password' - validators:['required'], - editorAttrs :{'class':'stretchTextInput'} - }, - fsDefaultName : { - fieldClass : "hdfs", - title : this.model.propertiesNameMap.fsDefaultName +" *",//'core-site.fs.default.name', - validators:['required'], - /*{type:'regexp',regexp:new RegExp('(hdfs://)\\s*(.*?):[0-9]{1,5}'), - message :localization.tt('serverMsg.fsDefaultNameValidationError')}],*/ - editorAttrs :{'class':'stretchTextInput'} - - - }, - authorization : { - fieldClass : "hdfs", - title : this.model.propertiesNameMap.authorization,//'core-site.hadoop.security.authorization', - editorAttrs :{'class':'stretchTextInput'} - }, - authentication : { - fieldClass : "hdfs", - title : this.model.propertiesNameMap.authentication,//'core-site.hadoop.security.authentication' - editorAttrs :{'class':'stretchTextInput'} - }, - auth_to_local : { - fieldClass : "hdfs", - title : this.model.propertiesNameMap.auth_to_local,//'core-site.hadoop.security.auth_to_local' - editorAttrs :{'class':'stretchTextInput'} - }, - datanode : { - title : this.model.propertiesNameMap.datanode,//'hdfs-site.dfs.datanode.kerberos.principal', - fieldClass : "hdfs", - editorAttrs :{'class':'stretchTextInput'} - }, - namenode : { - title : this.model.propertiesNameMap.namenode,//'hdfs-site.dfs.namenode.kerberos.principal', - fieldClass : "hdfs", - editorAttrs :{'class':'stretchTextInput'} - }, - secNamenode : { - title : this.model.propertiesNameMap.secNamenode,//'hdfs-site.dfs.secondary.namenode.kerberos.principal', - fieldClass : "hdfs", - editorAttrs :{'class':'stretchTextInput'} - }, - hadoopRpcProtection : { - title : this.model.propertiesNameMap.hadoopRpcProtection,//'hadoop.rpc.protection', - fieldClass : "hdfs", - editorAttrs :{'class':'stretchTextInput'} - }, - driverClassName : { - fieldClass : "hive", - title : this.model.propertiesNameMap.driverClassName,//'xalogin.jdbc.driverClassName' - editorAttrs :{'class':'stretchTextInput'} - }, - url : { - fieldClass : "hive", - title : this.model.propertiesNameMap.url,//'xalogin.jdbc.url' - editorAttrs :{'class':'stretchTextInput'} - }, - masterKerberos : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.masterKerberos, - editorAttrs :{'class':'stretchTextInput'} - }, - rpcEngine : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.rpcEngine, - editorAttrs :{'class':'stretchTextInput'} - }, - rpcProtection : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.rpcProtection, - editorAttrs :{'class':'stretchTextInput'} - }, - securityAuthentication : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.securityAuthentication+" *", - editorAttrs :{'class':'stretchTextInput'} - }, - zookeeperProperty : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.zookeeperProperty+" *", - editorAttrs :{'class':'stretchTextInput'} - }, - zookeeperQuorum : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.zookeeperQuorum+" *", - editorAttrs :{'class':'stretchTextInput'} - }, - zookeeperZnodeParent : { - fieldClass : "hbase", - title : this.model.propertiesNameMap.zookeeperZnodeParent+" *", - editorAttrs :{'class':'stretchTextInput'} - }, - knoxUrl : { - fieldClass : "knox", - title : this.model.propertiesNameMap.knoxUrl, - editorAttrs :{'class':'stretchTextInput'} - }, - nimbusUrl : { - fieldClass : "storm", - title : this.model.propertiesNameMap.nimbusUrl, - editorAttrs :{'class':'stretchTextInput'} - }, - commonnameforcertificate : { - title : localization.tt('lbl.commonNameForCertificate'), - editorAttrs :{'class':'stretchTextInput'} - } - }); - return attrs; - }, - - /** on render callback */ - render: function(options) { - Backbone.Form.prototype.render.call(this, options); - - this.initializePlugins(); - this.renderCustomFields(); - if(!this.model.isNew()) - this.fields.assetType.editor.$el.prop('disabled',true); - else - this.fields.activeStatus.editor.setValue(XAEnums.ActiveStatus.STATUS_ENABLED.value); - }, - - /** all custom field rendering */ - renderCustomFields: function(){ - /*this.$('[data-customfields="field1"]').append(new fieldView({ - }).render().el);*/ - //TODO FIXME - - if(this.model) - this.assetTypeChanged(this.model.get('assetType')); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - - formValidation : function(){ - //return false; - return true; - }, - - beforeSave : function(){ - var that = this; - //this.model.set('assetId', XAGlobals.hardcoded.HDFSAssetId); -// var attrs = ['userName','passwordKeytabfile','fsDefaultName' ,'authorization', 'authentication', 'auth_to_local', 'datanode', 'namenode', 'secNamenode', -// 'driverClassName', 'url']; - var attrs; - switch(parseInt(this.model.get('assetType'))){ - case XAEnums.AssetType.ASSET_HDFS.value : - attrs = ['userName','passwordKeytabfile','fsDefaultName' ,'authorization', 'authentication', 'auth_to_local', 'datanode', 'namenode', 'secNamenode', - 'hadoopRpcProtection', 'commonnameforcertificate']; - break; - case XAEnums.AssetType.ASSET_HIVE.value : - attrs = ['userName','passwordKeytabfile','driverClassName', 'url','commonnameforcertificate']; - break; - case XAEnums.AssetType.ASSET_HBASE.value : -// attrs = ['userName','passwordKeytabfile','authorization', 'authentication', 'auth_to_local', 'datanode', 'namenode', 'secNamenode', -// 'masterKerberos','rpcEngine','rpcProtection','securityAuthentication','zookeeperProperty','zookeeperQuorum','zookeeperZnodeParent','commonnameforcertificate']; - attrs = ['userName','passwordKeytabfile', 'authentication', 'masterKerberos', - 'securityAuthentication','zookeeperProperty','zookeeperQuorum','zookeeperZnodeParent']; - break; - case XAEnums.AssetType.ASSET_KNOX.value : - attrs = ['userName','passwordKeytabfile','knoxUrl','commonnameforcertificate']; - break; - case XAEnums.AssetType.ASSET_STORM.value : - attrs = ['userName','passwordKeytabfile','nimbusUrl','commonnameforcertificate']; - } - var obj = _.pick(this.model.attributes,attrs); - _.each(obj,function(val,prop){ - obj[that.model.propertiesNameMap[prop]] = obj[prop]; - delete obj[prop]; - this.model.unset(prop); - },this); - this.model.set('config',JSON.stringify(obj)); - }, - evFieldChange : function(form, fieldEditor){ - this.assetTypeChanged(fieldEditor.getValue()); - }, - assetTypeChanged : function(val){ - this.$('.hive').parents('fieldset').show(); - this.$('.hdfs,.hive,.hbase,.knox,.storm').hide(); - switch(parseInt(val)){ - case XAEnums.AssetType.ASSET_HDFS.value : - this.fields.fsDefaultName.$el.find('.control-label').html(this.model.propertiesNameMap.fsDefaultName+'*'); -// this.fields.fsDefaultName.editor.validators.push('required'); - this.$('.hdfs').show(); - break; - case XAEnums.AssetType.ASSET_HIVE.value : - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - this.$('.hive').show(); - break; - case XAEnums.AssetType.ASSET_HBASE.value : - // this.$('.hive').parents('fieldset').hide(); -// this.fields.fsDefaultName.$el.find('.control-label').html(this.model.propertiesNameMap.fsDefaultName); -// this.fields.fsDefaultName.$el.removeClass('error'); -// this.fields.fsDefaultName.$el.find('.help-inline').html(''); -// this.fields.fsDefaultName.editor.$el.val(''); - this.fields.authentication.editor.validators = ['required']; -// this.fields.authentication.schema.title = this.fields.authentication.schema.title+" *" - this.fields.authentication.$el.find('label').html(this.schema.authentication.title+" *") -// this.schema.authentication.title = this.schema.authentication.title+" *" - -// this.fields.masterKerberos.editor.validators = ['required']; - this.fields.securityAuthentication.editor.validators = ['required']; - this.fields.zookeeperProperty.editor.validators = ['required']; - this.fields.zookeeperQuorum.editor.validators = ['required']; - this.fields.zookeeperZnodeParent.editor.validators = ['required']; - - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - //Set default value to zookeeperZnodeParent - if(this.model.isNew()) - this.fields.zookeeperZnodeParent.editor.$el.val('/hbase'); - this.$('.hdfs').show(); - this.$('.hive').show();//parents('fieldset').show(); - this.$('.hbase').show(); - this.fields.driverClassName.$el.hide(); - this.fields.url.$el.hide(); - this.fields.fsDefaultName.$el.hide(); - this.fields.authorization.$el.hide(); - this.fields.auth_to_local.$el.hide(); - this.fields.datanode.$el.hide(); - this.fields.namenode.$el.hide(); - this.fields.secNamenode.$el.hide(); - this.fields.hadoopRpcProtection.$el.hide(); - this.fields.rpcEngine.$el.hide(); - this.fields.rpcProtection.$el.hide(); - this.fields.commonnameforcertificate.$el.hide(); - break; - case XAEnums.AssetType.ASSET_KNOX.value : - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - this.$('.knox').show(); - break; - case XAEnums.AssetType.ASSET_STORM.value : - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - this.$('.storm').show(); - break; - - } - /* if(val == XAEnums.AssetType.ASSET_HDFS.value){ - this.fields.fsDefaultName.$el.find('.control-label').html(this.model.propertiesNameMap.fsDefaultName+'*'); - this.fields.fsDefaultName.editor.validators.push('required'); - this.$('.hdfs').show(); - }else if(val == XAEnums.AssetType.ASSET_HIVE.value){ - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - this.$('.hive').show(); - }else{ - // this.$('.hive').parents('fieldset').hide(); - this.fields.fsDefaultName.$el.find('.control-label').html(this.model.propertiesNameMap.fsDefaultName); - this.fields.fsDefaultName.$el.removeClass('error'); - this.fields.fsDefaultName.$el.find('.help-inline').html(''); -// this.fields.fsDefaultName.editor.$el.val(''); - this.fields.fsDefaultName.editor.validators = this.removeElementFromArr(this.fields.fsDefaultName.editor.validators , 'required'); - //Set default value to zookeeperZnodeParent - if(this.model.isNew()) - this.fields.zookeeperZnodeParent.editor.$el.val('/hbase'); - this.$('.hdfs').show(); - this.$('.hive').show();//parents('fieldset').show(); - this.fields.driverClassName.$el.hide(); - this.fields.url.$el.hide(); - this.$('.hbase').show(); - }*/ - this.fields.userName.setValue(''); - this.fields.passwordKeytabfile.setValue(''); - if(! this.model.isNew()){ - if(val == this.model.get('assetType') && this.model.get('config')){ - var configObj=$.parseJSON(this.model.get('config')); - this.fields.userName.setValue(configObj[this.model.propertiesNameMap.userName]); - this.fields.passwordKeytabfile.setValue(configObj[this.model.propertiesNameMap.passwordKeytabfile]); - } - } - - }, - removeElementFromArr : function(arr ,elem){ - var index = $.inArray(elem,arr); - if(index >= 0) arr.splice(index,1); - return arr; - } - }); - - return AssetForm; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/asset/AssetTableLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/asset/AssetTableLayout.js b/security-admin/src/main/webapp/scripts/views/asset/AssetTableLayout.js deleted file mode 100644 index 284135b..0000000 --- a/security-admin/src/main/webapp/scripts/views/asset/AssetTableLayout.js +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - var Communicator = require('communicator'); - var App = require('App'); - var XALinks = require('modules/XALinks'); - var XAEnums = require('utils/XAEnums'); - var XAGlobals = require('utils/XAGlobals'); - var localization = require('utils/XALangSupport'); - - var XABackgrid = require('views/common/XABackgrid'); - var XATableLayout = require('views/common/XATableLayout'); - - var AssettablelayoutTmpl = require('hbs!tmpl/asset/AssetTableLayout_tmpl'); - - require('backgrid-filter'); - require('backgrid-paginator'); - require('bootbox'); - - var AssetTableLayout = Backbone.Marionette.Layout.extend( - /** @lends AssetTableLayout */ - { - _viewName : 'AssetTableLayout', - - template: AssettablelayoutTmpl, - - /* - breadCrumbs :function(){ - if(this.model.isNew()) - return [XALinks.get(''), XALinks.get('')]; - else - return [XALinks.get(''), XALinks.get('')]; - }, - */ - - /** Layout sub regions */ - regions: { - 'rTableList' : 'div[data-id="r_assettable"]' - }, - - /** ui selector cache */ - ui: {}, - - /** ui events hash */ - events: function() { - var events = {}; - //events['change ' + this.ui.input] = 'onInputChange'; - return events; - }, - - /** - * intialize a new AssetTableLayout Layout - * @constructs - */ - initialize: function(options) { - console.log("initialized a AssetTableLayout Layout"); - - _.extend(this, _.pick(options, '')); - - this.collection.extraSearchParams = { - //resourceType : XAEnums.AssetType.ASSET_HDFS.value - }; - - this.bindEvents(); - }, - - /** all events binding here */ - bindEvents : function(){ - /*this.listenTo(this.model, "change:foo", this.modelChanged, this);*/ - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - this.initializePlugins(); - this.renderTable(); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - - renderTable : function(){ - var that = this; - var TableRow = Backgrid.Row.extend({ - events: { - 'click' : 'onClick' - }, - onClick: function (e) { - if($(e.toElement).is('.icon-edit')) - return; - this.$el.parent('tbody').find('tr').removeClass('tr-active'); - this.$el.toggleClass('tr-active'); - that.rFolderInfo.show(new vFolderInfo({ - model : this.model - })); - - } - }); - - this.rTableList.show(new XATableLayout({ - columns: this.getColumns(), - collection: this.collection, - includeFilter : false, - gridOpts : { - row: TableRow, - header : XABackgrid, - emptyText : localization.tt('plcHldr.noAssets') - }, - filterOpts : { - name: ['name'], - placeholder: localization.tt('plcHldr.searchByResourcePath'), - wait: 150 - } - })); - }, - - getColumns : function(){ - var that = this; - var cols = { - name : { - label : localization.tt("lbl.resourcePath"), - placeholder : 'Resource Path', - editable:false - //cell :"uri," - /*href: function(model){ - return '#!/policy/' + model.id; - }*/ - } - - }; - return this.collection.constructor.getTableCols(cols, this.collection); - }, - - - /** on close */ - onClose: function(){ - } - - }); - - return AssetTableLayout; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyCreate.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyCreate.js b/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyCreate.js deleted file mode 100644 index 0bcb141..0000000 --- a/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyCreate.js +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var App = require('App'); - var Backbone = require('backbone'); - var XALinks = require('modules/XALinks'); - - var XAUtil = require('utils/XAUtils'); - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); - var VXResourceList = require('collections/VXResourceList'); - - var HbasePolicyForm = require('views/hbase/HbasePolicyForm'); - var HbasepolicycreateTmpl = require('hbs!tmpl/hbase/HbasePolicyCreate_tmpl'); - - var HbasePolicyCreate = Backbone.Marionette.Layout.extend( - /** @lends HbasePolicyCreate */ - { - _viewName : 'HbasePolicyCreate', - - template: HbasepolicycreateTmpl, - templateHelpers : function(){ - return { - editPolicy : this.editPolicy - }; - }, - breadCrumbs :function(){ - if(this.model.isNew()) - return [XALinks.get('RepositoryManager'),XALinks.get('ManageHbasePolicies',{model : this.assetModel}),XALinks.get('PolicyCreate')]; - else - return [XALinks.get('RepositoryManager'),XALinks.get('ManageHbasePolicies',{model : this.assetModel}),XALinks.get('PolicyEdit')]; - } , - /** Layout sub regions */ - regions: { - 'rForm' :'div[data-id="r_form"]' - }, - - /** ui selector cache */ - ui: { - 'btnSave' : '[data-id="save"]', - 'btnCancel' : '[data-id="cancel"]', - 'btnDelete' : '[data-id="delete"]', - 'policyDisabledAlert' : '[data-id="policyDisabledAlert"]' - }, - - /** ui events hash */ - events: function() { - var events = {}; - events['click ' + this.ui.btnSave] = 'onSave'; - events['click ' + this.ui.btnCancel] = 'onCancel'; - events['click ' + this.ui.btnDelete] = 'onDelete'; - return events; - }, - - /** - * intialize a new HbasePolicyCreate Layout - * @constructs - */ - initialize: function(options) { - var that = this; - console.log("initialized a HbasePolicyCreate Layout"); - - _.extend(this, _.pick(options,'assetModel')); - this.bindEvents(); - - that.form = new HbasePolicyForm({ - template : require('hbs!tmpl/hbase/HbasePolicyForm_tmpl'), - model : this.model, - assetModel : this.assetModel - }); - - this.editPolicy = this.model.has('id') ? true : false; - }, - - /** all events binding here */ - bindEvents : function(){ - /*this.listenTo(this.model, "change:foo", this.modelChanged, this);*/ - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - XAUtil.showAlerForDisabledPolicy(this); - this.rForm.show(this.form); - this.rForm.$el.dirtyFields(); - XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavHbasePolicyForm'), this.rForm.$el); - this.initializePlugins(); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - popupCallBack : function(msg,validateObj){ - var that = this; - XAUtil.alertPopup({ - msg :msg, - callback : function(){ - // if(validateObj.auditLoggin) - // that.savePolicy(); - } - }); - }, - onSave : function(){ - var that =this, valid = false; - var errors = this.form.commit({validate : false}); - if(! _.isEmpty(errors)){ - return; - } - var validateObj = this.form.formValidation(); - valid = (validateObj.groupSet && validateObj.permSet) || (validateObj.userSet && validateObj.userPerm); - if(!valid){ - - if(validateObj.groupSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - }else if((!validateObj.groupSet) && (validateObj.permSet)) { - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - - }else if(validateObj.userSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - }else if((!validateObj.userSet) && (validateObj.userPerm)) { - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - - }else if((!validateObj.auditLoggin) && (!validateObj.groupPermSet)){ - XAUtil.alertPopup({ - msg :localization.tt('msg.yourAuditLogginIsOff'), - callback : function(){ - /*if(!that.model.isNew()){ - that.model.destroy({success: function(model, response) { - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - App.appRouter.navigate("#!/hbase/"+that.assetModel.id+"/policies",{trigger: true}); - }}); - }else{ - XAUtil.notifyError('Error', localization.tt('msg.policyNotAddedMsg')); - App.appRouter.navigate("#!/hbase/"+that.assetModel.id+"/policies",{trigger: true}); - }*/ - } - }); - }else{ - this.savePolicy(); - } - }else{ - if(validateObj.groupSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - }else if((!validateObj.groupSet) && (validateObj.permSet)) { - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - - }else if(validateObj.userSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - }else if((!validateObj.userSet) && (validateObj.userPerm)) { - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - }else - this.savePolicy(); - } - - }, - savePolicy : function(){ - var that = this; - this.form.afterCommit(); - this.saveMethod(); - }, - saveMethod : function(){ - var that = this; - XAUtil.blockUI(); - this.model.save({},{ - wait: true, - success: function () { - XAUtil.blockUI('unblock'); - var msg = that.editPolicy ? 'Policy updated successfully' :'Policy created successfully'; - XAUtil.notifySuccess('Success', msg); - XAUtil.allowNavigation(); - if(that.editPolicy){ - App.appRouter.navigate("#!/hbase/"+that.assetModel.id+"/policies",{trigger: true}); - return; - } - - App.appRouter.navigate("#!/hbase/"+that.assetModel.id+"/policies",{trigger: false}); - - var view = require('views/hbase/HbaseTableLayout'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : that.assetModel.id - } - }); - - resourceListForAsset.fetch({ - cache : false, - data : { - // 'resourceType':XAEnums.AssetType.ASSET_HIVE.value, - 'assetId' :that.assetModel.id - } - }).done(function(){ - var newColl = resourceListForAsset; - resourceListForAsset.getLastPage({ - cache : false, - data : { - // 'resourceType':XAEnums.AssetType.ASSET_HIVE.value, - 'assetId' :that.assetModel.id - } - }).done(function(){ - var model = newColl.get(that.model.id); - if(model){ - model.trigger("model1:highlightBackgridRow"); - } - }); - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : that.assetModel - })); - - }); - - console.log("success"); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - if( response.responseJSON.messageList && response.responseJSON.messageList.length > 0 && !_.isUndefined(response.responseJSON.messageList[0].fieldName)){ - if(response.responseJSON.messageList[0].fieldName == "parentPermission"){ - XAUtil.confirmPopup({ - msg :response.responseJSON.msgDesc, - callback : function(){ - that.model.set('checkParentPermission',XAEnums.BooleanValue.BOOL_FALSE.value); - that.saveMethod(); - } - }); - }else - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else{ - // that.form.fields.name.setError(response.responseJSON.msgDesc); - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - } - }else - XAUtil.notifyError('Error', 'Error creating Policy!'); - console.log("error"); - } - }); - }, - - onDelete :function(){ - var that = this; - XAUtil.confirmPopup({ - //msg :localize.tt('msg.confirmDelete'), - msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - that.model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - XAUtil.allowNavigation(); - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - App.appRouter.navigate("#!/hbase/"+that.assetModel.id+"/policies",{trigger: true}); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error deleting Policy!'); - console.log("error"); - } - }); - - } - }); - }, - onCancel : function(){ - XAUtil.allowNavigation(); - App.appRouter.navigate("#!/hbase/"+this.assetModel.id+"/policies",{trigger: true}); - - }, - - /** on close */ - onClose: function(){ - XAUtil.allowNavigation(); - } - - }); - - return HbasePolicyCreate; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyForm.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyForm.js b/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyForm.js deleted file mode 100644 index 4a8ecc1..0000000 --- a/security-admin/src/main/webapp/scripts/views/hbase/HbasePolicyForm.js +++ /dev/null @@ -1,574 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); - var XAUtil = require('utils/XAUtils'); - - var VXPermMapList = require('collections/VXPermMapList'); - var VXGroupList = require('collections/VXGroupList'); - var VXAuditMapList = require('collections/VXAuditMapList'); - var VXAuditMap = require('models/VXAuditMap'); - var VXPermMap = require('models/VXPermMap'); - var VXUserList = require('collections/VXUserList'); - var FormInputItemList = require('views/common/FormInputItemList'); - var UserPermissionList = require('views/common/UserPermissionList'); - - - - require('Backbone.BootstrapModal'); - require('backbone-forms.list'); - require('backbone-forms.templates'); - require('backbone-forms'); - - var HbasePolicyForm = Backbone.Form.extend( - /** @lends PolicyForm */ - { - _viewName : 'PolicyForm', - - type : { - //DATABASE : 1, - TABLE : 2, - COLUMN : 3, - COLUMN_FAMILIES : 4 - }, - - /** - * intialize a new PolicyForm Form View - * @constructs - */ - initialize: function(options) { - console.log("initialized a PolicyForm Form View"); - Backbone.Form.prototype.initialize.call(this, options); - - _.extend(this, _.pick(options, 'assetModel')); - this.initializeCollection(); - this.bindEvents(); - }, - - /** all events binding here */ - bindEvents : function(){ - this.on('_vAuditListToggle:change', function(form, fieldEditor){ - this.evAuditChange(form, fieldEditor); - }); - this.on('resourceStatus:change', function(form, fieldEditor){ - this.evResourceStatusChange(form, fieldEditor); - }); - /*this.on('isEncrypt:change', function(form, fieldEditor){ - this.evEncryptChange(form, fieldEditor); - });*/ - }, - initializeCollection: function(){ - this.permMapList = this.model.isNew() ? new VXPermMapList() : this.model.get('permMapList'); - this.auditList = this.model.isNew() ? new VXAuditMapList() : this.model.get('auditList'); - - /*If the model passed to the fn is new return an empty collection - * otherwise return a collection that has models like - * { - * groupId : 5, - * permissionList : [4,3] - * } - * The formInputList will be passed to the forminputitemlist view. - */ - - this.formInputList = XAUtil.makeCollForGroupPermission(this.model); - this.userPermInputList = XAUtil.makeCollForUserPermission(this.model); - - }, - /** fields for the form - */ - // fields: ['name', 'description', '_vAuditListToggle', 'isEncrypt','isRecursive'], - schema :function(){ - var that = this; - //var plugginAttr = this.getPlugginAttr(true); - return { - policyName : { - type : 'Text', - title : localization.tt("lbl.policyName"), -// validators : [{'type' :'required'}] - editorAttrs :{ maxlength: 255} - }, - tables : { - type : 'Select2Remote', - title : localization.tt("lbl.selectTableName")+' *', - editorAttrs :{'data-placeholder': 'Select Tables'}, - validators : ['required'],//,{type:'regexp',regexp:/^[a-zA-Z*?][a-zA-Z0-9_'&-/\$]*[A-Za-z0-9]*$/i,message :localization.tt('validationMessages.enterValidName')}], - pluginAttr : this.getPlugginAttr(true,this.type.TABLE), - options : function(callback, editor){ - callback(); - } - }, - columnFamilies : { - type : 'Select2Remote', - title : localization.tt("lbl.selectColumnFamilies"), - editorAttrs :{'data-placeholder': 'Select Column Families'}, - // editorAttrs :{'disabled' :'disabled','data-placeholder': 'Select Column Families'}, - //validators : [{type:'regexp',regexp:/^[a-zA-Z*?][a-zA-Z0-9_'&-/\$]*[A-Za-z0-9]*$/i,message :localization.tt('validationMessages.enterValidName')}], - pluginAttr : this.getPlugginAttr(true,this.type.COLUMN_FAMILIES), - options : function(callback, editor){ - callback(); - } - - - }, - columns : { - type : 'Select2Remote', -// type : 'Text', - title : localization.tt("lbl.enterColumnName"), - // validators : [{type:'regexp',regexp:/^[a-zA-Z*?][a-zA-Z0-9_'&-/\$]*[A-Za-z0-9]*$/i,message :localization.tt('validationMessages.enterValidName')}], - editorAttrs :{ 'placeholder': 'Enter Column Name'}, - pluginAttr : this.getPlugginAttr(false,this.type.COLUMN), - }, - _vAuditListToggle : { - type : 'Switch', - title : localization.tt("lbl.auditLogging"), - listType : 'VNameValue', - switchOn : true - }, - /*isEncrypt : { - type : 'Switch', - title : localization.tt("lbl.encrypted"), - switchOn : false - // fieldAttrs : {style : 'display:none;'} - },*/ - permMapList : { - getValue : function(){ - console.log(this); - } - }, - resourceStatus : { - type : 'Switch', - title : localization.tt("lbl.policyStatus"), - onText : 'enabled', - offText : 'disabled', - width : '85', - switchOn : true - }, - description : { - type : 'TextArea', - title : localization.tt("lbl.description"), - // validators : [/^[A-Za-z ,.'-]+$/i], - template :_.template('<div class="altField" data-editor></div>') - }, - }; - }, - - evAuditChange : function(form, fieldEditor){ - XAUtil.checkDirtyFieldForToggle(fieldEditor); - if(fieldEditor.getValue() == 1){ - this.model.set('auditList', new VXAuditMapList(new VXAuditMap({ - 'auditType' : XAEnums.XAAuditType.XA_AUDIT_TYPE_ALL.value,//fieldEditor.getValue()// - 'resourceId' :this.model.get('id') - - }))); - } else { - var validation = this.formValidation(); - if(validation.groupPermSet || validation.isUsers) - this.model.unset('auditList'); - else{ - XAUtil.alertPopup({ - msg :localization.tt("msg.policyNotHavingPerm"), - callback : function(){ - fieldEditor.setValue('ON'); - } - }); - } - } - console.log(fieldEditor); - }, - evResourceStatusChange : function(form, fieldEditor){ - XAUtil.checkDirtyFieldForToggle(fieldEditor); - }, - evEncryptChange : function(form, fieldEditor){ - XAUtil.checkDirtyFieldForToggle(fieldEditor); - }, - /** on render callback */ - render: function(options) { - var that = this; - Backbone.Form.prototype.render.call(this, options); - - this.initializePlugins(); - this.renderSelectTagsFields(); - this.renderCustomFields(); - if(!this.model.isNew()){ - this.setUpSwitches(); - if(!_.isEmpty(this.fields.tables.editor.$el.val())) - that.fields.columnFamilies.editor.$el.prop('disabled',false); - if(!_.isEmpty(this.fields.columnFamilies.editor.$el.val())) - that.fields.columns.editor.$el.prop('disabled',false); - } - if(this.model.isNew() && this.fields._vAuditListToggle.editor.getValue() == 1){ - this.model.set('auditList', new VXAuditMapList(new VXAuditMap({ - 'auditType' : XAEnums.XAAuditType.XA_AUDIT_TYPE_ALL.value,//fieldEditor.getValue()// - 'resourceId' :this.model.get('id') - - }))); - } - }, - renderSelectTagsFields :function(){ - var that = this; - - this.fields.tables.editor.$el.on('change',function(e){ - console.log('change on table Name'); - that.checkMultiselectDirtyField(e, that.type.TABLE); - that.fields.tables.setValue(that.fields.tables.editor.$el.select2('data').map(function(obj){return obj.text}).toString()); - - }); - this.fields.columnFamilies.editor.$el.on('change',function(e){ - console.log('change on column Families Name'); - that.checkMultiselectDirtyField(e, that.type.COLUMN_FAMILIES); - that.fields.columnFamilies.setValue(that.fields.columnFamilies.editor.$el.select2('data').map(function(obj){return obj.text}).toString()); - }); - - }, - getDataParams : function(type, term){ - var dataParams = { - // dataSourceName : 'hadoopdev', - dataSourceName : this.assetModel.get('name') - // databaseName: term, - }; - if (type == this.type.TABLE && this.fields) { - //dataParams.databaseName = this.fields.databases.editor.$el.select2('data')[0].text; - dataParams.tableName = term; - } - if (type == this.type.COLUMN_FAMILIES && !_.isEmpty(this.fields.tables.getValue())) { - dataParams.tableName = this.fields.tables.editor.$el.select2('data')[0].text; - dataParams.columnFamilies = _.isEmpty(term) ? "*" : term; - } - return dataParams; - }, - getPlugginAttr :function(autocomplete, searchType){ - var that =this; - var type = searchType; - if(!autocomplete) - return{tags : true,width :'220px',multiple: true,minimumInputLength: 1}; - else { - - - return { - closeOnSelect : true, - //placeholder : 'Select User', - tags:true, - multiple: true, - minimumInputLength: 1, - width :'220px', - tokenSeparators: [",", " "], - initSelection : function (element, callback) { - var data = []; - $(element.val().split(",")).each(function () { - data.push({id: this, text: this}); - }); - callback(data); - }, - createSearchChoice: function(term, data) { - if ($(data).filter(function() { - return this.text.localeCompare(term) === 0; - }).length === 0) { - return { - id : term, - text: term - }; - } - }, - /*query: function (query) { - var url = "service/assets/hive/resources"; - var data = _.extend(that.getDataParams(type, query.term)); - //var results = [ {id: query.term, path: query.term}]; - - $.get(url, data, function (resp) { - var serverRes = []; - if(resp.resultSize){ - serverRes = resp.vXStrings.map(function(m, i){ return {id : m.value, path: m.value}; }); - } - query.callback({results: serverRes}); - }, 'json'); - - //query.callback({results: results}); - },*/ - - ajax: { - url: "service/assets/hbase/resources", - dataType: 'json', - params : { - timeout: 3000 - }, - cache: false, - data: function (term, page) { - return _.extend(that.getDataParams(type, term)); - - }, - results: function (data, page) { - var results = []; - if(!_.isUndefined(data)){ - if(data.resultSize != "0"){ - results = data.vXStrings.map(function(m, i){ return {id : m.value, text: m.value}; }); - } - } - return { - results : results - }; - }, - transport: function (options) { - $.ajax(options).error(function() { - console.log("ajax failed"); - this.success({ - resultSize : 0 - }); - }); - /*$.ajax.error(function(data) { - console.log("ajax failed"); - return { - results : [] - }; - });*/ - - } - - }, - formatResult : function(result){ - return result.text; - }, - formatSelection : function(result){ - return result.text; - }, - formatNoMatches : function(term){ - switch (type){ - case that.type.COLUMN_FAMILIS :return localization.tt("msg.enterAlteastOneCharactere"); - case that.type.TABLE :return localization.tt("msg.enterAlteastOneCharactere"); - case that.type.COLUMN :return localization.tt("msg.enterAlteastOneCharactere"); - default : return "No Matches found"; - } - } - }; - } - }, - formValidation : function(){ - var groupSet = false,permSet = false,auditStatus= false,encryptStatus= false,groupPermSet = false, - userSet=false,userPerm = false,isUsers =false; - console.log('validation called..'); - var breakFlag =false; - this.formInputList.each(function(m){ - if(m.has('groupId') || m.has('_vPermList')){ - if(! breakFlag){ - groupSet = m.has('groupId') ? true : false ; - if(!m.has('_vPermList')){ - permSet = false; - }else - permSet = true; - if(groupSet && permSet) - groupPermSet = true; - else - breakFlag=true; - } - } - }); - breakFlag = false; - this.userPermInputList.each(function(m){ - if(!_.isUndefined(m.attributes)){ - if(! breakFlag){ - userSet = m.has('userId') || m.has('userName') ? true : false ;//|| userSet; - if(!m.has('_vPermList')){ - userPerm = false; - }else - userPerm = true; - if(userSet && userPerm) - isUsers = true; - else - breakFlag=true; - } - } - }); - auditStatus = this.fields._vAuditListToggle.editor.getValue(); - //encryptStatus = this.fields.isEncrypt.editor.getValue(); - var auditLoggin = (auditStatus == XAEnums.BooleanValue.BOOL_TRUE.value) ? true : false; - //var encrypted = (encryptStatus == XAEnums.BooleanValue.BOOL_TRUE.value) ? true : false; - /*if((groupSet && permSet) || auditLoggin || encrypted ) - return true;*/ - - return {groupPermSet: groupPermSet , groupSet : groupSet,permSet : permSet,auditLoggin :auditLoggin,/*encrypted : encrypted,*/ - userSet : userSet,userPerm:userPerm,isUsers:isUsers}; - }, - setUpSwitches :function(){ - var that = this; - var encryptStatus = false,auditStatus = false,recursiveStatus = false; - auditStatus = this.model.has('auditList') ? true : false; - this.fields._vAuditListToggle.editor.setValue(auditStatus); - - /*_.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(that.model.get('isEncrypt')) == m.value) - encryptStatus = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - }); - this.fields.isEncrypt.editor.setValue(encryptStatus); */ - if(parseInt(this.model.get('resourceStatus')) != XAEnums.BooleanValue.BOOL_TRUE.value) - this.fields.resourceStatus.editor.setValue(false); - }, - /** all custom field rendering */ - renderCustomFields: function(){ - var that = this; - this.groupList = new VXGroupList(); - var params = {sortBy : 'name', cache :false}; - this.groupList.setPageSize(100,{fetch:false}); - this.groupList.fetch({ - cache :true, - data : params - }).done(function(){ - that.$('[data-customfields="groupPerms"]').html(new FormInputItemList({ - collection : that.formInputList, - groupList : that.groupList, - model : that.model, - policyType : XAEnums.AssetType.ASSET_HBASE.value - - }).render().el); - }); - - this.userList = new VXUserList(); - var params = {sortBy : 'name', cache :false}; - this.userList.setPageSize(100,{fetch:false}); - this.userList.fetch({ - cache :true, - data : params - }).done(function(){ - that.$('[data-customfields="userPerms"]').html(new UserPermissionList({ - collection : that.userPermInputList, - model : that.model, - userList : that.userList, - policyType : XAEnums.AssetType.ASSET_HBASE.value - }).render().el); - }); - }, - afterCommit : function(){ - var that = this; - //TODO FIXME remove the hard coding - //this.model.set('assetId', XAGlobals.hardcoded.HiveAssetId); - this.model.set('assetId', this.assetModel.id); - var permMapList = new VXPermMapList(); - this.formInputList.each(function(m){ - if(!_.isUndefined(m.get('groupId'))){ - var uniqueID = _.uniqueId(new Date()+':'); - _.each(m.get('groupId').split(","),function(groupId){ - _.each(m.get('_vPermList'), function(perm){ - var params = { - //groupId: m.get('groupId'), - groupId: groupId, - permFor : XAEnums.XAPermForType.XA_PERM_FOR_GROUP.value, - permType : perm.permType, - permGroup : uniqueID - }; - if(parseInt(groupId) == perm.groupId) - params = $.extend(params, {id : perm.id}); - //TODO FIXME remove the hardcoding - permMapList.add(new VXPermMap(params)); - }, this); - }); - } - }, this); - - this.userPermInputList.each(function(m){ - if(!_.isUndefined(m.get('userId'))){ - var uniqueID = _.uniqueId(new Date()+':'); - _.each(m.get('userId').split(","),function(userId){ - _.each(m.get('_vPermList'), function(perm){ - var params = { - //groupId: m.get('groupId'), - userId: userId, - permFor : XAEnums.XAPermForType.XA_PERM_FOR_USER.value, - permType : perm.permType, - permGroup : uniqueID - }; - if(parseInt(userId) == perm.userId) - params = $.extend(params, {id : perm.id}); - //TODO FIXME remove the hardcoding - permMapList.add(new VXPermMap(params)); - }, this); - }); - } - }, this); - - this.model.set('permMapList', permMapList); - var columns = !_.isEmpty(this.model.get('columns')); - var columnFamilies = !_.isEmpty(this.model.get('columnFamilies')); - - if(columns) - this.model.set('resourceType',XAEnums.ResourceType.RESOURCE_COLUMN.value); - else if(columnFamilies) - this.model.set('resourceType',XAEnums.ResourceType.RESOURCE_COL_FAM.value); - else - this.model.set('resourceType',XAEnums.ResourceType.RESOURCE_TABLE.value); - - this.setResourceTypeAsPerWildCard(); - //TODO Already handled by server side so we need to remove following line - if(_.isEmpty(this.model.get('columnFamilies'))) { - this.model.unset('columnFamilies'); - this.model.unset('columns'); - } - - if(_.isEmpty(this.model.get('columns'))) this.model.unset('columns'); - if(this.model.get('resourceStatus') != XAEnums.BooleanValue.BOOL_TRUE.value){ - this.model.set('resourceStatus', XAEnums.ActiveStatus.STATUS_DISABLED.value); - } - - - }, - checkMultiselectDirtyField : function(e, type){ - var elem = $(e.currentTarget),columnName='',newNameList = [], nameList = []; - switch(type){ - case 2 :columnName = 'tables';break; - case 4 :columnName = 'columnFamilies';break; - } - if(!_.isUndefined(this.model.get(columnName)) && !_.isEqual(this.model.get(columnName),"")) - nameList = this.model.get(columnName).split(','); - if(!_.isEqual(e.currentTarget.value, "")) - newNameList = e.currentTarget.value.split(','); - XAUtil.checkDirtyField(nameList, newNameList, elem); - }, - setResourceTypeAsPerWildCard :function(){ - var type = this.model.get('resourceType'); - //Set resourceType as per WildCard operator '*' - switch(this.model.get('resourceType')){ - case XAEnums.ResourceType.RESOURCE_COLUMN.value : - if(_.isEqual(this.model.get('columns'),"*")){ - if(_.isEqual(this.model.get('columnFamilies'),"*")) - type = XAEnums.ResourceType.RESOURCE_TABLE.value; - else - type = XAEnums.ResourceType.RESOURCE_COL_FAM.value; - - } - break; - case XAEnums.ResourceType.RESOURCE_COL_FAM.value : - if(_.isEqual(this.model.get('columnFamilies'),"*")){ - type = XAEnums.ResourceType.RESOURCE_TABLE.value; - } - break; - } - this.model.set('resourceType',type); - }, - /* all post render plugin initialization */ - initializePlugins: function(){ - } - - }); - - return HbasePolicyForm; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/hbase/HbaseTableLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/hbase/HbaseTableLayout.js b/security-admin/src/main/webapp/scripts/views/hbase/HbaseTableLayout.js deleted file mode 100644 index 4db270a..0000000 --- a/security-admin/src/main/webapp/scripts/views/hbase/HbaseTableLayout.js +++ /dev/null @@ -1,393 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - - var XAEnums = require('utils/XAEnums'); - var XALinks = require('modules/XALinks'); - var XAGlobals = require('utils/XAGlobals'); - var SessionMgr = require('mgrs/SessionMgr'); - var XAUtil = require('utils/XAUtils'); - - var VXResource = require('models/VXResource'); - - var XABackgrid = require('views/common/XABackgrid'); - var XATableLayout = require('views/common/XATableLayout'); - var localization = require('utils/XALangSupport'); - var vFolderInfo = require('views/folders/FolderInfo'); - - var HbasetablelayoutTmpl = require('hbs!tmpl/hbase/HbaseTableLayout_tmpl'); - - var HbaseTableLayout = Backbone.Marionette.Layout.extend( - /** @lends HbaseTableLayout */ - { - _viewName : 'HbaseTableLayout', - - template: HbasetablelayoutTmpl, - templateHelpers :function(){ - return { - isSysAdmin :this.isSysAdmin, - assetId : this.assetModel.id, - assetModel : this.assetModel, - version : XAGlobals.version - }; - }, - breadCrumbs : function(){ - if(this.assetModel) - return [XALinks.get('RepositoryManager'),XALinks.get('ManageHbasePolicies',{model : this.assetModel})]; - else - return []; - }, - - /** Layout sub regions */ - regions: { - 'rTableList' :'div[data-id="r_tableList"]', - 'rPolicyDetail' : '#policyDetail' - }, - - /** ui selector cache */ - ui: { - 'btnExport' : 'a[data-js="export"]', - 'btnDeletePolicy' : '[data-name="deletePolicy"]', - 'btnShowMore' : '[data-id="showMore"]', - 'btnShowLess' : '[data-id="showLess"]', - 'visualSearch' : '.visual_search' - }, - - /** ui events hash */ - events: function() { - var events = {}; - //events['change ' + this.ui.input] = 'onInputChange'; - events['click ' + this.ui.btnExport] = 'onExport'; - events['click ' + this.ui.btnDeletePolicy] = 'onDelete'; - events['click ' + this.ui.btnShowMore] = 'onShowMore'; - events['click ' + this.ui.btnShowLess] = 'onShowLess'; - return events; - }, - - /** - * intialize a new HbaseTableLayout Layout - * @constructs - */ - initialize: function(options) { - console.log("initialized a HbaseTableLayout Layout"); - - _.extend(this, _.pick(options, 'assetModel')); - this.collection.extraSearchParams = { - //resourceType : XAEnums.AssetType.ASSET_HBASE.value - assetId : this.assetModel.id - }; - this.bindEvents(); - this.isSysAdmin = SessionMgr.isSystemAdmin(); - }, - - /** all events binding here */ - bindEvents : function(){ - /*this.listenTo(this.model, "change:foo", this.modelChanged, this);*/ - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - var that = this; - this.initializePlugins(); - this.addVisualSearch(); - this.renderTable(); - XAUtil.highlightDisabledPolicy(this); - }, - renderTable : function(){ - var that = this; - /*var tableRow = Backgrid.Row.extend({ - events: { - 'click' : 'onClick' - }, - initialize : function(){ - var that = this; - var args = Array.prototype.slice.apply(arguments); - Backgrid.Row.prototype.initialize.apply(this, args); - this.listenTo(this.model, 'model1:highlightBackgridRow', function(){ - that.$el.addClass("alert"); - $("html, body").animate({scrollTop: that.$el.position().top},"linear"); - setTimeout(function () { - that.$el.removeClass("alert"); - }, 1500); - }, this); - }, - onClick: function (e) { - if($(e.toElement).is('.icon-edit,.icon-trash,a,code')) - return; - this.$el.parent('tbody').find('tr').removeClass('tr-active'); - this.$el.toggleClass('tr-active'); - if(that.rPolicyDetail){ - $(that.rPolicyDetail.el).hide(); - $(that.rPolicyDetail.el).html(new vFolderInfo({ - model : this.model - }).render().$el).slideDown(); - - } - } - });*/ - this.rTableList.show(new XATableLayout({ - columns: this.getColumns(), - collection: this.collection, - includeFilter : false, - gridOpts : { -// row: tableRow, - header : XABackgrid, - emptyText : 'No Policies found!' - } - })); - }, - - getColumns : function(){ - var that = this; - var cols = { - policyName : { - cell : "uri", - href: function(model){ - return '#!/hbase/'+model.get('assetId')+'/policy/' + model.id; - }, - label : localization.tt("lbl.policyName"), - editable: false, - sortable : false - }, - tables : { - label : localization.tt("lbl.tableName")+'(s)', - cell :'html', - editable:false, - sortable : false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - return _.isUndefined(rawValue) ? '--': '<span title="'+rawValue+'">'+rawValue+'</span>'; - } - }) - }, - columnFamilies : { - label : localization.tt("lbl.columnFamilies")+'(s)', - cell :'html', - editable:false, - sortable : false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - return _.isUndefined(rawValue) ? '--': '<span title="'+rawValue+'">'+rawValue+'</span>'; - } - }) - - }, - columns : { - label : localization.tt("lbl.columnName")+'(s)', - cell :'html', - editable:false, - sortable : false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - return _.isUndefined(rawValue) ? '--': '<span title="'+rawValue+'">'+rawValue+'</span>'; - } - }) - - }, - permMapList : { - reName : 'groupName', - cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), - label : localization.tt("lbl.group"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - if(!_.isUndefined(rawValue)) - return XAUtil.showGroups(rawValue); - return '--'; - - } - }), - editable : false, - sortable : false - }, - auditList : { - label : localization.tt("lbl.auditLogging"), - cell: "html", - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue, model) { - return model.has('auditList') ? '<label class="label label-success">ON</label>' : '<label class="label label">OFF</label>'; - } - }), - click : false, - drag : false, - sortable : false, - editable : false - }, - /*isEncrypt:{ - label:localization.tt("lbl.encrypted"), - cell :"html", - editable:false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue ,model) { - return model.get('isEncrypt') == XAEnums.BooleanValue.BOOL_TRUE.value ? '<label class="label label-success">ON</label>' : '<label class="label label">OFF</label>'; - //You can use rawValue to custom your html, you can change this value using the name parameter. - } - }), - click : false, - drag : false, - onText : 'ON', - offText : 'OFF', - sortable : false - },*/ - resourceStatus:{ - label:localization.tt('lbl.status'), - cell :"html", - editable:false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - var status; - _.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(rawValue) == m.value){ - status = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - } - }); - return status ? '<label class="label label-success">Enabled</label>' : '<label class="label label-important">Disabled</label>'; - } - }), - click : false, - drag : false, - sortable : false - }, - - permissions : { - cell : "html", - label : localization.tt("lbl.action"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue,model) { - return '<a href="#!/hbase/'+model.get('assetId')+'/policy/'+model.id+'" class="btn btn-mini" title="Edit"><i class="icon-edit icon-large" /></a>\ - <a href="javascript:void(0);" data-name ="deletePolicy" data-id="'+model.id+'" class="btn btn-mini btn-danger" title="Delete"><i class="icon-trash icon-large" /></a>'; - //You can use rawValue to custom your html, you can change this value using the name parameter. - } - }), - editable:false, - sortable : false - } - - - }; - return this.collection.constructor.getTableCols(cols, this.collection); - }, - - onExport : function(e){ - $(e.currentTarget).attr('href', 'service/assets/policyList/'+this.assetModel.get('name')+'?epoch=0'); - //$(e.currentTarget).attr('href', 'service/assets/hive?epoch=0'); - }, - onDelete :function(e){ - var that = this; - var obj = this.collection.get($(e.currentTarget).data('id')); - var model = new VXResource(obj.attributes); - model.collection = this.collection; - XAUtil.confirmPopup({ - msg :localization.tt('msg.areYouSureWantToDelete'), - //msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - that.collection.remove(model.get('id')); - /*if(that.rPolicyDetail.currentView) - that.rPolicyDetail.currentView.close();*/ - $(that.rPolicyDetail.el).hide(); - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - if(that.collection.length == 0){ - that.renderTable(); - that.collection.fetch(); - } - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error deleting Policy!'); - console.log("error"); - } - }); - } - }); - }, - onShowMore : function(e){ - var id = $(e.currentTarget).attr('policy-group-id'); - this.rTableList.$el.find('[policy-group-id="'+id+'"]').show(); - $('[data-id="showLess"][policy-group-id="'+id+'"]').show(); - $('[data-id="showMore"][policy-group-id="'+id+'"]').hide(); - }, - onShowLess : function(e){ - var id = $(e.currentTarget).attr('policy-group-id'); - this.rTableList.$el.find('[policy-group-id="'+id+'"]').slice(4).hide(); - $('[data-id="showLess"][policy-group-id="'+id+'"]').hide(); - $('[data-id="showMore"][policy-group-id="'+id+'"]').show(); - }, - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - addVisualSearch : function(){ - var that = this; - var searchOpt = ['Table Name(s)','Column Families(s)','Column Name(s)','Group','Policy Name'];//,'Start Date','End Date','Today']; - var serverAttrName = [{text : "Table Name(s)", label :"tables"},{text : "Column Families(s)", label :"columnFamilies"}, - {text : "Column Name(s)", label :"columns"},{text : "Group", label :"groupName"}, - {text : "Policy Name", label :"policyName"}]; - // {text : 'Start Date',label :'startDate'},{text : 'End Date',label :'endDate'}, - // {text : 'Today',label :'today'}]; - - var pluginAttr = { - placeholder :localization.tt('h.searchForPolicy'), - container : this.ui.visualSearch, - query : '', - callbacks : { - valueMatches :function(facet, searchTerm, callback) { - switch (facet) { - case 'Result': - callback(XAUtil.enumToSelectLabelValuePairs(XAEnums.AuthStatus)); - break; - case 'Login Type': - callback(XAUtil.enumToSelectLabelValuePairs(XAEnums.AuthType)); - break; - /* case 'Start Date' : - setTimeout(function () { XAUtil.displayDatepicker(that.ui.visualSearch, callback); }, 0); - break; - case 'End Date' : - setTimeout(function () { XAUtil.displayDatepicker(that.ui.visualSearch, callback); }, 0); - break; - case 'Today' : - var today = Globalize.format(new Date(),"yyyy/mm/dd"); - callback([today]); - break;*/ - } - - } - } - }; - XAUtil.addVisualSearch(searchOpt,serverAttrName, this.collection,pluginAttr); - }, - - /** on close */ - onClose: function(){ - } - - }); - - return HbaseTableLayout; -});
