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/26 12:21:07 UTC

[atlas] branch master updated: ATLAS-3686 : UI : Allows user to add search weight in business-metadata for suggestion API.

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


The following commit(s) were added to refs/heads/master by this push:
     new 5c9cb78  ATLAS-3686 : UI : Allows user to add search weight in business-metadata for suggestion API.
5c9cb78 is described below

commit 5c9cb78154da808debd1fa9d8d4cacbcc4a3f7bf
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Thu Mar 26 17:27:23 2020 +0530

    ATLAS-3686 : UI : Allows user to add search weight in business-metadata for suggestion API.
    
    Signed-off-by: nixonrodrigues <ni...@apache.org>
---
 .../BusinessMetadataAttributeItemView_tmpl.html    | 18 +++++++
 .../BusinessMetadataAttrTableLayoutView.js         | 13 +++--
 .../BusinessMetadataAttributeItemView.js           | 63 +++++++++++++---------
 .../BusinessMetadataTableLayoutView.js             | 24 ++++-----
 .../CreateBusinessMetadataLayoutView.js            | 18 ++-----
 5 files changed, 79 insertions(+), 57 deletions(-)

diff --git a/dashboardv3/public/js/templates/business_metadata/BusinessMetadataAttributeItemView_tmpl.html b/dashboardv3/public/js/templates/business_metadata/BusinessMetadataAttributeItemView_tmpl.html
index 862a6b4..4b2437d 100644
--- a/dashboardv3/public/js/templates/business_metadata/BusinessMetadataAttributeItemView_tmpl.html
+++ b/dashboardv3/public/js/templates/business_metadata/BusinessMetadataAttributeItemView_tmpl.html
@@ -44,6 +44,24 @@
             </select>
         </div>
     </div>
+    <div class="form-group">
+        <label class="control-label col-sm-3 required" for="type">Search Weight</label>
+        <div class="col-sm-8">
+            <select class="form-control searchWeightSelector" data-id="searchWeightSelector">
+                <option>0</option>
+                <option>1</option>
+                <option>2</option>
+                <option>3</option>
+                <option>4</option>
+                <option selected="selected">5</option>
+                <option>6</option>
+                <option>7</option>
+                <option>8</option>
+                <option>9</option>
+                <option>10</option>
+            </select>
+        </div>
+    </div>
     <div class="form-group" data-id="multiValueSelect">
         <label class="control-label col-sm-3" for="multiValSelect">Enable Multivalues</label>
         <div class="col-sm-8">
diff --git a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
index 1cdcef5..7164801 100644
--- a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
+++ b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttrTableLayoutView.js
@@ -103,14 +103,11 @@ define(['require',
                     that.newAttr = isAttrEdit ? false : true;
                     _.each(attrributes, function(attrObj) {
                         if (attrObj.name === attrName) {
-                            attrDetails.attrTypeName = attrObj.typeName;
+                            attrDetails = $.extend(true, {}, attrObj);
                             if (attrObj.typeName.includes('array')) {
-                                attrDetails.attrTypeName = attrObj.typeName.replace("array<", "").replace(">", "");
+                                attrDetails.typeName = attrObj.typeName.replace("array<", "").replace(">", "");
                                 attrDetails.multiValued = true;
                             }
-                            attrDetails.attrEntityType = attrObj.options && attrObj.options.applicableEntityTypes ? JSON.parse(attrObj.options.applicableEntityTypes) : null;
-                            attrDetails.maxStrLength = attrObj.options && attrObj.options.maxStrLength ? attrObj.options.maxStrLength : null;
-                            attrDetails.enumValues = attrObj.enumValues ? attrObj.enumValues : null;
                         }
                     });
                     this.showDetails = false;
@@ -121,10 +118,12 @@ define(['require',
                                 enumDefCollection.fetch({ reset: true });
                                 that.businessMetadataAttr.reset(that.model.get("attributeDefs"));
                             },
-                            onUpdateBusinessMetadata: function() {
+                            onUpdateBusinessMetadata: function(fetch) {
                                 that.showDetails = true;
                                 that.toggleBusinessMetadataDetailsAttrView();
-                                that.entityDefCollection.fetch({ silent: true });
+                                if (fetch) {
+                                    that.entityDefCollection.fetch({ silent: true });
+                                }
                             },
                             parent: that.$el,
                             businessMetadataDefCollection: that.businessMetadataDefCollection,
diff --git a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
index d55b9f9..99ea135 100644
--- a/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
+++ b/dashboardv3/public/js/views/business_metadata/BusinessMetadataAttributeItemView.js
@@ -40,6 +40,7 @@ define(['require',
                 attributeInput: "[data-id='attributeInput']",
                 close: "[data-id='close']",
                 dataTypeSelector: "[data-id='dataTypeSelector']",
+                searchWeightSelector: "[data-id='searchWeightSelector']",
                 entityTypeSelector: "[data-id='entityTypeSelector']",
                 enumTypeSelectorContainer: "[data-id='enumTypeSelectorContainer']",
                 enumTypeSelector: "[data-id='enumTypeSelector']",
@@ -57,6 +58,9 @@ define(['require',
                 events["keyup " + this.ui.attributeInput] = function(e) {
                     this.model.set({ "name": e.target.value.trim() });
                 };
+                events["change " + this.ui.searchWeightSelector] = function(e) {
+                    this.model.set({ "searchWeight": e.target.value.trim() });
+                };
                 events["change " + this.ui.dataTypeSelector] = function(e) {
                     var obj = { options: this.model.get('options') || {} };
                     delete obj.enumValues;
@@ -142,13 +146,16 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, "typeHeaders", "businessMetadataDefCollection", "enumDefCollection", "isAttrEdit", "attrDetails", "viewId", "collection"));
+                _.extend(this, _.pick(options, "typeHeaders", "businessMetadataDefCollection", "enumDefCollection", "isAttrEdit", "viewId", "collection"));
                 this.viewId = options.model ? options.model.cid : this.viewId;
             },
             onRender: function() {
                 var that = this,
                     entitytypes = '',
-                    enumTypes = [];
+                    enumTypes = [],
+                    searchWeightValue = '5',
+                    stringLengthValue = '50',
+                    applicableEntityType = '';
                 this.typeHeaders.fullCollection.each(function(model) {
                     if (model.toJSON().category == "ENTITY") {
                         that.ui.entityTypeSelector.append("<option>" + model.get('name') + "</option>");
@@ -162,51 +169,57 @@ define(['require',
                     selectionAdapter: $.fn.select2.amd.require("TagHideDeleteButtonAdapter")
                 });
                 this.ui.entityTypeSelector.html(entitytypes);
-
                 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');
                 });
-                this.ui.stringLengthValue.val('50').trigger('change'); //default length for string is 50
+                if (this.model.get("searchWeight") && this.model.get("searchWeight") != -1) {
+                    searchWeightValue = this.model.get("searchWeight");
+                }
+                if (this.model.get("options")) {
+                    stringLengthValue = this.model.get("options").maxStrLength || '50';
+                    applicableEntityType = this.model.get("options").applicableEntityTypes ? JSON.parse(this.model.get("options").applicableEntityTypes) : null;
+                }
+                this.ui.stringLengthValue.val(stringLengthValue).trigger('change'); //default length for string is 50
+                this.ui.searchWeightSelector.val(searchWeightValue).trigger('change');
                 this.ui.enumValueSelector.attr("disabled", "false"); // cannot edit the values
                 this.emumTypeSelectDisplay();
                 this.ui.enumTypeSelectorContainer.hide();
                 this.ui.enumTypeSelector.hide();
                 this.ui.enumValueSelectorContainer.hide();
                 if (this.isAttrEdit) {
+                    var typeName = this.model.get("typeName");
                     this.ui.close.hide();
                     this.ui.createNewEnum.hide(); // cannot add new businessMetadata on edit view
-                    this.ui.attributeInput.val(this.attrDetails.name);
+                    this.ui.attributeInput.val(this.model.get("name"));
                     this.ui.attributeInput.attr("disabled", "false");
                     this.ui.dataTypeSelector.attr("disabled", "false");
                     this.ui.dataTypeSelector.attr("disabled", "false");
                     this.ui.multiValueSelect.hide();
-                    this.ui.dataTypeSelector.val(this.attrDetails.attrTypeName);
-                    if (this.attrDetails.attrTypeName == "string") {
+                    this.ui.dataTypeSelector.val(typeName);
+                    if (typeName == "string") {
                         this.ui.stringLengthContainer.show();
                         this.ui.stringLengthValue.show();
-                        this.ui.stringLengthValue.val(this.attrDetails.maxStrLength);
                     } else {
                         this.ui.stringLengthContainer.hide();
                         this.ui.stringLengthValue.hide();
                     }
-                    _.each(this.attrDetails.attrEntityType, function(valName) {
-                        that.ui.entityTypeSelector.find('option').each(function(o) {
-                            var $el = $(this)
-                            if ($el.data("name") === valName) {
-                                $el.attr("data-allowremove", "false");
-                            }
-                        })
-                    });
-                    this.ui.entityTypeSelector.val(this.attrDetails.attrEntityType).trigger('change');
-                    if (this.attrDetails && this.attrDetails.attrTypeName) {
-                        var typeName = this.attrDetails.attrTypeName;
-                        if (typeName != "string" && typeName != "boolean" && typeName != "byte" && typeName != "short" && typeName != "int" && typeName != "float" && typeName != "double" && typeName != "long" && typeName != "date") {
-                            this.ui.enumTypeSelector.attr("disabled", "false");
-                            this.ui.dataTypeSelector.val("enumeration").trigger('change');
-                            this.ui.enumTypeSelector.val(typeName).trigger('change');
-                        }
+                    if (applicableEntityType) {
+                        _.each(applicableEntityType, function(valName) {
+                            that.ui.entityTypeSelector.find('option').each(function(o) {
+                                var $el = $(this)
+                                if ($el.data("name") === valName) {
+                                    $el.attr("data-allowremove", "false");
+                                }
+                            })
+                        });
+                    }
+                    this.ui.entityTypeSelector.val(applicableEntityType).trigger('change');
+                    if (typeName != "string" && typeName != "boolean" && typeName != "byte" && typeName != "short" && typeName != "int" && typeName != "float" && typeName != "double" && typeName != "long" && typeName != "date") {
+                        this.ui.enumTypeSelector.attr("disabled", "false");
+                        this.ui.dataTypeSelector.val("enumeration").trigger('change');
+                        this.ui.enumTypeSelector.val(typeName).trigger('change');
                     }
-                    if (this.attrDetails && this.attrDetails.multiValued) {
+                    if (this.model.get("multiValued")) {
                         this.ui.multiValueSelect.show();
                         $(this.ui.multiValueSelectStatus).prop('checked', true).trigger('change');
                         this.ui.multiValueSelectStatus.attr("disabled", "false");
diff --git a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
index 0c76cb6..7aa22d9 100644
--- a/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
+++ b/dashboardv3/public/js/views/business_metadata/BusinessMetadataTableLayoutView.js
@@ -146,14 +146,11 @@ define(['require',
                     that.guid = guid;
                     _.each(attrributes, function(attrObj) {
                         if (attrObj.name === attrName) {
-                            attrDetails.attrTypeName = attrObj.typeName;
+                            attrDetails = $.extend(true, {}, attrObj);
                             if (attrObj.typeName.includes('array')) {
-                                attrDetails.attrTypeName = attrObj.typeName.replace("array<", "").replace(">", "");
+                                attrDetails.typeName = attrObj.typeName.replace("array<", "").replace(">", "");
                                 attrDetails.multiValued = true;
                             }
-                            attrDetails.attrEntityType = attrObj.options && attrObj.options.applicableEntityTypes ? JSON.parse(attrObj.options.applicableEntityTypes) : null;
-                            attrDetails.maxStrLength = attrObj.options && attrObj.options.maxStrLength ? attrObj.options.maxStrLength : null;
-                            attrDetails.enumValues = attrObj.enumValues ? attrObj.enumValues : null;
                         }
                     });
 
@@ -165,13 +162,14 @@ define(['require',
                             onEditCallback: function() {
                                 that.businessMetadataDefCollection.fullCollection.sort({ silent: true });
                                 that.renderTableLayoutView();
-
                             },
-                            onUpdateBusinessMetadata: function() {
-                                enumDefCollection.fetch({ reset: true });
+                            onUpdateBusinessMetadata: function(fetch) {
                                 that.showDetails = true;
                                 that.toggleBusinessMetadataDetailsAttrView();
-                                that.entityDefCollection.fetch({ silent: true });
+                                if (fetch) {
+                                    enumDefCollection.fetch({ reset: true });
+                                    that.entityDefCollection.fetch({ silent: true });
+                                }
                             },
                             parent: that.$el,
                             businessMetadataDefCollection: that.businessMetadataDefCollection,
@@ -203,11 +201,13 @@ define(['require',
                 that.toggleBusinessMetadataDetailsAttrView();
                 require(["views/business_metadata/CreateBusinessMetadataLayoutView"], function(CreateBusinessMetadataLayoutView) {
                     that.view = new CreateBusinessMetadataLayoutView({
-                        onUpdateBusinessMetadata: function() {
-                            enumDefCollection.fetch({ reset: true });
+                        onUpdateBusinessMetadata: function(fetch) {
                             that.showDetails = true;
                             that.toggleBusinessMetadataDetailsAttrView();
-                            that.entityDefCollection.fetch({ silent: true });
+                            if (fetch) {
+                                enumDefCollection.fetch({ reset: true });
+                                that.entityDefCollection.fetch({ silent: true });
+                            }
                         },
                         businessMetadataDefCollection: that.businessMetadataDefCollection,
                         enumDefCollection: enumDefCollection,
diff --git a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
index 76c9fdf..d2ec55e 100644
--- a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
+++ b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
@@ -54,7 +54,6 @@ define(['require',
                     businessMetadataDefCollection: this.businessMetadataDefCollection,
                     enumDefCollection: this.enumDefCollection,
                     isAttrEdit: this.isAttrEdit,
-                    attrDetails: this.attrDetails,
                     viewId: this.cid,
                     collection: this.collection
                 };
@@ -104,16 +103,9 @@ define(['require',
                     this.create = true;
                 }
                 if (!this.isNewBusinessMetadata) {
-                    this.collection = this.isAttrEdit ? new Backbone.Collection([{
-                        "name": this.attrDetails.name,
-                        "typeName": this.attrDetails.attrTypeName,
-                        "isOptional": true,
-                        "cardinality": "SINGLE",
-                        "valuesMinCount": 0,
-                        "valuesMaxCount": 1,
-                        "isUnique": false,
-                        "isIndexable": false
-                    }]) : new Backbone.Collection([{
+                    this.collection = this.isAttrEdit ? new Backbone.Collection([
+                        this.attrDetails
+                    ]) : new Backbone.Collection([{
                         "name": "",
                         "typeName": "string",
                         "isOptional": true,
@@ -263,7 +255,7 @@ define(['require',
                                 content: "Business Metadata " + name + Messages.getAbbreviationMsg(false, 'addSuccessMessage')
                             });
                         }
-                        that.options.onUpdateBusinessMetadata();
+                        that.options.onUpdateBusinessMetadata(true);
                     },
                     silent: true,
                     reset: true,
@@ -306,7 +298,7 @@ define(['require',
                                 that.selectedBusinessMetadata.set(model.businessMetadataDefs[0]);
                             }
                             that.options.onEditCallback();
-                            that.options.onUpdateBusinessMetadata();
+                            that.options.onUpdateBusinessMetadata(true);
                         },
                         silent: true,
                         reset: true,