You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sh...@apache.org on 2016/07/12 06:17:45 UTC

[1/2] incubator-atlas git commit: ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)

Repository: incubator-atlas
Updated Branches:
  refs/heads/master 2ad344f02 -> e13fa5ecd


ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/072a73e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/072a73e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/072a73e0

Branch: refs/heads/master
Commit: 072a73e00d091232133006289d412a2f3a2a14b3
Parents: 2ad344f
Author: Shwetha GS <ss...@hortonworks.com>
Authored: Tue Jul 12 11:15:03 2016 +0530
Committer: Shwetha GS <ss...@hortonworks.com>
Committed: Tue Jul 12 11:15:03 2016 +0530

----------------------------------------------------------------------
 dashboardv2/public/css/scss/main.scss           |  6 +-
 dashboardv2/public/css/scss/tag.scss            | 54 ++++++++++++-
 dashboardv2/public/css/scss/tree.scss           |  4 +
 .../public/js/collection/BaseCollection.js      | 20 ++---
 .../public/js/collection/VCatalogList.js        |  1 -
 .../BusinessCatalogDetailLayoutView_tmpl.html   |  6 +-
 .../business_catalog/TreeLayoutView_tmpl.html   |  1 +
 .../detail_page/DetailPageLayoutView_tmpl.html  |  8 +-
 .../search/SearchDetailLayoutView_tmpl.html     |  2 +-
 .../js/templates/tag/addTagModalView_tmpl.html  | 26 +++----
 .../public/js/utils/CommonViewFunction.js       | 62 +++++----------
 dashboardv2/public/js/utils/Messages.js         |  6 +-
 dashboardv2/public/js/utils/Utils.js            |  2 +-
 .../BusinessCatalogDetailLayoutView.js          |  3 +-
 .../js/views/business_catalog/TreeLayoutView.js | 18 ++++-
 .../views/detail_page/DetailPageLayoutView.js   | 31 ++++++--
 .../public/js/views/graph/LineageLayoutView.js  |  1 -
 .../public/js/views/schema/SchemaLayoutView.js  | 64 +++++++++-------
 .../js/views/search/SearchResultLayoutView.js   | 81 +++++++++++++-------
 .../js/views/tag/TagDetailTableLayoutView.js    | 25 ++++--
 .../public/js/views/tag/addTagModalView.js      | 15 ++--
 release-log.txt                                 |  1 +
 22 files changed, 265 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/css/scss/main.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/main.scss b/dashboardv2/public/css/scss/main.scss
index 6b88639..1b566d4 100644
--- a/dashboardv2/public/css/scss/main.scss
+++ b/dashboardv2/public/css/scss/main.scss
@@ -305,10 +305,8 @@ ul {
 }
 
 @media (min-width: 768px) {
-    .col-sm-offset-1 {
-        margin: 4% 4% 0;
-    }
-    .col-sm-10 {
+    .col-sm-custom {
         width: 92%;
+        margin: 36px 36px 0px;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/css/scss/tag.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/tag.scss b/dashboardv2/public/css/scss/tag.scss
index 8eb0ac2..a9cba82 100644
--- a/dashboardv2/public/css/scss/tag.scss
+++ b/dashboardv2/public/css/scss/tag.scss
@@ -117,7 +117,6 @@
 
 .inputTag {
     display: inline-block;
-    padding: 2px 10px;
     border: 1px $tag_color solid;
     color: $tag_color;
     font-size: 14px;
@@ -128,11 +127,42 @@
     cursor: pointer;
     background-color: $white;
     white-space: nowrap;
+    overflow: hidden;
+    &:hover {
+        color: $tag_color;
+    }
     i.fa {
         position: relative;
-        right: -5px;
+        padding: 5px;
         cursor: pointer;
+        &:hover {
+            color: $white;
+            background-color: $tag_color;
+        }
+    }
+    > .inputValue {
+        padding: 5px;
+        &:hover {
+            color: $white;
+            background-color: $tag_color;
+        }
     }
+}
+
+.inputTagAdd {
+    display: inline-block;
+    border: 1px #4A90E2 solid;
+    color: #4A90E2;
+    font-size: 14px;
+    border-radius: 4px;
+    margin-right: 3px;
+    margin-bottom: 3px;
+    float: left;
+    cursor: pointer;
+    background-color: #fff;
+    white-space: nowrap;
+    overflow: hidden;
+    padding: 2px 6px;
     &:hover {
         color: $white;
         background-color: $tag_color;
@@ -289,3 +319,23 @@ form-control .tagInpput {
 .multiSelect {
     float: right;
 }
+
+.popover.popoverTag {
+    display: block;
+}
+
+.popoverContainer .inputTag {
+    display: block;
+    float: none;
+    margin-top: 10px;
+}
+
+.popoverContainer .inputTag > .inputValue {
+    padding: 2px 5px;
+    display: inline-block;
+    width: 100px;
+}
+
+.tagAttributeLabel {
+    color: $color_star_dust_approx;
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/css/scss/tree.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/tree.scss b/dashboardv2/public/css/scss/tree.scss
index 5574137..1076d65 100644
--- a/dashboardv2/public/css/scss/tree.scss
+++ b/dashboardv2/public/css/scss/tree.scss
@@ -195,3 +195,7 @@
         }
     }
 }
+
+.popoverTerm {
+    margin-top: 25px !important;
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/collection/BaseCollection.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/collection/BaseCollection.js b/dashboardv2/public/js/collection/BaseCollection.js
index e4ac1ae..b039e30 100644
--- a/dashboardv2/public/js/collection/BaseCollection.js
+++ b/dashboardv2/public/js/collection/BaseCollection.js
@@ -36,27 +36,17 @@ define(['require',
             initialize: function() {},
             bindErrorEvents: function() {
                 this.bind("error", Utils.defaultErrorHandler);
-
             },
-            bindLoader: function(element) {
+            bindRequest: function() {
                 this.bind('request', function(model, ajaxObj, collectionObj) {
-                    this.ajaxStart(collectionObj.$el);
+                    this.ajaxStart(model, ajaxObj, collectionObj);
                 }, this);
                 this.bind('sync', function(model, ajaxObj, collectionObj) {
-                    this.ajaxComplete(collectionObj.$el);
+                    this.ajaxComplete(model, ajaxObj, collectionObj);
                 }, this);
             },
-            ajaxStart: function(element) {
-                //start spinner
-                if (element) {
-                    element.prepend("<div class='loading'></div>");
-                }
-            },
-            ajaxComplete: function(element) {
-                if (element) {
-                    element.find('loading').remove();
-                }
-            },
+            ajaxStart: function(model, ajaxObj, collectionObj) {},
+            ajaxComplete: function(model, ajaxObj, collectionObj) {},
             /**
              * state required for the PageableCollection
              */

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/collection/VCatalogList.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/collection/VCatalogList.js b/dashboardv2/public/js/collection/VCatalogList.js
index 410a35a..90cbfa0 100644
--- a/dashboardv2/public/js/collection/VCatalogList.js
+++ b/dashboardv2/public/js/collection/VCatalogList.js
@@ -33,7 +33,6 @@ define(['require',
                 this.modelName = 'VCatalog';
                 this.modelAttrName = '';
                 this.bindErrorEvents();
-                this.bindLoader();
             },
             fetch: function(options) {
                 //Call Backbone's fetch

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
index 5e1cfca..80eb49f 100644
--- a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
@@ -32,7 +32,7 @@
     </div>
     <div class="container-fluid gray-bg">
         <div class="row">
-            <div class="col-sm-10 col-sm-offset-1">
+            <div class="col-sm-custom">
                 <div class="atlast-tabbable">
                     <ul class="nav nav-tabs" role="tablist">
                         <li role="presentation" class="tab active"><a href="#tab-details" aria-controls="tab-details" role="tab" data-toggle="tab">Properties</a></li>
@@ -47,7 +47,7 @@
             </div>
         </div>
         <div class="row">
-            <div class="col-sm-10 col-sm-offset-1">
+            <div class="col-sm-custom">
                 <div class="atlast-tabbable">
                     <div class="panel panel-default lineageLayout" style="display:none">
                         <div id="r_lineageLayoutView"></div>
@@ -57,7 +57,7 @@
         </div>
     </div>
     <!-- <div class="row">
-    <div class="col-sm-10 col-sm-offset-1">
+    <div class="col-sm-custom">
         <h2>Comments</h2>
         <textarea class="form-control comment-input" rows="5" placeholder="Add a Comment"></textarea>
         <button class="btn-atlas">Comment</button>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html
index b915680..a657c1f 100644
--- a/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html
@@ -15,6 +15,7 @@
  * limitations under the License.
 -->
 <div class="clearfix add-seperator">
+    <p data-id="descriptionAssign" style="display:none">Assign a term to this asset</p>
     <button class="btn btn-atlasAction btn-atlas pull-left" data-id="backTaxanomy"><i class="fa fa-chevron-left"></i> Back</button>
     <button class="btn btn-atlasAction btn-atlas pull-right" onclick="this.blur();" title="Refresh" data-id="refreshTaxanomy"><i class="fa fa-refresh"></i></button>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
index f638bac..1083b34 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -16,7 +16,7 @@
 -->
 <div class="page-title clearfix">
     <div class="row">
-        <a href="javascript:void(0);" class="backButton" data-id="backButton"><i class="fa fa-chevron-left"></i>  Back To Result</a>
+        <a href="javascript:void(0);" class="backButton" data-id="backButton"><i class="fa fa-chevron-left"></i>  Back To Results</a>
     </div>
     <h1><span  data-id="title"></span><!-- <small>Bookmark</small> <button data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button> --></h1>
     <div data-id="editBox" style="margin-bottom:10px;">
@@ -44,7 +44,7 @@
 </div>
 <div class="container-fluid gray-bg">
     <div class="row">
-        <div class="col-sm-10 col-sm-offset-1">
+        <div class="col-sm-custom">
             <div class="atlast-tabbable">
                 <h4 class="lineageLabel">LINEAGE</h4>
                 <div class="panel panel-default lineageLayout">
@@ -54,7 +54,7 @@
         </div>
     </div>
     <div class="row">
-        <div class="col-sm-10 col-sm-offset-1">
+        <div class="col-sm-custom">
             <div class="atlast-tabbable">
                 <h4 class="detailLabel">DETAILS</h4>
                 <ul class="nav nav-tabs" role="tablist">
@@ -87,7 +87,7 @@
     </div>
 </div>
 <div>
-    <!-- div class="col-sm-10 col-sm-offset-1">
+    <!-- div class="col-sm-custom">
         <h2>Comments</h2>
         <textarea class="form-control comment-input" rows="5" placeholder="Add a Comment"></textarea>
         <button class="btn-atlas">Comment</button>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html b/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
index 3fd1b7a..a3e1fbe 100644
--- a/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/search/SearchDetailLayoutView_tmpl.html
@@ -16,7 +16,7 @@
 -->
 <div class="container-fluid gray-bg">
     <div class="row">
-        <div class="col-sm-10 col-sm-offset-1">
+        <div class="col-sm-custom">
             <div class="atlast-tabbable">
                 <div id="r_searchResultLayoutView"></div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html b/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html
index 2aa82f6..7ada413 100644
--- a/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html
+++ b/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="row">
-    <div name="tagDefinitionform" class="css-form">
-        <div class="form-group">
-            <label class="control-label col-sm-4">Tag definition</label>
-            <div class="col-sm-8 input-spacing">
-                <select class="form-control" data-id="addTagOptions" required>
-                </select>
-            </div>
-        </div>
-    </div>
-</div>
-<div class="row form-group modalHeight" data-id="tagAttribute" style="display:none">
-</div>
+<div class="form-horizontal">
+	<div class="form-group">
+	        <!--  <label class="control-label col-sm-4">Tag definition</label> -->
+	        <div class="col-sm-12">
+	            <select class="form-control row-margin-bottom" data-id="addTagOptions" required>
+	            </select>
+	        </div>
+	</div>
+	<div class="row modalHeight">
+		<div class="col-sm-12" data-id="tagAttribute" style="display:none">
+		</div>
+	</div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/utils/CommonViewFunction.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index 6d88dc8..782cb54 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -20,33 +20,11 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
     'use strict';
 
     var CommonViewFunction = {};
-    CommonViewFunction.deleteTagModel = function(tagName, AssignTerm) {
-        var msg = "",
-            titleMessage = "",
-            deleteText = "";
-        if (tagName && AssignTerm != "assignTerm") {
-            var tagOrTerm = Utils.checkTagOrTerm(tagName);
-            if (tagOrTerm.term) {
-                msg = "<div class='ellipsis'>Delete: " + "<b>" + tagName + "?</b></div>" +
-                    "<p class='termNote'>Assets map to this term will be unclassified</p>";
-                titleMessage = Messages.deleteTerm;
-                deleteText = "Delete";
-            } else {
-                msg = "<div class='ellipsis'>Delete: " + "<b>" + tagName + "?</b></div>";
-                var titleMessage = Messages.deleteTag;
-                deleteText = "Delete";
-            }
-        }
-        if (AssignTerm == "assignTerm") {
-            msg = "<div class='ellipsis'>Remove: " + "<b>" + tagName + "?</b></div>" +
-                "<p class='termNote'>Assets map to this term will be unclassified</p>";
-            titleMessage = Messages.RemoveTerm;
-            deleteText = "Remove";
-        }
+    CommonViewFunction.deleteTagModel = function(options) {
         var modal = new Modal({
-            title: titleMessage,
-            okText: deleteText,
-            htmlContent: msg,
+            title: options.titleMessage,
+            okText: options.buttonText,
+            htmlContent: options.msg,
             cancelText: "Cancel",
             allowCancel: true,
             okCloses: true,
@@ -58,24 +36,22 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
         require(['models/VTag'], function(VTag) {
             var tagModel = new VTag();
             if (options && options.guid && options.tagName) {
-
                 tagModel.deleteTag(options.guid, options.tagName, {
-                    beforeSend: function() {},
                     success: function(data) {
-                        var msg = "Tag " + name.name + Messages.deleteSuccessMessage;
+                        var msg = "Tag " + name.name + Messages.removeSuccessMessage;
                         if (data.traitName) {
                             var tagOrTerm = Utils.checkTagOrTerm(data.traitName);
                             if (tagOrTerm.term) {
-                                msg = "Term " + data.traitName + Messages.deleteSuccessMessage;
+                                msg = "Term " + data.traitName + Messages.removeSuccessMessage;
                             } else {
-                                msg = "Tag " + data.traitName + Messages.deleteSuccessMessage;
+                                msg = "Tag " + data.traitName + Messages.removeSuccessMessage;
                             }
                         } else {
                             var tagOrTerm = Utils.checkTagOrTerm(options.tagName);
                             if (tagOrTerm.term) {
-                                msg = "Term " + data.traitName + Messages.deleteSuccessMessage;
+                                msg = "Term " + data.traitName + Messages.removeSuccessMessage;
                             } else {
-                                msg = "Tag " + data.traitName + Messages.deleteSuccessMessage;
+                                msg = "Tag " + data.traitName + Messages.removeSuccessMessage;
                             }
                         }
                         Utils.notifySuccess({
@@ -325,7 +301,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
                 dropdown: function() {
                     return '<div class=\"dropdown\">' +
                         '<a href=\"javascript:void(0);\" class=\"' + this.namespace + '-toggle\" data-toggle=\"dropdown\"><i class=\"' + this.dropicon + '\"</i></a>' +
-                        '<ul class=\"' + this.namespace + '-menu dropdown-menu popover bottom arrowPosition \" ><div class="arrow"></div></ul>' +
+                        '<ul class=\"' + this.namespace + '-menu dropdown-menu popover popoverTerm bottom arrowPosition \" ><div class="arrow"></div></ul>' +
                         '</div>';
                 },
                 dropdownContent: function(a) {
@@ -355,7 +331,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
             var tagName = Utils.checkTagOrTerm(traits[key].$typeName$);
             if (tagName.term) {
                 terms.push({
-                    deleteHtml: '<a class="pull-left" title="Delete Term"><i class="fa fa-trash" data-id="tagClick" data-name="' + traits[key].$typeName$ + '" data-guid="' + model.get('$id$').id + '" ></i></a>',
+                    deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-assetname="' + model.get("name") + '" data-name="' + traits[key].$typeName$ + '" data-guid="' + model.get('$id$').id + '" ></i></a>',
                     url: traits[key].$typeName$.split(".").join("/"),
                     name: tagName.fullName
                 });
@@ -387,29 +363,29 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
         var traits = model.get('$traits$'),
             atags = "",
             addTag = "",
+            popTag = "",
             count = 0;
         _.keys(model.get('$traits$')).map(function(key) {
             var tagName = Utils.checkTagOrTerm(traits[key].$typeName$),
                 className = "inputTag";
             if (!tagName.term) {
                 if (count >= 1) {
-                    className += " hide";
+                    popTag += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + traits[key].$typeName$ + '</span><i class="fa fa-times" data-id="delete"  data-assetname="' + model.get("name") + '"data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
+                } else {
+                    atags += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + traits[key].$typeName$ + '</span><i class="fa fa-times" data-id="delete" data-assetname="' + model.get("name") + '" data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
                 }
                 ++count;
-                atags += '<a class="' + className + '" data-id="tagClick">' + traits[key].$typeName$ + '<i class="fa fa-times" data-id="delete" data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
             }
         });
-
         if (model.get('$id$')) {
-            addTag += '<a href="javascript:void(0)" data-id="addTag" class="inputTag" data-guid="' + model.get('$id$').id + '" ><i style="right:0" class="fa fa-plus"></i></a>';
+            addTag += '<a href="javascript:void(0)" data-id="addTag" class="inputTagAdd" data-guid="' + model.get('$id$').id + '" ><i class="fa fa-plus"></i></a>';
         } else {
-            addTag += '<a href="javascript:void(0)" data-id="addTag" class="inputTag"><i style="right:0" class="fa fa-plus"></i></a>';
+            addTag += '<a href="javascript:void(0)" data-id="addTag" class="inputTagAdd"><i style="right:0" class="fa fa-plus"></i></a>';
         }
         if (count > 1) {
-            addTag += '<a  href="javascript:void(0)" data-id="showMoreLess" class="inputTag inputTagGreen"><span>Show More </span><i class="fa fa-angle-right"></i></a>'
+            addTag += '<div data-id="showMoreLess" class="inputTagAdd tagDetailPopover"><i class="fa fa-ellipsis-h" aria-hidden="true"></i></div>'
         }
-        return '<div class="tagList">' + atags + addTag + '</div>';
-
+        return '<div class="tagList">' + atags + addTag + '<div class="popover popoverTag bottom" style="display:none"><div class="arrow"></div><div class="popover-content popoverContainer">' + popTag + '</div></div></div>';
     }
     CommonViewFunction.saveTermToAsset = function(options) {
         require(['models/VCatalog'], function(Vcatalog) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/utils/Messages.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Messages.js b/dashboardv2/public/js/utils/Messages.js
index f78ec87..6bb8453 100644
--- a/dashboardv2/public/js/utils/Messages.js
+++ b/dashboardv2/public/js/utils/Messages.js
@@ -24,10 +24,12 @@ define(['require'], function(require) {
         addErrorMessage: " could not be Created",
         addTermToEntitySuccessMessage: " has been added to entity",
         deleteTerm: "Delete Term",
-        deleteTag: "Delete Tag",
-        RemoveTerm: "Remove Term Assignment",
+        removeTag: "Remove Tag",
+        removeTerm: "Remove Term",
         deleteSuccessMessage: " has been deleted successfully",
         deleteErrorMessage: " could not be deleted",
+        removeSuccessMessage: " has been removed successfully",
+        removeErrorMessage: " could not be removed",
         addAttributeSuccessMessage: "Tag attribute is added successfully",
         updateTagDescriptionMessage: "Tag description is updated successfully",
         updateTermDescriptionMessage: "Term description is updated successfully",

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 5e75e59..8e33ef9 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -87,7 +87,7 @@ define(['require', 'utils/Globals'], function(require, Globals) {
             Utils.notifyError({
                 content: message
             });
-        } else if (error.status == "0") {
+        } else if (error.status == "0" && error.statusText != "abort") {
             var diffTime = (new Date().getTime() - prevNetworkErrorTime);
             if (diffTime > 3000) {
                 prevNetworkErrorTime = new Date().getTime();

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
index 7e3e586..c73a2ea 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
@@ -152,7 +152,7 @@ define(['require',
             addTagToTerms: function(tagObject) {
                 var tagData = "";
                 _.each(tagObject, function(val) {
-                    tagData += '<span class="inputTag">' + val + '<i class="fa fa-close" data-id="deleteTag"></i></span>';
+                    tagData += '<span class="inputTag"><span class="inputValue">' + val + '</span><i class="fa fa-close" data-id="deleteTag"></i></span>';
                 });
                 this.$('.addTag-dropdown').before(tagData);
             },
@@ -167,7 +167,6 @@ define(['require',
                 };
                 this.entityModel.saveEntity(this.id, {
                     data: JSON.stringify(json),
-                    beforeSend: function() {},
                     success: function(data) {
                         that.collection.fetch({ reset: true });
                     },

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
index 63eaa3e..3cf14d7 100644
--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
@@ -43,7 +43,8 @@ define(['require',
                 backTaxanomy: '[data-id="backTaxanomy"]',
                 expandArrow: '[data-id="expandArrow"]',
                 searchTermInput: '[data-id="searchTermInput"]',
-                refreshTaxanomy: '[data-id="refreshTaxanomy"]'
+                refreshTaxanomy: '[data-id="refreshTaxanomy"]',
+                descriptionAssign: '[data-id="descriptionAssign"]',
             },
             /** ui events hash */
             events: function() {
@@ -150,6 +151,11 @@ define(['require',
                     }
                 });
                 this.fetchTaxanomyCollections();
+                if (!this.viewBased) {
+                    this.ui.descriptionAssign.show();
+                } else {
+                    this.ui.descriptionAssign.hide();
+                }
             },
             backButtonTaxanomy: function(e) {
                 var that = this;
@@ -495,7 +501,6 @@ define(['require',
                         that.create = true;
                         that.fetchTaxanomyCollections();
                         that.fetchCollection(url, true);
-                        //that.fetchCollection(that.url);
                         Utils.notifySuccess({
                             content: "Term " + view.ui.termName.val() + Messages.addSuccessMessage
                         });
@@ -512,8 +517,14 @@ define(['require',
             },
             deleteTerm: function(e) {
                 var termName = this.$('.taxonomyTree').find('li.active a').data("name"),
+                    assetName = $(e.target).data("assetname"),
                     that = this,
-                    modal = CommonViewFunction.deleteTagModel(termName);
+                    modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Delete: " + "<b>" + termName + "?</b></div>" +
+                            "<p class='termNote'>Assets mapped to this term will be unclassified.</p>",
+                        titleMessage: Messages.deleteTerm,
+                        buttonText: "Delete"
+                    });
                 modal.on('ok', function() {
                     that.deleteTermData(e);
                 });
@@ -529,7 +540,6 @@ define(['require',
                         url = that.$('.taxonomyTree').find('li.active a').data('href');
                     var termName = that.$('.taxonomyTree').find('li.active a').text();
                     termModel.deleteTerm(url, {
-                        beforeSend: function() {},
                         success: function(data) {
                             Utils.notifySuccess({
                                 content: "Term " + termName + Messages.deleteSuccessMessage

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 7f31141..2aaeaa4 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -23,8 +23,9 @@ define(['require',
     'collection/VTagList',
     'models/VEntity',
     'utils/CommonViewFunction',
-    'utils/Globals'
-], function(require, Backbone, DetailPageLayoutViewTmpl, Utils, VTagList, VEntity, CommonViewFunction, Globals) {
+    'utils/Globals',
+    'utils/Messages'
+], function(require, Backbone, DetailPageLayoutViewTmpl, Utils, VTagList, VEntity, CommonViewFunction, Globals, Messages) {
     'use strict';
 
     var DetailPageLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -188,8 +189,21 @@ define(['require',
             },
             onClickTagCross: function(e) {
                 var tagName = $(e.currentTarget).parent().text(),
-                    that = this,
-                    modal = CommonViewFunction.deleteTagModel(tagName);
+                    that = this;
+                var tagOrTerm = Utils.checkTagOrTerm(tagName);
+                if (tagOrTerm.term) {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+                        titleMessage: Messages.removeTerm,
+                        buttonText: "Remove"
+                    });
+                } else {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+                        titleMessage: Messages.removeTag,
+                        buttonText: "Remove"
+                    });
+                }
                 modal.on('ok', function() {
                     that.deleteTagData(e);
                 });
@@ -216,10 +230,10 @@ define(['require',
                 _.each(tagObject, function(val) {
                     var isTerm = Utils.checkTagOrTerm(val);
                     if (!isTerm.term) {
-                        tagData += '<span class="inputTag" data-id="tagClick">' + val + '<i class="fa fa-close" data-id="deleteTag"></i></span>';
+                        tagData += '<span class="inputTag" data-id="tagClick"><span class="inputValue">' + val + '</span><i class="fa fa-close" data-id="deleteTag"></i></span>';
                     }
                     if (isTerm.term) {
-                        termData += '<span class="inputTag term" data-id="tagClick" data-href="' + val + '">' + val + '<i class="fa fa-close" data-id="deleteTag"></i></span>';
+                        termData += '<span class="inputTag term" data-id="tagClick" data-href="' + val + '"><span class="inputValue">' + val + '</span><i class="fa fa-close" data-id="deleteTag"></i></span>';
                     }
 
                 });
@@ -239,7 +253,6 @@ define(['require',
                 };
                 this.entityModel.saveEntity(this.id, {
                     data: JSON.stringify(json),
-                    beforeSend: function() {},
                     success: function(data) {
                         that.fetchCollection();
                     },
@@ -295,7 +308,8 @@ define(['require',
                     that.RTagTableLayoutView.show(new TagDetailTableLayoutView({
                         globalVent: that.globalVent,
                         collection: that.collection,
-                        guid: tagGuid
+                        guid: tagGuid,
+                        assetName: that.name
                     }));
                 });
             },
@@ -333,6 +347,7 @@ define(['require',
                         globalVent: that.globalVent,
                         collection: that.collection,
                         guid: tagGuid,
+                        assetName: that.name,
                         term: true
                     }));
                 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/graph/LineageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/graph/LineageLayoutView.js b/dashboardv2/public/js/views/graph/LineageLayoutView.js
index ecbbe51..acf0d8e 100644
--- a/dashboardv2/public/js/views/graph/LineageLayoutView.js
+++ b/dashboardv2/public/js/views/graph/LineageLayoutView.js
@@ -154,7 +154,6 @@ define(['require',
                 function fetchLoadProcess(id) {
                     ++that.fetchList;
                     that.entityModel.getEntity(id, {
-                        beforeSend: function() {},
                         success: function(data) {
                             addValueInObject(data);
                         },

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/schema/SchemaLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/schema/SchemaLayoutView.js b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
index 55e7093..b021127 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -21,8 +21,9 @@ define(['require',
     'hbs!tmpl/schema/SchemaTableLayoutView_tmpl',
     'collection/VSchemaList',
     'utils/Utils',
-    'utils/CommonViewFunction'
-], function(require, Backbone, SchemaTableLayoutViewTmpl, VSchemaList, Utils, CommonViewFunction) {
+    'utils/CommonViewFunction',
+    'utils/Messages'
+], function(require, Backbone, SchemaTableLayoutViewTmpl, VSchemaList, Utils, CommonViewFunction, Messages) {
     'use strict';
 
     var SchemaTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -47,7 +48,6 @@ define(['require',
             /** ui events hash */
             events: function() {
                 var events = {};
-
                 events["click " + this.ui.addTag] = 'addTagModalView';
                 events["click " + this.ui.addTerm] = 'checkedValue';
                 events["click " + this.ui.tagClick] = function(e) {
@@ -63,13 +63,12 @@ define(['require',
                     }
                 };
                 events["click " + this.ui.showMoreLess] = function(e) {
-                    $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
-                    $(e.currentTarget).parents('.searchTag').find('a').toggleClass('hide show');
-                    if ($(e.currentTarget).find('i').hasClass('fa-angle-right')) {
-                        $(e.currentTarget).find('span').text('Show More');
-                    } else {
-                        $(e.currentTarget).find('span').text('Show less');
-                    }
+                    this.$('.popover.popoverTag').hide();
+                    $(e.currentTarget).parent().find("div.popover").show();
+                    var positionContent = $(e.currentTarget).position();
+                    positionContent.top = positionContent.top + 26;
+                    positionContent.left = positionContent.left - 41;
+                    $(e.currentTarget).parent().find("div.popover").css(positionContent);
                 };
                 events["click " + this.ui.showMoreLessTerm] = function(e) {
                     $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
@@ -138,8 +137,18 @@ define(['require',
                 }, this);
             },
             onRender: function() {
+                var that = this;
                 this.schemaCollection.fetch({ reset: true });
                 this.renderTableLayoutView();
+                $('body').click(function(e) {
+                    var iconEvnt = e.target.nodeName;
+                    if (that.$('.popoverContainer').length) {
+                        if ($(e.target).hasClass('tagDetailPopover') || iconEvnt == "I") {
+                            return;
+                        }
+                        that.$('.popover.popoverTag').hide();
+                    }
+                });
             },
             fetchCollection: function() {
                 this.$('.fontLoader').show();
@@ -153,25 +162,9 @@ define(['require',
                         sortKey: "position",
                         comparator: function(item) {
                             return item.get(this.sortKey) || 999;
-                        },
-                        setPositions: function() {
-                            _.each(this.models, function(model, index) {
-                                if (model.get('name') == "name") {
-                                    model.set("position", 2, { silent: true });
-                                    model.set("label", "Name");
-                                } else if (model.get('name') == "description") {
-                                    model.set("position", 3, { silent: true });
-                                    model.set("label", "Description");
-                                } else if (model.get('name') == "owner") {
-                                    model.set("position", 4, { silent: true });
-                                    model.set("label", "Owner");
-                                }
-                            });
-                            return this;
                         }
                     });
                     var columns = new columnCollection(that.getSchemaTableColumns());
-                    columns.setPositions().sort();
                     that.RTagLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
                         globalVent: that.globalVent,
                         columns: columns
@@ -323,8 +316,23 @@ define(['require',
             },
             onClickTagCross: function(e) {
                 var tagName = $(e.target).data("name"),
-                    that = this,
-                    modal = CommonViewFunction.deleteTagModel(tagName, "assignTerm");
+                    assetName = $(e.target).data("assetname"),
+                    that = this;
+                var tagOrTerm = Utils.checkTagOrTerm(tagName);
+                if (tagOrTerm.term) {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + "?</b></div>",
+                        titleMessage: Messages.removeTerm,
+                        buttonText: "Remove"
+                    });
+                } else {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + "?</b></div>",
+                        titleMessage: Messages.removeTag,
+                        buttonText: "Remove"
+                    });
+                }
+
                 modal.on('ok', function() {
                     that.deleteTagData(e);
                 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/search/SearchResultLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index 75bf6ef..5ec1b22 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -24,8 +24,9 @@ define(['require',
     'utils/Utils',
     'utils/Globals',
     'collection/VSearchList',
-    'utils/CommonViewFunction'
-], function(require, Backbone, SearchResultLayoutViewTmpl, Modal, VEntity, Utils, Globals, VSearchList, CommonViewFunction) {
+    'utils/CommonViewFunction',
+    'utils/Messages'
+], function(require, Backbone, SearchResultLayoutViewTmpl, Modal, VEntity, Utils, Globals, VSearchList, CommonViewFunction, Messages) {
     'use strict';
 
     var SearchResultLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -80,13 +81,12 @@ define(['require',
                 events["click " + this.ui.addTag] = 'addTagModalView';
                 events["click " + this.ui.addTerm] = 'checkedValue';
                 events["click " + this.ui.showMoreLess] = function(e) {
-                    $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
-                    $(e.currentTarget).parents('.searchTag').find('a').toggleClass('hide show');
-                    if ($(e.currentTarget).find('i').hasClass('fa-angle-right')) {
-                        $(e.currentTarget).find('span').text('Show More');
-                    } else {
-                        $(e.currentTarget).find('span').text('Show less');
-                    }
+                    $(e.currentTarget).parents('tr').siblings().find("div.popover.popoverTag").hide();
+                    $(e.currentTarget).parent().find("div.popover").toggle();
+                    var positionContent = $(e.currentTarget).position();
+                    positionContent.top = positionContent.top + 26;
+                    positionContent.left = positionContent.left - 67;
+                    $(e.currentTarget).parent().find("div.popover").css(positionContent);
                 };
                 events["click " + this.ui.showMoreLessTerm] = function(e) {
                     $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
@@ -127,6 +127,7 @@ define(['require',
                 this.arr = [];
             },
             bindEvents: function() {
+                var that = this;
                 this.listenTo(this.searchCollection, 'backgrid:selected', function(model, checked) {
                     if (checked === true) {
                         model.set("isEnable", true);
@@ -136,7 +137,6 @@ define(['require',
                         this.$('.searchResult').find(".inputAssignTag.multiSelect").hide();
                     }
                     this.arr = [];
-                    var that = this;
                     this.searchCollection.find(function(item) {
                         if (item.get('isEnable')) {
                             var term = [];
@@ -147,19 +147,6 @@ define(['require',
                         }
                     });
                 });
-                this.listenTo(this.vent, "show:searchResult", function(value) {
-                    this.fetchCollection(value);
-                    this.REntityTableLayoutView.reset();
-                }, this);
-                this.listenTo(this.searchCollection, "reset", function(value) {
-                    if (this.searchCollection.toJSON().length == 0) {
-                        this.checkTableFetch();
-                    }
-                    this.renderTableLayoutView();
-                    var resultData = this.searchCollection.fullCollection.length + ' result for <b>' + this.searchCollection.queryParams.query + '</b>'
-                    var multiAssignData = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o">' + " " + 'Assign Term</i></a>'
-                    this.$('.searchResult').html(resultData + multiAssignData);
-                }, this);
                 this.listenTo(this.searchCollection, "error", function(value, responseData) {
                     this.$('.fontLoader').hide();
                     var message = "Invalid expression";
@@ -176,7 +163,8 @@ define(['require',
             },
             onRender: function() {
                 //this.renderTableLayoutView();
-                var value = {};
+                var value = {},
+                    that = this;
                 if (this.value) {
                     value = this.value;
                 } else {
@@ -187,18 +175,43 @@ define(['require',
                     };
                 }
                 this.fetchCollection(value);
+                $('body').click(function(e) {
+                    var iconEvnt = e.target.nodeName;
+                    if (that.$('.popoverContainer').length) {
+                        if ($(e.target).hasClass('tagDetailPopover') || iconEvnt == "I") {
+                            return;
+                        }
+                        that.$('.popover.popoverTag').hide();
+                    }
+                });
             },
             fetchCollection: function(value) {
+                var that = this;
                 this.$('.fontLoader').show();
                 this.$('.searchTable').hide();
                 this.$('.searchResult').html('');
+                if (Globals.searchApiCallRef) {
+                    Globals.searchApiCallRef.abort();
+                }
                 if (value) {
                     if (value.searchType) {
                         this.searchCollection.url = "/api/atlas/discovery/search/" + value.searchType;
                     }
                     _.extend(this.searchCollection.queryParams, { 'query': value.query });
                 }
-                this.searchCollection.fetch({ reset: true });
+                Globals.searchApiCallRef = this.searchCollection.fetch({
+                    success: function() {
+                        Globals.searchApiCallRef = undefined;
+                        if (that.searchCollection.toJSON().length == 0) {
+                            that.checkTableFetch();
+                        }
+                        that.renderTableLayoutView();
+                        var resultData = that.searchCollection.fullCollection.length + ' results for <b>' + that.searchCollection.queryParams.query + '</b>'
+                        var multiAssignData = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o">' + " " + 'Assign Term</i></a>'
+                        that.$('.searchResult').html(resultData + multiAssignData);
+                    },
+                    silent: true
+                });
             },
             renderTableLayoutView: function() {
                 var that = this,
@@ -389,7 +402,6 @@ define(['require',
                                     var guid = model.toJSON().instanceInfo.guid;
                                     ++that.fetchList;
                                     model.getEntity(guid, {
-                                        beforeSend: function() {},
                                         success: function(data) {
                                             if (data.definition) {
                                                 if (data.definition.id && data.definition.id.state) {
@@ -416,7 +428,6 @@ define(['require',
                                     var guid = model.toJSON().guid;
                                     ++that.fetchList;
                                     model.getEntity(guid, {
-                                        beforeSend: function() {},
                                         success: function(data) {
                                             if (data.definition) {
                                                 if (data.definition.id && data.definition.id.state) {
@@ -491,8 +502,22 @@ define(['require',
             onClickTagCross: function(e) {
                 var tagName = $(e.target).data("name"),
                     guid = $(e.target).data("guid"),
+                    assetName = $(e.target).data("assetname"),
                     that = this,
-                    modal = CommonViewFunction.deleteTagModel(tagName, "assignTerm");
+                    tagOrTerm = Utils.checkTagOrTerm(tagName);
+                if (tagOrTerm.term) {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+                        titleMessage: Messages.removeTerm,
+                        buttonText: "Remove"
+                    });
+                } else {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
+                        titleMessage: Messages.removeTag,
+                        buttonText: "Remove"
+                    });
+                }
                 modal.on('ok', function() {
                     that.deleteTagData(e);
                 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
index e9d4b57..51d644e 100644
--- a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
@@ -21,8 +21,9 @@ define(['require',
     'hbs!tmpl/tag/TagDetailTableLayoutView_tmpl',
     'utils/CommonViewFunction',
     'utils/Utils',
-    'collection/VTagList'
-], function(require, Backbone, TagDetailTableLayoutView_tmpl, CommonViewFunction, Utils, VTagList) {
+    'collection/VTagList',
+    'utils/Messages'
+], function(require, Backbone, TagDetailTableLayoutView_tmpl, CommonViewFunction, Utils, VTagList, Messages) {
     'use strict';
 
     var TagDetailTableLayoutView = Backbone.Marionette.LayoutView.extend(
@@ -59,7 +60,7 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'globalVent', 'collection', 'guid', 'term'));
+                _.extend(this, _.pick(options, 'globalVent', 'collection', 'guid', 'term', 'assetName'));
                 this.collectionObject = this.collection.toJSON();
                 this.tagTermCollection = new VTagList();
                 var tagorterm = _.toArray(this.collectionObject[0].traits),
@@ -175,8 +176,22 @@ define(['require',
             },
             deleteTagDataModal: function(e) {
                 var tagName = $(e.currentTarget).data("name"),
-                    that = this,
-                    modal = CommonViewFunction.deleteTagModel(tagName);
+                    that = this;
+                if (that.term) {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+                        titleMessage: Messages.removeTerm,
+                        buttonText: "Remove",
+                    });
+                } else {
+                    var modal = CommonViewFunction.deleteTagModel({
+                        msg: "<div class='ellipsis'>Remove: " + "<b>" + tagName + "</b> assignment from" + " " + "<b>" + this.assetName + "?</b></div>",
+                        titleMessage: Messages.removeTag,
+                        buttonText: "Remove",
+                    });
+                }
+
+
                 modal.on('ok', function() {
                     that.deleteTagData(e);
                 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/dashboardv2/public/js/views/tag/addTagModalView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/addTagModalView.js b/dashboardv2/public/js/views/tag/addTagModalView.js
index 58f4918..f1cb026 100644
--- a/dashboardv2/public/js/views/tag/addTagModalView.js
+++ b/dashboardv2/public/js/views/tag/addTagModalView.js
@@ -51,7 +51,7 @@ define(['require',
             this.modal = new Modal({
                 title: 'Add Tag',
                 content: this,
-                okText: 'Save',
+                okText: 'Add',
                 cancelText: "Cancel",
                 allowCancel: true,
             }).open();
@@ -79,7 +79,7 @@ define(['require',
             }, this);
         },
         tagsCollection: function() {
-            var str = '<option selected="selected" disabled="disabled">-- Select Tag --</option>';
+            var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>';
             _.each(this.collection.fullCollection.models, function(obj, key) {
                 var tagOrTerm = Utils.checkTagOrTerm(obj.get('tags'));
                 if (!tagOrTerm.term) {
@@ -106,13 +106,15 @@ define(['require',
         },
         subAttributeData: function() {
             if (this.commonCollection.models[0] && this.commonCollection.models[0].attributes && this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions) {
+                var strAttribute = '<p>Tag Attributes(optional)</p>' +
+                    '<p class="tagAttributeLabel">Add attribute values for this tag</p>';
                 for (var i = 0; i < this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions.length; i++) {
                     var attribute = this.commonCollection.models[0].attributes.traitTypes[0].attributeDefinitions;
                     this.ui.tagAttribute.show();
-                    this.strAttribute = '<label class="control-label col-sm-4 ng-binding">' + attribute[i].name + '</label>' +
-                        '<div class="col-sm-8 input-spacing">' +
-                        '<input type="text" class="form-control attributeInputVal attrName" data-key="' + attribute[i].name + '" ></input></div>';
-                    this.ui.tagAttribute.append(this.strAttribute);
+                    strAttribute += '<div class="form-group"><label class="control-label col-sm-2">' + attribute[i].name + '</label>' +
+                        '<div class="col-sm-10">' +
+                        '<input type="text" class="form-control attributeInputVal attrName" data-key="' + attribute[i].name + '" ></input></div></div>';
+                    this.ui.tagAttribute.html(strAttribute);
                 }
                 if (this.commonCollection.models[0].attributes.traitTypes[0].superTypes.length > 0) {
                     for (var j = 0; j < this.commonCollection.models[0].attributes.traitTypes[0].superTypes.length; j++) {
@@ -139,7 +141,6 @@ define(['require',
             };
             that.entityModel.saveEntity(that.guid, {
                 data: JSON.stringify(json),
-                beforeSend: function() {},
                 success: function(data) {
                     Utils.notifySuccess({
                         content: "Tag " + tagName + " has been added to entity"

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/072a73e0/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 04e3798..0b71159 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
 
 
 ALL CHANGES:
+ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)
 ATLAS-936 Update atlas website for 0.7 release (shwethags)
 ATLAS-995 Atlas to setup ldap authentication type as either LDAP / AD or None (nixonrodrigues via shwethags)
 ATLAS-902 Atlas throws exception due to null definition in Hive create table statement (svimal2106 via shwethags)


[2/2] incubator-atlas git commit: ATLAS-1002 Create default user rangertagsync in atlas file authentication for Ranger tag sync module (nixonrodrigues via shwethags)

Posted by sh...@apache.org.
ATLAS-1002 Create default user rangertagsync in atlas file authentication for Ranger tag sync module (nixonrodrigues via shwethags)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/e13fa5ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/e13fa5ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/e13fa5ec

Branch: refs/heads/master
Commit: e13fa5ecd20dc877be6c6be2179f194255e69200
Parents: 072a73e
Author: Shwetha GS <ss...@hortonworks.com>
Authored: Tue Jul 12 11:18:37 2016 +0530
Committer: Shwetha GS <ss...@hortonworks.com>
Committed: Tue Jul 12 11:18:37 2016 +0530

----------------------------------------------------------------------
 distro/src/conf/policy-store.txt             | 1 +
 distro/src/conf/users-credentials.properties | 1 +
 release-log.txt                              | 1 +
 3 files changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/e13fa5ec/distro/src/conf/policy-store.txt
----------------------------------------------------------------------
diff --git a/distro/src/conf/policy-store.txt b/distro/src/conf/policy-store.txt
index e4e77fc..47583c1 100644
--- a/distro/src/conf/policy-store.txt
+++ b/distro/src/conf/policy-store.txt
@@ -6,3 +6,4 @@ adminPolicy;;admin:rwud;;ROLE_ADMIN:rwud;;type:*,entity:*,operation:*,taxonomy:*
 dataScientistPolicy;;;;DATA_SCIENTIST:r;;type:*,entity:*,taxonomy:*,term:*
 dataStewardPolicy;;;;DATA_STEWARD:rwu;;type:*,entity:*,taxonomy:*,term:*
 hadoopPolicy;;;;hadoop:rwud;;type:*,entity:*,operation:*,taxonomy:*,term:*
+rangerTagSyncPolicy;;;;RANGER_TAG_SYNC:r;;type:*,entity:*

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/e13fa5ec/distro/src/conf/users-credentials.properties
----------------------------------------------------------------------
diff --git a/distro/src/conf/users-credentials.properties b/distro/src/conf/users-credentials.properties
index 1758be2..3fc3bb1 100644
--- a/distro/src/conf/users-credentials.properties
+++ b/distro/src/conf/users-credentials.properties
@@ -1,2 +1,3 @@
 #username=group::sha256-password
 admin=ADMIN::8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
+rangertagsync=RANGER_TAG_SYNC::e3f67240f5117d1753c940dae9eea772d36ed5fe9bd9c94a300e40413f1afb9d

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/e13fa5ec/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 0b71159..4c58bdc 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
 
 
 ALL CHANGES:
+ATLAS-1002 Create default user rangertagsync in atlas file authentication for Ranger tag sync module (nixonrodrigues via shwethags)
 ATLAS-949 UI improvement for modal and tag styling in table (Kalyanikashikar via shwethags)
 ATLAS-936 Update atlas website for 0.7 release (shwethags)
 ATLAS-995 Atlas to setup ldap authentication type as either LDAP / AD or None (nixonrodrigues via shwethags)