You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by kb...@apache.org on 2020/04/01 12:54:02 UTC

[atlas] 02/02: ATLAS-3706 : UI: Audit change for Business metadata/labels/user-define property

This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 95923fba04e99c9bcf4af70fe8faf834c802fdf9
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Wed Apr 1 14:51:55 2020 +0530

    ATLAS-3706 : UI: Audit change for Business metadata/labels/user-define property
---
 .../audit/CreateAuditTableLayoutView_tmpl.html     |   2 +-
 dashboardv2/public/js/utils/Enums.js               |   6 +-
 .../js/views/audit/CreateAuditTableLayoutView.js   | 138 ++++++++++----------
 .../js/views/detail_page/DetailPageLayoutView.js   |   6 +
 .../js/views/entity/EntityLabelDefineView.js       |   5 +-
 .../public/js/views/entity/EntityUserDefineView.js |   5 +-
 dashboardv3/public/css/scss/table.scss             |   1 +
 .../audit/CreateAuditTableLayoutView_tmpl.html     |   2 +-
 dashboardv3/public/js/utils/Enums.js               |   4 +-
 .../js/views/audit/CreateAuditTableLayoutView.js   | 139 +++++++++++----------
 .../js/views/detail_page/DetailPageLayoutView.js   |   6 +
 .../js/views/entity/EntityLabelDefineView.js       |   5 +-
 .../public/js/views/entity/EntityUserDefineView.js |   5 +-
 13 files changed, 188 insertions(+), 136 deletions(-)

diff --git a/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html b/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
index 1934339..c496f21 100644
--- a/dashboardv2/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
+++ b/dashboardv2/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 style="word-break: break-word;">Name: <span data-id="name"></span></h4>
+<h4 style="word-break: break-word;" data-id="name"></h4>
 <div class="panel-group server-stats-container statsContainer " id="accordion">
     <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="detailsAttribute">
         <div class="panel-heading" data-toggle="collapse" href="#detailAttributeTableCollapse" aria-expanded="true">
diff --git a/dashboardv2/public/js/utils/Enums.js b/dashboardv2/public/js/utils/Enums.js
index e5cba08..e2d8cd2 100644
--- a/dashboardv2/public/js/utils/Enums.js
+++ b/dashboardv2/public/js/utils/Enums.js
@@ -38,7 +38,9 @@ define(['require'], function(require) {
         TERM_DELETE: "Term Deleted",
         LABEL_ADD: "Label(s) Added",
         LABEL_DELETE: "Label(s) Deleted",
-        ENTITY_PURGE: "Entity Purged"
+        ENTITY_PURGE: "Entity Purged",
+        BUSINESS_ATTRIBUTE_ADD: "Business Attribute(s) Added",
+        BUSINESS_ATTRIBUTE_DELETE: "Business Attribute(s) Deleted"
     }
 
     Enums.entityStateReadOnly = {
@@ -212,4 +214,4 @@ define(['require'], function(require) {
         1: "true"
     };
     return Enums;
-});
+});
\ No newline at end of file
diff --git a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
index 43fb114..a820616 100644
--- a/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv2/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -82,7 +82,7 @@ define(['require',
 
             },
             updateName: function(name) {
-                this.ui.name.text(name);
+                this.ui.name.html("<span>Name: </span><span>" + name + "</span>");
             },
             noDetailsShow: function() {
                 this.ui.noData.removeClass('hide');
@@ -91,73 +91,85 @@ define(['require',
                 var that = this,
                     table = "";
                 var detailObj = this.entityModel.get('details');
-                if (detailObj && detailObj.search(':') >= 0) {
-                    var parseDetailsObject = detailObj.split(':');
-                    if (parseDetailsObject.length > 1) {
-                        parseDetailsObject.shift();
-                        var auditData = parseDetailsObject.join(":");
-                    }
-                    try {
-                        parseDetailsObject = JSON.parse(auditData);
-                        var skipAttribute = parseDetailsObject.typeName ? "guid" : null,
-                            name = Utils.getName(parseDetailsObject, null, skipAttribute);
-                        if (name == "-") {
-                            name = _.escape(parseDetailsObject.typeName);
+                if (detailObj) {
+                    if (detailObj.search(':') >= 0) {
+                        var parseDetailsObject = detailObj.split(':'),
+                            type = "",
+                            auditData = "";
+                        if (parseDetailsObject.length > 1) {
+                            type = parseDetailsObject[0];
+                            parseDetailsObject.shift();
+                            auditData = parseDetailsObject.join(":");
                         }
-                        var name = ((name ? name : this.entityName));
-                        that.updateName(name);
-                        if (parseDetailsObject) {
-                            var attributesDetails = parseDetailsObject.attributes,
-                                customAttr = parseDetailsObject.customAttributes,
-                                labelsDetails = parseDetailsObject.labels,
-                                relationshipAttributes = parseDetailsObject.relationshipAttributes;
-                            if (attributesDetails) {
-                                that.ui.attributeDetails.removeClass('hide');
-                                that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("Technical properties ") : that.ui.panelAttrHeading.html("Properties ");
-                                var attrTable = that.createTableWithValues(attributesDetails);
-                                that.ui.attributeCard.html(
-                                    attrTable);
-                            }
-                            if (!_.isEmpty(customAttr)) {
-                                that.ui.customAttributeDetails.removeClass('hide');
-                                var customAttrTable = that.createTableWithValues(customAttr);
-                                that.ui.customAttrCard.html(
-                                    customAttrTable);
-                            }
-                            if (!_.isEmpty(labelsDetails)) {
-                                this.ui.labelsDetailsTable.removeClass('hide');
-                                var labelsTable = '';
-                                _.each(labelsDetails, function(value, key, list) {
-                                    labelsTable += "<label class='label badge-default'>" + value + "</label>";
-                                });
-                                that.ui.labelCard.html(
-                                    labelsTable);
-                            }
-                            if (!_.isEmpty(relationshipAttributes)) {
-                                that.ui.relationShipAttributeDetails.removeClass('hide');
-                                var relationshipAttrTable = that.createTableWithValues(relationshipAttributes);
-                                that.ui.relationshipAttrCard.html(
-                                    relationshipAttrTable);
-                            }
-                            if (!attributesDetails && !customAttr && !labelsDetails && !relationshipAttributes) {
-                                that.ui.detailsAttribute.removeClass('hide');
-                                var attrDetailTable = that.createTableWithValues(parseDetailsObject);
-                                that.ui.attributeDetailCard.html(
-                                    attrDetailTable);
+                        if (auditData.search('{') === -1) {
+                            if (type.trim() === "Added labels" || type.trim() === "Deleted labels") {
+                                this.updateName(auditData.trim().split(" ").join(","));
+                            } else {
+                                this.updateName(auditData);
                             }
                         } else {
-                            that.noDetailsShow();
-                        }
-                    } catch (err) {
-                        if (_.isArray(parseDetailsObject)) {
-                            var name = _.escape(parseDetailsObject[0]);
+                            try {
+                                parseDetailsObject = JSON.parse(auditData);
+                                var skipAttribute = parseDetailsObject.typeName ? "guid" : null,
+                                    name = Utils.getName(parseDetailsObject, null, skipAttribute);
+                                if (name == "-") {
+                                    name = _.escape(parseDetailsObject.typeName);
+                                }
+                                var name = ((name ? name : this.entityName));
+                                that.updateName(name);
+                                if (parseDetailsObject) {
+                                    var attributesDetails = parseDetailsObject.attributes,
+                                        customAttr = parseDetailsObject.customAttributes,
+                                        labelsDetails = parseDetailsObject.labels,
+                                        relationshipAttributes = parseDetailsObject.relationshipAttributes;
+                                    if (attributesDetails) {
+                                        that.ui.attributeDetails.removeClass('hide');
+                                        that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("Technical properties ") : that.ui.panelAttrHeading.html("Properties ");
+                                        var attrTable = that.createTableWithValues(attributesDetails);
+                                        that.ui.attributeCard.html(
+                                            attrTable);
+                                    }
+                                    if (!_.isEmpty(customAttr)) {
+                                        that.ui.customAttributeDetails.removeClass('hide');
+                                        var customAttrTable = that.createTableWithValues(customAttr);
+                                        that.ui.customAttrCard.html(
+                                            customAttrTable);
+                                    }
+                                    if (!_.isEmpty(labelsDetails)) {
+                                        this.ui.labelsDetailsTable.removeClass('hide');
+                                        var labelsTable = '';
+                                        _.each(labelsDetails, function(value, key, list) {
+                                            labelsTable += "<label class='label badge-default'>" + value + "</label>";
+                                        });
+                                        that.ui.labelCard.html(
+                                            labelsTable);
+                                    }
+                                    if (!_.isEmpty(relationshipAttributes)) {
+                                        that.ui.relationShipAttributeDetails.removeClass('hide');
+                                        var relationshipAttrTable = that.createTableWithValues(relationshipAttributes);
+                                        that.ui.relationshipAttrCard.html(
+                                            relationshipAttrTable);
+                                    }
+                                    if (!attributesDetails && !customAttr && !labelsDetails && !relationshipAttributes) {
+                                        that.ui.detailsAttribute.removeClass('hide');
+                                        var attrDetailTable = that.createTableWithValues(parseDetailsObject);
+                                        that.ui.attributeDetailCard.html(
+                                            attrDetailTable);
+                                    }
+                                } else {
+                                    that.noDetailsShow();
+                                }
+                            } catch (err) {
+                                if (_.isArray(parseDetailsObject)) {
+                                    var name = _.escape(parseDetailsObject[0]);
+                                }
+                                that.updateName(name);
+                                that.noDetailsShow();
+                            }
                         }
-                        that.updateName(name);
-                        that.noDetailsShow();
+                    } else if (detailObj == "Deleted entity" || detailObj == "Purged entity") {
+                        this.entityName ? this.updateName(this.entityName) : (this.ui.name.hide() && this.ui.noData.removeClass("hide"));
                     }
-
-                } else if (detailObj == "Deleted entity") {
-                    that.updateName(this.entityName);
                 }
             }
         });
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index eca3b55..ccb8fad 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -170,6 +170,9 @@ define(['require',
                     if (collectionJSON) {
                         this.name = Utils.getName(collectionJSON);
                         if (collectionJSON.attributes) {
+                            if (collectionJSON.typeName) {
+                                collectionJSON.attributes.typeName = _.escape(collectionJSON.typeName);
+                            }
                             if (this.name && collectionJSON.typeName) {
                                 this.name = this.name + ' (' + _.escape(collectionJSON.typeName) + ')';
                             }
@@ -244,6 +247,9 @@ define(['require',
                         })(),
                         editEntity: this.editEntity || false
                     }
+                    obj["renderAuditTableLayoutView"] = function() {
+                        that.renderAuditTableLayoutView(obj);
+                    };
                     this.renderEntityDetailTableLayoutView(obj);
                     this.renderEntityUserDefineView(obj);
                     this.renderEntityLabelDefineView(obj);
diff --git a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
index b4f4a51..678a039 100644
--- a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
@@ -55,7 +55,7 @@ define(['require',
         },
         initialize: function(options) {
             var self = this;
-            _.extend(this, _.pick(options, 'entity', 'customFilter'));
+            _.extend(this, _.pick(options, 'entity', 'customFilter', 'renderAuditTableLayoutView'));
             this.swapItem = false, this.saveLabels = false;
             this.readOnlyEntity = this.customFilter === undefined ? Enums.entityStateReadOnly[this.entity.status] : this.customFilter;
             this.entityModel = new VEntity(this.entity);
@@ -164,6 +164,9 @@ define(['require',
                         that.swapItem = false;
                         that.saveLabels = false;
                         that.render();
+                        if (that.renderAuditTableLayoutView) {
+                            that.renderAuditTableLayoutView();
+                        }
                     },
                     error: function(e) {
                         that.ui.saveLabels && that.ui.saveLabels.length > 0 && that.ui.saveLabels[0].setAttribute("disabled", false);
diff --git a/dashboardv2/public/js/views/entity/EntityUserDefineView.js b/dashboardv2/public/js/views/entity/EntityUserDefineView.js
index 1cb0d8c..38d32c2 100644
--- a/dashboardv2/public/js/views/entity/EntityUserDefineView.js
+++ b/dashboardv2/public/js/views/entity/EntityUserDefineView.js
@@ -53,7 +53,7 @@ define(['require',
             return events;
         },
         initialize: function(options) {
-            _.extend(this, _.pick(options, 'entity', 'customFilter'));
+            _.extend(this, _.pick(options, 'entity', 'customFilter', 'renderAuditTableLayoutView'));
             this.userDefineAttr = this.entity && this.entity.customAttributes || [];
             this.initialCall = false;
             this.swapItem = false, this.saveAttrItems = false;
@@ -136,6 +136,9 @@ define(['require',
                     that.swapItem = false;
                     that.saveAttrItems = false;
                     that.render();
+                    if (that.renderAuditTableLayoutView) {
+                        that.renderAuditTableLayoutView();
+                    }
                 },
                 error: function(e) {
                     that.initialCall = false;
diff --git a/dashboardv3/public/css/scss/table.scss b/dashboardv3/public/css/scss/table.scss
index 5f49be2..a294102 100644
--- a/dashboardv3/public/css/scss/table.scss
+++ b/dashboardv3/public/css/scss/table.scss
@@ -254,6 +254,7 @@ td {
 
 .auditStatusContainer {
     display: flex;
+    flex-wrap: wrap;
     justify-content: center;
 }
 
diff --git a/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
index 10cc697..3cdbc7f 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;" data-id="nameContainer">Name: <span data-id="name"></span></h4>
+<h4 style="word-break: break-word;" data-id="name"></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 ef93b77..e2d8cd2 100644
--- a/dashboardv3/public/js/utils/Enums.js
+++ b/dashboardv3/public/js/utils/Enums.js
@@ -38,7 +38,9 @@ define(['require'], function(require) {
         TERM_DELETE: "Term Deleted",
         LABEL_ADD: "Label(s) Added",
         LABEL_DELETE: "Label(s) Deleted",
-        ENTITY_PURGE: "Entity Purged"
+        ENTITY_PURGE: "Entity Purged",
+        BUSINESS_ATTRIBUTE_ADD: "Business Attribute(s) Added",
+        BUSINESS_ATTRIBUTE_DELETE: "Business Attribute(s) Deleted"
     }
 
     Enums.entityStateReadOnly = {
diff --git a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
index f7db536..a820616 100644
--- a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -39,7 +39,6 @@ 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']",
@@ -83,7 +82,7 @@ define(['require',
 
             },
             updateName: function(name) {
-                this.ui.name.text(name);
+                this.ui.name.html("<span>Name: </span><span>" + name + "</span>");
             },
             noDetailsShow: function() {
                 this.ui.noData.removeClass('hide');
@@ -92,73 +91,85 @@ define(['require',
                 var that = this,
                     table = "";
                 var detailObj = this.entityModel.get('details');
-                if (detailObj && detailObj.search(':') >= 0) {
-                    var parseDetailsObject = detailObj.split(':');
-                    if (parseDetailsObject.length > 1) {
-                        parseDetailsObject.shift();
-                        var auditData = parseDetailsObject.join(":");
-                    }
-                    try {
-                        parseDetailsObject = JSON.parse(auditData);
-                        var skipAttribute = parseDetailsObject.typeName ? "guid" : null,
-                            name = Utils.getName(parseDetailsObject, null, skipAttribute);
-                        if (name == "-") {
-                            name = _.escape(parseDetailsObject.typeName);
+                if (detailObj) {
+                    if (detailObj.search(':') >= 0) {
+                        var parseDetailsObject = detailObj.split(':'),
+                            type = "",
+                            auditData = "";
+                        if (parseDetailsObject.length > 1) {
+                            type = parseDetailsObject[0];
+                            parseDetailsObject.shift();
+                            auditData = parseDetailsObject.join(":");
                         }
-                        var name = ((name ? name : this.entityName));
-                        that.updateName(name);
-                        if (parseDetailsObject) {
-                            var attributesDetails = parseDetailsObject.attributes,
-                                customAttr = parseDetailsObject.customAttributes,
-                                labelsDetails = parseDetailsObject.labels,
-                                relationshipAttributes = parseDetailsObject.relationshipAttributes;
-                            if (attributesDetails) {
-                                that.ui.attributeDetails.removeClass('hide');
-                                that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("Technical properties ") : that.ui.panelAttrHeading.html("Properties ");
-                                var attrTable = that.createTableWithValues(attributesDetails);
-                                that.ui.attributeCard.html(
-                                    attrTable);
-                            }
-                            if (!_.isEmpty(customAttr)) {
-                                that.ui.customAttributeDetails.removeClass('hide');
-                                var customAttrTable = that.createTableWithValues(customAttr);
-                                that.ui.customAttrCard.html(
-                                    customAttrTable);
-                            }
-                            if (!_.isEmpty(labelsDetails)) {
-                                this.ui.labelsDetailsTable.removeClass('hide');
-                                var labelsTable = '';
-                                _.each(labelsDetails, function(value, key, list) {
-                                    labelsTable += "<label class='label badge-default'>" + value + "</label>";
-                                });
-                                that.ui.labelCard.html(
-                                    labelsTable);
-                            }
-                            if (!_.isEmpty(relationshipAttributes)) {
-                                that.ui.relationShipAttributeDetails.removeClass('hide');
-                                var relationshipAttrTable = that.createTableWithValues(relationshipAttributes);
-                                that.ui.relationshipAttrCard.html(
-                                    relationshipAttrTable);
-                            }
-                            if (!attributesDetails && !customAttr && !labelsDetails && !relationshipAttributes) {
-                                that.ui.detailsAttribute.removeClass('hide');
-                                var attrDetailTable = that.createTableWithValues(parseDetailsObject);
-                                that.ui.attributeDetailCard.html(
-                                    attrDetailTable);
+                        if (auditData.search('{') === -1) {
+                            if (type.trim() === "Added labels" || type.trim() === "Deleted labels") {
+                                this.updateName(auditData.trim().split(" ").join(","));
+                            } else {
+                                this.updateName(auditData);
                             }
                         } else {
-                            that.noDetailsShow();
-                        }
-                    } catch (err) {
-                        if (_.isArray(parseDetailsObject)) {
-                            var name = _.escape(parseDetailsObject[0]);
+                            try {
+                                parseDetailsObject = JSON.parse(auditData);
+                                var skipAttribute = parseDetailsObject.typeName ? "guid" : null,
+                                    name = Utils.getName(parseDetailsObject, null, skipAttribute);
+                                if (name == "-") {
+                                    name = _.escape(parseDetailsObject.typeName);
+                                }
+                                var name = ((name ? name : this.entityName));
+                                that.updateName(name);
+                                if (parseDetailsObject) {
+                                    var attributesDetails = parseDetailsObject.attributes,
+                                        customAttr = parseDetailsObject.customAttributes,
+                                        labelsDetails = parseDetailsObject.labels,
+                                        relationshipAttributes = parseDetailsObject.relationshipAttributes;
+                                    if (attributesDetails) {
+                                        that.ui.attributeDetails.removeClass('hide');
+                                        that.action.indexOf("Classification") === -1 ? that.ui.panelAttrHeading.html("Technical properties ") : that.ui.panelAttrHeading.html("Properties ");
+                                        var attrTable = that.createTableWithValues(attributesDetails);
+                                        that.ui.attributeCard.html(
+                                            attrTable);
+                                    }
+                                    if (!_.isEmpty(customAttr)) {
+                                        that.ui.customAttributeDetails.removeClass('hide');
+                                        var customAttrTable = that.createTableWithValues(customAttr);
+                                        that.ui.customAttrCard.html(
+                                            customAttrTable);
+                                    }
+                                    if (!_.isEmpty(labelsDetails)) {
+                                        this.ui.labelsDetailsTable.removeClass('hide');
+                                        var labelsTable = '';
+                                        _.each(labelsDetails, function(value, key, list) {
+                                            labelsTable += "<label class='label badge-default'>" + value + "</label>";
+                                        });
+                                        that.ui.labelCard.html(
+                                            labelsTable);
+                                    }
+                                    if (!_.isEmpty(relationshipAttributes)) {
+                                        that.ui.relationShipAttributeDetails.removeClass('hide');
+                                        var relationshipAttrTable = that.createTableWithValues(relationshipAttributes);
+                                        that.ui.relationshipAttrCard.html(
+                                            relationshipAttrTable);
+                                    }
+                                    if (!attributesDetails && !customAttr && !labelsDetails && !relationshipAttributes) {
+                                        that.ui.detailsAttribute.removeClass('hide');
+                                        var attrDetailTable = that.createTableWithValues(parseDetailsObject);
+                                        that.ui.attributeDetailCard.html(
+                                            attrDetailTable);
+                                    }
+                                } else {
+                                    that.noDetailsShow();
+                                }
+                            } catch (err) {
+                                if (_.isArray(parseDetailsObject)) {
+                                    var name = _.escape(parseDetailsObject[0]);
+                                }
+                                that.updateName(name);
+                                that.noDetailsShow();
+                            }
                         }
-                        that.updateName(name);
-                        that.noDetailsShow();
+                    } else if (detailObj == "Deleted entity" || detailObj == "Purged entity") {
+                        this.entityName ? this.updateName(this.entityName) : (this.ui.name.hide() && this.ui.noData.removeClass("hide"));
                     }
-
-                } 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/detail_page/DetailPageLayoutView.js b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
index 37bfc0e..9863962 100644
--- a/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv3/public/js/views/detail_page/DetailPageLayoutView.js
@@ -176,6 +176,9 @@ define(['require',
                     if (collectionJSON) {
                         this.name = Utils.getName(collectionJSON);
                         if (collectionJSON.attributes) {
+                            if (collectionJSON.typeName) {
+                                collectionJSON.attributes.typeName = _.escape(collectionJSON.typeName);
+                            }
                             if (this.name && collectionJSON.typeName) {
                                 this.name = this.name + ' (' + _.escape(collectionJSON.typeName) + ')';
                             }
@@ -252,6 +255,9 @@ define(['require',
                         })(),
                         editEntity: this.editEntity || false
                     }
+                    obj["renderAuditTableLayoutView"] = function() {
+                        that.renderAuditTableLayoutView(obj);
+                    };
                     this.renderEntityDetailTableLayoutView(obj);
                     this.renderEntityUserDefineView(obj);
                     this.renderEntityLabelDefineView(obj);
diff --git a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
index 19c3e7e..a3e864d 100644
--- a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
@@ -55,7 +55,7 @@ define(['require',
         },
         initialize: function(options) {
             var self = this;
-            _.extend(this, _.pick(options, 'entity', 'customFilter'));
+            _.extend(this, _.pick(options, 'entity', 'customFilter', 'renderAuditTableLayoutView'));
             this.swapItem = false, this.saveLabels = false;
             this.readOnlyEntity = this.customFilter === undefined ? Enums.entityStateReadOnly[this.entity.status] : this.customFilter;
             this.entityModel = new VEntity(this.entity);
@@ -164,6 +164,9 @@ define(['require',
                         that.swapItem = false;
                         that.saveLabels = false;
                         that.render();
+                        if (that.renderAuditTableLayoutView) {
+                            that.renderAuditTableLayoutView();
+                        }
                     },
                     error: function(e) {
                         that.ui.saveLabels.attr("disabled", false);
diff --git a/dashboardv3/public/js/views/entity/EntityUserDefineView.js b/dashboardv3/public/js/views/entity/EntityUserDefineView.js
index 1cb0d8c..38d32c2 100644
--- a/dashboardv3/public/js/views/entity/EntityUserDefineView.js
+++ b/dashboardv3/public/js/views/entity/EntityUserDefineView.js
@@ -53,7 +53,7 @@ define(['require',
             return events;
         },
         initialize: function(options) {
-            _.extend(this, _.pick(options, 'entity', 'customFilter'));
+            _.extend(this, _.pick(options, 'entity', 'customFilter', 'renderAuditTableLayoutView'));
             this.userDefineAttr = this.entity && this.entity.customAttributes || [];
             this.initialCall = false;
             this.swapItem = false, this.saveAttrItems = false;
@@ -136,6 +136,9 @@ define(['require',
                     that.swapItem = false;
                     that.saveAttrItems = false;
                     that.render();
+                    if (that.renderAuditTableLayoutView) {
+                        that.renderAuditTableLayoutView();
+                    }
                 },
                 error: function(e) {
                     that.initialCall = false;