| /* | |
| * 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 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 XABackgrid = require('views/common/XABackgrid'); | |
| var XATableLayout = require('views/common/XATableLayout'); | |
| var localization = require('utils/XALangSupport'); | |
| var RangerService = require('models/RangerService'); | |
| var RangerServiceDef = require('models/RangerServiceDef'); | |
| var RangerPolicy = require('models/RangerPolicy'); | |
| var RangerPolicyTableLayoutTmpl = require('hbs!tmpl/policies/RangerPolicyTableLayout_tmpl'); | |
| var RangerPolicyRO = require('views/policies/RangerPolicyRO'); | |
| require('backgrid-filter'); | |
| require('backgrid-paginator'); | |
| var RangerPolicyTableLayout = Backbone.Marionette.Layout.extend( | |
| /** @lends RangerPolicyTableLayout */ | |
| { | |
| _viewName : 'RangerPolicyTableLayout', | |
| template: RangerPolicyTableLayoutTmpl, | |
| templateHelpers : function(){ | |
| var infoMsg ="", displayClass = "d-none"; | |
| if(this.rangerService && this.rangerService.get('type')){ | |
| if(this.rangerService.get('type') == XAEnums.ServiceType.Service_HDFS.label || this.rangerService.get('type') == XAEnums.ServiceType.Service_YARN.label) { | |
| infoMsg = XAUtil.pluginConfigInfo(this.rangerService.get('type').toUpperCase()) | |
| displayClass = "show" | |
| } | |
| } | |
| return { | |
| rangerService : this.rangerService, | |
| rangerServiceDef : this.rangerServiceDefModel, | |
| rangerPolicyType : this.collection.queryParams['policyType'], | |
| isRenderAccessTab : XAUtil.isRenderMasking(this.rangerServiceDefModel.get('dataMaskDef')) ? true | |
| : XAUtil.isRenderRowFilter(this.rangerServiceDefModel.get('rowFilterDef')) ? true : false, | |
| isAddNewPolicyButtonShow : !(XAUtil.isAuditorOrKMSAuditor(SessionMgr)) && this.rangerService.get('isEnabled'), | |
| setNewUi : localStorage.getItem('setOldUI') == "true" ? false : true, | |
| displayClass : displayClass, | |
| infoMsg : infoMsg, | |
| }; | |
| }, | |
| breadCrumbs : function(){ | |
| if(this.rangerService.get('type') == XAEnums.ServiceType.SERVICE_TAG.label){ | |
| if(App.vZone && App.vZone.vZoneName){ | |
| return [XALinks.get('TagBasedServiceManager', App.vZone.vZoneName),XALinks.get('ManagePolicies',{model : this.rangerService})]; | |
| }else{ | |
| return [XALinks.get('TagBasedServiceManager'),XALinks.get('ManagePolicies',{model : this.rangerService})]; | |
| } | |
| }else{ | |
| if(App.vZone && App.vZone.vZoneName){ | |
| return [XALinks.get('ServiceManager', App.vZone.vZoneName), | |
| XALinks.get('ManagePolicies',{model : this.rangerService})]; | |
| }else{ | |
| return [XALinks.get('ServiceManager'),XALinks.get('ManagePolicies',{model : this.rangerService})]; | |
| } | |
| } | |
| }, | |
| /** Layout sub regions */ | |
| regions: { | |
| 'rTableList' : 'div[data-id="r_table"]', | |
| }, | |
| // /** ui selector cache */ | |
| ui: { | |
| 'btnDeletePolicy' : '[data-name="deletePolicy"]', | |
| 'btnShowMore' : '[data-id="showMore"]', | |
| 'btnShowLess' : '[data-id="showLess"]', | |
| 'visualSearch' : '.visual_search', | |
| 'policyTypeTab' : 'div[data-id="policyTypeTab"]', | |
| 'addNewPolicy' : '[data-js="addNewPolicy"]', | |
| 'iconSearchInfo' : '[data-id="searchInfo"]', | |
| 'btnViewPolicy' : '[data-name ="viewPolicy"]', | |
| }, | |
| /** ui events hash */ | |
| events: function() { | |
| var events = {}; | |
| events['click ' + this.ui.btnDeletePolicy] = 'onDelete'; | |
| events['click ' + this.ui.btnShowMore] = 'onShowMore'; | |
| events['click ' + this.ui.btnShowLess] = 'onShowLess'; | |
| events['click ' + this.ui.policyTypeTab + ' ul li a'] = 'onTabChange'; | |
| events['click ' + this.ui.btnViewPolicy] = 'onView'; | |
| return events; | |
| }, | |
| /** | |
| * intialize a new RangerPolicyTableLayout Layout | |
| * @constructs | |
| */ | |
| initialize: function(options) { | |
| console.log("initialized a RangerPolicyTableLayout Layout"); | |
| _.extend(this, _.pick(options,'rangerService', 'urlQueryParams')); | |
| this.urlQueryParams = XAUtil.urlQueryParams(); | |
| this.bindEvents(); | |
| this.initializeServiceDef(); | |
| if(_.isUndefined(App.vZone)) { | |
| App.vZone = {}; | |
| } | |
| if(App.vZone && App.vZone.vZoneName && !_.isEmpty(App.vZone.vZoneName)) { | |
| XAUtil.changeParamToUrlFragment({"securityZone" : App.vZone.vZoneName}, this.collection.modelName); | |
| } | |
| if (!_.isUndefined(this.urlQueryParams)) { | |
| var searchFregment = XAUtil.changeUrlToSearchQuery(decodeURIComponent(this.urlQueryParams)); | |
| if(_.has(searchFregment, 'securityZone')) { | |
| App.vZone.vZoneName = searchFregment['securityZone']; | |
| searchFregment = _.omit(searchFregment, 'securityZone'); | |
| if(_.isEmpty(searchFregment)) { | |
| this.urlQueryParams = ''; | |
| } else { | |
| this.urlQueryParams = $.param(searchFregment); | |
| } | |
| } else { | |
| App.vZone.vZoneName = ""; | |
| } | |
| } | |
| }, | |
| /** all events binding here */ | |
| bindEvents : function(){ | |
| //this.listenTo(this.collection, "sync", this.render, this); | |
| }, | |
| initializeServiceDef : function(){ | |
| this.rangerServiceDefModel = new RangerServiceDef(); | |
| this.rangerServiceDefModel.url = "service/plugins/definitions/name/"+this.rangerService.get('type'); | |
| this.rangerServiceDefModel.fetch({ | |
| cache : false, | |
| async : false | |
| }); | |
| }, | |
| initializePolicies : function(policyType){ | |
| this.collection.url = XAUtil.getServicePoliciesURL(this.rangerService.id); | |
| if(!_.isUndefined(policyType)){ | |
| this.collection.queryParams['policyType'] = policyType; | |
| } | |
| if(!_.isUndefined(App.vZone) && App.vZone.vZoneName){ | |
| this.collection.queryParams['zoneName'] = App.vZone.vZoneName; | |
| } | |
| }, | |
| /** on render callback */ | |
| onRender: function() { | |
| this.setTabForPolicyListing(); | |
| this.renderTable(); | |
| this.initializePolicies(); | |
| this.addVisualSearch(); | |
| if(_.isUndefined(this.urlQueryParams) || _.isEmpty(this.urlQueryParams)) { | |
| this.collection.fetch ({ | |
| cache : false, | |
| }) | |
| } | |
| XAUtil.searchInfoPopover(this.searchInfoArray , this.ui.iconSearchInfo , 'bottom'); | |
| }, | |
| /** all post render plugin initialization */ | |
| initializePlugins: function(){ | |
| }, | |
| setTabForPolicyListing : function(){ | |
| var policyType = this.collection.queryParams['policyType'] | |
| if( XAUtil.isMaskingPolicy(policyType) ){ | |
| this.ui.policyTypeTab.find('ul li').removeClass('active'); | |
| this.$el.find('li[data-tab="masking"]').addClass('active'); | |
| }else if( XAUtil.isRowFilterPolicy(policyType) ){ | |
| this.ui.policyTypeTab.find('ul li').removeClass('active'); | |
| this.$el.find('li[data-tab="rowLevelFilter"]').addClass('active'); | |
| } | |
| this.showRequiredTabs() | |
| }, | |
| showRequiredTabs : function(){ | |
| if(XAUtil.isRenderMasking(this.rangerServiceDefModel.get('dataMaskDef'))){ | |
| this.$el.find('li[data-tab="masking"]').show(); | |
| } | |
| if(XAUtil.isEmptyObjectResourceVal(this.rangerServiceDefModel.get('rowFilterDef'))){ | |
| this.$el.find('li[data-tab="rowLevelFilter"]').hide(); | |
| } | |
| }, | |
| renderTable : function(){ | |
| var that = this; | |
| this.rTableList.show(new XATableLayout({ | |
| columns: this.getColumns(), | |
| collection: this.collection, | |
| includeFilter : false, | |
| gridOpts : { | |
| row: Backgrid.Row.extend({}), | |
| header : XABackgrid, | |
| emptyText : 'No Policies found!' + (this.rangerService.get('isEnabled') ? '' : ' The service is disabled!') | |
| }, | |
| })); | |
| }, | |
| onView : function(e){ | |
| var that = this; | |
| XAUtil.blockUI(); | |
| var policyId = $(e.currentTarget).data('id'); | |
| var rangerPolicy = new RangerPolicy({ id : policyId}); | |
| rangerPolicy.fetch({ | |
| cache : false, | |
| }).done(function(){ | |
| XAUtil.blockUI('unblock'); | |
| var policyVersionList = rangerPolicy.fetchVersions(); | |
| var view = new RangerPolicyRO({ | |
| model : rangerPolicy, | |
| policyVersionList : policyVersionList, | |
| rangerService: that.rangerServiceDefModel | |
| }); | |
| var modal = new Backbone.BootstrapModal({ | |
| animate : true, | |
| content : view, | |
| title : localization.tt("h.policyDetails"), | |
| okText : localization.tt("lbl.ok"), | |
| allowCancel : true, | |
| escape : true, | |
| focusOk : false | |
| }).open(); | |
| var policyVerEl = modal.$el.find('.modal-footer').prepend('<div class="policyVer pull-left"></div>').find('.policyVer'); | |
| policyVerEl.append('<i id="preVer" class="fa-fw fa fa-chevron-left ' + ((rangerPolicy.get('version') > 1) ? 'active' : '') + '"></i><text>Version ' + rangerPolicy.get('version') + '</text>').find('#preVer').click(function(e) { | |
| view.previousVer(e); | |
| }); | |
| var policyVerIndexAt = policyVersionList.indexOf(rangerPolicy.get('version')); | |
| policyVerEl.append('<i id="nextVer" class="fa-fw fa fa-chevron-right ' + (!_.isUndefined(policyVersionList[++policyVerIndexAt]) ? 'active' : '') + '"></i>').find('#nextVer').click(function(e) { | |
| view.nextVer(e); | |
| }); | |
| policyVerEl.after('<a id="revert" href="#" class="btn btn-primary" style="display:none;">Revert</a>').next('#revert').click(function(e){ | |
| view.revert(e, that.collection, modal); | |
| }); | |
| modal.$el.find('.cancel').hide(); | |
| }); | |
| }, | |
| getColumns : function(){ | |
| var that = this; | |
| var cols = { | |
| policyId : { | |
| cell : 'html', | |
| label : localization.tt("lbl.policyId"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| if(XAUtil.isAuditorOrKMSAuditor(SessionMgr)){ | |
| if(!_.isEmpty(model.get('validitySchedules')) && XAUtil.isPolicyExpierd(model)){ | |
| return '<div class="expiredIconPosition">\ | |
| <i class="fa-fw fa fa-exclamation-circle backgrigModelId" title="Policy expired"></i>\ | |
| '+model.id+'\ | |
| </div>'; | |
| }else{ | |
| return '<div class="expiredIconPosition">\ | |
| '+model.id+'\ | |
| </div>'; | |
| } | |
| }else{ | |
| if(!_.isEmpty(model.get('validitySchedules')) && XAUtil.isPolicyExpierd(model)){ | |
| return '<div class="expiredIconPosition">\ | |
| <i class="fa-fw fa fa-exclamation-circle 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>'; | |
| } | |
| } | |
| } | |
| }), | |
| editable: false, | |
| sortable : true, | |
| direction: "ascending", | |
| }, | |
| policyName : { | |
| cell : 'string', | |
| label : localization.tt("lbl.policyName"), | |
| editable: false, | |
| sortable:true, | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| if(model) { | |
| return model.get('name'); | |
| } else { | |
| return '--'; | |
| } | |
| } | |
| }) | |
| }, | |
| policyLabels: { | |
| cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), | |
| label : localization.tt("lbl.policyLabels"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| if(!_.isUndefined(rawValue) && rawValue.length != 0){ | |
| return XAUtil.showMoreAndLessButton(rawValue, model) | |
| }else{ | |
| return '--'; | |
| } | |
| } | |
| }), | |
| editable : false, | |
| sortable : false | |
| }, | |
| isEnabled:{ | |
| label:localization.tt('lbl.status'), | |
| cell :"html", | |
| editable:false, | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue) { | |
| return rawValue ? '<label class="badge badge-success">Enabled</label>' : '<label class="badge badge-danger">Disabled</label>'; | |
| } | |
| }), | |
| click : false, | |
| drag : false, | |
| sortable : false | |
| }, | |
| isAuditEnabled:{ | |
| label:localization.tt('lbl.auditLogging'), | |
| cell :"html", | |
| editable:false, | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue) { | |
| return rawValue ? '<label class="badge badge-success">Enabled</label>' : '<label class="badge badge-danger">Disabled</label>'; | |
| } | |
| }), | |
| click : false, | |
| drag : false, | |
| sortable : false | |
| }, | |
| roles : { | |
| reName : 'roleName', | |
| cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), | |
| label : localization.tt("lbl.roles"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| return XAUtil.showGroupsOrUsersForPolicy(model, 'roles', that.rangerServiceDefModel); | |
| } | |
| }), | |
| editable : false, | |
| sortable : false | |
| }, | |
| groups : { | |
| reName : 'groupName', | |
| cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), | |
| label : localization.tt("lbl.group"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| return XAUtil.showGroupsOrUsersForPolicy(model, 'groups', that.rangerServiceDefModel); | |
| } | |
| }), | |
| editable : false, | |
| sortable : false | |
| }, | |
| //Hack for backgrid plugin doesn't allow to have same column name | |
| users : { | |
| reName : 'userName', | |
| cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), | |
| label : localization.tt("lbl.users"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue, model) { | |
| return XAUtil.showGroupsOrUsersForPolicy(model, 'users', that.rangerServiceDefModel); | |
| } | |
| }), | |
| editable : false, | |
| sortable : false | |
| }, | |
| }; | |
| cols['permissions'] = { | |
| cell : "html", | |
| label : localization.tt("lbl.action"), | |
| formatter: _.extend({}, Backgrid.CellFormatter.prototype, { | |
| fromRaw: function (rawValue,model) { | |
| if(XAUtil.isAuditorOrKMSAuditor(SessionMgr)){ | |
| return '<a href="javascript:void(0);" data-name ="viewPolicy" data-id="'+model.id+'" class="btn btn-mini" title="View"><i class="fa-fw fa fa-eye fa-fw fa fa-large"></i></a>'; | |
| }else{ | |
| return '<a href="javascript:void(0);" data-name ="viewPolicy" data-id="'+model.id+'" class="btn btn-mini" title="View"><i class="fa-fw fa fa-eye fa-fw fa fa-large"></i></a>\ | |
| <a href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit" class="btn btn-mini" title="Edit"><i class="fa-fw fa fa-edit fa-fw fa fa-large"></i></a>\ | |
| <a href="javascript:void(0);" data-name ="deletePolicy" data-id="'+model.id+'" class="btn btn-mini btn-danger" title="Delete"><i class="fa-fw fa fa-trash fa-fw fa fa-large"></i></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); | |
| }, | |
| onDelete :function(e){ | |
| var that = this; | |
| var obj = this.collection.get($(e.currentTarget).data('id')); | |
| var model = new RangerPolicy(obj.attributes); | |
| model.collection = this.collection; | |
| XAUtil.confirmPopup({ | |
| //msg :localize.tt('msg.confirmDelete'), | |
| 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')); | |
| XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); | |
| 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 attrName = this.attributName(e); | |
| var id = $(e.currentTarget).attr(attrName[0]); | |
| var $td = $(e.currentTarget).parents('td'); | |
| $td.find('['+attrName+'="'+id+'"]').show(); | |
| $td.find('[data-id="showLess"]['+attrName+'="'+id+'"]').show(); | |
| $td.find('[data-id="showMore"]['+attrName+'="'+id+'"]').hide(); | |
| $td.find('[data-id="showMore"]['+attrName+'="'+id+'"]').parents('div[data-id="groupsDiv"]').addClass('set-height-groups'); | |
| }, | |
| onShowLess : function(e){ | |
| var attrName = this.attributName(e) | |
| var $td = $(e.currentTarget).parents('td'); | |
| var id = $(e.currentTarget).attr(attrName[0]); | |
| $td.find('['+attrName+'="'+id+'"]').slice(4).hide(); | |
| $td.find('[data-id="showLess"]['+attrName+'="'+id+'"]').hide(); | |
| $td.find('[data-id="showMore"]['+attrName+'="'+id+'"]').show(); | |
| $td.find('[data-id="showMore"]['+attrName+'="'+id+'"]').parents('div[data-id="groupsDiv"]').removeClass('set-height-groups'); | |
| }, | |
| attributName :function(e){ | |
| var attrName = ['policy-groups-id', 'policy-users-id', 'policy-label-id' , 'policy-roles-id'], attributeName = ""; | |
| attributeName =_.filter(attrName, function(name){ | |
| if($(e.currentTarget).attr(name)){ | |
| return name; | |
| } | |
| }); | |
| return attributeName; | |
| }, | |
| addVisualSearch : function(){ | |
| var that = this, resources = this.rangerServiceDefModel.get('resources'), query = ''; | |
| var policyType = this.collection.queryParams['policyType']; | |
| if(XAUtil.isMaskingPolicy(policyType) ){ | |
| if(!_.isEmpty(this.rangerServiceDefModel.get('dataMaskDef').resources)){ | |
| resources = this.rangerServiceDefModel.get('dataMaskDef')['resources']; | |
| }else{ | |
| resources = this.rangerServiceDefModel.get('resources'); | |
| } | |
| }else if(XAUtil.isRowFilterPolicy(policyType) ){ | |
| resources = this.rangerServiceDefModel.get('rowFilterDef')['resources']; | |
| } | |
| var resourceSearchOpt = _.map(resources, function(resource){ | |
| return { 'name' : resource.name, 'label' : resource.label, 'description':resource.description }; | |
| }); | |
| var PolicyStatusValue = _.map(XAEnums.ActiveStatus, function(status) { return { 'label': status.label, 'value': Boolean(status.value)}; }); | |
| var searchOpt = ['Policy Name','Group Name','User Name','Status', 'Policy Label', 'Role Name'];//,'Start Date','End Date','Today']; | |
| searchOpt = _.union(searchOpt, _.map(resourceSearchOpt, function(opt){ return opt.label })) | |
| var serverAttrName = [{text : "Group Name", label :"group", info:localization.tt('h.groupNameMsg'), urlLabel : 'groupName'}, | |
| {text : "Policy Name", label :"policyNamePartial", info :localization.tt('msg.policyNameMsg'), urlLabel : 'policyName'}, | |
| {text : "Status", info : localization.tt('msg.statusMsg') , label :"isEnabled",'multiple' : true, 'optionsArr' : PolicyStatusValue, urlLabel : 'status'}, | |
| {text : "User Name", label :"user" , info :localization.tt('h.userMsg'), urlLabel : 'userName'}, | |
| {text : "Role Name", label :"role" , info :localization.tt('h.roleMsg'), urlLabel : 'roleName'}, | |
| {text : "Policy Label", label :"policyLabelsPartial" , info :localization.tt('h.policyLabelsinfo'), urlLabel : 'policyLabel'}, | |
| ]; | |
| var info = { collection : localization.tt('h.collection') , column :localization.tt('lbl.columnName'), | |
| 'column-family':localization.tt('msg.columnfamily') , database :localization.tt('h.database'), | |
| entity :localization.tt('h.entity') , keyname :localization.tt('lbl.keyName'), | |
| path:localization.tt('h.path'), queue: localization.tt('h.queue'), service:localization.tt('h.serviceNameMsg'), | |
| table:localization.tt('lbl.tableName'), tag : localization.tt('h.tagsMsg'), | |
| topic:localization.tt('h.topic') ,topology:localization.tt('lbl.topologyName'), | |
| type:localization.tt('h.type') ,udf:localization.tt('h.udf') , url:localization.tt('h.url'), | |
| 'type-category': localization.tt('h.typeCategory'), 'entity-type': localization.tt('h.entityType'), | |
| 'entity-classification': localization.tt('h.entityClassification'), 'atlas-service': localization.tt('h.atlasService'), | |
| connector: localization.tt('h.connector'), link: localization.tt('h.link'), job: localization.tt('h.job'), | |
| project: localization.tt('h.project'), 'nifi-resource': localization.tt('h.nifiResource') | |
| }; | |
| var serverRsrcAttrName = _.map(resourceSearchOpt,function(opt){ | |
| return { | |
| 'text': opt.label, | |
| 'label': 'resource:'+ opt.name, | |
| 'info' : !_.isUndefined(info[opt.name]) ? info[opt.name] : opt.description, | |
| 'urlLabel' : XAUtil.stringToCamelCase(opt.label.toLowerCase()), | |
| }; | |
| }); | |
| serverAttrName = _.union(serverAttrName, serverRsrcAttrName) | |
| this.searchInfoArray = serverAttrName; | |
| if(!_.isUndefined(this.urlQueryParams)) { | |
| var urlQueryParams = XAUtil.changeUrlToSearchQuery(this.urlQueryParams); | |
| _.map(urlQueryParams, function(val , key) { | |
| if (_.some(serverAttrName, function(m){return m.urlLabel == key})) { | |
| query += '"'+XAUtil.filterKeyForVSQuery(serverAttrName, key)+'":"'+val+'"'; | |
| } | |
| }); | |
| } | |
| var pluginAttr = { | |
| placeholder :localization.tt('h.searchForPolicy'), | |
| container : this.ui.visualSearch, | |
| query : query, | |
| callbacks : { | |
| valueMatches :function(facet, searchTerm, callback) { | |
| switch (facet) { | |
| case 'Status': | |
| callback(that.getActiveStatusNVList()); | |
| break; | |
| case 'Policy Type': | |
| callback(that.getNameOfPolicyTypeNVList()); | |
| break; | |
| } | |
| } | |
| } | |
| }; | |
| window.vs = XAUtil.addVisualSearch(searchOpt,serverAttrName, this.collection,pluginAttr); | |
| }, | |
| getActiveStatusNVList : function() { | |
| var activeStatusList = _.filter(XAEnums.ActiveStatus, function(obj){ | |
| if(obj.label != XAEnums.ActiveStatus.STATUS_DELETED.label) | |
| return obj; | |
| }); | |
| return _.map(activeStatusList, function(status) { return { 'label': status.label, 'value': status.label}; }) | |
| }, | |
| getNameOfPolicyTypeNVList : function() { | |
| return _.map(XAEnums.PolicyType, function(type) { return { 'label': type.label, 'value': type.label};}); | |
| }, | |
| onTabChange : function(e){ | |
| var that = this, | |
| tab = $(e.currentTarget).attr('href'); | |
| var href = this.ui.addNewPolicy.attr('href') | |
| switch (tab) { | |
| case "#access": | |
| var val = XAEnums.RangerPolicyType.RANGER_ACCESS_POLICY_TYPE.value; | |
| App.appRouter.navigate("#!/service/"+this.rangerService.id+"/policies/"+ val,{trigger: true}); | |
| break; | |
| case "#masking": | |
| var val = XAEnums.RangerPolicyType.RANGER_MASKING_POLICY_TYPE.value; | |
| App.appRouter.navigate("#!/service/"+this.rangerService.id+"/policies/"+ val,{trigger: true}); | |
| break; | |
| case "#rowLevelFilter": | |
| var val = XAEnums.RangerPolicyType.RANGER_ROW_FILTER_POLICY_TYPE.value; | |
| App.appRouter.navigate("#!/service/"+this.rangerService.id+"/policies/"+ val,{trigger: true}); | |
| break; | |
| } | |
| }, | |
| /** on close */ | |
| onClose: function(){ | |
| XAUtil.removeUnwantedDomElement(); | |
| } | |
| }); | |
| return RangerPolicyTableLayout; | |
| }); |