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

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

commit bf63f0f400b37a31d07b98a668358a278a8e822f
Author: kevalbhatt <[email protected]>
AuthorDate: Wed Apr 1 18:08:24 2020 +0530

    ATLAS-3710 : [Business Metadata] Missing Business Metadata attribute info 
in list view
    
    (cherry picked from commit 2fbfb5572e3ae7e71e71b70e391844d98293599a)
---
 dashboardv3/public/css/scss/business-metadata.scss | 24 +++++++++++++++
 .../BusinessMetadataAttrTableLayoutView.js         | 35 +++++++++++++++++++++-
 .../BusinessMetadataAttributeItemView.js           |  4 +--
 .../BusinessMetadataTableLayoutView.js             | 14 ++++++---
 .../js/views/entity/EntityBusinessMetaDataView.js  | 18 +++++++----
 5 files changed, 83 insertions(+), 12 deletions(-)

diff --git a/dashboardv3/public/css/scss/business-metadata.scss 
b/dashboardv3/public/css/scss/business-metadata.scss
index ecfddf7..f1f7427 100644
--- a/dashboardv3/public/css/scss/business-metadata.scss
+++ b/dashboardv3/public/css/scss/business-metadata.scss
@@ -172,4 +172,28 @@
     .select2-results__option[aria-selected=true] {
         display: none;
     }
+}
+
+.business-metadata-detail-attr {
+    margin-bottom: 0px;
+    box-shadow: none;
+
+    .panel-heading {
+        color: #686868 !important;
+        font-size: 13px;
+        padding: 0;
+
+        .panel-title {
+            font-size: 14px;
+
+            a:hover {
+                color: #686868 !important;
+                opacity: 1 !important;
+            }
+        }
+    }
+
+    .btn-group>button {
+        color: #686868 !important;
+    }
 }
\ No newline at end of file
diff --git 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
index 7164801..ff2c02c 100644
--- 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
+++ 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
@@ -163,7 +163,7 @@ define(['require',
                         editable: false,
                         formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
                             fromRaw: function(rawValue, model) {
-                                return model.get('name');
+                                return _.escape(model.get('name'));
                             }
                         })
                     },
@@ -177,6 +177,39 @@ define(['require',
                             }
                         })
                     },
+                    searchWeight: {
+                        label: "Search Weight",
+                        cell: "String",
+                        editable: false
+                    },
+                    enableMultipleValue: {
+                        label: "Enable Multivalues",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                var enableMultipleValue = '';
+                                if (model.get('typeName').indexOf('array<') > 
-1) {
+                                    enableMultipleValue = 'checked';
+                                }
+                                return '<input type="checkbox" 
class="form-check-input multi-value-select" data-id="multiValueSelectStatus" ' 
+ enableMultipleValue + ' disabled="disabled">';
+                            }
+                        })
+                    },
+                    maxStrLength: {
+                        label: "Max Length",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                var maxString = "NA";
+                                if (model.get('typeName').indexOf('string') > 
-1) {
+                                    maxString = 
model.get('options').maxStrLength || maxString;
+                                }
+                                return maxString;
+                            }
+                        })
+                    },
                     options: {
                         label: "Entity Type(s)",
                         cell: "html",
diff --git 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
index 99ea135..85c64d0 100644
--- 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
+++ 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
@@ -172,8 +172,8 @@ define(['require',
                 this.ui.entityTypeSelector.on('select2:open', function(e) { // 
to make selected option disable in dropdown added remove-from-list class
                     $('.select2-dropdown--below').addClass('remove-from-list');
                 });
-                if (this.model.get("searchWeight") && 
this.model.get("searchWeight") != -1) {
-                    searchWeightValue = this.model.get("searchWeight");
+                if (this.model.get("searchWeight")) {
+                    searchWeightValue = this.model.get("searchWeight") === -1 
? 0 : this.model.get("searchWeight");
                 }
                 if (this.model.get("options")) {
                     stringLengthValue = this.model.get("options").maxStrLength 
|| '50';
diff --git 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
index 7aa22d9..cef16bf 100644
--- 
a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
+++ 
b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
@@ -247,13 +247,15 @@ define(['require',
                             var attrValues = '',
                                 attrTable = $('table'),
                                 attrTableBody = $('tbody'),
-                                attrTableHeading = "<thead><td 
style='display:table-cell'><b>Attribute</b></td><td 
style='display:table-cell'><b>Type</b></td><td 
style='display:table-cell'><b>Applicable Type(s)</b></td><td 
style='display:table-cell'><b>Action</b></td></thead>",
+                                attrTableHeading = "<thead><td 
style='display:table-cell'><b>Attribute</b></td><td 
style='display:table-cell'><b>Type</b></td><td 
style='display:table-cell'><b>Search Weight</b></td><td 
style='display:table-cell'><b>Enable Multivalues</b></td><td 
style='display:table-cell'><b>Max Length</b></td><td 
style='display:table-cell'><b>Applicable Type(s)</b></td><td 
style='display:table-cell'><b>Action</b></td></thead>",
                                 attrRow = '',
                                 attrTableDetails = '';
                             if (model.attributes && 
model.attributes.attributeDefs.length) {
                                 _.each(model.attributes.attributeDefs, 
function(attrObj) {
                                     var applicableEntityTypes = '',
-                                        typeName = attrObj.typeName;
+                                        typeName = attrObj.typeName,
+                                        multiSelect = '',
+                                        maxString = 'NA';
                                     if (attrObj.options && 
attrObj.options.applicableEntityTypes) {
                                         var entityTypes = 
JSON.parse(attrObj.options.applicableEntityTypes);
                                         _.each(entityTypes, function(values) {
@@ -262,8 +264,13 @@ define(['require',
                                     }
                                     if (typeName.includes('array')) {
                                         typeName = _.escape(typeName);
+                                        multiSelect = 'checked';
                                     }
-                                    attrRow += "<tr> <td 
style='display:table-cell'>" + _.escape(attrObj.name) + "</td><td 
style='display:table-cell'>" + typeName + "</td><td 
style='display:table-cell'>" + applicableEntityTypes + "</td><td 
style='display:table-cell'> <div class='btn btn-action btn-sm' 
style='margin-left:0px;' data-id='attributeEdit' data-guid='" + 
model.get('guid') + "' data-name ='" + _.escape(attrObj.name) + "' 
data-action='attributeEdit' >Edit</div> </td></tr> ";
+                                    if (typeName.includes('string') && 
attrObj.options && attrObj.options.maxStrLength) {
+                                        maxString = 
attrObj.options.maxStrLength;
+                                    }
+
+                                    attrRow += "<tr> <td 
style='display:table-cell'>" + _.escape(attrObj.name) + "</td><td 
style='display:table-cell'>" + typeName + "</td><td 
style='display:table-cell'>" + _.escape(attrObj.searchWeight) + "</td><td 
style='display:table-cell'><input type='checkbox' class='form-check-input 
multi-value-select' " + multiSelect + " disabled='disabled'> </td><td 
style='display:table-cell'>" + maxString + "</td><td 
style='display:table-cell'>" + applicableEntit [...]
                                 });
                                 var adminText = '<div class="row"><div 
class="col-sm-12 attr-details"><table style="padding: 50px;">' + 
attrTableHeading + attrRow + '</table></div></div>';
                                 $(el).append($('<div>').html(adminText));
@@ -271,7 +278,6 @@ define(['require',
                                 var adminText = '<div class="row"><div 
class="col-sm-12 attr-details"><h5 class="text-center"> No attributes to 
show.</h5></div></div>';
                                 $(el).append($('<div>').html(adminText));
                             }
-
                         }
                     },
                     name: {
diff --git a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js 
b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
index bfc1e2c..3fd5a13 100644
--- a/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
+++ b/dashboardv3/public/js/views/entity/EntityBusinessMetaDataView.js
@@ -215,7 +215,8 @@ define([
             this.collection.unshift(modelObj);
         },
         renderBusinessMetadata: function() {
-            var li = ""
+            var that = this,
+                li = ""
             this.actualCollection.forEach(function(obj) {
                 var attrLi = "";
                 _.each(obj.attributes, function(val, key) {
@@ -236,13 +237,20 @@ define([
                         attrLi += "<tr><td>" + _.escape(key) + " (" + 
_.escape(val.typeName) + ")</td><td>" + _.escape(newVal) + "</td></tr>";
                     }
                 });
-                li += "<ul class='business-metadata-tree-parent'><li 
class='table'>" + _.escape(obj.get("__internal_UI_businessMetadataName")) + 
"</li>" +
-                    "<li class='business-metadata-tree-child 
entity-detail-table'>" +
-                    "<table class='table'>" + attrLi + "</table>" +
-                    "</li></ul>";
+                li += that.associateAttributePanel(obj, attrLi);
             });
             this.ui.businessMetadataTree.html(li);
         },
+        associateAttributePanel: function(obj, tableBody) {
+            return '<div class="panel panel-default custom-panel 
expand_collapse_panel-icon no-border business-metadata-detail-attr">' +
+                '<div class="panel-heading" data-toggle="collapse" href="#' + 
_.escape(obj.get("__internal_UI_businessMetadataName")) + '" 
aria-expanded="true" style="width: 70%;">' +
+                '<h4 class="panel-title"> <a>' + 
_.escape(obj.get("__internal_UI_businessMetadataName")) + '</a></h4>' +
+                '<div class="btn-group pull-left"> <button type="button" 
title="Collapse"><i class="ec-icon fa"></i></button></div>' +
+                '</div>' +
+                '<div id="' + 
_.escape(obj.get("__internal_UI_businessMetadataName")) + '" 
class="panel-collapse collapse in">' +
+                '<div class="panel-body"><table class="table">' + tableBody + 
'</table></div>' +
+                '</div></div>';
+        },
         onRender: function() {
             this.panelOpenClose();
             this.renderBusinessMetadata();

Reply via email to