You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2017/01/07 07:20:11 UTC

incubator-atlas git commit: ATLAS-1432: Responsive Loader and css changes

Repository: incubator-atlas
Updated Branches:
  refs/heads/0.7-incubating 2e5ecb128 -> d653777ef


ATLAS-1432: Responsive Loader and css changes

Signed-off-by: Madhan Neethiraj <ma...@apache.org>


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

Branch: refs/heads/0.7-incubating
Commit: d653777ef39ae3947a96f9710c03508b1f17fb14
Parents: 2e5ecb1
Author: kevalbhatt <kb...@apache.org>
Authored: Fri Jan 6 19:16:48 2017 +0530
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Fri Jan 6 18:17:49 2017 -0800

----------------------------------------------------------------------
 dashboardv2/public/index.html                   |  1 -
 .../BusinessCatalogDetailLayoutView_tmpl.html   | 66 ++++----------
 .../detail_page/DetailPageLayoutView_tmpl.html  | 70 +++++++++------
 .../tag/TagAttributeDetailLayoutView_tmpl.html  | 25 ++++--
 dashboardv2/public/js/utils/Overrides.js        |  2 +-
 dashboardv2/public/js/utils/Utils.js            | 16 ++++
 .../AddTermToEntityLayoutView.js                |  8 +-
 .../BusinessCatalogDetailLayoutView.js          | 27 +-----
 .../views/detail_page/DetailPageLayoutView.js   | 91 ++++++--------------
 .../js/views/search/SearchResultLayoutView.js   |  2 +-
 .../views/tag/TagAttributeDetailLayoutView.js   | 28 +++---
 webapp/src/main/webapp/login.jsp                |  2 +-
 12 files changed, 142 insertions(+), 196 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/index.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/index.html b/dashboardv2/public/index.html
index 534d574..04edcee 100644
--- a/dashboardv2/public/index.html
+++ b/dashboardv2/public/index.html
@@ -30,7 +30,6 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8; Cache-Control: no-cache" />
-    <meta http-equiv="X-Frame-Options" content="deny">
     <title>Atlas</title>
     <meta name="description" content="">
     <meta name="viewport" content="width=device-width">

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/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 0a4ab6f..3f6df14 100644
--- a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
@@ -14,63 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="fontLoader">
-    <i class="fa fa-refresh fa-spin-custom"></i>
-</div>
-<div class="hide">
-    <div class="page-title clearfix">
+<div class="page-title clearfix">
+    <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div>
+    <div class="catlogDetail">
         <h1><span data-id="title"></span></h1>
         <button type="button" data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button>
         <p class="sub-title" data-id="description">Description</p>
-        <!--  <div data-id="editBox" style="margin-bottom:10px;">
-            <textarea class="well well-sm col-sm-12" data-id="descriptionTextArea"></textarea>
-            <div class="clearfix" align="right">
-                <button class="btn btn-atlas cancel" data-id="cancelButton">Cancel</button>
-                <button class="btn btn-atlas ok" data-id="publishButton">Publish</button>
-            </div>
-        </div> -->
     </div>
-    <div class="container-fluid gray-bg">
-        <div class="row">
-            <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>
-                        <!--  <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Acceptable Use</a></li> -->
-                    </ul>
-                    <div class="tab-content">
-                        <div id="tab-details" role="tabpanel" class="tab-pane active">
-                            <p data-id="createDate"></p>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="row">
-            <div class="col-sm-custom">
-                <div class="atlast-tabbable">
-                    <div class="panel panel-default lineageLayout" style="display:none">
-                        <div id="r_lineageLayoutView"></div>
+</div>
+<div class="container-fluid gray-bg">
+    <div class="row">
+        <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>
+                </ul>
+                <div class="tab-content">
+                    <div id="tab-details" role="tabpanel" class="tab-pane active">
+                        <p data-id="createDate"></p>
                     </div>
                 </div>
             </div>
         </div>
     </div>
-    <!-- <div class="row">
-    <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>
-        <div class="comment-box">
-            <p class="comment">There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.</p>
-            <p class="author">Micheal Surmac</p>
-            <p class="date">December 16, 2016 11:03:23 AM</p>
-        </div>
-        <div class="comment-box">
-            <p class="comment">Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.</p>
-            <p class="author">Paula Schmidt</p>
-            <p class="date">May 3, 2015 9:16:12 AM</p>
-        </div>
-    </div>
-</div> -->
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/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 f34bcea..12b985b 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -15,32 +15,30 @@
  * limitations under the License.
 -->
 <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 Results</a>
+    <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
     </div>
-    <h1><span  data-id="title"></span></h1>
-    <div data-id="editBox" style="margin-bottom:10px;">
-        <textarea class="well well-sm col-sm-12" data-id="descriptionTextArea"></textarea>
-        <div class="clearfix" align="right">
-            <button type="button" class="btn-atlas" data-id="cancelButton">Cancel</button>
-            <button type="button" class="btn-atlas" data-id="publishButton">Publish</button>
+    <div class="entityDetail">
+        <div class="row">
+            <a href="javascript:void(0);" class="backButton" data-id="backButton"><i class="fa fa-chevron-left"></i>  Back To Results</a>
         </div>
-    </div>
-    <div class="tagTerm">
-        <span class="tagSpan">Tags:</span>
-        <div class="" data-id="tagList">
-            <div class="addTag-dropdown" data-id="addTag">
-                <div class="addTagBase tagBox" data-id="addTagPlus"><i class="fa fa-plus"></i></div>
+        <h1><span  data-id="title"></span></h1>
+        <div class="tagTerm">
+            <span class="tagSpan">Tags:</span>
+            <div class="" data-id="tagList">
+                <div class="addTag-dropdown" data-id="addTag">
+                    <div class="addTagBase tagBox" data-id="addTagPlus"><i class="fa fa-plus"></i></div>
+                </div>
             </div>
-        </div>
-        <hr class="termTagLine"> {{#if taxonomy}}
-        <span class="termSpan">Terms:</span>
-        <div class="" data-id="termList">
-            <div class="addTag-dropdown" data-id="addTerm">
-                <div class="addTagBase termBox" data-id="addTermPlus"><i class="fa fa-plus"></i></div>
+            <hr class="termTagLine"> {{#if taxonomy}}
+            <span class="termSpan">Terms:</span>
+            <div class="" data-id="termList">
+                <div class="addTag-dropdown" data-id="addTerm">
+                    <div class="addTagBase termBox" data-id="addTermPlus"><i class="fa fa-plus"></i></div>
+                </div>
             </div>
+            {{/if}}
         </div>
-        {{/if}}
     </div>
 </div>
 <div class="container-fluid gray-bg">
@@ -70,19 +68,39 @@
                 </ul>
                 <div class="tab-content">
                     <div id="tab-details" role="tabpanel" class="tab-pane active">
-                        <div id="r_entityDetailTableLayoutView"></div>
+                        <div id="r_entityDetailTableLayoutView" style="position: relative;">
+                            <div class="fontLoader">
+                                <i class="fa fa-refresh fa-spin-custom"></i>
+                            </div>
+                        </div>
                     </div>
                     <div id="tab-tagTable" role="tabpanel" class="tab-pane">
-                        <div id="r_tagTableLayoutView"></div>
+                        <div id="r_tagTableLayoutView" style="position: relative;">
+                            <div class="fontLoader">
+                                <i class="fa fa-refresh fa-spin-custom"></i>
+                            </div>
+                        </div>
                     </div>
                     <div id="tab-termTable" role="tabpanel" class="tab-pane">
-                        <div id="r_termTableLayoutView"></div>
+                        <div id="r_termTableLayoutView" style="position: relative;">
+                            <div class="fontLoader">
+                                <i class="fa fa-refresh fa-spin-custom"></i>
+                            </div>
+                        </div>
                     </div>
                     <div id="tab-audit" role="tabpanel" class="tab-pane">
-                        <div id="r_auditTableLayoutView"></div>
+                        <div id="r_auditTableLayoutView" style="position: relative;">
+                            <div class="fontLoader">
+                                <i class="fa fa-refresh fa-spin-custom"></i>
+                            </div>
+                        </div>
                     </div>
                     <div id="tab-schema" role="tabpanel" class="tab-pane">
-                        <div id="r_schemaTableLayoutView"></div>
+                        <div id="r_schemaTableLayoutView" style="position: relative;">
+                            <div class="fontLoader">
+                                <i class="fa fa-refresh fa-spin-custom"></i>
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/js/templates/tag/TagAttributeDetailLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/TagAttributeDetailLayoutView_tmpl.html b/dashboardv2/public/js/templates/tag/TagAttributeDetailLayoutView_tmpl.html
index 04ec41e..2cb0fc9 100644
--- a/dashboardv2/public/js/templates/tag/TagAttributeDetailLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/tag/TagAttributeDetailLayoutView_tmpl.html
@@ -15,16 +15,23 @@
  * limitations under the License.
 -->
 <div class="page-title clearfix">
-    <h1><span data-id="title"></span></h1>
-    <button type="button" data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button>
-    <p class="sub-title" data-id="description"></p>
-    <span class="attrLabel">Attributes:</span>
-    <div data-id="showAttribute">
+    <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
     </div>
-    <div class="dropdown addTag-dropdown" data-id="addTagListBtn">
-        <div class=" addTagBase dropdown-toggle" data-id="addTagBtn" data-toggle="dropdown">
-            <div class="addTagText" data-id="addTagtext" style="display: block">ADD Attribute &nbsp; <i class="fa fa-plus"></i></div>
-            <div class="addTagPlus" data-id="addTagPlus" style="display: none"><i class="fa fa-plus"></i></div>
+    <div class="tagDetail">
+        <h1><span data-id="title"></span></h1>
+        <button type="button" data-id="editButton" class="btn btn-default pull-right editbutton" id="editText"><i class="fa fa-pencil"></i></button>
+        <p class="sub-title" data-id="description"></p>
+        <div class="attributes">
+            <span class="attrLabel">Attributes:</span>
+            <div data-id="showAttribute">
+            </div>
+            <div class="dropdown addTag-dropdown" data-id="addTagListBtn">
+                <div class=" addTagBase dropdown-toggle" data-id="addTagBtn" data-toggle="dropdown">
+                    <div class="addTagText" data-id="addTagtext" style="display: block">ADD Attribute &nbsp; <i class="fa fa-plus"></i></div>
+                    <div class="addTagPlus" data-id="addTagPlus" style="display: none"><i class="fa fa-plus"></i></div>
+                </div>
+            </div>
         </div>
     </div>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/js/utils/Overrides.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Overrides.js b/dashboardv2/public/js/utils/Overrides.js
index 11919e7..3945e9f 100644
--- a/dashboardv2/public/js/utils/Overrides.js
+++ b/dashboardv2/public/js/utils/Overrides.js
@@ -55,7 +55,7 @@ define(['require', 'marionette', 'backgrid', 'asBreadcrumbs', 'jquery-placeholde
             var that = this;
             Backgrid.HeaderRow.__super__.render.apply(this, arguments);
             _.each(this.columns.models, function(modelValue) {
-                if (modelValue.get('width')) that.$el.find('.' + modelValue.get('name')).css('width', modelValue.get('width') + '%')
+                if (modelValue.get('width')) that.$el.find('.' + modelValue.get('name')).css('min-width', modelValue.get('width') + 'px')
                 if (modelValue.get('toolTip')) that.$el.find('.' + modelValue.get('name')).attr('title', modelValue.get('toolTip'))
             });
             return this;

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index d3a1b18..098a14b 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -286,5 +286,21 @@ define(['require', 'utils/Globals', 'pnotify'], function(require, Globals, pnoti
             }
         }
     }
+
+    Utils.showTitleLoader = function(loaderEl, titleBoxEl) {
+        loaderEl.css({
+            'display': 'block',
+            'position': 'relative',
+            'height': '85px',
+            'marginTop': '85px',
+            'marginLeft': '50%',
+            'left': '0%'
+        });
+        titleBoxEl.hide();
+    }
+    Utils.hideTitleLoader = function(loaderEl, titleBoxEl) {
+        loaderEl.hide();
+        titleBoxEl.fadeIn();
+    }
     return Utils;
 });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
index 5e66f53..fddaf09 100644
--- a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
@@ -62,13 +62,17 @@ define(['require',
                 }).open();
                 this.on('ok', function() {
                     that.asyncFetchCounter = 0;
+                    var termName = this.modal.$el.find('.taxonomyTree li.active a').data('name').split("`").join("");
+                    if (termName.trim) {
+                        termName = termName.trim();
+                    }
                     if (that.multiple) {
                         for (var i = 0; i < that.multiple.length; i++) {
                             if (i == 0) {
                                 that.showLoader();
                             }
                             var obj = {
-                                termName: this.modal.$el.find('.taxonomyTree li.active a').data('name').split("`").join(""),
+                                termName: termName,
                                 guid: that.multiple[i].id.id
                             };
                             CommonViewFunction.saveTermToAsset(obj, that);
@@ -76,7 +80,7 @@ define(['require',
                     } else {
                         that.asyncFetchCounter = 0;
                         CommonViewFunction.saveTermToAsset({
-                            termName: this.modal.$el.find('.taxonomyTree li.active a').data('name').split("`").join(""),
+                            termName: termName,
                             guid: this.guid
                         }, that);
                     }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/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 f709f4d..ad31388 100644
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
+++ b/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
@@ -45,28 +45,15 @@ define(['require',
             ui: {
                 title: '[data-id="title"]',
                 editButton: '[data-id="editButton"]',
-                cancelButton: '[data-id="cancelButton"]',
-                publishButton: '[data-id="publishButton"]',
                 description: '[data-id="description"]',
-                descriptionTextArea: '[data-id="descriptionTextArea"]',
-                editBox: '[data-id="editBox"]',
                 createDate: '[data-id="createDate"]',
                 updateDate: '[data-id="updateDate"]',
-                createdUser: '[data-id="createdUser"]',
-                addTagBtn: '[data-id="addTagBtn"]',
-                appendList: '[data-id="appendList"]',
-                inputTagging: '[data-id="inputTagging"]',
-                deleteTag: '[data-id="deleteTag"]',
-                addTagtext: '[data-id="addTagtext"]',
-                addTagPlus: '[data-id="addTagPlus"]',
-                searchTag: '[data-id="searchTag"] input',
-                addTagListBtn: '[data-id="addTagListBtn"]'
+                createdUser: '[data-id="createdUser"]'
             },
             /** ui events hash */
             events: function() {
                 var events = {};
                 events["click " + this.ui.editButton] = 'onEditButton';
-                events["click " + this.ui.cancelButton] = 'onCancelButtonClick';
                 return events;
             },
             /**
@@ -112,23 +99,16 @@ define(['require',
                         var splitDate = createdDate.split(":");
                         this.ui.createDate.html('<strong> Date Created: </strong> ' + splitDate[0] + " " + splitDate[1] + ":" + splitDate[2] + ":" + splitDate[3] + " (GMT)");
                     }
+                    Utils.hideTitleLoader(this.$('.fontLoader'), this.$('.catlogDetail'));
                 }, this);
             },
             onRender: function() {
                 var that = this;
-                this.$('.fontLoader').show();
-                this.ui.editBox.hide();
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.catlogDetail'));
             },
             fetchCollection: function() {
-                this.$('.fontLoader').show();
                 this.collection.fetch({ reset: true });
             },
-
-            onCancelButtonClick: function() {
-                this.ui.description.show();
-                this.ui.editButton.show();
-                this.ui.editBox.hide();
-            },
             onEditButton: function(e) {
                 var that = this;
                 $(e.currentTarget).blur();
@@ -174,6 +154,7 @@ define(['require',
                 termModel.url = function() {
                     return that.collection.url;
                 };
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.catlogDetail'));
                 termModel.set({
                     "description": view.ui.description.val()
                 }).save(null, {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/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 336758d..ed273ce 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -49,12 +49,6 @@ define(['require',
             ui: {
                 tagClick: '[data-id="tagClick"]',
                 title: '[data-id="title"]',
-                editButton: '[data-id="editButton"]',
-                cancelButton: '[data-id="cancelButton"]',
-                publishButton: '[data-id="publishButton"]',
-                description: '[data-id="description"]',
-                descriptionTextArea: '[data-id="descriptionTextArea"]',
-                editBox: '[data-id="editBox"]',
                 createDate: '[data-id="createDate"]',
                 updateDate: '[data-id="updateDate"]',
                 createdUser: '[data-id="createdUser"]',
@@ -65,23 +59,9 @@ define(['require',
                 tagList: '[data-id="tagList"]',
                 termList: '[data-id="termList"]'
             },
-            templateHelpers: function() {
-                return {
-                    taxonomy: Globals.taxonomy
-                };
-            },
             /** ui events hash */
             events: function() {
                 var events = {};
-                events["click " + this.ui.editButton] = function() {
-                    this.ui.editButton.hide();
-                    this.ui.description.hide();
-                    this.ui.editBox.show();
-                    this.ui.descriptionTextArea.focus();
-                    if (this.descriptionPresent) {
-                        this.ui.descriptionTextArea.val(this.ui.description.text());
-                    }
-                };
                 events["click " + this.ui.tagClick] = function(e) {
                     if (e.target.nodeName.toLocaleLowerCase() != "i") {
                         var scope = $(e.currentTarget);
@@ -102,8 +82,6 @@ define(['require',
                         }
                     }
                 };
-                // events["click " + this.ui.publishButton] = 'onPublishButtonClick';
-                events["click " + this.ui.cancelButton] = 'onCancelButtonClick';
                 events["click " + this.ui.deleteTag] = 'onClickTagCross';
                 events["click " + this.ui.addTag] = 'onClickAddTagBtn';
                 events["click " + this.ui.addTerm] = 'onClickAddTermBtn';
@@ -112,6 +90,11 @@ define(['require',
                 };
                 return events;
             },
+            templateHelpers: function() {
+                return {
+                    taxonomy: Globals.taxonomy
+                };
+            },
             /**
              * intialize a new DetailPageLayoutView Layout
              * @constructs
@@ -152,7 +135,6 @@ define(['require',
                             if (!this.name && this.id) {
                                 this.name = this.id;
                             }
-                            this.description = collectionJSON[0].values.description;
                             if (this.name) {
                                 this.ui.title.show();
                                 var titleName = '<span>' + _.escape(this.name) + '</span>';
@@ -163,38 +145,35 @@ define(['require',
                             } else {
                                 this.ui.title.hide();
                             }
-                            if (this.description) {
-                                this.ui.description.show();
-                                this.ui.description.html('<span>' + _.escape(this.description) + '</span>');
-                            } else {
-                                this.ui.description.hide();
-                            }
                         }
                         if (collectionJSON[0].traits) {
-                            this.addTagToTerms(collectionJSON[0].traits);
+                            this.addTagTerms(collectionJSON[0].traits);
                         }
                     }
-
+                    Utils.hideTitleLoader(this.$('.page-title .fontLoader'), this.$('.entityDetail'));
                     this.renderEntityDetailTableLayoutView();
                     this.renderTagTableLayoutView(tagGuid);
-                    this.renderLineageLayoutView(tagGuid);
-                    this.renderSchemaLayoutView(tagGuid);
                     this.renderAuditTableLayoutView(tagGuid);
                     this.renderTermTableLayoutView(tagGuid);
                 }, this);
+                this.listenTo(this.collection, 'error', function(model, response) {
+                    this.$('.fontLoader').hide();
+                    if (response.responseJSON && response.responseJSON.error) {
+                        Utils.notifyError({
+                            content: response.responseJSON.error
+                        });
+                    }
+                }, this);
             },
             onRender: function() {
                 var that = this;
-                this.ui.editBox.hide();
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.entityDetail'));
+                this.renderLineageLayoutView(this.id);
+                this.renderSchemaLayoutView(this.id);
             },
             fetchCollection: function() {
                 this.collection.fetch({ reset: true });
             },
-            onCancelButtonClick: function() {
-                this.ui.description.show();
-                this.ui.editButton.show();
-                this.ui.editBox.hide();
-            },
             onClickTagCross: function(e) {
                 var tagName = $(e.currentTarget).parent().text(),
                     tagOrTerm = $(e.target).data("type"),
@@ -224,6 +203,7 @@ define(['require',
             deleteTagData: function(e, tagOrTerm) {
                 var that = this,
                     tagName = $(e.currentTarget).text();
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.entityDetail'));
                 CommonViewFunction.deleteTag({
                     'tagName': tagName,
                     'guid': that.id,
@@ -233,7 +213,7 @@ define(['require',
                     }
                 });
             },
-            addTagToTerms: function(tagObject) {
+            addTagTerms: function(tagObject) {
                 var that = this,
                     tagData = "",
                     termData = "";
@@ -252,28 +232,6 @@ define(['require',
                 this.ui.tagList.prepend(tagData);
                 this.ui.termList.prepend(termData);
             },
-            saveTagFromList: function(ref) {
-                var that = this;
-                this.entityModel = new VEntity();
-                var tagName = ref.text();
-                var json = {
-                    "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Struct",
-                    "typeName": tagName,
-                    "values": {}
-                };
-                this.entityModel.saveEntity(this.id, {
-                    data: JSON.stringify(json),
-                    success: function(data) {
-                        that.fetchCollection();
-                    },
-                    error: function(error, data, status) {
-                        if (error && error.responseText) {
-                            var data = JSON.parse(error.responseText);
-                        }
-                    },
-                    complete: function() {}
-                });
-            },
             onClickAddTagBtn: function(e) {
                 var that = this;
                 require(['views/tag/addTagModalView'], function(AddTagModalView) {
@@ -284,9 +242,9 @@ define(['require',
                             that.fetchCollection();
                         }
                     });
-                    /*view.saveTagData = function() {
-                    override saveTagData function 
-                    }*/
+                    view.modal.on('ok', function() {
+                        Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail'));
+                    });
                 });
             },
             onClickAddTermBtn: function(e) {
@@ -300,6 +258,9 @@ define(['require',
                             that.fetchCollection();
                         }
                     });
+                    view.modal.on('ok', function() {
+                        Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail'));
+                    });
                 });
 
             },

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/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 343cb1a..a570b5b 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -412,7 +412,7 @@ define(['require',
                         ++nameCheck;
                     }
                     if (model && model.get('$id$') === undefined) {
-                        i = i - 1;
+                        i = i > 0 ? (i - 1) : i;
                         that.searchCollection.remove(model);
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
index 8f82064..8ccbf28 100644
--- a/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagAttributeDetailLayoutView.js
@@ -41,7 +41,6 @@ define(['require',
                 addAttrBtn: '[data-id="addAttrBtn"]',
                 saveButton: "[data-id='saveButton']",
                 showAttribute: "[data-id='showAttribute']",
-                cancelButton: "[data-id='cancelButton']",
                 addTagListBtn: '[data-id="addTagListBtn"]',
                 addTagtext: '[data-id="addTagtext"]',
                 addTagPlus: '[data-id="addTagPlus"]',
@@ -68,7 +67,7 @@ define(['require',
                 this.tagCollection = new VCommonList();
                 this.tagCollection.url = "/api/atlas/types/" + this.tag;
                 this.tagCollection.modelAttrName = "definition";
-                this.tagCollection.fetch({ reset: true });
+                this.fetchCollection();
                 this.bindEvents();
             },
             bindEvents: function() {
@@ -78,6 +77,7 @@ define(['require',
                     this.traitTypes = this.tagCollection.first().get("traitTypes")[0];
                     if (this.traitTypes.typeDescription != null) {
                         that.ui.description.text(this.traitTypes.typeDescription);
+                        that.ui.title.html('<span>' + _.escape(this.traitTypes.typeName) + '</span>');
                     }
                     if (this.traitTypes.typeName != null) {
                         that.ui.title.text(this.traitTypes.typeName);
@@ -85,16 +85,11 @@ define(['require',
                     _.each(this.traitTypes.attributeDefinitions, function(value, key) {
                         attributeData += '<span class="inputAttribute">' + _.escape(value.name) + '</span>';
                     });
-
-                    if (attributeData.length) {
-                        that.ui.addTagtext.hide();
-                        that.ui.addTagPlus.show();
-                    }
                     that.ui.showAttribute.html(attributeData);
+                    Utils.hideTitleLoader(this.$('.fontLoader'), this.$('.tagDetail'));
                 }, this);
                 this.listenTo(this.tagCollection, 'error', function(error, response) {
-                    this.ui.addTagBtn.hide();
-                    this.ui.editButton.hide();
+                    this.$('.fontLoader').hide();
                     if (response.responseJSON && response.responseJSON.error) {
                         Utils.notifyError({
                             content: response.responseJSON.error
@@ -107,24 +102,29 @@ define(['require',
 
                 }, this);
             },
+            fetchCollection: function() {
+                this.tagCollection.fetch({ reset: true });
+            },
             onRender: function() {
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.tagDetail'));
                 this.ui.saveButton.attr("disabled", "true");
                 this.ui.publishButton.prop('disabled', true);
             },
             onSaveButton: function(saveObject, message) {
+                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.tagDetail'));
                 var that = this,
                     tagModel = new VTag();
                 tagModel.set(saveObject).save(null, {
                     type: "PUT",
                     success: function(model, response) {
-                        that.tagCollection.fetch({ reset: true });
+                        that.fetchCollection();
                         Utils.notifySuccess({
                             content: message
                         });
                     },
                     error: function(model, response) {
                         if (response.responseJSON && response.responseJSON.error) {
-                            that.tagCollection.fetch({ reset: true });
+                            that.fetchCollection();
                             Utils.notifyError({
                                 content: response.responseJSON.error
                             });
@@ -164,11 +164,6 @@ define(['require',
                         });
                     });
             },
-            onCancelButtonClick: function() {
-                this.ui.description.show();
-                this.ui.editButton.show();
-                this.ui.editBox.hide();
-            },
             textAreaChangeEvent: function(view, modal) {
                 if (this.traitTypes.typeDescription == view.ui.description.val()) {
                     modal.$el.find('button.ok').prop('disabled', true);
@@ -179,7 +174,6 @@ define(['require',
             onPublishClick: function(view) {
                 this.traitTypes.typeDescription = view.ui.description.val();
                 this.onSaveButton(this.tagCollection.first().toJSON(), Messages.updateTagDescriptionMessage);
-                this.ui.description.show();
             },
             onEditButton: function(e) {
                 var that = this;

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d653777e/webapp/src/main/webapp/login.jsp
----------------------------------------------------------------------
diff --git a/webapp/src/main/webapp/login.jsp b/webapp/src/main/webapp/login.jsp
index 78f0f97..57cb32b 100644
--- a/webapp/src/main/webapp/login.jsp
+++ b/webapp/src/main/webapp/login.jsp
@@ -47,7 +47,7 @@ Redirect();
     <script src="js/modules/atlasLogin.js" ></script>
   </head>
   <body class="login" style="">
-
+<% response.setHeader("X-Frame-Options", "DENY"); %>
 <div id="wrapper">
   <div class="container-fluid">
         <div class="row">