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

[1/4] atlas git commit: ATLAS-2244 : UI - Basic Search Table not using referredEntities to render entity details

Repository: atlas
Updated Branches:
  refs/heads/master 3b9ea1dd7 -> 37be53bbb


ATLAS-2244 : UI - Basic Search Table not using referredEntities to render entity details


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

Branch: refs/heads/master
Commit: e9b9513143ee489b0521bf58c42b25d6cbc6866e
Parents: 3b9ea1d
Author: kevalbhatt <kb...@apache.org>
Authored: Wed Nov 1 15:30:40 2017 +0530
Committer: kevalbhatt <kb...@apache.org>
Committed: Wed Nov 1 19:43:20 2017 +0530

----------------------------------------------------------------------
 dashboardv2/public/js/utils/Utils.js             | 13 +++++++++++--
 .../js/views/search/SearchResultLayoutView.js    | 19 ++++++++-----------
 2 files changed, 19 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/e9b95131/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 24d35e2..492eb39 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -510,15 +510,24 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
         titleBoxEl.fadeIn();
     }
     Utils.findAndMergeRefEntity = function(attributeObject, referredEntities) {
+        var megeObject = function(obj) {
+            if (obj) {
+                if (obj.attributes) {
+                    Utils.findAndMergeRefEntity(obj.attributes, referredEntities);
+                } else if (referredEntities[obj.guid]) {
+                    _.extend(obj, referredEntities[obj.guid]);
+                }
+            }
+        }
         if (attributeObject && referredEntities) {
             _.each(attributeObject, function(obj, key) {
                 if (_.isObject(obj)) {
                     if (_.isArray(obj)) {
                         _.each(obj, function(value) {
-                            _.extend(value, referredEntities[value.guid]);
+                            megeObject(value);
                         });
                     } else {
-                        _.extend(obj, referredEntities[obj.guid]);
+                        megeObject(obj);
                     }
                 }
             });

http://git-wip-us.apache.org/repos/asf/atlas/blob/e9b95131/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 844b0dd..ffca16c 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -241,7 +241,7 @@ define(['require',
                         }
                         this.triggerUrl();
                         var attributes = this.searchCollection.filterObj.attributes;
-                        if (excludeDefaultColumn && attributes && excludeDefaultColumn.length > attributes.length) {
+                        if ((excludeDefaultColumn && attributes) && (excludeDefaultColumn.length > attributes.length || _.difference(excludeDefaultColumn, attributes).length)) {
                             this.fetchCollection(this.value);
                         }
                     }
@@ -410,10 +410,12 @@ define(['require',
                             return;
                         }
                         if (isPostMethod) {
-                            that.searchCollection.referredEntities = dataOrCollection.rnoRecordFoeferredEntities;
+                            that.searchCollection.referredEntities = dataOrCollection.referredEntities;
+                            Utils.findAndMergeRefEntity(dataOrCollection.entities, dataOrCollection.referredEntities);
                             that.searchCollection.reset(dataOrCollection.entities, { silent: true });
                         }
 
+
                         /*Next button check.
                         It's outside of Previous button else condition 
                         because when user comes from 2 page to 1 page than we need to check next button.*/
@@ -712,17 +714,14 @@ define(['require',
                                     formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
                                         fromRaw: function(rawValue, model) {
                                             var modelObj = model.toJSON();
-
                                             if (modelObj && modelObj.attributes && !_.isUndefined(modelObj.attributes[key])) {
                                                 var tempObj = {
                                                     'scope': that,
                                                     'attributeDefs': [obj],
                                                     'valueObject': {},
                                                     'isTable': false
-                                                }
-
-                                                tempObj.valueObject[key] = modelObj.attributes[key]
-                                                Utils.findAndMergeRefEntity(tempObj.valueObject, that.searchCollection.referredEntities);
+                                                };
+                                                tempObj.valueObject[key] = modelObj.attributes[key];
                                                 return CommonViewFunction.propertyTable(tempObj);
                                             }
                                         }
@@ -770,10 +769,8 @@ define(['require',
                                                 // 'attributeDefs':
                                                 'valueObject': {},
                                                 'isTable': false
-                                            }
-
-                                            tempObj.valueObject[key] = modelObj[key]
-                                            Utils.findAndMergeRefEntity(tempObj.valueObject, that.searchCollection.referredEntities);
+                                            };
+                                            tempObj.valueObject[key] = modelObj[key];
                                             return CommonViewFunction.propertyTable(tempObj);
                                         }
                                     }


[3/4] atlas git commit: ATLAS-2217 : Remove all taxonomy reference from UI

Posted by kb...@apache.org.
http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/utils/UrlLinks.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/UrlLinks.js b/dashboardv2/public/js/utils/UrlLinks.js
index 1ab7061..b69e3a8 100644
--- a/dashboardv2/public/js/utils/UrlLinks.js
+++ b/dashboardv2/public/js/utils/UrlLinks.js
@@ -48,12 +48,6 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
                 return defApiUrl.defs + '?type=' + type;
             }
         },
-        taxonomiesApiUrl: function() {
-            return this.baseUrl + '/v1/taxonomies';
-        },
-        taxonomiesTermsApiUrl: function(name) {
-            return this.baseUrl + '/v1/taxonomies' + '/' + name + '/terms';
-        },
         entitiesApiUrl: function(guid, name) {
             var entitiesUrl = this.baseUrlV2 + '/entity';
             if (guid && name) {

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/utils/Utils.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index 492eb39..47e9ac2 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -281,8 +281,6 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
                 };
                 if (Utils.getUrlState.isTagTab(options.url)) {
                     urlUpdate['tagUrl'] = options.url;
-                } else if (Utils.getUrlState.isTaxonomyTab(options.url)) {
-                    urlUpdate['taxonomyUrl'] = options.url;
                 } else if (Utils.getUrlState.isSearchTab(options.url)) {
                     urlUpdate['searchUrl'] = options.url;
                 }
@@ -311,9 +309,6 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
         isTagTab: function(url) {
             return this.getQueryUrl(url).firstValue == "tag" ? true : false;
         },
-        isTaxonomyTab: function(url) {
-            return this.getQueryUrl(url).firstValue == "taxonomy" ? true : false;
-        },
         isSearchTab: function(url) {
             return this.getQueryUrl(url).firstValue == "search" ? true : false;
         },
@@ -354,63 +349,6 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
             }
         }
     }
-    Utils.checkTagOrTerm = function(value, isTermView) {
-        if (value && _.isString(value) && isTermView) {
-            // For string break
-            if (value == "TaxonomyTerm") {
-                return {}
-            }
-            var name = _.escape(value).split('.');
-            return {
-                term: true,
-                tag: false,
-                name: name[name.length - 1],
-                fullName: value
-            }
-        }
-        if (value && _.isString(value)) {
-            value = {
-                typeName: value
-            }
-        }
-        if (_.isObject(value)) {
-            var name = "";
-            if (value && value.$typeName$) {
-                name = value.$typeName$;
-            } else if (value && value.typeName) {
-                name = value.typeName;
-            }
-            if (name === "TaxonomyTerm") {
-                return {}
-            }
-            name = _.escape(name).split('.');
-
-            var trem = false;
-            if (value['taxonomy.namespace']) {
-                trem = true;
-            } else if (value.values && value.values['taxonomy.namespace']) {
-                trem = true;
-            } else if (Globals.taxonomy && name.length > 1) {
-                trem = true; // Temp fix
-            }
-
-            if (trem) {
-                return {
-                    term: true,
-                    tag: false,
-                    name: name[name.length - 1],
-                    fullName: name.join('.')
-                }
-            } else {
-                return {
-                    term: false,
-                    tag: true,
-                    name: name[name.length - 1],
-                    fullName: name.join('.')
-                }
-            }
-        }
-    }
     Utils.getName = function() {
         return Utils.extractKeyValueFromEntity.apply(this, arguments).name;
     }

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/business_catalog/AddTermLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/AddTermLayoutView.js b/dashboardv2/public/js/views/business_catalog/AddTermLayoutView.js
deleted file mode 100644
index 15915d3..0000000
--- a/dashboardv2/public/js/views/business_catalog/AddTermLayoutView.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/AddTermView_tmpl',
-    'utils/Utils',
-    'collection/VCatalogList'
-], function(require, Backbone, AddTermViewTmpl, Utils, VCatalogList) {
-    'use strict';
-
-    var AddTermLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends AddTermView */
-        {
-            _viewName: 'AddTermLayoutView',
-
-            template: AddTermViewTmpl,
-
-            templateHelpers: function() {
-                return {
-                    defaultTerm: this.defaultTerm
-                };
-            },
-
-            /** Layout sub regions */
-            regions: {},
-            /** ui selector cache */
-            ui: {
-                termName: '[data-id="termName"]',
-                termDetail: '[data-id="termDetail"]'
-            },
-            /** ui events hash */
-            events: function() {
-                var events = {};
-                return events;
-            },
-            /**
-             * intialize a new BusinessCatalogLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'url', 'model','defaultTerm'));
-            },
-            bindEvents: function() {},
-            onRender: function() {}
-        });
-    return AddTermLayoutView;
-
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index 307b244..0000000
--- a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/AddTermToEntityLayoutView_tmpl',
-    'utils/Utils',
-    'modules/Modal',
-    'collection/VCatalogList',
-    'utils/CommonViewFunction',
-    'utils/Messages',
-    'utils/Enums'
-], function(require, Backbone, AddTermToEntityLayoutViewTmpl, Utils, Modal, VCatalogList, CommonViewFunction, Messages, Enums) {
-    'use strict';
-
-    var AddTermToEntityLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends AddTermToEntityLayoutView */
-        {
-            _viewName: 'AddTermToEntityLayoutView',
-
-            template: AddTermToEntityLayoutViewTmpl,
-
-            /** Layout sub regions */
-            regions: {
-                RTreeLayoutView: "#r_treeLayoutView"
-            },
-            /** ui selector cache */
-            ui: {},
-            /** ui events hash */
-            events: function() {
-                var events = {};
-                return events;
-            },
-            /**
-             * intialize a new AddTermToEntityLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'guid', 'modalCollection', 'callback', 'multiple', 'showLoader', 'hideLoader'));
-                this.vCatalogList = new VCatalogList();
-                var that = this;
-                this.modal = new Modal({
-                    title: 'Assign Term',
-                    content: this,
-                    okText: 'Assign',
-                    cancelText: "Cancel",
-                    allowCancel: true,
-                }).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) {
-                                if (that.showLoader) {
-                                    that.showLoader();
-                                }
-                            }
-                            var obj = {
-                                termName: termName,
-                                guid: that.multiple[i].id,
-                                deletedEntity: Enums.entityStateReadOnly[that.multiple[i].model.status],
-                                entityName: Utils.getName(that.multiple[i].model)
-                            };
-                            if (obj.deletedEntity) {
-                                Utils.notifyError({
-                                    content: obj.entityName + Messages.assignDeletedEntity
-                                });
-                                if (that.multiple.length === 1 || (that.multiple.length == (i + 1) && that.asyncFetchCounter == 0)) {
-                                    that.hideLoader();
-                                }
-                            } else {
-                                CommonViewFunction.saveTermToAsset(obj, that);
-                            }
-
-                        }
-                    } else {
-                        that.asyncFetchCounter = 0;
-                        if (that.showLoader) {
-                            that.showLoader();
-                        }
-                        CommonViewFunction.saveTermToAsset({
-                            termName: termName,
-                            guid: this.guid
-                        }, that);
-                    }
-                });
-                this.on('closeModal', function() {
-                    this.modal.trigger('cancel');
-                });
-            },
-            onRender: function() {
-                this.renderTreeLayoutView();
-            },
-            renderTreeLayoutView: function() {
-                var that = this;
-                require(['views/business_catalog/TreeLayoutView'], function(TreeLayoutView) {
-                    that.RTreeLayoutView.show(new TreeLayoutView({
-                        url: that.url,
-                        viewBased: false
-                    }));
-                });
-            }
-        });
-    return AddTermToEntityLayoutView;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index 6eb5b8b..0000000
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogDetailLayoutView.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/BusinessCatalogDetailLayoutView_tmpl',
-    'utils/Utils',
-    'models/VEntity',
-    'models/VCatalog',
-    'utils/Messages'
-], function(require, Backbone, BusinessCatalogDetailLayoutViewTmpl, Utils, VEntity, VCatalog, Messages) {
-    'use strict';
-
-    var BusinessCatalogDetailLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends BusinessCatalogDetailLayoutView */
-        {
-            _viewName: 'BusinessCatalogDetailLayoutView',
-
-            template: BusinessCatalogDetailLayoutViewTmpl,
-
-            /** Layout sub regions */
-            regions: {},
-            /** ui selector cache */
-            ui: {
-                title: '[data-id="title"]',
-                editButton: '[data-id="editButton"]',
-                description: '[data-id="description"]',
-                editBox: '[data-id="editBox"]',
-                createDate: '[data-id="createDate"]'
-            },
-            /** ui events hash */
-            events: function() {
-                var events = {};
-                events["click " + this.ui.editButton] = 'onEditButton';
-                events["click " + this.ui.cancelButton] = 'onCancelButtonClick';
-                return events;
-            },
-            /**
-             * intialize a new BusinessCatalogDetailLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'url', 'collection'));
-                this.bindEvents();
-            },
-            bindEvents: function() {
-                var that = this;
-                this.listenTo(this.collection, 'error', function(model, response) {
-                    this.$('.fontLoader').hide();
-                    if (response && response.responseJSON && response.responseJSON.message) {
-                        Utils.notifyError({
-                            content: response.responseJSON.message
-                        });
-                    }
-
-                }, this);
-                this.listenTo(this.collection, 'reset', function() {
-                    this.$('.fontLoader').hide();
-                    this.$('.hide').removeClass('hide');
-                    this.model = this.collection.first();
-                    var name = this.model.get('name'),
-                        description = this.model.get('description'),
-                        createdDate = this.model.get('creation_time');
-                    if (name) {
-                        this.ui.title.show();
-                        this.termName = Utils.checkTagOrTerm(name, true);
-                        this.ui.title.html('<span>' + this.termName.name + '</span>');
-                    } else {
-                        this.ui.title.hide();
-                    }
-                    if (description) {
-                        this.ui.description.show();
-                        this.ui.description.html('<span>' + _.escape(description) + '</span>');
-                    } else {
-                        this.ui.description.hide();
-                    }
-                    if (createdDate) {
-                        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;
-                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.catlogDetail'));
-            },
-            fetchCollection: function() {
-                this.collection.fetch({ reset: true });
-            },
-            onEditButton: function(e) {
-                var that = this;
-                $(e.currentTarget).blur();
-                require([
-                    'views/tag/CreateTagLayoutView',
-                    'modules/Modal'
-                ], function(CreateTagLayoutView, Modal) {
-                    var view = new CreateTagLayoutView({ 'termCollection': that.collection, 'descriptionData': that.model.get('description'), 'tag': _.unescape(that.termName.name) });
-                    var modal = new Modal({
-                        title: 'Edit Term',
-                        content: view,
-                        cancelText: "Cancel",
-                        okText: 'Save',
-                        allowCancel: true,
-                    }).open();
-                    view.ui.description.on('keyup', function(e) {
-                        that.textAreaChangeEvent(view, modal);
-                    });
-                    modal.$el.find('button.ok').prop('disabled', true);
-                    modal.on('ok', function() {
-                        that.onSaveDescriptionClick(view);
-                    });
-                    modal.on('closeModal', function() {
-                        modal.trigger('cancel');
-                    });
-                });
-            },
-            textAreaChangeEvent: function(view, modal) {
-                if (view.description == view.ui.description.val()) {
-                    modal.$el.find('button.ok').prop('disabled', true);
-                } else {
-                    modal.$el.find('button.ok').prop('disabled', false);
-                }
-            },
-            onSaveDescriptionClick: function(view) {
-                view.description = view.ui.description.val();
-                this.onSaveButton(this.collection.first().toJSON(), Messages.tag.updateTermDescriptionMessage, view);
-                this.ui.description.show();
-            },
-            onSaveButton: function(saveObject, message, view) {
-                var that = this,
-                    termModel = new VCatalog();
-                termModel.url = function() {
-                    return that.collection.url;
-                };
-                Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.catlogDetail'));
-                termModel.set({
-                    "description": view.ui.description.val()
-                }).save(null, {
-                    type: "PUT",
-                    success: function(model, response) {
-                        that.collection.fetch({ reset: true });
-                        Utils.notifySuccess({
-                            content: message
-                        });
-                    }
-                });
-            }
-        });
-    return BusinessCatalogDetailLayoutView;
-
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
deleted file mode 100644
index 4994372..0000000
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogHeader.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'hbs!tmpl/business_catalog/BusinessCatalogHeader',
-    'utils/CommonViewFunction',
-    'utils/Globals'
-], function(require, tmpl, CommonViewFunction, Globals) {
-    'use strict';
-
-    var BusinessCatalogHeader = Marionette.LayoutView.extend({
-        template: tmpl,
-        templateHelpers: function() {},
-        regions: {},
-        events: {},
-        initialize: function(options) {
-            _.extend(this, _.pick(options, 'url', 'collection'));
-            this.value = [];
-        },
-        /**
-         * After Page Render createBrudCrum called.
-         * @return {[type]} [description]
-         */
-        render: function() {
-            var that = this;
-            $(this.el).html(this.template());
-            if (Globals.userLogedIn.status) {
-                that.$('.userName').text(Globals.userLogedIn.response.userName);
-            }
-            var that = this;
-            if (this.url) {
-                this.value = CommonViewFunction.breadcrumbUrlMaker(this.url);
-            }
-            this.listenTo(this.collection, 'reset', function() {
-                setTimeout(function() {
-                    that.createBrudCrum();
-                }, 0);
-
-            }, this);
-            return this;
-        },
-        createBrudCrum: function() {
-            var li = "",
-                value = this.value,
-                that = this;
-            CommonViewFunction.breadcrumbMaker({ urlList: this.value, scope: this.$('.breadcrumb') });
-        }
-    });
-    return BusinessCatalogHeader;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/business_catalog/BusinessCatalogLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/BusinessCatalogLayoutView.js b/dashboardv2/public/js/views/business_catalog/BusinessCatalogLayoutView.js
deleted file mode 100644
index e7c657f..0000000
--- a/dashboardv2/public/js/views/business_catalog/BusinessCatalogLayoutView.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/BusinessCatalogLayoutView_tmpl'
-], function(require, Backbone, BusinessCatalogLayoutViewTmpl) {
-    'use strict';
-
-    var BusinessCatalogLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends BusinessCatalogLayoutView */
-        {
-            _viewName: 'BusinessCatalogLayoutView',
-
-            template: BusinessCatalogLayoutViewTmpl,
-
-            /** Layout sub regions */
-            regions: {
-                RTreeLayoutView: "#r_treeLayoutView"
-            },
-            /** ui selector cache */
-            ui: {},
-            /** ui events hash */
-            events: function() {},
-            /**
-             * intialize a new BusinessCatalogLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'url'));
-            },
-            bindEvents: function() {},
-            onRender: function() {
-                this.renderTreeLayoutView();
-            },
-            renderTreeLayoutView: function() {
-                var that = this;
-                require(['views/business_catalog/TreeLayoutView'], function(TreeLayoutView) {
-                    that.RTreeLayoutView.show(new TreeLayoutView({
-                        url: that.url,
-                        viewBased: true
-                    }));
-                });
-            },
-            manualRender: function(url, isParent, back) {
-                this.RTreeLayoutView.currentView.manualRender(url, isParent, back);
-            }
-        });
-    return BusinessCatalogLayoutView;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/business_catalog/MoveTermLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/MoveTermLayoutView.js b/dashboardv2/public/js/views/business_catalog/MoveTermLayoutView.js
deleted file mode 100644
index aa0d717..0000000
--- a/dashboardv2/public/js/views/business_catalog/MoveTermLayoutView.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/MoveTermLayoutView_tmpl',
-    'utils/Utils'
-], function(require, Backbone, MoveTermLayoutViewTmpl, Utils) {
-    'use strict';
-
-    var MoveTermLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends MoveTermLayoutView */
-        {
-            _viewName: 'MoveTermLayoutView',
-
-            template: MoveTermLayoutViewTmpl,
-            /** Layout sub regions */
-            regions: {},
-            /** ui selector cache */
-            ui: {
-                moveTree: '[data-id="moveTree"]'
-            },
-            /** ui events hash */
-            events: function() {
-                var events = {};
-                return events;
-            },
-            /**
-             * intialize a new MoveTermLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'taxanomyCollection'));
-            },
-            bindEvents: function() {},
-            onRender: function() {}
-        });
-    return MoveTermLayoutView;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js b/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
deleted file mode 100644
index 3dbaab4..0000000
--- a/dashboardv2/public/js/views/business_catalog/SideNavLayoutView.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'hbs!tmpl/business_catalog/SideNavLayoutView_tmpl',
-    'utils/Utils',
-    'utils/Globals',
-    'utils/UrlLinks'
-], function(require, tmpl, Utils, Globals, UrlLinks) {
-    'use strict';
-
-    var SideNavLayoutView = Marionette.LayoutView.extend({
-        template: tmpl,
-
-        regions: {
-            RBusinessCatalogLayoutView: "#r_businessCatalogLayoutView",
-            RTagLayoutView: "#r_tagLayoutView",
-            RSearchLayoutView: "#r_searchLayoutView",
-        },
-        ui: {
-            tabs: '.tabs li a',
-        },
-        templateHelpers: function() {
-            return {
-                taxonomy: Globals.taxonomy,
-                tabClass: this.tabClass,
-                apiBaseUrl: UrlLinks.apiBaseUrl
-            };
-        },
-        events: function() {
-            var events = {},
-                that = this;
-            events["click " + this.ui.tabs] = function(e) {
-                var urlString = "",
-                    elementName = $(e.currentTarget).data(),
-                    tabStateUrls = Globals.saveApplicationState.tabState,
-                    urlStateObj = Utils.getUrlState,
-                    hashUrl = Utils.getUrlState.getQueryUrl().hash;
-
-                if (urlStateObj.isTagTab()) {
-                    if (hashUrl != tabStateUrls.tagUrl) {
-                        Globals.saveApplicationState.tabState.tagUrl = hashUrl;
-                    }
-                } else if (urlStateObj.isSearchTab()) {
-                    if (hashUrl != tabStateUrls.searchUrl) {
-                        Globals.saveApplicationState.tabState.searchUrl = hashUrl;
-                    }
-                } else if (urlStateObj.isTaxonomyTab()) {
-                    if (hashUrl != tabStateUrls.taxonomyUrl) {
-                        Globals.saveApplicationState.tabState.isTaxonomyTab = hashUrl;
-                    }
-                }
-
-                if (elementName.name == "tab-tag") {
-                    urlString = tabStateUrls.tagUrl; //'#!/tag';
-                } else if (elementName.name == "tab-taxonomy") {
-                    urlString = tabStateUrls.taxonomyUrl; // '#!/taxonomy';
-                } else if (elementName.name == "tab-search") {
-                    urlString = tabStateUrls.searchUrl; // '#!/search';
-                }
-                Utils.setUrl({
-                    url: urlString,
-                    mergeBrowserUrl: false,
-                    trigger: true,
-                    updateTabState: true
-                });
-            };
-            return events;
-        },
-        initialize: function(options) {
-            _.extend(this, _.pick(options, 'url', 'value', 'tag', 'selectFirst', 'classificationDefCollection', 'typeHeaders', 'searchVent', 'entityDefCollection', 'enumDefCollection', 'searchTableColumns', 'searchTableFilters'));
-            if (Globals.taxonomy) {
-                this.tabClass = "tab col-sm-4";
-            } else {
-                this.tabClass = "tab col-sm-6";
-            }
-        },
-        onRender: function() {
-            this.renderTagLayoutView();
-            this.renderSearchLayoutView();
-            if (Globals.taxonomy) {
-                this.rendeBusinessCatalogLayoutView();
-            }
-            this.selectTab();
-
-        },
-        rendeBusinessCatalogLayoutView: function() {
-            var that = this;
-            require(['views/business_catalog/BusinessCatalogLayoutView'], function(BusinessCatalogLayoutView) {
-                that.RBusinessCatalogLayoutView.show(new BusinessCatalogLayoutView({
-                    url: that.url
-                }));
-            });
-        },
-        renderTagLayoutView: function() {
-            var that = this;
-            require(['views/tag/TagLayoutView'], function(TagLayoutView) {
-                that.RTagLayoutView.show(new TagLayoutView({
-                    collection: that.classificationDefCollection,
-                    tag: that.tag,
-                    value: that.value,
-                    typeHeaders: that.typeHeaders
-                }));
-            });
-        },
-        renderSearchLayoutView: function() {
-            var that = this;
-            require(['views/search/SearchLayoutView'], function(SearchLayoutView) {
-                that.RSearchLayoutView.show(new SearchLayoutView({
-                    value: that.value,
-                    searchVent: that.searchVent,
-                    typeHeaders: that.typeHeaders,
-                    entityDefCollection: that.entityDefCollection,
-                    enumDefCollection: that.enumDefCollection,
-                    classificationDefCollection: that.classificationDefCollection,
-                    searchTableColumns: that.searchTableColumns,
-                    searchTableFilters: that.searchTableFilters
-                }));
-            });
-        },
-        selectTab: function() {
-            if (Utils.getUrlState.isTagTab()) {
-                this.$('.tabs').find('li a[aria-controls="tab-tag"]').parents('li').addClass('active').siblings().removeClass('active');
-                this.$('.tab-content').find('div#tab-tag').addClass('active').siblings().removeClass('active');
-            } else if (Utils.getUrlState.isTaxonomyTab()) {
-                this.$('.tabs').find('li a[aria-controls="tab-taxonomy"]').parents('li').addClass('active').siblings().removeClass('active');
-                this.$('.tab-content').find('div#tab-taxonomy').addClass('active').siblings().removeClass('active');
-            } else if (Utils.getUrlState.isSearchTab() || (Utils.getUrlState.isDetailPage()) || Utils.getUrlState.isInitial()) {
-                this.$('.tabs').find('li a[aria-controls="tab-search"]').parents('li').addClass('active').siblings().removeClass('active');
-                this.$('.tab-content').find('div#tab-search').addClass('active').siblings().removeClass('active');
-            }
-        },
-    });
-    return SideNavLayoutView;
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index 90b87be..0000000
--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+++ /dev/null
@@ -1,629 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/business_catalog/TreeLayoutView_tmpl',
-    'utils/Utils',
-    'collection/VCatalogList',
-    'utils/CommonViewFunction',
-    'utils/Messages',
-    'utils/UrlLinks'
-], function(require, Backbone, TreeLayoutView_tmpl, Utils, VCatalogList, CommonViewFunction, Messages, UrlLinks) {
-    'use strict';
-
-    var TreeLayoutView = Backbone.Marionette.LayoutView.extend(
-        /** @lends TreeLayoutView */
-        {
-            _viewName: 'TreeLayoutView',
-
-            template: TreeLayoutView_tmpl,
-
-            /** Layout sub regions */
-            regions: {},
-            /** ui selector cache */
-            ui: {
-                Parent: '[data-id="Parent"]',
-                childList: '[data-id="childList"]',
-                liClick: 'li a[data-href]',
-                backTaxanomy: '[data-id="backTaxanomy"]',
-                expandArrow: '[data-id="expandArrow"]',
-                searchTermInput: '[data-id="searchTermInput"]',
-                refreshTaxanomy: '[data-id="refreshTaxanomy"]',
-                descriptionAssign: '[data-id="descriptionAssign"]',
-            },
-            /** ui events hash */
-            events: function() {
-                var events = {};
-                events['dblclick ' + this.ui.liClick] = function(e) {
-                    this.changeArrowState(e);
-                };
-                events['click ' + this.ui.liClick] = function(e) {
-                    var that = this;
-                    that.addActiveClass(e);
-                    that.url = $(e.currentTarget).data('href');
-                    if (this.viewBased) {
-                        Utils.setUrl({
-                            url: '#!/taxonomy/detailCatalog' + that.url,
-                            mergeBrowserUrl: false,
-                            trigger: true,
-                            updateTabState: true
-                        });
-                    }
-                };
-                events['click ' + this.ui.backTaxanomy] = 'backButtonTaxanomy';
-                events['click ' + this.ui.refreshTaxanomy] = 'refreshButtonTaxanomy';
-                events['click ' + this.ui.expandArrow] = 'changeArrowState';
-                events["change " + this.ui.searchTermInput] = function() {
-                    var termUrl = this.termCollection.url.split("/", 5).join("/") + "/" + this.ui.searchTermInput.val().split(".").join("/terms/");
-                    this.fetchCollection(termUrl, true);
-                    if (this.viewBased) {
-                        Utils.setUrl({
-                            url: "#!/taxonomy/detailCatalog" + termUrl,
-                            mergeBrowserUrl: false,
-                            trigger: true,
-                            updateTabState: true
-                        });
-                    }
-                };
-                return events;
-            },
-            /**
-             * intialize a new TreeLayoutView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, _.pick(options, 'url', 'viewBased'));
-                this.parentCollection = new VCatalogList();
-                this.childCollection = new VCatalogList();
-                this.taxanomy = new VCatalogList();
-                this.termCollection = new VCatalogList();
-            },
-            bindEvents: function() {
-                var that = this;
-                this.listenTo(this.parentCollection, 'reset', function() {
-                    if (this.parentCollection.fullCollection.models.length) {
-                        this.generateTree(true);
-                    } else {
-                        if (Utils.getUrlState.isTaxonomyTab() || Utils.getUrlState.isInitial()) {
-                            this.createDefaultTaxonomy();
-                        }
-                    }
-                }, this);
-                this.listenTo(this.childCollection, 'reset', function() {
-                    this.generateTree();
-                }, this);
-                this.listenTo(this.taxanomy, 'reset', function() {
-                    this.searchResult();
-                }, this);
-                this.listenTo(this.termCollection, 'reset', function() {
-                    this.termSearchData();
-                }, this);
-                this.listenTo(this.childCollection, 'error', function(model, response) {
-                    this.hideLoader();
-                }, this);
-                this.listenTo(this.parentCollection, 'error', function(model, response) {
-                    this.hideLoader();
-                }, this);
-            },
-            onRender: function() {
-                var that = this;
-                this.bindEvents();
-                that.ui.backTaxanomy.hide();
-                this.fetchCollection(this.url, true);
-                this.fetchTaxanomyCollections();
-                if (!this.viewBased) {
-                    this.ui.descriptionAssign.show();
-                } else {
-                    this.ui.descriptionAssign.hide();
-                }
-            },
-            backButtonTaxanomy: function(e) {
-                var that = this;
-                this.backButton = true;
-                var dataURL = this.$('.taxonomyTree').find('li[data-id="Parent"]').find("a").data('href').split("/terms");
-                var backUrl = dataURL.pop();
-                if (dataURL.join("/terms").length) {
-                    this.ui.backTaxanomy.show();
-                    var currentURL = "#!/taxonomy/detailCatalog" + dataURL.join("/terms");
-                    this.fetchCollection(dataURL.join("/terms"), true);
-                    this.url = dataURL.join("/terms");
-                    if (this.viewBased) {
-                        Utils.setUrl({
-                            url: currentURL,
-                            mergeBrowserUrl: false,
-                            trigger: true,
-                            updateTabState: true
-                        });
-                    }
-                }
-            },
-            manualRender: function(url) {
-                var splitUrl = this.url.split('/terms');
-                if (url && this.url != url) {
-                    if (splitUrl.length > 1 && splitUrl[splitUrl.length - 1] == "") {
-                        var checkUrl = splitUrl;
-                        checkUrl.pop();
-                        if (url != checkUrl) {
-                            this.fetchCollection(url, true);
-                        }
-                    } else if (Utils.getUrlState.getQueryParams() && Utils.getUrlState.getQueryParams().load == "true") {
-                        if (this.viewBased) {
-                            Utils.setUrl({
-                                url: "#!/taxonomy/detailCatalog" + url,
-                                mergeBrowserUrl: false,
-                                trigger: false,
-                                updateTabState: true
-                            });
-                        }
-                        this.fetchCollection(url, true);
-                    } else {
-                        this.fetchCollection(url, true);
-                    }
-                }
-                if (!url && Utils.getUrlState.isTaxonomyTab()) {
-                    this.selectFirstElement();
-                }
-            },
-            changeArrowState: function(e) {
-                var scope = this.$('[data-id="expandArrow"]');
-                if (e) {
-                    scope = $(e.currentTarget);
-                }
-                if (scope.is('a')) {
-                    var url = scope.data('href');
-                    scope = scope.parent().find("i.toggleArrow");
-                } else if (scope.is('i')) {
-                    var url = scope.parent().find("a").data('href');
-                }
-                if (scope.hasClass('fa-angle-down')) {
-                    scope.toggleClass('fa-angle-right fa-angle-down');
-                    this.ui.childList.hide();
-                } else {
-                    if (e && $(e.currentTarget).parents('li.parentChild').length) {
-                        scope.parent('li').find('.tools .taxanomyloader').show();
-                        this.url = url;
-                        this.fetchCollection(url, true);
-                        if (this.viewBased) {
-                            Utils.setUrl({
-                                url: "#!/taxonomy/detailCatalog" + url,
-                                mergeBrowserUrl: false,
-                                trigger: true,
-                                updateTabState: true
-                            });
-                        }
-                    } else {
-                        scope.toggleClass('fa-angle-right fa-angle-down');
-                        this.ui.childList.show();
-                    }
-                }
-            },
-            fetchCollection: function(url, isParent) {
-                if (url) {
-                    this.url = url;
-                } else {
-                    var parentURL = this.ui.Parent.find('a').data('href');
-                    if (parentURL) {
-                        this.url = parentURL;
-                    } else {
-                        this.url = UrlLinks.taxonomiesApiUrl();
-                    }
-                }
-                this.showLoader();
-                if (isParent) {
-                    this.parentCollection.url = this.url;
-                    this.parentCollection.fullCollection.reset(undefined, { silent: true });
-                    this.parentCollection.fetch({ reset: true, cache: true });
-                } else {
-                    this.childCollection.url = this.url + "?hierarchy/path:.";
-                    this.childCollection.fullCollection.reset(undefined, { silent: true });
-                    this.childCollection.fetch({ reset: true, cache: true });
-                }
-            },
-            showLoader: function() {
-                this.$('.taxonomyTree').find('li.active .tools .taxanomyloader').show();
-                this.$('.contentLoading').show();
-            },
-            hideLoader: function() {
-                this.$('.taxanomyloader').hide();
-                this.$('.contentLoading').hide();
-            },
-            addActiveClass: function(e) {
-                this.$('ul.taxonomyTree').find('li').removeClass('active');
-                if (e.jquery) {
-                    e.parent('li').addClass('active');
-                } else {
-                    if (e.currentTarget) {
-                        $(e.currentTarget).parent('li').addClass('active');
-                    } else {
-                        if ($(e).parent.length) {
-                            $(e).parent('li').addClass('active');
-                        } else {
-                            $(e).parents('li').addClass('active');
-                        }
-                    }
-                }
-            },
-            fetchTaxanomyCollections: function() {
-                this.taxanomy.fetch({ reset: true });
-            },
-            refreshButtonTaxanomy: function() {
-                this.fetchTaxanomyCollections();
-                var url = "";
-                if (this.$('.taxonomyTree').find('.active').parents('.parentChild').length) {
-                    url = this.$('.taxonomyTree').find('.active a').data('href').split("/").slice(0, -2).join("/");
-                    this.refresh = this.$('.taxonomyTree').find('.active a').data('href');
-                } else {
-                    url = this.$('.taxonomyTree').find('.active a').data('href');
-                    this.refresh = this.$('.taxonomyTree').find('.active a').data('href');
-                }
-                this.fetchCollection(url, true);
-            },
-            searchResult: function() {
-                var that = this;
-                _.each(this.taxanomy.models, function(model, key) {
-                    var name = model.get('name');
-                    that.termCollection.url = UrlLinks.taxonomiesTermsApiUrl(name)
-                });
-                this.termCollection.fetch({ reset: true });
-            },
-            termSearchData: function() {
-                var that = this;
-                var str = '<option></option>';
-                this.termCollection.fullCollection.comparator = function(model) {
-                    return model.get('name');
-                };
-                this.termCollection.fullCollection.sort().each(function(model) {
-                    str += '<option>' + model.get('name') + '</option>';
-                });
-                this.ui.searchTermInput.html(str);
-                // this.ui.searchTermInput.setAttribute('data-href' : that.termCollection.url);
-                this.ui.searchTermInput.select2({
-                    placeholder: "Search Term",
-                    allowClear: true
-                });
-            },
-            onSearchTerm: function() {
-                Utils.setUrl({
-                    url: '#!/search/searchResult',
-                    urlParams: {
-                        query: this.$('.taxonomyTree').find('li.active').find("a").data('name'),
-                        searchType: "dsl",
-                        dslChecked: true
-                    },
-                    mergeBrowserUrl: false,
-                    trigger: true,
-                    updateTabState: true
-                });
-            },
-            selectFirstElement: function() {
-                var dataURL = this.$('.taxonomyTree').find('li[data-id="Parent"]').find("a").data('href');
-                if (dataURL) {
-                    this.url = dataURL;
-                    if (this.viewBased && Utils.getUrlState.isTaxonomyTab()) {
-                        Utils.setUrl({
-                            url: "#!/taxonomy/detailCatalog" + dataURL,
-                            mergeBrowserUrl: false,
-                            trigger: true,
-                            updateTabState: true
-                        });
-                    }
-                }
-            },
-            generateTree: function(isParent) {
-                var parentLi = "",
-                    childLi = "",
-                    that = this;
-
-                function createTaxonomy(url) {
-                    var href = false;
-                    _.each(that.parentCollection.fullCollection.models, function(model, key) {
-
-                        if (model.get('terms')) {
-                            href = model.get('terms').href;
-                        } else if (model.get('href')) {
-                            href = model.get('href') + "/terms";
-                        }
-                        var hrefUrl = "/api" + model.get('href').split("/api")[1];
-                        if (hrefUrl) {
-                            var backUrlCheck = hrefUrl.split("taxonomies/");
-                            if (backUrlCheck.length > 1) {
-                                if (backUrlCheck[1].split("/terms").length <= 1) {
-                                    that.ui.backTaxanomy.hide();
-                                } else {
-                                    that.ui.backTaxanomy.show();
-                                }
-                            }
-                        }
-                        var name = Utils.checkTagOrTerm(model.get('name'), true);
-                        if (name.name) {
-                            if (that.viewBased) {
-                                parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a>';
-                            } else {
-                                parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a>';
-                            }
-                        }
-                    });
-                    if (href) {
-                        var hrefUrl = "/api" + href.split("/api")[1];
-                        that.fetchCollection(hrefUrl);
-                    }
-                    that.ui.childList.html('');
-                    that.ui.Parent.addClass('active');
-                    that.ui.Parent.html(parentLi);
-                }
-
-                function createTerm() {
-                    that.childCollection.fullCollection.comparator = function(model) {
-                        return model.get('name').toLowerCase();
-                    };
-                    that.childCollection.fullCollection.sort().each(function(model, key) {
-                        var name = Utils.checkTagOrTerm(model.get('name'), true);
-                        var hrefUrl = "/api" + model.get('href').split("/api")[1];
-                        if (name.name) {
-                            if (that.viewBased) {
-                                childLi += '<li class="children"><div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover" ></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a></li>';
-                            } else {
-                                childLi += '<li class="children"><div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a></li>';
-                            }
-                        }
-                    });
-                    that.ui.childList.html(childLi);
-                }
-                if (isParent) {
-                    createTaxonomy();
-                } else {
-                    this.changeArrowState();
-                    createTerm();
-                    if (Utils.getUrlState.isInitial() || Utils.getUrlState.getQueryUrl().lastValue == "taxonomy") {
-                        this.selectFirstElement();
-                    }
-                    if (this.refresh) {
-                        this.addActiveClass(this.$('.taxonomyTree').find('a[data-href="' + this.refresh + '"]'));
-                        this.refresh = undefined;
-                    }
-                }
-                this.hideLoader();
-                if (this.viewBased) {
-
-
-                    Utils.generatePopover({
-                        el: this.$('.termPopover'),
-                        container: this.$el,
-                        popoverOptions: {
-                            content: function() {
-                                var lis = "<li class='listTerm'><i class='fa fa-plus'></i> <a href='javascript:void(0)' data-fn='onAddTerm'>Create Subterm</a></li>";
-                                var termDataURL = Utils.getUrlState.getQueryUrl().hash.split("terms");
-                                if (termDataURL.length > 1) {
-                                    lis = "<li class='listTerm' ><i class='fa fa-search'></i> <a href='javascript:void(0)' data-fn='onSearchTerm'>Search Assets</a></li>" + lis;
-                                    lis += "<li class='listTerm'><i class='fa fa-trash'></i> <a href='javascript:void(0)' data-fn='deleteTerm'>Delete Term</a></li>";
-                                }
-                                return "<ul>" + lis + "</ul>";
-                            }
-                        }
-                    }).parent('.tools').off('click').on('click', 'li', function(e) {
-                        e.stopPropagation();
-                        that.$('.termPopover').popover('hide');
-                        that[$(this).find('a').data('fn')](e);
-                    });
-                }
-            },
-            onAddTerm: function(e) {
-                var that = this;
-                require([
-                    'views/business_catalog/AddTermLayoutView',
-                    'modules/Modal'
-                ], function(AddTermLayoutView, Modal) {
-                    var view = new AddTermLayoutView({
-                        url: that.$('.taxonomyTree').find('li.active').find(">a[data-name]").data("href"),
-                        model: new that.parentCollection.model()
-                    });
-                    var modal = new Modal({
-                        title: 'Create Sub-term',
-                        content: view,
-                        okCloses: true,
-                        showFooter: true,
-                        allowCancel: true,
-                        okText: 'Create',
-                    }).open();
-                    modal.$el.find('button.ok').attr('disabled', true);
-                    modal.on('ok', function() {
-                        that.saveAddTerm(view);
-                    });
-                    view.ui.termName.on('keyup', function() {
-                        if (this.value.indexOf(' ') >= 0) {
-                            modal.$el.find('button.ok').prop('disabled', true);
-                            view.ui.termName.addClass("addTermDisable");
-                            view.$('.alertTerm').show();
-                        } else {
-                            modal.$el.find('button.ok').prop('disabled', false);
-                            view.ui.termName.removeClass("addTermDisable");
-                            view.$('.alertTerm').hide();
-                        }
-                    });
-                    view.on('closeModal', function() {
-                        modal.trigger('cancel');
-                    });
-
-                });
-            },
-            saveAddTerm: function(view) {
-                var that = this;
-                var url = view.url;
-                view.model.url = url + "/terms/" + view.ui.termName.val();
-                this.showLoader();
-                view.model.set({ description: view.ui.termDetail.val() }).save(null, {
-                    success: function(model, response) {
-                        that.create = true;
-                        that.fetchTaxanomyCollections();
-                        that.fetchCollection(url, true);
-                        Utils.notifySuccess({
-                            content: "Term " + view.ui.termName.val() + Messages.addSuccessMessage
-                        });
-                    },
-                    complete: function() {
-                        that.hideLoader();
-                    }
-                });
-            },
-            deleteTerm: function(e) {
-                var termName = this.$('.taxonomyTree').find('li.active a').data("name"),
-                    assetName = $(e.target).data("assetname"),
-                    that = this,
-                    modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Delete: " + "<b>" + _.escape(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);
-                });
-                modal.on('closeModal', function() {
-                    modal.trigger('cancel');
-                });
-            },
-            deleteTermData: function(e) {
-                var that = this;
-                this.showLoader();
-                require(['models/VCatalog'], function(VCatalog) {
-                    var termModel = new VCatalog(),
-                        url = that.$('.taxonomyTree').find('li.active a').data('href');
-                    var termName = that.$('.taxonomyTree').find('li.active a').text();
-                    termModel.deleteTerm(url, {
-                        skipDefaultError: true,
-                        success: function(data) {
-                            Utils.notifySuccess({
-                                content: "Term " + termName + Messages.deleteSuccessMessage
-                            });
-                            var termURL = url.split("/").slice(0, -2).join("/");
-                            if (that.viewBased) {
-                                Utils.setUrl({
-                                    url: "#!/taxonomy/detailCatalog" + termURL,
-                                    mergeBrowserUrl: false,
-                                    trigger: true,
-                                    updateTabState: true
-                                });
-                            }
-                            that.fetchCollection(termURL, true);
-                        },
-                        cust_error: function(model, response) {
-                            var message = "Term " + termName + Messages.deleteErrorMessage;
-                            if (response && response.responseJSON) {
-                                message = response.responseJSON.errorMessage;
-                            }
-                            Utils.notifyError({
-                                content: message
-                            });
-                        },
-                        complete: function() {
-                            that.hideLoader();
-                        }
-                    });
-                });
-            },
-            moveTerm: function() {
-                var that = this;
-                require([
-                    'views/business_catalog/MoveTermLayoutView',
-                    'modules/Modal'
-                ], function(MoveTermLayoutView, Modal) {
-                    var view = new MoveTermLayoutView({
-                        taxanomyCollection: that.collection
-                    });
-                    var modal = new Modal({
-                        title: 'Move Term',
-                        content: view,
-                        okCloses: true,
-                        showFooter: true,
-                        allowCancel: true,
-                        okText: 'Move',
-                    }).open();
-                    // modal.on('ok', function() {
-                    //     that.saveAddTerm(view);
-                    // });
-                    view.on('closeModal', function() {
-                        modal.trigger('cancel');
-                    });
-                });
-            },
-            createDefaultTaxonomy: function() {
-                var that = this;
-                require([
-                    'views/business_catalog/AddTermLayoutView',
-                    'modules/Modal'
-                ], function(AddTermLayoutView, Modal) {
-                    var view = new AddTermLayoutView({
-                        url: UrlLinks.taxonomiesApiUrl(),
-                        model: new that.parentCollection.model(),
-                        defaultTerm: true
-                    });
-                    var modal = new Modal({
-                        title: 'Taxonomy',
-                        content: view,
-                        okCloses: true,
-                        showFooter: true,
-                        allowCancel: true,
-                        okText: 'Create',
-                    }).open();
-                    modal.$el.find('button.ok').attr('disabled', true);
-                    modal.on('ok', function() {
-                        that.saveDefaultTaxonomy(view);
-                    });
-                    view.ui.termName.on('keyup', function() {
-                        if (this.value.indexOf(' ') >= 0) {
-                            modal.$el.find('button.ok').prop('disabled', true);
-                            view.ui.termName.addClass("addTermDisable");
-                            view.$('.alertTerm').show();
-                        } else {
-                            modal.$el.find('button.ok').prop('disabled', false);
-                            view.ui.termName.removeClass("addTermDisable");
-                            view.$('.alertTerm').hide();
-                        }
-                    });
-                    view.on('closeModal', function() {
-                        modal.trigger('cancel');
-                    });
-                });
-            },
-            saveDefaultTaxonomy: function(view) {
-                var that = this;
-                var url = view.url;
-                view.model.url = url + "/" + view.ui.termName.val();
-                this.showLoader();
-                view.model.set({ description: view.ui.termDetail.val() }).save(null, {
-                    skipDefaultError: true,
-                    success: function(model, response) {
-                        that.fetchCollection(view.model.url, true);
-                        Utils.notifySuccess({
-                            content: "Default taxonomy " + view.ui.termName.val() + Messages.addSuccessMessage
-                        });
-                    },
-                    cust_error: function(model, response) {
-                        Utils.notifyError({
-                            content: "Default taxonomy " + view.ui.termName.val() + Messages.addErrorMessage
-                        });
-                    },
-                    complete: function() {
-                        that.hideLoader();
-                    }
-                });
-            }
-        });
-    return TreeLayoutView;
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/common/AboutAtlas.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/common/AboutAtlas.js b/dashboardv2/public/js/views/common/AboutAtlas.js
new file mode 100644
index 0000000..8900950
--- /dev/null
+++ b/dashboardv2/public/js/views/common/AboutAtlas.js
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/common/AboutAtlas_tmpl',
+    'modules/Modal',
+    'models/VCommon',
+    'utils/UrlLinks',
+], function(require, Backbone, AboutAtlasTmpl, Modal, VCommon, UrlLinks) {
+    'use strict';
+
+    var AboutAtlasView = Backbone.Marionette.LayoutView.extend(
+        /** @lends AboutAtlasView */
+        {
+            template: AboutAtlasTmpl,
+            /** Layout sub regions */
+            regions: {},
+            /** ui selector cache */
+            ui: {
+                atlasVersion: "[data-id='atlasVersion']"
+            },
+            /** ui events hash */
+            events: function() {},
+            /**
+             * intialize a new AboutAtlasView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, options);
+                var modal = new Modal({
+                    title: 'Apache Atlas',
+                    content: this,
+                    okCloses: true,
+                    showFooter: true,
+                    allowCancel: false,
+                }).open();
+
+                modal.on('closeModal', function() {
+                    modal.trigger('cancel');
+                });
+            },
+            bindEvents: function() {},
+            onRender: function() {
+                var that = this;
+                var url = UrlLinks.versionApiUrl();
+                var VCommonModel = new VCommon();
+                VCommonModel.aboutUs(url, {
+                    success: function(data) {
+                        var str = "<b>Version : </b>" + _.escape(data.Version);
+                        that.ui.atlasVersion.html(str);
+                    },
+                    complete: function() {}
+                });
+            },
+
+        });
+    return AboutAtlasView;
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/common/aboutAtlas.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/common/aboutAtlas.js b/dashboardv2/public/js/views/common/aboutAtlas.js
deleted file mode 100644
index 5f9a77c..0000000
--- a/dashboardv2/public/js/views/common/aboutAtlas.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'backbone',
-    'hbs!tmpl/common/aboutAtlas_tmpl',
-    'models/VCommon',
-    'utils/UrlLinks'
-], function(require, Backbone, aboutAtlasTmpl, VCommon, UrlLinks) {
-    'use strict';
-
-    var aboutAtlasView = Backbone.Marionette.LayoutView.extend(
-        /** @lends aboutAtlasView */
-        {
-            template: aboutAtlasTmpl,
-            /** Layout sub regions */
-            regions: {},
-            /** ui selector cache */
-            ui: {
-                atlasVersion: "[data-id='atlasVersion']"
-            },
-            /** ui events hash */
-            events: function() {},
-            /**
-             * intialize a new aboutAtlasView Layout
-             * @constructs
-             */
-            initialize: function(options) {
-                _.extend(this, options);
-            },
-            bindEvents: function() {
-
-
-            },
-            onRender: function() {
-                var that = this;
-                var url = UrlLinks.versionApiUrl();
-                var VCommonModel = new VCommon();
-                VCommonModel.aboutUs(url, {
-                    success: function(data) {
-                        var str = "<b>Version : </b>" + _.escape(data.Version);
-                        that.ui.atlasVersion.html(str);
-                    },
-                    complete: function() {}
-                });
-            },
-
-        });
-    return aboutAtlasView;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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 4a1c601..76ad61d 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -44,7 +44,6 @@ define(['require',
                 RTagTableLayoutView: "#r_tagTableLayoutView",
                 RLineageLayoutView: "#r_lineageLayoutView",
                 RAuditTableLayoutView: "#r_auditTableLayoutView",
-                RTermTableLayoutView: "#r_termTableLayoutView",
                 RProfileLayoutView: "#r_profileLayoutView"
 
             },
@@ -59,14 +58,11 @@ define(['require',
                 deleteTag: '[data-id="deleteTag"]',
                 backButton: "[data-id='backButton']",
                 addTag: '[data-id="addTag"]',
-                addTerm: '[data-id="addTerm"]',
                 tagList: '[data-id="tagList"]',
-                termList: '[data-id="termList"]',
                 fullscreenPanel: "#fullscreen_panel"
             },
             templateHelpers: function() {
                 return {
-                    taxonomy: Globals.taxonomy,
                     entityUpdate: Globals.entityUpdate
                 };
             },
@@ -76,26 +72,15 @@ define(['require',
                 events["click " + this.ui.editButton] = 'onClickEditEntity';
                 events["click " + this.ui.tagClick] = function(e) {
                     if (e.target.nodeName.toLocaleLowerCase() != "i") {
-                        var scope = $(e.currentTarget);
-                        if (scope.hasClass('term')) {
-                            var url = scope.data('href').split(".").join("/terms/");
-                            Utils.setUrl({
-                                url: '#!/taxonomy/detailCatalog' + UrlLinks.taxonomiesApiUrl() + '/' + url,
-                                mergeBrowserUrl: false,
-                                trigger: true
-                            });
-                        } else {
-                            Utils.setUrl({
-                                url: '#!/tag/tagAttribute/' + e.currentTarget.textContent,
-                                mergeBrowserUrl: false,
-                                trigger: true
-                            });
-                        }
+                        Utils.setUrl({
+                            url: '#!/tag/tagAttribute/' + e.currentTarget.textContent,
+                            mergeBrowserUrl: false,
+                            trigger: true
+                        });
                     }
                 };
                 events["click " + this.ui.deleteTag] = 'onClickTagCross';
                 events["click " + this.ui.addTag] = 'onClickAddTagBtn';
-                events["click " + this.ui.addTerm] = 'onClickAddTermBtn';
                 events['click ' + this.ui.backButton] = function() {
                     Backbone.history.history.back();
                 };
@@ -156,9 +141,9 @@ define(['require',
                             }
                         }
                         if (collectionJSON.classifications) {
-                            this.addTagToTerms(collectionJSON.classifications);
+                            this.generateTag(collectionJSON.classifications);
                         } else {
-                            this.addTagToTerms([]);
+                            this.generateTag([]);
                         }
                         if (Globals.entityTypeConfList && _.isEmptyArray(Globals.entityTypeConfList)) {
                             this.ui.editButtonContainer.html(ButtonsTmpl({ btn_edit: true }));
@@ -191,7 +176,6 @@ define(['require',
                     this.renderEntityDetailTableLayoutView(obj);
                     this.renderAuditTableLayoutView(obj);
                     this.renderTagTableLayoutView(obj);
-                    this.renderTermTableLayoutView(_.extend({}, obj, { term: true }));
                     if (collectionJSON && (!_.isUndefined(collectionJSON.attributes['profileData']) || collectionJSON.typeName === "hive_db")) {
                         if (collectionJSON.typeName === "hive_db") {
                             this.$('.profileTab a').text("Tables")
@@ -287,60 +271,42 @@ define(['require',
             },
             onClickTagCross: function(e) {
                 var tagName = $(e.currentTarget).parent().text(),
-                    tagOrTerm = $(e.target).data("type"),
                     that = this;
-                if (tagOrTerm === "term") {
-                    var modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
-                        titleMessage: Messages.removeTerm,
-                        buttonText: "Remove"
-                    });
-                } else if (tagOrTerm === "tag") {
-                    var modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
-                        titleMessage: Messages.removeTag,
-                        buttonText: "Remove"
-                    });
-                }
+                var modal = CommonViewFunction.deleteTagModel({
+                    msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.name + "?</b></div>",
+                    titleMessage: Messages.removeTag,
+                    buttonText: "Remove"
+                });
                 if (modal) {
                     modal.on('ok', function() {
-                        that.deleteTagData(e, tagOrTerm);
+                        that.deleteTagData({
+                            'tagName': tagName,
+                            'guid': that.id
+                        });
                     });
                     modal.on('closeModal', function() {
                         modal.trigger('cancel');
                     });
                 }
             },
-            deleteTagData: function(e, tagOrTerm) {
+            deleteTagData: function(options) {
                 var that = this,
                     tagName = $(e.currentTarget).text();
                 Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.entityDetail'));
-                CommonViewFunction.deleteTag({
-                    'tagName': tagName,
-                    'guid': that.id,
-                    'tagOrTerm': tagOrTerm,
+                CommonViewFunction.deleteTag(_.extend({}, options, {
                     callback: function() {
                         that.fetchCollection();
                     }
-                });
+                }));
             },
-            addTagToTerms: function(tagObject) {
+            generateTag: function(tagObject) {
                 var that = this,
-                    tagData = "",
-                    termData = "";
-
+                    tagData = "";
                 _.each(tagObject, function(val) {
-                    var checkTagOrTerm = Utils.checkTagOrTerm(val);
-                    if (checkTagOrTerm.term) {
-                        termData += '<span class="btn btn-action btn-sm btn-blue btn-icon term" data-id="tagClick" data-href="' + val.typeName + '"><span>' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="term"></i></span>';
-                    } else {
-                        tagData += '<span class="btn btn-action btn-sm btn-icon btn-blue" data-id="tagClick"><span>' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"></i></span>';
-                    }
+                    tagData += '<span class="btn btn-action btn-sm btn-icon btn-blue" data-id="tagClick"><span>' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"></i></span>';
                 });
                 this.ui.tagList.find("span.btn").remove();
-                this.ui.termList.find("span.btn").remove();
                 this.ui.tagList.prepend(tagData);
-                this.ui.termList.prepend(termData);
             },
             hideLoader: function() {
                 Utils.hideTitleLoader(this.$('.page-title .fontLoader'), this.$('.entityDetail'));
@@ -350,7 +316,7 @@ define(['require',
             },
             onClickAddTagBtn: function(e) {
                 var that = this;
-                require(['views/tag/addTagModalView'], function(AddTagModalView) {
+                require(['views/tag/AddTagModalView'], function(AddTagModalView) {
                     var view = new AddTagModalView({
                         guid: that.id,
                         tagList: _.map(that.entityObject.entity.classifications, function(obj) {
@@ -368,25 +334,6 @@ define(['require',
                     });
                 });
             },
-            onClickAddTermBtn: function(e) {
-                var that = this;
-                require([
-                    'views/business_catalog/AddTermToEntityLayoutView',
-                ], function(AddTermToEntityLayoutView) {
-                    var view = new AddTermToEntityLayoutView({
-                        guid: that.id,
-                        callback: function() {
-                            that.fetchCollection();
-                        },
-                        showLoader: that.showLoader.bind(that),
-                        hideLoader: that.hideLoader.bind(that)
-                    });
-                    view.modal.on('ok', function() {
-                        Utils.showTitleLoader(that.$('.page-title .fontLoader'), that.$('.entityDetail'));
-                    });
-                });
-
-            },
             renderEntityDetailTableLayoutView: function(obj) {
                 var that = this;
                 require(['views/entity/EntityDetailTableLayoutView'], function(EntityDetailTableLayoutView) {
@@ -399,12 +346,6 @@ define(['require',
                     that.RTagTableLayoutView.show(new TagDetailTableLayoutView(obj));
                 });
             },
-            renderTermTableLayoutView: function(obj) {
-                var that = this;
-                require(['views/tag/TagDetailTableLayoutView'], function(TagDetailTableLayoutView) {
-                    that.RTermTableLayoutView.show(new TagDetailTableLayoutView(obj));
-                });
-            },
             renderLineageLayoutView: function(obj) {
                 var that = this;
                 require(['views/graph/LineageLayoutView'], function(LineageLayoutView) {


[4/4] atlas git commit: ATLAS-2217 : Remove all taxonomy reference from UI

Posted by kb...@apache.org.
ATLAS-2217 : Remove all taxonomy reference from UI


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

Branch: refs/heads/master
Commit: 37be53bbb7eec13f8ce57377c8653f482216553f
Parents: e9b9513
Author: kevalbhatt <kb...@apache.org>
Authored: Mon Oct 30 18:41:55 2017 +0530
Committer: kevalbhatt <kb...@apache.org>
Committed: Wed Nov 1 19:43:33 2017 +0530

----------------------------------------------------------------------
 dashboardv2/public/css/scss/breadcrumb.scss     |  62 --
 .../public/css/scss/business-catlog.scss        | 127 ----
 dashboardv2/public/css/scss/common.scss         |   3 -
 dashboardv2/public/css/scss/style.scss          |   4 -
 dashboardv2/public/css/scss/theme.scss          |   8 -
 dashboardv2/public/css/scss/tree.scss           | 183 ------
 .../public/js/collection/VCatalogList.js        |  64 --
 dashboardv2/public/js/main.js                   |   3 -
 dashboardv2/public/js/models/VCatalog.js        |  50 --
 dashboardv2/public/js/modules/Modal.js          |   2 +-
 dashboardv2/public/js/router/Router.js          |  87 +--
 .../AddTermToEntityLayoutView_tmpl.html         |  17 -
 .../business_catalog/AddTermView_tmpl.html      |  38 --
 .../BusinessCatalogDetailLayoutView_tmpl.html   |  42 --
 .../business_catalog/BusinessCatalogHeader.html |  29 -
 .../BusinessCatalogLayoutView_tmpl.html         |  17 -
 .../MoveTermLayoutView_tmpl.html                |  19 -
 .../SideNavLayoutView_tmpl.html                 |  39 --
 .../business_catalog/TreeLayoutView_tmpl.html   |  34 -
 .../js/templates/common/AboutAtlas_tmpl.html    |  26 +
 .../public/js/templates/common/Modal.html       |  44 ++
 .../js/templates/common/aboutAtlas_tmpl.html    |  26 -
 .../public/js/templates/common/modal.html       |  44 --
 .../detail_page/DetailPageLayoutView_tmpl.html  |  18 -
 .../schema/SchemaTableLayoutView_tmpl.html      |   1 -
 .../search/SearchResultLayoutView_tmpl.html     |   2 -
 .../public/js/templates/site/Header.html        |  29 +
 .../templates/site/SideNavLayoutView_tmpl.html  |  33 +
 .../public/js/templates/site/header.html        |  29 -
 .../js/templates/tag/AddTagModalView_tmpl.html  |  37 ++
 .../templates/tag/CreateTagLayoutView_tmpl.html |  54 ++
 .../tag/TagDetailTableLayoutView_tmpl.html      |   2 +-
 .../js/templates/tag/addTagModalView_tmpl.html  |  37 --
 .../templates/tag/createTagLayoutView_tmpl.html |  54 --
 .../public/js/utils/CommonViewFunction.js       | 167 +----
 dashboardv2/public/js/utils/Globals.js          |   1 -
 dashboardv2/public/js/utils/Messages.js         |   6 +-
 dashboardv2/public/js/utils/UrlLinks.js         |   6 -
 dashboardv2/public/js/utils/Utils.js            |  62 --
 .../views/business_catalog/AddTermLayoutView.js |  64 --
 .../AddTermToEntityLayoutView.js                | 124 ----
 .../BusinessCatalogDetailLayoutView.js          | 167 -----
 .../business_catalog/BusinessCatalogHeader.js   |  65 --
 .../BusinessCatalogLayoutView.js                |  65 --
 .../business_catalog/MoveTermLayoutView.js      |  54 --
 .../views/business_catalog/SideNavLayoutView.js | 150 -----
 .../js/views/business_catalog/TreeLayoutView.js | 629 -------------------
 .../public/js/views/common/AboutAtlas.js        |  74 +++
 .../public/js/views/common/aboutAtlas.js        |  65 --
 .../views/detail_page/DetailPageLayoutView.js   | 105 +---
 .../public/js/views/schema/SchemaLayoutView.js  | 133 +---
 .../public/js/views/search/SearchLayoutView.js  |   5 +-
 .../js/views/search/SearchResultLayoutView.js   | 166 +----
 dashboardv2/public/js/views/site/Header.js      |   2 +-
 .../public/js/views/site/SideNavLayoutView.js   | 125 ++++
 .../public/js/views/tag/AddTagModalView.js      | 380 +++++++++++
 .../public/js/views/tag/CreateTagLayoutView.js  |  19 +-
 .../js/views/tag/TagDetailTableLayoutView.js    |  77 +--
 .../public/js/views/tag/TagLayoutView.js        |  15 +-
 .../public/js/views/tag/addTagModalView.js      | 383 -----------
 60 files changed, 935 insertions(+), 3438 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/breadcrumb.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/breadcrumb.scss b/dashboardv2/public/css/scss/breadcrumb.scss
deleted file mode 100644
index 4bb09db..0000000
--- a/dashboardv2/public/css/scss/breadcrumb.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/*  breadcrumb.scss */
-
-.breadcrumb {
-    padding: 8px 25px;
-    background-color: transparent;
-    margin-bottom: 0;
-    font-weight: 600;
-    line-height: 44px;
-    >li {
-        display: inline-block;
-        +li:before {
-            padding: 0 10px;
-            font-family: $font_2;
-            color: $color_ironside_gray_approx;
-            content: "\f105";
-        }
-    }
-}
-
-.breadcrumb-menu,
-.breadcrumb-dropdown+li:before,
-.breadcrumb-ellipsis+li:before {
-    display: none;
-}
-
-.dropdown .fa-ellipsis-h {
-    position: relative;
-    top: 4px;
-}
-
-.breadcrumb-ellipsis {
-    color: #359f89;
-    cursor: pointer;
-    display: none !important;
-}
-
-#new-header .breadcrumb-dropdown .popover.bottom {
-    margin-top: 45px !important;
-}
-
-.breadcrumb>li:last-child a {
-    color: #b4b7bc;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/business-catlog.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/business-catlog.scss b/dashboardv2/public/css/scss/business-catlog.scss
deleted file mode 100644
index 7e43f64..0000000
--- a/dashboardv2/public/css/scss/business-catlog.scss
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/* business-catlog.scss */
-
-.main-search {
-    .form-control {
-        border: none;
-        border-left: 1px $color_mystic_approx solid; //Instead of the line below you could use @include border-radius($radius, $vertical-radius)
-        border-radius: 0; //Instead of the line below you could use @include box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
-        box-shadow: none;
-        height: 60px;
-        font-size: 18px;
-        font-style: italic;
-    }
-    .input-group-addon {
-        font-size: 20px;
-        color: $color_bombay_approx;
-        background: none;
-        border: none;
-    }
-}
-
-.arrowPosition {
-    left: -75px;
-}
-
-.sidebar-item.active i {
-    display: block !important;
-}
-
-.dropdown-menu>li>a {
-    color: $color_jungle_green_approx;
-    padding: 6px 20px;
-    max-width: 276px;
-    @include ellipsis();
-}
-
-.branchListParent {
-    .parentActive {
-        background: none;
-    }
-    .fa {
-        line-height: 40px;
-    }
-}
-
-ul[data-id=branchList] {
-    .fa {
-        line-height: 40px;
-    }
-    li {
-        padding-left: 50px;
-    }
-}
-
-.branchChildDiv {
-    padding-left: 15px;
-}
-
-.branchListParentInput {
-    padding-bottom: 18px;
-    display: list-item;
-    .form-control {
-        border-right: none; //Instead of the line below you could use @include box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
-        box-shadow: none; //Instead of the line below you could use @include border-radius($radius, $vertical-radius)
-        border-radius: 4px;
-    }
-    .input-group-addon {
-        background-color: $white;
-    }
-}
-
-.listTerm {
-    padding-bottom: 5px;
-}
-
-.termNote {
-    padding-top: 10px;
-}
-
-.termTableBreadcrumb {
-    >div {
-        @include clearfix();
-        display: block;
-        width: 100%;
-    }
-    .hide {
-        opacity: 0;
-        overflow: hidden;
-        height: 0px;
-        display: block !important;
-    }
-    .show {
-        opacity: 1;
-        overflow: visible;
-        height: auto;
-    }
-    .liContent {
-        float: left;
-        line-height: 21px !important;
-        padding: 0px 10px 0px 0px !important;
-    }
-    >div a {
-        .fa-trash,
-        .fa-ellipsis-h {
-            color: $tag_color;
-            cursor: pointer;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/common.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/common.scss b/dashboardv2/public/css/scss/common.scss
index fd6c0f0..3c2dff5 100644
--- a/dashboardv2/public/css/scss/common.scss
+++ b/dashboardv2/public/css/scss/common.scss
@@ -41,9 +41,6 @@
         &[data-id="edit"] {
             display: none;
         }
-        &.btn[data-id="addTerm"] {
-            display: none;
-        }
         &.btn[data-id="tagClick"] {
             span {
                 display: block;

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/style.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/style.scss b/dashboardv2/public/css/scss/style.scss
index 422680e..531a727 100644
--- a/dashboardv2/public/css/scss/style.scss
+++ b/dashboardv2/public/css/scss/style.scss
@@ -25,12 +25,8 @@
 @import "panel.scss";
 @import "loader.scss";
 @import "graph.scss";
-@import "breadcrumb.scss";
-//@import "login.scss";
-@import "business-catlog.scss";
 @import "old-style.scss";
 @import "theme.scss";
-@import "tree.scss";
 @import "tag.scss";
 @import "search.scss";
 @import "profile-table.scss";

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/theme.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/theme.scss b/dashboardv2/public/css/scss/theme.scss
index dae7827..4ce51b2 100644
--- a/dashboardv2/public/css/scss/theme.scss
+++ b/dashboardv2/public/css/scss/theme.scss
@@ -184,14 +184,6 @@ hr[size="10"] {
     }
 }
 
-
-.table-quickMenu>tbody>tr>td {
-    &.searchTerm {
-        overflow: visible;
-    }
-    &.searchTag {}
-}
-
 .card {
     background: $white none repeat scroll 0 0; //Instead of the line below you could use @include box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10)
     box-shadow: 0 1px 3px $black_30;

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/css/scss/tree.scss
----------------------------------------------------------------------
diff --git a/dashboardv2/public/css/scss/tree.scss b/dashboardv2/public/css/scss/tree.scss
deleted file mode 100644
index 4339dba..0000000
--- a/dashboardv2/public/css/scss/tree.scss
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-/* tree.scss */
-
-.jstree-container-ul {
-    padding-left: 0px;
-    position: relative;
-    list-style: none;
-    .jstree-node {
-        white-space: nowrap;
-        position: relative;
-        cursor: pointer;
-        padding: 4px 0;
-        margin: 0;
-        margin-top: 5px;
-        margin-bottom: 5px;
-    }
-    ul {
-        list-style: none;
-        padding: 0;
-        text-indent: 30px;
-    }
-    li a {
-        // color: $white;
-        display: block;
-    }
-}
-
-.taxonomyTree {
-    padding: 0;
-    position: relative;
-    li {
-        position: relative;
-        border-radius: 4px;
-        margin-top: 5px;
-        &.parent {
-            width: 100%;
-            a {
-                max-width: 93%;
-            }
-        }
-        &.parentChild {
-            >ul {
-                padding-left: 9%;
-            }
-            li {
-                &.children {
-                    width: 91%;
-                }
-                a {
-                    max-width: 90%;
-                }
-            }
-        }
-        &.children {
-            &:hover {
-                background-color: $color_star_dust_approx;
-            }
-        }
-        &.listTerm {
-            a {
-                display: inline;
-            }
-        }
-        &.active {
-            background-color: $color_jungle_green_approx !important;
-            border: none;
-            .tools {
-                display: block;
-                .fa {
-                    cursor: pointer;
-                    padding: 0px 3px;
-                }
-            }
-        }
-        a {
-            display: block;
-            color: $concrete;
-            white-space: nowrap;
-            padding: 5px 25px;
-            @include ellipsis();
-            cursor: pointer;
-        }
-        .tools {
-            background: $color_jungle_green_approx;
-            display: none;
-            position: absolute;
-            right: 2px;
-            padding: 5px;
-        }
-    }
-}
-
-.termMoveDiv {
-    width: 550px;
-    height: 200px;
-    margin: 10px;
-}
-
-.toggleArrow {
-    position: absolute;
-    left: 0px;
-    padding: 8px;
-    cursor: pointer;
-}
-
-.addTermDisable {
-    border-color: $red !important;
-}
-
-.alertTerm {
-    color: $red !important;
-}
-
-
-
-/**Css changes**/
-
-.modal-body {
-    .add-seperator {
-        border: none;
-    }
-    .taxonomyTree li {
-        .children {
-            text-indent: 20px;
-        }
-        &.parentChild {
-            ul {
-                padding-left: 0px;
-            }
-            li {
-                &.children {
-                    width: 100%;
-                }
-                a {
-                    max-width: 100%;
-                }
-            }
-        }
-        &.active {
-            color: $concrete;
-            a {
-                color: $concrete;
-            }
-        }
-        a {
-            color: #6C6C6C;
-        }
-        &.children:hover {
-            a {
-                color: $concrete;
-            }
-            background-color: #ABABAB;
-            color: $white;
-        }
-        .tools {
-            text-indent: 0px;
-            background: none;
-        }
-    }
-}
-
-.popoverTerm {
-    text-align: center;
-    margin-top: 25px !important;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/collection/VCatalogList.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/collection/VCatalogList.js b/dashboardv2/public/js/collection/VCatalogList.js
deleted file mode 100644
index 7899b3e..0000000
--- a/dashboardv2/public/js/collection/VCatalogList.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'utils/Globals',
-    'collection/BaseCollection',
-    'models/VCatalog',
-    'utils/UrlLinks'
-], function(require, Globals, BaseCollection, VCatalog, UrlLinks) {
-    'use strict';
-    var VCatalogList = BaseCollection.extend(
-        //Prototypal attributes
-        {
-            url: UrlLinks.taxonomiesApiUrl(),
-
-            model: VCatalog,
-
-            initialize: function() {
-                this.modelName = 'VCatalog';
-                this.modelAttrName = '';
-            },
-            fetch: function(options) {
-                //Call Backbone's fetch
-                return Backbone.Collection.prototype.fetch.call(this, options);
-            },
-            parseRecords: function(resp, options) {
-                try {
-                    /* var arr = [];
-                     arr.push({
-                         taxonomies: resp
-                     });*/
-                    return resp;
-                } catch (e) {
-                    console.log(e);
-                }
-            },
-        },
-        //Static Class Members
-        {
-            /**
-             * Table Cols to be passed to Backgrid
-             * UI has to use this as base and extend this.
-             *
-             */
-            tableCols: {}
-        }
-    );
-    return VCatalogList;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/main.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/main.js b/dashboardv2/public/js/main.js
index aae231c..8e4dce5 100644
--- a/dashboardv2/public/js/main.js
+++ b/dashboardv2/public/js/main.js
@@ -213,9 +213,6 @@ require(['App',
                 Globals.userLogedIn.status = true;
                 Globals.userLogedIn.response = response;
             }
-            if (response && response['atlas.feature.taxonomy.enable'] !== undefined) {
-                Globals.taxonomy = response['atlas.feature.taxonomy.enable']
-            }
             if (response && response['atlas.entity.create.allowed'] !== undefined) {
                 Globals.entityCreate = response['atlas.entity.create.allowed'];
             }

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/models/VCatalog.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/models/VCatalog.js b/dashboardv2/public/js/models/VCatalog.js
deleted file mode 100644
index ea5ae2c..0000000
--- a/dashboardv2/public/js/models/VCatalog.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'utils/Globals',
-    'models/BaseModel',
-    'utils/UrlLinks'
-], function(require, Globals, VBaseModel, UrlLinks) {
-    'use strict';
-    var VCatalog = VBaseModel.extend({
-        urlRoot: UrlLinks.taxonomiesApiUrl(),
-
-        defaults: {},
-
-        serverSchema: {},
-
-        idAttribute: 'id',
-
-        initialize: function() {
-            this.modelName = 'VCatalog';
-        },
-        toString: function() {
-            return this.get('name');
-        },
-        deleteTerm: function(termURL, options) {
-            var url = termURL;
-            options = _.extend({
-                contentType: 'application/json',
-                dataType: 'json'
-            }, options);
-            return this.constructor.nonCrudOperation.call(this, url, 'DELETE', options);
-        }
-    }, {});
-    return VCatalog;
-});

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/modules/Modal.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/modules/Modal.js b/dashboardv2/public/js/modules/Modal.js
index 48f385e..b49f657 100644
--- a/dashboardv2/public/js/modules/Modal.js
+++ b/dashboardv2/public/js/modules/Modal.js
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-define(['require', 'backbone', 'hbs!tmpl/common/modal'], function(require, Backbone, template) {
+define(['require', 'backbone', 'hbs!tmpl/common/Modal'], function(require, Backbone, template) {
 
     var Modal = Backbone.View.extend({
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/router/Router.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/router/Router.js b/dashboardv2/public/js/router/Router.js
index 7790aef..e9c9e5e 100644
--- a/dashboardv2/public/js/router/Router.js
+++ b/dashboardv2/public/js/router/Router.js
@@ -32,11 +32,9 @@ define([
             '': 'defaultAction',
             '!/': 'tagAttributePageLoad',
             '!/tag/tagAttribute/(*name)': 'tagAttributePageLoad',
-            '!/taxonomy/detailCatalog/(*url)': 'detailCatalog',
             '!/search/searchResult': 'searchResult',
             '!/detailPage/:id': 'detailPage',
             '!/tag': 'commonAction',
-            '!/taxonomy': 'commonAction',
             '!/search': 'commonAction',
             // Default
             '*actions': 'defaultAction'
@@ -64,29 +62,11 @@ define([
         bindCommonEvents: function() {
             var that = this;
             $('body').on('click', 'li.aboutAtlas', function() {
-                that.aboutAtlas();
-            });
-        },
-        aboutAtlas: function() {
-            var that = this;
-            require([
-                'hbs!tmpl/common/aboutAtlas_tmpl',
-                'modules/Modal',
-                'views/common/aboutAtlas',
-            ], function(aboutAtlasTmpl, Modal, aboutAtlasView) {
-                var view = new aboutAtlasView();
-                var modal = new Modal({
-                    title: 'Apache Atlas',
-                    content: view,
-                    okCloses: true,
-                    showFooter: true,
-                    allowCancel: false,
-                }).open();
-
-                view.on('closeModal', function() {
-                    modal.trigger('cancel');
+                require([
+                    'views/common/AboutAtlas',
+                ], function(AboutAtlas) {
+                    new AboutAtlas();
                 });
-
             });
         },
         showRegions: function() {},
@@ -110,53 +90,13 @@ define([
             // console.log("Post-Route Change Operations can be performed here !!");
             // console.log("Route changed: ", name);
         },
-        detailCatalog: function(url) {
-            var that = this;
-            require([
-                'views/business_catalog/BusinessCatalogHeader',
-                'views/business_catalog/BusinessCatalogDetailLayoutView',
-                'views/business_catalog/SideNavLayoutView',
-                'collection/VCatalogList'
-            ], function(BusinessCatalogHeader, BusinessCatalogDetailLayoutView, SideNavLayoutView, VCatalogList) {
-                if (Globals.taxonomy) {
-                    var paramObj = Utils.getUrlState.getQueryParams();
-                    this.collection = new VCatalogList();
-                    this.collection.url = url;
-                    App.rNHeader.show(new BusinessCatalogHeader(
-                        _.extend({
-                            'url': url,
-                            'collection': this.collection
-                        }, that.preFetchedCollectionLists)
-                    ));
-                    if (!App.rSideNav.currentView) {
-                        App.rSideNav.show(new SideNavLayoutView(
-                            _.extend({
-                                'url': url
-                            }, that.preFetchedCollectionLists, that.sharedObj)
-                        ));
-                    } else {
-                        App.rSideNav.currentView.RBusinessCatalogLayoutView.currentView.manualRender("/" + url);
-                        App.rSideNav.currentView.selectTab();
-                    }
-                    App.rNContent.show(new BusinessCatalogDetailLayoutView(
-                        _.extend({
-                            'url': url,
-                            'collection': this.collection
-                        }, that.preFetchedCollectionLists)
-                    ));
-                    this.collection.fetch({ reset: true });
-                } else {
-                    that.defaultAction()
-                }
-            });
-        },
         detailPage: function(id) {
             var that = this;
             if (id) {
                 require([
                     'views/site/Header',
                     'views/detail_page/DetailPageLayoutView',
-                    'views/business_catalog/SideNavLayoutView',
+                    'views/site/SideNavLayoutView',
                     'collection/VEntityList'
                 ], function(Header, DetailPageLayoutView, SideNavLayoutView, VEntityList) {
                     this.entityCollection = new VEntityList([], {});
@@ -183,10 +123,9 @@ define([
             var that = this;
             require([
                 'views/site/Header',
-                'views/business_catalog/BusinessCatalogLayoutView',
-                'views/business_catalog/SideNavLayoutView',
+                'views/site/SideNavLayoutView',
                 'views/tag/TagDetailLayoutView',
-            ], function(Header, BusinessCatalogLayoutView, SideNavLayoutView, TagDetailLayoutView) {
+            ], function(Header, SideNavLayoutView, TagDetailLayoutView) {
                 var paramObj = Utils.getUrlState.getQueryParams(),
                     url = Utils.getUrlState.getQueryUrl().queyParams[0];
                 App.rNHeader.show(new Header());
@@ -233,10 +172,9 @@ define([
             var that = this;
             require([
                 'views/site/Header',
-                'views/business_catalog/BusinessCatalogLayoutView',
-                'views/business_catalog/SideNavLayoutView',
+                'views/site/SideNavLayoutView',
                 'views/search/SearchDetailLayoutView',
-            ], function(Header, BusinessCatalogLayoutView, SideNavLayoutView, SearchDetailLayoutView) {
+            ], function(Header, SideNavLayoutView, SearchDetailLayoutView) {
                 var paramObj = Utils.getUrlState.getQueryParams();
                 App.rNHeader.show(new Header());
                 if (!App.rSideNav.currentView) {
@@ -249,8 +187,6 @@ define([
                     App.rSideNav.currentView.selectTab();
                     if (Utils.getUrlState.isTagTab()) {
                         App.rSideNav.currentView.RTagLayoutView.currentView.manualRender();
-                    } else if (Utils.getUrlState.isTaxonomyTab()) {
-                        App.rSideNav.currentView.RBusinessCatalogLayoutView.currentView.manualRender(undefined, true);
                     }
                 }
                 if (Globals.entityCreate && Utils.getUrlState.isSearchTab()) {
@@ -271,10 +207,9 @@ define([
             var that = this;
             require([
                 'views/site/Header',
-                'views/business_catalog/BusinessCatalogLayoutView',
-                'views/business_catalog/SideNavLayoutView',
+                'views/site/SideNavLayoutView',
                 'views/search/SearchDetailLayoutView'
-            ], function(Header, BusinessCatalogLayoutView, SideNavLayoutView, SearchDetailLayoutView) {
+            ], function(Header, SideNavLayoutView, SearchDetailLayoutView) {
                 var paramObj = Utils.getUrlState.getQueryParams();
                 var isinitialView = true,
                     isTypeTagNotExists = false,

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/AddTermToEntityLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/AddTermToEntityLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/AddTermToEntityLayoutView_tmpl.html
deleted file mode 100644
index 36cf43a..0000000
--- a/dashboardv2/public/js/templates/business_catalog/AddTermToEntityLayoutView_tmpl.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div id="r_treeLayoutView"></div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/AddTermView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/AddTermView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/AddTermView_tmpl.html
deleted file mode 100644
index 0b62098..0000000
--- a/dashboardv2/public/js/templates/business_catalog/AddTermView_tmpl.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<form name="tagDefinitionform" class="form-horizontal" onsubmit="return false;">
-    <div class="form-group">
-        <label class="control-label col-sm-2 required" for="name">Name</label>
-        {{#if defaultTerm}}
-        <div class="col-sm-10">
-            <input class="form-control" data-id="termName" placeholder="Enter Taxonomy Name" autofocus>
-            <p class='alertTerm' style='display:none'>Taxonomy name should not have spaces</p>
-        </div>
-        {{else}}
-        <div class="col-sm-10">
-            <input class="form-control" data-id="termName" placeholder="Name(Required)" autofocus>
-            <p class='alertTerm' style='display:none'>Term name should not have spaces</p>
-        </div>
-        {{/if}}
-    </div>
-    <div class="form-group">
-        <label class="control-label col-sm-2" for="description">Description</label>
-        <div class="col-sm-10">
-            <textarea class="form-control" data-id="termDetail" placeholder="Description"></textarea>
-        </div>
-    </div>
-</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index d3c9fe1..0000000
--- a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogDetailLayoutView_tmpl.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div class="page-title clearfix">
-    <div class="fontLoader">
-        <i class="fa fa-refresh fa-spin-custom"></i>
-    </div>
-    <div class="catlogDetail">
-        <h1 class="form-group"><span data-id="title"></span></h1>
-        <button type="button" data-id="editButton" class="btn btn-sm btn-action pull-right"><i class="fa fa-pencil"></i></button>
-        <p class="form-group" data-id="description">Description</p>
-    </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>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/BusinessCatalogHeader.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogHeader.html b/dashboardv2/public/js/templates/business_catalog/BusinessCatalogHeader.html
deleted file mode 100644
index 3f8928e..0000000
--- a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogHeader.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<ol class="breadcrumb col-md-6">
-</ol>
-<header class="clearfix">
-    <div class="btn-group pull-right header-menu">
-        <a target="_blank" href="http://atlas.apache.org/"><i class="fa  fa-question-circle"></i></a>
-        <a href="javascript:void(0);" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user user-circle"></i><span class="userName"></span></a>
-        <ul class="dropdown-menu">
-            <li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
-            <li role="separator" class="divider"></li>
-            <li><a href="logout.html"><i class="fa fa-sign-out"></i>Logout</a></li>
-        </ul>
-    </div>
-</header>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/BusinessCatalogLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/BusinessCatalogLayoutView_tmpl.html
deleted file mode 100644
index 36cf43a..0000000
--- a/dashboardv2/public/js/templates/business_catalog/BusinessCatalogLayoutView_tmpl.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div id="r_treeLayoutView"></div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/MoveTermLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/MoveTermLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/MoveTermLayoutView_tmpl.html
deleted file mode 100644
index 0f9a066..0000000
--- a/dashboardv2/public/js/templates/business_catalog/MoveTermLayoutView_tmpl.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div class="form-control termMoveDiv">
-    <div id="tree"></div>
-</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html b/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
deleted file mode 100644
index 44b722f..0000000
--- a/dashboardv2/public/js/templates/business_catalog/SideNavLayoutView_tmpl.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<ul class="sidebar-nav">
-    <li class="sidebar-brand">
-        <a href="{{apiBaseUrl}}/index.html"><i class="fa fa-globe"></i> Apache Atlas</a>
-    </li>
-    <ul class="tabs" style="width: 100%;" role="tablist">
-        <li role="presentation" class="{{tabClass}}"><a href="#tab-search" aria-controls="tab-search" data-name="tab-search" role="tab" data-toggle="tab" class=""><i class="fa fa-search"></i> Search</a></li>
-        <li role="presentation" class="{{tabClass}}"><a href="#tab-tag" aria-controls="tab-tag" data-name="tab-tag" role="tab" data-toggle="tab"><i class="fa fa-tags"></i> Tags</a></li>
-        {{#if taxonomy}}
-        <li role="presentation" class="tab col-sm-4"><a href="#tab-taxonomy" aria-controls="tab-taxonomy" data-name="tab-taxonomy" role="tab" data-toggle="tab" class=""><i class="fa fa-sitemap"></i> Taxonomy</a></li>
-        {{/if}}
-    </ul>
-</ul>
-<div class="tab-content">
-    <div role="tabpanel" class="tab-pane" id="tab-tag">
-        <div id="r_tagLayoutView"></div>
-    </div>
-    <div role="tabpanel" class="tab-pane" id="tab-taxonomy">
-        <div id="r_businessCatalogLayoutView"></div>
-    </div>
-    <div role="tabpanel" class="tab-pane" id="tab-search">
-        <div id="r_searchLayoutView"></div>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index ca2968e..0000000
--- a/dashboardv2/public/js/templates/business_catalog/TreeLayoutView_tmpl.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div class="clearfix add-seperator">
-    <p data-id="descriptionAssign" style="display:none">Assign a term to this asset</p>
-    <button type="button" class="btn btn-action btn-md pull-left" data-id="backTaxanomy"><i class="fa fa-chevron-left"></i> Back</button>
-    <button type="button" class="btn btn-action btn-md pull-right" onclick="this.blur();" title="Refresh" data-id="refreshTaxanomy"><i class="fa fa-refresh"></i></button>
-</div>
-<div>
-    <select type="text" class="form-control" data-id="searchTermInput"></select>
-</div>
-<div class="">
-    <ul class="taxonomyTree">
-        <div class="contentLoading"></div>
-        <li class="children parent" data-id="Parent"></li>
-        <li class="childs parentChild">
-            <ul data-id="childList">
-            </ul>
-        </li>
-    </ul>
-</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/common/AboutAtlas_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/common/AboutAtlas_tmpl.html b/dashboardv2/public/js/templates/common/AboutAtlas_tmpl.html
new file mode 100644
index 0000000..a3cf90a
--- /dev/null
+++ b/dashboardv2/public/js/templates/common/AboutAtlas_tmpl.html
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<div class="row">
+    <div class="col-md-4">
+        <div class="col-md-8 subContent">
+            <p data-id="atlasVersion"></p>
+            <br>
+            <p class="text-info">Get involved!</p>
+            <p class="text-info"><a href="http://apache.org/licenses/LICENSE-2.0" target="_blank">Licensed under the Apache License Version 2.0</a></p>
+        </div>
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/common/Modal.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/common/Modal.html b/dashboardv2/public/js/templates/common/Modal.html
new file mode 100644
index 0000000..e000fa8
--- /dev/null
+++ b/dashboardv2/public/js/templates/common/Modal.html
@@ -0,0 +1,44 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<div class="modal-dialog {{mainClass}} " style="width:{{width}}" role="document">
+    <div class="modal-content">
+        {{#if title}}
+        <div class="modal-header">
+            <a class="close">&times;</a>
+            <h4 class="modal-title">
+                    {{#if titleHtml}}
+                        {{{tt title}}}
+                      {{else}}
+                        {{tt title}}
+                      {{/if}}
+                </h4>
+        </div>
+        {{/if}} {{#if contentWithFooter}} {{else}}
+        <div class="modal-body">{{content}}</div>
+        {{#if showFooter}}
+        <div class="modal-footer">
+            {{#if buttons}} {{#each buttons}}
+            <button type="button" {{#if this.title}} title="{{this.title}}" {{/if}} class="btn {{this.btnClass}}">{{this.text}}</button>
+            {{/each}} {{else}} {{#if allowCancel}} {{#if cancelText}}
+            <button type="button" class="btn btn-action cancel">{{tt cancelText}}</button>
+            {{/if}} {{/if}}
+            <button type="button" class="btn btn-atlas ok">{{tt okText}}</button>
+            {{/if}}
+        </div>
+        {{/if}} {{/if}}
+    </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/common/aboutAtlas_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/common/aboutAtlas_tmpl.html b/dashboardv2/public/js/templates/common/aboutAtlas_tmpl.html
deleted file mode 100644
index a3cf90a..0000000
--- a/dashboardv2/public/js/templates/common/aboutAtlas_tmpl.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div class="row">
-    <div class="col-md-4">
-        <div class="col-md-8 subContent">
-            <p data-id="atlasVersion"></p>
-            <br>
-            <p class="text-info">Get involved!</p>
-            <p class="text-info"><a href="http://apache.org/licenses/LICENSE-2.0" target="_blank">Licensed under the Apache License Version 2.0</a></p>
-        </div>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/common/modal.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/common/modal.html b/dashboardv2/public/js/templates/common/modal.html
deleted file mode 100644
index e000fa8..0000000
--- a/dashboardv2/public/js/templates/common/modal.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div class="modal-dialog {{mainClass}} " style="width:{{width}}" role="document">
-    <div class="modal-content">
-        {{#if title}}
-        <div class="modal-header">
-            <a class="close">&times;</a>
-            <h4 class="modal-title">
-                    {{#if titleHtml}}
-                        {{{tt title}}}
-                      {{else}}
-                        {{tt title}}
-                      {{/if}}
-                </h4>
-        </div>
-        {{/if}} {{#if contentWithFooter}} {{else}}
-        <div class="modal-body">{{content}}</div>
-        {{#if showFooter}}
-        <div class="modal-footer">
-            {{#if buttons}} {{#each buttons}}
-            <button type="button" {{#if this.title}} title="{{this.title}}" {{/if}} class="btn {{this.btnClass}}">{{this.text}}</button>
-            {{/each}} {{else}} {{#if allowCancel}} {{#if cancelText}}
-            <button type="button" class="btn btn-action cancel">{{tt cancelText}}</button>
-            {{/if}} {{/if}}
-            <button type="button" class="btn btn-atlas ok">{{tt okText}}</button>
-            {{/if}}
-        </div>
-        {{/if}} {{/if}}
-    </div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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 8acd8e4..a08d9ab 100644
--- a/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/detail_page/DetailPageLayoutView_tmpl.html
@@ -33,14 +33,6 @@
                 </button>
             </div>
         </div>
-        {{#if taxonomy}}
-        <div class="form-group">
-            <span class="control-label-sm-pr pull-left">Terms:</span>
-            <div class="pull-left" data-id="termList">
-                <button class="btn btn-action btn-sm" title="Add Term" data-id="addTerm"><i class="fa fa-plus"></i></button>
-            </div>
-        </div>
-        {{/if}}
     </div>
 </div>
 <div class="container-fluid gray-bg">
@@ -84,9 +76,6 @@
                             <ul class="nav nav-tabs ">
                                 <li role="properties" class="tab active"><a href="#tab-details" aria-controls="tab-details" role="tab" data-toggle="tab">Properties</a></li>
                                 <li role="tags"><a href="#tab-tagTable" aria-controls="tab-tagTable" role="tab" data-toggle="tab">Tags</a></li>
-                                {{#if taxonomy}}
-                                <li role="terms"><a href="#tab-termTable" aria-controls="tab-termTable" role="tab" data-toggle="tab">Terms</a></li>
-                                {{/if}}
                                 <li role="audits" class="tab"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
                                 <li role="schema" class="tab schemaTable" style="display:none"><a href="#tab-schema" aria-controls="tab-schema" role="tab" data-toggle="tab">Schema</a></li>
                                 <li role="profile" class="tab profileTab" style="display:none"><a href="#tab-profile" aria-controls="tab-profile" role="tab" data-toggle="tab">Profile</a></li>
@@ -108,13 +97,6 @@
                                 </div>
                             </div>
                         </div>
-                        <div id="tab-termTable" role="terms" class="tab-pane">
-                            <div id="r_termTableLayoutView">
-                                <div class="fontLoader-relative">
-                                    <i class="fa fa-refresh fa-spin-custom"></i>
-                                </div>
-                            </div>
-                        </div>
                         <div id="tab-audit" role="audits" class="tab-pane">
                             <div id="r_auditTableLayoutView">
                                 <div class="fontLoader-relative">

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html b/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
index 104c8de..31300b8 100644
--- a/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/schema/SchemaTableLayoutView_tmpl.html
@@ -22,7 +22,6 @@
                 <input type="checkbox" class="input" name="queryType" value="text" name="check" value="1" />Show historical entities</label>
         </div>
         <div class="clearfix inline">
-            <a href="javascript:void(0)" class="inputAssignTag multiSelectTerm btn btn-action btn-sm" style="display:none" data-id="addTerm"><i class="fa fa-plus"></i> Assign Term</a>
             <a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag btn btn-action btn-sm" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i> Assign Tag</a>
         </div>
     </div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
index 80960d4..87a89b3 100644
--- a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
@@ -36,8 +36,6 @@
                             <b>Show historical entities</b></label>
                     </div>
                     <div class="inline">
-                        {{#if taxonomy}}
-                        <a href="javascript:void(0)" class=" multiSelectTerm btn btn-action btn-sm inline" style="display:none" data-id="addTerm"><i class="fa fa-plus"></i> Assign Term</a> {{/if}}
                         <a href="javascript:void(0)" class=" multiSelectTag assignTag btn btn-action btn-sm" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i> Assign Tag</a>
                     </div>
                 </div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/site/Header.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/site/Header.html b/dashboardv2/public/js/templates/site/Header.html
new file mode 100644
index 0000000..4673688
--- /dev/null
+++ b/dashboardv2/public/js/templates/site/Header.html
@@ -0,0 +1,29 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<header class="clearfix">
+    <div class="btn-group pull-right header-menu ">
+        <a target="_blank" href="http://atlas.apache.org/"><i class="fa  fa-question-circle"></i></a>
+        <a href="javascript:void(0);" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="user-dropdown"><i class="fa fa-user user-circle "></i><span class="userName"></span></a>
+        <ul class="dropdown-menu">
+            <li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
+            <li role="separator" class="divider"></li>
+            <li>
+                <a href="logout.html"><i class="fa fa-sign-out"></i>Logout</a>
+            </li>
+        </ul>
+    </div>
+</header>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/site/SideNavLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/site/SideNavLayoutView_tmpl.html b/dashboardv2/public/js/templates/site/SideNavLayoutView_tmpl.html
new file mode 100644
index 0000000..b706609
--- /dev/null
+++ b/dashboardv2/public/js/templates/site/SideNavLayoutView_tmpl.html
@@ -0,0 +1,33 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<ul class="sidebar-nav">
+    <li class="sidebar-brand">
+        <a href="{{apiBaseUrl}}/index.html"><i class="fa fa-globe"></i> Apache Atlas</a>
+    </li>
+    <ul class="tabs" style="width: 100%;" role="tablist">
+        <li role="presentation" class="{{tabClass}}"><a href="#tab-search" aria-controls="tab-search" data-name="tab-search" role="tab" data-toggle="tab" class=""><i class="fa fa-search"></i> Search</a></li>
+        <li role="presentation" class="{{tabClass}}"><a href="#tab-tag" aria-controls="tab-tag" data-name="tab-tag" role="tab" data-toggle="tab"><i class="fa fa-tags"></i> Tags</a></li>
+    </ul>
+</ul>
+<div class="tab-content">
+    <div role="tabpanel" class="tab-pane" id="tab-tag">
+        <div id="r_tagLayoutView"></div>
+    </div>
+    <div role="tabpanel" class="tab-pane" id="tab-search">
+        <div id="r_searchLayoutView"></div>
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/site/header.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/site/header.html b/dashboardv2/public/js/templates/site/header.html
deleted file mode 100644
index 4673688..0000000
--- a/dashboardv2/public/js/templates/site/header.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<header class="clearfix">
-    <div class="btn-group pull-right header-menu ">
-        <a target="_blank" href="http://atlas.apache.org/"><i class="fa  fa-question-circle"></i></a>
-        <a href="javascript:void(0);" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="user-dropdown"><i class="fa fa-user user-circle "></i><span class="userName"></span></a>
-        <ul class="dropdown-menu">
-            <li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
-            <li role="separator" class="divider"></li>
-            <li>
-                <a href="logout.html"><i class="fa fa-sign-out"></i>Logout</a>
-            </li>
-        </ul>
-    </div>
-</header>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
new file mode 100644
index 0000000..a477532
--- /dev/null
+++ b/dashboardv2/public/js/templates/tag/AddTagModalView_tmpl.html
@@ -0,0 +1,37 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<div>
+    <div class="form-group hide">
+        {{#if tagModel}}
+        <h4>{{tagModel.typeName}}</h4> {{else}}
+        <select class="form-control row-margin-bottom" data-id="addTagOptions" required>
+        </select>
+        {{/if}}
+    </div>
+    <div class="row modalHeight">
+        <div class="col-sm-12">
+            <div class="attrLoader" style="margin-left:45%;display:none">
+                <i class="fa fa-refresh fa-spin-custom"></i>
+            </div>
+        </div>
+        <div class="col-sm-12" style="display:none">
+            <p>Tag Attributes(optional)</p>
+            <p class="text-gray">Add attribute values for this tag</p>
+            <div data-id="tagAttribute"></div>
+        </div>
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/tag/CreateTagLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/CreateTagLayoutView_tmpl.html b/dashboardv2/public/js/templates/tag/CreateTagLayoutView_tmpl.html
new file mode 100644
index 0000000..d9c5907
--- /dev/null
+++ b/dashboardv2/public/js/templates/tag/CreateTagLayoutView_tmpl.html
@@ -0,0 +1,54 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * 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>
+<form name="tagDefinitionform" class="hide form-horizontal" data-id="createTagForm">
+    <div class="form-group">
+        <label class="control-label col-sm-2 {{#if create}}required{{/if}}" for="name">Name</label>
+        {{#if create}}
+        <div class="col-sm-10">
+            <input class="form-control" data-id="tagName" placeholder="Name(required)" autofocus/>
+        </div>
+        {{else}}
+        <span class="ellipsis control-label text-left col-sm-10" data-id="title"></span> {{/if}}
+    </div>
+    <div class="form-group">
+        <label class="control-label col-sm-2" for="description">Description</label>
+        <div class="col-sm-10">
+            <input class="form-control" data-id="description" value="{{description}}" placeholder="Description" />
+        </div>
+    </div>
+    {{#if create}}
+    <div class="form-group">
+        <div class="col-md-12">
+            <label>Select tags to inherit attributes(optional)</label>
+            <p class="text-gray">Attributes define additional properties for the tag</p>
+            <select class="form-control" data-id="parentTagList" multiple="multiple"></select>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="col-sm-12">Attributes(optional)</label>
+        <div class="col-sm-12">
+            <button title="Add New Attribute" type="button" class="btn btn-action btn-sm" data-id="attributeData"><i class="fa fa-plus"></i> Add New Attributes</button>
+        </div>
+    </div>
+    {{/if}}
+    <div data-id="addAttributeDiv">
+    </div>
+    </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/tag/TagDetailTableLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/TagDetailTableLayoutView_tmpl.html b/dashboardv2/public/js/templates/tag/TagDetailTableLayoutView_tmpl.html
index 291f230..76f225a 100644
--- a/dashboardv2/public/js/templates/tag/TagDetailTableLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/tag/TagDetailTableLayoutView_tmpl.html
@@ -16,5 +16,5 @@
 -->
 <div>
     <div class="tableOverlay"></div>
-    <div id="r_tagTermTableLayoutView"></div>
+    <div id="r_tagTableLayoutView"></div>
 </div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index a477532..0000000
--- a/dashboardv2/public/js/templates/tag/addTagModalView_tmpl.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
--->
-<div>
-    <div class="form-group hide">
-        {{#if tagModel}}
-        <h4>{{tagModel.typeName}}</h4> {{else}}
-        <select class="form-control row-margin-bottom" data-id="addTagOptions" required>
-        </select>
-        {{/if}}
-    </div>
-    <div class="row modalHeight">
-        <div class="col-sm-12">
-            <div class="attrLoader" style="margin-left:45%;display:none">
-                <i class="fa fa-refresh fa-spin-custom"></i>
-            </div>
-        </div>
-        <div class="col-sm-12" style="display:none">
-            <p>Tag Attributes(optional)</p>
-            <p class="text-gray">Add attribute values for this tag</p>
-            <div data-id="tagAttribute"></div>
-        </div>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html b/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
deleted file mode 100644
index d9c5907..0000000
--- a/dashboardv2/public/js/templates/tag/createTagLayoutView_tmpl.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * 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>
-<form name="tagDefinitionform" class="hide form-horizontal" data-id="createTagForm">
-    <div class="form-group">
-        <label class="control-label col-sm-2 {{#if create}}required{{/if}}" for="name">Name</label>
-        {{#if create}}
-        <div class="col-sm-10">
-            <input class="form-control" data-id="tagName" placeholder="Name(required)" autofocus/>
-        </div>
-        {{else}}
-        <span class="ellipsis control-label text-left col-sm-10" data-id="title"></span> {{/if}}
-    </div>
-    <div class="form-group">
-        <label class="control-label col-sm-2" for="description">Description</label>
-        <div class="col-sm-10">
-            <input class="form-control" data-id="description" value="{{description}}" placeholder="Description" />
-        </div>
-    </div>
-    {{#if create}}
-    <div class="form-group">
-        <div class="col-md-12">
-            <label>Select tags to inherit attributes(optional)</label>
-            <p class="text-gray">Attributes define additional properties for the tag</p>
-            <select class="form-control" data-id="parentTagList" multiple="multiple"></select>
-        </div>
-    </div>
-    <div class="form-group">
-        <label class="col-sm-12">Attributes(optional)</label>
-        <div class="col-sm-12">
-            <button title="Add New Attribute" type="button" class="btn btn-action btn-sm" data-id="attributeData"><i class="fa fa-plus"></i> Add New Attributes</button>
-        </div>
-    </div>
-    {{/if}}
-    <div data-id="addAttributeDiv">
-    </div>
-    </div>
-</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/utils/CommonViewFunction.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index a3b6b91..d3153f5 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -42,14 +42,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
                 tagModel.deleteAssociation(options.guid, options.tagName, {
                     skipDefaultError: true,
                     success: function(data) {
-                        var msg = "Tag " + name.name + Messages.removeSuccessMessage;
-                        if (options.tagOrTerm === "term") {
-                            msg = "Term " + options.tagName + Messages.removeSuccessMessage;
-                        } else if (options.tagOrTerm === "tag") {
-                            msg = "Tag " + options.tagName + Messages.removeSuccessMessage;
-                        }
                         Utils.notifySuccess({
-                            content: msg
+                            content: "Tag " + options.tagName + Messages.removeSuccessMessage
                         });
                         if (options.callback) {
                             options.callback();
@@ -233,122 +227,6 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
         });
         return table;
     }
-    CommonViewFunction.breadcrumbUrlMaker = function(url) {
-        if (url) {
-            var urlList = [];
-            var splitURL = url.split("api/atlas/v1/taxonomies/");
-            if (splitURL.length > 1) {
-                var splitUrlWithoutTerm = splitURL[1].split("/terms/");
-                if (splitUrlWithoutTerm.length == 1) {
-                    splitUrlWithoutTerm = splitUrlWithoutTerm[0].split("/");
-                }
-            } else {
-                var splitUrlWithoutTerm = splitURL[0].split("/terms/");
-                if (splitUrlWithoutTerm.length == 1) {
-                    splitUrlWithoutTerm = splitUrlWithoutTerm[0].split("/");
-                }
-            }
-
-            var href = "";
-            for (var i in splitUrlWithoutTerm) {
-                if (i == 0) {
-                    href = splitUrlWithoutTerm[i];
-                    urlList.push({
-                        value: _.escape(splitUrlWithoutTerm[i]),
-                        href: href
-                    });
-                } else {
-                    href += "/terms/" + splitUrlWithoutTerm[i];
-                    urlList.push({
-                        value: _.escape(splitUrlWithoutTerm[i]),
-                        href: href
-                    });
-                };
-            }
-            return urlList;
-        }
-    }
-    CommonViewFunction.breadcrumbMaker = function(options) {
-        var li = "";
-        if (options.urlList) {
-            _.each(options.urlList, function(object) {
-                li += '<li><a class="link" href="#!/taxonomy/detailCatalog/api/atlas/v1/taxonomies/' + object.href + '?load=true">' + _.escape(object.value) + '</a></li>';
-            });
-        }
-        if (options.scope) {
-            options.scope.html(li);
-            options.scope.asBreadcrumbs("destroy");
-            options.scope.asBreadcrumbs({
-                namespace: 'breadcrumb',
-                overflow: "left",
-                responsive: false,
-                toggleIconClass: 'fa fa-ellipsis-h',
-                dropdown: function(classes) {
-                    var dropdownClass = 'dropdown';
-                    var dropdownMenuClass = 'dropdown-menu popover popoverTerm bottom arrowPosition';
-                    if (this.options.overflow === 'right') {
-                        dropdownMenuClass += ' dropdown-menu-right';
-                    }
-
-                    return '<li class="' + dropdownClass + ' ' + classes.dropdownClass + '">' +
-                        '<a href="javascript:void(0);" class="' + classes.toggleClass + '" data-toggle="dropdown">' +
-                        '<i class="' + classes.toggleIconClass + '"></i>' +
-                        '</a>' +
-                        '<ul class="' + dropdownMenuClass + ' ' + classes.dropdownMenuClass + '">' +
-                        '<div class="arrow"></div>' +
-                        '</ul>' +
-                        '</li>';
-                }
-            });
-        }
-    }
-    CommonViewFunction.termTableBreadcrumbMaker = function(obj) {
-        if (!obj) {
-            return "";
-        }
-        var traits = obj.classificationNames || _.pluck(obj.classifications, 'typeName'),
-            url = "",
-            deleteHtml = "",
-            html = "",
-            id = obj.guid,
-            terms = [],
-            entityName = Utils.getName(obj);
-        if (traits) {
-            traits.map(function(term) {
-                var checkTagOrTerm = Utils.checkTagOrTerm(term);
-                if (checkTagOrTerm.term) {
-                    terms.push({
-                        deleteHtml: '<a href="javascript:void(0)" class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + entityName + '" data-name="' + term + '" data-guid="' + obj.guid + '" ></i></a>',
-                        url: _.unescape(term).split(".").join("/"),
-                        name: term
-                    });
-                }
-            });
-        }
-        _.each(terms, function(obj, i) {
-            var className = "";
-            if (i >= 1) {
-                className += "showHideDiv hide";
-            }
-            obj['valueUrl'] = CommonViewFunction.breadcrumbUrlMaker(obj.url);
-            html += '<div class="' + className + '" dataterm-name="' + obj.name + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
-        })
-        if (terms.length > 1) {
-            html += '<div><a  href="javascript:void(0)" data-id="showMoreLessTerm" class="btn btn-action btn-sm btn-icon-pd"><span>Show More </span><i class="fa fa-angle-right"></i></a></div>'
-        }
-        if (!Enums.entityStateReadOnly[obj.status]) {
-            if (obj.guid) {
-                html += '<div><a href="javascript:void(0)" class="btn btn-action btn-sm" data-id="addTerm" data-guid="' + (obj.guid) + '"><i class="fa fa-plus"></i></a></div>'
-            } else {
-                html += '<div><a href="javascript:void(0)" class="btn btn-action btn-sm" data-id="addTerm"><i class="fa fa-plus"></i></a></div>'
-            }
-        }
-        return {
-            html: '<div class="termTableBreadcrumb btn-inline" dataterm-id="' + id + '">' + html + '</div>',
-            object: { scopeId: id, value: terms }
-        }
-
-    }
     CommonViewFunction.tagForTable = function(obj) {
         var traits = obj.classificationNames || _.pluck(obj.classifications, 'typeName'),
             atags = "",
@@ -358,17 +236,14 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
             entityName = Utils.getName(obj);
         if (traits) {
             traits.map(function(tag) {
-                var checkTagOrTerm = Utils.checkTagOrTerm(tag);
-                if (checkTagOrTerm.tag) {
-                    var className = "btn btn-action btn-sm btn-blue btn-icon",
-                        tagString = '<a class="' + className + '" data-id="tagClick"><span title="' + tag + '">' + tag + '</span><i class="fa fa-times" data-id="delete"  data-assetname="' + entityName + '"data-name="' + tag + '" data-type="tag" data-guid="' + obj.guid + '" ></i></a>';
-                    if (count >= 1) {
-                        popTag += tagString;
-                    } else {
-                        atags += tagString;
-                    }
-                    ++count;
+                var className = "btn btn-action btn-sm btn-blue btn-icon",
+                    tagString = '<a class="' + className + '" data-id="tagClick"><span title="' + tag + '">' + tag + '</span><i class="fa fa-times" data-id="delete"  data-assetname="' + entityName + '"data-name="' + tag + '" data-type="tag" data-guid="' + obj.guid + '" ></i></a>';
+                if (count >= 1) {
+                    popTag += tagString;
+                } else {
+                    atags += tagString;
                 }
+                ++count;
             });
         }
         if (!Enums.entityStateReadOnly[obj.status]) {
@@ -418,32 +293,6 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
 
         }
     }
-    CommonViewFunction.saveTermToAsset = function(options, that) {
-        require(['models/VCatalog'], function(Vcatalog) {
-            var VCatalog = new Vcatalog();
-            var name = options.termName;
-            ++that.asyncFetchCounter;
-            VCatalog.url = function() {
-                return "api/atlas/v1/entities/" + options.guid + "/tags/" + name;
-            };
-            VCatalog.save(null, {
-                success: function(data) {
-                    Utils.notifySuccess({
-                        content: "Term " + name + Messages.addTermToEntitySuccessMessage
-                    });
-                    if (options.collection) {
-                        options.collection.fetch({ reset: true });
-                    }
-                },
-                complete: function() {
-                    --that.asyncFetchCounter
-                    if (that.callback && that.asyncFetchCounter === 0) {
-                        that.callback(); // It will call to parent of parent Callback i.e callback of searchLayoutView
-                    }
-                }
-            });
-        })
-    }
     CommonViewFunction.generateObjectForSaveSearchApi = function(options) {
         var obj = {
             name: options.name,

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/utils/Globals.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Globals.js b/dashboardv2/public/js/utils/Globals.js
index 1b055ed..6225715 100644
--- a/dashboardv2/public/js/utils/Globals.js
+++ b/dashboardv2/public/js/utils/Globals.js
@@ -27,7 +27,6 @@ define(['require'], function(require) {
         tabState: {
             stateChanged: false,
             tagUrl: "#!/tag",
-            taxonomyUrl: "#!/taxonomy",
             searchUrl: "#!/search"
         },
         detailPageState: {}

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/utils/Messages.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/utils/Messages.js b/dashboardv2/public/js/utils/Messages.js
index 73d58a2..44604cf 100644
--- a/dashboardv2/public/js/utils/Messages.js
+++ b/dashboardv2/public/js/utils/Messages.js
@@ -23,10 +23,7 @@ define(['require'], function(require) {
         defaultErrorMessage: "Something went wrong",
         addSuccessMessage: " has been created successfully",
         addErrorMessage: " could not be Created",
-        addTermToEntitySuccessMessage: " has been added to entity",
-        deleteTerm: "Delete Term",
         removeTag: "Remove Tag Assignment",
-        removeTerm: "Remove Term Assignment",
         deleteSuccessMessage: " has been deleted successfully",
         deleteErrorMessage: " could not be deleted",
         removeSuccessMessage: " has been removed successfully",
@@ -48,8 +45,7 @@ define(['require'], function(require) {
         },
         tag: {
             addAttributeSuccessMessage: "Tag attribute is added successfully",
-            updateTagDescriptionMessage: "Tag description is updated successfully",
-            updateTermDescriptionMessage: "Term description is updated successfully"
+            updateTagDescriptionMessage: "Tag description is updated successfully"
         }
     };
     return Messages;


[2/4] atlas git commit: ATLAS-2217 : Remove all taxonomy reference from UI

Posted by kb...@apache.org.
http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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 bd825f3..c199243 100644
--- a/dashboardv2/public/js/views/schema/SchemaLayoutView.js
+++ b/dashboardv2/public/js/views/schema/SchemaLayoutView.js
@@ -44,9 +44,6 @@ define(['require',
             ui: {
                 tagClick: '[data-id="tagClick"]',
                 addTag: "[data-id='addTag']",
-                addTerm: '[data-id="addTerm"]',
-                showMoreLess: '[data-id="showMoreLess"]',
-                showMoreLessTerm: '[data-id="showMoreLessTerm"]',
                 addAssignTag: "[data-id='addAssignTag']",
                 checkDeletedEntity: "[data-id='checkDeletedEntity']"
             },
@@ -54,7 +51,6 @@ define(['require',
             events: function() {
                 var events = {};
                 events["click " + this.ui.addTag] = 'checkedValue';
-                events["click " + this.ui.addTerm] = 'checkedValue';
                 events["click " + this.ui.addAssignTag] = 'checkedValue';
                 events["click " + this.ui.tagClick] = function(e) {
                     if (e.target.nodeName.toLocaleLowerCase() == "i") {
@@ -68,15 +64,6 @@ define(['require',
                         });
                     }
                 };
-                events["click " + this.ui.showMoreLessTerm] = function(e) {
-                    $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
-                    $(e.currentTarget).parents('.searchTerm').find('div.termTableBreadcrumb>div.showHideDiv').toggleClass('hide');
-                    if ($(e.currentTarget).find('i').hasClass('fa-angle-right')) {
-                        $(e.currentTarget).find('span').text('Show More');
-                    } else {
-                        $(e.currentTarget).find('span').text('Show less');
-                    }
-                };
                 events["click " + this.ui.checkDeletedEntity] = 'onCheckDeletedEntity';
 
                 return events;
@@ -124,14 +111,8 @@ define(['require',
                         }
                     });
                     if (this.arr.length > 0) {
-                        if (Globals.taxonomy) {
-                            this.$('.multiSelectTerm').show();
-                        }
                         this.$('.multiSelectTag').show();
                     } else {
-                        if (Globals.taxonomy) {
-                            this.$('.multiSelectTerm').hide();
-                        }
                         this.$('.multiSelectTag').hide();
                     }
                 });
@@ -190,9 +171,7 @@ define(['require',
                     that.RSchemaTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
                         columns: columns
                     })));
-                    that.$('.multiSelectTerm').hide();
                     that.$('.multiSelectTag').hide();
-                    that.renderBreadcrumb();
                     Utils.generatePopover({
                         el: that.$('[data-id="showMoreLess"]'),
                         contentClass: 'popover-tag',
@@ -206,15 +185,6 @@ define(['require',
                     });
                 });
             },
-            renderBreadcrumb: function() {
-                var that = this;
-                _.each(this.bradCrumbList, function(object) {
-                    _.each(object.value, function(subObj) {
-                        var scopeObject = that.$('[dataterm-id="' + object.scopeId + '"]').find('[dataterm-name="' + subObj.name + '"] .liContent');
-                        CommonViewFunction.breadcrumbMaker({ urlList: subObj.valueUrl, scope: scopeObject });
-                    });
-                });
-            },
             getSchemaTableColumns: function() {
                 var that = this,
                     col = {
@@ -270,31 +240,6 @@ define(['require',
                             }
                         })
                     };
-                    if (Globals.taxonomy) {
-                        col['terms'] = {
-                            label: "Terms",
-                            cell: "Html",
-                            editable: false,
-                            sortable: false,
-                            orderable: true,
-                            className: 'searchTerm',
-                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
-                                fromRaw: function(rawValue, model) {
-                                    var obj = model.toJSON();
-                                    var returnObject = CommonViewFunction.termTableBreadcrumbMaker(obj);
-                                    if (returnObject.object) {
-                                        that.bradCrumbList.push(returnObject.object);
-                                    }
-                                    if (obj.status && Enums.entityStateReadOnly[obj.status]) {
-                                        return '<div class="readOnly">' + returnObject.html + '</div>';
-                                    } else {
-                                        return returnObject.html;
-                                    }
-
-                                }
-                            })
-                        };
-                    }
                     return this.schemaCollection.constructor.getTableCols(col, this.schemaCollection);
                 }
 
@@ -305,29 +250,18 @@ define(['require',
                 }
                 var guid = "",
                     that = this,
-                    isTagMultiSelect = $(e.currentTarget).hasClass('multiSelectTag'),
-                    isTermMultiSelect = $(e.currentTarget).hasClass('multiSelectTerm'),
-                    isTagButton = $(e.currentTarget).hasClass('assignTag');
-                if (isTagButton) {
-                    if (isTagMultiSelect && this.arr && this.arr.length) {
-                        that.addTagModalView(guid, this.arr);
-                    } else {
-                        guid = that.$(e.currentTarget).data("guid");
-                        that.addTagModalView(guid);
-                    }
+                    isTagMultiSelect = $(e.currentTarget).hasClass('multiSelectTag');
+                if (isTagMultiSelect && this.arr && this.arr.length) {
+                    that.addTagModalView(guid, this.arr);
                 } else {
-                    if (isTermMultiSelect && this.arr && this.arr.length) {
-                        that.addTermModalView(guid, this.arr);
-                    } else {
-                        guid = that.$(e.currentTarget).data("guid");
-                        that.addTermModalView(guid);
-                    }
+                    guid = that.$(e.currentTarget).data("guid");
+                    that.addTagModalView(guid);
                 }
             },
             addTagModalView: function(guid, multiple) {
                 var that = this;
                 var tagList = that.schemaCollection.find({ 'guid': guid });
-                require(['views/tag/addTagModalView'], function(AddTagModalView) {
+                require(['views/tag/AddTagModalView'], function(AddTagModalView) {
                     var view = new AddTagModalView({
                         guid: guid,
                         multiple: multiple,
@@ -342,71 +276,40 @@ define(['require',
                         showLoader: that.showLoader.bind(that),
                         enumDefCollection: that.enumDefCollection
                     });
-                    // view.saveTagData = function() {
-                    //override saveTagData function 
-                    // }
-                });
-            },
-            addTermModalView: function(guid, multiple) {
-
-                var that = this;
-                require([
-                    'views/business_catalog/AddTermToEntityLayoutView',
-                ], function(AddTermToEntityLayoutView) {
-                    var view = new AddTermToEntityLayoutView({
-                        guid: guid,
-                        multiple: multiple,
-                        callback: function(termName) {
-                            that.fetchCollection();
-                            that.arr = [];
-                        },
-                        hideLoader: that.hideLoader.bind(that),
-                        showLoader: that.showLoader.bind(that)
-                    });
                 });
             },
             onClickTagCross: function(e) {
-                var tagName = $(e.target).data("name"),
+                var that = this,
+                    tagName = $(e.target).data("name"),
                     guid = $(e.target).data("guid"),
                     assetName = $(e.target).data("assetname"),
-                    tagOrTerm = $(e.target).data("type"),
-                    that = this;
-                if (tagOrTerm === "term") {
-                    var modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
-                        titleMessage: Messages.removeTerm,
-                        buttonText: "Remove"
-                    });
-                } else if (tagOrTerm === "tag") {
-                    var modal = CommonViewFunction.deleteTagModel({
+                    modal = CommonViewFunction.deleteTagModel({
                         msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
                         titleMessage: Messages.removeTag,
                         buttonText: "Remove"
                     });
-                }
+
                 if (modal) {
                     modal.on('ok', function() {
-                        that.deleteTagData(e, tagOrTerm);
+                        that.deleteTagData({
+                            'tagName': tagName,
+                            'guid': guid
+                        });
                     });
                     modal.on('closeModal', function() {
                         modal.trigger('cancel');
                     });
                 }
             },
-            deleteTagData: function(e, tagOrTerm) {
-                var that = this,
-                    tagName = $(e.target).data("name"),
-                    guid = $(e.target).data("guid");
-                CommonViewFunction.deleteTag({
-                    'tagName': tagName,
-                    'guid': guid,
-                    'tagOrTerm': tagOrTerm,
+            deleteTagData: function(options) {
+                var that = this;
+                CommonViewFunction.deleteTag(_.extend({}, options, {
                     showLoader: that.showLoader.bind(that),
                     hideLoader: that.hideLoader.bind(that),
                     callback: function() {
                         that.fetchCollection();
                     }
-                });
+                }));
             },
             onCheckDeletedEntity: function(e) {
                 if (e.target.checked) {

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/search/SearchLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js b/dashboardv2/public/js/views/search/SearchLayoutView.js
index 5ece1c2..d11e985 100644
--- a/dashboardv2/public/js/views/search/SearchLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchLayoutView.js
@@ -429,10 +429,7 @@ define(['require',
                         typeStr += '<option>' + (name) + '</option>';
                     }
                     if (model.get('category') == 'CLASSIFICATION') {
-                        var checkTagOrTerm = Utils.checkTagOrTerm(name);
-                        if (checkTagOrTerm.tag) {
-                            tagStr += '<option>' + (name) + '</option>';
-                        }
+                        tagStr += '<option>' + (name) + '</option>';
                     }
                 });
                 that.ui.typeLov.html(typeStr);

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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 ffca16c..2e8c165 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -51,9 +51,6 @@ define(['require',
             ui: {
                 tagClick: '[data-id="tagClick"]',
                 addTag: '[data-id="addTag"]',
-                addTerm: '[data-id="addTerm"]',
-                showMoreLess: '[data-id="showMoreLess"]',
-                showMoreLessTerm: '[data-id="showMoreLessTerm"]',
                 paginationDiv: '[data-id="paginationDiv"]',
                 previousData: "[data-id='previousData']",
                 nextData: "[data-id='nextData']",
@@ -72,8 +69,7 @@ define(['require',
             templateHelpers: function() {
                 return {
                     entityCreate: Globals.entityCreate,
-                    searchType: this.searchType,
-                    taxonomy: Globals.taxonomy
+                    searchType: this.searchType
                 };
             },
             /** ui events hash */
@@ -85,24 +81,13 @@ define(['require',
                     if (e.target.nodeName.toLocaleLowerCase() == "i") {
                         this.onClickTagCross(e);
                     } else {
-                        if (scope.hasClass('term')) {
-                            var url = scope.data('href').split(".").join("/terms/");
-                            this.triggerUrl({
-                                url: '#!/taxonomy/detailCatalog' + UrlLinks.taxonomiesApiUrl() + '/' + url,
-                                urlParams: null,
-                                mergeBrowserUrl: false,
-                                trigger: true,
-                                updateTabState: null
-                            });
-                        } else {
-                            this.triggerUrl({
-                                url: '#!/tag/tagAttribute/' + scope.text(),
-                                urlParams: null,
-                                mergeBrowserUrl: false,
-                                trigger: true,
-                                updateTabState: null
-                            });
-                        }
+                        this.triggerUrl({
+                            url: '#!/tag/tagAttribute/' + scope.text(),
+                            urlParams: null,
+                            mergeBrowserUrl: false,
+                            trigger: true,
+                            updateTabState: null
+                        });
                     }
                 };
                 events["keyup " + this.ui.gotoPage] = function(e) {
@@ -122,18 +107,7 @@ define(['require',
                 events["change " + this.ui.showPage] = 'changePageLimit';
                 events["click " + this.ui.gotoPagebtn] = 'gotoPagebtn';
                 events["click " + this.ui.addTag] = 'checkedValue';
-                events["click " + this.ui.addTerm] = 'checkedValue';
                 events["click " + this.ui.addAssignTag] = 'checkedValue';
-                events["click " + this.ui.showMoreLessTerm] = function(e) {
-                    e.stopPropagation();
-                    $(e.currentTarget).find('i').toggleClass('fa fa-angle-right fa fa-angle-up');
-                    $(e.currentTarget).parents('.searchTerm').find('div.termTableBreadcrumb>div.showHideDiv').toggleClass('hide');
-                    if ($(e.currentTarget).find('i').hasClass('fa-angle-right')) {
-                        $(e.currentTarget).find('span').text('Show More');
-                    } else {
-                        $(e.currentTarget).find('span').text('Show less');
-                    }
-                };
                 events["click " + this.ui.nextData] = "onClicknextData";
                 events["click " + this.ui.previousData] = "onClickpreviousData";
                 events["click " + this.ui.createEntity] = 'onClickCreateEntity';
@@ -190,7 +164,6 @@ define(['require',
                     }
                     this.searchCollection.find(function(item) {
                         if (item.get('isEnable')) {
-                            var term = [];
                             var obj = item.toJSON();
                             that.arr.push({
                                 id: obj.guid,
@@ -200,14 +173,8 @@ define(['require',
                     });
 
                     if (this.arr.length > 0) {
-                        if (Globals.taxonomy) {
-                            this.$('.multiSelectTerm').show();
-                        }
                         this.$('.multiSelectTag').show();
                     } else {
-                        if (Globals.taxonomy) {
-                            this.$('.multiSelectTerm').hide();
-                        }
                         this.$('.multiSelectTag').hide();
                     }
                 });
@@ -232,7 +199,7 @@ define(['require',
                         this.updateColumnList(state);
                         var excludeDefaultColumn = [];
                         if (this.value && this.value.type) {
-                            excludeDefaultColumn = _.without(this.searchTableColumns[this.value.type], "selected", "name", "description", "typeName", "owner", "tag", "terms");
+                            excludeDefaultColumn = _.without(this.searchTableColumns[this.value.type], "selected", "name", "description", "typeName", "owner", "tag");
                             if (this.searchTableColumns[this.value.type] === null) {
                                 this.ui.columnEmptyInfo.show();
                             } else {
@@ -357,7 +324,7 @@ define(['require',
                 }
 
                 if (isPostMethod && isSearchTab) {
-                    var excludeDefaultColumn = this.value.type && this.searchTableColumns ? _.without(this.searchTableColumns[this.value.type], "selected", "name", "description", "typeName", "owner", "tag", "terms") : null,
+                    var excludeDefaultColumn = this.value.type && this.searchTableColumns ? _.without(this.searchTableColumns[this.value.type], "selected", "name", "description", "typeName", "owner", "tag") : null,
                         filterObj = {
                             'entityFilters': entityFilters,
                             'tagFilters': tagFilters,
@@ -544,19 +511,9 @@ define(['require',
                         that.ui.containerCheckBox.hide();
                     }
                     that.$(".ellipsis .inputAssignTag").hide();
-                    that.renderBreadcrumb();
                     that.checkTableFetch();
                 });
             },
-            renderBreadcrumb: function() {
-                var that = this;
-                _.each(this.bradCrumbList, function(object) {
-                    _.each(object.value, function(subObj) {
-                        var scopeObject = that.$('[dataterm-id="' + object.scopeId + '"]').find('[dataterm-name="' + subObj.name + '"] .liContent');
-                        CommonViewFunction.breadcrumbMaker({ urlList: subObj.valueUrl, scope: scopeObject });
-                    });
-                });
-            },
             checkTableFetch: function() {
                 if (this.asyncFetchCounter <= 0) {
                     this.hideLoader();
@@ -688,7 +645,7 @@ define(['require',
                             }
                         })
                     };
-                    this.getTagTermCol({ 'col': col, 'columnToShow': columnToShow });
+                    this.getTagCol({ 'col': col, 'columnToShow': columnToShow });
 
                     if (this.value && this.value.searchType === "basic") {
                         var def = this.entityDefCollection.fullCollection.find({ name: this.value.type });
@@ -781,7 +738,7 @@ define(['require',
                 }
                 return this.searchCollection.constructor.getTableCols(col, this.searchCollection);
             },
-            getTagTermCol: function(options) {
+            getTagCol: function(options) {
                 var that = this,
                     columnToShow = options.columnToShow,
                     col = options.col;
@@ -807,37 +764,11 @@ define(['require',
                             }
                         })
                     };
-                    if (Globals.taxonomy) {
-                        col['terms'] = {
-                            label: "Terms",
-                            cell: "Html",
-                            editable: false,
-                            sortable: false,
-                            resizeable: true,
-                            orderable: true,
-                            renderable: (columnToShow ? _.contains(columnToShow, 'terms') : true),
-                            className: 'searchTerm',
-                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
-                                fromRaw: function(rawValue, model) {
-                                    var obj = model.toJSON();
-                                    var returnObject = CommonViewFunction.termTableBreadcrumbMaker(obj);
-                                    if (returnObject.object) {
-                                        that.bradCrumbList.push(returnObject.object);
-                                    }
-                                    if (obj.status && Enums.entityStateReadOnly[obj.status]) {
-                                        return '<div class="readOnly">' + returnObject.html + '</div>';
-                                    } else {
-                                        return returnObject.html;
-                                    }
-                                }
-                            })
-                        };
-                    }
                 }
             },
             addTagModalView: function(guid, multiple) {
                 var that = this;
-                require(['views/tag/addTagModalView'], function(AddTagModalView) {
+                require(['views/tag/AddTagModalView'], function(AddTagModalView) {
                     var view = new AddTagModalView({
                         guid: guid,
                         multiple: multiple,
@@ -883,84 +814,45 @@ define(['require',
             checkedValue: function(e) {
                 var guid = "",
                     that = this,
-                    isTagMultiSelect = $(e.currentTarget).hasClass('multiSelectTag'),
-                    isTermMultiSelect = $(e.currentTarget).hasClass('multiSelectTerm'),
-                    isTagButton = $(e.currentTarget).hasClass('assignTag');
-                if (isTagButton) {
-                    if (isTagMultiSelect && this.arr && this.arr.length) {
-                        that.addTagModalView(guid, this.arr);
-                    } else {
-                        guid = that.$(e.currentTarget).data("guid");
-                        that.addTagModalView(guid);
-                    }
+                    isTagMultiSelect = $(e.currentTarget).hasClass('multiSelectTag');
+                if (isTagMultiSelect && this.arr && this.arr.length) {
+                    that.addTagModalView(guid, this.arr);
                 } else {
-                    if (isTermMultiSelect && this.arr && this.arr.length) {
-                        that.addTermModalView(guid, this.arr);
-                    } else {
-                        guid = that.$(e.currentTarget).data("guid");
-                        that.addTermModalView(guid);
-                    }
+                    guid = that.$(e.currentTarget).data("guid");
+                    that.addTagModalView(guid);
                 }
             },
-            addTermModalView: function(guid, multiple) {
-                var that = this;
-                require([
-                    'views/business_catalog/AddTermToEntityLayoutView',
-                ], function(AddTermToEntityLayoutView) {
-                    var view = new AddTermToEntityLayoutView({
-                        guid: guid,
-                        multiple: multiple,
-                        callback: function() {
-                            that.fetchCollection();
-                            that.arr = [];
-                        },
-                        showLoader: that.showLoader.bind(that),
-                        hideLoader: that.hideLoader.bind(that)
-                    });
-                });
-            },
             onClickTagCross: function(e) {
-                var tagName = $(e.target).data("name"),
+                var that = this,
+                    tagName = $(e.target).data("name"),
                     guid = $(e.target).data("guid"),
                     assetName = $(e.target).data("assetname"),
-                    tagOrTerm = $(e.target).data("type"),
-                    that = this;
-                if (tagOrTerm === "term") {
-                    var modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
-                        titleMessage: Messages.removeTerm,
-                        buttonText: "Remove"
-                    });
-                } else if (tagOrTerm === "tag") {
-                    var modal = CommonViewFunction.deleteTagModel({
+                    modal = CommonViewFunction.deleteTagModel({
                         msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + assetName + " ?</b></div>",
                         titleMessage: Messages.removeTag,
                         buttonText: "Remove"
                     });
-                }
                 if (modal) {
                     modal.on('ok', function() {
-                        that.deleteTagData(e, tagOrTerm);
+                        that.deleteTagData({
+                            'tagName': tagName,
+                            'guid': guid
+                        });
                     });
                     modal.on('closeModal', function() {
                         modal.trigger('cancel');
                     });
                 }
             },
-            deleteTagData: function(e, tagOrTerm) {
-                var that = this,
-                    tagName = $(e.target).data("name"),
-                    guid = $(e.target).data("guid");
-                CommonViewFunction.deleteTag({
-                    'tagName': tagName,
-                    'guid': guid,
-                    'tagOrTerm': tagOrTerm,
+            deleteTagData: function(options) {
+                var that = this;
+                CommonViewFunction.deleteTag(_.extend({}, options, {
                     showLoader: that.showLoader.bind(that),
                     hideLoader: that.hideLoader.bind(that),
                     callback: function() {
                         that.fetchCollection();
                     }
-                });
+                }));
             },
             onClicknextData: function() {
                 this.offset = this.offset + this.limit;

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/site/Header.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/site/Header.js b/dashboardv2/public/js/views/site/Header.js
index f53d3e8..7ce18af 100644
--- a/dashboardv2/public/js/views/site/Header.js
+++ b/dashboardv2/public/js/views/site/Header.js
@@ -17,7 +17,7 @@
  */
 
 define(['require',
-    'hbs!tmpl/site/header',
+    'hbs!tmpl/site/Header',
     'utils/CommonViewFunction',
     'utils/Globals'
 ], function(require, tmpl, CommonViewFunction, Globals) {

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/site/SideNavLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/site/SideNavLayoutView.js b/dashboardv2/public/js/views/site/SideNavLayoutView.js
new file mode 100644
index 0000000..04ab118
--- /dev/null
+++ b/dashboardv2/public/js/views/site/SideNavLayoutView.js
@@ -0,0 +1,125 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+define(['require',
+    'hbs!tmpl/site/SideNavLayoutView_tmpl',
+    'utils/Utils',
+    'utils/Globals',
+    'utils/UrlLinks'
+], function(require, tmpl, Utils, Globals, UrlLinks) {
+    'use strict';
+
+    var SideNavLayoutView = Marionette.LayoutView.extend({
+        template: tmpl,
+
+        regions: {
+            RBusinessCatalogLayoutView: "#r_businessCatalogLayoutView",
+            RTagLayoutView: "#r_tagLayoutView",
+            RSearchLayoutView: "#r_searchLayoutView",
+        },
+        ui: {
+            tabs: '.tabs li a',
+        },
+        templateHelpers: function() {
+            return {
+                tabClass: this.tabClass,
+                apiBaseUrl: UrlLinks.apiBaseUrl
+            };
+        },
+        events: function() {
+            var events = {},
+                that = this;
+            events["click " + this.ui.tabs] = function(e) {
+                var urlString = "",
+                    elementName = $(e.currentTarget).data(),
+                    tabStateUrls = Globals.saveApplicationState.tabState,
+                    urlStateObj = Utils.getUrlState,
+                    hashUrl = Utils.getUrlState.getQueryUrl().hash;
+
+                if (urlStateObj.isTagTab()) {
+                    if (hashUrl != tabStateUrls.tagUrl) {
+                        Globals.saveApplicationState.tabState.tagUrl = hashUrl;
+                    }
+                } else if (urlStateObj.isSearchTab()) {
+                    if (hashUrl != tabStateUrls.searchUrl) {
+                        Globals.saveApplicationState.tabState.searchUrl = hashUrl;
+                    }
+                }
+
+                if (elementName.name == "tab-tag") {
+                    urlString = tabStateUrls.tagUrl; //'#!/tag';
+                } else if (elementName.name == "tab-search") {
+                    urlString = tabStateUrls.searchUrl; // '#!/search';
+                }
+                Utils.setUrl({
+                    url: urlString,
+                    mergeBrowserUrl: false,
+                    trigger: true,
+                    updateTabState: true
+                });
+            };
+            return events;
+        },
+        initialize: function(options) {
+            _.extend(this, _.pick(options, 'url', 'value', 'tag', 'selectFirst', 'classificationDefCollection', 'typeHeaders', 'searchVent', 'entityDefCollection', 'enumDefCollection', 'searchTableColumns', 'searchTableFilters'));
+            this.tabClass = "tab col-sm-6";
+        },
+        onRender: function() {
+            this.renderTagLayoutView();
+            this.renderSearchLayoutView();
+            this.selectTab();
+
+        },
+        renderTagLayoutView: function() {
+            var that = this;
+            require(['views/tag/TagLayoutView'], function(TagLayoutView) {
+                that.RTagLayoutView.show(new TagLayoutView({
+                    collection: that.classificationDefCollection,
+                    tag: that.tag,
+                    value: that.value,
+                    typeHeaders: that.typeHeaders
+                }));
+            });
+        },
+        renderSearchLayoutView: function() {
+            var that = this;
+            require(['views/search/SearchLayoutView'], function(SearchLayoutView) {
+                that.RSearchLayoutView.show(new SearchLayoutView({
+                    value: that.value,
+                    searchVent: that.searchVent,
+                    typeHeaders: that.typeHeaders,
+                    entityDefCollection: that.entityDefCollection,
+                    enumDefCollection: that.enumDefCollection,
+                    classificationDefCollection: that.classificationDefCollection,
+                    searchTableColumns: that.searchTableColumns,
+                    searchTableFilters: that.searchTableFilters
+                }));
+            });
+        },
+        selectTab: function() {
+            if (Utils.getUrlState.isTagTab()) {
+                this.$('.tabs').find('li a[aria-controls="tab-tag"]').parents('li').addClass('active').siblings().removeClass('active');
+                this.$('.tab-content').find('div#tab-tag').addClass('active').siblings().removeClass('active');
+            } else if (Utils.getUrlState.isSearchTab() || (Utils.getUrlState.isDetailPage()) || Utils.getUrlState.isInitial()) {
+                this.$('.tabs').find('li a[aria-controls="tab-search"]').parents('li').addClass('active').siblings().removeClass('active');
+                this.$('.tab-content').find('div#tab-search').addClass('active').siblings().removeClass('active');
+            }
+        },
+    });
+    return SideNavLayoutView;
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
new file mode 100644
index 0000000..52dd623
--- /dev/null
+++ b/dashboardv2/public/js/views/tag/AddTagModalView.js
@@ -0,0 +1,380 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+define(['require',
+    'hbs!tmpl/tag/AddTagModalView_tmpl',
+    'collection/VTagList',
+    'collection/VCommonList',
+    'modules/Modal',
+    'models/VEntity',
+    'utils/Utils',
+    'utils/UrlLinks',
+    'utils/Enums',
+    'utils/Messages',
+    'daterangepicker'
+], function(require, AddTagModalViewTmpl, VTagList, VCommonList, Modal, VEntity, Utils, UrlLinks, Enums, Messages) {
+    'use strict';
+
+    var AddTagModel = Marionette.LayoutView.extend({
+        template: AddTagModalViewTmpl,
+        templateHelpers: function() {
+            return {
+                tagModel: this.tagModel
+            };
+        },
+
+        regions: {},
+        ui: {
+            addTagOptions: "[data-id='addTagOptions']",
+            tagAttribute: "[data-id='tagAttribute']"
+        },
+        events: function() {
+            var events = {};
+            events["change " + this.ui.addTagOptions] = 'onChangeTagDefination';
+            return events;
+        },
+        /**
+         * intialize a new AddTagModel Layout
+         * @constructs
+         */
+        initialize: function(options) {
+            _.extend(this, _.pick(options, 'modalCollection', 'guid', 'callback', 'multiple', 'showLoader', 'hideLoader', 'tagList', 'tagModel', 'enumDefCollection'));
+            this.collection = new VTagList();
+            this.commonCollection = new VTagList();
+            var that = this,
+                modalObj = {
+                    title: 'Add Tag',
+                    content: this,
+                    okText: 'Add',
+                    cancelText: "Cancel",
+                    allowCancel: true,
+                };
+            if (this.tagModel) {
+                modalObj.title = 'Edit Tag';
+                modalObj.okText = 'Update';
+            }
+            this.modal = new Modal(modalObj).open();
+            this.modal.$el.find('button.ok').attr("disabled", true);
+            this.on('ok', function() {
+                var tagName = this.tagModel ? this.tagModel.typeName : this.ui.addTagOptions.val(),
+                    tagAttributes = {},
+                    tagAttributeNames = this.$(".attrName"),
+                    obj = {
+                        tagName: tagName,
+                        tagAttributes: tagAttributes,
+                        guid: [],
+                        skipEntity: [],
+                        deletedEntity: []
+                    };
+                tagAttributeNames.each(function(i, item) {
+                    var selection = $(item).data("key");
+                    var datatypeSelection = $(item).data("type");
+                    if (datatypeSelection === "date") {
+                        tagAttributes[selection] = Date.parse($(item).val()) || null;
+                    } else {
+                        tagAttributes[selection] = $(item).val() || null;
+                    }
+                });
+
+                if (that.multiple) {
+                    _.each(that.multiple, function(entity, i) {
+                        var name = Utils.getName(entity.model);
+                        if (Enums.entityStateReadOnly[entity.model.status]) {
+                            obj.deletedEntity.push(name);
+                        } else {
+                            if (_.indexOf((entity.model.classificationNames || _.pluck(entity.model.classifications, 'typeName')), tagName) === -1) {
+                                obj.guid.push(entity.model.guid)
+                            } else {
+                                obj.skipEntity.push(name);
+                            }
+                        }
+                    });
+                    if (obj.deletedEntity.length) {
+                        Utils.notifyError({
+                            html: true,
+                            content: "<b>" + obj.deletedEntity.join(', ') +
+                                "</b> " + (obj.deletedEntity.length === 1 ? "entity " : "entities ") +
+                                Messages.assignDeletedEntity
+                        });
+                    }
+                    if (obj.skipEntity.length) {
+                        var text = "<b>" + obj.skipEntity.length + " of " + that.multiple.length +
+                            "</b> entities selected have already been associated with <b>" + tagName +
+                            "</b> tag, Do you want to associate the tag with other entities ?",
+                            removeCancelButton = false;
+                        if ((obj.skipEntity.length + obj.deletedEntity.length) === that.multiple.length) {
+                            text = (obj.skipEntity.length > 1 ? "All selected" : "Selected") + " entities have already been associated with <b>" + tagName + "</b> tag";
+                            removeCancelButton = true;
+                        }
+                        var notifyObj = {
+                            text: text,
+                            modal: true,
+                            ok: function(argument) {
+                                if (obj.guid.length) {
+                                    that.saveTagData(obj);
+                                } else {
+                                    that.hideLoader();
+                                }
+                            },
+                            cancel: function(argument) {
+                                that.hideLoader();
+                                obj = {
+                                    tagName: tagName,
+                                    tagAttributes: tagAttributes,
+                                    guid: [],
+                                    skipEntity: [],
+                                    deletedEntity: []
+                                }
+                            }
+                        }
+                        if (removeCancelButton) {
+                            notifyObj['confirm'] = {
+                                confirm: true,
+                                buttons: [{
+                                        text: 'Ok',
+                                        addClass: 'btn-atlas btn-md',
+                                        click: function(notice) {
+                                            notice.remove();
+                                            obj = {
+                                                tagName: tagName,
+                                                tagAttributes: tagAttributes,
+                                                guid: [],
+                                                skipEntity: [],
+                                                deletedEntity: []
+                                            }
+                                        }
+                                    },
+                                    null
+                                ]
+                            }
+                        }
+                        Utils.notifyConfirm(notifyObj)
+                    } else {
+                        if (obj.guid.length) {
+                            that.saveTagData(obj);
+                        } else {
+                            that.hideLoader();
+                        }
+                    }
+                } else {
+                    obj.guid.push(that.guid);
+                    that.saveTagData(obj);
+                }
+            });
+            this.on('closeModal', function() {
+                this.modal.trigger('cancel');
+            });
+            this.bindEvents();
+        },
+
+        onRender: function() {
+            var that = this;
+            $.extend(this.collection.queryParams, { type: 'classification' });
+            this.hideAttributeBox();
+            this.collection.fetch({
+                reset: true,
+                complete: function() {
+                    if (that.tagModel) {
+                        that.fetchTagSubData(that.tagModel.typeName);
+                    }
+                    that.showAttributeBox();
+                },
+            });
+        },
+        bindEvents: function() {
+            var that = this;
+            this.enumArr = [];
+            this.listenTo(this.collection, 'reset', function() {
+                this.tagsCollection();
+            }, this);
+            this.listenTo(this.commonCollection, 'reset', function() {
+                this.subAttributeData();
+            }, this);
+        },
+        tagsCollection: function() {
+            var that = this;
+            this.collection.fullCollection.comparator = function(model) {
+                return Utils.getName(model.toJSON(), 'name').toLowerCase();
+            }
+
+            var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>';
+            this.collection.fullCollection.sort().each(function(obj, key) {
+                var name = Utils.getName(obj.toJSON(), 'name');
+                // using obj.get('name') insted of name variable because if html is presen in name then escaped name will not found in tagList.
+                if (_.indexOf(that.tagList, obj.get('name')) === -1) {
+                    str += '<option ' + (that.tagModel && that.tagModel.typeName === name ? 'selected' : '') + '>' + name + '</option>';
+                }
+            });
+            this.ui.addTagOptions.html(str);
+            this.ui.addTagOptions.select2({
+                placeholder: "Select Tag",
+                allowClear: false
+            });
+        },
+        onChangeTagDefination: function() {
+            this.ui.addTagOptions.select2("open").select2("close");
+            this.ui.tagAttribute.empty();
+            var saveBtn = this.modal.$el.find('button.ok');
+            saveBtn.prop("disabled", false);
+            var tagname = this.ui.addTagOptions.val();
+            this.hideAttributeBox();
+            this.fetchTagSubData(tagname);
+        },
+        fetchTagSubData: function(tagname) {
+            var attributeDefs = Utils.getNestedSuperTypeObj({
+                data: this.collection.fullCollection.find({ name: tagname }).toJSON(),
+                collection: this.collection,
+                attrMerge: true
+            });
+            this.subAttributeData(attributeDefs);
+        },
+        showAttributeBox: function() {
+            var that = this;
+            this.$('.attrLoader').hide();
+            this.$('.form-group.hide').removeClass('hide');
+            if (this.ui.tagAttribute.children().length !== 0) {
+                this.ui.tagAttribute.parent().show();
+            }
+            this.ui.tagAttribute.find('input,select').on("keyup change", function(e) {
+                if (e.keyCode != 32) {
+                    that.modal.$el.find('button.ok').attr("disabled", false);
+                }
+            });
+        },
+        hideAttributeBox: function() {
+            this.ui.tagAttribute.children().empty();
+            this.ui.tagAttribute.parent().hide();
+            this.$('.attrLoader').show();
+        },
+        subAttributeData: function(attributeDefs) {
+            var that = this;
+            if (attributeDefs) {
+                _.each(attributeDefs, function(obj) {
+                    var name = Utils.getName(obj, 'name');
+                    var typeName = Utils.getName(obj, 'typeName');
+                    var typeNameValue = that.enumDefCollection.fullCollection.findWhere({ 'name': typeName });
+                    if (typeNameValue) {
+                        var str = '<option value=""' + (!that.tagModel ? 'selected' : '') + '>-- Select ' + typeName + " --</option>";
+                        var enumValue = typeNameValue.get('elementDefs');
+                        _.each(enumValue, function(key, value) {
+                            str += '<option ' + ((that.tagModel && key.value === that.tagModel.attributes[name]) ? 'selected' : '') + '>' + key.value + '</option>';
+                        })
+                        that.ui.tagAttribute.append('<div class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' +
+                            '<select class="form-control attributeInputVal attrName" data-key="' + name + '">' + str + '</select></div>');
+                    } else {
+                        var textElement = that.getElement(name, typeName);
+                        that.ui.tagAttribute.append('<div class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' + textElement + '</div>');
+                    }
+                });
+                that.$('input[data-type="date"]').each(function() {
+                    if (!$(this).data('daterangepicker')) {
+                        var dateObj = {
+                            "singleDatePicker": true,
+                            "showDropdowns": true,
+                            "timePicker": true,
+                            locale: {
+                                format: 'MM/DD/YYYY h:mm A'
+                            }
+                        };
+                        if (that.tagModel) {
+                            var formatDate = Number(this.value);
+                            dateObj["startDate"] = new Date(formatDate);
+                        }
+                        $(this).daterangepicker(dateObj);
+                    }
+                });
+                that.$('select[data-type="boolean"]').each(function() {
+                    var labelName = $(this).data('key');
+                    if (that.tagModel) {
+                        this.value = that.tagModel.attributes[labelName];
+                    }
+                });
+                this.showAttributeBox();
+            }
+        },
+        getElement: function(labelName, typeName) {
+            var value = this.tagModel && this.tagModel.attributes ? (this.tagModel.attributes[labelName] || "") : "",
+                isTypeNumber = typeName === "int" || typeName === "byte" || typeName === "short" || typeName === "double" || typeName === "float",
+                inputClassName = "form-control attributeInputVal attrName";
+            if (isTypeNumber) {
+                inputClassName += ((typeName === "int" || typeName === "byte" || typeName === "short") ? " number-input-negative" : " number-input-exponential");
+            }
+            if (typeName === "boolean") {
+                return '<select class="form-control attributeInputVal attrName" data-key="' + labelName + '" data-type="' + typeName + '"> ' +
+                    '<option value="">--Select true or false--</option>' +
+                    '<option value="true">true</option>' +
+                    '<option value="false">false</option></select>';
+            } else {
+                return '<input type="text" value="' + value + '" class="' + inputClassName + '" data-key="' + labelName + '" data-type="' + typeName + '"/>';
+            }
+
+        },
+        saveTagData: function(options) {
+            var that = this;
+            this.entityModel = new VEntity();
+            var tagName = options.tagName,
+                tagAttributes = options.tagAttributes,
+                json = {
+                    "classification": {
+                        "typeName": tagName,
+                        "attributes": tagAttributes
+                    },
+                    "entityGuids": options.guid
+                };
+            if (this.tagModel) {
+                json = [{
+                    "typeName": tagName,
+                    "attributes": tagAttributes
+                }]
+            }
+            if (this.showLoader) {
+                this.showLoader();
+            }
+            this.entityModel.saveTraitsEntity(this.tagModel ? options.guid : null, {
+                skipDefaultError: true,
+                data: JSON.stringify(json),
+                type: this.tagModel ? 'PUT' : 'POST',
+                success: function(data) {
+                    var addupdatetext = that.tagModel ? 'updated successfully to ' : 'added to ';
+                    Utils.notifySuccess({
+                        content: "Tag " + tagName + " has been " + addupdatetext + (that.multiple ? "entities" : "entity")
+                    });
+                    if (options.modalCollection) {
+                        options.modalCollection.fetch({ reset: true });
+                    }
+                    if (that.callback) {
+                        that.callback();
+                    }
+                },
+                cust_error: function(model, response) {
+                    var message = "Tag " + tagName + " could not be added";
+                    if (response && response.responseJSON) {
+                        message = response.responseJSON.errorMessage;
+                    }
+                    Utils.notifyError({
+                        content: message
+                    });
+                    if (that.hideLoader) {
+                        that.hideLoader();
+                    }
+                }
+            });
+        },
+    });
+    return AddTagModel;
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
index 802397a..617df59 100644
--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
@@ -18,7 +18,7 @@
 
 define(['require',
     'backbone',
-    'hbs!tmpl/tag/createTagLayoutView_tmpl',
+    'hbs!tmpl/tag/CreateTagLayoutView_tmpl',
     'utils/Utils',
     'views/tag/TagAttributeItemView',
     'collection/VTagList',
@@ -74,11 +74,9 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'tagCollection', 'model', 'tag', 'termCollection', 'descriptionData'));
+                _.extend(this, _.pick(options, 'tagCollection', 'model', 'tag', 'descriptionData'));
                 if (this.model) {
                     this.description = this.model.get('description');
-                } else if (this.termCollection) {
-                    this.description = this.descriptionData;
                 } else {
                     this.create = true;
                 }
@@ -107,15 +105,12 @@ define(['require',
                 });
             },
             tagCollectionList: function() {
-                var str = '',
-                    that = this;
+                var that = this,
+                    str = '';
                 this.ui.parentTag.empty();
                 this.tagCollection.fullCollection.each(function(val) {
-                    var name = Utils.getName(val.toJSON()),
-                        checkTagOrTerm = Utils.checkTagOrTerm(name);
-                    if (checkTagOrTerm.tag) {
-                        str += '<option>' + (name) + '</option>';
-                    }
+                    var name = Utils.getName(val.toJSON());
+                    str += '<option>' + (name) + '</option>';
                 });
                 that.ui.parentTag.html(str);
                 // IE9 support
@@ -152,4 +147,4 @@ define(['require',
             }
         });
     return CreateTagLayoutView;
-});
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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 e07dd94..2ea8734 100644
--- a/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagDetailTableLayoutView.js
@@ -35,7 +35,7 @@ define(['require',
 
             /** Layout sub regions */
             regions: {
-                RTagTermTableLayoutView: "#r_tagTermTableLayoutView"
+                RTagTableLayoutView: "#r_tagTableLayoutView"
             },
 
             /** ui selector cache */
@@ -64,27 +64,14 @@ define(['require',
              * @constructs
              */
             initialize: function(options) {
-                _.extend(this, _.pick(options, 'entity', 'guid', 'term', 'entityName', 'fetchCollection', 'enumDefCollection', 'classificationDefCollection'));
+                _.extend(this, _.pick(options, 'entity', 'guid', 'entityName', 'fetchCollection', 'enumDefCollection', 'classificationDefCollection'));
                 this.collectionObject = this.entity;
-                this.tagTermCollection = new VTagList();
-                var tagorterm = _.toArray(this.collectionObject.classifications),
-                    tagTermList = [],
-                    that = this;
-                _.each(tagorterm, function(object) {
-                    var checkTagOrTerm = Utils.checkTagOrTerm(object);
-                    if (that.term) {
-                        if (checkTagOrTerm.term) {
-                            tagTermList.push(object);
-                        }
-                    } else {
-                        if (checkTagOrTerm.tag) {
-                            tagTermList.push(object);
-                        }
-                    }
-                });
-                this.tagTermCollection.set(tagTermList);
+                this.tagCollection = new VTagList();
+                var that = this,
+                    tags = _.toArray(this.collectionObject.classifications);
+                this.tagCollection.set(tags);
                 this.commonTableOptions = {
-                    collection: this.tagTermCollection,
+                    collection: this.tagCollection,
                     includeFilter: false,
                     includePagination: true,
                     includePageSize: false,
@@ -105,7 +92,7 @@ define(['require',
                 var that = this;
                 require(['utils/TableLayout'], function(TableLayout) {
                     var cols = new Backgrid.Columns(that.getSchemaTableColumns());
-                    that.RTagTermTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
+                    that.RTagTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
                         columns: cols
                     })));
                 });
@@ -114,9 +101,9 @@ define(['require',
                 var that = this;
                 var col = {};
 
-                return this.tagTermCollection.constructor.getTableCols({
-                        TagorTerm: {
-                            label: (this.term) ? "Terms" : "Tags",
+                return this.tagCollection.constructor.getTableCols({
+                        tag: {
+                            label: "Tags",
                             cell: "String",
                             editable: false,
                             sortable: false,
@@ -126,7 +113,7 @@ define(['require',
                                 }
                             })
                         },
-                        Attributes: {
+                        attributes: {
                             label: "Attributes",
                             cell: "html",
                             editable: false,
@@ -177,52 +164,40 @@ define(['require',
                             })
                         },
                     },
-                    this.tagTermCollection);
+                    this.tagCollection);
             },
             addModalView: function(e) {
                 var that = this;
-                require(['views/tag/addTagModalView'], function(AddTagModalView) {
+                require(['views/tag/AddTagModalView'], function(AddTagModalView) {
                     var view = new AddTagModalView({
                         guid: that.guid,
                         modalCollection: that.collection,
                         enumDefCollection: that.enumDefCollection
                     });
-                    // view.saveTagData = function() {
-                    //override saveTagData function
-                    // }
                 });
             },
             deleteTagDataModal: function(e) {
-                var tagName = $(e.currentTarget).data("name"),
-                    that = this;
-                if (that.term) {
-                    var modal = CommonViewFunction.deleteTagModel({
-                        msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.entityName + "?</b></div>",
-                        titleMessage: Messages.removeTerm,
-                        buttonText: "Remove",
-                    });
-                } else {
-                    var modal = CommonViewFunction.deleteTagModel({
+                var that = this,
+                    tagName = $(e.currentTarget).data("name"),
+                    modal = CommonViewFunction.deleteTagModel({
                         msg: "<div class='ellipsis'>Remove: " + "<b>" + _.escape(tagName) + "</b> assignment from" + " " + "<b>" + this.entityName + "?</b></div>",
                         titleMessage: Messages.removeTag,
                         buttonText: "Remove",
                     });
-                }
 
                 modal.on('ok', function() {
-                    that.deleteTagData(e);
+                    that.deleteTagData({
+                        'tagName': tagName,
+                        'guid': that.guid
+                    });
                 });
                 modal.on('closeModal', function() {
                     modal.trigger('cancel');
                 });
             },
-            deleteTagData: function(e) {
-                var that = this,
-                    tagName = $(e.currentTarget).data("name");
-                CommonViewFunction.deleteTag({
-                    'tagName': tagName,
-                    'guid': that.guid,
-                    'tagOrTerm': (that.term ? "term" : "tag"),
+            deleteTagData: function(options) {
+                var that = this;
+                CommonViewFunction.deleteTag(_.extend({}, options, {
                     showLoader: function() {
                         that.$('.fontLoader').show();
                         that.$('.tableOverlay').show();
@@ -238,14 +213,14 @@ define(['require',
                         }
 
                     }
-                });
+                }));
             },
             editTagDataModal: function(e) {
                 var that = this,
                     tagName = $(e.currentTarget).data('name'),
                     tagModel = _.findWhere(that.collectionObject.classifications, { typeName: tagName });
                 require([
-                    'views/tag/addTagModalView'
+                    'views/tag/AddTagModalView'
                 ], function(AddTagModalView) {
                     var view = new AddTagModalView({
                         'tagModel': tagModel,

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/dashboardv2/public/js/views/tag/TagLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index 37f9301..df896da 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -144,17 +144,14 @@ define(['require',
                     };
                     this.collection.fullCollection.sort().each(function(model) {
                         var name = Utils.getName(model.toJSON(), 'name');
-                        var checkTagOrTerm = Utils.checkTagOrTerm(name);
-                        if (checkTagOrTerm.tag) {
-                            if (searchString) {
-                                if (name.search(new RegExp(searchString, "i")) != -1) {
-                                    str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="' + name + '" >' + name + '</a></li>';
-                                } else {
-                                    return;
-                                }
+                        if (searchString) {
+                            if (name.search(new RegExp(searchString, "i")) != -1) {
+                                str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="' + name + '" >' + name + '</a></li>';
                             } else {
-                                str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="' + name + '">' + name + '</a></li>';
+                                return;
                             }
+                        } else {
+                            str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="' + name + '">' + name + '</a></li>';
                         }
                     });
                     this.ui.tagsParent.empty().html(str);

http://git-wip-us.apache.org/repos/asf/atlas/blob/37be53bb/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
deleted file mode 100644
index 7269ad9..0000000
--- a/dashboardv2/public/js/views/tag/addTagModalView.js
+++ /dev/null
@@ -1,383 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-define(['require',
-    'hbs!tmpl/tag/addTagModalView_tmpl',
-    'collection/VTagList',
-    'collection/VCommonList',
-    'modules/Modal',
-    'models/VEntity',
-    'utils/Utils',
-    'utils/UrlLinks',
-    'utils/Enums',
-    'utils/Messages',
-    'daterangepicker'
-], function(require, AddTagModalViewTmpl, VTagList, VCommonList, Modal, VEntity, Utils, UrlLinks, Enums, Messages) {
-    'use strict';
-
-    var AddTagModel = Marionette.LayoutView.extend({
-        template: AddTagModalViewTmpl,
-        templateHelpers: function() {
-            return {
-                tagModel: this.tagModel
-            };
-        },
-
-        regions: {},
-        ui: {
-            addTagOptions: "[data-id='addTagOptions']",
-            tagAttribute: "[data-id='tagAttribute']"
-        },
-        events: function() {
-            var events = {};
-            events["change " + this.ui.addTagOptions] = 'onChangeTagDefination';
-            return events;
-        },
-        /**
-         * intialize a new AddTagModel Layout
-         * @constructs
-         */
-        initialize: function(options) {
-            _.extend(this, _.pick(options, 'modalCollection', 'guid', 'callback', 'multiple', 'showLoader', 'hideLoader', 'tagList', 'tagModel', 'enumDefCollection'));
-            this.collection = new VTagList();
-            this.commonCollection = new VTagList();
-            var that = this,
-                modalObj = {
-                    title: 'Add Tag',
-                    content: this,
-                    okText: 'Add',
-                    cancelText: "Cancel",
-                    allowCancel: true,
-                };
-            if (this.tagModel) {
-                modalObj.title = 'Edit Tag';
-                modalObj.okText = 'Update';
-            }
-            this.modal = new Modal(modalObj).open();
-            this.modal.$el.find('button.ok').attr("disabled", true);
-            this.on('ok', function() {
-                var tagName = this.tagModel ? this.tagModel.typeName : this.ui.addTagOptions.val(),
-                    tagAttributes = {},
-                    tagAttributeNames = this.$(".attrName"),
-                    obj = {
-                        tagName: tagName,
-                        tagAttributes: tagAttributes,
-                        guid: [],
-                        skipEntity: [],
-                        deletedEntity: []
-                    };
-                tagAttributeNames.each(function(i, item) {
-                    var selection = $(item).data("key");
-                    var datatypeSelection = $(item).data("type");
-                    if (datatypeSelection === "date") {
-                        tagAttributes[selection] = Date.parse($(item).val()) || null;
-                    } else {
-                        tagAttributes[selection] = $(item).val() || null;
-                    }
-                });
-
-                if (that.multiple) {
-                    _.each(that.multiple, function(entity, i) {
-                        var name = Utils.getName(entity.model);
-                        if (Enums.entityStateReadOnly[entity.model.status]) {
-                            obj.deletedEntity.push(name);
-                        } else {
-                            if (_.indexOf((entity.model.classificationNames || _.pluck(entity.model.classifications, 'typeName')), tagName) === -1) {
-                                obj.guid.push(entity.model.guid)
-                            } else {
-                                obj.skipEntity.push(name);
-                            }
-                        }
-                    });
-                    if (obj.deletedEntity.length) {
-                        Utils.notifyError({
-                            html: true,
-                            content: "<b>" + obj.deletedEntity.join(', ') +
-                                "</b> " + (obj.deletedEntity.length === 1 ? "entity " : "entities ") +
-                                Messages.assignDeletedEntity
-                        });
-                    }
-                    if (obj.skipEntity.length) {
-                        var text = "<b>" + obj.skipEntity.length + " of " + that.multiple.length +
-                            "</b> entities selected have already been associated with <b>" + tagName +
-                            "</b> tag, Do you want to associate the tag with other entities ?",
-                            removeCancelButton = false;
-                        if ((obj.skipEntity.length + obj.deletedEntity.length) === that.multiple.length) {
-                            text = (obj.skipEntity.length > 1 ? "All selected" : "Selected") + " entities have already been associated with <b>" + tagName + "</b> tag";
-                            removeCancelButton = true;
-                        }
-                        var notifyObj = {
-                            text: text,
-                            modal: true,
-                            ok: function(argument) {
-                                if (obj.guid.length) {
-                                    that.saveTagData(obj);
-                                } else {
-                                    that.hideLoader();
-                                }
-                            },
-                            cancel: function(argument) {
-                                that.hideLoader();
-                                obj = {
-                                    tagName: tagName,
-                                    tagAttributes: tagAttributes,
-                                    guid: [],
-                                    skipEntity: [],
-                                    deletedEntity: []
-                                }
-                            }
-                        }
-                        if (removeCancelButton) {
-                            notifyObj['confirm'] = {
-                                confirm: true,
-                                buttons: [{
-                                        text: 'Ok',
-                                        addClass: 'btn-atlas btn-md',
-                                        click: function(notice) {
-                                            notice.remove();
-                                            obj = {
-                                                tagName: tagName,
-                                                tagAttributes: tagAttributes,
-                                                guid: [],
-                                                skipEntity: [],
-                                                deletedEntity: []
-                                            }
-                                        }
-                                    },
-                                    null
-                                ]
-                            }
-                        }
-                        Utils.notifyConfirm(notifyObj)
-                    } else {
-                        if (obj.guid.length) {
-                            that.saveTagData(obj);
-                        } else {
-                            that.hideLoader();
-                        }
-                    }
-                } else {
-                    obj.guid.push(that.guid);
-                    that.saveTagData(obj);
-                }
-            });
-            this.on('closeModal', function() {
-                this.modal.trigger('cancel');
-            });
-            this.bindEvents();
-        },
-
-        onRender: function() {
-            var that = this;
-            $.extend(this.collection.queryParams, { type: 'classification' });
-            this.hideAttributeBox();
-            this.collection.fetch({
-                reset: true,
-                complete: function() {
-                    if (that.tagModel) {
-                        that.fetchTagSubData(that.tagModel.typeName);
-                    }
-                    that.showAttributeBox();
-                },
-            });
-        },
-        bindEvents: function() {
-            var that = this;
-            this.enumArr = [];
-            this.listenTo(this.collection, 'reset', function() {
-                this.tagsCollection();
-            }, this);
-            this.listenTo(this.commonCollection, 'reset', function() {
-                this.subAttributeData();
-            }, this);
-        },
-        tagsCollection: function() {
-            var that = this;
-            this.collection.fullCollection.comparator = function(model) {
-                return Utils.getName(model.toJSON(), 'name').toLowerCase();
-            }
-
-            var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>';
-            this.collection.fullCollection.sort().each(function(obj, key) {
-                var name = Utils.getName(obj.toJSON(), 'name');
-                if (name === "TaxonomyTerm") {
-                    return;
-                }
-                // using obj.get('name') insted of name variable because if html is presen in name then escaped name will not found in tagList.
-                if (_.indexOf(that.tagList, obj.get('name')) === -1) {
-                    str += '<option ' + (that.tagModel && that.tagModel.typeName === name ? 'selected' : '') + '>' + name + '</option>';
-                }
-            });
-            this.ui.addTagOptions.html(str);
-            this.ui.addTagOptions.select2({
-                placeholder: "Select Tag",
-                allowClear: false
-            });
-        },
-        onChangeTagDefination: function() {
-            this.ui.addTagOptions.select2("open").select2("close");
-            this.ui.tagAttribute.empty();
-            var saveBtn = this.modal.$el.find('button.ok');
-            saveBtn.prop("disabled", false);
-            var tagname = this.ui.addTagOptions.val();
-            this.hideAttributeBox();
-            this.fetchTagSubData(tagname);
-        },
-        fetchTagSubData: function(tagname) {
-            var attributeDefs = Utils.getNestedSuperTypeObj({
-                data: this.collection.fullCollection.find({ name: tagname }).toJSON(),
-                collection: this.collection,
-                attrMerge: true
-            });
-            this.subAttributeData(attributeDefs);
-        },
-        showAttributeBox: function() {
-            var that = this;
-            this.$('.attrLoader').hide();
-            this.$('.form-group.hide').removeClass('hide');
-            if (this.ui.tagAttribute.children().length !== 0) {
-                this.ui.tagAttribute.parent().show();
-            }
-            this.ui.tagAttribute.find('input,select').on("keyup change", function(e) {
-                if (e.keyCode != 32) {
-                    that.modal.$el.find('button.ok').attr("disabled", false);
-                }
-            });
-        },
-        hideAttributeBox: function() {
-            this.ui.tagAttribute.children().empty();
-            this.ui.tagAttribute.parent().hide();
-            this.$('.attrLoader').show();
-        },
-        subAttributeData: function(attributeDefs) {
-            var that = this;
-            if (attributeDefs) {
-                _.each(attributeDefs, function(obj) {
-                    var name = Utils.getName(obj, 'name');
-                    var typeName = Utils.getName(obj, 'typeName');
-                    var typeNameValue = that.enumDefCollection.fullCollection.findWhere({ 'name': typeName });
-                    if (typeNameValue) {
-                        var str = '<option value=""' + (!that.tagModel ? 'selected' : '') + '>-- Select ' + typeName + " --</option>";
-                        var enumValue = typeNameValue.get('elementDefs');
-                        _.each(enumValue, function(key, value) {
-                            str += '<option ' + ((that.tagModel && key.value === that.tagModel.attributes[name]) ? 'selected' : '') + '>' + key.value + '</option>';
-                        })
-                        that.ui.tagAttribute.append('<div class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' +
-                            '<select class="form-control attributeInputVal attrName" data-key="' + name + '">' + str + '</select></div>');
-                    } else {
-                        var textElement = that.getElement(name, typeName);
-                        that.ui.tagAttribute.append('<div class="form-group"><label>' + name + '</label>' + ' (' + typeName + ')' + textElement + '</div>');
-                    }
-                });
-                that.$('input[data-type="date"]').each(function() {
-                    if (!$(this).data('daterangepicker')) {
-                        var dateObj = {
-                            "singleDatePicker": true,
-                            "showDropdowns": true,
-                            "timePicker": true,
-                            locale: {
-                                format: 'MM/DD/YYYY h:mm A'
-                            }
-                        };
-                        if (that.tagModel) {
-                            var formatDate = Number(this.value);
-                            dateObj["startDate"] = new Date(formatDate);
-                        }
-                        $(this).daterangepicker(dateObj);
-                    }
-                });
-                that.$('select[data-type="boolean"]').each(function() {
-                    var labelName = $(this).data('key');
-                    if (that.tagModel) {
-                        this.value = that.tagModel.attributes[labelName];
-                    }
-                });
-                this.showAttributeBox();
-            }
-        },
-        getElement: function(labelName, typeName) {
-            var value = this.tagModel && this.tagModel.attributes ? (this.tagModel.attributes[labelName] || "") : "",
-                isTypeNumber = typeName === "int" || typeName === "byte" || typeName === "short" || typeName === "double" || typeName === "float",
-                inputClassName = "form-control attributeInputVal attrName";
-            if (isTypeNumber) {
-                inputClassName += ((typeName === "int" || typeName === "byte" || typeName === "short") ? " number-input-negative" : " number-input-exponential");
-            }
-            if (typeName === "boolean") {
-                return '<select class="form-control attributeInputVal attrName" data-key="' + labelName + '" data-type="' + typeName + '"> ' +
-                    '<option value="">--Select true or false--</option>' +
-                    '<option value="true">true</option>' +
-                    '<option value="false">false</option></select>';
-            } else {
-                return '<input type="text" value="' + value + '" class="' + inputClassName + '" data-key="' + labelName + '" data-type="' + typeName + '"/>';
-            }
-
-        },
-        saveTagData: function(options) {
-            var that = this;
-            this.entityModel = new VEntity();
-            var tagName = options.tagName,
-                tagAttributes = options.tagAttributes,
-                json = {
-                    "classification": {
-                        "typeName": tagName,
-                        "attributes": tagAttributes
-                    },
-                    "entityGuids": options.guid
-                };
-            if (this.tagModel) {
-                json = [{
-                    "typeName": tagName,
-                    "attributes": tagAttributes
-                }]
-            }
-            if (this.showLoader) {
-                this.showLoader();
-            }
-            this.entityModel.saveTraitsEntity(this.tagModel ? options.guid : null, {
-                skipDefaultError: true,
-                data: JSON.stringify(json),
-                type: this.tagModel ? 'PUT' : 'POST',
-                success: function(data) {
-                    var addupdatetext = that.tagModel ? 'updated successfully to ' : 'added to ';
-                    Utils.notifySuccess({
-                        content: "Tag " + tagName + " has been " + addupdatetext + (that.multiple ? "entities" : "entity")
-                    });
-                    if (options.modalCollection) {
-                        options.modalCollection.fetch({ reset: true });
-                    }
-                    if (that.callback) {
-                        that.callback();
-                    }
-                },
-                cust_error: function(model, response) {
-                    var message = "Tag " + tagName + " could not be added";
-                    if (response && response.responseJSON) {
-                        message = response.responseJSON.errorMessage;
-                    }
-                    Utils.notifyError({
-                        content: message
-                    });
-                    if (that.hideLoader) {
-                        that.hideLoader();
-                    }
-                }
-            });
-        },
-    });
-    return AddTagModel;
-});
\ No newline at end of file