You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ni...@apache.org on 2020/03/13 08:55:11 UTC
[atlas] 02/03: ATLAS-3657 : UI: changes for entity purge audits
This is an automated email from the ASF dual-hosted git repository.
nixon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
commit ffd2e2b5df934f5266e362e6b8ad1a6d4dfa6501
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Thu Mar 12 18:17:24 2020 +0530
ATLAS-3657 : UI: changes for entity purge audits
Signed-off-by: nixonrodrigues <ni...@apache.org>
---
dashboardv3/public/css/scss/business-metadata.scss | 14 +-
dashboardv3/public/css/scss/override.scss | 2 +-
dashboardv3/public/js/collection/VEntityList.js | 8 +
dashboardv3/public/js/router/Router.js | 2 +-
.../AdministratorLayoutView_tmpl.html | 7 +-
.../PurgeAuditTableLayoutView_tmpl.html | 120 -----
.../audit/AdminAuditTableLayoutView_tmpl.html | 78 ++++
.../audit/CreateAuditTableLayoutView_tmpl.html | 2 +-
dashboardv3/public/js/utils/Enums.js | 2 +-
dashboardv3/public/js/utils/UrlLinks.js | 4 +-
dashboardv3/public/js/utils/Utils.js | 6 +
.../views/administrator/AdministratorLayoutView.js | 15 +-
.../administrator/PurgeAuditTableLayoutView.js | 517 ---------------------
.../js/views/audit/AdminAuditTableLayoutView.js | 369 +++++++++++++++
.../js/views/audit/CreateAuditTableLayoutView.js | 5 +-
.../public/js/views/search/QueryBuilderView.js | 125 ++---
16 files changed, 569 insertions(+), 707 deletions(-)
diff --git a/dashboardv3/public/css/scss/business-metadata.scss b/dashboardv3/public/css/scss/business-metadata.scss
index a521a4b..ecfddf7 100644
--- a/dashboardv3/public/css/scss/business-metadata.scss
+++ b/dashboardv3/public/css/scss/business-metadata.scss
@@ -67,14 +67,24 @@
}
}
-.business-metadata-details {
-
+.business-metadata-details,
+.admin-details {
.expandable .attr-details {
max-height: 300px;
overflow: auto;
margin-left: 30px;
width: calc(100% - 30px);
}
+
+ .admin-type-dropdown {
+ width: 100px;
+ }
+
+ .expandable .admin-attr-details {
+ max-height: 100px;
+ margin-left: 20px;
+ width: calc(100% - 27px);
+ }
}
.tab-pane {
diff --git a/dashboardv3/public/css/scss/override.scss b/dashboardv3/public/css/scss/override.scss
index eb7e8a9..c375cd8 100644
--- a/dashboardv3/public/css/scss/override.scss
+++ b/dashboardv3/public/css/scss/override.scss
@@ -249,7 +249,7 @@
overflow-x: hidden;
}
-.purge-details {
+.admin-details {
.tab-pane.active {
min-height: 400px;
}
diff --git a/dashboardv3/public/js/collection/VEntityList.js b/dashboardv3/public/js/collection/VEntityList.js
index e4e2ba3..645bc0c 100644
--- a/dashboardv3/public/js/collection/VEntityList.js
+++ b/dashboardv3/public/js/collection/VEntityList.js
@@ -54,6 +54,14 @@ define(['require',
} catch (e) {
console.log(e);
}
+ },
+ getAdminData: function(options) {
+ var url = UrlLinks.adminApiUrl();
+ options = _.extend({
+ contentType: 'application/json',
+ dataType: 'json'
+ }, options);
+ return this.constructor.nonCrudOperation.call(this, url, 'POST', options);
}
},
//Static Class Members
diff --git a/dashboardv3/public/js/router/Router.js b/dashboardv3/public/js/router/Router.js
index 7127c40..f2c1f1d 100644
--- a/dashboardv3/public/js/router/Router.js
+++ b/dashboardv3/public/js/router/Router.js
@@ -486,7 +486,7 @@ define([
var that = this;
require(["views/site/Header", "views/site/SideNavLayoutView", 'views/administrator/AdministratorLayoutView'], function(Header, SideNavLayoutView, AdministratorLayoutView) {
var value = Utils.getUrlState.getQueryParams(),
- paramObj = _.extend({ value: value, guid: null }, that.preFetchedCollectionLists);
+ paramObj = _.extend({ value: value, guid: null }, that.preFetchedCollectionLists, that.sharedObj);
that.renderViewIfNotExists(that.getHeaderOptions(Header));
that.renderViewIfNotExists({
view: App.rSideNav,
diff --git a/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html b/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html
index cc6279a..f734c94 100644
--- a/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html
@@ -22,11 +22,12 @@
<ul class="nav nav-tabs" data-id="tab-list">
<li role="businessMetadata" class="tab active"><a href="#tab-businessMetadata" aria-controls="tab-businessMetadata" role="tab" data-toggle="tab">Business Metadata</a></li>
<li role="enum"><a href="#tab-enum" aria-controls="tab-enum" role="tab" data-toggle="tab">Enumerations</a></li>
+ <li role="admin"><a href="#tab-admin" aria-controls="tab-admin" role="tab" data-toggle="tab">Audits</a></li>
</ul>
</div>
</div>
<div>
- <div class="tab-content purge-details">
+ <div class="tab-content admin-details">
<div id="tab-businessMetadata" role="businessMetadata" class="tab-pane active animated fadeIn">
<div id="r_businessMetadataTableLayoutView">
</div>
@@ -35,6 +36,10 @@
<div id="r_enumTableLayoutView">
</div>
</div>
+ <div id="tab-admin" role="admin" class="tab-pane animated fadeIn">
+ <div id="r_adminTableLayoutView">
+ </div>
+ </div>
</div>
</div>
</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html
deleted file mode 100644
index ee394a9..0000000
--- a/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html
+++ /dev/null
@@ -1,120 +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.
--->
-<div class="page-title clearfix">
- <!-- <div class="fontLoader">
- <i class="fa fa-refresh fa-spin-custom"></i>
- </div> -->
- <div class="row">
- <div class="col-sm-12 default-tab">
- <ul class="nav nav-tabs" data-id="tab-list">
- <li role="purgeaudit" class="tab active"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
- <li role="namespace"><a href="#tab-namespace" aria-controls="tab-namespace" role="tab" data-toggle="tab">Namespace</a></li>
- </ul>
- </div>
- </div>
-</div>
-<div>
- <div class="tab-content purge-details">
- <div id="tab-audit" role="purgeaudit" class="tab-pane active animated fadeIn">
- <div id="r_auditTableLayoutView">
- <div class="fontLoader-relative">
- <i class="fa fa-refresh fa-spin-custom"></i>
- </div>
- <div class="position-relative">
- <div class="tableOverlay"></div>
- <!-- Not for table Loader its only for initial loading -->
- <div class="fontLoader">
- <i class="fa fa-refresh fa-spin-custom"></i>
- </div>
- <div class="attributeResultContainer form-group ">
- <button class="btn-action btn-sm attribute-filter-text" data-id='purgeAttrFilter'> <i class="fa fa-angle-right"></i> Filters</button>
- <div class="attribute-filter-container hide">
- <div class="panel panel-default expand_collapse_panel-icon" data-id="purgeRegion">
- <div class="panel-heading" data-toggle="collapse" href="#collapsePurge" aria-expanded="true">
- <h4 class="panel-title">
- <a>Purge</a>
- </h4>
- <div class="btn-group pull-right">
- <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
- </div>
- </div>
- <div id="collapsePurge" class="panel-collapse collapse in">
- <div class="panel-body">
- <div id='r_attributeQueryBuilderPurge' class='attribute-querybuilder'>
- <div class='fontLoader'><i class='fa fa-refresh fa-spin-custom'></i></div>
- </div>
- </div>
- </div>
- </div>
- <div class='attribute-result-footer'>
- <div type="ok" class="btn btn-atlas ok search" data-id='attrApply'>Apply</div>
- <div type="ok" class="btn btn-atlas ok" data-id='attrClose'>Close</div>
- </div>
- </div>
- <div class="pull-right">
- <select class="pull-right form-controlrow-margin-bottom" data-id="purgeType"></select>
- </div>
- </div>
- <div class='attr-filter-overlay hide'></div>
- <div class="auditTable" style="display: none">
- <div id="r_purgeAuditTableLayoutView"></div>
- <div>
- <span class="labelShowRecord pull-left" data-id="pageRecordText"></span>
- </div>
- <div class="pagination-box">
- <div class="backgrid-paginator pull-right">
- <ul>
- <li>
- <button type="button" data-id="previousAuditData" title="Previous" disabled=true>
- <i class="fa fa-angle-left" aria-hidden="true"></i>
- </button>
- </li>
- <li class="active">
- <a href="javascript:void(0)" data-id="activePage"></a>
- </li>
- <li>
- <button type="button" data-id="nextAuditData" title="Next">
- <i class="fa fa-angle-right" aria-hidden="true"></i>
- </button>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="no-data" data-id="showDefault">
- <div class="position-relative thick-border">
- <div style="padding-top: 20px; " class="table-responsive tableBorder">
- <table class="table table-hover backgrid table-quickMenu">
- <tbody>
- <tr class="empty">
- <td colspan="16"><span>No Records found!</span></td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
- </div>
- <div id="tab-namespace" role="namespace" class="tab-pane animated fadeIn">
- <div id="r_namespaceTableLayoutView">
- </div>
- </div>
- </div>
-</div>
-</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/audit/AdminAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/audit/AdminAuditTableLayoutView_tmpl.html
new file mode 100644
index 0000000..5e5f897
--- /dev/null
+++ b/dashboardv3/public/js/templates/audit/AdminAuditTableLayoutView_tmpl.html
@@ -0,0 +1,78 @@
+<!--
+ * 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.
+-->
+<div class="tab-content admin-details">
+ <div id="tab-audit" role="adminaudit">
+ <div id="r_auditTableLayoutView">
+ <div class="fontLoader-relative">
+ <i class="fa fa-refresh fa-spin-custom"></i>
+ </div>
+ <div class="position-relative">
+ <div class="tableOverlay"></div>
+ <!-- Not for table Loader its only for initial loading -->
+ <div class="fontLoader">
+ <i class="fa fa-refresh fa-spin-custom"></i>
+ </div>
+ <div class="attributeResultContainer form-group ">
+ <button class="btn-action btn-sm attribute-filter-text" data-id='adminAttrFilter'> <i class="fa fa-angle-right"></i> Filters</button>
+ <div class="attribute-filter-container hide">
+ <div class="panel panel-default expand_collapse_panel-icon" data-id="adminRegion">
+ <div class="panel-heading" data-toggle="collapse" href="#collapseAdmin" aria-expanded="true">
+ <h4 class="panel-title">
+ <a>Admin</a>
+ </h4>
+ <div class="btn-group pull-right">
+ <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+ </div>
+ </div>
+ <div id="collapseAdmin" class="panel-collapse collapse in">
+ <div class="panel-body">
+ <div id='r_attributeQueryBuilderAdmin' class='attribute-querybuilder'>
+ <div class='fontLoader'><i class='fa fa-refresh fa-spin-custom'></i></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class='attribute-result-footer'>
+ <div type="ok" class="btn btn-atlas ok search" data-id='attrApply'>Apply</div>
+ <div type="ok" class="btn btn-atlas ok" data-id='attrClose'>Close</div>
+ </div>
+ </div>
+ <div class="pull-right admin-type-dropdown">
+ <select class="pull-right form-controlrow-margin-bottom" data-id="adminType"></select>
+ </div>
+ </div>
+ <div class="auditTable" style="display: none">
+ <div class='attr-filter-overlay hide'></div>
+ <div id="r_adminAuditTableLayoutView"></div>
+ </div>
+ </div>
+ </div>
+ <div class="no-data" data-id="showDefault">
+ <div class="position-relative thick-border">
+ <div style="padding-top: 20px; " class="table-responsive tableBorder">
+ <table class="table table-hover backgrid table-quickMenu">
+ <tbody>
+ <tr class="empty">
+ <td colspan="16"><span>No Records found!</span></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
index 1ff67d3..10cc697 100644
--- a/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
-<h4 class="entity-name" style="word-break: break-word;">Name: <span data-id="name"></span></h4>
+<h4 class="entity-name" style="word-break: break-word;" data-id="nameContainer">Name: <span data-id="name"></span></h4>
<div class="panel-group server-stats-container auditStatusContainer clearfix" id="accordion">
<div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="detailsAttribute">
<div class="panel-heading" data-toggle="collapse" href="#detailAttributeTableCollapse" aria-expanded="true">
diff --git a/dashboardv3/public/js/utils/Enums.js b/dashboardv3/public/js/utils/Enums.js
index e5cba08..ef93b77 100644
--- a/dashboardv3/public/js/utils/Enums.js
+++ b/dashboardv3/public/js/utils/Enums.js
@@ -212,4 +212,4 @@ define(['require'], function(require) {
1: "true"
};
return Enums;
-});
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/utils/UrlLinks.js b/dashboardv3/public/js/utils/UrlLinks.js
index 95ca065..17d2bdf 100644
--- a/dashboardv3/public/js/utils/UrlLinks.js
+++ b/dashboardv3/public/js/utils/UrlLinks.js
@@ -227,8 +227,8 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
sessionApiUrl: function() {
return this.baseUrl + '/admin/session';
},
- purgeApiUrl: function() {
- return this.baseUrl + '/admin/audit';
+ adminApiUrl: function() {
+ return this.baseUrl + '/admin/audits';
}
});
diff --git a/dashboardv3/public/js/utils/Utils.js b/dashboardv3/public/js/utils/Utils.js
index bb33102..2d7d433 100644
--- a/dashboardv3/public/js/utils/Utils.js
+++ b/dashboardv3/public/js/utils/Utils.js
@@ -411,6 +411,12 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
matchString: "detailPage"
});
},
+ isPurgePage: function(url) {
+ return this.checkTabUrl({
+ url: url,
+ matchString: "purge"
+ });
+ },
getLastValue: function() {
return this.getQueryUrl().lastValue;
},
diff --git a/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js b/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
index 78d7cd1..49f4635 100644
--- a/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
+++ b/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
@@ -38,7 +38,8 @@ define(['require',
/** Layout sub regions */
regions: {
RBusinessMetadataTableLayoutView: "#r_businessMetadataTableLayoutView",
- REnumTableLayoutView: '#r_enumTableLayoutView'
+ REnumTableLayoutView: '#r_enumTableLayoutView',
+ RAdminTableLayoutView: '#r_adminTableLayoutView'
},
/** ui selector cache */
@@ -67,7 +68,7 @@ define(['require',
* @constructs
*/
initialize: function(options) {
- _.extend(this, _.pick(options, 'value', 'guid', 'entityDefCollection', 'businessMetadataDefCollection', 'enumDefCollection'));
+ _.extend(this, _.pick(options, 'value', 'entityDefCollection', 'businessMetadataDefCollection', 'enumDefCollection', 'searchTableFilters'));
},
onShow: function() {
@@ -79,6 +80,7 @@ define(['require',
},
bindEvents: function() {
this.renderEnumLayoutView();
+ this.renderAdminLayoutView();
},
onRender: function() {
this.renderBusinessMetadataLayoutView();
@@ -99,6 +101,15 @@ define(['require',
});
that.REnumTableLayoutView.show(view);
});
+ },
+ renderAdminLayoutView: function(obj) {
+ var that = this;
+ require(["views/audit/AdminAuditTableLayoutView"], function(AdminAuditTableLayoutView) {
+ var view = new AdminAuditTableLayoutView({
+ searchTableFilters: that.searchTableFilters
+ });
+ that.RAdminTableLayoutView.show(view);
+ });
}
});
return AdministratorLayoutView;
diff --git a/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js b/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js
deleted file mode 100644
index ada59d2..0000000
--- a/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js
+++ /dev/null
@@ -1,517 +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(['require',
- 'backbone',
- 'hbs!tmpl/audit/PurgeAuditTableLayoutView_tmpl',
- 'collection/VEntityList',
- 'models/VSearch',
- 'utils/Utils',
- 'utils/Enums',
- 'utils/UrlLinks',
- 'utils/CommonViewFunction'
-], function(require, Backbone, PurgeAuditTableLayoutView_tmpl, VEntityList, VSearch, Utils, Enums, UrlLinks, CommonViewFunction) {
- 'use strict';
-
- var PurgeAuditTableLayoutView = Backbone.Marionette.LayoutView.extend(
- /** @lends AuditTableLayoutView */
- {
- _viewName: 'PurgeAuditTableLayoutView',
-
- template: PurgeAuditTableLayoutView_tmpl,
-
- /** Layout sub regions */
- regions: {
- RAuditTableLayoutView: "#r_purgeAuditTableLayoutView",
- RQueryBuilderPurge: "#r_attributeQueryBuilderPurge",
- RNamespaceTableLayoutView: "#r_namespaceTableLayoutView"
- },
-
- /** ui selector cache */
- ui: {
- auditCreate: "[data-id='auditCreate']",
- previousAuditData: "[data-id='previousAuditData']",
- nextAuditData: "[data-id='nextAuditData']",
- pageRecordText: "[data-id='pageRecordText']",
- activePage: "[data-id='activePage']",
- purgeEntityClick: "[data-id='purgeEntity']",
- purgeType: "[data-id='purgeType']",
- attrFilter: "[data-id='purgeAttrFilter']",
- purgeRegion: "[data-id='purgeRegion']",
- attrApply: "[data-id='attrApply']",
- showDefault: "[data-id='showDefault']",
- attrClose: "[data-id='attrClose']",
- tablist: '[data-id="tab-list"] li'
- },
- /** ui events hash */
- events: function() {
- var events = {},
- that = this;
- events["click " + this.ui.purgeEntityClick] = "onClickPurgeEntity";
- events["change " + this.ui.purgeType] = "onClickPurgeType";
- events["click " + this.ui.nextAuditData] = "onClickNextAuditData";
- events["click " + this.ui.previousAuditData] = "onClickPreviousAuditData";
- events["click " + this.ui.attrFilter] = function(e) {
- // this.$('.fa-chevron-right').toggleClass('fa-chevron-down');
- this.$('.fa-angle-right').toggleClass('fa-angle-down');
- this.$('.attributeResultContainer').addClass("overlay");
- this.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
- // this.$('.attribute-filter-container').toggleClass('attribute-filter-container')
- this.onClickAttrFilter();
- };
- events["click " + this.ui.attrClose] = function(e) {
- that.closeAttributeModel();
- };
- events["click " + this.ui.attrApply] = function(e) {
- that.okAttrFilterButton(e);
- };
- events["click " + this.ui.tablist] = function(e) {
- var tabValue = $(e.currentTarget).attr('role');
- Utils.setUrl({
- url: Utils.getUrlState.getQueryUrl().queyParams[0],
- urlParams: { tabActive: tabValue || 'properties' },
- mergeBrowserUrl: false,
- trigger: false,
- updateTabState: true
- });
-
- };
- return events;
- },
- /**
- * intialize a new AuditTableLayoutView Layout
- * @constructs
- */
- initialize: function(options) {
- _.extend(this, _.pick(options, 'value', 'guid', 'entity', 'entityName', 'attributeDefs', 'nameSpaceCollection'));
- this.entityCollection = new VEntityList();
- this.limit = 26;
- this.entityCollection.url = UrlLinks.purgeApiUrl();
- this.entityCollection.modelAttrName = "events";
- this.entityModel = new this.entityCollection.model();
- this.pervOld = [];
- this.onlyPurge = true;
- this.commonTableOptions = {
- collection: this.entityCollection,
- includeFilter: false,
- includePagination: false,
- includePageSize: false,
- includeAtlasTableSorting: true,
- includeFooterRecords: false,
- gridOpts: {
- className: "table table-hover backgrid table-quickMenu",
- emptyText: 'No records found!'
- },
- filterOpts: {},
- paginatorOpts: {}
- };
- this.currPage = 1;
- this.isFilters = null;
- this.purgeAttrFilters = [{
- "id": "startTime",
- "label": "startTime (date)",
- "operators": [
- "=",
- "!=",
- ">",
- "<",
- ">=",
- "<="
- ],
- "optgroup": "Select Purge Attribute",
- "plugin": "daterangepicker",
- "plugin_config": {
- "locale": {
- "format": "MM/DD/YYYY h:mm A"
- },
- "showDropdowns": true,
- "singleDatePicker": true,
- "timePicker": true
- },
- "type": "date"
- }, {
- "id": "endTime",
- "label": "endTime (date)",
- "operators": [
- "=",
- "!=",
- ">",
- "<",
- ">=",
- "<="
- ],
- "optgroup": "Select Purge Attribute",
- "plugin": "daterangepicker",
- "plugin_config": {
- "locale": {
- "format": "MM/DD/YYYY h:mm A"
- },
- "showDropdowns": true,
- "singleDatePicker": true,
- "timePicker": true
- },
- "type": "date"
- }]
- },
- onRender: function() {
- var str = '<option>All</option><option>Purge</option>';
- this.ui.purgeType.html(str);
- this.ui.purgeType.select2({});
- this.bindEvents();
- this.ui.purgeRegion.hide();
- this.getPurgeParam();
- this.entityCollection.comparator = function(model) {
- return -model.get('timestamp');
- }
- },
- onShow: function() {
- if (this.value && this.value.tabActive) {
- this.$('.nav.nav-tabs').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
- this.$('.tab-content').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
- $("html, body").animate({ scrollTop: (this.$('.tab-content').offset().top + 1200) }, 1000);
- }
- },
- bindEvents: function() {
- this.renderNameSpaceLayoutView();
- },
-
- renderNameSpaceLayoutView: function(obj) {
- var that = this;
- require(['views/name_space/AllNameSpaceTableLayoutView'], function(AllNameSpaceTableLayoutView) {
- that.RNamespaceTableLayoutView.show(new AllNameSpaceTableLayoutView({ nameSpaceCollection: that.nameSpaceCollection }));
- });
- },
- getToOffset: function() {
- return ((this.limit - 1) * this.currPage);
- },
- getFromOffset: function(toOffset) {
- // +2 because of toOffset is alrady in minus and limit is +1;
- return ((toOffset - this.limit) + 2);
- },
- renderOffset: function(options) {
- var entityLength;
- if (options.nextClick) {
- options.previous.removeAttr("disabled");
- if (this.entityCollection.length != 0) {
- this.currPage++;
-
- }
- } else if (options.previousClick) {
- options.next.removeAttr("disabled");
- if (this.currPage > 1 && this.entityCollection.models.length) {
- this.currPage--;
- }
- }
- if (this.entityCollection.models.length === this.limit) {
- // Because we have 1 extra record.
- entityLength = this.entityCollection.models.length - 1;
- } else {
- entityLength = this.entityCollection.models.length
- }
- this.ui.activePage.attr('title', "Page " + this.currPage);
- this.ui.activePage.text(this.currPage);
- var toOffset = this.getToOffset();
- this.ui.pageRecordText.html("Showing <u>" + entityLength + " records</u> From " + this.getFromOffset(toOffset) + " - " + toOffset);
- },
- getPurgeParam: function() {
- var that = this;
- that.fetchCollection({
- next: that.ui.nextAuditData,
- nextClick: false,
- previous: that.ui.previousAuditData,
- isPurge: that.onlyPurge
- });
- },
- closeAttributeModel: function() {
- var that = this;
- that.$('.attributeResultContainer').removeClass("overlay");
- that.$('.fa-angle-right').toggleClass('fa-angle-down');
- that.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
- },
- getAttributes: function() {
- var purgeAttributes = [{
- "attributeName": "operation",
- "operator": "like",
- "attributeValue": "PURGE"
- }];
- if (!this.onlyPurge) {
- purgeAttributes.push({
- "attributeName": "userName",
- "operator": "like",
- "attributeValue": "admin"
- })
- }
- if (this.isFilters) {
- _.each(this.isFilters, function(purgeFilter) {
- purgeAttributes.push({
- "attributeName": purgeFilter.id,
- "operator": purgeFilter.operator,
- "attributeValue": Date.parse(purgeFilter.value).toString(),
- })
- })
- this.isFilters = null;
- }
- return purgeAttributes;
- },
-
- renderQueryBuilder: function(obj, rQueryBuilder) {
- var that = this;
- require(['views/search/QueryBuilderView'], function(QueryBuilderView) {
- rQueryBuilder.show(new QueryBuilderView(obj));
- });
- },
- onClickAttrFilter: function() {
- var that = this;
- this.ui.purgeRegion.show();
- require(['views/search/QueryBuilderView'], function(QueryBuilderView) {
- that.RQueryBuilderPurge.show(new QueryBuilderView({ purgeAttrFilters: that.purgeAttrFilters }));
- });
-
- },
- okAttrFilterButton: function(options) {
- var that = this,
- isFilterValidate = true,
- queryBuilderRef = that.RQueryBuilderPurge.currentView.ui.builder;
- if (queryBuilderRef.data("queryBuilder")) {
- var queryBuilder = queryBuilderRef.queryBuilder("getRules");
- queryBuilder ? that.isFilters = queryBuilder.rules : isFilterValidate = false;
- }
- if (isFilterValidate) {
- that.closeAttributeModel();
- that.getPurgeParam();
- }
- },
- fetchCollection: function(options) {
- var that = this,
- purgeParam = {
- condition: "AND",
- criterion: that.getAttributes()
- };
- this.$('.fontLoader').show();
- this.$('.tableOverlay').show();
- if (that.entityCollection.models.length > 1) {
- if (options.nextClick) {
- this.pervOld.push(that.entityCollection.first().get('eventKey'));
- }
- }
- var apiObj = {
- sort: false,
- success: function(dataOrCollection, response) {
- if (!(that.ui.pageRecordText instanceof jQuery)) {
- return;
- }
- that.entityCollection.fullCollection.reset(dataOrCollection);
- if (that.entityCollection.models.length < that.limit) {
- options.previous.attr('disabled', true);
- options.next.attr('disabled', true);
- }
- that.renderOffset(options);
- that.entityCollection.sort();
- if (that.entityCollection.models.length) {
- if (that.entityCollection && (that.entityCollection.models.length < that.limit && that.currPage == 1) && that.next == that.entityCollection.last().get('eventKey')) {
- options.next.attr('disabled', true);
- options.previous.removeAttr("disabled");
- } else {
- that.next = that.entityCollection.last().get('eventKey');
- if (that.pervOld.length === 0) {
- options.previous.attr('disabled', true);
- }
- }
- }
- that.renderTableLayoutView();
- that.$('.fontLoader').hide();
- that.$('.tableOverlay').hide();
- that.$('.auditTable').show(); // Only for first time table show because we never hide after first render.
- },
- silent: true,
- reset: true
- }
- $.extend(that.entityCollection.queryParams, { limit: 25, offset: 0, auditFilters: purgeParam });
- $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(that.entityCollection.queryParams) })
- this.entityCollection.constructor.nonCrudOperation.call(this, UrlLinks.purgeApiUrl(), "POST", apiObj);
- },
- renderTableLayoutView: function() {
- var that = this;
-
- this.ui.showDefault.hide();
- require(['utils/TableLayout'], function(TableLayout) {
- var cols = new Backgrid.Columns(that.getAuditTableColumns());
- that.RAuditTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
- columns: cols
- })));
- if (!(that.entityCollection.models.length < that.limit)) {
- that.RAuditTableLayoutView.$el.find('table tr').last().hide();
- }
- });
- },
- getAuditTableColumns: function() {
- var that = this;
- return this.entityCollection.constructor.getTableCols({
- result: {
- label: "",
- cell: "html",
- editable: false,
- sortable: false,
- cell: Backgrid.ExpandableCell,
- fixWidth: "20",
- accordion: false,
- expand: function(el, model) {
- var purgeValues = '';
- if (model.attributes.params) {
- var guids = model.attributes.result.replace('[', '').replace(']', '').split(',');
- _.each(guids, function(purgeGuid) {
- // purgeGuid.trim();
- purgeValues += '<a class="blue-link" data-id="purgeEntity" >' + purgeGuid.trim() + '</a></br>';
- })
- } else {
- purgeValues = '';
- }
- var purgeText = '<div class="row"><div class="col-sm-2">Purge Entities: </div><div class="col-sm-10">' + purgeValues + '</div></div>';
- /* set expanded row's content */
- $(el).append($('<div>').html(purgeText));
-
- }
- },
- userName: {
- label: "Users",
- cell: "html",
- editable: false,
- sortable: function(e, attr, order) {
- return function(left, right) {
-
- // no-op
- if (order == null) return 0;
-
- var l = left.get(attr),
- r = right.get(attr),
- t;
-
- // if descending order, swap left and right
- if (order === 1) t = l, l = r, r = t;
-
- // compare as usual
- if (l === r) return 0;
- else if (l < r) return -1;
- return 1;
- }
- }
- },
- operation: {
- label: "Operation",
- cell: "String",
- editable: false,
- formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
- fromRaw: function(rawValue, model) {
- if (rawValue === "PURGE" && model.attributes.params) {
- var purgeLength = model.attributes.result.replace('[', '').replace(']', '').split(',').length;
- return purgeLength === 1 ? purgeLength + " entity purged." : purgeLength + " entities purged.";
- } else {
- return "No entity purged.";
- }
-
- }
- })
- },
- clientId: {
- label: "Client ID",
- cell: "String",
- editable: false
- },
- startTime: {
- label: "Start Time",
- cell: "html",
- editable: false,
- formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
- fromRaw: function(rawValue, model) {
- return new Date(rawValue);
- }
- })
- },
- endTime: {
- label: "End Time",
- cell: "html",
- editable: false,
- formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
- fromRaw: function(rawValue, model) {
- return new Date(rawValue);
- }
- })
- }
- }, this.entityCollection);
-
- },
- onClickPurgeType: function(e, value) {
- this.onlyPurge = e.currentTarget.value === "Purge" ? true : false;
- this.getPurgeParam();
- },
- onClickPurgeEntity: function(e) {
- var that = this;
- require([
- 'modules/Modal', 'views/audit/AuditTableLayoutView', 'views/audit/CreateAuditTableLayoutView',
- ], function(Modal, AuditTableLayoutView, CreateAuditTableLayoutView) {
- var obj = {
- guid: $(e.target).text(),
- },
- modal = new Modal({
- title: "Purged Entity Details : " + obj.guid,
- content: new AuditTableLayoutView(obj),
- mainClass: "modal-full-screen",
- okCloses: true,
- showFooter: false,
- }).open();
-
- modal.on('closeModal', function() {
- $('.modal').css({ 'padding-right': '0px !important' });
- modal.trigger('cancel');
- });
- modal.$el.on('click', 'td a', function() {
- modal.trigger('cancel');
- });
- });
- },
- onClickNextAuditData: function() {
- var that = this;
- this.ui.previousAuditData.removeAttr("disabled");
- $.extend(this.entityCollection.queryParams, {
- startKey: function() {
- return that.next;
- }
- });
- this.fetchCollection({
- next: this.ui.nextAuditData,
- nextClick: true,
- previous: this.ui.previousAuditData
- });
- },
- onClickPreviousAuditData: function() {
- var that = this;
- this.ui.nextAuditData.removeAttr("disabled");
- $.extend(this.entityCollection.queryParams, {
- startKey: function() {
- return that.pervOld.pop();
- }
- });
- this.fetchCollection({
- next: this.ui.nextAuditData,
- previousClick: true,
- previous: this.ui.previousAuditData
- });
- },
- });
- return PurgeAuditTableLayoutView;
-});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/audit/AdminAuditTableLayoutView.js b/dashboardv3/public/js/views/audit/AdminAuditTableLayoutView.js
new file mode 100644
index 0000000..6b4cfb7
--- /dev/null
+++ b/dashboardv3/public/js/views/audit/AdminAuditTableLayoutView.js
@@ -0,0 +1,369 @@
+/**
+ * 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(['require',
+ 'backbone',
+ 'hbs!tmpl/audit/AdminAuditTableLayoutView_tmpl',
+ 'collection/VEntityList',
+ 'utils/Utils',
+ 'utils/UrlLinks',
+ 'utils/CommonViewFunction'
+], function(require, Backbone, AdminAuditTableLayoutView_tmpl, VEntityList, Utils, UrlLinks, CommonViewFunction) {
+ 'use strict';
+
+ var AdminAuditTableLayoutView = Backbone.Marionette.LayoutView.extend(
+ /** @lends AuditTableLayoutView */
+ {
+ _viewName: 'AdminAuditTableLayoutView',
+
+ template: AdminAuditTableLayoutView_tmpl,
+
+ /** Layout sub regions */
+ regions: {
+ RAuditTableLayoutView: "#r_adminAuditTableLayoutView",
+ RQueryBuilderAdmin: "#r_attributeQueryBuilderAdmin"
+ },
+
+ /** ui selector cache */
+ ui: {
+ adminEntityClick: "[data-id='adminEntity']",
+ adminType: "[data-id='adminType']",
+ attrFilter: "[data-id='adminAttrFilter']",
+ adminRegion: "[data-id='adminRegion']",
+ attrApply: "[data-id='attrApply']",
+ showDefault: "[data-id='showDefault']",
+ attrClose: "[data-id='attrClose']"
+ },
+ /** ui events hash */
+ events: function() {
+ var events = {},
+ that = this;
+ events["click " + this.ui.adminEntityClick] = "onClickAdminEntity";
+ events["change " + this.ui.adminType] = "onClickAdminType";
+ events["click " + this.ui.attrFilter] = function(e) {
+ this.$('.fa-angle-right').toggleClass('fa-angle-down');
+ this.$('.attributeResultContainer').addClass("overlay");
+ this.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
+ this.onClickAttrFilter();
+ };
+ events["click " + this.ui.attrClose] = function(e) {
+ that.closeAttributeModel();
+ };
+ events["click " + this.ui.attrApply] = function(e) {
+ that.okAttrFilterButton(e);
+ };
+ return events;
+ },
+ /**
+ * intialize a new AdminTableLayoutView Layout
+ * @constructs
+ */
+ initialize: function(options) {
+ _.extend(this, _.pick(options, 'searchTableFilters'));
+ this.entityCollection = new VEntityList();
+ this.limit = 25;
+ this.entityCollection.url = UrlLinks.adminApiUrl();
+ this.entityCollection.modelAttrName = "events";
+ this.onlyAdmin = true;
+ this.commonTableOptions = {
+ collection: this.entityCollection,
+ includeFilter: false,
+ includePagination: true,
+ includeFooterRecords: true,
+ includePageSize: true,
+ includeAtlasTableSorting: true,
+ includeTableLoader: true,
+ includeColumnManager: false,
+ gridOpts: {
+ className: "table table-hover backgrid table-quickMenu",
+ emptyText: 'No records found!'
+ },
+ columnOpts: {
+ opts: {
+ initialColumnsVisible: null,
+ saveState: false
+ },
+ visibilityControlOpts: {
+ buttonTemplate: _.template("<button class='btn btn-action btn-sm pull-right'>Columns <i class='fa fa-caret-down'></i></button>")
+ },
+ el: this.ui.colManager
+ },
+ filterOpts: {},
+ paginatorOpts: {}
+ };
+ this.isFilters = null;
+ this.adminAttrFilters = [{
+ "id": "startTime",
+ "label": "startTime (date)",
+ "operators": [
+ "=",
+ "!=",
+ ">",
+ "<",
+ ">=",
+ "<="
+ ],
+ "plugin": "daterangepicker",
+ "plugin_config": {
+ "locale": {
+ "format": "MM/DD/YYYY h:mm A"
+ },
+ "showDropdowns": true,
+ "singleDatePicker": true,
+ "timePicker": true
+ },
+ "type": "date"
+ }, {
+ "id": "endTime",
+ "label": "endTime (date)",
+ "operators": [
+ "=",
+ "!=",
+ ">",
+ "<",
+ ">=",
+ "<="
+ ],
+ "plugin": "daterangepicker",
+ "plugin_config": {
+ "locale": {
+ "format": "MM/DD/YYYY h:mm A"
+ },
+ "showDropdowns": true,
+ "singleDatePicker": true,
+ "timePicker": true
+ },
+ "type": "date"
+ }]
+ },
+ onRender: function() {
+ var str = '<option>All</option><option>Admin</option>';
+ this.ui.adminType.html(str);
+ this.ui.adminType.select2({});
+ this.ui.adminRegion.hide();
+ this.getAdminCollection();
+ this.entityCollection.comparator = function(model) {
+ return -model.get('timestamp');
+ }
+ },
+ bindEvents: function() {},
+ closeAttributeModel: function() {
+ var that = this;
+ that.$('.attributeResultContainer').removeClass("overlay");
+ that.$('.fa-angle-right').toggleClass('fa-angle-down');
+ that.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
+ },
+ getAttributes: function() {
+ var adminAttributes = [{
+ "attributeName": "userName",
+ "operator": "like",
+ "attributeValue": "admin"
+ }];
+ if (!this.onlyAdmin) {
+ adminAttributes.push({
+ "attributeName": "operation",
+ "operator": "like",
+ "attributeValue": "PURGE"
+ })
+ }
+ if (this.isFilters) {
+ _.each(this.isFilters, function(adminFilter) {
+ adminAttributes.push({
+ "attributeName": adminFilter.id,
+ "operator": adminFilter.operator,
+ "attributeValue": Date.parse(adminFilter.value).toString(),
+ })
+ })
+ this.isFilters = null;
+ }
+ return adminAttributes;
+ },
+ onClickAttrFilter: function() {
+ var that = this;
+ this.ui.adminRegion.show();
+ require(['views/search/QueryBuilderView'], function(QueryBuilderView) {
+ that.RQueryBuilderAdmin.show(new QueryBuilderView({ adminAttrFilters: that.adminAttrFilters, searchTableFilters: that.searchTableFilters }));
+ });
+ },
+ okAttrFilterButton: function(options) {
+ var that = this,
+ isFilterValidate = true,
+ queryBuilderRef = that.RQueryBuilderAdmin.currentView.ui.builder;
+ if (queryBuilderRef.data("queryBuilder")) {
+ var queryBuilder = queryBuilderRef.queryBuilder("getRules");
+ if (queryBuilder) {
+ that.isFilters = queryBuilder.rules;
+ that.searchTableFilters["adminAttrFilters"] = CommonViewFunction.attributeFilter.generateUrl({ value: queryBuilder, formatedDateToLong: true });
+ } else {
+ isFilterValidate = false
+ }
+ }
+ if (isFilterValidate) {
+ that.closeAttributeModel();
+ that.getAdminCollection();
+ }
+ },
+ getAdminCollection: function() {
+ var that = this,
+ adminParam = {
+ condition: "AND",
+ criterion: that.getAttributes()
+ };
+ this.$('.fontLoader').show();
+ this.$('.tableOverlay').show();
+ $.extend(that.entityCollection.queryParams, { limit: this.limit, offset: 0, auditFilters: adminParam });
+ var apiObj = {
+ sort: false,
+ data: that.entityCollection.queryParams,
+ success: function(dataOrCollection, response) {
+ that.entityCollection.fullCollection.reset(dataOrCollection);
+ that.renderTableLayoutView();
+ that.$('.fontLoader').hide();
+ that.$('.tableOverlay').hide();
+ that.$('.auditTable').show();
+ },
+ silent: true,
+ reset: true
+ }
+ this.entityCollection.getAdminData(apiObj);
+ },
+ renderTableLayoutView: function() {
+ var that = this;
+ this.ui.showDefault.hide();
+ require(['utils/TableLayout'], function(TableLayout) {
+ var cols = new Backgrid.Columns(that.getAuditTableColumns());
+ that.RAuditTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
+ columns: cols
+ })));
+ });
+ },
+ getAuditTableColumns: function() {
+ var that = this;
+ return this.entityCollection.constructor.getTableCols({
+ result: {
+ label: "",
+ cell: "html",
+ editable: false,
+ sortable: false,
+ cell: Backgrid.ExpandableCell,
+ fixWidth: "20",
+ accordion: false,
+ alwaysVisible: true,
+ expand: function(el, model) {
+ var adminValues = '<div class="col-sm-6">',
+ newColumn = '';
+ el.attr('colspan', '6');
+ if (model.attributes.params) {
+ var guids = model.attributes.result.replace('[', '').replace(']', '').split(',');
+ _.each(guids, function(adminGuid, index) {
+ if (index % 5 == 0 && index != 0) {
+ adminValues += '</div><div class="col-sm-6">';
+ }
+ adminValues += '<a class="blue-link" data-id="adminEntity" >' + adminGuid.trim() + '</a></br>';
+ })
+ adminValues += '</div>';
+
+ } else {
+ adminValues = '';
+ }
+ var adminText = '<div class="row"><div class="col-sm-12 attr-details admin-attr-details"><div class="col-sm-2">Admin Entities: </div><div class="col-sm-10">' + adminValues + '</div></div></div>';
+ $(el).append($('<div>').html(adminText));
+
+ }
+ },
+ userName: {
+ label: "Users",
+ cell: "html",
+ editable: false
+ },
+ operation: {
+ label: "Operation",
+ cell: "String",
+ editable: false,
+ formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+ fromRaw: function(rawValue, model) {
+ if (rawValue === "PURGE" && model.attributes.params) {
+ var adminLength = model.attributes.result.replace('[', '').replace(']', '').split(',').length;
+ return adminLength === 1 ? adminLength + " entity purged." : adminLength + " entities purged.";
+ } else {
+ return "No entity purged.";
+ }
+
+ }
+ })
+ },
+ clientId: {
+ label: "Client ID",
+ cell: "String",
+ editable: false
+ },
+ startTime: {
+ label: "Start Time",
+ cell: "html",
+ editable: false,
+ formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+ fromRaw: function(rawValue, model) {
+ return new Date(rawValue);
+ }
+ })
+ },
+ endTime: {
+ label: "End Time",
+ cell: "html",
+ editable: false,
+ formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+ fromRaw: function(rawValue, model) {
+ return new Date(rawValue);
+ }
+ })
+ }
+ }, this.entityCollection);
+
+ },
+ onClickAdminType: function(e, value) {
+ this.onlyAdmin = e.currentTarget.value === "Admin" ? false : true;
+ this.getAdminCollection();
+ },
+ onClickAdminEntity: function(e) {
+ var that = this;
+ require([
+ 'modules/Modal', 'views/audit/AuditTableLayoutView', 'views/audit/CreateAuditTableLayoutView',
+ ], function(Modal, AuditTableLayoutView, CreateAuditTableLayoutView) {
+ var obj = {
+ guid: $(e.target).text(),
+ },
+ modal = new Modal({
+ title: "Admin Entity Details : " + obj.guid,
+ content: new AuditTableLayoutView(obj),
+ mainClass: "modal-full-screen",
+ okCloses: true,
+ showFooter: false,
+ }).open();
+
+ modal.on('closeModal', function() {
+ $('.modal').css({ 'padding-right': '0px !important' });
+ modal.trigger('cancel');
+ });
+ modal.$el.on('click', 'td a', function() {
+ modal.trigger('cancel');
+ });
+ });
+ }
+ });
+ return AdminAuditTableLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
index 89f5337..f7db536 100644
--- a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -39,6 +39,7 @@ define(['require',
ui: {
auditValue: "[data-id='auditValue']",
name: "[data-id='name']",
+ nameContainer: "[data-id='nameContainer']",
noData: "[data-id='noData']",
tableAudit: "[data-id='tableAudit']",
auditHeaderValue: "[data-id='auditHeaderValue']",
@@ -156,8 +157,8 @@ define(['require',
that.noDetailsShow();
}
- } else if (detailObj == "Deleted entity") {
- that.updateName(this.entityName ? this.entityName : "Entity");
+ } else if (detailObj == "Deleted entity" || detailObj == "Purged entity") {
+ this.entityName ? that.updateName(this.entityName) : this.ui.nameContainer.empty().append("<h4 class='text-center'><i>No Records Found!</i></h4>");
}
}
});
diff --git a/dashboardv3/public/js/views/search/QueryBuilderView.js b/dashboardv3/public/js/views/search/QueryBuilderView.js
index a96f39c..fc16d6c 100644
--- a/dashboardv3/public/js/views/search/QueryBuilderView.js
+++ b/dashboardv3/public/js/views/search/QueryBuilderView.js
@@ -54,9 +54,8 @@ define(['require',
* @constructs
*/
initialize: function(options) {
- _.extend(this, _.pick(options, 'attrObj', 'value', 'typeHeaders', 'entityDefCollection', 'enumDefCollection', 'classificationDefCollection', 'tag', 'type', 'searchTableFilters', 'systemAttrArr'));
+ _.extend(this, _.pick(options, 'attrObj', 'value', 'typeHeaders', 'entityDefCollection', 'enumDefCollection', 'classificationDefCollection', 'businessMetadataDefCollection', 'tag', 'type', 'searchTableFilters', 'systemAttrArr', 'adminAttrFilters'));
this.attrObj = _.sortBy(this.attrObj, 'name');
- //this.systemAttrArr = _.sortBy(this.systemAttrArr, 'name');
this.filterType = this.tag ? 'tagFilters' : 'entityFilters';
},
bindEvents: function() {},
@@ -312,70 +311,82 @@ define(['require',
onRender: function() {
var that = this,
filters = [],
- isGroupView = false,
+ isGroupView = true,
placeHolder = '--Select Attribute--';
- if (this.attrObj.length > 0 && this.systemAttrArr.length > 0) {
- isGroupView = true;
- } else if (this.attrObj.length === 0 || this.systemAttrArr.length === 0) {
- isGroupView = false;
- }
- if (this.attrObj.length === 0) {
- placeHolder = '--Select System Attribute--';
- }
- if (this.value) {
- var rules_widgets = CommonViewFunction.attributeFilter.extractUrl({ "value": this.searchTableFilters[this.filterType][(this.tag ? this.value.tag : this.value.type)], "formatDate": true });
- }
- _.each(this.attrObj, function(obj) {
- var type = that.tag ? 'Classification' : 'Entity';
- var returnObj = that.getObjDef(obj, rules_widgets, isGroupView, 'Select ' + type + ' Attribute');
- if (returnObj) {
- filters.push(returnObj);
- }
- });
- var sortMap = {
- "__guid": 1,
- "__typeName": 2,
- "__timestamp": 3,
- "__modificationTimestamp": 4,
- "__createdBy": 5,
- "__modifiedBy": 6,
- "__isIncomplete": 7,
- "__state": 8,
- "__classificationNames": 9,
- "__propagatedClassificationNames": 10,
- "__labels": 11,
- "__customAttributes": 12,
- }
- this.systemAttrArr = _.sortBy(this.systemAttrArr, function(obj) {
- return sortMap[obj.name]
- })
- _.each(this.systemAttrArr, function(obj) {
- var returnObj = that.getObjDef(obj, rules_widgets, isGroupView, 'Select System Attribute', true);
- if (returnObj) {
- filters.push(returnObj);
+ var rules_widgets = null;
+ if (this.adminAttrFilters) {
+ filters = this.adminAttrFilters;
+ rules_widgets = CommonViewFunction.attributeFilter.extractUrl({ "value": this.searchTableFilters ? this.searchTableFilters["adminAttrFilters"] : null, "formatDate": true });;
+ } else {
+ if (this.value) {
+ var rules_widgets = CommonViewFunction.attributeFilter.extractUrl({ "value": this.searchTableFilters[this.filterType][(this.tag ? this.value.tag : this.value.type)], "formatDate": true });
}
- });
- if (this.type) {
- var entityDef = this.entityDefCollection.fullCollection.find({ name: that.options.applicableType }),
- businessMetadataAttributeDefs = null;
- if (entityDef) {
- BusinessMetadataAttributeDefs = entityDef.get("businessAttributeDefs");
+ _.each(this.attrObj, function(obj) {
+ var type = that.tag ? that.value.tag : that.value.type;
+ var returnObj = that.getObjDef(obj, rules_widgets, isGroupView, (type + ' Attribute'));
+ if (returnObj) {
+ filters.push(returnObj);
+ }
+ });
+ var sortMap = {
+ "__guid": 1,
+ "__typeName": 2,
+ "__timestamp": 3,
+ "__modificationTimestamp": 4,
+ "__createdBy": 5,
+ "__modifiedBy": 6,
+ "__isIncomplete": 7,
+ "__state": 8,
+ "__classificationNames": 9,
+ "__propagatedClassificationNames": 10,
+ "__labels": 11,
+ "__customAttributes": 12,
}
- if (BusinessMetadataAttributeDefs) {
- _.each(BusinessMetadataAttributeDefs, function(attributes, key) {
- var sortedAttributes = _.sortBy(attributes, function(obj) {
- return obj.name;
- });
+ this.systemAttrArr = _.sortBy(this.systemAttrArr, function(obj) {
+ return sortMap[obj.name]
+ })
+ _.each(this.systemAttrArr, function(obj) {
+ var returnObj = that.getObjDef(obj, rules_widgets, isGroupView, 'System Attribute', true);
+ if (returnObj) {
+ filters.push(returnObj);
+ }
+ });
+ if (this.type) {
+ var pushBusinessMetadataFilter = function(sortedAttributes, businessMetadataKey) {
_.each(sortedAttributes, function(attrDetails) {
- var returnObj = that.getObjDef(attrDetails, rules_widgets, isGroupView, 'Select Business Metadata Attribute', true);
+ var returnObj = that.getObjDef(attrDetails, rules_widgets, isGroupView, 'Business Metadata Attribute', true);
if (returnObj) {
- returnObj.id = key + "." + returnObj.id;
- returnObj.label = key + ": " + returnObj.label;
+ returnObj.id = businessMetadataKey + "." + returnObj.id;
+ returnObj.label = businessMetadataKey + ": " + returnObj.label;
returnObj.data = { 'entityType': "businessMetadata" };
filters.push(returnObj);
}
});
- });
+ };
+ if (this.value.type == "_ALL_ENTITY_TYPES") {
+ this.businessMetadataDefCollection.each(function(model) {
+ var sortedAttributes = model.get('attributeDefs');
+ sortedAttributes = _.sortBy(sortedAttributes, function(obj) {
+ return obj.name;
+ });
+ pushBusinessMetadataFilter(sortedAttributes, model.get('name'));
+ })
+
+ } else {
+ var entityDef = this.entityDefCollection.fullCollection.find({ name: this.value.type }),
+ businessMetadataAttributeDefs = null;
+ if (entityDef) {
+ businessMetadataAttributeDefs = entityDef.get("businessAttributeDefs");
+ }
+ if (businessMetadataAttributeDefs) {
+ _.each(businessMetadataAttributeDefs, function(attributes, key) {
+ var sortedAttributes = _.sortBy(attributes, function(obj) {
+ return obj.name;
+ });
+ pushBusinessMetadataFilter(sortedAttributes, key);
+ });
+ }
+ }
}
}
filters = _.uniq(filters, 'id');